HDRP 中的运动矢量
运动矢量捕获游戏对象从一帧到下一帧的每像素屏幕空间运动。为了计算游戏对象的运动矢量,HDRP 会使用游戏对象在当前帧和前一帧中的位置差异。
HDRP 会将运动矢量用于时间抗锯齿 (TAA) 和运动模糊等各种效果。
使用运动矢量
要使用 HDRP 中的运动矢量,必须在以下位置启用运动矢量:
- 在 Unity 项目的 HDRP 资源中
- 在帧设置 (Frame Settings) 中
在 HDRP 资源的 Inspector 中,导航到 Rendering 部分,然后启用 Motion Vectors 复选框。然后,可以为所有摄像机启用运动矢量,也可以为每个摄像机分别启用运动矢量。要为所有摄像机启用运动矢量,请导航到 Default Frame Settings For > Rendering,然后启用 Motion Vectors 复选框。这样会启用摄像机运动矢量。现在,还可以启用 Object Motion Vectors 复选框。如果启用此复选框,HDRP 将计算对象运动矢量。如果禁用此复选框,HDRP 仅计算摄像机运动矢量。
HDRP 分两个阶段计算运动矢量:
- HDRP 首先计算对象运动矢量。要使网格渲染器 (Mesh Renderer) 写入对象运动矢量,请在其 Inspector 中找到 Additional Settings,然后从 Motion Vectors 下拉选单中选择 Per Object Motion。如果在帧设置 (Frame Settings) 中启用 Object Motion Vectors,HDRP 现在会计算此网格渲染器的对象运动矢量。
- HDRP 随后计算由摄像机运动引起的摄像机运动矢量。这适用于在第一阶段没有写入运动矢量的像素。要使 HDRP 计算网格渲染器的摄像机运动矢量,请在网格渲染器的 Inspector 中找到 Additional Settings,然后从 Motion Vectors 下拉选单中选择 Camera Motion Only。
如果根本不希望 HDRP 计算网格渲染器的运动矢量,请在网格渲染器的 Inspector 中找到 Additional Settings,然后从 Motion Vectors 下拉选单中选择 Force No Motion。
透明对象的运动矢量
默认情况下,HDRP 不会渲染透明材质的运动矢量。这是因为透明游戏对象的运动矢量会覆盖其后方游戏对象的运动矢量。例如,窗户会覆盖在其后面飞鸟的运动矢量。
要使 HDRP 渲染透明材质的运动矢量,请执行以下操作:
- 在 HDRP 资源的 Inspector 中,找到 Default Frame Settings For > Rendering,然后启用 Transparent Writes Motion Vectors 复选框。
- 在透明材质的 Inspector 中,找到 Surface Options,然后启用 Transparent Writes Motion Vectors 复选框。
当透明对象在给定像素上写入运动矢量时,它们会替换该像素先前的运动矢量。这对于使用 Alpha 裁剪的材质(如毛发)特别有用。 如果将运动模糊与透明游戏对象结合使用,请注意运动模糊也会使用深度信息。这意味着也应该使材质写入深度信息。要执行此操作,请找到 Surface Options 并启用 Transparent Depth Postpass 复选框。