← Back to release summary

WebXR dynamic viewport scaling

Category
Miscellaneous
Type
Chromium catches up
Status
In developer trial (Behind a flag) (Chrome 88)
Intent stage
Dev trials

Summary

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.

Motivation

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

Standards & signals

Docs: https://github.com/immersive-web/webxr/blob/master/explainer.md#dynamic-viewport-scaling

Samples: https://vps3a.glitch.me/ https://modelviewer.dev/examples/webxr.html

Explainers: https://github.com/immersive-web/webxr/blob/master/explainer.md#dynamic-viewport-scaling

View on chromestatus.com