1.Shader 格式
Shder “custom/Name” //shader 的路径和名字
{
Properties//属性
{
_Color{"Mian Color",Color }= (1,0.5,0.5,1)//参数
}
subshader{
//渲染通道
}
}
//顶点片段着色器
Shader "Custom/Vert frag" {//shader 路径名字,
Properties{
/*
Properties { Property[Property …] }
定义属性块,其中可包含多个属性,其定义如下:
name(“display name”, Range(min, max)) = number
定义浮点数属性,在检视器中可通过一个标注最大最小值的滑条来修改。
name(“display name”, Color) = (number,number,number,number)
定义颜色属性
name(“display name”, 2D) = “name” {options }
定义2D纹理属性
name(“display name”, Rect) = “name”{ options }
定义长方形(非2次方)纹理属性
name(“display name”, Cube) = “name”{ options }
定义立方贴图纹理属性
name(“display name”, Float) = number
定义浮点数属性
name(“display name”, Vector) = (number,number,number,number)
定义一个四元素的容器(相当于Vector4)属性
*/
_MainTex("Texture", 2D) = "white" { } //属性名称
}
SubShader
{
pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
float4 _MainTex_ST;
//v2f为vers的输出也是frag的输入
struct v2f {
float4 pos : SV_POSITION;//贴图位置
float2 uv : TEXCOORD0;//贴图坐标
};
v2f vert(appdata_base v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex); //MVP矩阵变换,将裁剪空间坐标转换为相对屏幕位置的UV坐标
o.uv = TRANSFORM_TEX(v.texcoord,_MainTex); //TRANSFORM_TEX的作用是用顶点的UV v.texcoord和材质球的采样图片_MainTex做运算,确保顶点材质球里的缩放和偏移是正确的。
return o;
}
float4 frag(v2f i) : COLOR
{
float4 texCol = tex2D(_MainTex,i.uv);
float4 outp = texCol;
return outp;
}
ENDCG
}
}
}