白色级别调整效果

此效果允许线性缩放图像的白色级别。 在显示引用亮度空间和场景引用亮度空间之间转换时,这特别有用,反之亦然。

此效果的属性由 D2D1_WHITELEVELADJUSTMENT_PROP枚举标识,CLSID CLSID_D2D1WhiteLevelAdjustment

效果属性

显示名称和索引枚举 类型和默认值 说明
InputWhiteLevel,D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL FLOAT 输入图像的白色级别(以尼茨为单位)。
OutputWhiteLevel,D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL FLOAT 输出图像的白色级别(以尼茨为单位)。

备注

此效果旨在与 HDR 色调映射效果 相结合,使你能够在 Direct2D 中呈现具有正确颜色管理和色调映射的 HDR 图像。 有关更多详细信息,请参阅该主题的 “备注 ”。 这些效果针对任何想要提供一流的 HDR 图像查看体验的框架,这些体验处理所有Windows HDR 图像格式,并适应显示 ((无论是 HDR 还是 WCG/SDR) )的功能。

在Windows,所有 SDR/WCG 内容都假定位于显示引用的亮度空间中,这意味着内容白色级别应在最终呈现之前纵向扩展到显示器的白色级别。 但是,执行此操作并不总是应用程序的责任。 相比之下,HDR 内容假定位于场景引用的亮度空间中,这意味着它不应最终进行缩放以匹配显示器的白色级别。 也就是说,在呈现 HDR 内容以确保这是净结果时,应用程序可能需要在某些情况下执行缩放。

当Windows桌面处于 SDR 或 WCG 模式时,桌面由显示引用的亮度空间组成。 但是,如果Windows桌面处于 HDR 模式,则桌面合成发生在场景引用的亮度空间中。 也就是说,桌面窗口管理器 (DWM) 本身执行亮度调整, (通常称为 SDRBoost) ,用于 8 位合成图面,这简化了该情况的应用程序。 即便如此,自动提升意味着应用程序从一个亮度空间转换为另一个亮度空间的角色取决于应用程序用来呈现其内容的合成格式。

下表描述了应用程序应执行白级调整的情况,以及该调整应是什么情况。 一般情况下,调整取决于三个因素。

  1. 输入内容颜色空间。 输入内容是否包含高动态范围 (HDR) 亮度值。 WCG 内容的行为与 SDR 相同的亮度行为。
  2. 合成格式。 提供给 DWM 的目标图面的像素格式,例如 交换链合成图面。 使用 Direct2D 呈现时,这是 UINT8FP16
  3. 桌面高级颜色模式。 DWM 是在当前显示器的 SDR、WCG 还是 HDR 模式下运行。 通过 DXGI_OUTPUT_DESC1::ColorSpaceAdvancedColorInfo.CurrentAdvancedColorKind 获取此信息。

根据这三个因素,应为 InputWhiteLevelOutputWhiteLevel 属性设置适当的值。

输入内容 合成格式 高级颜色模式 InputWhiteLevel OutputWhiteLevel
SDR/WCG UINT8 任意 不适用 不可用
SDR/WCG FP16 SDR/WCG 不可用 不可用
SDR/WCG FP16 高动态范围图像 SDRWhite 80
高动态范围图像 任意 SDR/WCG 80 DXGI_OUTPUT_DESC1::MaxLuminance
高动态范围图像 UINT8 高动态范围图像 80 SDRWhite
高动态范围图像 FP16 高动态范围图像 不适用 不可用

在表中,值 80 是 sRGB 或 scRGB 内容的引用白级别(以 nits 为单位)。 为此,可以使用在其中d2d1effects_2.h定义的常量D2D1_SCENE_REFERRED_SDR_WHITE_LEVEL。 该值 SDRWhite 是显示应用于显示白色 sRGB 内容的尼茨数。 可以通过访问 AdvancedColorInfo.SdrWhiteLevelInNits 属性来检索此值。 值 N/A 表示在此方案中不使用白色级别调整;可以从图形中删除效果,也可以为 no-op 设置值。

请注意,如果应用程序不需要白色级别调整,DWM 或显示器可能会处理从显示引用亮度空间到场景引用亮度空间的转换。

  • 在 SDR/WCG 模式下,转换发生在 DWM 组合之后,并应用于呈现给该显示器的所有内容。 显示隐式执行此转换。
  • 在 HDR 模式下,在合成之前,DWM 会自动执行转换,前提是应用程序的合成图面为 SDR。

要求

要求
最低受支持的客户端 Windows 10 版本 1809 (10.0;内部版本 17763) [桌面应用|UWP 应用]
标头 d2d1effects_2.h
d2d1.lib、dxguid.lib