描述錯誤
在將Unity5.5.0版本的項目轉換成Unity2018.1.1的項目時,一個玻璃的shader報錯了。
錯誤信息:
- Shader error in ‘Shader Forge/Examples/Refraction’: syntax error: unexpected token ‘;’ at line 261 (on d3d11)
根據上面的報錯信息,我們定位錯誤位置:
錯誤代碼:
float attenuation = LIGHT_ATTENUATION(i);
原因
經過查詢,給錯誤的原因是:Unity在升級到2018版本之後,shader的內置函數LIGHT_ATTENUATION(i)
,即衰減率attenuation
,被新的內置函數所替代。
新的內置函數爲UNITY_LIGHT_ATTENUATION(attenuation, i, i.posWorld.xyz);
,其中裏面第一個參數就是你需要的得到的值(衰減率),後面可以直接使用,不需要再次聲明。