为 Windows 11 22H2 打开全局色彩管理
Windows 11 22H2 现已支持完整的全局色彩管理功能。目前针对SDR广色域显示器配置比较容易,不仅能解决笔记本电脑OEM不做色彩管理功能或者台式机显示器不做sRGB模式之类的问题,还能在UI正确按sRGB色域显示的基础上实现部分应用的广色域输出。
前置条件
- Windows 11 22H2
- 显示器是超过100% sRGB覆盖的广色域屏幕,例如DCI-P3
- 显示器 不支持 全局HDR10输出
- 支持HDR10的显示器目前暂不支持在SDR模式下打开全局色彩管理
- 支持HDR10的显示器打开HDR就有全局色彩管理,但是实际输出效果取决于屏幕自身,只能听天由命
- 参数不达标的假HDR显示器(例如DisplayHDR 400)是HDR色彩管理准确度的重灾区,只能说尽量不要购买假HDR的显示器……当然这种显示器一般也不是广色域
- 确保显示器EDID里的色域信息准确(一般一线大厂的EDID对于日常使用而言足够准确)
- 显卡是较新的型号 [1] ,并且已经更新到最新的驱动版本
系统配置步骤
1. 添加注册表项于 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers,新建 EnableAcmSupportDeveloperPreview (DWORD) 设置为 1 并重启系统;
2. (AMD独显或APU) 进入显卡控制面板,点击右上角的齿轮,进入显示器设置页面, 打开自定义颜色 并 关闭色温控制 。I/N/Q显卡是否需要这一步以及如何作出对应的配置暂时还没有机会了解;
3. 进入系统设置/系统/屏幕/高级显示器设置,勾选“自动管理应用的颜色”。
配置Edge浏览器
进入 about:flags 页面,搜索 #force-color-profile ,设置为 scRGB linear (HDR where available) 即可在Edge浏览器里正确输出广色域图片。设置完成后可以在以下测试页面进行测试
效果
经过这样的配置后,适配了scRGB输出的应用(如UWP图片app、经过额外配置的Edge浏览器等)可以正常输出广色域内容,而普通的旧应用输出的内容将被限缩到sRGB。同时,如果屏幕是8bit输出格式,那么显卡display engine会通过抖动输出10bit精度的颜色,获得更好的色彩表现。
当然这么配置的代价是更加费电,因为全局composition会改用FP16而非RGB888,这样更吃内存/显存带宽。再就是目前仍然有例如Edge播放视频的场景下MPO会失效等问题,导致播放视频时的GPU占用无法降低至0%。建议在使用电池时关闭上面第三步里打开的选项。
同时,目前广色域内容暂时无法被截图保留。例如WebKit WCG测试页面的红色WebKit logo,使用Windows自带截图工具截出来就是纯sRGB红。
如果日常没有广色域需求,只是不慎购买了没有色彩管理的广色域设备希望避免过饱和,那么上面第一步、第三步全都可以不要。事实上,系统也不需要更新22H2,Edge设置也可以不改,直接在显卡驱动面板里完成第二步操作即可限缩sRGB(仅限A卡。N卡需要借助第三方工具,I卡自求多福)
扩展阅读
以上为最基本的SDR广色域全局色彩管理的配置方式。如果需要更多高级功能,例如加载icc校准等等,可以参考研究下列GitHub项目,包含更多详细的信息与一些有用的相关工具。
参考
- ^ 参考官方文档的Supported GPU https://devblogs.microsoft.com/directx/auto-color-management/