Search Issue Tracker

By Design

Votes

2

Found in [Package]

13.1.0

Issue ID

1366080

Regression

No

[URP][Mobile] Dithering does not work on mobile devices when implemented via Alpha Clipping

Package: Scriptable Render Pipeline Universal

-

Reproduction steps:
1. Download and open the attached project: "ShaderClipIssue-2021.2.zip"
2. Build and Run to a mobile device
3. Observe the running Player

Expected result: The dithering can clearly be observed
Actual result: The dithering is absent

Reproducible with: 7.7.1 (2019.4.32f1), 10.6.0 (2020.3.21f1), 11.0.0 (2021.1.27f1), 12.0.0 (2021.2.0b17), 13.1.0 (2022.1.0a13)

Reproduced on:
VLNQA00112, Htc M9 (HTC One M9), Android 7.0, CPU: Snapdragon 810 MSM8994, GPU: Adreno (TM) 430
VLNQA00025, Xiaomi Mi 5s (MI 5s), Android 6.0.1, CPU: Snapdragon 820 MSM8996, GPU: Adreno (TM) 530
VLNQA00391, Xiaomi Redmi 9A (M2006C3LG), Android 10, CPU: MediaTek Helio G25 (MT6762G), GPU: PowerVR Rogue GE8320
VLNQA00286, Meizu Pro 5 (PRO 5), Android 7.0, CPU: Exynos 7 Octa 7420, GPU: Mali-T760
VLNQA00313, Huawei Y6 Ⅱ Compact (HUAWEI LYO-L01), Android 5.1, CPU: MediaTek MT6735, GPU: Mali-T720
----------, Oneplus OnePlus 8 Pro (IN2023), Android 11, CPU: Snapdragon 865 SM8250, GPU: Adreno (TM) 650
----------, Samsung S21 (SM-G991U), Android 11, CPU: Snapdragon 888, GPU: Adreno (TM) 660
Reproduced with iPhone 12 Pro (iOS 14.2.1)

Did not reproduce on:
VLNQA00134, Samsung Galaxy S8 (SM-G950F), Android 9, CPU: Exynos 9 Octa 8895, GPU: Mali-G71
VLNQA00335, Samsung Galaxy S20+ 5G (SM-G986B), Android 10, CPU: Exynos 990, GPU: Mali-G77

Notes:
- There are screenshots attached below illustrating the reproduced and non-reproduced issue (Repro.png, NoRepro.png)
- Reproducible with either Vulkan or OpenGL Graphics API
- Not reproducible on desktop builds (Linux, macOS, Windows)
- Could not test with the Built-in Render Pipeline due to shader errors

  1. Resolution Note:

    Precision issue, _BlueNoiseSize is declared as half precision, which means that the computation of the index in 'bnThreshholds[int(screenPos.x * screenPos.y) % _BlueNoiseSize]' is done in half precision.
    Please cast _BlueNoiseSize to uint.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.