Version: Unity 6.0 (6000.0)
语言 : 中文
高动态范围 (HDR)
HDR 拾色器参考

高动态范围 (HDR) 简介

高动态范围 (HDR) 技术能够产生比标准动态范围 (SDR) 图像更高的亮度动态范围的图像,可以对颜色和亮度进行逼真的描绘。

HDR 的工作原理

在标准渲染中,像素的红色、绿色和蓝色值通常使用 0 到 1 范围内的 8 位数值存储,其中 0 表示零强度,1 表示显示设备的最大强度。这种有限的数值范围无法准确反映人眼对光线的感知方式,尤其在场景中存在极亮或极暗元素时,会导致图像失真。

__ HDR__高动态范围
See in Glossary
渲染中,像素值通过浮点数存储。从而支持更宽广的数值范围,更贴近人眼对颜色和亮度的感知。

Unity 中的 HDR

在 Unity 中,HDR 图像可用于内部渲染计算。此功能称为 HDR 渲染。启用 HDR 渲染后,Unity 会将场景渲染到 HDR 图像缓冲区,并基于该缓冲区执行渲染操作(如后期处理效果)。这意味着渲染计算基于更真实的数值范围,从而可能获得更逼真的视觉效果。

某些兼容平台上,Unity 支持将 HDR 图像直接输出到显示设备。此功能称为 HDR 输出。

使用 HDR 的注意事项

HDR 技术具有诸多优势和劣势,在决定使用 HDR 之前,需要综合考虑这些因素,以确保其适合项目需求。

使用 HDR 的优点

HDR 具有以下优点:

  • 在高强度区域不会丢失颜色
  • 更好地支持泛光和发光效果
  • 减少低频光照区域的条带

使用 HDR 的缺点

HDR 具有以下缺点:

  • VRAM 使用量增加
  • 色调映射(如果使用)产生额外的计算开销
  • 硬件抗锯齿不兼容 HDR 渲染

渲染管线兼容性

有关 URP 中的 HDR 渲染和 HDR 输出的信息,请参阅 URP 中的 HDR 输出

有关 HDRP 中的 HDR 渲染和 HDR 输出的信息,请参阅 HDRP 中的 HDR 输出

关于可编程渲染管线(URP 和 HDRP)对 HDR 渲染和 HDR 输出的支持详情,请参阅渲染管线功能比较

色调映射

色调映射是将颜色值从一个范围映射到另一个范围的过程。在 HDR 工作流程中,必须通过色调映射将 HDR 图像缓冲区中的颜色值转换为显示设备可处理的范围。否则,图像中的细节和颜色信息可能会丢失,尤其是在高亮度区域。

例如,一个异常明亮的场景在 HDR 渲染后,若未进行色调映射,大部分像素会超出显示范围。
例如,一个异常明亮的场景在 HDR 渲染后,若未进行色调映射,大部分像素会超出显示范围。
与上面相同的场景。但这一次,色调映射将大多数强度映射到了更合理的区间内。请注意,自适应色调映射甚至可以在上图和此图之间进行混合,从而模拟捕获介质(例如眼睛、摄像机)的自适应特性。
与上面相同的场景。但这一次,色调映射将大多数强度映射到了更合理的区间内。请注意,自适应色调映射甚至可以在上图和此图之间进行混合,从而模拟捕获介质(例如眼睛、摄像机)的自适应特性。

当将 HDR 渲染与 SDR 输出结合使用时,必须通过色调映射将 HDR 图像缓冲区转换为 SDR 图像以供显示。Unity 提供了多种色调映射后期处理效果,例如:Post-Processing Stack V2 包URP 集成后期处理解决方案HDRP 集成后期处理解决方案

将 HDR 渲染与 HDR 输出一起使用时,您可以:

  • 创建您自己的色调映射解决方案,将 HDR 图像缓冲区直接转换为兼容的 HDR 格式进行显示

  • 使用 Unity 的色调映射后期处理效果将 HDR 缓冲区转换为 SDR 图像,然后通过 Unity 的自动输出色调映射功能将 SDR 图像转换为适合输出的格式。关于 Unity 自动输出色调映射的更多详细信息,请参阅 HDROutputSettings.automaticHDRTonemapping 的文档。

  • HDROutputSettings API 于2020.1 NewIn20201 版本中引入。

高动态范围 (HDR)
HDR 拾色器参考