Эффект корректировки уровня белого цвета
Этот эффект позволяет линейно масштабировать изображение на белом уровне. Это особенно полезно при преобразовании между пространством света, на который ссылается дисплей, и пространством, на который ссылается сцена, или наоборот.
Свойства этого эффекта определяютсяперечислениемD2D1_WHITELEVELADJUSTMENT_PROP, а CLSID — CLSID_D2D1WhiteLevelAdjustment.
Свойства эффекта
Отображаемое имя и перечисление индексов | Тип и значение по умолчанию | Описание |
---|---|---|
InputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL | ПЛАВАТЬ | Белый уровень входного изображения в нитках. |
OutputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL | ПЛАВАТЬ | Белый уровень выходного изображения в нитках. |
Замечания
Этот эффект предназначен для объединения с эффектом карты тонов HDR, чтобы обеспечить отображение изображений HDR в Direct2D с правильным сопоставлением цветов и тонов. Дополнительные сведения см. в примечаниях этой статьи. Эффекты предназначены для любой платформы, которая хочет обеспечить лучший в классе интерфейс просмотра изображений HDR, который обрабатывает все форматы изображений Windows HDR и адаптируется к возможностям дисплея (будь то HDR или WCG/SDR).
В Windows предполагается, что все содержимое SDR/WCG находится в пространстве света со ссылкой на дисплей, что означает, что белый уровень содержимого должен быть масштабирован до белого уровня дисплея, прежде чем он будет представлен в конечном итоге. Однако это не всегда ответственность за ваше приложение. В отличие от этого, предполагается, что содержимое HDR находится в пространстве света со ссылкой на сцену, что означает, что оно не должно в конечном итоге масштабироваться, чтобы соответствовать белому уровню дисплея. Это значит, что приложению может потребоваться выполнить масштабирование в некоторых случаях при отрисовке содержимого HDR, чтобы убедиться, что это чистый результат.
Если рабочий стол Windows находится в режиме SDR или WCG, рабочий стол состоит в пространстве света, на котором ссылается дисплей. Но если рабочий стол Windows находится в режиме HDR, то композиция рабочего стола происходит в пространстве света, на котором ссылается сцена. Тем не более чем диспетчер окон рабочего стола (DWM) выполняет корректировки света (часто называемые SDRBoost) для 8-разрядных поверхностей композиции, и это упрощает приложение для этого случая. Даже поэтому автоматическое повышение означает, что роль приложения в преобразовании из одного пространства света в другую зависит от формата композиции, используемого приложением для представления его содержимого.
В приведенной ниже таблице описываются случаи, когда приложение должно и не должно выполнять корректировку уровня белого цвета, а также то, что следует корректировать. Как правило, корректировка зависит от трех факторов.
- Пространство цветов содержимого ввода. Содержит ли входное содержимое значения яркости с высоким динамическим диапазоном (HDR). Содержимое WCG ведет себя так же, как ИДР для поведения светимости.
- Формат композиции. Формат пиксельной поверхности целевой поверхности, представленной в DWM, например цепочке буферов или поверхности композиции . При отрисовке с помощью Direct2D это либо UINT8, либо FP16.
- Расширенный цветовой режим рабочего стола. Работает ли DWM в режиме SDR, WCG или HDR для текущего дисплея. Получите эти сведения с помощью DXGI_OUTPUT_DESC1::ColorSpace или AdvancedColorInfo.CurrentAdvancedColorKind.
На основе этих трех факторов необходимо задать соответствующие значения для свойств InputWhiteLevel
и OutputWhiteLevel
.
Входное содержимое | Формат композиции | Расширенный цветной режим | InputWhiteLevel | OutputWhiteLevel |
---|---|---|---|---|
SDR/WCG | UINT8 | Любой | N/A | N/A |
SDR/WCG | FP16 | SDR/WCG | N/A | N/A |
SDR/WCG | FP16 | HDR | SDRWhite | 80 |
HDR | Любой | SDR/WCG | 80 | DXGI_OUTPUT_DESC1::MaxLuminance |
HDR | UINT8 | HDR | 80 | SDRWhite |
HDR | FP16 | HDR | N/A | N/A |
В таблице значение 80 — это эталонный белый уровень(в нитах) для содержимого sRGB или scRGB. Для этого можно использовать константную D2D1_SCENE_REFERRED_SDR_WHITE_LEVEL, которая определена в d2d1effects_2.h
. Значение 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 |
Связанные разделы
- интерфейс ID2D1Effect
- перечисления D2D1_WHITELEVELADJUSTMENT_PROP