Search Issue Tracker
By Design
Votes
3
Found in [Package]
4.0.5
Issue ID
1338621
Regression
No
[XR SDK] Shadow is displayed inconsistently between right and left eye when Single Pass instancing rendering mode is used
Reproduction steps:
1. Open the attached project ("1338621R.zip")
2. Open the "ShadowBug" scene
3. Enter Play mode
Expected result: Shadow in both eyes are displayed aligned
Actual result: Shadow in the right eye isn't aligned (see "q88PM5ioac.mp4" video)
Reproducible with: XR SDK 4.0.5 (2019.4.27f1, 2020.3.10f1, 2021.1.9f1, 2021.2.0a18)
Not reproducible with: 2018.4.35f1 (XR SDK not available)
Tested:
- Oculus Rift S
- MockHMD
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Keywords on Material Variants aren't automatically saved when changed on original Material through Shader Graph
- Light Probes get baked when calling LightProbes.Tetrahedralize
- Shadows flicker and cause visual artifacts when modifying a GameObject's bounds using Swizzle (Y Mask) and Sine Time nodes
- [WebGL] Frame rate drops by 5-20 fps when moving cursor or touch input in the Player
- Light bleeds when using box shaped spotlight with specific Emission Range values
Resolution Note:
The fragment shader needs to have the following macro (at the beginning of the function) to be able to sample the right shadowmap slice for the second eye :
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
(Documentation: https://docs.unity3d.com/Manual/SinglePassInstancing.html)
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO tells the GPU which eye in the texture array it should render to, based on the value of unity_StereoEyeIndex. This macro also transfers the value of unity_StereoEyeIndex from the vertex shader so that it will be accessible in the fragment shader only if UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX is called in the fragment shader frag method.