Optimize Rendering in the Browser

Oculus Browser has a number of extensions that improve the overall WebVR experience by enabling more performance, visual fidelity, and functionality.

High Refresh Rate

Oculus Browser on Oculus Go renders WebGL content in WebVR/WebXR at 60Hz by default while Oculus Quest does it at 72Hz by default. A 72Hz rendering mode is available for Go as well, that increases comfort in WebVR/WebXR (for content that can consistently render at 72fps) but with a performance and energy trade-off.

To use high refresh rate, use the following extended attributes in VRDisplay.requestPresent

dictionary VRAttributes {
  ...
  boolean highRefreshRate;
  ...
};

Setting highRefreshRate to true enables 72Hz mode. Setting highRefreshRate to false explicitly disables 72Hz mode on both Go and Quest. The highRefreshRate attribute has effect only for the very first requestPresent; for all nested calls to requestPresent this attribute will be ignored.

If the highRefreshRate attrbute is not specified then the default value will be used. The default value can be overriden via chrome://flags, search for Enable high refresh rate in WebVR flag.

High refresh rate is currently only supported by Oculus Go and Quest; on Gear VR it will be ignored.

Fixed Foveated Rendering

Fixed Foveated Rendering is a method for improving rendering performance on GPU-fill bound content. With FFR, the edges of the eye texture is rendered at a lower resolution than the center, resulting in fewer total pixels that need to be shaded.

FFR can deliver up to 25% improvement in GPU fill performance in fill-bound content.

To use FFR, use the following extended attributes in VRDisplay.requestPresent

dictionary VRAttributes {
  ...
  unsigned long foveationLevel;
  ...
};

foveationLevel specifies the level of fixed foveation. The value is in range [0..3], where 0 - none, 1 - low, 2 - medium, 3 - high.

foveationLevel can be dynamically changed by additional call to requestPresent with providing new setting for the foveation.

FFR is currently only supported by Oculus Go and Quest; on Gear VR it will be ignored.

The foveationLevel attribute overrides the corresponding setting on the chrome://flags settings page.

The default value for the foveationLevel is 1, i.e. “Min”; to override the default value go to chrome://flags and search for the WebVR foveation level flag.