Unity2018的shader中LIGHT_ATTENUATION()報錯的解決方案

描述錯誤

在將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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章