与标准清晰度内容相比,高动态范围内容具有更宽的色域和更大的亮度范围。
URP 可以为支持该功能的显示器输出__ HDR__高动态范围
See in Glossary 内容。
注意:必须将 HDR 输出与线性颜色空间结合使用。有关 Unity 中颜色空间的更多信息,请参阅颜色空间。
Unity 的 HDR 输出分为以下步骤,这些步骤始终按以下顺序进行:
色调映射是 HDR 输出过程的第一步。在此步骤中,Unity 根据目标显示器的动态范围来平衡场景的曝光和色调。动态范围由以下属性决定:
有关这些属性的更多信息,请参阅重要色调映射值。
同时,Unity 会执行颜色空间转换。Unity 将颜色从默认的 Rec.709 颜色空间转换为目标显示器的颜色空间。这会将场景中的颜色映射到目标显示器中更宽的色域,并确保 Unity 利用显示器上可用的全色域。
有关更多信息,请参阅 URP 中的 HDR 色调映射并配置 HDR 色调映射设置。
HDR 输出的第二步是传递函数。传输函数将渲染过程的输出转换为指定显示器的亮度级别。Unity 为显示器确定正确的传输函数,并根据显示器的预期标准使用此函数对输出进行编码。这样使得 Unity 能够为伽马使用正确的精度级别,并在目标显示屏上创建准确的曝光级别。
启用允许 HDR 显示输出后,您必须为 HDR 输入配置色调映射设置。
为了有效配置这些设置,您需要了解与色调映射相关的某些值如何确定 HDR 输出的视觉特征。
要正确利用 HDR 显示器的功能,您的色调映射配置必须考虑目标显示器的功能,特别是这三个值(以尼特为单位):
注意:低动态范围 (LDR) 和高动态范围 (HDR) 内容在具有相同纸白值的显示器上显示的亮度不一样。这是因为显示器对低动态范围内容应用了额外的处理,从而提高了其亮度级别。因此,最佳实践是为您的应用实施校准菜单。
Unlit 材质不会响应光照变化,因此将 Unlit 材质用于用户界面是标准做法。当不专门针对 HDR 显示器时,无照明材质渲染的计算将亮度定义为 0 到 1 之间的值。在这种情况下,值 1 对应于白色,值 0 对应于黑色。
然而,在 HDR 模式下,URP 使用纸白色值来确定无光照材质的亮度。这是因为 HDR 值可能超出 0 到 1 的范围。
因此,纸白值决定了 HDR 模式下__ UI__(即用户界面,User Interface)让用户能够与您的应用程序进行交互。Unity 目前支持三种 UI 系统。更多信息
See in Glossary 元素的亮度,尤其是白色元素,其亮度与纸白值相匹配。
可以在色调映射体积组件设置中选择和调整色调映射模式。还可以使用脚本调整 HDR 色调映射配置的某些方面。有关这方面的更多信息,请参阅 HDROutputSettings API。
启用允许 HDR 显示输出后,HDR 色调映射选项将在音量组件中可见。
URP 提供两种色调映射模式:中性和 ACES。每种色调映射模式都有一些独特的属性。
有关这些模式的更多信息,请参阅色调映射体积覆盖参考的 HDR 输出部分。
HDROutputSettings API 可以启用和禁用 HDR 模式,以及查询某些值(例如纸白)。
这些值也会列在渲染调试器的 HDR 输出显示表中。要访问该表,请导航到 Window > 分析 (Analysis) > 渲染管线调试器 (Render Pipeline Debugger) > 渲染 (Rendering) > HDR 输出 (HDR Output)。
使用屏幕外渲染技术时,并非场景中的所有相机都直接输出到显示器,例如当 Unity 将输出渲染到渲染纹理时。在这些情况下,请在渲染后期处理之前使用相机的输出。
Unity 不会对使用屏幕外渲染技术的相机的输出应用 HDR 输出处理。这样可以防止 HDR 输出处理两次应用于相机的输出。
HDR 输出依赖于 HDR 渲染以正确的格式为色调映射和颜色编码提供像素值。HDR 色调映射后的值超过 1(以尼特为单位)。这与像素值介于 0 和 1 之间的 SDR 渲染不同。因此,将 SDR 渲染与 HDR 输出结合使用可能会导致渲染的图像看起来曝光不足或过饱和。
启用 HDR 输出后,可以根据每个相机的情况使用 SDR 渲染,这对于仅渲染无光照材质的相机非常有用,例如,用于小型贴图渲染。但是,将 SDR 渲染与 HDR 输出结合使用会面临一些限制。
为了确保在使用 SDR 渲染与 HDR 输出时正确渲染,必须避免任何发生在后期处理之后的渲染通道。这包括 URP 的内置效果,可在后期处理之后插入渲染通道。因此,使用 HDR 输出的 SDR 渲染与以下功能不兼容:
要将 SDR 渲染与 2D 渲染器上的 HDR 输出结合使用,必须确保关闭后期处理。
URP 仅支持以下平台上的 HDR 输出:
注意:DirectX 11 仅支持播放器中的 HDR 输出,不支持编辑器中的 HDR 输出。