首页 > 解决方案 > 无效的输出语义“SV_POSITION”:合法索引在 [0,0] 中

问题描述

我刚开始学习Unity3d Shader,我按照一本书的教程,我所有的代码都和教程一样,但是,有一个我想不通的错误。

这是代码:

    Shader "Unity Shaders Book/Chapter5/Simple Shader"{
        SubShader{
            Pass{
            CGPROGRAM

    #pragma vertex vert
    #pragma fragment frag

    struct a2v {
    float4 vertex:POSITION;
    float3 normal:NORMAL;
    float4 texcoord:TEXCOORD0;
    };

    struct v2f {
        float4 pos: SV_POSITION;
        fixed3 color : COLOR0;

    };

    v2f vert(a2v v) : SV_POSITION {
        v2f o;
        o.pos = UnityObjectToClipPos(v.vertex);
        o.color = v.normal *0.5 + fixed3(0.5, 0.5, 0.5);
        return o;
    }
    fixed4 frag(v2f i) : SV_Target{
    return fixed4(i.color,1.0);
    }
    ENDCG
    }
}

}

错误

标签: unity3dshader

解决方案


更改此行:

v2f vert(a2v v) : SV_POSITION {

进入这个:

v2f vert(a2v v) {

推荐阅读