顶点着色器代码
{
Properties //2.定义了shader的属性
{
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
}
SubShader //3.pass的容器
{
Pass //4.定义了使用哪一张显卡来渲染图像
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
float4 vert(float4 vertex : POSITION) : SV_POSITION
{
return UnityObjectToClipPos(vertex);
}
fixed4 frag() : SV_TARGET
{
return fixed4(1,0,0,1);
}
ENDCG
}
}
FallBack "Diffuse"
}
顶点着色器指的是vert函数,包含了输入语义、输出语义。该函数执行了三件事:
1.shader会通知Unity,将模型的顶点坐标作为输入,并存储到变量v中。
2.利用函数UnityObjectToClipPos(vertex)将模型的顶点坐标转换到裁剪坐标空间。
3.通知Unity,输出裁剪空间中的顶点坐标。
片段着色器指的是frag函数,会通知Unity,将用户的输出颜色存储到渲染目标中,即屏幕。