根据Unity 渲染管线模型顶点在顶点函数中需要转换为裁剪空间。
借助Unity 内置函数,参考文章。实现转换。
如: UnityObjectToClipPos(v.vertex); 将v.vertex转化为裁剪空间下坐标
下面借助几个示例
示例一 依据模型坐标改变颜色
以模型的x>0 做为切换条件
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex); //v.vertex原始顶点函数,转换成裁剪空间后的坐标 o.vertex
if (v.vertex.x > 0) //模型x轴坐标
o.col = float4(1, 0, 0, 1); //红色
else
o.col = float4(0, 1, 0, 1); //绿色
return o;
示例二 依据世界坐标改变颜色
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex); //v.vertex原始顶点函数,转换成裁剪空间后的坐标
float4 wpsp = mul(unity_ObjectToWorld, v.vertex); //v.vertex原始顶点函数转换成世界坐标
if (wpsp.x > 0) //世界x轴坐标
o.col = float4(1, 0, 0, 1); //红色
else
o.col = float4(0, 1, 0, 1); //绿色
return o;
移动物体当模型顶点大于世界坐标原点显示红色,否则显示绿色,如下图: