WebXR dynamic viewport scaling

Applications can optionally render to a subset of the WebXR viewport, using a scale factor that can be changed every animation frame. This is intended to be more efficient than resizing the full framebuffer which requires reallocation, and the UA can supply a recommended scale factor based on internal heuristics.


Applications should have a way to adjust the rendered resolution on the fly, for example to help reach target framerates when scene complexity changes. The current `framebufferScaleFactor` mechanism isn't intended to be used on a per-frame basis since it is likely to require reallocating render buffers. See https://github.com/immersive-web/webxr/blob/master/explainer.md#controlling-rendering-quality for background. The need for this feature was discussed in the Immersive-Web WG in https://github.com/immersive-web/webxr/issues/1091 and group discussions. The WG reached consensus on https://github.com/immersive-web/webxr/pull/1132 and the feature was added to the current WebXR Editor's Draft specification, i.e. https://immersive-web.github.io/webxr/#dom-xrview-requestviewportscale . Explainer: https://github.com/immersive-web/webxr/blob/master/explainer.md#dynamic-viewport-scaling


Editor's draft

Status in Chromium


In development (tracking bug)

Consensus & Standardization

After a feature ships in Chrome, the values listed here are not guaranteed to be up to date.

  • No signal
  • No signal
  • No signal
  • No signals



This feature is an incremental change to the pre-existing WebXR Device API Editor's Draft.

Search tags


Last updated on 2020-10-25