当使用顶点和片段程序时,显卡的不部分硬编码功能(固定功能管线)关闭。例如使用一个顶点程序完全可以做到关闭标准的3D变换,灯光和纹理坐标的功能。使用一个片段程序可以替换任何纹理混合模式
编写顶点和片段程序需要对3D变换,照明和坐标空间有透彻的了解
一般情况下,CG片段放在通道中
pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
;
'
ENDCG
}
完整例子
Shader“Normal”
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include"UnityCG.cginc"struct v2f
{
float4 pos:SV_POSITION;
float3 color :COLOR;
};
v2f vert(appdata_base v)
{
v2f o;
o.pos=mul(UNITY_MATRIX_MVP,v.vertex);
c.color=v.normal*0.5+0.5;
return o;
}
}
half 4 frag (v2f i):COLOR
{
return half4(i.color,1);
}
ENDCG
}
FallBack "VertexLit"
}