VDR 跟进 – HDR 信号的色调映射

发布时间:
Timothy Lottes's avatar
Timothy Lottes

这是我之前 GDC 关于可变动态范围讲座的第三篇跟进系列文章。之前的文章涵盖了抖动,今天的主题是关于将游戏的色调映射管线适配到传统显示信号和新的 HDR 输出信号的实用建议。

可变峰值亮度

我们可以直接从Ultra HD Premium认证要求中获取基准 HDR 电视特性:OLED 显示器必须达到 540 尼特以上,LCD 显示器必须达到 1000 尼特以上。支持 HDR 输入之前的电视通常会超过 OLED 的 540 尼特基准。截至发文时,HDR LCD 电视往往会略微超过 1000 尼特,但不会增加一个档位,并且甚至可能随时间变化。认证要求不包括任何色彩校准要求,也不包括维持峰值亮度的任何时间要求。达到峰值亮度与实际消费者功耗以及可能的散热限制相悖。例如,根据HDTVTest评测的边框发光三星 UE55KS8000 HDR 电视,在校准前达到了 1420 尼特“在从约 700 尼特升至 1400 尼特时需要至少 7 秒。然后显示器会保持 1400 尼特 13 秒,之后峰值亮度会缓慢下降到 520 尼特”(引用自评测)。

典型的消费级 HDR 电视的亮度范围可以从 0 尼特到比高质量的非 HDR 电视亮一点点(略高于一个档位)。请注意,室内环境光强度范围很广,从夜晚(无灯光)到白天(无遮挡窗户)大约有 15 个档位。为了说明这一点,一个老式的非 HDR 显示器在夜晚看起来可能比白天的 HDR 显示器亮很多倍。因此,HDR 和非 HDR 显示器都面临着完全相同的游戏内容创作挑战,用户将在低对比度(即 LDR)和高对比度(即 HDR)的观看条件下在两种显示器上体验游戏。

虽然 HDR 信号是从 0 到 10000 尼特(绝对信号),但 Ultra HD Premium 认证不包含任何固定的色调映射算法。由电视决定如何将 0 到 10000 尼特的输入范围映射到 HDR 电视的有限输出容量。电视的色调映射算法选择可能会对视频信号的感知亮度产生可变影响。有些电视在色调映射过程中可能会将信号调暗,以增加峰值亮度和中间调之间的对比度。

以上因素表明需要一个易于访问的游戏内曝光控制

理想情况下,用户应该能够在游戏暂停期间(不应用任何变暗或全屏效果)调整曝光。曝光范围应该有 +/- 多个档位,以覆盖从夜晚到白天的观看条件的差异。

HDR 信号 = 两部分色调映射

HDR 信号具有绝对刻度,HDR10 信号必须填充完整的 0 到 10000 尼特输出范围。这意味着针对 HDR 信号的游戏需要进行两部分色调映射。首先,游戏必须将更大的渲染输出范围映射到这个 0 到 10000 尼特的信号范围。然后,电视会将 0 到 10000 尼特的范围映射到电视本身的相对范围。让我们通过一些数值示例来分解一下,暂时忽略色域和抖动问题。

传统非 HDR 示例:游戏渲染到 {0 到 65504}(峰值 FP16 值)。游戏然后将其色调映射到 {0 到 1},这大致代表了在不错的非 HDR 电视上的 {0 到 500 尼特}。传统的非 HDR 信号是显示相对刻度。最后,游戏将线性输出转换为 sRGB 或 Gamma 2.2 或 Rec709(取决于所需目标),然后写入后台缓冲区。

HDR 示例:假设 HDR 输出仍然是 {0 到 1},现在代表 {0 到 10000 尼特}。这与支持 32 位 10:10:10:2 输出并由应用程序预先应用 PQ 变换的 API 相符。这大约需要一个500 尼特 / 10000 尼特或 1/20 的缩放因子。游戏渲染到 {0 到 65504}。然后使用输出中间级别(我 GDC 演示文稿中的midOut)乘以这个 1/20 的缩放因子将其色调映射到 {0 到 1},最后应用线性到 PQ 的变换,然后写入后台缓冲区。

因此,在这个阶段,非 HDR 和 HDR 路径实际上是相同的着色器代码,唯一例外的是,HDR 路径在最后需要一个更耗时的 PQ 变换(而不是例如更快的 sRGB 输出)。

请注意,这个 1/20 的缩放因子是一个略大于 4 个档位的变化。这是一个相当大的变化。这意味着拥有一个在突出压缩之外保持 RGB 比例(如我的 GDC 演示文稿所示)的易于访问的游戏内色调映射器至关重要。否则,游戏内切换 HDR 信号输出/输入将会产生不良后果,例如影响暗部的饱和度等。对于那些将曲线分别应用于 R、G 和 B 通道的传统色调映射器来说,这将是一个问题。

我的 GDC 演示文稿中的midOut输出中间级别,也对应于前面部分提到的游戏内曝光控制。所以,切换 HDR 信号模式的进出,仅仅是应用一个额外的隐藏缩放在这个曝光控制上。

实际上,这个 1/20 的因子不会完全是 1/20。确定正确缩放因子的方法是,拥有一台具有校准过的非 HDR 输出的机器作为“主控”。然后,使用另一台机器在同一内容上驱动 HDR 输出,并手动找到一个缩放因子,在各种 HDR 电视上最好地将中间调与“主控”匹配。这是必需的,因为每台电视都有可能拥有不同的色调映射算法(具有不同的隐藏内部曝光偏差,甚至可能根据电视用户控件而改变)。结果将是一个好的初始估算。而在实际使用中,用户将通过游戏内曝光控制进行微调。

管理 HDR 和非 HDR 模式切换

当游戏以窗口模式运行时,它输出一个非 HDR 信号。当游戏转换为独占全屏并启用 HDR 时,显示驱动程序将在 v-blank 期间执行一个隐藏的模式切换,然后开始将 HDR 元数据注入显示信号的非可见部分。电视会看到 HDR 元数据并响应,将其解释为 HDR 信号。

假设电视在 HDR 和非 HDR 模式下具有相同的峰值亮度,假设窗口模式下的桌面亮度不高(这会引入全局调光),并且假设 1/20 的缩放因子校准对电视有效,那么在 HDR 和非 HDR 模式下的输出应该看起来相似(至少在中间调方面),并且两者都会看起来像是“HDR”。区别将在于:

  • 色域的变化。
  • HDR 模式下的亮部和高光与非 HDR 模式下的表现不同。在 HDR 模式下,游戏的外观会因电视的色调映射算法而异。此外,我 GDC 演讲中提到的技术,例如通过改进的串扰来在突出压缩中保持饱和度,在 HDR 模式下无法应用,因为电视负责大部分突出压缩。
  • HDR 模式也可能影响暗部,取决于电视的色调映射算法是否进行对比度调整。

HDR 模式切换的一个明显的用户界面挑战是,如前所述的游戏内曝光控制被同时用于夜间到白天的观看条件,以及微调非 HDR 到 HDR 的电视偏差。建议将其拆分为两个用户可见的控件:“曝光”和“HDR 曝光偏差”(后者默认设置为 1/20 缩放因子)。最好将这两个控件都按档位(即 log2 刻度)工作,这样控件的移动在感知上是均匀的。

我在这篇文章中没有涉及色域问题,因为这是一个庞大的话题,值得单独发一篇帖子。下次再见……

本系列其他文章

Timothy Lottes 的其他帖子

Timothy Lottes's avatar

Timothy Lottes

Timothy Lottes 是 AMD 图形性能研发团队的成员。提供第三方网站链接仅为方便用户,除非明确说明,AMD 对此类链接网站的内容概不负责,且不暗示任何认可。

相关新闻和技术文章

相关视频

© . This site is unofficial and not affiliated with AMD.