WebXRManager: Avoid invalid projection matrices when using depth sensing #29120
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related issue: #29098
Description
The
depthFar
anddepthNear
values coming from the depth-sensing module could result in invalid projection matrices (NaN
values). These errors would propagate (left, right, XR and user camera) resulting in a broken state after exiting the XR session.This PR includes three changes:
far
andnear
properties of the user camera, instead always treat these as input to set thefar
/near
of the renderState. When depth-sensing is active, the relevantdepthNear
/depthFar
values are used for rendering, but not written back to the user-camera.updateProjectionMatrix
added in 6e3137. These calls aren't needed, as the projection matrices for the left and right view come directly from the WebXR API and are computed insetProjectionFromUnion
forcameraXR
. In fact, as the comment above it indicates, the new far/near values only take effect next frame, so immediately computing them is incorrect for that frame.This contribution is funded by Fern Solutions