Unity shader中的顶点片面着色器是我们项目中使用次数最多的着色器,因此今天来简单的学习一下VF Shader。
VF Shader的基本写法如下:
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Custom/VFShader01" {
Properties {
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
}
SubShader{
Pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
float4 _MainTex_ST;
float4 _Color;
struct v2f{
fixed4 pos : SV_POSITION;
fixed2 uv : TEXCOORD0;
};
v2f vert(appdata_base v) {
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
return o;
}
fixed4 frag(v2f v) : COLOR {
fixed4 texColor = tex2D(_MainTex, v.uv);
return texColor * _Color;
}
ENDCG
}
}
}
盗用一张现成的语义解释图,相信您一定能够非常快速的了解VF Shader的基本组成:
代码中的appdata_base是顶点着色器传入的顶点数据结构,详细以及更多的U3d中顶点着色器的顶点数据结构请看这篇博文,列举的非常详细: