Search Issue Tracker

By Design

Votes

0

Found in

2021.1

2021.1.24f1

2021.2

2022.1

Issue ID

1372504

Regression

Yes

[iOS] Shaders are invisible when using Transparent Queue

Metal

-

Reproduction steps:
1. Download and open the attached "UnityXRayShaderBug.zip" project
2. Build and deploy the project to iOS
3. Observe the spheres in the device

Expected result: There are two spheres behind the cube
Actual result: There is only one sphere

Reproducible with: 2021.1.0f1, 2021.1.26f1, 2021.2.0b16, 2022.1.0a13
Not reproducible with: 2019.4, 2020.3.21f1

Reproduced with: iPhone 12 Pro (iOS 14.2.1)

  1. Resolution Note:

    The problem why custom shader didn't work correctly was because of missing proper Pass Tags to indicate that shader does lighting.
    Since Pass Tags weren't defined in shader, the default is "Always" pass tag which doesn't apply any lighting.
    Therefore the result of the lighting calculations was that objects were invisible as _WorldSpaceLightPos0 had value of (0.f, 0.f, 0.f, 0.f).
    Adding Pass Tag "LightMode" = "ForwardBase" as denoted by https://docs.unity3d.com/Manual/SL-UnityShaderVariables.html fixes the problem with zeroed _WorldSpaceLightPos0 constant value and shader works as expected.

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.