+7
Under review

Shader compile is not setting proper UnityGI variable syntax

Manish 9 year бұрын updated by Freya Holmér (Developer) 8 year бұрын 2

We have a shader that has a section under "/////// GI Data:".. inside it has a line

UnityGIInput d;

After using this shader in a scene that has Global Illumination on it, the Unity build will not complete without errors as we get a shader compilation error of "Shader error in '<shaderName>': variable 'd' used without having been completely initialized at line <x> "


Per http://docs.unity3d.com/Manual/UpgradeGuide5-Shaders.html, which says "You need to fully initialize output variables. Use UNITY_INITIALIZE_OUTPUT helper macro, just like you would on D3D11."


So we edited the shader code to be

UnityGIInput d;

UNITY_INITIALIZE_OUTPUT(UnityGIInput, d);


And everything Unity-compiled fine. That is, until we had to modify the shader clicked the "compile" button in shader forge. Doing to removed the "UNITY_INITIALIZE_OUTPUT(UnityGIInput, d);" line every time.


We believe shader forge should always fully init the output variables when it generates shader code.