使用POSITION语义得到了模型的顶点位置,如果我们想得到更多的模型数据该怎么办呢?
我们想得到例如:
1.每个顶点的纹理坐标和法线方向。
2.纹理坐标访问纹理,法线可用于计算光照。
因此我们要为顶点着色器定义一个新的输入参数,这个参数不再是一个简单的数据类型,而是一个结构体。修改代码如下:
//漫反射
// 逐顶点光照
Shader "yy/SimpleShader" {
SubShader{
Pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
//定义一个结构体来定义顶点着色器的输入
//把数据从应用阶段传递到顶点着色器中
struct a2v{
//POSITION告诉Unity 用模型空间的顶点坐标填充vertex变量
float4 vertex:POSITION;
//NORMAL告诉Unity 用模型空间的顶点坐标填充normal变量
float3 normal:NORMAL;
//TEXCOORD0告诉Unity 用模型空间的顶点坐标填充texcoord变量
float4 texcoord:TEXCOORD0;
}
float4 vert(a2v v):SV_POSITION{
//使用v.vertex来访问模型空间的顶点坐标
return UnityObjectToClipPos(v.vertex);
}
fixed4 frag():SV_Target
{
return fixed4(1.0,1.0,1.0,1.0);
}
ENDCG
}
}
}










网友评论