Search Issue Tracker

By Design

Votes

0

Found in

2021.3.46f1

2022.3.53f1

6000.0.28f1

6000.1.0a5

Issue ID

UUM-87817

Regression

No

[Android] "SHADOWS_SCREEN" set as shader Keyword when no "_ShadowMapTexture" is bound leads to freeze on a build on some Mali GPU devices

-

How to reproduce:
1. Open the “ShadowMapFallback“ project
2. Open the “SampleScene“ scene
3. Build and run for Android

Expected result: No freeze
Actual result: The application freezes

Reproducible with: 2021.3.46f1, 2022.3.53f1, 6000.0.28f1, 6000.1.0a5

Reproducible environment: macOS 14.6.1 (Intel), Windows 11 (Reporters)
Not reproducible environment: No other environment tested

Reproducible with these devices:
VLNQA00267, Samsung Galaxy S10+ (SM-G975F), Android 12, CPU: Exynos 9 (9820), GPU: Mali-G76
VLNQA00468, Huawei - (ELS-NX9), Android 10, CPU: HiSilicon Kirin 990 5G, GPU: Mali-G76

Not reproducible with these devices:
VLNQA00335, Samsung Galaxy S20+ 5G (SM-G986B), Android 10, CPU: Exynos 990, GPU: Mali-G77
VLNQA00511, Samsung Galaxy S8 (SM-G950F), Android 9, CPU: Exynos 9 Octa 8895, GPU: Mali-G71
VLNQA00518, Google Pixel 4 (Pixel 4), Android 13, CPU: Snapdragon 855 SM8150, GPU: Adreno (TM) 640
VLNQA00107, Huawei Nexus 6P (Nexus 6P), Android 8.1.0, CPU: Snapdragon 810 MSM8994, GPU: Adreno (TM) 430
VLNQA00526, Samsung Galaxy A12 (SM-A125F), Android 12, CPU: MediaTek Helio P35 (MT6765), GPU: PowerVR Rogue GE8320
VLNQA00416, iPhone 13 Pro (MLVA3ET/A), CPU: Apple A15 Bionic, GPU: Apple designed, OS: 16.1.1
VLNQA00535, iPhone XS (MT9F2ET/A), CPU: Apple A12 Bionic, GPU: Apple designed, OS: 17.6.1

Notes:
- Reproducible with both Vulkan and OpenGLES3 Graphic API
- Not reproducible on the Editor and Standalone
- On Adreno GPU devices, the “cube” GameObject is rendered black instead of white, but the freeze does not happen
- Reproduce with both IL2CPP and Mono backend

  1. Resolution Note:

    The custom shader uses _ShadowMapTexture when the directional light is set to No Shadows. The _ShadowMapTexture is not initialized in this case so any usage causes undefined behavior. One way to fix this issue is to guard usage, such as,
    #if SCREEN_SHADOWS
    col *= SampleShadowMap(float4(0.5, 0.5, 0.5, 0));
    #endif

    It's not feasible to initialize this (or other) textures when they are not supposed to be used so I have closed this As Designed.

Add comment

Log in to post comment