白级别调整效果
此效果允许以线性方式缩放图像的白级别。 在显示参考亮度空间和场景引用亮度空间之间转换时,这尤其有用,反之亦然。
此效果的属性由 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) 本身对 8 位合成图面执行亮度调整 (通常称为 SDRBoost) ,这简化了在这种情况下的应用程序。 即便如此,自动提升意味着应用程序在从一个亮度空间转换为另一个亮度空间中的作用取决于应用程序用于呈现其内容的合成格式。
下表描述了应用程序应和不应执行白级调整的情况,以及该调整应是什么。 通常,调整取决于三个因素。
- 输入内容颜色空间。 输入内容是否包含高动态范围 (HDR) 亮度值。 WCG 内容的行为与 SDR 在亮度行为上的行为相同。
- 合成格式。 呈现给 DWM 的目标图面的像素格式,例如 交换链 或 组合图面。 使用 Direct2D 进行渲染时,这是 UINT8 或 FP16。
- 桌面高级颜色模式。 对于当前显示器,DWM 是在 SDR、WCG 还是 HDR 模式下运行的。 通过 DXGI_OUTPUT_DESC1::ColorSpace 或 AdvancedColorInfo.CurrentAdvancedColorKind 获取此信息。
根据这三个因素,应为 InputWhiteLevel
和 OutputWhiteLevel
属性设置适当的值。
输入内容 | 合成格式 | 高级颜色模式 | 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 内容的引用白级别(以尼特为单位)。 为此,可以使用 在 中d2d1effects_2.h
定义的常量D2D1_SCENE_REFERRED_SDR_WHITE_LEVEL。 该值 SDRWhite
是显示器应用于显示白色 sRGB 内容的尼特数。 可以通过访问 AdvancedColorInfo.SdrWhiteLevelInNits 属性来检索此值。 值 N/A 表示在此方案中不使用白级别调整;可以从图形中删除效果,也可以为 no-op 设置值。
请注意,在应用程序不需要白度调整的情况下,DWM 或显示器可能会处理从显示参考亮度空间到场景参考亮度空间的转换。
- 在 SDR/WCG 模式下,转换在 DWM 组合后发生,并应用于呈现给该显示器的所有内容。 显示会隐式执行此转换。
- 在 HDR 模式下,只要应用程序的合成图面为 SDR,DWM 会在合成前自动执行转换。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 版本 1809 (10.0;内部版本 17763) [桌面应用 |UWP 应用] |
标头 | d2d1effects_2.h |
库 | d2d1.lib、dxguid.lib |