Unity 顶点转换与效果

根据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;

移动物体当模型顶点大于世界坐标原点显示红色,否则显示绿色,如下图:

示例工程下载

猜你喜欢

转载自blog.csdn.net/st75033562/article/details/129277807