输出值vert未完全初始化

时间:2015-07-01 15:04:23

标签: unity3d shader cg

我收到了警告

  

自定义/ NoobShader_02'中的着色器警告:输出值' vert'不是   在第30行完全初始化(在d3d11)

使用以下代码可以解释为什么会这样做吗?

Shader "Custom/NoobShader_02" {
    Properties {
        twisting ("Twist", Range(-10,10)) = 1
    }
    SubShader {
        Pass{
        CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag

        float twisting;

        struct VertexOutput
        {
            float4 pos : SV_POSITION;
            float3 nor : NORMAL;
        };

        struct VertexInput
        {
            float4 vertex : POSITION;
            float3 normal : NORMAL;
        };

        struct FragmentOutput
        {
            float4 color : COLOR;
        };

        VertexOutput vert (VertexInput i)
        {
            VertexOutput VOUT;
            VOUT.pos = mul(UNITY_MATRIX_MVP, i.vertex);

            return VOUT;
        }

        FragmentOutput frag() 
        {
            FragmentOutput FOUT;
            float4 tempCol = {abs(_SinTime.z),0,0,1};
            FOUT.color = tempCol;
            return FOUT;
        }
        ENDCG
        }
    } 
    FallBack "Diffuse"
}

1 个答案:

答案 0 :(得分:2)

它几乎说明了发生的事情,VertexOutput VOUT;只是变量的声明。这就像定义MyObject o;,然后在o.ToString();仍然为空时尝试使用o

你必须使用:

VertexOutput VOUT;
UNITY_INITIALIZE_OUTPUT(VertexOutput, VOUT);
相关问题