Docs / Domain mappings / vr

VR

A VR host is Rig when it emits entities with POD components keyed by schema ids it supports (honors). OpenXR, WebXR, and vendor runtimes are fulfillment. The session, the swapchains, and the compositor are not this catalog.

Portable meaning is rig.vr.* plus the spatial, camera, and input components those compose. Product runtime names stay out of schema ids.

Map

Runtime idea Rig
Reference space (local, local-floor, stage / bounded-floor, unbounded) rig.vr.space
Play-area polygon space.bounds (x, z on the floor)
Refresh, per-eye resolution, IPD rig.vr.headset
Environment blend / passthrough headset.blend (opaque / additive / alpha)
Eye pose rig.vr.eye + rig.spatial.transform, parented to the head tracker. Left is −X
Eye projection, including off-axis rig.spatial.camera. Four signed degree fields replace fovYDegrees + aspect
Head, gaze, hands, body landmarks, extra pucks rig.vr.tracker. Gaze index 0 is the left eye
Interaction profile rig.vr.controller profile
Grip and aim Child rig.vr.pose. Aim looks along local −Z
Trigger, stick, squeeze, face buttons rig.input.binding device vr into rig.input.axes and rig.input.buttons. Squeeze is leftGrip / rightGrip
Hand joints rig.vr.hand + rig.vr.joint
Haptic click rig.vr.haptic
Spatial anchor rig.vr.anchor
Depth on a view rig.sensor.depth on the eye. The buffer stays in the host
Headset IMU rig.sensor.imu on the head tracker. Orientation is that transform
Listener The head tracker transform. A spatial rig.audio.voice still pans from its own transform
Scene content Mesh, light, material, skeleton, as any other scene

Binding index 0 is the left controller and 1 is the right. Well-known code tokens for device vr: trigger, squeeze, thumbstick-x, thumbstick-y, thumbstick-click, trackpad-x, trackpad-y, trackpad-touch, menu, system, a, b, x, y.

Stay out

Stay out Why
Instance, session, swapchain, frame timing Compositor lifecycle is fulfillment
Predicted display time, pose velocity, "is tracked" Host cache. The pose at save is the transform
Foveation, hidden-area mesh, reprojection Present path
Haptic PCM and queues One pulse is rig.vr.haptic
Vendor body-joint sets beyond rig.vr.tracker roles and the hand joint list Those names are not shared yet. Extra joints travel as x.<vendor>.* until a second host needs them
Action-set objects The map is rig.input.binding
rig.openxr.* / rig.webxr.* / rig.steamvr.* Product runtime names stay out of schema ids

Example

examples/vr-room.json — a stage, a headset, two off-axis eyes, a left controller with grip and aim, a partial hand, a floor pin, and a trigger binding.