本节介绍不同的着色器类型支持哪些类型的运动来计算运动矢量。
URP 仅支持不透明材质(包括 Alpha 裁剪材质)的运动矢量。URP 不支持透明材质的运行矢量。
URP Lit、Unlit、Simple Lit、Complex Lit 和 Baked Lit 着色器支持以下运动类型的每对象运动矢量:
要为特定材质启用 Alembic 运动矢量,请在材质检视面板的高级 (Advanced) 部分中勾选 Alembic 运动矢量 (Alembic Motion Vectors) 复选框。
注意:仅在使用 PlayableDirectors 组件渲染的 Alembic 顶点动画缓冲上使用勾选了 Alembic 运动矢量 (Alembic Motion Vectors) 复选框的材质。将此类材质用于常规绘制调用和 MeshRenderer 时,材质无法读取正确的运动矢量属性流,从而导致不正确的运动矢量。
URP Shader Graph Lit 和 Unlit 目标支持 URP ShaderLab 着色器部分中描述的所有运动矢量功能。除此之外,它们还其他运动矢量 (Additional Motion Vectors) 设置,其中包含以下选项:
基于时间 (Time-Based):Shader Graph 顶点动画的运动矢量是通过使用 Time 节点的当前帧和前一帧的值运行顶点位置子图两次来自动生成的。此模式仅适用于基于 Time 节点以程序方式计算的顶点动画,以及仅使用用户定义的参数(常量、属性、缓冲区、纹理)且帧之间不发生变化的顶点动画。
自定义 (Custom):选择此选项会增加额外的运动矢量顶点输出。输出允许您指定自定义对象运动矢量:每个顶点与前一帧中的位置之间的 3D 局部对象空间偏移。如果知道如何计算顶点在前一帧中的位置,则可以为顶点动画创作自定义运动矢量。Unity 在将运动矢量投影到最终的 2D 屏幕空间矢量之前,还会应用自定义运动矢量来变换运动、骨骼动画和 Alembic 动画。
无 (None):默认值。当着色器不修改顶点输出或不动画化顶点变形时,请使用此选项。
基于时间 (Time-Based) 和自定义 (Custom) 选项可在材质上启用 MotionVectors 通道。即使对象的变换在帧之间静止,也会每帧为其渲染对象运动矢量通道,除非 MotionVectorGenerationMode 属性设置为 Camera。