探秘Windows 11:将HDR的虚拟SDR曲线转化为Gamma 2.2

探秘Windows 11:将HDR的虚拟SDR曲线转化为Gamma 2.2

Windows 11在HDR体验上取得了显著的进步,现在允许在整个桌面环境中持续启用HDR。这是通过在原生HDR10合成空间中模拟SDR色彩空间实现的,使得两种类型的内容可以并存。然而,对于“SDR”的定义有时却并不明确,因为它依赖于不同的观看条件。

通常我们有以下标准:

  • Gamma 2.4 — 标准参考。暗室观看(5勒克斯)。家庭影院用途。
  • Gamma 2.2 — 非标准,在不受控制的光照下(>50勒克斯)。计算机用途。

在22H2版本之后,Windows 11并未让用户选择用于SDR的色调曲线,而是使用了一种称为“分段式sRGB传输函数”的方法,原本是为电脑/网络使用设计的。虽然这个曲线理论上是gamma 2.2的近似,但在实际显示器的EOTF中并不常用。相反,gamma 2.2成为了事实上的标准,几乎所有的电脑显示器至今仍然使用它。

由于它的普及性,几乎所有网页内容和电脑游戏都以gamma-2.2输出的显示器为基础进行色彩校正,不论是有意还是无意。微软决定在HDR模式下采用分段式sRGB作为虚拟SDR曲线,这是一个失误。这会强制几乎所有应用和网页内容看起来不正确,有些甚至更加明显。

让我们以《暗黑破坏神IV》为例,一个本应黑暗且充满质感的游戏:

| Diablo IV 在 HDR (sRGB 曲线) | Diablo IV 在 SDR (gamma 2.2 曲线) | | ------------------------------------------- | ------------------------------------------------------- |

当HDR开启时,游戏的深阴影细节丢失,整体氛围变得灰暗,失去了深度。主要原因是——没错——Windows 11使用了分段式sRGB色调曲线。

我们可以比较sRGB与gamma 2.2的输出亮度差异:

| Gamma 2.2 与分段式sRGB图表 | | ---------------------------------------------- |

这里,gamma 2.2与sRGB之间的差异显而易见。sRGB曲线在中低调区明显更亮,使基于gamma-2.2制作的内容看起来平坦。

macOS提供了一个很好的解决方案,用户可以在显示设置中创建自定义参考模式,包括了SDR转移功能的调整。用户可以选择BT.1886(电影),纯伽玛2.2(PC用途),或者分段式sRGB(为了适应)。

解决方案:临时变通

这是一个最终需要微软来完全解决的问题。目前,我们只能通过一种临时补救办法。通过使用MHC2 ICC配置文件,我们可以将SDR的sRGB曲线转换为伽玛2.2曲线。

这种方法的一个缺点是,所有内容都会受到同样的变换,包括不需要该转换的原生HDR10内容;这些内容可能会看到略深的阴影,可能丧失一些阴影细节。你可以选择在查看原生HDR内容时禁用颜色配置文件,或者为了方便而接受稍高的对比度。

准确的曲线映射确实取决于Windows的“SDR内容亮度”值,因此我提供了几个配置文件供你选择,选择最接近你的设置的那个。转换也基于理想的映射,所以其准确性也会依赖于你的显示器及其校准质量。

下载 srgb_to_gamma2p2 颜色配置文件

操作指南

  1. 下载上面提供的颜色配置文件之一
  2. 打开Windows的“颜色管理”工具
  3. 点击底部左下角的“添加”
  4. 点击“浏览...”,然后选择你下载的颜色配置文件
  5. 勾选“添加为HDR配置文件”复选框(有时称为“高级颜色”)
  6. 点击“确定”
  7. 选择你添加的配置文件,然后点击“设为默认配置文件”
  8. 完成

备用程序/自定义配置文件

除了使用MHC2颜色配置文件外,我们还可以利用ArghyllCMS的dispwin工具加载任意转换。这样做的好处是我们可以生成和应用任何自定义LUT,独立于颜色配置文件。这让你可以根据自己的SDR白点和伽玛功率创建转换,并且我们可以依赖Windows HDR校准工具生成的配置文件,以获得正确的HDR元数据信号。

  1. 下载此repo的发布.zip并解压缩到一个永久位置的文件夹。
  2. 使用我的在线工具生成LUT文件。
  3. 打开lut.cal,然后将从第2步生成的LUT文件内容粘贴到该文件中,完全替换原始内容。
    • 默认情况下,该文件包含从白点为200、伽玛功率为2.2的转换。
  4. 运行srgb-to-gamma.bat以应用转换。
    • 运行revert.bat以撤销转换。
  5. 以管理员身份运行auto-start.bat以便在启动时自动应用转换。
    • 如果移动文件夹,则需要重新运行此命令,但更改.cal文件时不需再次运行。

在Windows 11的最新构建中,从某些待机状态恢复时,伽玛转换会被撤销。作为一个额外步骤,我们可以创建一个自动化任务,以便从休眠或屏幕保护器恢复后重新应用转换。

(可选)在从睡眠/屏幕保护器恢复时重新应用转换:

  • 打开Windows任务计划程序(Win+R,taskschd.msc),双击任务名称“应用sRGB到Gamma LUT”
  • 在“触发器”选项卡中,点击“新建...”来添加新的触发器:
  • 将“开始任务”设置为“事件发生时”
  • 设置“日志”为“系统”
  • 设置“源”为“Power-Troubleshooter”
  • 设置“事件ID”为“1”
  • 点击“确定”创建触发器,再次点击“确定”完成任务更改。

此外,@mspeedo 创建了一个AutoHotkey脚本来按需应用不同SDR白点和伽玛功率的转换,还添加了一个热键来切换转换,这对于查看原生HDR内容非常有用。你可以在这里查看它:链接

附录

Windows SDR 内容亮度表格

| SDR 亮度值 | SDR 白屏亮度 | | -------------- | -------------- | | 0 | 80 nit | | 5 | 100 nit | | 10 | 120 nit | | 30 | 200 nit | | 55 | 300 nit | | 80 | 400 nit | | 100 | 480 nit |

注意事项

  • 伽玛修正会在关闭HDR(包括通过键盘快捷键)时保留,使SDR显得更暗。关闭HDR时,请确保在“颜色管理”工具中重新应用你的SDR颜色配置文件(“设为默认配置文件”)。同样,重新启用HDR时,确保重新应用纠正的颜色配置文件。如果你没有SDR颜色配置文件,请点击“添加”并选择_sRGB IEC61966-2.1_作为你的默认配置文件。
  • 如果你有NVIDIA GPU,请确保NVCP桌面颜色设置设为“精确”或“增强”模式;转换不会在“参考”模式下应用。
  • 所有配置文件标记为峰值亮度800 nit,黑色水平0。
  • 超过分散式SDR白色的像素值保持不变;在接近1的地方添加了一个软肩,以使曲线映射与HDR值平滑过渡。
  • 已在LG C2 OLED上测试。

这些颜色配置文件的创建得益于MHC2GenArgyllCMS

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾雁冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值