HDR
高动态范围 (HDR) 技术能够产生比标准动态范围 (SDR) 图像更高的亮度动态范围的图像,使得图像中的亮部和暗部细节都能得到更好的保留和展现,黑色更加深邃,亮部更加明亮,同时图像的色彩也更加丰富、饱满。
在标准渲染中,像素的红色、绿色和蓝色值均使用一个 0 到 1 范围内的 8 位值进行存储,其中 0 表示零强度,1 表示显示设备的最大强度。这一有限的数值范围无法准确反映我们在现实生活中对光的感知方式,并且当存在非常亮或非常暗的元素时,会导致图像不真实。在 HDR 渲染中,像素值使用浮点数进行存储。这种情况下允许更大范围的值,可以更准确地表示人眼感知颜色和亮度的方式。
Unity 中的 HDR
在 Unity 中,可以将 HDR 图像用于内部渲染计算。此功能称为 HDR 渲染。启用 HDR 渲染后,Unity 会将场景渲染到 HDR 图像缓冲区,并使用该 HDR 图像执行渲染操作,例如后期处理效果。这意味着使用实际值执行计算,因此可能会产生更逼真的效果。
在某些兼容平台上,Unity 支持将该 HDR 图像发送到显示设备。此功能称为 HDR 输出。
使用 HDR 的优点
- 在高强度区域不会丢失颜色
- 更好地支持泛光和发光效果
- 减少低频光照区域的条带
使用 HDR 的缺点
- VRAM 使用量增加
- 色调映射(如果使用)产生额外的计算开销
- 硬件抗锯齿不兼容 HDR 渲染
色调映射
色调映射是指将颜色值从一个范围映射到另一个范围的过程。使用 HDR 时,必须使用色调映射来转换 HDR 图像缓冲区中的颜色,以使这些值位于显示设备可以处理的范围内。如果不使用色调映射,则可能会丢失图像中的许多细节和颜色信息,尤其是在非常明亮的区域。
在 HDR 中渲染了异常明亮的场景并输出到 SDR。如果不执行色调映射,大部分像素会看起来超出范围。
与上面相同的场景。但这一次,色调映射将大多数强度映射到了更合理的区间内。请注意,自适应色调映射甚至可以在上图和此图之间进行混合,从而模拟捕获介质(例如眼睛、摄像机)的自适应特性。