Shader error Input signature parameter SV_VertexID (1-based Entry 5) type must be a scalar uint.
2019年4月5日
Shader error in ‘KineticTypography/translate’: Input signature parameter SV_VertexID (1-based Entry 5) type must be a scalar uint. at line 132 (on gles)
TextMeshPro の頂点シェーダーで 頂点インデックスを受け取って、キャラ単位でエフェクトを変えようとしていたとき、iOSでビルド時にこのようなエラーが出たので調べていたら、マニュアルに書いてました。
https://docs.unity3d.com/ja/current/Manual/SL-ShaderSemantics.html
頂点 ID: SV_VertexID
頂点シェーダーは、使用されていない整数で示された Vertex ID を持つ変数を受け取ることができます。 これは、たいてい、テクスチャか ComputeBuffer から受領する頂点ごとの追加データをフェッチするときに役立ちます。
この機能は、DX10 (シェーダーモデル 4.0) と GLCore / OpenGL ES 3 以降に搭載されています。そのため、シェーダーに#pragma target 3.5
コンパイラーディレクティブが必要です。
#pragma target 3.5
の追加で解決できました
iOSのデフォルトはなにか調べたところ、マニュアルに
https://docs.unity3d.com/jp/current/Manual/SL-ShaderCompileTargets.html
デフォルトコンパイルターゲット
デフォルトで、Unity はシェーダーをほとんど最低レベルの適応ターゲット (2.5) でにコンパイルします。これは、だいたい DirectX シェーダーモデル 2.0 と 3.0 の間と同等です。 他のコンパイラディレクティブはシェーダーを自動的により高いターゲットにコンパイルします。
とのこと。エラーメッセージももっと直球で伝えてくれればいいのに。:(