【シェーダーエラー】failed to open source file: ‘cginc’

さて、シェーダーをインポートなどした際に↑のようなエラーが起きる事があります。エラーメッセージがコンソールウィンドウにも表示されると思います。

このメッセージは○○.cgincというファイルが見つかりませんというエラーです。

これによって、正しくモデル等が描画されなかったりするのですが、問題は見つからないと言っているのがビルトインシェーダーのcgincファイルだという点です。

ビルトインシェーダーだということはUnity本体に含まれるシェーダーですので、見つからないわけないのです。

failed to open source file: 'HLSLSupport.cginc'
failed to open source file: 'UnityShaderVariables.cginc'
failed to open source file: 'UnityShaderUtilities.cginc'
failed to open source file: 'Lighting.cginc'
failed to open source file: 'UnityCG.cginc'
failed to open source file: 'UnityPBSLighting.cginc'

↑これらはUnity自体に含まれるファイル

なんでじゃ〜

ということで、修正方法を色々探してみました。

cgincファイル追加で解決

さて、色々模索してみたのですが、結論から言うと

ビルトインシェーダーのcgincファイル関係ない

です。

うぉぉぉいエラーメッセージとちゃうやんけと言う話なんですが、そうでした。どうやら、マジで違うメッセージが表示されているみたいで、そのファイルが見つからないと言う意味ではないみたいです。

色々調べてみると、見つからないファイルで改行を追加したら直ると言うのを見かけたので、実際にUnity内のcgincファイルを開いて改行入れても修正できず

ファイルを直接プロジェクトにインポートしても直りませんでした。

何故か、プロジェクトにインポートした際に頭文字が「 _ 」になってしまい、これが原因かな?と思ったので、名前を修正してみましたが、それでも直りませんでした。

プロジェクト内に含めているので、見つからないわけないだろ!と言うことで、シェーダーのプログラムを開いてみると・・・

プログラムの中の

include “○○.cginc”

と書いてある物の中に、実際に無いものがありました。

おい!これやんけ!と言うことで、その足りないcgincファイルをプロジェクトにインポートしたら直りました。なんじゃそら

どうやら、includeしているcgincファイルの中で1つでも見つからないファイルが存在すると、includeしている全てのファイルが見つからないエラーとして扱われるみたいです。

えぇ・・・

と言うわけで、

failed to open source file: ‘○○.cginc’

と言うメッセージが表示されたら、表示されたエラーメッセージの全てのファイルが無いのではなく、表示されたどれかが無いと言う意味なので、その無いファイルをプロジェクトに追加してあげれば解決するということみたいです。

また、見つからないファイルで改行を追加したら直ると言う情報もあるので、もし、1つもcgincファイルが欠けていない場合は、プロジェクトに含まれるcgincファイルで改行を追加してあげてみるといいかもしれません。

以上 shader error : failed to open source file: ‘cginc’ の直し方でした