有时候我们需要传递控制修改多个信息变量等,此时需要用一个容器来包装,那就是结构体
Shader "Unlit/StructShader"
{
Properties
{
_Color("Color",Color) = (1,1,1,1)
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
fixed4 _Color;
//应用程序阶段结构体数据
struct initData
{
float4 vertex:POSITION;
float2 uv:TEXCOORD;
};
//几何阶段结构体数据
struct VerData
{
float4 pos:SV_POSITION;
float2 uv:TEXCOORD;
};
//顶点着色器处理
VerData vert(initData v)
{
VerData vd;
vd.pos = UnityObjectToClipPos(v.vertex);
vd.uv = v.uv;
return vd;
}
//片段着色器处理
fixed4 frag(VerData v2):SV_TARGET
{
return fixed4(v2.uv,0,1);
}
ENDCG
}
}
}