[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-cloudxr-js-sdk":3,"mdc--jnsscb-key":36,"related-repo-nvidia-cloudxr-js-sdk":4235,"related-org-nvidia-cloudxr-js-sdk":4245},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":27,"mdContent":35},"cloudxr-js-sdk","build WebXR streaming clients with CloudXR","Build WebXR streaming clients with NVIDIA CloudXR.js SDK. Use when developing WebXR apps, integrating CloudXR streaming, creating VR\u002FAR web clients, working with @nvidia\u002Fcloudxr, or building React Three Fiber XR applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19,22,25],{"name":13,"slug":14,"type":15},"VR","vr","tag",{"name":17,"slug":18,"type":15},"Immersive","immersive",{"name":20,"slug":21,"type":15},"AR","ar",{"name":23,"slug":24,"type":15},"WebXR","webxr",{"name":9,"slug":8,"type":15},17,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fcloudxr-js-samples","2026-07-14T05:36:21.571154",null,6,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"The samples for CloudXR.js, a JavaScript Client SDK that enables developers to build enterprise web applications for streaming high-performance VR and AR content from the CloudXR Runtime.","---\nname: cloudxr-js-sdk\ndescription: Build WebXR streaming clients with NVIDIA CloudXR.js SDK. Use when developing WebXR apps, integrating CloudXR streaming, creating VR\u002FAR web clients, working with @nvidia\u002Fcloudxr, or building React Three Fiber XR applications.\n---\n\n# NVIDIA CloudXR.js SDK\n\nCloudXR.js streams XR content from a GPU server to a web browser. The server renders; the client displays video and sends back head\u002Fhand tracking. Think \"Netflix for VR.\"\n\n## Quick Start\n\n### Install\n\nFrom NGC tarball:\n\n```bash\nnpm install nvidia-cloudxr-\u003Cversion>.tgz\n```\n\nPeer dependencies (app must provide): `gl-matrix`, `long`.\n\n### Minimal Integration (5 steps)\n\n```typescript\nimport { createSession, SessionState } from '@nvidia\u002Fcloudxr';\n\n\u002F\u002F 1. Get WebXR session + WebGL context\nconst xrSession = await navigator.xr.requestSession('immersive-vr', {\n  optionalFeatures: ['local-floor'],\n});\nconst gl = xrSession.renderState.baseLayer.context;\nconst referenceSpace = await xrSession.requestReferenceSpace('local-floor');\n\n\u002F\u002F 2. Create CloudXR session\nconst session = createSession(\n  {\n    serverAddress: '192.168.1.100',\n    serverPort: 49100,\n    useSecureConnection: false,\n    gl,\n    perEyeWidth: 2048,\n    perEyeHeight: 1792,\n    referenceSpace,\n  },\n  {\n    onStreamStarted: () => console.log('Streaming'),\n    onStreamStopped: err => err && console.error(err.message),\n  }\n);\n\n\u002F\u002F 3. Connect\nsession.connect();\n\n\u002F\u002F 4. Render loop\nfunction onFrame(time, frame) {\n  session.sendTrackingStateToServer(time, frame);\n  session.render(time, frame, xrSession.renderState.baseLayer);\n  xrSession.requestAnimationFrame(onFrame);\n}\nxrSession.requestAnimationFrame(onFrame);\n\n\u002F\u002F 5. Disconnect when done\nsession.disconnect();\n```\n\n## Core API\n\n| Export                               | Purpose                                                                                                                |\n| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |\n| `createSession(options, delegates?)` | Create a session. Returns `Session`.                                                                                   |\n| `Session`                            | Interface: `state`, `connect()`, `disconnect()`, `sendTrackingStateToServer()`, `render()`, `availableMessageChannels` |\n| `SessionOptions`                     | Config: server address\u002Fport, WebGL context, resolution, codec, bitrate, ICE servers, etc.                              |\n| `SessionDelegates`                   | Callbacks: `onStreamStarted`, `onStreamStopped`, `onWebGLStateChangeBegin\u002FEnd`, `onMetrics`, `onLog`                   |\n| `SessionState`                       | Enum: `Initialized → Connecting → Connected → Disconnecting → Disconnected → Error`                                    |\n| `MessageChannel`                     | Binary data channel for custom app messages (preferred over deprecated `sendServerMessage`)                            |\n\n## Required SessionOptions\n\n| Field                 | Type                     | Notes                                             |\n| --------------------- | ------------------------ | ------------------------------------------------- |\n| `serverAddress`       | `string`                 | IP or hostname of CloudXR Runtime                 |\n| `serverPort`          | `number`                 | Default `49100`                                   |\n| `useSecureConnection` | `boolean`                | `true` for WSS (production), `false` for WS (dev) |\n| `gl`                  | `WebGL2RenderingContext` | From canvas or XR layer                           |\n| `perEyeWidth`         | `number`                 | Must be multiple of 16, ≥ 256                     |\n| `perEyeHeight`        | `number`                 | Must be multiple of 64, ≥ 256                     |\n| `referenceSpace`      | `XRReferenceSpace`       | From WebXR session                                |\n\n## Key Optional SessionOptions\n\n| Field                        | Default        | Notes                                        |\n| ---------------------------- | -------------- | -------------------------------------------- |\n| `codec`                      | `'h264'`       | Also `'av1'`                                 |\n| `deviceFrameRate`            | device default | e.g. `72`, `90`                              |\n| `maxStreamingBitrateKbps`    | SDK default    | e.g. `150000`                                |\n| `enablePoseSmoothing`        | —              | Smooth head tracking                         |\n| `posePredictionFactor`       | —              | Prediction multiplier                        |\n| `mediaAddress` \u002F `mediaPort` | —              | NAT traversal                                |\n| `signalingResourcePath`      | —              | Proxy routing path                           |\n| `signalingQueryParameters`   | —              | Auth tokens, etc.                            |\n| `iceServers`                 | —              | STUN\u002FTURN for enterprise NAT                 |\n| `glBinding`                  | —              | `XRWebGLBinding` for R3F                     |\n| `telemetry`                  | —              | `{ enabled, appInfo: { version, product } }` |\n\n## Resolution Rules\n\n- `perEyeWidth` must be a multiple of **16** and ≥ **256**\n- `perEyeHeight` must be a multiple of **64** and ≥ **256**\n- Stream resolution: width = `perEyeWidth * 2`, height = `perEyeHeight * 9 \u002F 4`\n- Use `validatePerEyeResolution()` and `getResolutionValidationError()` before calling `createSession`\n\n## Two Integration Patterns\n\n### Pattern 1: Vanilla WebGL + WebXR\n\nSee the [Simple WebGL sample](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fcloudxr-js-samples\u002Ftree\u002Fmain\u002Fsimple).\n\nKey flow: check capabilities → create WebGL context → request XR session → `createSession()` → XR RAF loop with `sendTrackingStateToServer()` + `render()`.\n\nWebGL state: CloudXR modifies GL state during render. If you share the context, save\u002Frestore via `onWebGLStateChangeBegin` \u002F `onWebGLStateChangeEnd` delegates.\n\n### Pattern 2: React Three Fiber (R3F)\n\nSee the [React sample](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fcloudxr-js-samples\u002Ftree\u002Fmain\u002Freact).\n\n```tsx\nimport * as CloudXR from '@nvidia\u002Fcloudxr';\nimport { useThree, useFrame } from '@react-three\u002Ffiber';\nimport { useRef } from 'react';\nimport { bindGL } from '@helpers\u002FWebGLStateBinding';\n\nfunction CloudXRComponent({ config }) {\n  const gl = useThree().gl.getContext() as WebGL2RenderingContext;\n  const trackedGL = bindGL(gl);\n  const sessionRef = useRef\u003CCloudXR.Session | null>(null);\n\n  \u002F\u002F On XR session start → createSession + connect\n  \u002F\u002F On XR session end → disconnect\n\n  useFrame(state => {\n    const xrFrame = state.gl.xr.getFrame();\n    if (sessionRef.current?.state === CloudXR.SessionState.Connected && xrFrame) {\n      const timestamp = state.clock.elapsedTime * 1000;\n      const layer = state.gl.xr.getBaseLayer() as XRWebGLLayer;\n      sessionRef.current.sendTrackingStateToServer(timestamp, xrFrame);\n      sessionRef.current.render(timestamp, xrFrame, layer);\n    }\n  }, -1000); \u002F\u002F negative priority = run before Three.js render\n}\n```\n\nCritical R3F detail: set `threeRenderer.autoClear = false` so Three.js doesn't clear the framebuffer after CloudXR renders. Use `bindGL()` from helpers to save\u002Frestore WebGL state around CloudXR calls.\n\n## Error Handling\n\n```typescript\n\u002F\u002F connect() throws synchronously if it can't initiate\ntry {\n  session.connect();\n} catch (e) {\n  \u002F* handle *\u002F\n}\n\n\u002F\u002F sendTrackingStateToServer returns false if not connected\nif (!session.sendTrackingStateToServer(time, frame)) {\n  \u002F* not ready *\u002F\n}\n\n\u002F\u002F Streaming errors arrive via delegate\nonStreamStopped: (error?: StreamingError) => {\n  if (error) {\n    console.error(error.message);\n    if (error.code) console.error(`0x${error.code.toString(16).toUpperCase()}`);\n  }\n};\n```\n\n## Message Channels (Custom App Data)\n\n```typescript\nconst channels = session.availableMessageChannels;\nfor (const ch of channels) {\n  if (ch.status === MessageChannelStatus.Ready) {\n    ch.sendServerMessage(new Uint8Array([...]));\n    const msg = await ch.receiveMessage();\n  }\n}\n```\n\n## Proxy \u002F HTTPS Setup\n\nFor headsets requiring HTTPS (Pico 4 Ultra) or production:\n\n```typescript\ncreateSession({\n  serverAddress: 'proxy.example.com',\n  serverPort: 443,\n  useSecureConnection: true,\n  signalingResourcePath: '\u002F192.168.1.100', \u002F\u002F target server behind proxy\n  \u002F\u002F ...\n});\n```\n\nSee the [WSS proxy sample](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fcloudxr-js-samples\u002Ftree\u002Fmain\u002Fproxy) for a Docker-based HAProxy setup.\n\n## Desktop Development with IWER\n\nOn desktop Chrome (no headset), both samples auto-load **IWER** (Immersive Web Emulation Runtime) via `loadIWERIfNeeded()`. IWER emulates a Meta Quest 3 so `requestSession('immersive-vr')` succeeds and `sendTrackingStateToServer()` sends valid poses. The device is exposed as `window.xrDevice` for programmatic access.\n\nIWER's `XRDevice` API supports **programmatic control** — set `window.xrDevice.controlMode = 'programmatic'` to take over from DevUI, then set headset\u002Fcontroller position, orientation, button values, and thumbstick axes from code. Call `notifyStateChange()` after changes to keep DevUI in sync. See [agent-api-reference.md](agent-api-reference.md) for the full IWER XRDevice API and [AGENTS.md](AGENTS.md) for operational rules on IWER automation.\n\n## Samples Overview\n\n| Sample       | Stack                         | Location                                                                 |\n| ------------ | ----------------------------- | ------------------------------------------------------------------------ |\n| Simple WebGL | Vanilla WebGL2 + WebXR        | [simple\u002F](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fcloudxr-js-samples\u002Ftree\u002Fmain\u002Fsimple) |\n| React        | R3F + @react-three\u002Fxr + uikit | [react\u002F](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fcloudxr-js-samples\u002Ftree\u002Fmain\u002Freact)   |\n| WSS Proxy    | Docker + HAProxy              | [proxy\u002F](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fcloudxr-js-samples\u002Ftree\u002Fmain\u002Fproxy)   |\n\nRun any sample: `npm install && npm run dev` in its directory. For Isaac Teleop, see [github.com\u002FNVIDIA\u002FIsaacTeleop](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FIsaacTeleop).\n\n## Common Pitfalls\n\n1. **Resolution validation fails** — `perEyeWidth` must be multiple of 16, `perEyeHeight` multiple of 64, both ≥ 256\n2. **Black screen in R3F** — forgot `autoClear = false` or missing WebGL state save\u002Frestore\n3. **Connection fails on headset** — check HTTPS requirement (Pico needs WSS), firewall ports: 49100 (WS signaling), 47998 (WebRTC media), 48322 (WSS signaling TLS proxy), or 443 with external proxy\n4. **Choppy tracking** — enable `enablePoseSmoothing`, tune `posePredictionFactor`\n5. **Shared WebGL context corruption** — always use `onWebGLStateChangeBegin\u002FEnd` delegates\n\n## Additional Resources\n\n- [agent-api-reference.md](agent-api-reference.md) — detailed types, enums, all SessionOptions fields\n- [CloudXR.js API Reference](https:\u002F\u002Fdocs.nvidia.com\u002Fcloudxr-sdk\u002Fapis\u002Fcloudxr-js\u002F) — full generated API docs\n- [CloudXR.js User Guide](https:\u002F\u002Fdocs.nvidia.com\u002Fcloudxr-sdk\u002Flatest\u002Fusr_guide\u002Fcloudxr_js\u002Findex.html) — getting started, session API, client setup, performance, troubleshooting\n- [CloudXR SDK Documentation](https:\u002F\u002Fdocs.nvidia.com\u002Fcloudxr-sdk\u002Flatest\u002Findex.html) — runtime, networking, deployment\n- [CloudXR.js Samples on GitHub](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fcloudxr-js-samples) — all sample source code\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,50,56,63,70,75,137,158,164,1180,1186,1410,1416,1643,1649,1955,1961,2054,2060,2066,2081,2107,2127,2133,2145,2989,3010,3016,3433,3439,3670,3676,3681,3831,3844,3850,3893,3943,3949,4042,4063,4069,4164,4170,4229],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"nvidia-cloudxrjs-sdk",[47],{"type":48,"value":49},"text","NVIDIA CloudXR.js SDK",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54],{"type":48,"value":55},"CloudXR.js streams XR content from a GPU server to a web browser. The server renders; the client displays video and sends back head\u002Fhand tracking. Think \"Netflix for VR.\"",{"type":42,"tag":57,"props":58,"children":60},"h2",{"id":59},"quick-start",[61],{"type":48,"value":62},"Quick Start",{"type":42,"tag":64,"props":65,"children":67},"h3",{"id":66},"install",[68],{"type":48,"value":69},"Install",{"type":42,"tag":51,"props":71,"children":72},{},[73],{"type":48,"value":74},"From NGC tarball:",{"type":42,"tag":76,"props":77,"children":82},"pre",{"className":78,"code":79,"language":80,"meta":81,"style":81},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install nvidia-cloudxr-\u003Cversion>.tgz\n","bash","",[83],{"type":42,"tag":84,"props":85,"children":86},"code",{"__ignoreMap":81},[87],{"type":42,"tag":88,"props":89,"children":92},"span",{"class":90,"line":91},"line",1,[93,99,105,110,116,121,127,132],{"type":42,"tag":88,"props":94,"children":96},{"style":95},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[97],{"type":48,"value":98},"npm",{"type":42,"tag":88,"props":100,"children":102},{"style":101},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[103],{"type":48,"value":104}," install",{"type":42,"tag":88,"props":106,"children":107},{"style":101},[108],{"type":48,"value":109}," nvidia-cloudxr-",{"type":42,"tag":88,"props":111,"children":113},{"style":112},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[114],{"type":48,"value":115},"\u003C",{"type":42,"tag":88,"props":117,"children":118},{"style":101},[119],{"type":48,"value":120},"versio",{"type":42,"tag":88,"props":122,"children":124},{"style":123},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[125],{"type":48,"value":126},"n",{"type":42,"tag":88,"props":128,"children":129},{"style":112},[130],{"type":48,"value":131},">",{"type":42,"tag":88,"props":133,"children":134},{"style":101},[135],{"type":48,"value":136},".tgz\n",{"type":42,"tag":51,"props":138,"children":139},{},[140,142,148,150,156],{"type":48,"value":141},"Peer dependencies (app must provide): ",{"type":42,"tag":84,"props":143,"children":145},{"className":144},[],[146],{"type":48,"value":147},"gl-matrix",{"type":48,"value":149},", ",{"type":42,"tag":84,"props":151,"children":153},{"className":152},[],[154],{"type":48,"value":155},"long",{"type":48,"value":157},".",{"type":42,"tag":64,"props":159,"children":161},{"id":160},"minimal-integration-5-steps",[162],{"type":48,"value":163},"Minimal Integration (5 steps)",{"type":42,"tag":76,"props":165,"children":169},{"className":166,"code":167,"language":168,"meta":81,"style":81},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createSession, SessionState } from '@nvidia\u002Fcloudxr';\n\n\u002F\u002F 1. Get WebXR session + WebGL context\nconst xrSession = await navigator.xr.requestSession('immersive-vr', {\n  optionalFeatures: ['local-floor'],\n});\nconst gl = xrSession.renderState.baseLayer.context;\nconst referenceSpace = await xrSession.requestReferenceSpace('local-floor');\n\n\u002F\u002F 2. Create CloudXR session\nconst session = createSession(\n  {\n    serverAddress: '192.168.1.100',\n    serverPort: 49100,\n    useSecureConnection: false,\n    gl,\n    perEyeWidth: 2048,\n    perEyeHeight: 1792,\n    referenceSpace,\n  },\n  {\n    onStreamStarted: () => console.log('Streaming'),\n    onStreamStopped: err => err && console.error(err.message),\n  }\n);\n\n\u002F\u002F 3. Connect\nsession.connect();\n\n\u002F\u002F 4. Render loop\nfunction onFrame(time, frame) {\n  session.sendTrackingStateToServer(time, frame);\n  session.render(time, frame, xrSession.renderState.baseLayer);\n  xrSession.requestAnimationFrame(onFrame);\n}\nxrSession.requestAnimationFrame(onFrame);\n\n\u002F\u002F 5. Disconnect when done\nsession.disconnect();\n","typescript",[170],{"type":42,"tag":84,"props":171,"children":172},{"__ignoreMap":81},[173,232,242,252,328,371,388,441,499,507,516,542,551,581,604,627,640,661,683,696,705,713,775,839,848,860,868,877,904,912,921,961,1003,1068,1103,1112,1138,1146,1155],{"type":42,"tag":88,"props":174,"children":175},{"class":90,"line":91},[176,182,187,192,197,202,207,212,217,222,227],{"type":42,"tag":88,"props":177,"children":179},{"style":178},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[180],{"type":48,"value":181},"import",{"type":42,"tag":88,"props":183,"children":184},{"style":112},[185],{"type":48,"value":186}," {",{"type":42,"tag":88,"props":188,"children":189},{"style":123},[190],{"type":48,"value":191}," createSession",{"type":42,"tag":88,"props":193,"children":194},{"style":112},[195],{"type":48,"value":196},",",{"type":42,"tag":88,"props":198,"children":199},{"style":123},[200],{"type":48,"value":201}," SessionState",{"type":42,"tag":88,"props":203,"children":204},{"style":112},[205],{"type":48,"value":206}," }",{"type":42,"tag":88,"props":208,"children":209},{"style":178},[210],{"type":48,"value":211}," from",{"type":42,"tag":88,"props":213,"children":214},{"style":112},[215],{"type":48,"value":216}," '",{"type":42,"tag":88,"props":218,"children":219},{"style":101},[220],{"type":48,"value":221},"@nvidia\u002Fcloudxr",{"type":42,"tag":88,"props":223,"children":224},{"style":112},[225],{"type":48,"value":226},"'",{"type":42,"tag":88,"props":228,"children":229},{"style":112},[230],{"type":48,"value":231},";\n",{"type":42,"tag":88,"props":233,"children":235},{"class":90,"line":234},2,[236],{"type":42,"tag":88,"props":237,"children":239},{"emptyLinePlaceholder":238},true,[240],{"type":48,"value":241},"\n",{"type":42,"tag":88,"props":243,"children":245},{"class":90,"line":244},3,[246],{"type":42,"tag":88,"props":247,"children":249},{"style":248},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[250],{"type":48,"value":251},"\u002F\u002F 1. Get WebXR session + WebGL context\n",{"type":42,"tag":88,"props":253,"children":255},{"class":90,"line":254},4,[256,262,267,272,277,282,286,291,295,301,306,310,315,319,323],{"type":42,"tag":88,"props":257,"children":259},{"style":258},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[260],{"type":48,"value":261},"const",{"type":42,"tag":88,"props":263,"children":264},{"style":123},[265],{"type":48,"value":266}," xrSession ",{"type":42,"tag":88,"props":268,"children":269},{"style":112},[270],{"type":48,"value":271},"=",{"type":42,"tag":88,"props":273,"children":274},{"style":178},[275],{"type":48,"value":276}," await",{"type":42,"tag":88,"props":278,"children":279},{"style":123},[280],{"type":48,"value":281}," navigator",{"type":42,"tag":88,"props":283,"children":284},{"style":112},[285],{"type":48,"value":157},{"type":42,"tag":88,"props":287,"children":288},{"style":123},[289],{"type":48,"value":290},"xr",{"type":42,"tag":88,"props":292,"children":293},{"style":112},[294],{"type":48,"value":157},{"type":42,"tag":88,"props":296,"children":298},{"style":297},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[299],{"type":48,"value":300},"requestSession",{"type":42,"tag":88,"props":302,"children":303},{"style":123},[304],{"type":48,"value":305},"(",{"type":42,"tag":88,"props":307,"children":308},{"style":112},[309],{"type":48,"value":226},{"type":42,"tag":88,"props":311,"children":312},{"style":101},[313],{"type":48,"value":314},"immersive-vr",{"type":42,"tag":88,"props":316,"children":317},{"style":112},[318],{"type":48,"value":226},{"type":42,"tag":88,"props":320,"children":321},{"style":112},[322],{"type":48,"value":196},{"type":42,"tag":88,"props":324,"children":325},{"style":112},[326],{"type":48,"value":327}," {\n",{"type":42,"tag":88,"props":329,"children":331},{"class":90,"line":330},5,[332,338,343,348,352,357,361,366],{"type":42,"tag":88,"props":333,"children":335},{"style":334},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[336],{"type":48,"value":337},"  optionalFeatures",{"type":42,"tag":88,"props":339,"children":340},{"style":112},[341],{"type":48,"value":342},":",{"type":42,"tag":88,"props":344,"children":345},{"style":123},[346],{"type":48,"value":347}," [",{"type":42,"tag":88,"props":349,"children":350},{"style":112},[351],{"type":48,"value":226},{"type":42,"tag":88,"props":353,"children":354},{"style":101},[355],{"type":48,"value":356},"local-floor",{"type":42,"tag":88,"props":358,"children":359},{"style":112},[360],{"type":48,"value":226},{"type":42,"tag":88,"props":362,"children":363},{"style":123},[364],{"type":48,"value":365},"]",{"type":42,"tag":88,"props":367,"children":368},{"style":112},[369],{"type":48,"value":370},",\n",{"type":42,"tag":88,"props":372,"children":373},{"class":90,"line":30},[374,379,384],{"type":42,"tag":88,"props":375,"children":376},{"style":112},[377],{"type":48,"value":378},"}",{"type":42,"tag":88,"props":380,"children":381},{"style":123},[382],{"type":48,"value":383},")",{"type":42,"tag":88,"props":385,"children":386},{"style":112},[387],{"type":48,"value":231},{"type":42,"tag":88,"props":389,"children":391},{"class":90,"line":390},7,[392,396,401,405,410,414,419,423,428,432,437],{"type":42,"tag":88,"props":393,"children":394},{"style":258},[395],{"type":48,"value":261},{"type":42,"tag":88,"props":397,"children":398},{"style":123},[399],{"type":48,"value":400}," gl ",{"type":42,"tag":88,"props":402,"children":403},{"style":112},[404],{"type":48,"value":271},{"type":42,"tag":88,"props":406,"children":407},{"style":123},[408],{"type":48,"value":409}," xrSession",{"type":42,"tag":88,"props":411,"children":412},{"style":112},[413],{"type":48,"value":157},{"type":42,"tag":88,"props":415,"children":416},{"style":123},[417],{"type":48,"value":418},"renderState",{"type":42,"tag":88,"props":420,"children":421},{"style":112},[422],{"type":48,"value":157},{"type":42,"tag":88,"props":424,"children":425},{"style":123},[426],{"type":48,"value":427},"baseLayer",{"type":42,"tag":88,"props":429,"children":430},{"style":112},[431],{"type":48,"value":157},{"type":42,"tag":88,"props":433,"children":434},{"style":123},[435],{"type":48,"value":436},"context",{"type":42,"tag":88,"props":438,"children":439},{"style":112},[440],{"type":48,"value":231},{"type":42,"tag":88,"props":442,"children":444},{"class":90,"line":443},8,[445,449,454,458,462,466,470,475,479,483,487,491,495],{"type":42,"tag":88,"props":446,"children":447},{"style":258},[448],{"type":48,"value":261},{"type":42,"tag":88,"props":450,"children":451},{"style":123},[452],{"type":48,"value":453}," referenceSpace ",{"type":42,"tag":88,"props":455,"children":456},{"style":112},[457],{"type":48,"value":271},{"type":42,"tag":88,"props":459,"children":460},{"style":178},[461],{"type":48,"value":276},{"type":42,"tag":88,"props":463,"children":464},{"style":123},[465],{"type":48,"value":409},{"type":42,"tag":88,"props":467,"children":468},{"style":112},[469],{"type":48,"value":157},{"type":42,"tag":88,"props":471,"children":472},{"style":297},[473],{"type":48,"value":474},"requestReferenceSpace",{"type":42,"tag":88,"props":476,"children":477},{"style":123},[478],{"type":48,"value":305},{"type":42,"tag":88,"props":480,"children":481},{"style":112},[482],{"type":48,"value":226},{"type":42,"tag":88,"props":484,"children":485},{"style":101},[486],{"type":48,"value":356},{"type":42,"tag":88,"props":488,"children":489},{"style":112},[490],{"type":48,"value":226},{"type":42,"tag":88,"props":492,"children":493},{"style":123},[494],{"type":48,"value":383},{"type":42,"tag":88,"props":496,"children":497},{"style":112},[498],{"type":48,"value":231},{"type":42,"tag":88,"props":500,"children":502},{"class":90,"line":501},9,[503],{"type":42,"tag":88,"props":504,"children":505},{"emptyLinePlaceholder":238},[506],{"type":48,"value":241},{"type":42,"tag":88,"props":508,"children":510},{"class":90,"line":509},10,[511],{"type":42,"tag":88,"props":512,"children":513},{"style":248},[514],{"type":48,"value":515},"\u002F\u002F 2. Create CloudXR session\n",{"type":42,"tag":88,"props":517,"children":519},{"class":90,"line":518},11,[520,524,529,533,537],{"type":42,"tag":88,"props":521,"children":522},{"style":258},[523],{"type":48,"value":261},{"type":42,"tag":88,"props":525,"children":526},{"style":123},[527],{"type":48,"value":528}," session ",{"type":42,"tag":88,"props":530,"children":531},{"style":112},[532],{"type":48,"value":271},{"type":42,"tag":88,"props":534,"children":535},{"style":297},[536],{"type":48,"value":191},{"type":42,"tag":88,"props":538,"children":539},{"style":123},[540],{"type":48,"value":541},"(\n",{"type":42,"tag":88,"props":543,"children":545},{"class":90,"line":544},12,[546],{"type":42,"tag":88,"props":547,"children":548},{"style":112},[549],{"type":48,"value":550},"  {\n",{"type":42,"tag":88,"props":552,"children":554},{"class":90,"line":553},13,[555,560,564,568,573,577],{"type":42,"tag":88,"props":556,"children":557},{"style":334},[558],{"type":48,"value":559},"    serverAddress",{"type":42,"tag":88,"props":561,"children":562},{"style":112},[563],{"type":48,"value":342},{"type":42,"tag":88,"props":565,"children":566},{"style":112},[567],{"type":48,"value":216},{"type":42,"tag":88,"props":569,"children":570},{"style":101},[571],{"type":48,"value":572},"192.168.1.100",{"type":42,"tag":88,"props":574,"children":575},{"style":112},[576],{"type":48,"value":226},{"type":42,"tag":88,"props":578,"children":579},{"style":112},[580],{"type":48,"value":370},{"type":42,"tag":88,"props":582,"children":584},{"class":90,"line":583},14,[585,590,594,600],{"type":42,"tag":88,"props":586,"children":587},{"style":334},[588],{"type":48,"value":589},"    serverPort",{"type":42,"tag":88,"props":591,"children":592},{"style":112},[593],{"type":48,"value":342},{"type":42,"tag":88,"props":595,"children":597},{"style":596},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[598],{"type":48,"value":599}," 49100",{"type":42,"tag":88,"props":601,"children":602},{"style":112},[603],{"type":48,"value":370},{"type":42,"tag":88,"props":605,"children":607},{"class":90,"line":606},15,[608,613,617,623],{"type":42,"tag":88,"props":609,"children":610},{"style":334},[611],{"type":48,"value":612},"    useSecureConnection",{"type":42,"tag":88,"props":614,"children":615},{"style":112},[616],{"type":48,"value":342},{"type":42,"tag":88,"props":618,"children":620},{"style":619},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[621],{"type":48,"value":622}," false",{"type":42,"tag":88,"props":624,"children":625},{"style":112},[626],{"type":48,"value":370},{"type":42,"tag":88,"props":628,"children":630},{"class":90,"line":629},16,[631,636],{"type":42,"tag":88,"props":632,"children":633},{"style":123},[634],{"type":48,"value":635},"    gl",{"type":42,"tag":88,"props":637,"children":638},{"style":112},[639],{"type":48,"value":370},{"type":42,"tag":88,"props":641,"children":642},{"class":90,"line":26},[643,648,652,657],{"type":42,"tag":88,"props":644,"children":645},{"style":334},[646],{"type":48,"value":647},"    perEyeWidth",{"type":42,"tag":88,"props":649,"children":650},{"style":112},[651],{"type":48,"value":342},{"type":42,"tag":88,"props":653,"children":654},{"style":596},[655],{"type":48,"value":656}," 2048",{"type":42,"tag":88,"props":658,"children":659},{"style":112},[660],{"type":48,"value":370},{"type":42,"tag":88,"props":662,"children":664},{"class":90,"line":663},18,[665,670,674,679],{"type":42,"tag":88,"props":666,"children":667},{"style":334},[668],{"type":48,"value":669},"    perEyeHeight",{"type":42,"tag":88,"props":671,"children":672},{"style":112},[673],{"type":48,"value":342},{"type":42,"tag":88,"props":675,"children":676},{"style":596},[677],{"type":48,"value":678}," 1792",{"type":42,"tag":88,"props":680,"children":681},{"style":112},[682],{"type":48,"value":370},{"type":42,"tag":88,"props":684,"children":686},{"class":90,"line":685},19,[687,692],{"type":42,"tag":88,"props":688,"children":689},{"style":123},[690],{"type":48,"value":691},"    referenceSpace",{"type":42,"tag":88,"props":693,"children":694},{"style":112},[695],{"type":48,"value":370},{"type":42,"tag":88,"props":697,"children":699},{"class":90,"line":698},20,[700],{"type":42,"tag":88,"props":701,"children":702},{"style":112},[703],{"type":48,"value":704},"  },\n",{"type":42,"tag":88,"props":706,"children":708},{"class":90,"line":707},21,[709],{"type":42,"tag":88,"props":710,"children":711},{"style":112},[712],{"type":48,"value":550},{"type":42,"tag":88,"props":714,"children":716},{"class":90,"line":715},22,[717,722,726,731,736,741,745,750,754,758,763,767,771],{"type":42,"tag":88,"props":718,"children":719},{"style":297},[720],{"type":48,"value":721},"    onStreamStarted",{"type":42,"tag":88,"props":723,"children":724},{"style":112},[725],{"type":48,"value":342},{"type":42,"tag":88,"props":727,"children":728},{"style":112},[729],{"type":48,"value":730}," ()",{"type":42,"tag":88,"props":732,"children":733},{"style":258},[734],{"type":48,"value":735}," =>",{"type":42,"tag":88,"props":737,"children":738},{"style":123},[739],{"type":48,"value":740}," console",{"type":42,"tag":88,"props":742,"children":743},{"style":112},[744],{"type":48,"value":157},{"type":42,"tag":88,"props":746,"children":747},{"style":297},[748],{"type":48,"value":749},"log",{"type":42,"tag":88,"props":751,"children":752},{"style":123},[753],{"type":48,"value":305},{"type":42,"tag":88,"props":755,"children":756},{"style":112},[757],{"type":48,"value":226},{"type":42,"tag":88,"props":759,"children":760},{"style":101},[761],{"type":48,"value":762},"Streaming",{"type":42,"tag":88,"props":764,"children":765},{"style":112},[766],{"type":48,"value":226},{"type":42,"tag":88,"props":768,"children":769},{"style":123},[770],{"type":48,"value":383},{"type":42,"tag":88,"props":772,"children":773},{"style":112},[774],{"type":48,"value":370},{"type":42,"tag":88,"props":776,"children":778},{"class":90,"line":777},23,[779,784,788,794,798,803,808,812,816,821,826,830,835],{"type":42,"tag":88,"props":780,"children":781},{"style":297},[782],{"type":48,"value":783},"    onStreamStopped",{"type":42,"tag":88,"props":785,"children":786},{"style":112},[787],{"type":48,"value":342},{"type":42,"tag":88,"props":789,"children":791},{"style":790},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[792],{"type":48,"value":793}," err",{"type":42,"tag":88,"props":795,"children":796},{"style":258},[797],{"type":48,"value":735},{"type":42,"tag":88,"props":799,"children":800},{"style":123},[801],{"type":48,"value":802}," err ",{"type":42,"tag":88,"props":804,"children":805},{"style":112},[806],{"type":48,"value":807},"&&",{"type":42,"tag":88,"props":809,"children":810},{"style":123},[811],{"type":48,"value":740},{"type":42,"tag":88,"props":813,"children":814},{"style":112},[815],{"type":48,"value":157},{"type":42,"tag":88,"props":817,"children":818},{"style":297},[819],{"type":48,"value":820},"error",{"type":42,"tag":88,"props":822,"children":823},{"style":123},[824],{"type":48,"value":825},"(err",{"type":42,"tag":88,"props":827,"children":828},{"style":112},[829],{"type":48,"value":157},{"type":42,"tag":88,"props":831,"children":832},{"style":123},[833],{"type":48,"value":834},"message)",{"type":42,"tag":88,"props":836,"children":837},{"style":112},[838],{"type":48,"value":370},{"type":42,"tag":88,"props":840,"children":842},{"class":90,"line":841},24,[843],{"type":42,"tag":88,"props":844,"children":845},{"style":112},[846],{"type":48,"value":847},"  }\n",{"type":42,"tag":88,"props":849,"children":851},{"class":90,"line":850},25,[852,856],{"type":42,"tag":88,"props":853,"children":854},{"style":123},[855],{"type":48,"value":383},{"type":42,"tag":88,"props":857,"children":858},{"style":112},[859],{"type":48,"value":231},{"type":42,"tag":88,"props":861,"children":863},{"class":90,"line":862},26,[864],{"type":42,"tag":88,"props":865,"children":866},{"emptyLinePlaceholder":238},[867],{"type":48,"value":241},{"type":42,"tag":88,"props":869,"children":871},{"class":90,"line":870},27,[872],{"type":42,"tag":88,"props":873,"children":874},{"style":248},[875],{"type":48,"value":876},"\u002F\u002F 3. Connect\n",{"type":42,"tag":88,"props":878,"children":880},{"class":90,"line":879},28,[881,886,890,895,900],{"type":42,"tag":88,"props":882,"children":883},{"style":123},[884],{"type":48,"value":885},"session",{"type":42,"tag":88,"props":887,"children":888},{"style":112},[889],{"type":48,"value":157},{"type":42,"tag":88,"props":891,"children":892},{"style":297},[893],{"type":48,"value":894},"connect",{"type":42,"tag":88,"props":896,"children":897},{"style":123},[898],{"type":48,"value":899},"()",{"type":42,"tag":88,"props":901,"children":902},{"style":112},[903],{"type":48,"value":231},{"type":42,"tag":88,"props":905,"children":907},{"class":90,"line":906},29,[908],{"type":42,"tag":88,"props":909,"children":910},{"emptyLinePlaceholder":238},[911],{"type":48,"value":241},{"type":42,"tag":88,"props":913,"children":915},{"class":90,"line":914},30,[916],{"type":42,"tag":88,"props":917,"children":918},{"style":248},[919],{"type":48,"value":920},"\u002F\u002F 4. Render loop\n",{"type":42,"tag":88,"props":922,"children":924},{"class":90,"line":923},31,[925,930,935,939,944,948,953,957],{"type":42,"tag":88,"props":926,"children":927},{"style":258},[928],{"type":48,"value":929},"function",{"type":42,"tag":88,"props":931,"children":932},{"style":297},[933],{"type":48,"value":934}," onFrame",{"type":42,"tag":88,"props":936,"children":937},{"style":112},[938],{"type":48,"value":305},{"type":42,"tag":88,"props":940,"children":941},{"style":790},[942],{"type":48,"value":943},"time",{"type":42,"tag":88,"props":945,"children":946},{"style":112},[947],{"type":48,"value":196},{"type":42,"tag":88,"props":949,"children":950},{"style":790},[951],{"type":48,"value":952}," frame",{"type":42,"tag":88,"props":954,"children":955},{"style":112},[956],{"type":48,"value":383},{"type":42,"tag":88,"props":958,"children":959},{"style":112},[960],{"type":48,"value":327},{"type":42,"tag":88,"props":962,"children":964},{"class":90,"line":963},32,[965,970,974,979,983,987,991,995,999],{"type":42,"tag":88,"props":966,"children":967},{"style":123},[968],{"type":48,"value":969},"  session",{"type":42,"tag":88,"props":971,"children":972},{"style":112},[973],{"type":48,"value":157},{"type":42,"tag":88,"props":975,"children":976},{"style":297},[977],{"type":48,"value":978},"sendTrackingStateToServer",{"type":42,"tag":88,"props":980,"children":981},{"style":334},[982],{"type":48,"value":305},{"type":42,"tag":88,"props":984,"children":985},{"style":123},[986],{"type":48,"value":943},{"type":42,"tag":88,"props":988,"children":989},{"style":112},[990],{"type":48,"value":196},{"type":42,"tag":88,"props":992,"children":993},{"style":123},[994],{"type":48,"value":952},{"type":42,"tag":88,"props":996,"children":997},{"style":334},[998],{"type":48,"value":383},{"type":42,"tag":88,"props":1000,"children":1001},{"style":112},[1002],{"type":48,"value":231},{"type":42,"tag":88,"props":1004,"children":1006},{"class":90,"line":1005},33,[1007,1011,1015,1020,1024,1028,1032,1036,1040,1044,1048,1052,1056,1060,1064],{"type":42,"tag":88,"props":1008,"children":1009},{"style":123},[1010],{"type":48,"value":969},{"type":42,"tag":88,"props":1012,"children":1013},{"style":112},[1014],{"type":48,"value":157},{"type":42,"tag":88,"props":1016,"children":1017},{"style":297},[1018],{"type":48,"value":1019},"render",{"type":42,"tag":88,"props":1021,"children":1022},{"style":334},[1023],{"type":48,"value":305},{"type":42,"tag":88,"props":1025,"children":1026},{"style":123},[1027],{"type":48,"value":943},{"type":42,"tag":88,"props":1029,"children":1030},{"style":112},[1031],{"type":48,"value":196},{"type":42,"tag":88,"props":1033,"children":1034},{"style":123},[1035],{"type":48,"value":952},{"type":42,"tag":88,"props":1037,"children":1038},{"style":112},[1039],{"type":48,"value":196},{"type":42,"tag":88,"props":1041,"children":1042},{"style":123},[1043],{"type":48,"value":409},{"type":42,"tag":88,"props":1045,"children":1046},{"style":112},[1047],{"type":48,"value":157},{"type":42,"tag":88,"props":1049,"children":1050},{"style":123},[1051],{"type":48,"value":418},{"type":42,"tag":88,"props":1053,"children":1054},{"style":112},[1055],{"type":48,"value":157},{"type":42,"tag":88,"props":1057,"children":1058},{"style":123},[1059],{"type":48,"value":427},{"type":42,"tag":88,"props":1061,"children":1062},{"style":334},[1063],{"type":48,"value":383},{"type":42,"tag":88,"props":1065,"children":1066},{"style":112},[1067],{"type":48,"value":231},{"type":42,"tag":88,"props":1069,"children":1071},{"class":90,"line":1070},34,[1072,1077,1081,1086,1090,1095,1099],{"type":42,"tag":88,"props":1073,"children":1074},{"style":123},[1075],{"type":48,"value":1076},"  xrSession",{"type":42,"tag":88,"props":1078,"children":1079},{"style":112},[1080],{"type":48,"value":157},{"type":42,"tag":88,"props":1082,"children":1083},{"style":297},[1084],{"type":48,"value":1085},"requestAnimationFrame",{"type":42,"tag":88,"props":1087,"children":1088},{"style":334},[1089],{"type":48,"value":305},{"type":42,"tag":88,"props":1091,"children":1092},{"style":123},[1093],{"type":48,"value":1094},"onFrame",{"type":42,"tag":88,"props":1096,"children":1097},{"style":334},[1098],{"type":48,"value":383},{"type":42,"tag":88,"props":1100,"children":1101},{"style":112},[1102],{"type":48,"value":231},{"type":42,"tag":88,"props":1104,"children":1106},{"class":90,"line":1105},35,[1107],{"type":42,"tag":88,"props":1108,"children":1109},{"style":112},[1110],{"type":48,"value":1111},"}\n",{"type":42,"tag":88,"props":1113,"children":1115},{"class":90,"line":1114},36,[1116,1121,1125,1129,1134],{"type":42,"tag":88,"props":1117,"children":1118},{"style":123},[1119],{"type":48,"value":1120},"xrSession",{"type":42,"tag":88,"props":1122,"children":1123},{"style":112},[1124],{"type":48,"value":157},{"type":42,"tag":88,"props":1126,"children":1127},{"style":297},[1128],{"type":48,"value":1085},{"type":42,"tag":88,"props":1130,"children":1131},{"style":123},[1132],{"type":48,"value":1133},"(onFrame)",{"type":42,"tag":88,"props":1135,"children":1136},{"style":112},[1137],{"type":48,"value":231},{"type":42,"tag":88,"props":1139,"children":1141},{"class":90,"line":1140},37,[1142],{"type":42,"tag":88,"props":1143,"children":1144},{"emptyLinePlaceholder":238},[1145],{"type":48,"value":241},{"type":42,"tag":88,"props":1147,"children":1149},{"class":90,"line":1148},38,[1150],{"type":42,"tag":88,"props":1151,"children":1152},{"style":248},[1153],{"type":48,"value":1154},"\u002F\u002F 5. Disconnect when done\n",{"type":42,"tag":88,"props":1156,"children":1158},{"class":90,"line":1157},39,[1159,1163,1167,1172,1176],{"type":42,"tag":88,"props":1160,"children":1161},{"style":123},[1162],{"type":48,"value":885},{"type":42,"tag":88,"props":1164,"children":1165},{"style":112},[1166],{"type":48,"value":157},{"type":42,"tag":88,"props":1168,"children":1169},{"style":297},[1170],{"type":48,"value":1171},"disconnect",{"type":42,"tag":88,"props":1173,"children":1174},{"style":123},[1175],{"type":48,"value":899},{"type":42,"tag":88,"props":1177,"children":1178},{"style":112},[1179],{"type":48,"value":231},{"type":42,"tag":57,"props":1181,"children":1183},{"id":1182},"core-api",[1184],{"type":48,"value":1185},"Core API",{"type":42,"tag":1187,"props":1188,"children":1189},"table",{},[1190,1209],{"type":42,"tag":1191,"props":1192,"children":1193},"thead",{},[1194],{"type":42,"tag":1195,"props":1196,"children":1197},"tr",{},[1198,1204],{"type":42,"tag":1199,"props":1200,"children":1201},"th",{},[1202],{"type":48,"value":1203},"Export",{"type":42,"tag":1199,"props":1205,"children":1206},{},[1207],{"type":48,"value":1208},"Purpose",{"type":42,"tag":1210,"props":1211,"children":1212},"tbody",{},[1213,1238,1295,1312,1363,1386],{"type":42,"tag":1195,"props":1214,"children":1215},{},[1216,1226],{"type":42,"tag":1217,"props":1218,"children":1219},"td",{},[1220],{"type":42,"tag":84,"props":1221,"children":1223},{"className":1222},[],[1224],{"type":48,"value":1225},"createSession(options, delegates?)",{"type":42,"tag":1217,"props":1227,"children":1228},{},[1229,1231,1237],{"type":48,"value":1230},"Create a session. Returns ",{"type":42,"tag":84,"props":1232,"children":1234},{"className":1233},[],[1235],{"type":48,"value":1236},"Session",{"type":48,"value":157},{"type":42,"tag":1195,"props":1239,"children":1240},{},[1241,1249],{"type":42,"tag":1217,"props":1242,"children":1243},{},[1244],{"type":42,"tag":84,"props":1245,"children":1247},{"className":1246},[],[1248],{"type":48,"value":1236},{"type":42,"tag":1217,"props":1250,"children":1251},{},[1252,1254,1260,1261,1267,1268,1274,1275,1281,1282,1288,1289],{"type":48,"value":1253},"Interface: ",{"type":42,"tag":84,"props":1255,"children":1257},{"className":1256},[],[1258],{"type":48,"value":1259},"state",{"type":48,"value":149},{"type":42,"tag":84,"props":1262,"children":1264},{"className":1263},[],[1265],{"type":48,"value":1266},"connect()",{"type":48,"value":149},{"type":42,"tag":84,"props":1269,"children":1271},{"className":1270},[],[1272],{"type":48,"value":1273},"disconnect()",{"type":48,"value":149},{"type":42,"tag":84,"props":1276,"children":1278},{"className":1277},[],[1279],{"type":48,"value":1280},"sendTrackingStateToServer()",{"type":48,"value":149},{"type":42,"tag":84,"props":1283,"children":1285},{"className":1284},[],[1286],{"type":48,"value":1287},"render()",{"type":48,"value":149},{"type":42,"tag":84,"props":1290,"children":1292},{"className":1291},[],[1293],{"type":48,"value":1294},"availableMessageChannels",{"type":42,"tag":1195,"props":1296,"children":1297},{},[1298,1307],{"type":42,"tag":1217,"props":1299,"children":1300},{},[1301],{"type":42,"tag":84,"props":1302,"children":1304},{"className":1303},[],[1305],{"type":48,"value":1306},"SessionOptions",{"type":42,"tag":1217,"props":1308,"children":1309},{},[1310],{"type":48,"value":1311},"Config: server address\u002Fport, WebGL context, resolution, codec, bitrate, ICE servers, etc.",{"type":42,"tag":1195,"props":1313,"children":1314},{},[1315,1324],{"type":42,"tag":1217,"props":1316,"children":1317},{},[1318],{"type":42,"tag":84,"props":1319,"children":1321},{"className":1320},[],[1322],{"type":48,"value":1323},"SessionDelegates",{"type":42,"tag":1217,"props":1325,"children":1326},{},[1327,1329,1335,1336,1342,1343,1349,1350,1356,1357],{"type":48,"value":1328},"Callbacks: ",{"type":42,"tag":84,"props":1330,"children":1332},{"className":1331},[],[1333],{"type":48,"value":1334},"onStreamStarted",{"type":48,"value":149},{"type":42,"tag":84,"props":1337,"children":1339},{"className":1338},[],[1340],{"type":48,"value":1341},"onStreamStopped",{"type":48,"value":149},{"type":42,"tag":84,"props":1344,"children":1346},{"className":1345},[],[1347],{"type":48,"value":1348},"onWebGLStateChangeBegin\u002FEnd",{"type":48,"value":149},{"type":42,"tag":84,"props":1351,"children":1353},{"className":1352},[],[1354],{"type":48,"value":1355},"onMetrics",{"type":48,"value":149},{"type":42,"tag":84,"props":1358,"children":1360},{"className":1359},[],[1361],{"type":48,"value":1362},"onLog",{"type":42,"tag":1195,"props":1364,"children":1365},{},[1366,1375],{"type":42,"tag":1217,"props":1367,"children":1368},{},[1369],{"type":42,"tag":84,"props":1370,"children":1372},{"className":1371},[],[1373],{"type":48,"value":1374},"SessionState",{"type":42,"tag":1217,"props":1376,"children":1377},{},[1378,1380],{"type":48,"value":1379},"Enum: ",{"type":42,"tag":84,"props":1381,"children":1383},{"className":1382},[],[1384],{"type":48,"value":1385},"Initialized → Connecting → Connected → Disconnecting → Disconnected → Error",{"type":42,"tag":1195,"props":1387,"children":1388},{},[1389,1398],{"type":42,"tag":1217,"props":1390,"children":1391},{},[1392],{"type":42,"tag":84,"props":1393,"children":1395},{"className":1394},[],[1396],{"type":48,"value":1397},"MessageChannel",{"type":42,"tag":1217,"props":1399,"children":1400},{},[1401,1403,1409],{"type":48,"value":1402},"Binary data channel for custom app messages (preferred over deprecated ",{"type":42,"tag":84,"props":1404,"children":1406},{"className":1405},[],[1407],{"type":48,"value":1408},"sendServerMessage",{"type":48,"value":383},{"type":42,"tag":57,"props":1411,"children":1413},{"id":1412},"required-sessionoptions",[1414],{"type":48,"value":1415},"Required SessionOptions",{"type":42,"tag":1187,"props":1417,"children":1418},{},[1419,1440],{"type":42,"tag":1191,"props":1420,"children":1421},{},[1422],{"type":42,"tag":1195,"props":1423,"children":1424},{},[1425,1430,1435],{"type":42,"tag":1199,"props":1426,"children":1427},{},[1428],{"type":48,"value":1429},"Field",{"type":42,"tag":1199,"props":1431,"children":1432},{},[1433],{"type":48,"value":1434},"Type",{"type":42,"tag":1199,"props":1436,"children":1437},{},[1438],{"type":48,"value":1439},"Notes",{"type":42,"tag":1210,"props":1441,"children":1442},{},[1443,1469,1501,1541,1567,1592,1617],{"type":42,"tag":1195,"props":1444,"children":1445},{},[1446,1455,1464],{"type":42,"tag":1217,"props":1447,"children":1448},{},[1449],{"type":42,"tag":84,"props":1450,"children":1452},{"className":1451},[],[1453],{"type":48,"value":1454},"serverAddress",{"type":42,"tag":1217,"props":1456,"children":1457},{},[1458],{"type":42,"tag":84,"props":1459,"children":1461},{"className":1460},[],[1462],{"type":48,"value":1463},"string",{"type":42,"tag":1217,"props":1465,"children":1466},{},[1467],{"type":48,"value":1468},"IP or hostname of CloudXR Runtime",{"type":42,"tag":1195,"props":1470,"children":1471},{},[1472,1481,1490],{"type":42,"tag":1217,"props":1473,"children":1474},{},[1475],{"type":42,"tag":84,"props":1476,"children":1478},{"className":1477},[],[1479],{"type":48,"value":1480},"serverPort",{"type":42,"tag":1217,"props":1482,"children":1483},{},[1484],{"type":42,"tag":84,"props":1485,"children":1487},{"className":1486},[],[1488],{"type":48,"value":1489},"number",{"type":42,"tag":1217,"props":1491,"children":1492},{},[1493,1495],{"type":48,"value":1494},"Default ",{"type":42,"tag":84,"props":1496,"children":1498},{"className":1497},[],[1499],{"type":48,"value":1500},"49100",{"type":42,"tag":1195,"props":1502,"children":1503},{},[1504,1513,1522],{"type":42,"tag":1217,"props":1505,"children":1506},{},[1507],{"type":42,"tag":84,"props":1508,"children":1510},{"className":1509},[],[1511],{"type":48,"value":1512},"useSecureConnection",{"type":42,"tag":1217,"props":1514,"children":1515},{},[1516],{"type":42,"tag":84,"props":1517,"children":1519},{"className":1518},[],[1520],{"type":48,"value":1521},"boolean",{"type":42,"tag":1217,"props":1523,"children":1524},{},[1525,1531,1533,1539],{"type":42,"tag":84,"props":1526,"children":1528},{"className":1527},[],[1529],{"type":48,"value":1530},"true",{"type":48,"value":1532}," for WSS (production), ",{"type":42,"tag":84,"props":1534,"children":1536},{"className":1535},[],[1537],{"type":48,"value":1538},"false",{"type":48,"value":1540}," for WS (dev)",{"type":42,"tag":1195,"props":1542,"children":1543},{},[1544,1553,1562],{"type":42,"tag":1217,"props":1545,"children":1546},{},[1547],{"type":42,"tag":84,"props":1548,"children":1550},{"className":1549},[],[1551],{"type":48,"value":1552},"gl",{"type":42,"tag":1217,"props":1554,"children":1555},{},[1556],{"type":42,"tag":84,"props":1557,"children":1559},{"className":1558},[],[1560],{"type":48,"value":1561},"WebGL2RenderingContext",{"type":42,"tag":1217,"props":1563,"children":1564},{},[1565],{"type":48,"value":1566},"From canvas or XR layer",{"type":42,"tag":1195,"props":1568,"children":1569},{},[1570,1579,1587],{"type":42,"tag":1217,"props":1571,"children":1572},{},[1573],{"type":42,"tag":84,"props":1574,"children":1576},{"className":1575},[],[1577],{"type":48,"value":1578},"perEyeWidth",{"type":42,"tag":1217,"props":1580,"children":1581},{},[1582],{"type":42,"tag":84,"props":1583,"children":1585},{"className":1584},[],[1586],{"type":48,"value":1489},{"type":42,"tag":1217,"props":1588,"children":1589},{},[1590],{"type":48,"value":1591},"Must be multiple of 16, ≥ 256",{"type":42,"tag":1195,"props":1593,"children":1594},{},[1595,1604,1612],{"type":42,"tag":1217,"props":1596,"children":1597},{},[1598],{"type":42,"tag":84,"props":1599,"children":1601},{"className":1600},[],[1602],{"type":48,"value":1603},"perEyeHeight",{"type":42,"tag":1217,"props":1605,"children":1606},{},[1607],{"type":42,"tag":84,"props":1608,"children":1610},{"className":1609},[],[1611],{"type":48,"value":1489},{"type":42,"tag":1217,"props":1613,"children":1614},{},[1615],{"type":48,"value":1616},"Must be multiple of 64, ≥ 256",{"type":42,"tag":1195,"props":1618,"children":1619},{},[1620,1629,1638],{"type":42,"tag":1217,"props":1621,"children":1622},{},[1623],{"type":42,"tag":84,"props":1624,"children":1626},{"className":1625},[],[1627],{"type":48,"value":1628},"referenceSpace",{"type":42,"tag":1217,"props":1630,"children":1631},{},[1632],{"type":42,"tag":84,"props":1633,"children":1635},{"className":1634},[],[1636],{"type":48,"value":1637},"XRReferenceSpace",{"type":42,"tag":1217,"props":1639,"children":1640},{},[1641],{"type":48,"value":1642},"From WebXR session",{"type":42,"tag":57,"props":1644,"children":1646},{"id":1645},"key-optional-sessionoptions",[1647],{"type":48,"value":1648},"Key Optional SessionOptions",{"type":42,"tag":1187,"props":1650,"children":1651},{},[1652,1671],{"type":42,"tag":1191,"props":1653,"children":1654},{},[1655],{"type":42,"tag":1195,"props":1656,"children":1657},{},[1658,1662,1667],{"type":42,"tag":1199,"props":1659,"children":1660},{},[1661],{"type":48,"value":1429},{"type":42,"tag":1199,"props":1663,"children":1664},{},[1665],{"type":48,"value":1666},"Default",{"type":42,"tag":1199,"props":1668,"children":1669},{},[1670],{"type":48,"value":1439},{"type":42,"tag":1210,"props":1672,"children":1673},{},[1674,1706,1741,1768,1790,1811,1840,1861,1882,1903,1930],{"type":42,"tag":1195,"props":1675,"children":1676},{},[1677,1686,1695],{"type":42,"tag":1217,"props":1678,"children":1679},{},[1680],{"type":42,"tag":84,"props":1681,"children":1683},{"className":1682},[],[1684],{"type":48,"value":1685},"codec",{"type":42,"tag":1217,"props":1687,"children":1688},{},[1689],{"type":42,"tag":84,"props":1690,"children":1692},{"className":1691},[],[1693],{"type":48,"value":1694},"'h264'",{"type":42,"tag":1217,"props":1696,"children":1697},{},[1698,1700],{"type":48,"value":1699},"Also ",{"type":42,"tag":84,"props":1701,"children":1703},{"className":1702},[],[1704],{"type":48,"value":1705},"'av1'",{"type":42,"tag":1195,"props":1707,"children":1708},{},[1709,1718,1723],{"type":42,"tag":1217,"props":1710,"children":1711},{},[1712],{"type":42,"tag":84,"props":1713,"children":1715},{"className":1714},[],[1716],{"type":48,"value":1717},"deviceFrameRate",{"type":42,"tag":1217,"props":1719,"children":1720},{},[1721],{"type":48,"value":1722},"device default",{"type":42,"tag":1217,"props":1724,"children":1725},{},[1726,1728,1734,1735],{"type":48,"value":1727},"e.g. ",{"type":42,"tag":84,"props":1729,"children":1731},{"className":1730},[],[1732],{"type":48,"value":1733},"72",{"type":48,"value":149},{"type":42,"tag":84,"props":1736,"children":1738},{"className":1737},[],[1739],{"type":48,"value":1740},"90",{"type":42,"tag":1195,"props":1742,"children":1743},{},[1744,1753,1758],{"type":42,"tag":1217,"props":1745,"children":1746},{},[1747],{"type":42,"tag":84,"props":1748,"children":1750},{"className":1749},[],[1751],{"type":48,"value":1752},"maxStreamingBitrateKbps",{"type":42,"tag":1217,"props":1754,"children":1755},{},[1756],{"type":48,"value":1757},"SDK default",{"type":42,"tag":1217,"props":1759,"children":1760},{},[1761,1762],{"type":48,"value":1727},{"type":42,"tag":84,"props":1763,"children":1765},{"className":1764},[],[1766],{"type":48,"value":1767},"150000",{"type":42,"tag":1195,"props":1769,"children":1770},{},[1771,1780,1785],{"type":42,"tag":1217,"props":1772,"children":1773},{},[1774],{"type":42,"tag":84,"props":1775,"children":1777},{"className":1776},[],[1778],{"type":48,"value":1779},"enablePoseSmoothing",{"type":42,"tag":1217,"props":1781,"children":1782},{},[1783],{"type":48,"value":1784},"—",{"type":42,"tag":1217,"props":1786,"children":1787},{},[1788],{"type":48,"value":1789},"Smooth head tracking",{"type":42,"tag":1195,"props":1791,"children":1792},{},[1793,1802,1806],{"type":42,"tag":1217,"props":1794,"children":1795},{},[1796],{"type":42,"tag":84,"props":1797,"children":1799},{"className":1798},[],[1800],{"type":48,"value":1801},"posePredictionFactor",{"type":42,"tag":1217,"props":1803,"children":1804},{},[1805],{"type":48,"value":1784},{"type":42,"tag":1217,"props":1807,"children":1808},{},[1809],{"type":48,"value":1810},"Prediction multiplier",{"type":42,"tag":1195,"props":1812,"children":1813},{},[1814,1831,1835],{"type":42,"tag":1217,"props":1815,"children":1816},{},[1817,1823,1825],{"type":42,"tag":84,"props":1818,"children":1820},{"className":1819},[],[1821],{"type":48,"value":1822},"mediaAddress",{"type":48,"value":1824}," \u002F ",{"type":42,"tag":84,"props":1826,"children":1828},{"className":1827},[],[1829],{"type":48,"value":1830},"mediaPort",{"type":42,"tag":1217,"props":1832,"children":1833},{},[1834],{"type":48,"value":1784},{"type":42,"tag":1217,"props":1836,"children":1837},{},[1838],{"type":48,"value":1839},"NAT traversal",{"type":42,"tag":1195,"props":1841,"children":1842},{},[1843,1852,1856],{"type":42,"tag":1217,"props":1844,"children":1845},{},[1846],{"type":42,"tag":84,"props":1847,"children":1849},{"className":1848},[],[1850],{"type":48,"value":1851},"signalingResourcePath",{"type":42,"tag":1217,"props":1853,"children":1854},{},[1855],{"type":48,"value":1784},{"type":42,"tag":1217,"props":1857,"children":1858},{},[1859],{"type":48,"value":1860},"Proxy routing path",{"type":42,"tag":1195,"props":1862,"children":1863},{},[1864,1873,1877],{"type":42,"tag":1217,"props":1865,"children":1866},{},[1867],{"type":42,"tag":84,"props":1868,"children":1870},{"className":1869},[],[1871],{"type":48,"value":1872},"signalingQueryParameters",{"type":42,"tag":1217,"props":1874,"children":1875},{},[1876],{"type":48,"value":1784},{"type":42,"tag":1217,"props":1878,"children":1879},{},[1880],{"type":48,"value":1881},"Auth tokens, etc.",{"type":42,"tag":1195,"props":1883,"children":1884},{},[1885,1894,1898],{"type":42,"tag":1217,"props":1886,"children":1887},{},[1888],{"type":42,"tag":84,"props":1889,"children":1891},{"className":1890},[],[1892],{"type":48,"value":1893},"iceServers",{"type":42,"tag":1217,"props":1895,"children":1896},{},[1897],{"type":48,"value":1784},{"type":42,"tag":1217,"props":1899,"children":1900},{},[1901],{"type":48,"value":1902},"STUN\u002FTURN for enterprise NAT",{"type":42,"tag":1195,"props":1904,"children":1905},{},[1906,1915,1919],{"type":42,"tag":1217,"props":1907,"children":1908},{},[1909],{"type":42,"tag":84,"props":1910,"children":1912},{"className":1911},[],[1913],{"type":48,"value":1914},"glBinding",{"type":42,"tag":1217,"props":1916,"children":1917},{},[1918],{"type":48,"value":1784},{"type":42,"tag":1217,"props":1920,"children":1921},{},[1922,1928],{"type":42,"tag":84,"props":1923,"children":1925},{"className":1924},[],[1926],{"type":48,"value":1927},"XRWebGLBinding",{"type":48,"value":1929}," for R3F",{"type":42,"tag":1195,"props":1931,"children":1932},{},[1933,1942,1946],{"type":42,"tag":1217,"props":1934,"children":1935},{},[1936],{"type":42,"tag":84,"props":1937,"children":1939},{"className":1938},[],[1940],{"type":48,"value":1941},"telemetry",{"type":42,"tag":1217,"props":1943,"children":1944},{},[1945],{"type":48,"value":1784},{"type":42,"tag":1217,"props":1947,"children":1948},{},[1949],{"type":42,"tag":84,"props":1950,"children":1952},{"className":1951},[],[1953],{"type":48,"value":1954},"{ enabled, appInfo: { version, product } }",{"type":42,"tag":57,"props":1956,"children":1958},{"id":1957},"resolution-rules",[1959],{"type":48,"value":1960},"Resolution Rules",{"type":42,"tag":1962,"props":1963,"children":1964},"ul",{},[1965,1989,2008,2027],{"type":42,"tag":1966,"props":1967,"children":1968},"li",{},[1969,1974,1976,1982,1984],{"type":42,"tag":84,"props":1970,"children":1972},{"className":1971},[],[1973],{"type":48,"value":1578},{"type":48,"value":1975}," must be a multiple of ",{"type":42,"tag":1977,"props":1978,"children":1979},"strong",{},[1980],{"type":48,"value":1981},"16",{"type":48,"value":1983}," and ≥ ",{"type":42,"tag":1977,"props":1985,"children":1986},{},[1987],{"type":48,"value":1988},"256",{"type":42,"tag":1966,"props":1990,"children":1991},{},[1992,1997,1998,2003,2004],{"type":42,"tag":84,"props":1993,"children":1995},{"className":1994},[],[1996],{"type":48,"value":1603},{"type":48,"value":1975},{"type":42,"tag":1977,"props":1999,"children":2000},{},[2001],{"type":48,"value":2002},"64",{"type":48,"value":1983},{"type":42,"tag":1977,"props":2005,"children":2006},{},[2007],{"type":48,"value":1988},{"type":42,"tag":1966,"props":2009,"children":2010},{},[2011,2013,2019,2021],{"type":48,"value":2012},"Stream resolution: width = ",{"type":42,"tag":84,"props":2014,"children":2016},{"className":2015},[],[2017],{"type":48,"value":2018},"perEyeWidth * 2",{"type":48,"value":2020},", height = ",{"type":42,"tag":84,"props":2022,"children":2024},{"className":2023},[],[2025],{"type":48,"value":2026},"perEyeHeight * 9 \u002F 4",{"type":42,"tag":1966,"props":2028,"children":2029},{},[2030,2032,2038,2040,2046,2048],{"type":48,"value":2031},"Use ",{"type":42,"tag":84,"props":2033,"children":2035},{"className":2034},[],[2036],{"type":48,"value":2037},"validatePerEyeResolution()",{"type":48,"value":2039}," and ",{"type":42,"tag":84,"props":2041,"children":2043},{"className":2042},[],[2044],{"type":48,"value":2045},"getResolutionValidationError()",{"type":48,"value":2047}," before calling ",{"type":42,"tag":84,"props":2049,"children":2051},{"className":2050},[],[2052],{"type":48,"value":2053},"createSession",{"type":42,"tag":57,"props":2055,"children":2057},{"id":2056},"two-integration-patterns",[2058],{"type":48,"value":2059},"Two Integration Patterns",{"type":42,"tag":64,"props":2061,"children":2063},{"id":2062},"pattern-1-vanilla-webgl-webxr",[2064],{"type":48,"value":2065},"Pattern 1: Vanilla WebGL + WebXR",{"type":42,"tag":51,"props":2067,"children":2068},{},[2069,2071,2080],{"type":48,"value":2070},"See the ",{"type":42,"tag":2072,"props":2073,"children":2077},"a",{"href":2074,"rel":2075},"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fcloudxr-js-samples\u002Ftree\u002Fmain\u002Fsimple",[2076],"nofollow",[2078],{"type":48,"value":2079},"Simple WebGL sample",{"type":48,"value":157},{"type":42,"tag":51,"props":2082,"children":2083},{},[2084,2086,2092,2094,2099,2101,2106],{"type":48,"value":2085},"Key flow: check capabilities → create WebGL context → request XR session → ",{"type":42,"tag":84,"props":2087,"children":2089},{"className":2088},[],[2090],{"type":48,"value":2091},"createSession()",{"type":48,"value":2093}," → XR RAF loop with ",{"type":42,"tag":84,"props":2095,"children":2097},{"className":2096},[],[2098],{"type":48,"value":1280},{"type":48,"value":2100}," + ",{"type":42,"tag":84,"props":2102,"children":2104},{"className":2103},[],[2105],{"type":48,"value":1287},{"type":48,"value":157},{"type":42,"tag":51,"props":2108,"children":2109},{},[2110,2112,2118,2119,2125],{"type":48,"value":2111},"WebGL state: CloudXR modifies GL state during render. If you share the context, save\u002Frestore via ",{"type":42,"tag":84,"props":2113,"children":2115},{"className":2114},[],[2116],{"type":48,"value":2117},"onWebGLStateChangeBegin",{"type":48,"value":1824},{"type":42,"tag":84,"props":2120,"children":2122},{"className":2121},[],[2123],{"type":48,"value":2124},"onWebGLStateChangeEnd",{"type":48,"value":2126}," delegates.",{"type":42,"tag":64,"props":2128,"children":2130},{"id":2129},"pattern-2-react-three-fiber-r3f",[2131],{"type":48,"value":2132},"Pattern 2: React Three Fiber (R3F)",{"type":42,"tag":51,"props":2134,"children":2135},{},[2136,2137,2144],{"type":48,"value":2070},{"type":42,"tag":2072,"props":2138,"children":2141},{"href":2139,"rel":2140},"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fcloudxr-js-samples\u002Ftree\u002Fmain\u002Freact",[2076],[2142],{"type":48,"value":2143},"React sample",{"type":48,"value":157},{"type":42,"tag":76,"props":2146,"children":2150},{"className":2147,"code":2148,"language":2149,"meta":81,"style":81},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import * as CloudXR from '@nvidia\u002Fcloudxr';\nimport { useThree, useFrame } from '@react-three\u002Ffiber';\nimport { useRef } from 'react';\nimport { bindGL } from '@helpers\u002FWebGLStateBinding';\n\nfunction CloudXRComponent({ config }) {\n  const gl = useThree().gl.getContext() as WebGL2RenderingContext;\n  const trackedGL = bindGL(gl);\n  const sessionRef = useRef\u003CCloudXR.Session | null>(null);\n\n  \u002F\u002F On XR session start → createSession + connect\n  \u002F\u002F On XR session end → disconnect\n\n  useFrame(state => {\n    const xrFrame = state.gl.xr.getFrame();\n    if (sessionRef.current?.state === CloudXR.SessionState.Connected && xrFrame) {\n      const timestamp = state.clock.elapsedTime * 1000;\n      const layer = state.gl.xr.getBaseLayer() as XRWebGLLayer;\n      sessionRef.current.sendTrackingStateToServer(timestamp, xrFrame);\n      sessionRef.current.render(timestamp, xrFrame, layer);\n    }\n  }, -1000); \u002F\u002F negative priority = run before Three.js render\n}\n","tsx",[2151],{"type":42,"tag":84,"props":2152,"children":2153},{"__ignoreMap":81},[2154,2197,2247,2288,2329,2336,2367,2429,2465,2533,2540,2548,2556,2563,2587,2642,2724,2776,2838,2887,2942,2950,2982],{"type":42,"tag":88,"props":2155,"children":2156},{"class":90,"line":91},[2157,2161,2166,2171,2176,2181,2185,2189,2193],{"type":42,"tag":88,"props":2158,"children":2159},{"style":178},[2160],{"type":48,"value":181},{"type":42,"tag":88,"props":2162,"children":2163},{"style":112},[2164],{"type":48,"value":2165}," *",{"type":42,"tag":88,"props":2167,"children":2168},{"style":178},[2169],{"type":48,"value":2170}," as",{"type":42,"tag":88,"props":2172,"children":2173},{"style":123},[2174],{"type":48,"value":2175}," CloudXR ",{"type":42,"tag":88,"props":2177,"children":2178},{"style":178},[2179],{"type":48,"value":2180},"from",{"type":42,"tag":88,"props":2182,"children":2183},{"style":112},[2184],{"type":48,"value":216},{"type":42,"tag":88,"props":2186,"children":2187},{"style":101},[2188],{"type":48,"value":221},{"type":42,"tag":88,"props":2190,"children":2191},{"style":112},[2192],{"type":48,"value":226},{"type":42,"tag":88,"props":2194,"children":2195},{"style":112},[2196],{"type":48,"value":231},{"type":42,"tag":88,"props":2198,"children":2199},{"class":90,"line":234},[2200,2204,2208,2213,2217,2222,2226,2230,2234,2239,2243],{"type":42,"tag":88,"props":2201,"children":2202},{"style":178},[2203],{"type":48,"value":181},{"type":42,"tag":88,"props":2205,"children":2206},{"style":112},[2207],{"type":48,"value":186},{"type":42,"tag":88,"props":2209,"children":2210},{"style":123},[2211],{"type":48,"value":2212}," useThree",{"type":42,"tag":88,"props":2214,"children":2215},{"style":112},[2216],{"type":48,"value":196},{"type":42,"tag":88,"props":2218,"children":2219},{"style":123},[2220],{"type":48,"value":2221}," useFrame",{"type":42,"tag":88,"props":2223,"children":2224},{"style":112},[2225],{"type":48,"value":206},{"type":42,"tag":88,"props":2227,"children":2228},{"style":178},[2229],{"type":48,"value":211},{"type":42,"tag":88,"props":2231,"children":2232},{"style":112},[2233],{"type":48,"value":216},{"type":42,"tag":88,"props":2235,"children":2236},{"style":101},[2237],{"type":48,"value":2238},"@react-three\u002Ffiber",{"type":42,"tag":88,"props":2240,"children":2241},{"style":112},[2242],{"type":48,"value":226},{"type":42,"tag":88,"props":2244,"children":2245},{"style":112},[2246],{"type":48,"value":231},{"type":42,"tag":88,"props":2248,"children":2249},{"class":90,"line":244},[2250,2254,2258,2263,2267,2271,2275,2280,2284],{"type":42,"tag":88,"props":2251,"children":2252},{"style":178},[2253],{"type":48,"value":181},{"type":42,"tag":88,"props":2255,"children":2256},{"style":112},[2257],{"type":48,"value":186},{"type":42,"tag":88,"props":2259,"children":2260},{"style":123},[2261],{"type":48,"value":2262}," useRef",{"type":42,"tag":88,"props":2264,"children":2265},{"style":112},[2266],{"type":48,"value":206},{"type":42,"tag":88,"props":2268,"children":2269},{"style":178},[2270],{"type":48,"value":211},{"type":42,"tag":88,"props":2272,"children":2273},{"style":112},[2274],{"type":48,"value":216},{"type":42,"tag":88,"props":2276,"children":2277},{"style":101},[2278],{"type":48,"value":2279},"react",{"type":42,"tag":88,"props":2281,"children":2282},{"style":112},[2283],{"type":48,"value":226},{"type":42,"tag":88,"props":2285,"children":2286},{"style":112},[2287],{"type":48,"value":231},{"type":42,"tag":88,"props":2289,"children":2290},{"class":90,"line":254},[2291,2295,2299,2304,2308,2312,2316,2321,2325],{"type":42,"tag":88,"props":2292,"children":2293},{"style":178},[2294],{"type":48,"value":181},{"type":42,"tag":88,"props":2296,"children":2297},{"style":112},[2298],{"type":48,"value":186},{"type":42,"tag":88,"props":2300,"children":2301},{"style":123},[2302],{"type":48,"value":2303}," bindGL",{"type":42,"tag":88,"props":2305,"children":2306},{"style":112},[2307],{"type":48,"value":206},{"type":42,"tag":88,"props":2309,"children":2310},{"style":178},[2311],{"type":48,"value":211},{"type":42,"tag":88,"props":2313,"children":2314},{"style":112},[2315],{"type":48,"value":216},{"type":42,"tag":88,"props":2317,"children":2318},{"style":101},[2319],{"type":48,"value":2320},"@helpers\u002FWebGLStateBinding",{"type":42,"tag":88,"props":2322,"children":2323},{"style":112},[2324],{"type":48,"value":226},{"type":42,"tag":88,"props":2326,"children":2327},{"style":112},[2328],{"type":48,"value":231},{"type":42,"tag":88,"props":2330,"children":2331},{"class":90,"line":330},[2332],{"type":42,"tag":88,"props":2333,"children":2334},{"emptyLinePlaceholder":238},[2335],{"type":48,"value":241},{"type":42,"tag":88,"props":2337,"children":2338},{"class":90,"line":30},[2339,2343,2348,2353,2358,2363],{"type":42,"tag":88,"props":2340,"children":2341},{"style":258},[2342],{"type":48,"value":929},{"type":42,"tag":88,"props":2344,"children":2345},{"style":297},[2346],{"type":48,"value":2347}," CloudXRComponent",{"type":42,"tag":88,"props":2349,"children":2350},{"style":112},[2351],{"type":48,"value":2352},"({",{"type":42,"tag":88,"props":2354,"children":2355},{"style":790},[2356],{"type":48,"value":2357}," config",{"type":42,"tag":88,"props":2359,"children":2360},{"style":112},[2361],{"type":48,"value":2362}," })",{"type":42,"tag":88,"props":2364,"children":2365},{"style":112},[2366],{"type":48,"value":327},{"type":42,"tag":88,"props":2368,"children":2369},{"class":90,"line":390},[2370,2375,2380,2385,2389,2393,2397,2401,2405,2410,2415,2420,2425],{"type":42,"tag":88,"props":2371,"children":2372},{"style":258},[2373],{"type":48,"value":2374},"  const",{"type":42,"tag":88,"props":2376,"children":2377},{"style":123},[2378],{"type":48,"value":2379}," gl",{"type":42,"tag":88,"props":2381,"children":2382},{"style":112},[2383],{"type":48,"value":2384}," =",{"type":42,"tag":88,"props":2386,"children":2387},{"style":297},[2388],{"type":48,"value":2212},{"type":42,"tag":88,"props":2390,"children":2391},{"style":334},[2392],{"type":48,"value":899},{"type":42,"tag":88,"props":2394,"children":2395},{"style":112},[2396],{"type":48,"value":157},{"type":42,"tag":88,"props":2398,"children":2399},{"style":123},[2400],{"type":48,"value":1552},{"type":42,"tag":88,"props":2402,"children":2403},{"style":112},[2404],{"type":48,"value":157},{"type":42,"tag":88,"props":2406,"children":2407},{"style":297},[2408],{"type":48,"value":2409},"getContext",{"type":42,"tag":88,"props":2411,"children":2412},{"style":334},[2413],{"type":48,"value":2414},"() ",{"type":42,"tag":88,"props":2416,"children":2417},{"style":178},[2418],{"type":48,"value":2419},"as",{"type":42,"tag":88,"props":2421,"children":2422},{"style":95},[2423],{"type":48,"value":2424}," WebGL2RenderingContext",{"type":42,"tag":88,"props":2426,"children":2427},{"style":112},[2428],{"type":48,"value":231},{"type":42,"tag":88,"props":2430,"children":2431},{"class":90,"line":443},[2432,2436,2441,2445,2449,2453,2457,2461],{"type":42,"tag":88,"props":2433,"children":2434},{"style":258},[2435],{"type":48,"value":2374},{"type":42,"tag":88,"props":2437,"children":2438},{"style":123},[2439],{"type":48,"value":2440}," trackedGL",{"type":42,"tag":88,"props":2442,"children":2443},{"style":112},[2444],{"type":48,"value":2384},{"type":42,"tag":88,"props":2446,"children":2447},{"style":297},[2448],{"type":48,"value":2303},{"type":42,"tag":88,"props":2450,"children":2451},{"style":334},[2452],{"type":48,"value":305},{"type":42,"tag":88,"props":2454,"children":2455},{"style":123},[2456],{"type":48,"value":1552},{"type":42,"tag":88,"props":2458,"children":2459},{"style":334},[2460],{"type":48,"value":383},{"type":42,"tag":88,"props":2462,"children":2463},{"style":112},[2464],{"type":48,"value":231},{"type":42,"tag":88,"props":2466,"children":2467},{"class":90,"line":501},[2468,2472,2477,2481,2485,2489,2494,2498,2502,2507,2512,2516,2520,2525,2529],{"type":42,"tag":88,"props":2469,"children":2470},{"style":258},[2471],{"type":48,"value":2374},{"type":42,"tag":88,"props":2473,"children":2474},{"style":123},[2475],{"type":48,"value":2476}," sessionRef",{"type":42,"tag":88,"props":2478,"children":2479},{"style":112},[2480],{"type":48,"value":2384},{"type":42,"tag":88,"props":2482,"children":2483},{"style":297},[2484],{"type":48,"value":2262},{"type":42,"tag":88,"props":2486,"children":2487},{"style":112},[2488],{"type":48,"value":115},{"type":42,"tag":88,"props":2490,"children":2491},{"style":95},[2492],{"type":48,"value":2493},"CloudXR",{"type":42,"tag":88,"props":2495,"children":2496},{"style":112},[2497],{"type":48,"value":157},{"type":42,"tag":88,"props":2499,"children":2500},{"style":95},[2501],{"type":48,"value":1236},{"type":42,"tag":88,"props":2503,"children":2504},{"style":112},[2505],{"type":48,"value":2506}," |",{"type":42,"tag":88,"props":2508,"children":2509},{"style":95},[2510],{"type":48,"value":2511}," null",{"type":42,"tag":88,"props":2513,"children":2514},{"style":112},[2515],{"type":48,"value":131},{"type":42,"tag":88,"props":2517,"children":2518},{"style":334},[2519],{"type":48,"value":305},{"type":42,"tag":88,"props":2521,"children":2522},{"style":112},[2523],{"type":48,"value":2524},"null",{"type":42,"tag":88,"props":2526,"children":2527},{"style":334},[2528],{"type":48,"value":383},{"type":42,"tag":88,"props":2530,"children":2531},{"style":112},[2532],{"type":48,"value":231},{"type":42,"tag":88,"props":2534,"children":2535},{"class":90,"line":509},[2536],{"type":42,"tag":88,"props":2537,"children":2538},{"emptyLinePlaceholder":238},[2539],{"type":48,"value":241},{"type":42,"tag":88,"props":2541,"children":2542},{"class":90,"line":518},[2543],{"type":42,"tag":88,"props":2544,"children":2545},{"style":248},[2546],{"type":48,"value":2547},"  \u002F\u002F On XR session start → createSession + connect\n",{"type":42,"tag":88,"props":2549,"children":2550},{"class":90,"line":544},[2551],{"type":42,"tag":88,"props":2552,"children":2553},{"style":248},[2554],{"type":48,"value":2555},"  \u002F\u002F On XR session end → disconnect\n",{"type":42,"tag":88,"props":2557,"children":2558},{"class":90,"line":553},[2559],{"type":42,"tag":88,"props":2560,"children":2561},{"emptyLinePlaceholder":238},[2562],{"type":48,"value":241},{"type":42,"tag":88,"props":2564,"children":2565},{"class":90,"line":583},[2566,2571,2575,2579,2583],{"type":42,"tag":88,"props":2567,"children":2568},{"style":297},[2569],{"type":48,"value":2570},"  useFrame",{"type":42,"tag":88,"props":2572,"children":2573},{"style":334},[2574],{"type":48,"value":305},{"type":42,"tag":88,"props":2576,"children":2577},{"style":790},[2578],{"type":48,"value":1259},{"type":42,"tag":88,"props":2580,"children":2581},{"style":258},[2582],{"type":48,"value":735},{"type":42,"tag":88,"props":2584,"children":2585},{"style":112},[2586],{"type":48,"value":327},{"type":42,"tag":88,"props":2588,"children":2589},{"class":90,"line":606},[2590,2595,2600,2604,2609,2613,2617,2621,2625,2629,2634,2638],{"type":42,"tag":88,"props":2591,"children":2592},{"style":258},[2593],{"type":48,"value":2594},"    const",{"type":42,"tag":88,"props":2596,"children":2597},{"style":123},[2598],{"type":48,"value":2599}," xrFrame",{"type":42,"tag":88,"props":2601,"children":2602},{"style":112},[2603],{"type":48,"value":2384},{"type":42,"tag":88,"props":2605,"children":2606},{"style":123},[2607],{"type":48,"value":2608}," state",{"type":42,"tag":88,"props":2610,"children":2611},{"style":112},[2612],{"type":48,"value":157},{"type":42,"tag":88,"props":2614,"children":2615},{"style":123},[2616],{"type":48,"value":1552},{"type":42,"tag":88,"props":2618,"children":2619},{"style":112},[2620],{"type":48,"value":157},{"type":42,"tag":88,"props":2622,"children":2623},{"style":123},[2624],{"type":48,"value":290},{"type":42,"tag":88,"props":2626,"children":2627},{"style":112},[2628],{"type":48,"value":157},{"type":42,"tag":88,"props":2630,"children":2631},{"style":297},[2632],{"type":48,"value":2633},"getFrame",{"type":42,"tag":88,"props":2635,"children":2636},{"style":334},[2637],{"type":48,"value":899},{"type":42,"tag":88,"props":2639,"children":2640},{"style":112},[2641],{"type":48,"value":231},{"type":42,"tag":88,"props":2643,"children":2644},{"class":90,"line":629},[2645,2650,2655,2660,2664,2669,2674,2678,2683,2688,2692,2696,2700,2705,2710,2714,2719],{"type":42,"tag":88,"props":2646,"children":2647},{"style":178},[2648],{"type":48,"value":2649},"    if",{"type":42,"tag":88,"props":2651,"children":2652},{"style":334},[2653],{"type":48,"value":2654}," (",{"type":42,"tag":88,"props":2656,"children":2657},{"style":123},[2658],{"type":48,"value":2659},"sessionRef",{"type":42,"tag":88,"props":2661,"children":2662},{"style":112},[2663],{"type":48,"value":157},{"type":42,"tag":88,"props":2665,"children":2666},{"style":123},[2667],{"type":48,"value":2668},"current",{"type":42,"tag":88,"props":2670,"children":2671},{"style":112},[2672],{"type":48,"value":2673},"?.",{"type":42,"tag":88,"props":2675,"children":2676},{"style":123},[2677],{"type":48,"value":1259},{"type":42,"tag":88,"props":2679,"children":2680},{"style":112},[2681],{"type":48,"value":2682}," ===",{"type":42,"tag":88,"props":2684,"children":2685},{"style":123},[2686],{"type":48,"value":2687}," CloudXR",{"type":42,"tag":88,"props":2689,"children":2690},{"style":112},[2691],{"type":48,"value":157},{"type":42,"tag":88,"props":2693,"children":2694},{"style":123},[2695],{"type":48,"value":1374},{"type":42,"tag":88,"props":2697,"children":2698},{"style":112},[2699],{"type":48,"value":157},{"type":42,"tag":88,"props":2701,"children":2702},{"style":123},[2703],{"type":48,"value":2704},"Connected",{"type":42,"tag":88,"props":2706,"children":2707},{"style":112},[2708],{"type":48,"value":2709}," &&",{"type":42,"tag":88,"props":2711,"children":2712},{"style":123},[2713],{"type":48,"value":2599},{"type":42,"tag":88,"props":2715,"children":2716},{"style":334},[2717],{"type":48,"value":2718},") ",{"type":42,"tag":88,"props":2720,"children":2721},{"style":112},[2722],{"type":48,"value":2723},"{\n",{"type":42,"tag":88,"props":2725,"children":2726},{"class":90,"line":26},[2727,2732,2737,2741,2745,2749,2754,2758,2763,2767,2772],{"type":42,"tag":88,"props":2728,"children":2729},{"style":258},[2730],{"type":48,"value":2731},"      const",{"type":42,"tag":88,"props":2733,"children":2734},{"style":123},[2735],{"type":48,"value":2736}," timestamp",{"type":42,"tag":88,"props":2738,"children":2739},{"style":112},[2740],{"type":48,"value":2384},{"type":42,"tag":88,"props":2742,"children":2743},{"style":123},[2744],{"type":48,"value":2608},{"type":42,"tag":88,"props":2746,"children":2747},{"style":112},[2748],{"type":48,"value":157},{"type":42,"tag":88,"props":2750,"children":2751},{"style":123},[2752],{"type":48,"value":2753},"clock",{"type":42,"tag":88,"props":2755,"children":2756},{"style":112},[2757],{"type":48,"value":157},{"type":42,"tag":88,"props":2759,"children":2760},{"style":123},[2761],{"type":48,"value":2762},"elapsedTime",{"type":42,"tag":88,"props":2764,"children":2765},{"style":112},[2766],{"type":48,"value":2165},{"type":42,"tag":88,"props":2768,"children":2769},{"style":596},[2770],{"type":48,"value":2771}," 1000",{"type":42,"tag":88,"props":2773,"children":2774},{"style":112},[2775],{"type":48,"value":231},{"type":42,"tag":88,"props":2777,"children":2778},{"class":90,"line":663},[2779,2783,2788,2792,2796,2800,2804,2808,2812,2816,2821,2825,2829,2834],{"type":42,"tag":88,"props":2780,"children":2781},{"style":258},[2782],{"type":48,"value":2731},{"type":42,"tag":88,"props":2784,"children":2785},{"style":123},[2786],{"type":48,"value":2787}," layer",{"type":42,"tag":88,"props":2789,"children":2790},{"style":112},[2791],{"type":48,"value":2384},{"type":42,"tag":88,"props":2793,"children":2794},{"style":123},[2795],{"type":48,"value":2608},{"type":42,"tag":88,"props":2797,"children":2798},{"style":112},[2799],{"type":48,"value":157},{"type":42,"tag":88,"props":2801,"children":2802},{"style":123},[2803],{"type":48,"value":1552},{"type":42,"tag":88,"props":2805,"children":2806},{"style":112},[2807],{"type":48,"value":157},{"type":42,"tag":88,"props":2809,"children":2810},{"style":123},[2811],{"type":48,"value":290},{"type":42,"tag":88,"props":2813,"children":2814},{"style":112},[2815],{"type":48,"value":157},{"type":42,"tag":88,"props":2817,"children":2818},{"style":297},[2819],{"type":48,"value":2820},"getBaseLayer",{"type":42,"tag":88,"props":2822,"children":2823},{"style":334},[2824],{"type":48,"value":2414},{"type":42,"tag":88,"props":2826,"children":2827},{"style":178},[2828],{"type":48,"value":2419},{"type":42,"tag":88,"props":2830,"children":2831},{"style":95},[2832],{"type":48,"value":2833}," XRWebGLLayer",{"type":42,"tag":88,"props":2835,"children":2836},{"style":112},[2837],{"type":48,"value":231},{"type":42,"tag":88,"props":2839,"children":2840},{"class":90,"line":685},[2841,2846,2850,2854,2858,2862,2866,2871,2875,2879,2883],{"type":42,"tag":88,"props":2842,"children":2843},{"style":123},[2844],{"type":48,"value":2845},"      sessionRef",{"type":42,"tag":88,"props":2847,"children":2848},{"style":112},[2849],{"type":48,"value":157},{"type":42,"tag":88,"props":2851,"children":2852},{"style":123},[2853],{"type":48,"value":2668},{"type":42,"tag":88,"props":2855,"children":2856},{"style":112},[2857],{"type":48,"value":157},{"type":42,"tag":88,"props":2859,"children":2860},{"style":297},[2861],{"type":48,"value":978},{"type":42,"tag":88,"props":2863,"children":2864},{"style":334},[2865],{"type":48,"value":305},{"type":42,"tag":88,"props":2867,"children":2868},{"style":123},[2869],{"type":48,"value":2870},"timestamp",{"type":42,"tag":88,"props":2872,"children":2873},{"style":112},[2874],{"type":48,"value":196},{"type":42,"tag":88,"props":2876,"children":2877},{"style":123},[2878],{"type":48,"value":2599},{"type":42,"tag":88,"props":2880,"children":2881},{"style":334},[2882],{"type":48,"value":383},{"type":42,"tag":88,"props":2884,"children":2885},{"style":112},[2886],{"type":48,"value":231},{"type":42,"tag":88,"props":2888,"children":2889},{"class":90,"line":698},[2890,2894,2898,2902,2906,2910,2914,2918,2922,2926,2930,2934,2938],{"type":42,"tag":88,"props":2891,"children":2892},{"style":123},[2893],{"type":48,"value":2845},{"type":42,"tag":88,"props":2895,"children":2896},{"style":112},[2897],{"type":48,"value":157},{"type":42,"tag":88,"props":2899,"children":2900},{"style":123},[2901],{"type":48,"value":2668},{"type":42,"tag":88,"props":2903,"children":2904},{"style":112},[2905],{"type":48,"value":157},{"type":42,"tag":88,"props":2907,"children":2908},{"style":297},[2909],{"type":48,"value":1019},{"type":42,"tag":88,"props":2911,"children":2912},{"style":334},[2913],{"type":48,"value":305},{"type":42,"tag":88,"props":2915,"children":2916},{"style":123},[2917],{"type":48,"value":2870},{"type":42,"tag":88,"props":2919,"children":2920},{"style":112},[2921],{"type":48,"value":196},{"type":42,"tag":88,"props":2923,"children":2924},{"style":123},[2925],{"type":48,"value":2599},{"type":42,"tag":88,"props":2927,"children":2928},{"style":112},[2929],{"type":48,"value":196},{"type":42,"tag":88,"props":2931,"children":2932},{"style":123},[2933],{"type":48,"value":2787},{"type":42,"tag":88,"props":2935,"children":2936},{"style":334},[2937],{"type":48,"value":383},{"type":42,"tag":88,"props":2939,"children":2940},{"style":112},[2941],{"type":48,"value":231},{"type":42,"tag":88,"props":2943,"children":2944},{"class":90,"line":707},[2945],{"type":42,"tag":88,"props":2946,"children":2947},{"style":112},[2948],{"type":48,"value":2949},"    }\n",{"type":42,"tag":88,"props":2951,"children":2952},{"class":90,"line":715},[2953,2958,2963,2968,2972,2977],{"type":42,"tag":88,"props":2954,"children":2955},{"style":112},[2956],{"type":48,"value":2957},"  },",{"type":42,"tag":88,"props":2959,"children":2960},{"style":112},[2961],{"type":48,"value":2962}," -",{"type":42,"tag":88,"props":2964,"children":2965},{"style":596},[2966],{"type":48,"value":2967},"1000",{"type":42,"tag":88,"props":2969,"children":2970},{"style":334},[2971],{"type":48,"value":383},{"type":42,"tag":88,"props":2973,"children":2974},{"style":112},[2975],{"type":48,"value":2976},";",{"type":42,"tag":88,"props":2978,"children":2979},{"style":248},[2980],{"type":48,"value":2981}," \u002F\u002F negative priority = run before Three.js render\n",{"type":42,"tag":88,"props":2983,"children":2984},{"class":90,"line":777},[2985],{"type":42,"tag":88,"props":2986,"children":2987},{"style":112},[2988],{"type":48,"value":1111},{"type":42,"tag":51,"props":2990,"children":2991},{},[2992,2994,3000,3002,3008],{"type":48,"value":2993},"Critical R3F detail: set ",{"type":42,"tag":84,"props":2995,"children":2997},{"className":2996},[],[2998],{"type":48,"value":2999},"threeRenderer.autoClear = false",{"type":48,"value":3001}," so Three.js doesn't clear the framebuffer after CloudXR renders. Use ",{"type":42,"tag":84,"props":3003,"children":3005},{"className":3004},[],[3006],{"type":48,"value":3007},"bindGL()",{"type":48,"value":3009}," from helpers to save\u002Frestore WebGL state around CloudXR calls.",{"type":42,"tag":57,"props":3011,"children":3013},{"id":3012},"error-handling",[3014],{"type":48,"value":3015},"Error Handling",{"type":42,"tag":76,"props":3017,"children":3019},{"className":166,"code":3018,"language":168,"meta":81,"style":81},"\u002F\u002F connect() throws synchronously if it can't initiate\ntry {\n  session.connect();\n} catch (e) {\n  \u002F* handle *\u002F\n}\n\n\u002F\u002F sendTrackingStateToServer returns false if not connected\nif (!session.sendTrackingStateToServer(time, frame)) {\n  \u002F* not ready *\u002F\n}\n\n\u002F\u002F Streaming errors arrive via delegate\nonStreamStopped: (error?: StreamingError) => {\n  if (error) {\n    console.error(error.message);\n    if (error.code) console.error(`0x${error.code.toString(16).toUpperCase()}`);\n  }\n};\n",[3020],{"type":42,"tag":84,"props":3021,"children":3022},{"__ignoreMap":81},[3023,3031,3043,3066,3087,3095,3102,3109,3117,3164,3172,3179,3186,3194,3235,3259,3300,3418,3425],{"type":42,"tag":88,"props":3024,"children":3025},{"class":90,"line":91},[3026],{"type":42,"tag":88,"props":3027,"children":3028},{"style":248},[3029],{"type":48,"value":3030},"\u002F\u002F connect() throws synchronously if it can't initiate\n",{"type":42,"tag":88,"props":3032,"children":3033},{"class":90,"line":234},[3034,3039],{"type":42,"tag":88,"props":3035,"children":3036},{"style":178},[3037],{"type":48,"value":3038},"try",{"type":42,"tag":88,"props":3040,"children":3041},{"style":112},[3042],{"type":48,"value":327},{"type":42,"tag":88,"props":3044,"children":3045},{"class":90,"line":244},[3046,3050,3054,3058,3062],{"type":42,"tag":88,"props":3047,"children":3048},{"style":123},[3049],{"type":48,"value":969},{"type":42,"tag":88,"props":3051,"children":3052},{"style":112},[3053],{"type":48,"value":157},{"type":42,"tag":88,"props":3055,"children":3056},{"style":297},[3057],{"type":48,"value":894},{"type":42,"tag":88,"props":3059,"children":3060},{"style":334},[3061],{"type":48,"value":899},{"type":42,"tag":88,"props":3063,"children":3064},{"style":112},[3065],{"type":48,"value":231},{"type":42,"tag":88,"props":3067,"children":3068},{"class":90,"line":254},[3069,3073,3078,3083],{"type":42,"tag":88,"props":3070,"children":3071},{"style":112},[3072],{"type":48,"value":378},{"type":42,"tag":88,"props":3074,"children":3075},{"style":178},[3076],{"type":48,"value":3077}," catch",{"type":42,"tag":88,"props":3079,"children":3080},{"style":123},[3081],{"type":48,"value":3082}," (e) ",{"type":42,"tag":88,"props":3084,"children":3085},{"style":112},[3086],{"type":48,"value":2723},{"type":42,"tag":88,"props":3088,"children":3089},{"class":90,"line":330},[3090],{"type":42,"tag":88,"props":3091,"children":3092},{"style":248},[3093],{"type":48,"value":3094},"  \u002F* handle *\u002F\n",{"type":42,"tag":88,"props":3096,"children":3097},{"class":90,"line":30},[3098],{"type":42,"tag":88,"props":3099,"children":3100},{"style":112},[3101],{"type":48,"value":1111},{"type":42,"tag":88,"props":3103,"children":3104},{"class":90,"line":390},[3105],{"type":42,"tag":88,"props":3106,"children":3107},{"emptyLinePlaceholder":238},[3108],{"type":48,"value":241},{"type":42,"tag":88,"props":3110,"children":3111},{"class":90,"line":443},[3112],{"type":42,"tag":88,"props":3113,"children":3114},{"style":248},[3115],{"type":48,"value":3116},"\u002F\u002F sendTrackingStateToServer returns false if not connected\n",{"type":42,"tag":88,"props":3118,"children":3119},{"class":90,"line":501},[3120,3125,3129,3134,3138,3142,3146,3151,3155,3160],{"type":42,"tag":88,"props":3121,"children":3122},{"style":178},[3123],{"type":48,"value":3124},"if",{"type":42,"tag":88,"props":3126,"children":3127},{"style":123},[3128],{"type":48,"value":2654},{"type":42,"tag":88,"props":3130,"children":3131},{"style":112},[3132],{"type":48,"value":3133},"!",{"type":42,"tag":88,"props":3135,"children":3136},{"style":123},[3137],{"type":48,"value":885},{"type":42,"tag":88,"props":3139,"children":3140},{"style":112},[3141],{"type":48,"value":157},{"type":42,"tag":88,"props":3143,"children":3144},{"style":297},[3145],{"type":48,"value":978},{"type":42,"tag":88,"props":3147,"children":3148},{"style":123},[3149],{"type":48,"value":3150},"(time",{"type":42,"tag":88,"props":3152,"children":3153},{"style":112},[3154],{"type":48,"value":196},{"type":42,"tag":88,"props":3156,"children":3157},{"style":123},[3158],{"type":48,"value":3159}," frame)) ",{"type":42,"tag":88,"props":3161,"children":3162},{"style":112},[3163],{"type":48,"value":2723},{"type":42,"tag":88,"props":3165,"children":3166},{"class":90,"line":509},[3167],{"type":42,"tag":88,"props":3168,"children":3169},{"style":248},[3170],{"type":48,"value":3171},"  \u002F* not ready *\u002F\n",{"type":42,"tag":88,"props":3173,"children":3174},{"class":90,"line":518},[3175],{"type":42,"tag":88,"props":3176,"children":3177},{"style":112},[3178],{"type":48,"value":1111},{"type":42,"tag":88,"props":3180,"children":3181},{"class":90,"line":544},[3182],{"type":42,"tag":88,"props":3183,"children":3184},{"emptyLinePlaceholder":238},[3185],{"type":48,"value":241},{"type":42,"tag":88,"props":3187,"children":3188},{"class":90,"line":553},[3189],{"type":42,"tag":88,"props":3190,"children":3191},{"style":248},[3192],{"type":48,"value":3193},"\u002F\u002F Streaming errors arrive via delegate\n",{"type":42,"tag":88,"props":3195,"children":3196},{"class":90,"line":583},[3197,3201,3205,3209,3213,3218,3223,3227,3231],{"type":42,"tag":88,"props":3198,"children":3199},{"style":95},[3200],{"type":48,"value":1341},{"type":42,"tag":88,"props":3202,"children":3203},{"style":112},[3204],{"type":48,"value":342},{"type":42,"tag":88,"props":3206,"children":3207},{"style":112},[3208],{"type":48,"value":2654},{"type":42,"tag":88,"props":3210,"children":3211},{"style":790},[3212],{"type":48,"value":820},{"type":42,"tag":88,"props":3214,"children":3215},{"style":112},[3216],{"type":48,"value":3217},"?:",{"type":42,"tag":88,"props":3219,"children":3220},{"style":95},[3221],{"type":48,"value":3222}," StreamingError",{"type":42,"tag":88,"props":3224,"children":3225},{"style":112},[3226],{"type":48,"value":383},{"type":42,"tag":88,"props":3228,"children":3229},{"style":258},[3230],{"type":48,"value":735},{"type":42,"tag":88,"props":3232,"children":3233},{"style":112},[3234],{"type":48,"value":327},{"type":42,"tag":88,"props":3236,"children":3237},{"class":90,"line":606},[3238,3243,3247,3251,3255],{"type":42,"tag":88,"props":3239,"children":3240},{"style":178},[3241],{"type":48,"value":3242},"  if",{"type":42,"tag":88,"props":3244,"children":3245},{"style":334},[3246],{"type":48,"value":2654},{"type":42,"tag":88,"props":3248,"children":3249},{"style":123},[3250],{"type":48,"value":820},{"type":42,"tag":88,"props":3252,"children":3253},{"style":334},[3254],{"type":48,"value":2718},{"type":42,"tag":88,"props":3256,"children":3257},{"style":112},[3258],{"type":48,"value":2723},{"type":42,"tag":88,"props":3260,"children":3261},{"class":90,"line":629},[3262,3267,3271,3275,3279,3283,3287,3292,3296],{"type":42,"tag":88,"props":3263,"children":3264},{"style":123},[3265],{"type":48,"value":3266},"    console",{"type":42,"tag":88,"props":3268,"children":3269},{"style":112},[3270],{"type":48,"value":157},{"type":42,"tag":88,"props":3272,"children":3273},{"style":297},[3274],{"type":48,"value":820},{"type":42,"tag":88,"props":3276,"children":3277},{"style":334},[3278],{"type":48,"value":305},{"type":42,"tag":88,"props":3280,"children":3281},{"style":123},[3282],{"type":48,"value":820},{"type":42,"tag":88,"props":3284,"children":3285},{"style":112},[3286],{"type":48,"value":157},{"type":42,"tag":88,"props":3288,"children":3289},{"style":123},[3290],{"type":48,"value":3291},"message",{"type":42,"tag":88,"props":3293,"children":3294},{"style":334},[3295],{"type":48,"value":383},{"type":42,"tag":88,"props":3297,"children":3298},{"style":112},[3299],{"type":48,"value":231},{"type":42,"tag":88,"props":3301,"children":3302},{"class":90,"line":26},[3303,3307,3311,3315,3319,3323,3327,3332,3336,3340,3344,3349,3354,3359,3363,3367,3371,3375,3380,3384,3388,3392,3396,3401,3405,3410,3414],{"type":42,"tag":88,"props":3304,"children":3305},{"style":178},[3306],{"type":48,"value":2649},{"type":42,"tag":88,"props":3308,"children":3309},{"style":334},[3310],{"type":48,"value":2654},{"type":42,"tag":88,"props":3312,"children":3313},{"style":123},[3314],{"type":48,"value":820},{"type":42,"tag":88,"props":3316,"children":3317},{"style":112},[3318],{"type":48,"value":157},{"type":42,"tag":88,"props":3320,"children":3321},{"style":123},[3322],{"type":48,"value":84},{"type":42,"tag":88,"props":3324,"children":3325},{"style":334},[3326],{"type":48,"value":2718},{"type":42,"tag":88,"props":3328,"children":3329},{"style":123},[3330],{"type":48,"value":3331},"console",{"type":42,"tag":88,"props":3333,"children":3334},{"style":112},[3335],{"type":48,"value":157},{"type":42,"tag":88,"props":3337,"children":3338},{"style":297},[3339],{"type":48,"value":820},{"type":42,"tag":88,"props":3341,"children":3342},{"style":334},[3343],{"type":48,"value":305},{"type":42,"tag":88,"props":3345,"children":3346},{"style":112},[3347],{"type":48,"value":3348},"`",{"type":42,"tag":88,"props":3350,"children":3351},{"style":101},[3352],{"type":48,"value":3353},"0x",{"type":42,"tag":88,"props":3355,"children":3356},{"style":112},[3357],{"type":48,"value":3358},"${",{"type":42,"tag":88,"props":3360,"children":3361},{"style":123},[3362],{"type":48,"value":820},{"type":42,"tag":88,"props":3364,"children":3365},{"style":112},[3366],{"type":48,"value":157},{"type":42,"tag":88,"props":3368,"children":3369},{"style":123},[3370],{"type":48,"value":84},{"type":42,"tag":88,"props":3372,"children":3373},{"style":112},[3374],{"type":48,"value":157},{"type":42,"tag":88,"props":3376,"children":3377},{"style":297},[3378],{"type":48,"value":3379},"toString",{"type":42,"tag":88,"props":3381,"children":3382},{"style":123},[3383],{"type":48,"value":305},{"type":42,"tag":88,"props":3385,"children":3386},{"style":596},[3387],{"type":48,"value":1981},{"type":42,"tag":88,"props":3389,"children":3390},{"style":123},[3391],{"type":48,"value":383},{"type":42,"tag":88,"props":3393,"children":3394},{"style":112},[3395],{"type":48,"value":157},{"type":42,"tag":88,"props":3397,"children":3398},{"style":297},[3399],{"type":48,"value":3400},"toUpperCase",{"type":42,"tag":88,"props":3402,"children":3403},{"style":123},[3404],{"type":48,"value":899},{"type":42,"tag":88,"props":3406,"children":3407},{"style":112},[3408],{"type":48,"value":3409},"}`",{"type":42,"tag":88,"props":3411,"children":3412},{"style":334},[3413],{"type":48,"value":383},{"type":42,"tag":88,"props":3415,"children":3416},{"style":112},[3417],{"type":48,"value":231},{"type":42,"tag":88,"props":3419,"children":3420},{"class":90,"line":663},[3421],{"type":42,"tag":88,"props":3422,"children":3423},{"style":112},[3424],{"type":48,"value":847},{"type":42,"tag":88,"props":3426,"children":3427},{"class":90,"line":685},[3428],{"type":42,"tag":88,"props":3429,"children":3430},{"style":112},[3431],{"type":48,"value":3432},"};\n",{"type":42,"tag":57,"props":3434,"children":3436},{"id":3435},"message-channels-custom-app-data",[3437],{"type":48,"value":3438},"Message Channels (Custom App Data)",{"type":42,"tag":76,"props":3440,"children":3442},{"className":166,"code":3441,"language":168,"meta":81,"style":81},"const channels = session.availableMessageChannels;\nfor (const ch of channels) {\n  if (ch.status === MessageChannelStatus.Ready) {\n    ch.sendServerMessage(new Uint8Array([...]));\n    const msg = await ch.receiveMessage();\n  }\n}\n",[3443],{"type":42,"tag":84,"props":3444,"children":3445},{"__ignoreMap":81},[3446,3479,3514,3565,3614,3656,3663],{"type":42,"tag":88,"props":3447,"children":3448},{"class":90,"line":91},[3449,3453,3458,3462,3467,3471,3475],{"type":42,"tag":88,"props":3450,"children":3451},{"style":258},[3452],{"type":48,"value":261},{"type":42,"tag":88,"props":3454,"children":3455},{"style":123},[3456],{"type":48,"value":3457}," channels ",{"type":42,"tag":88,"props":3459,"children":3460},{"style":112},[3461],{"type":48,"value":271},{"type":42,"tag":88,"props":3463,"children":3464},{"style":123},[3465],{"type":48,"value":3466}," session",{"type":42,"tag":88,"props":3468,"children":3469},{"style":112},[3470],{"type":48,"value":157},{"type":42,"tag":88,"props":3472,"children":3473},{"style":123},[3474],{"type":48,"value":1294},{"type":42,"tag":88,"props":3476,"children":3477},{"style":112},[3478],{"type":48,"value":231},{"type":42,"tag":88,"props":3480,"children":3481},{"class":90,"line":234},[3482,3487,3491,3495,3500,3505,3510],{"type":42,"tag":88,"props":3483,"children":3484},{"style":178},[3485],{"type":48,"value":3486},"for",{"type":42,"tag":88,"props":3488,"children":3489},{"style":123},[3490],{"type":48,"value":2654},{"type":42,"tag":88,"props":3492,"children":3493},{"style":258},[3494],{"type":48,"value":261},{"type":42,"tag":88,"props":3496,"children":3497},{"style":123},[3498],{"type":48,"value":3499}," ch ",{"type":42,"tag":88,"props":3501,"children":3502},{"style":112},[3503],{"type":48,"value":3504},"of",{"type":42,"tag":88,"props":3506,"children":3507},{"style":123},[3508],{"type":48,"value":3509}," channels) ",{"type":42,"tag":88,"props":3511,"children":3512},{"style":112},[3513],{"type":48,"value":2723},{"type":42,"tag":88,"props":3515,"children":3516},{"class":90,"line":244},[3517,3521,3525,3530,3534,3539,3543,3548,3552,3557,3561],{"type":42,"tag":88,"props":3518,"children":3519},{"style":178},[3520],{"type":48,"value":3242},{"type":42,"tag":88,"props":3522,"children":3523},{"style":334},[3524],{"type":48,"value":2654},{"type":42,"tag":88,"props":3526,"children":3527},{"style":123},[3528],{"type":48,"value":3529},"ch",{"type":42,"tag":88,"props":3531,"children":3532},{"style":112},[3533],{"type":48,"value":157},{"type":42,"tag":88,"props":3535,"children":3536},{"style":123},[3537],{"type":48,"value":3538},"status",{"type":42,"tag":88,"props":3540,"children":3541},{"style":112},[3542],{"type":48,"value":2682},{"type":42,"tag":88,"props":3544,"children":3545},{"style":123},[3546],{"type":48,"value":3547}," MessageChannelStatus",{"type":42,"tag":88,"props":3549,"children":3550},{"style":112},[3551],{"type":48,"value":157},{"type":42,"tag":88,"props":3553,"children":3554},{"style":123},[3555],{"type":48,"value":3556},"Ready",{"type":42,"tag":88,"props":3558,"children":3559},{"style":334},[3560],{"type":48,"value":2718},{"type":42,"tag":88,"props":3562,"children":3563},{"style":112},[3564],{"type":48,"value":2723},{"type":42,"tag":88,"props":3566,"children":3567},{"class":90,"line":254},[3568,3573,3577,3581,3585,3590,3595,3600,3605,3610],{"type":42,"tag":88,"props":3569,"children":3570},{"style":123},[3571],{"type":48,"value":3572},"    ch",{"type":42,"tag":88,"props":3574,"children":3575},{"style":112},[3576],{"type":48,"value":157},{"type":42,"tag":88,"props":3578,"children":3579},{"style":297},[3580],{"type":48,"value":1408},{"type":42,"tag":88,"props":3582,"children":3583},{"style":334},[3584],{"type":48,"value":305},{"type":42,"tag":88,"props":3586,"children":3587},{"style":112},[3588],{"type":48,"value":3589},"new",{"type":42,"tag":88,"props":3591,"children":3592},{"style":297},[3593],{"type":48,"value":3594}," Uint8Array",{"type":42,"tag":88,"props":3596,"children":3597},{"style":334},[3598],{"type":48,"value":3599},"([",{"type":42,"tag":88,"props":3601,"children":3602},{"style":112},[3603],{"type":48,"value":3604},"...",{"type":42,"tag":88,"props":3606,"children":3607},{"style":334},[3608],{"type":48,"value":3609},"]))",{"type":42,"tag":88,"props":3611,"children":3612},{"style":112},[3613],{"type":48,"value":231},{"type":42,"tag":88,"props":3615,"children":3616},{"class":90,"line":330},[3617,3621,3626,3630,3634,3639,3643,3648,3652],{"type":42,"tag":88,"props":3618,"children":3619},{"style":258},[3620],{"type":48,"value":2594},{"type":42,"tag":88,"props":3622,"children":3623},{"style":123},[3624],{"type":48,"value":3625}," msg",{"type":42,"tag":88,"props":3627,"children":3628},{"style":112},[3629],{"type":48,"value":2384},{"type":42,"tag":88,"props":3631,"children":3632},{"style":178},[3633],{"type":48,"value":276},{"type":42,"tag":88,"props":3635,"children":3636},{"style":123},[3637],{"type":48,"value":3638}," ch",{"type":42,"tag":88,"props":3640,"children":3641},{"style":112},[3642],{"type":48,"value":157},{"type":42,"tag":88,"props":3644,"children":3645},{"style":297},[3646],{"type":48,"value":3647},"receiveMessage",{"type":42,"tag":88,"props":3649,"children":3650},{"style":334},[3651],{"type":48,"value":899},{"type":42,"tag":88,"props":3653,"children":3654},{"style":112},[3655],{"type":48,"value":231},{"type":42,"tag":88,"props":3657,"children":3658},{"class":90,"line":30},[3659],{"type":42,"tag":88,"props":3660,"children":3661},{"style":112},[3662],{"type":48,"value":847},{"type":42,"tag":88,"props":3664,"children":3665},{"class":90,"line":390},[3666],{"type":42,"tag":88,"props":3667,"children":3668},{"style":112},[3669],{"type":48,"value":1111},{"type":42,"tag":57,"props":3671,"children":3673},{"id":3672},"proxy-https-setup",[3674],{"type":48,"value":3675},"Proxy \u002F HTTPS Setup",{"type":42,"tag":51,"props":3677,"children":3678},{},[3679],{"type":48,"value":3680},"For headsets requiring HTTPS (Pico 4 Ultra) or production:",{"type":42,"tag":76,"props":3682,"children":3684},{"className":166,"code":3683,"language":168,"meta":81,"style":81},"createSession({\n  serverAddress: 'proxy.example.com',\n  serverPort: 443,\n  useSecureConnection: true,\n  signalingResourcePath: '\u002F192.168.1.100', \u002F\u002F target server behind proxy\n  \u002F\u002F ...\n});\n",[3685],{"type":42,"tag":84,"props":3686,"children":3687},{"__ignoreMap":81},[3688,3703,3732,3753,3774,3808,3816],{"type":42,"tag":88,"props":3689,"children":3690},{"class":90,"line":91},[3691,3695,3699],{"type":42,"tag":88,"props":3692,"children":3693},{"style":297},[3694],{"type":48,"value":2053},{"type":42,"tag":88,"props":3696,"children":3697},{"style":123},[3698],{"type":48,"value":305},{"type":42,"tag":88,"props":3700,"children":3701},{"style":112},[3702],{"type":48,"value":2723},{"type":42,"tag":88,"props":3704,"children":3705},{"class":90,"line":234},[3706,3711,3715,3719,3724,3728],{"type":42,"tag":88,"props":3707,"children":3708},{"style":334},[3709],{"type":48,"value":3710},"  serverAddress",{"type":42,"tag":88,"props":3712,"children":3713},{"style":112},[3714],{"type":48,"value":342},{"type":42,"tag":88,"props":3716,"children":3717},{"style":112},[3718],{"type":48,"value":216},{"type":42,"tag":88,"props":3720,"children":3721},{"style":101},[3722],{"type":48,"value":3723},"proxy.example.com",{"type":42,"tag":88,"props":3725,"children":3726},{"style":112},[3727],{"type":48,"value":226},{"type":42,"tag":88,"props":3729,"children":3730},{"style":112},[3731],{"type":48,"value":370},{"type":42,"tag":88,"props":3733,"children":3734},{"class":90,"line":244},[3735,3740,3744,3749],{"type":42,"tag":88,"props":3736,"children":3737},{"style":334},[3738],{"type":48,"value":3739},"  serverPort",{"type":42,"tag":88,"props":3741,"children":3742},{"style":112},[3743],{"type":48,"value":342},{"type":42,"tag":88,"props":3745,"children":3746},{"style":596},[3747],{"type":48,"value":3748}," 443",{"type":42,"tag":88,"props":3750,"children":3751},{"style":112},[3752],{"type":48,"value":370},{"type":42,"tag":88,"props":3754,"children":3755},{"class":90,"line":254},[3756,3761,3765,3770],{"type":42,"tag":88,"props":3757,"children":3758},{"style":334},[3759],{"type":48,"value":3760},"  useSecureConnection",{"type":42,"tag":88,"props":3762,"children":3763},{"style":112},[3764],{"type":48,"value":342},{"type":42,"tag":88,"props":3766,"children":3767},{"style":619},[3768],{"type":48,"value":3769}," true",{"type":42,"tag":88,"props":3771,"children":3772},{"style":112},[3773],{"type":48,"value":370},{"type":42,"tag":88,"props":3775,"children":3776},{"class":90,"line":330},[3777,3782,3786,3790,3795,3799,3803],{"type":42,"tag":88,"props":3778,"children":3779},{"style":334},[3780],{"type":48,"value":3781},"  signalingResourcePath",{"type":42,"tag":88,"props":3783,"children":3784},{"style":112},[3785],{"type":48,"value":342},{"type":42,"tag":88,"props":3787,"children":3788},{"style":112},[3789],{"type":48,"value":216},{"type":42,"tag":88,"props":3791,"children":3792},{"style":101},[3793],{"type":48,"value":3794},"\u002F192.168.1.100",{"type":42,"tag":88,"props":3796,"children":3797},{"style":112},[3798],{"type":48,"value":226},{"type":42,"tag":88,"props":3800,"children":3801},{"style":112},[3802],{"type":48,"value":196},{"type":42,"tag":88,"props":3804,"children":3805},{"style":248},[3806],{"type":48,"value":3807}," \u002F\u002F target server behind proxy\n",{"type":42,"tag":88,"props":3809,"children":3810},{"class":90,"line":30},[3811],{"type":42,"tag":88,"props":3812,"children":3813},{"style":248},[3814],{"type":48,"value":3815},"  \u002F\u002F ...\n",{"type":42,"tag":88,"props":3817,"children":3818},{"class":90,"line":390},[3819,3823,3827],{"type":42,"tag":88,"props":3820,"children":3821},{"style":112},[3822],{"type":48,"value":378},{"type":42,"tag":88,"props":3824,"children":3825},{"style":123},[3826],{"type":48,"value":383},{"type":42,"tag":88,"props":3828,"children":3829},{"style":112},[3830],{"type":48,"value":231},{"type":42,"tag":51,"props":3832,"children":3833},{},[3834,3835,3842],{"type":48,"value":2070},{"type":42,"tag":2072,"props":3836,"children":3839},{"href":3837,"rel":3838},"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fcloudxr-js-samples\u002Ftree\u002Fmain\u002Fproxy",[2076],[3840],{"type":48,"value":3841},"WSS proxy sample",{"type":48,"value":3843}," for a Docker-based HAProxy setup.",{"type":42,"tag":57,"props":3845,"children":3847},{"id":3846},"desktop-development-with-iwer",[3848],{"type":48,"value":3849},"Desktop Development with IWER",{"type":42,"tag":51,"props":3851,"children":3852},{},[3853,3855,3860,3862,3868,3870,3876,3878,3883,3885,3891],{"type":48,"value":3854},"On desktop Chrome (no headset), both samples auto-load ",{"type":42,"tag":1977,"props":3856,"children":3857},{},[3858],{"type":48,"value":3859},"IWER",{"type":48,"value":3861}," (Immersive Web Emulation Runtime) via ",{"type":42,"tag":84,"props":3863,"children":3865},{"className":3864},[],[3866],{"type":48,"value":3867},"loadIWERIfNeeded()",{"type":48,"value":3869},". IWER emulates a Meta Quest 3 so ",{"type":42,"tag":84,"props":3871,"children":3873},{"className":3872},[],[3874],{"type":48,"value":3875},"requestSession('immersive-vr')",{"type":48,"value":3877}," succeeds and ",{"type":42,"tag":84,"props":3879,"children":3881},{"className":3880},[],[3882],{"type":48,"value":1280},{"type":48,"value":3884}," sends valid poses. The device is exposed as ",{"type":42,"tag":84,"props":3886,"children":3888},{"className":3887},[],[3889],{"type":48,"value":3890},"window.xrDevice",{"type":48,"value":3892}," for programmatic access.",{"type":42,"tag":51,"props":3894,"children":3895},{},[3896,3898,3904,3906,3911,3913,3919,3921,3927,3929,3934,3936,3941],{"type":48,"value":3897},"IWER's ",{"type":42,"tag":84,"props":3899,"children":3901},{"className":3900},[],[3902],{"type":48,"value":3903},"XRDevice",{"type":48,"value":3905}," API supports ",{"type":42,"tag":1977,"props":3907,"children":3908},{},[3909],{"type":48,"value":3910},"programmatic control",{"type":48,"value":3912}," — set ",{"type":42,"tag":84,"props":3914,"children":3916},{"className":3915},[],[3917],{"type":48,"value":3918},"window.xrDevice.controlMode = 'programmatic'",{"type":48,"value":3920}," to take over from DevUI, then set headset\u002Fcontroller position, orientation, button values, and thumbstick axes from code. Call ",{"type":42,"tag":84,"props":3922,"children":3924},{"className":3923},[],[3925],{"type":48,"value":3926},"notifyStateChange()",{"type":48,"value":3928}," after changes to keep DevUI in sync. See ",{"type":42,"tag":2072,"props":3930,"children":3932},{"href":3931},"agent-api-reference.md",[3933],{"type":48,"value":3931},{"type":48,"value":3935}," for the full IWER XRDevice API and ",{"type":42,"tag":2072,"props":3937,"children":3939},{"href":3938},"AGENTS.md",[3940],{"type":48,"value":3938},{"type":48,"value":3942}," for operational rules on IWER automation.",{"type":42,"tag":57,"props":3944,"children":3946},{"id":3945},"samples-overview",[3947],{"type":48,"value":3948},"Samples Overview",{"type":42,"tag":1187,"props":3950,"children":3951},{},[3952,3973],{"type":42,"tag":1191,"props":3953,"children":3954},{},[3955],{"type":42,"tag":1195,"props":3956,"children":3957},{},[3958,3963,3968],{"type":42,"tag":1199,"props":3959,"children":3960},{},[3961],{"type":48,"value":3962},"Sample",{"type":42,"tag":1199,"props":3964,"children":3965},{},[3966],{"type":48,"value":3967},"Stack",{"type":42,"tag":1199,"props":3969,"children":3970},{},[3971],{"type":48,"value":3972},"Location",{"type":42,"tag":1210,"props":3974,"children":3975},{},[3976,3998,4020],{"type":42,"tag":1195,"props":3977,"children":3978},{},[3979,3984,3989],{"type":42,"tag":1217,"props":3980,"children":3981},{},[3982],{"type":48,"value":3983},"Simple WebGL",{"type":42,"tag":1217,"props":3985,"children":3986},{},[3987],{"type":48,"value":3988},"Vanilla WebGL2 + WebXR",{"type":42,"tag":1217,"props":3990,"children":3991},{},[3992],{"type":42,"tag":2072,"props":3993,"children":3995},{"href":2074,"rel":3994},[2076],[3996],{"type":48,"value":3997},"simple\u002F",{"type":42,"tag":1195,"props":3999,"children":4000},{},[4001,4006,4011],{"type":42,"tag":1217,"props":4002,"children":4003},{},[4004],{"type":48,"value":4005},"React",{"type":42,"tag":1217,"props":4007,"children":4008},{},[4009],{"type":48,"value":4010},"R3F + @react-three\u002Fxr + uikit",{"type":42,"tag":1217,"props":4012,"children":4013},{},[4014],{"type":42,"tag":2072,"props":4015,"children":4017},{"href":2139,"rel":4016},[2076],[4018],{"type":48,"value":4019},"react\u002F",{"type":42,"tag":1195,"props":4021,"children":4022},{},[4023,4028,4033],{"type":42,"tag":1217,"props":4024,"children":4025},{},[4026],{"type":48,"value":4027},"WSS Proxy",{"type":42,"tag":1217,"props":4029,"children":4030},{},[4031],{"type":48,"value":4032},"Docker + HAProxy",{"type":42,"tag":1217,"props":4034,"children":4035},{},[4036],{"type":42,"tag":2072,"props":4037,"children":4039},{"href":3837,"rel":4038},[2076],[4040],{"type":48,"value":4041},"proxy\u002F",{"type":42,"tag":51,"props":4043,"children":4044},{},[4045,4047,4053,4055,4062],{"type":48,"value":4046},"Run any sample: ",{"type":42,"tag":84,"props":4048,"children":4050},{"className":4049},[],[4051],{"type":48,"value":4052},"npm install && npm run dev",{"type":48,"value":4054}," in its directory. For Isaac Teleop, see ",{"type":42,"tag":2072,"props":4056,"children":4059},{"href":4057,"rel":4058},"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FIsaacTeleop",[2076],[4060],{"type":48,"value":4061},"github.com\u002FNVIDIA\u002FIsaacTeleop",{"type":48,"value":157},{"type":42,"tag":57,"props":4064,"children":4066},{"id":4065},"common-pitfalls",[4067],{"type":48,"value":4068},"Common Pitfalls",{"type":42,"tag":4070,"props":4071,"children":4072},"ol",{},[4073,4097,4115,4125,4147],{"type":42,"tag":1966,"props":4074,"children":4075},{},[4076,4081,4083,4088,4090,4095],{"type":42,"tag":1977,"props":4077,"children":4078},{},[4079],{"type":48,"value":4080},"Resolution validation fails",{"type":48,"value":4082}," — ",{"type":42,"tag":84,"props":4084,"children":4086},{"className":4085},[],[4087],{"type":48,"value":1578},{"type":48,"value":4089}," must be multiple of 16, ",{"type":42,"tag":84,"props":4091,"children":4093},{"className":4092},[],[4094],{"type":48,"value":1603},{"type":48,"value":4096}," multiple of 64, both ≥ 256",{"type":42,"tag":1966,"props":4098,"children":4099},{},[4100,4105,4107,4113],{"type":42,"tag":1977,"props":4101,"children":4102},{},[4103],{"type":48,"value":4104},"Black screen in R3F",{"type":48,"value":4106}," — forgot ",{"type":42,"tag":84,"props":4108,"children":4110},{"className":4109},[],[4111],{"type":48,"value":4112},"autoClear = false",{"type":48,"value":4114}," or missing WebGL state save\u002Frestore",{"type":42,"tag":1966,"props":4116,"children":4117},{},[4118,4123],{"type":42,"tag":1977,"props":4119,"children":4120},{},[4121],{"type":48,"value":4122},"Connection fails on headset",{"type":48,"value":4124}," — check HTTPS requirement (Pico needs WSS), firewall ports: 49100 (WS signaling), 47998 (WebRTC media), 48322 (WSS signaling TLS proxy), or 443 with external proxy",{"type":42,"tag":1966,"props":4126,"children":4127},{},[4128,4133,4135,4140,4142],{"type":42,"tag":1977,"props":4129,"children":4130},{},[4131],{"type":48,"value":4132},"Choppy tracking",{"type":48,"value":4134}," — enable ",{"type":42,"tag":84,"props":4136,"children":4138},{"className":4137},[],[4139],{"type":48,"value":1779},{"type":48,"value":4141},", tune ",{"type":42,"tag":84,"props":4143,"children":4145},{"className":4144},[],[4146],{"type":48,"value":1801},{"type":42,"tag":1966,"props":4148,"children":4149},{},[4150,4155,4157,4162],{"type":42,"tag":1977,"props":4151,"children":4152},{},[4153],{"type":48,"value":4154},"Shared WebGL context corruption",{"type":48,"value":4156}," — always use ",{"type":42,"tag":84,"props":4158,"children":4160},{"className":4159},[],[4161],{"type":48,"value":1348},{"type":48,"value":4163}," delegates",{"type":42,"tag":57,"props":4165,"children":4167},{"id":4166},"additional-resources",[4168],{"type":48,"value":4169},"Additional Resources",{"type":42,"tag":1962,"props":4171,"children":4172},{},[4173,4182,4194,4206,4218],{"type":42,"tag":1966,"props":4174,"children":4175},{},[4176,4180],{"type":42,"tag":2072,"props":4177,"children":4178},{"href":3931},[4179],{"type":48,"value":3931},{"type":48,"value":4181}," — detailed types, enums, all SessionOptions fields",{"type":42,"tag":1966,"props":4183,"children":4184},{},[4185,4192],{"type":42,"tag":2072,"props":4186,"children":4189},{"href":4187,"rel":4188},"https:\u002F\u002Fdocs.nvidia.com\u002Fcloudxr-sdk\u002Fapis\u002Fcloudxr-js\u002F",[2076],[4190],{"type":48,"value":4191},"CloudXR.js API Reference",{"type":48,"value":4193}," — full generated API docs",{"type":42,"tag":1966,"props":4195,"children":4196},{},[4197,4204],{"type":42,"tag":2072,"props":4198,"children":4201},{"href":4199,"rel":4200},"https:\u002F\u002Fdocs.nvidia.com\u002Fcloudxr-sdk\u002Flatest\u002Fusr_guide\u002Fcloudxr_js\u002Findex.html",[2076],[4202],{"type":48,"value":4203},"CloudXR.js User Guide",{"type":48,"value":4205}," — getting started, session API, client setup, performance, troubleshooting",{"type":42,"tag":1966,"props":4207,"children":4208},{},[4209,4216],{"type":42,"tag":2072,"props":4210,"children":4213},{"href":4211,"rel":4212},"https:\u002F\u002Fdocs.nvidia.com\u002Fcloudxr-sdk\u002Flatest\u002Findex.html",[2076],[4214],{"type":48,"value":4215},"CloudXR SDK Documentation",{"type":48,"value":4217}," — runtime, networking, deployment",{"type":42,"tag":1966,"props":4219,"children":4220},{},[4221,4227],{"type":42,"tag":2072,"props":4222,"children":4224},{"href":27,"rel":4223},[2076],[4225],{"type":48,"value":4226},"CloudXR.js Samples on GitHub",{"type":48,"value":4228}," — all sample source code",{"type":42,"tag":4230,"props":4231,"children":4232},"style",{},[4233],{"type":48,"value":4234},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":4236,"total":91},[4237],{"slug":4,"name":4,"fn":5,"description":6,"org":4238,"tags":4239,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4240,4241,4242,4243,4244],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":23,"slug":24,"type":15},{"items":4246,"total":4405},[4247,4265,4283,4294,4306,4320,4333,4347,4360,4371,4385,4394],{"slug":4248,"name":4248,"fn":4249,"description":4250,"org":4251,"tags":4252,"stars":4262,"repoUrl":4263,"updatedAt":4264},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4253,4256,4259],{"name":4254,"slug":4255,"type":15},"Documentation","documentation",{"name":4257,"slug":4258,"type":15},"MCP","mcp",{"name":4260,"slug":4261,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":4266,"name":4266,"fn":4267,"description":4268,"org":4269,"tags":4270,"stars":4280,"repoUrl":4281,"updatedAt":4282},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4271,4274,4277],{"name":4272,"slug":4273,"type":15},"Containers","containers",{"name":4275,"slug":4276,"type":15},"Deployment","deployment",{"name":4278,"slug":4279,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":4284,"name":4284,"fn":4285,"description":4286,"org":4287,"tags":4288,"stars":4280,"repoUrl":4281,"updatedAt":4293},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4289,4292],{"name":4290,"slug":4291,"type":15},"CI\u002FCD","ci-cd",{"name":4275,"slug":4276,"type":15},"2026-07-14T05:25:59.97109",{"slug":4295,"name":4295,"fn":4296,"description":4297,"org":4298,"tags":4299,"stars":4280,"repoUrl":4281,"updatedAt":4305},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4300,4301,4302],{"name":4290,"slug":4291,"type":15},{"name":4275,"slug":4276,"type":15},{"name":4303,"slug":4304,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":4307,"name":4307,"fn":4308,"description":4309,"org":4310,"tags":4311,"stars":4280,"repoUrl":4281,"updatedAt":4319},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4312,4315,4316],{"name":4313,"slug":4314,"type":15},"Debugging","debugging",{"name":4303,"slug":4304,"type":15},{"name":4317,"slug":4318,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":4321,"name":4321,"fn":4322,"description":4323,"org":4324,"tags":4325,"stars":4280,"repoUrl":4281,"updatedAt":4332},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4326,4329],{"name":4327,"slug":4328,"type":15},"Best Practices","best-practices",{"name":4330,"slug":4331,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":4334,"name":4334,"fn":4335,"description":4336,"org":4337,"tags":4338,"stars":4280,"repoUrl":4281,"updatedAt":4346},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4339,4342,4345],{"name":4340,"slug":4341,"type":15},"Machine Learning","machine-learning",{"name":4343,"slug":4344,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":4348,"name":4348,"fn":4349,"description":4350,"org":4351,"tags":4352,"stars":4280,"repoUrl":4281,"updatedAt":4359},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4353,4356],{"name":4354,"slug":4355,"type":15},"QA","qa",{"name":4357,"slug":4358,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":4361,"name":4361,"fn":4362,"description":4363,"org":4364,"tags":4365,"stars":4280,"repoUrl":4281,"updatedAt":4370},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4366,4367],{"name":4275,"slug":4276,"type":15},{"name":4368,"slug":4369,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":4372,"name":4372,"fn":4373,"description":4374,"org":4375,"tags":4376,"stars":4280,"repoUrl":4281,"updatedAt":4384},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4377,4380,4381],{"name":4378,"slug":4379,"type":15},"Code Review","code-review",{"name":4303,"slug":4304,"type":15},{"name":4382,"slug":4383,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":4386,"name":4386,"fn":4387,"description":4388,"org":4389,"tags":4390,"stars":4280,"repoUrl":4281,"updatedAt":4393},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4391,4392],{"name":4354,"slug":4355,"type":15},{"name":4357,"slug":4358,"type":15},"2026-07-14T05:25:54.928983",{"slug":4395,"name":4395,"fn":4396,"description":4397,"org":4398,"tags":4399,"stars":4280,"repoUrl":4281,"updatedAt":4404},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4400,4403],{"name":4401,"slug":4402,"type":15},"Automation","automation",{"name":4290,"slug":4291,"type":15},"2026-07-30T05:29:03.275638",496]