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でビルド時にこのようなエラーが出たので調べていたら、マニュアルに書いてました。


頂点 ID: SV_VertexID
頂点シェーダーは、使用されていない整数で示された Vertex ID を持つ変数を受け取ることができます。 これは、たいてい、テクスチャか ComputeBuffer から受領する頂点ごとの追加データをフェッチするときに役立ちます。
この機能は、DX10 (シェーダーモデル 4.0) と GLCore / OpenGL ES 3 以降に搭載されています。そのため、シェーダーに #pragma target 3.5 コンパイラーディレクティブが必要です。

https://docs.unity3d.com/ja/current/Manual/SL-ShaderSemantics.html
#pragma target 3.5

の追加で解決できました

iOSのデフォルトはなにか調べたところ、マニュアルに


デフォルトコンパイルターゲット
デフォルトで、Unity はシェーダーをほとんど最低レベルの適応ターゲット (2.5) でにコンパイルします。これは、だいたい DirectX シェーダーモデル 2.0 と 3.0 の間と同等です。 他のコンパイラディレクティブはシェーダーを自動的により高いターゲットにコンパイルします。

https://docs.unity3d.com/jp/current/Manual/SL-ShaderCompileTargets.html

とのこと。エラーメッセージももっと直球で伝えてくれればいいのに。:(

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です