Alpha 输出
为了最大限度提高性能、降低带宽使用量,默认情况下 HDRP 以 R11G11B10 格式渲染图像帧。但是,此格式不包括 Alpha 通道;希望在其他图像上合成 HDRP 输出的应用程序可能需要使用该通道。
要将 HDRP 配置为输出 Alpha 通道,请打开 HDRP 资源(菜单:Edit > Project Settings > Graphics > Scriptable Render Pipeline Asset),找到 Rendering 部分,然后将 Color Buffer Format 设置为 R16G16B16A16。但请注意,启用此选项会产生性能开销。在 HDRP 中,除非启用 Alpha Clipping,否则不透明材质始终在 Alpha 通道中输出 1。如果要导出不透明材质的 Alpha,一种解决方案是启用 Alpha Clipping 并将 Threshold 设置为 0。
此外,启用后期处理时,还应将后期处理操作的 Buffer Format 设置为 R16G16B16A16,以便在 Alpha 通道中应用后期处理操作。可从 HDRP 资源的后期处理部分中进行此项选择。如果后期处理格式设置为 R11G11B10,则 HDRP 将输出没有任何后期处理的 Alpha 通道副本。
下表总结了与输出帧的 Alpha 通道有关的 HDRP 行为。
渲染缓冲区格式 | 后期处理缓冲区格式 | Alpha 输出 |
---|---|---|
R11G11B10 | R11G11B10 | 无 Alpha 输出 |
R16G16B16A16 | R11G11B10 | 没有后期处理的 Alpha 通道 (AlphaCopy) |
R16G16B16A16 | R16G16B16A16 | 有后期处理的 Alpha 通道 |
请注意,在路径追踪 (Path Tracing) 中也支持 Alpha 输出。
DoF 和 Alpha 输出
可能需要对 Alpha 通道进行后期处理的另一种情况是使用景深的场景。在这种情况下,如果不处理 Alpha,则合成操作将使本应模糊显示的对象出现清晰的界限。下图更好地说明了这一点:
在纯蓝色背景上合成的失焦球体,渲染和后期处理均使用 R16G16B16A16 缓冲区格式。在这种情况下,在 Alpha 通道中应用了 DoF,从而形成了恰当的合成结果(嵌入的图像中显示了合成结果中使用的输出 Alpha)。
使用 AlphaCopy 在纯蓝色背景上合成的失焦球体。在这种情况下,没有在 Alpha 通道中应用 DoF,从而在合成球体周围产生了锐利的轮廓(嵌入的图像中显示了合成结果中使用的输出 Alpha)。
时间抗锯齿和 Alpha 输出
启用时间抗锯齿 (TAA) 时,强烈建议为 Alpha 通道启用后期处理(渲染和后期处理均使用 R16G16B16A16 格式)。如果未对 Alpha 通道进行后期处理,则 Alpha 遮罩将出现抖动,如下图所示:
使用 AlphaCopy 通过 TAA 渲染的球体,使用 Alpha 通道在纯蓝色背景上合成。TAA 无法临时稳定 Alpha 通道,从而导致最终图像抖动。
通过 TAA 渲染的球体(渲染和后期处理均使用 R16G16B16A16),使用 Alpha 通道在纯蓝色背景上合成。Alpha 通道中还应用了 TAA,从而产生稳定的合成。