THREE.JS / FOUNDATIONS 162

Session, space, layer.

Assemble a WebXR session plan, then inspect which parts exist only after an immersive session owns the renderer. Desktop lifecycle controls are deliberately synthetic and never masquerade as headset evidence.

Initializing Preparing renderer

Preparing WebXR manager, session buttons, reference-space plan, and layer probes...

mode
-
plan
-
manager
-
session
-
reference
-
base layer
-
binding
-
frames
-
Session plan builderdesktop draft
optional session featuresforwarded at request time
{}

The plan is a request configuration, not proof that a device supports every optional feature.

Real session entry pointsprobing
auto AR → VR
immersive AR
immersive VR

These are the official Three.js button helpers. They request real sessions when the browser and device allow it; the controls above only rebuild their session-init configuration.

Lifecycle sequencewaiting
No lifecycle events yet.
session sourcenone
session mode-
enabled features-
environment blend-

Actual sessionstart/sessionend events are distinct from the desktop simulation buttons.

Session-only surfaceprobing
WebXR API-
immersive AR-
immersive VR-
renderer.xr.enabled-
isPresenting-
getFrame()-
getCameraTexture()-
depth sensing-

Base layers, XR bindings, frames, camera textures, and native feature results are session-owned. Outside XR they should remain unavailable or null.

Use ?forceWebGL=1 for the WebGL2 companion. The official layers example uses immersive frame data and WebGL bindings; this route records that boundary without manufacturing a session.

THREE.JS FOUNDATIONS LAB