1.先来一段单张纹理贴图的shader示例代码:
1 // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 3 Shader "Custom/MyShader"{ 4 Properties{ 5 //外部可调属性 6 _MainTex ("Main Tex", 2D) = "white" {} 7 } 8 SubShader 9 { 10 //设置使用本Subshader所需要满足的渲染路径等参数,如果满足,即使用本shader 11 Tags {"Queue"="Transparent""RenderType"="Transparent"} 12 Pass 13 { 14 //设置该pass 的渲染状态和标签 15 Tags { "LightMode"="ForwardBase" } 16 //开始cg代码片段 17 CGPROGRAM 18 //该代码的编译指令, 19 #pragma vertex vert//设置顶点着色器的函数名称 20 #pragma fragment frag//设置片段着色器的函数名称 21 #include "Lighting.cginc"//包含库文件 22 23 struct a2v { 24 float4 vertex : POSITION;//当前要渲染的顶点坐标 25 float4 texcoord : TEXCOORD0;//当前要渲染的顶点的第一套纹理坐标 26 }; 27 28 struct v2f { 29 float4 pos : SV_POSITION;// 30 float2 uv : TEXCOORD0; 31 }; 32 sampler2D _MainTex; 33 float4 _MainTex_ST; 34 35 v2f vert(a2v v) 36 { 37 v2f o; 38 o.pos=UnityObjectToClipPos(v.vertex);//将顶点坐标变换到裁剪空间中 39 o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);//变换uv坐标 40 return o; 41 } 42 43 fixed4 frag(v2f i):SV_Target 44 { 45 fixed4 c = tex2D (_MainTex, i.uv);//对纹理坐标进行采样 46 return c; 47 } 48 ENDCG 49 } 50 //SubShader 51 //{ 52 // //如果不满足第一个subshader所需要的条件,那么再来检测是否满足第二subshader 的条件。 53 //} 54 } 55 FallBack "Diffuse" 56 }