Unity Shader语义解释
记录Unity Shader里面格子语义所表示的内容
Shader "Example/MyShader"
{
Properties {}
SubShader
{
Pass
{
CGPROGRAM
// 顶点函数
// 作用是: 将顶点坐标从模型空间转换到裁剪空间,从顶点着色器传递到片元着色器,从游戏环境转换到视野相机屏幕
#pragma vertex vert
// 片元函数
// 作用是: 返回模型对应的屏幕上的每个像素的颜色
#pragma fragment frag
// 顶点输入结构体,application to vertex:从应用到顶点
struct a2_v
{
// POSITION 语义: 顶点位置
float4 vertex : POSITION; // 顶点位置
float3 normal : NORMAL; // 法线方向
float4 texcoord : TEXCOORD0; // 纹理坐标
float4 tangent : TANGENT; // 切线方向
float4 color : COLOR; // 顶点颜色
};
// 顶点输出结构体,vertex to fragment:从顶点到片元
struct v2_f
{
// SV_POSITION 语义: 返回值,说明返回值是剪裁空间下的顶点坐标
float4 pos:SV_POSITION; // 顶点位置
float3 normal : NORMAL; // 法线方向
float3 color : COLOR; // 颜色
// float3 colorTangent : COLOR0; // 切线方向
float3 colorBitangent : COLOR1; // 副切线方向
float2 texcoord : TEXCOORD0; // 纹理坐标,TEXCOORD0~7
float2 texcoord1 : TEXCOORD1; // 纹理坐标
};
// 顶点函数
// 顶点函数返回顶点
v2_f vert(a2_v v)
{
v2_f o;
// UnityObjectToClipPos等同于mul(UNITY_MATRIX_MVP, v.vertex);
o.pos = UnityObjectToClipPos(v.vertex);
o.normal = v.normal;
o.color = v.normal * 0.5 + fixed3(0.5, 0.5, 0.5);
return o;
}
// 片元函数
// 片元函数返回颜色
fixed4 frag(v2_f f) : SV_Target // SV_Target语义: 返回值,片元函数返回给系统,系统显示到屏幕上的颜色
{
// return fixed4(f.color, 1.0);
return fixed4(f.normal, 1.0);
// return fixed4(1.0, 1.0, 1.0, 1.0);
}
ENDCG
}
}
Fallback "Diffuse"
}