Search Issue Tracker
Won't Fix
Votes
1
Found in
2021.3.35f1
2022.3.20f1
2023.2.11f1
2023.3.0b8
6000.0.0b11
Issue ID
UUM-64801
Regression
No
[Android] URP Decal Projector fails to render decals at a shorter distance than the value of Draw Distance when built for Android
Reproduction steps:
1. Open the attached project "ReproProj"
2. Open the “/Assets/Samples/XR Interaction Toolkit/2.4.3/Starter Assets/DemoScene.unity” Scene
3. Switch to Android Platform (File > Build Settings > Android > Switch Platform)
4. Build and Run on Quest
5. Notice that the decal is fully visible
6. Teleport to the far back right corner (use the right controller’s Thumbstick)
7. Observe decal
Expected result: Decal is fully visible
Actual result: The “L” letter of the two lines has been clipped or the decal is not present at all
Reproducible with: 2021.3.35f1, 2022.3.20f1, 2023.2.11f1, 2023.3.0b8
Reproducible with devices:
VLNQA00325, Samsung Galaxy Note10 (SM-N970F), Android 12, CPU: Exynos 9 (9825), GPU: Mali-G76
VLNQA00318, Oneplus OnePlus 7 Pro (GM1913), Android 11, CPU: Snapdragon 855 SM8150, GPU: Adreno (TM) 640
VLNQA00379, Oculus (Quest 2), Android 10, CPU: Snapdragon XR2, GPU: Adreno (TM) 650
Not reproducible with devices:
VLNQA00494 - iPhone 14 Pro Max, 16.3.1 iOS
VLNQA00358 - iPhone 12, 14.1 iOS
VLNQA00392 - iPad (9th generation), 15.0 iOS
VLNQA00310 - iPad Pro 12.9", 13.4.1 iOS
Testing environment: Windows 10 Enterprise 21H2
Not reproducible on: No other environment tested
Notes:
- Does not reproduce with Play Mode, Windows Standalone, and iOS Players
- Reproducible with Oculus XR and OpenXR
- Reproducible with mobile Android devices
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
- Non-multisampled texture binding errors are logged when running the DepthBlit URP scene with MSAA enabled on Vulkan
- The Editor does not recognize code errors in generic classes when using C# Source Generator to generate serialization code
- NullReferenceException is logged when undoing Deletion of a Visual Query Block of a Search Expression
- “Unsupported type MinMaxCurve” error and “Could not register property modification for animation binding…” warnings are thrown after moving playhead when Particle System Property is added to Animation window
- Nested LocalizedStrings can not query local variables
Resolution Note:
Hi there. I've been looking into this issue and identified the cause. Unfortunately I can't fix this for you. What I can suggest you do is to set your camera to use a larger value for the near clip plane as this will mitigate the issue (additionally, consider using a smaller value for your far clip plane as well). Alternatively you can switch to using Vulkan, if that is an option for your project.
The more technical explanation for this is that we simple do not have enough depth precision on OpenGL ES. The screenspace decal projector relies on the depth buffer to reconstruct the local position of itself in the shader, but the amount of error in this process increases the further away from the camera the decal is. The result is that the values end up being so wrong that this reconstruction is completely unreliable, which causes the decal to clip when it shouldn't. More modern APIs like Vulkan don't have the same issues because they handle depth in a better way.