Search Issue Tracker

Fixed in 2017.1.0f3

Fixed in 2017.2

Votes

0

Found in

2017.1.0b10

Issue ID

924464

Regression

No

Incorrect definition of _ShadowCoord in AutoLight.cginc

Shadows/Lights

-

In AutoLight.cginc, _ShadowCoord is defined in some cases where it is not needed. This results in a useless interpolator. It can also lead to unexpected compile errors if UNITY_INITIALIZE_OUTPUT is not used to initialize the interpolator struct. Usage of UNITY_INITIALIZE_OUTPUT in Unity's shaders hides this bug.

The definition is on line 116. Here are lines 115-117:

#else
# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord2 _ShadowCoord : TEXCOORD##idx1;
# if defined(SHADOWS_SHADOWMASK)

The line should be moved inside the defined(SHADOWS_SHADOWMASK) block below it. So lines 115-117 become:

#else
#if defined(SHADOWS_SHADOWMASK)
#define UNITY_SHADOW_COORDS(idx1) unityShadowCoord2 _ShadowCoord : TEXCOORD##idx1;

Reproduced with: 5.6.2p1, 2017.1.0f1, 2017.2.0b1

Comments (1)

  1. 89862ca913fe293ff2ddd091d9a29774?d=mm

    xZeroCoolx

    Jan 18, 2018 19:19

    I can still reproduce this bug in Unity 2017.3.0f3 with the following custom shader:
    https://pastebin.com/Htg5p0EP

    Can be fixed by using UNITY_INITIALIZE_OUTPUT macro in the vertex shader.

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.