XR: start here
First-run path and navigation for input, movement, extensions and platforms.
The XR section covers project preparation, input, tracked objects and device output. Start with a minimal working rig, then add required features. An SDK class does not establish that a particular headset or runtime supports the feature.
First OpenXR run
| Task | Guide | Result |
|---|---|---|
| Understand the concepts | XR terminology | Distinguish runtime, interface, pose, tracker and actions |
| Configure project and rig | OpenXR setup | Correct settings, origin, camera and two hands |
| Handle failure and focus | Startup controller | A complete C# script and explicit failure reasons |
| Connect game actions | Action map | Set, action and separate device bindings |
| Check readiness and continue | After the first run | Device checks and the next task to tackle |
Without a headset, you can check resource structure, map persistence and startup failure handling. Tracking, stereo output, actual input, runtime focus and movement comfort require device testing. A synthetic handler call does not replace a real XR-session event.
Movement and interaction
- Room scale: physical space and user movement.
- XR locomotion: game movement layered on tracking.
- XR Tools: separate tools whose package contents and compatibility must be checked.
Additional features
| Required feature | Section |
|---|---|
| Show physical surroundings | AR and passthrough |
| Track hands without controllers | Hand tracking |
| Obtain body data | Body tracking |
| Use device models | Render models |
| Work with spatial entities | Spatial entities |
| Configure composition layers | Composition layers |
Extensions require runtime support and project configuration; adding a resource to a level does not enable them automatically.
Graphics and settings
- OpenXR settings.
- XR full-screen effects.
- Variable Rate Shading: a shading quality/cost trade-off, not a mandatory startup step.
Target platforms and other interfaces
These are different integration paths. Check that the required module or extension exists in your build and supports the intended renderer and platform. A chapter does not mean a third-party package is already installed.