Unity2018的shader中LIGHT_ATTENUATION()报错的解决方案

文章目录

    • 描述错误
    • 原因
    • 修改后
    • 参考

描述错误

在将Unity5.5.0版本的项目转换成Unity2018.1.1的项目时,一个玻璃的shader报错了。
Unity2018的shader中LIGHT_ATTENUATION()报错的解决方案_第1张图片

错误信息:

  • Shader error in ‘Shader Forge/Examples/Refraction’: syntax error: unexpected token ‘;’ at line 261 (on d3d11)

根据上面的报错信息,我们定位错误位置:
Unity2018的shader中LIGHT_ATTENUATION()报错的解决方案_第2张图片

错误代码:

  • float attenuation = LIGHT_ATTENUATION(i);

原因

经过查询,给错误的原因是:Unity在升级到2018版本之后,shader的内置函数LIGHT_ATTENUATION(i),即衰减率attenuation,被新的内置函数所替代
新的内置函数为UNITY_LIGHT_ATTENUATION(attenuation, i, i.posWorld.xyz);,其中里面第一个参数就是你需要的得到的值(衰减率),后面可以直接使用,不需要再次声明。

修改后

Unity2018的shader中LIGHT_ATTENUATION()报错的解决方案_第3张图片

参考

问题参考:https://blog.csdn.net/maba007/article/details/81029737

你可能感兴趣的:(报错,Shader)