前向渲染和延迟渲染
高清渲染管线 (High Definition Render Pipeline, HDRP) 允许你使用前向渲染或延迟渲染来渲染光照材质 (Lit Materials)。可以将 Unity 项目配置为仅使用这些模式之一,或者允许项目同时使用这两种模式并在运行时基于每个摄像机进行切换。
使用前向渲染或延迟渲染
在 Unity 项目中使用前向渲染或延迟渲染之前,必须确保 HDRP 资源支持这些渲染模式。为此需要执行以下操作:
- 在 Project 窗口中选择 HDRP 资源以便在 Inspector 中查看该资源。
- 在 Rendering 部分下,使用 Lit Shader Mode 下拉选单选择 HDRP 支持的渲染模式。
可以在三种渲染模式之间进行选择:
Lit Shader Mode | 描述 |
---|---|
Forward | HDRP 在渲染每个单独的游戏对象时在单个通道中计算光照。 |
Deferred | HDRP 将屏幕上可见的每个游戏对象的材质属性渲染到 GBuffer 中。HDRP 随后为帧中的每个像素处理光照。 |
Both | 使用帧设置 (Frame Settings) 根据每个摄像机在前向 (Forward) 和延迟 (Deferred) 渲染模式之间进行切换。选择此选项会增加项目构建时间。 |
如果选择 Both,则可以为所有摄像机设置默认要使用的渲染模式,还可以在运行时为特定摄像机覆盖此默认渲染模式。例如,可以使用前向模式渲染平面反射探针 (Planar Reflection Probe),然后使用延迟模式渲染主摄像机。
要设置默认渲染模式,请执行以下操作:
- 在 Project 窗口中选择 HDRP 资源以便在 Inspector 中查看该资源。
- 选择 Default Frame Settings For Camera > Rendering,然后从 Lit Shader Mode 下拉选单中选择要设为默认渲染模式的渲染模式。
要编辑特定摄像机的渲染模式,请执行以下操作:
- 在 Hierarchy 窗口中选择摄像机以便在 Inspector 中查看该摄像机,然后启用 Custom Frame Settings 复选框。
- 在 Rendering 部分,启用 Lit Shader Mode 属性左侧的覆盖复选框。这样就允许您更改此摄像机的 Lit Shader Mode 并向 HDRP 指示应使用新值。
- 从 Lit Shader Mode 下拉选单中选择希望此摄像机使用的渲染模式。
选择光照着色器模式 (Lit Shader Mode)
要决定是使用前向还是延迟模式,请考虑项目所需的质量和性能等级。在大多数情况下,例如具有各种材质和多个局部光源的场景,HDRP 中的延迟渲染速度更快。某些情况下,例如具有单个方向光的场景,前向渲染模式可能速度更快。如果性能对项目而言不那么重要,请使用前向渲染模式以获得更好的渲染质量。
HDRP 强制以下类型的着色器使用前向渲染:
- 织物 (Fabric)
- 毛发 (Hair)
- AxF
- StackLit
- 无光照 (Unlit)
- 具有透明表面类型 (Transparent Surface Type) 的光照 (Lit) 着色器
如果在 HDRP 资源中将 Lit Shader Mode 设置为 Deferred,则 HDRP 使用延迟渲染来渲染使用不透明光照材质 (Opaque Lit Material) 的所有材质。
前向渲染和延迟渲染都实现相同的功能,但二者之间的质量可能不同。这意味着无论选择的何种 Lit Shader Mode,所有功能都能使用 HDRP。例如,屏幕空间反射 (Screen Space Reflection)、屏幕空间环境光遮挡 (Screen Space Ambient Occlusion)、贴花 (Decals) 和接触阴影 (Contact Shadows) 都能使用 Deferred 或 Forward Lit Shader Mode。尽管功能对等是 HDRP 的核心,但由于技术限制,这些效果的质量和准确性可能在不同的 Lit Shader Mode 之间有所差异。
HDRP 中的前向渲染和延迟渲染之间的差异
视觉差异
- 法线阴影偏差:在前向模式下,HDRP 对阴影偏差使用材质的几何法线(顶点法线),而延迟模式则使用像素法线。这意味着前向模式比延迟模式产生更少的阴影瑕疵。
- 发光颜色:在延迟模式下,由于技术限制,环境光遮挡会影响发光颜色。前向模式中没有这种情况。
- 环境光遮挡:在延迟模式下,HDRP 对间接漫射光照(光照贴图和光照探针)以及屏幕空间环境光遮挡效果应用环境光遮挡。因此将导致不正确的变暗效果。在前向模式下,HDRP 应用最小程度的环境光遮挡和屏幕空间环境光遮挡。因此将获得正确的变暗效果。
- 材质质量:在延迟模式下,HDRP 会压缩 GBuffer 中的材质属性,例如法线或切线。这会导致压缩瑕疵。在前向模式下,没有压缩,因此没有压缩瑕疵。
技术差异
- 对于使用前向模式的材质,HDRP 始终渲染深度预通道,从而输出深度和法线缓冲区。而在延迟模式下,如果不使用贴花,这是可选的。
- 在前向模式下,HDRP 在贴花 DBuffer 通道之后更新法线缓冲区。HDRP 对屏幕空间反射和其他效果使用法线缓冲区。
构建时间
使用前向渲染或延迟渲染时,HDRP 项目的构建时间可能更短。选择 Lit Shader Mode 为 Both 的缺点是大大增加了播放器的构建时间,因为 Unity 要为每个材质构建两组着色器,一组用于前向,一组用于延迟。如果在项目中全部使用了特定的渲染模式,则应使用该渲染模式而不是 Both,这样可以减少构建时间。还可以减小 HDRP 为着色器分配的内存大小。