Shader "wx/3"{
Subshader{
Pass{
CGPROGRAM
#pragma vertex vert //声明 vert 函数 包含顶点着色器代码
#prgame fragment frag //声明 frag 函数 包含片元着色器代码
struct a2v { //struct 结构体 (在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。) 用自己的话就是:结构体是定义了一个箱子,箱子中放了一些变量,本节中定义了一个名叫a2v的箱子,箱子里面放了3个变量,POSITION,NORMAL,TEXCOORD0.我们之后写shader需要取的参数都放在这个箱子里.~~a2v名字的含义:a=application,v=vertex shader, 把数据从应用阶段传递到顶点着色器中.
float4 vertex :POSITION; // 用模型空间的顶点坐标填充 vertex 变量
float3 normal :NORMAL; // 用模型空间的法线方向填充normal 变量
float4 texcoord:TEXCOORD0; //用模型的第一套纹理坐标填充 texcoord 变量
};
float4 vert(a2v v) : SV_POSITION{ //定义顶点着色器vert函数,用结构体a2v定义一个对象v,把UnityObjectToClipPos(v.vertex)的结果输出到SV_POSITION
return UnityObjectToClipPos(v.vertex); //返回裁剪空间v.vertex的结果.
}
fixed4 frag ():SV_Target {
return fixed4 (1,1,1,1);
}
ENDCG
}
}
}