我收到了警告
自定义/ 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"
}
答案 0 :(得分:2)
它几乎说明了发生的事情,VertexOutput VOUT;
只是变量的声明。这就像定义MyObject o;
,然后在o.ToString();
仍然为空时尝试使用o
。
你必须使用:
VertexOutput VOUT;
UNITY_INITIALIZE_OUTPUT(VertexOutput, VOUT);