CGPROGRAM
#pragma vertex vert
#pragma fragment frag
struct a2v {
float4 vertex :POSITION;
float3 color :COLOR;
float3 normal:NORMAL;
};
//使用一个结构体定义顶点着色器的输出 v2f=vertex shader to fragment,输出了2个变量pos,color.
struct v2f{
float4 pos:SV_POSITION;
fixed3 color:COLOR0;
};
//结构体定好后,原始结构体里的变量是没有赋值的.用结构体v2f定义一个对象vert,从a2v结构体定义对象v中传递数据.函数值返回(除了void函数,其余函数必须有返回值)
v2f vert(a2v v){
v2f o;
o.pos=UnityObjectToClipPos(v.vertex);
o.color=v.normal*0.5+fixed3(0.5,0.5,0.5);
return o;
}
// 片元着色器函数frag,从v2f结构体定义的对象i中取值,对象i中的值其实就是v2f o所return的结果.SV_TARGET是系统值
fixed3 frag(v2f i):SV_TARGET{
return fixed4(i.color,1.0);
}
ENDCG