描述错误
在将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);,其中里面第一个参数就是你需要的得到的值(衰减率),后面可以直接使用,不需要再次声明。
修改后
参考
问题参考:https://blog.csdn.net/maba007/article/details/81029737