一、空间变换
VertexOutput vert (VertexInput v)
{
VertexOutput o = (VertexOutput)0; // 新建一个输出结构
o.pos = UnityObjectToClipPos( v.vertex ); // 变换顶点信息 并将其塞给输出结构
o.nDirWS = UnityObjectToWorldNormal(v.normal); // 变换法线信息 并将其塞给输出结构
return o; // 将输出结构 输出
}
- 1、顶点位置->齐次裁剪空间
o.pos = UnityObjectToClipPos:将模型空间下的顶点转换到齐次裁剪空间。可以理解为由模型顶点信息换算而来的顶点屏幕位置。
o.nDirWS = UnityObjectToWorldNormal:将模型空间下的法线转换到世界空间(已归一化)。 - 2、顶点位置->世界空间
o.posWS = mul(unity_ObjectToWorld, v.vertex);
投影
TRANSFER_VERTEX_TO_FRAGMENT(o) 增加投影。需要同时在输出结构增加LIGHTING_COORDS(0,1) ,并且增加库文件。
网友评论