CloudXR.js 6.2.0 right-eye projection offset on Quest 3 and Quest Pro, while Quest 2 is correct

Hello,

We are seeing a consistent and reproducible stereo projection issue when using CloudXR.js.

## Symptom

- Meta Quest 2: both eyes are aligned correctly.

- Meta Quest 3 / Quest Pro: both devices behave almost identically. When facing straight ahead, the left eye looks forward, while the right-eye view appears to be looking approximately 30–45 degrees to the left.

- The offset remains visible while the headset is stationary; it is not limited to head motion.

- A standalone WebXR stereo test that does not use CloudXR renders correctly on Quest 3.

## Environment

Server:

- OS: Windows Server 2022, build 10.0.20348

- GPU: NVIDIA RTX 6000 Ada Generation

- NVIDIA driver: 573.96

- Graphics API: D3D11

- CloudXR Runtime: 6.2.1

- Runtime profile: auto-webrtc

- CloudXR.js SDK: 6.2.0

- Stream Manager package: 6.1.0

> All CloudXR 6 components listed above were the latest publicly available versions at the time of testing

- OpenXR test application: Khronos hello_xr, OpenXR SDK 1.1.62

- OpenXR loader: dynamic loader packaged with hello_xr

Clients:

- Meta Quest 2 / Quest 3 / Quest Pro, all running the latest system and browser versions available at the time of testing

- IPD was set to 64 mm on all devices

Streaming:

- Per-eye resolution: 2048 × 1792

- Stereo side-by-side stream

- Codecs tested: `[add the codecs actually tested: H.264 / H.265 / AV1]`

- WebRTC routed through a TURN relay; Quest 2 is correct under the same network conditions

## Reproduction Steps

1. Start the latest CloudXR 6 Runtime with the auto-webrtc profile.

2. Connect using the latest NVIDIA CloudXR.js Simple WebGL sample.

3. Start an OpenXR server application. The NVIDIA LÖVR sample, Khronos hello_xr, and an OpenXR-compliant Unity project all reproduce the issue.

4. Connect with Quest 2: stereo alignment is correct.

5. Keep the same server, application, resolution, and streaming settings, then connect with Quest 3 or Quest Pro.

6. On Quest 3 or Quest Pro, the left eye looks forward, while the right-eye view appears to be looking approximately 30–45 degrees to the left.

## Tests Already Performed

- Pure WebXR stereo tests are correct on Quest 3, which rules out basic WebXR stereo rendering and headset optical calibration.

- The NVIDIA LÖVR sample, Khronos hello_xr, and an OpenXR-compliant Unity project all reproduce the issue, so it is not application- or engine-specific.

- Multiple codecs and rendering settings produce the same result.

- On Quest 3, the issue reproduces both with and without XR_KHR_composition_layer_depth submission.

- Quest 2 renders correctly in both depth-on and depth-off tests.

- Reprojection grids tested: default, 2×2, 8×8, and 32×32. No improvement.

- Pose smoothing disabled and posePredictionFactor set to 0. No improvement.

- We tried adjusting the various parameters exposed by the CloudXR.js WebClient, but none produced the expected result and the right-eye offset remained.

- The offset remains while stationary, making pose prediction or motion timing unlikely as the root cause.

- OpenXR consistently reports viewCount=2. Per-eye resolution, pose, orientation, and IPD data appear reasonable.

- The OpenXR session reaches FOCUSED without XR_ERROR or D3D11 errors.

## OpenXR FOV Comparison

Quest 2:

- Left: (-0.788016, 0.824668, 0.879646, -0.916298)

- Right: (-0.824668, 0.788016, 0.879646, -0.916298)

Quest 3:

- Left: (-0.989602, 0.733038, 0.806342, -1.007928)

- Right: (-0.733038, 0.989602, 0.806342, -1.007928)

Quest 2 has a nearly centered horizontal projection. Quest 3 has a substantially larger per-eye asymmetric horizontal projection center. This correlates with Quest 2 rendering correctly while Quest 3 and Quest Pro exhibit the issue.

Our current hypothesis is that either the CloudXR Runtime metadata path or the CloudXR.js per-eye projection/reprojection path may mishandle strongly asymmetric FOVs, for example by:

- reusing one projection or texture transform for both eyes;

- symmetrizing the per-eye FOV;

- ignoring the horizontal projection-matrix offset;

- applying an incorrect projection center to the right-eye reprojection mesh or decoded texture.

This is only a hypothesis based on the A/B results. We cannot verify it because the relevant CloudXR.js implementation is not exposed.

## Expected Result

Quest 3 and Quest Pro should render correctly aligned stereo views, as Quest 2 does, using the per-eye OpenXR poses and FOV values.

## Questions for NVIDIA

1. Is there a known asymmetric-FOV issue affecting Quest 3 or Quest Pro in the latest CloudXR.js or CloudXR Runtime?

2. Does CloudXR.js reuse any projection, viewport, texture, or reprojection transform between the two eyes?

3. Is there a supported option to disable depth reprojection completely, or render the stereo video without reprojection for isolation?

4. Is an updated build, hotfix, or recommended workaround available?

5. Which additional client or server diagnostic logs would be useful?

Available attachments if needed:

- Quest 2 and Quest 3 hello_xr depth-on/depth-off logs

- CloudXR Runtime server logs

- CloudXR.js Debug logs

- WebXR projection-matrix and viewport logs

- Video demonstrating the visual offset

Thanks

Hi, @CT_Scott ,

That’s crazy frustrating, and what’s worse, I’m not able to reproduce the issue.

Could you share a logs of a Quest 2 success and a Quest 3 failure, particularly the server runtime logs?

Hi, @AndreusNvidius

Thank you very much for your assistance. I understand that issues like this can be difficult when they’re not easily reproducible, Very appreciate your help.

I’ve attached the requested server runtime logs. The logs are organized into separate subdirectories.

Hopefully this helps identify the root cause. Please let me know if any additional logs, tests, or information would be useful.

Thanks again for your support.

Best regards,

Scott

CloudXR6_log.zip (2.0 MB)

Thanks, @CT_Scott .

Could you also please post a stereo screenshot showing the behavior? I think I understand what you’re seeing from your description, but it can be difficult to be sure.

Thanks for following up.

I’ve attached a stereo screenshot below that demonstrates the issue I’m seeing.

In this test scene, the object should appear centered in front of the viewer. However, on Quest 3, the left and right eye views appear to be misaligned, resulting in an incorrect stereo perception. The effect is immediately noticeable when wearing the headset.

For comparison, the same application renders correctly on Quest 2 with the expected stereo view and depth perception.

Please let me know if there is any additional information that would be helpful. I can also provide runtime logs and further test results if needed.

Stereo screenshot (Quest 3):

There are no 3D screenshots for the Quest 2, but the screen looks like the left side of the Quest 3’s screen.