Unityでシェーダーを書いていた時に遭遇した、Too many texture interpolators would be used for ForwardBase pass
について
Googleで検索をかけたところ英語ばかりだったのでまとめておきます
どの辺で発生するか
頂点シェーダーからフラグメントシェーダーに渡すデータの数が多すぎると発生する
例
struct Input
{
float data1;
float2 data2;
float2 data3;
float3 data4;
float4 data5;
};
どうすればいいのか
Google翻訳でまずは翻訳してみました
ForwardBaseパスに使用されるテクスチャインターポレータが多すぎます(最大10のうち11)
詳しく調べてみたところ
Unityのシェーダーモデルデフォルトは2.5とのこと
そしてshader model 2.5では最大12個のfloatを渡せる
これに引っかかっているっぽい・・・
ちなみに
shader model 3.5は最大32までで、4.0では最大45までもてる
なので解決したい場合は
#pragma target 3.5
#pragma target 4.0
などの必要数に合わせたシェーダーモデルにする