2
0

More than 5 years have passed since last update.

[Unity][Shader] ビルド時にエラー"invalid input semantic 'POSITION' " が出力される

Posted at

現象

エディターでは動いていたのですが、いざビルドしようとすると以下のエラーが出力される

invalid input semantic 'POSITION'

エラーが出たコードは以下。
_CameraDepthTextureを使用せずに深度画像をレンダリングするシンプルなコードです。

Pass {
    cull off

    CGPROGRAM
    #pragma target 3.0
    #pragma vertex vert
    #pragma fragment frag
    #include "UnityCG.cginc"

    struct v2f { 
        float4 pos : SV_POSITION;
    };

    v2f vert(appdata_base v)
    {
        v2f o = (v2f)0;
        o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
        return o;
    }

    float4 frag( v2f i ) : SV_Target
    {
        float depth = i.pos.z;
        return depth.xxxx;
    }
    ENDCG
}

原因と対策

以下のサイトに情報が乗ってました。
http://www.boutin.de/hlsl-error-x4502-invalid-input-semantic-position/

POSITIONセマンティクスは頂点シェーダーでは使用できるが、フラグメントシェーダーでは使用できないとのことです。
考えてみれば、頂点を扱う変数をピクセルシェーダーで使用するのも変な話ですね。

頂点シェーダー内で、pos.zを別の変数に入れることで使用できました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0