OptionalmodeOptionalreferenceReference space, in preference order. First that resolves wins.
Default ['local-floor', 'local', 'viewer'].
OptionaloptionalExtra WebXR features to request as optional.
OptionalrequiredOptionalcolorProjection-layer color format. Defaults to the binding's preferred format,
falling back to ctx.format. NB the engine's final blit pipeline is keyed
on ctx.format, so a mismatch forces a format-conversion blit; keep them
equal when possible (see TODO/webxr-integration.md).
Optionaltexture'texture' (side-by-side wide texture, the viewport model) or 'texture-array'. Default 'texture' to match the engine's viewport path.
OptionaldepthDepth-stencil format for the projection layer (e.g. 'depth24plus').
Default: none. Some runtimes (notably Android Chrome's WebGPU-WebXR AR
path) only present correctly when the projection layer is created WITH a
depth-stencil swapchain — without it the runtime falls onto a buggy
texture-array "Direct Copy" that invalidates the color texture. The engine
renders depth into its own pooled targets, so the layer's depth texture is
not used as an attachment; its presence alone selects the good present
path. Match the immersive-web webgpu/ar-barebones reference.
OptionalscaleProjection-layer resolution multiplier (default 1 = runtime-recommended). Values <1 shrink the per-eye texture for higher frame rate — the primary perf lever, since the full pipeline renders once per eye.
OptionaldepthDepth-sensing negotiation. Passed straight through to requestSession's
depthSensing init; also forces 'depth-sensing' into the required
features. Only meaningful for 'immersive-ar'.
OptionaldomElement to show as a 2D overlay in handheld (phone) AR. Adds the
'dom-overlay' optional feature and passes domOverlay: { root }.
Session mode. Default
'immersive-vr'.