顶点着色器和片元着色器之间的通信
-
顶点着色器着色器需要包含一个变量(SV_POSITION),不然渲染器无法得到裁剪空间的顶点坐标
Shader “Custom/Together” {
SubShader
{
pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag//顶点着色器的输入 struct a2v { float4 vertex:POSITION; float3 normal :NORMAL; float4 texcoord :TEXCOORD0; }; //定义顶点着色器的输出 struct v2f { float4 pos:SV_POSITION; fixed3 color :COLOR0; }; //(输入到屏幕空间) void vert(in a2v v,out v2f o) { //声明输出结构 o.pos = UnityObjectToClipPos(v.vertex);//顶点信息 o.color=v.normal*0.5+fixed3(0.5,0.5,0.5);//法线的方向(0,0,1)*0.5+(0.5,0.5,0.5) } fixed4 frag(v2f i):SV_Target { return fixed4(i.color,1.0); } ENDCG }
}
FallBack “Diffuse”
}
这是一个渐变的材质
实现关键:
编译过程报错的解决:
因为编译没有报错提示,一定要注意关键字的书写和前后变量命名的一致性。