最近在研究
這位作者的shader,這個shaders提供了許多已經調好的動畫渲染的效果,而且許多參數也整合在同一份shader裡面,包含了Rim, Filter, Specular......等等,在編輯上彈性很大,也因此挺好用的。
▲提供了不少參數可以調整,讓開發者可以調出自己想要的渲染效果。
但在使用時卻發現一個問題,這個shader目前就是提供給2017.4版本的unity與2018.2b的unity,但我目前用的專案都還在2018.1。在一開始使用時還很正常,直到有次我在那邊快速切換scene後就跑出問題了,使用該shader的材質球會壞掉。
▲原本很正常的一張scene。
▲在我幾經切換scene後就壞了。
參考一開始的compiler error訊息卻還是不太懂哪邊出問題,因為該訊息是說多打了";"這個字元,而該shader中的寫法是全部變數宣告,運算則是在另一份shader中,這的確是不能有分號,不過我進行搜尋後也很正常的找不到任何一個分號,畢竟要出錯早在一開始就會出現這很基本的錯誤,而不是需要經過一連串手續才會出問題,加上這麼明顯的問題原作者應該不會沒看到。
▲Compiler error中提供的訊息就是說多打了;
▲在這份shader中完全找不到;這字元。
後來在我東改西改後才出現了一個重要的 compiler error訊息,在Kamakura-CGINC-StandardShading.cginc這個檔案中的第232行有出錯。這點也很奇怪不會一開始就跑出這個錯誤訊息,害我折騰了老半天。
▲此重要的錯誤訊息,在一段時間後才跑出。
▲就是此行出了問題才會有這麼奇怪的情況出現。
後來去查詢後才知道說這個LIGHT_ATTENUATION在unity2018中需要改成UNITY_LIGHT_ATTENUATION這個寫法才行。
▲在此shader中的改法。
之後在Kamakura-CGINC-HairShading也是有兩行有同樣的問題,也是照一樣的修改,就可以解決了,不過意外的是若專案在2018.2中又沒問題,可能是後來unity官方有處理這個相容問題。