Поделиться через


Эффект коррекции уровня белого

Этот эффект позволяет линейно масштабировать белый уровень изображения. Это особенно полезно при преобразовании между пространством яркости, на которое ссылается дисплей, и пространством, указанным на сцене, или наоборот.

Свойства для этого эффекта определяются перечислением D2D1_WHITELEVELADJUSTMENT_PROP, а CLSID — CLSID_D2D1WhiteLevelAdjustment.

Свойства эффекта

Отображаемое перечисление имен и индексов Тип и значение по умолчанию Описание
InputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL FLOAT Белый уровень входного изображения в нитах.
OutputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL FLOAT Белый уровень выходного изображения в нитах.

Комментарии

Этот эффект предназначен для сочетания с эффектом карты тона HDR , чтобы вы могли отображать HDR-изображения в Direct2D с правильным управлением цветом и сопоставлением тонов. Дополнительные сведения см. в разделе Примечания этого раздела. Эффекты предназначены для любой платформы, которая хочет обеспечить лучший в своем классе режим просмотра изображений 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 это UINT8 или FP16.
  3. Расширенный цветовой режим рабочего стола. Работает ли 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 HDR SDRWhite 80
HDR Любой SDR/WCG 80 DXGI_OUTPUT_DESC1::MaxLuminance
HDR UINT8 HDR 80 SDRWhite
HDR FP16 HDR Н/Д Н/Д

В таблице значение 80 является эталонным уровнем белого цвета в гипах для содержимого sRGB или scRGB. Для этого можно использовать константный D2D1_SCENE_REFERRED_SDR_WHITE_LEVEL, определенный в d2d1effects_2.h. Значение SDRWhite — это количество нит, которое дисплей должен использовать для отображения белого содержимого sRGB. Это значение можно получить, перейдя к свойству AdvancedColorInfo.SdrWhiteLevelInNits . Значение Н/Д означает, что корректировка уровня белого не используется в этом сценарии; Вы можете удалить эффект из графа или задать значения для без операции.

Обратите внимание, что в случаях, когда настройка уровня белого не требуется приложению, DWM или дисплей может обрабатывать преобразование из пространства яркости, на которое ссылается дисплей, в пространство яркости, на которое ссылается сцена.

  • В режиме SDR/WCG преобразование выполняется после композиции DWM и применяется ко всему содержимому, представленному на этом дисплее. Отображение неявно выполняет это преобразование.
  • В режиме HDR преобразование автоматически выполняется DWM перед композицией, если область композиции приложения — SDR.

Требования

Требование Значение
Минимальная версия клиента Windows 10, версия 1809 (10.0; Сборка 17763) [классические приложения | Приложения UWP]
Заголовок d2d1effects_2.h
Библиотека d2d1.lib, dxguid.lib