5.2.2 模型数据的获取
Shader "Custom/Chap5.2.2/Simpler Shader"
{
SubShader {
pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// a2v 的意思是 app to vertex -- 这里的名字可以随便取嗷, 但是 a2v 感觉有更清晰意思。
// 定义顶点着色器的输入
struct a2v {
// POSITION的意思就是用模型的顶点坐标来填充 vertex 变量
float4 vertex: POSITION;
// NORMAL 的意思是用模型的空间的法线方向填充 noraml 变量
float3 normal: NORMAL;
// TEXCOORD0 的意思是用模型的第一套纹理坐标填充 texcoord 变量
float4 texcoord: TEXCOORD0;
};
// 报错注意点: struct a2v {}; 的末尾这个 ";" 要添加,不然会报错。 也就是结构体末尾要使用 ; 与后文隔开
float4 vert(a2v v):SV_POSITION {
// 上一章节使用的是 v 因为上一章的 v 是使用 POSITION 填充的
// 这一章使用 v.vertex 因为 v.vertex 是使用 POSITION 填充的
return UnityObjectToClipPos(v.vertex);
}
fixed4 frag(): SV_Target {
return fixed4(1.0,1.0,1.0,1.0);
}
ENDCG
}
}
}
- 上一章节使用了 float4 v: POSITION 获取顶点坐标而传入顶点着色器
- 这一章节使用 a2v v 来获取更多的信息传入着色器。
- a2v 是一个结构体,里面可以自定义想要传入顶点着色器的数据。