近期在研究shader所以做个学习记录
Shader "Unity Shdader Book /Chapter 5/Simple Shader"{
Properties{
//外置可变的颜色属性
_Color("Color",Color) = (1,1,1,1)
}
SubShader{
Pass{
CGPROGRAM
//指定顶点函数
#pragma vertex vert
//指定片元函数
#pragma fragment frag
fixed4 _Color;
struct a2v{
//定义我们需要的一些数据
//类型 变量名: 语义绑定
//模型顶点位置
float4 vertex : POSITION;
/顶点法线
float3 normal:NORMAL;
//第一套纹理信息
float4 texcoord:TEXCOORD0;
};
struct v2f{
//位置信息,作为vert的输出信息必须用SV_POSITION语义
float4 pos : SV_POSITION;
//颜色
fixed3 color : COLOR;
};
v2f vert(a2v v) {
v2f o;
//模型坐标转换到裁剪坐标空间
o.pos = UnityObjectToClipPos(v.vertex);
//把顶点法线作为颜色数据用来渲染,把normal从[-1,1],限制到[0,1]作为颜色数据
o.color = v.normal * 0.5 + fixed3(0.5, 0.5, 0.5);
return o;
}
fixed4 frag(v2f i) : SV_Target{//SV_Target把数据存到渲染的目标上
//与外置颜色合并
fixed3 c = i.color * _Color.rgb;
return fixed4(c,1);
}
ENDCG
}
}
}