Unity:シェーダが参照する.cgincは自動再コンパイルされず
Unity では、.shader ファイルの内部で参照する .cginc ファイル"のみ"を更新しても、 そのファイルを自動で再コンパイルしてくれない(ことがある?)ようです。バージョン 5.4.x でこの現象を確認しています。
Reimport も使えず
How to force the compilation of a shader in Unity? によれば、シェーダファイルを右クリックして「Reimport」を実行すれば、再コンパイルしてくれるようですが、 .shader を再コンパイルしても、その中で参照される .cginc の方は再コンパイルされませんでした。
また を「Reimport」しても結果は変わりませんでした。
.shader ファイルを更新して再コンパイル
少々ダサい方法ですが、~.cginc ファイルを参照している ~.shader ファイル、
すなわち #include ~.cginc
をしている ~.shader ファイルを更新して再コンパイルさせれば、
~.cginc ファイルも再コンパイルされます。
メタファイルの削除
~.shader のメタファイルを削除してもファイルは再コンパイルされるようです。 ただ Unity の IDE インターフェース上からはメタファイルが見えないので、あんまり効率の良い方法ではないような気がします。
クリーンビルドのような操作
他にも Unity を終了し、Library フォルダを削除してから再起動することでも再コンパイルさせられますが、 大掛かりすぎて面倒です。原因不明の深刻なトラブルが起きたときには有効かもしれません。 (今回の問題に気が付いて、検索して見つかった情報なので、ここメモしておきます。)
- Reference