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


Эффекты управления цветом

Используйте эффект управления цветом для преобразования изображения из одного цветового профиля ICC (International Color Consortium) в другой. Эффект преобразует изображение в соответствии со спецификацией ICC.

CLSID для этого эффекта CLSID_D2D1ColorManagement.

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

Отображаемое перечисление имен и индексов Описание
SourceContext
D2D1_COLORMANAGEMENT_PROP_SOURCE_COLOR_CONTEXT
Сведения об исходном цветовом пространстве. Тип ID2D1ColorContext.
Значение по умолчанию — NULL.
SourceIntent
D2D1_COLORMANAGEMENT_PROP_SOURCE_RENDERING_INTENT
Какое намерение отрисовки ICC использовать. Тип D2D1_COLORMANAGEMENT_RENDERING_INTENT.
Значение по умолчанию — D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCEPTUAL.
DestinationContext
D2D1_COLORMANAGEMENT_PROP_DESTINATION_COLOR_CONTEXT
Сведения о целевом цветовом пространстве. Тип ID2D1ColorContext.
Значение по умолчанию — NULL.
DestinationIntent
D2D1_COLORMANAGEMENT_PROP_DESTINATION_RENDERING_INTENT
Какое намерение отрисовки ICC использовать. Тип D2D1_COLORMANAGEMENT_RENDERING_INTENT.
Значение по умолчанию — D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCEPTUAL.
AlphaMode
D2D1_COLORMANAGEMENT_PROP_ALPHA_MODE
Как интерпретировать альфа-данные, содержащиеся во входном изображении. Тип D2D1_COLORMANAGEMENT_ALPHA_MODE.
Значение по умолчанию — D2D1_COLORMANAGEMENT_ALPHA_MODE_PREMULTIPLIED.
Качество
D2D1_COLORMANAGEMENT_PROP_QUALITY
Уровень качества преобразования. Тип — D2D1_COLORMANAGEMENT_QUALITY.
Значение по умолчанию — D2D1_COLORMANAGEMENT_QUALITY_NORMAL.

Режимы намерений отрисовки

Перечисление Описание
D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCEPTUAL Эффект сжимает или расширяет полную цветовую гамму изображения, чтобы заполнить цветовую гамму устройства, чтобы создать приятные выходные данные, сохраняющие детали цвета, но при этом может пожертвовать точностью колориметрии. Это полезно для общего воспроизведения реального содержимого, такого как фотографии.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_RELATIVE_COLORIMETRIC Этот эффект корректирует любые цвета, которые выходят за пределы гаммы, которую выходное устройство может отрисовывать до ближайшего цвета, который может быть отрисован. Он не сохраняет белую точку.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_SATURATION Эффект сохраняет насыщенность чистых цветов в изображении за счет возможного оттенок и легкости. Он полезен для таких графических элементов, как диаграммы и схемы.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_ABSOLUTE_COLORIMETRIC Этот эффект корректирует любые цвета, которые выходят за пределы гаммы, которую выходное устройство может отрисовывать до ближайшего цвета, который может быть отрисован. Эффект не изменяет цвета в гамме и сохраняет белую точку.

Альфа-режимы входного изображения

Перечисление Описание
D2D1_COLORMANAGEMENT_ALPHA_MODE_PREMULTIPLIED Эффект предполагает, что альфа-режим предварительно замедлен.
D2D1_COLORMANAGEMENT_ALPHA_MODE_STRAIGHT Эффект предполагает, что альфа-режим является прямым.

изменения в поведении D2D1_GAMMA1_G2084

Если приложение использует D2D1_GAMMA1_G2084 пробел или одно из значений перечисления DXGI_COLOR_SPACE_TYPE, использующих цветовое пространство SMPTE ST.2084 (Perceptual Quantizer), приложение планирует работать с данными HDR.

API ID2D1DeviceContext5::CreateColorContextFromSimpleColorProfile и ID2D1DeviceContext5::CreateColorContextFromDxgiColorSpace не учитывают это; вместо этого содержимое HDR масштабируется в соответствии с диапазоном 0–1 во время операции G2084 DeGamma.

На практике содержимое, закодированное в этом гамма-пространстве, использует ссылочный WhiteLevel 10 000 Нит, который обычно будет представлен в CCCS как 10 000 / 80 = 125,0. Таким образом, чтобы упростить работу приложения, проще всего масштабировать яркость гамма-преобразования в 125 раз. По состоянию на Windows 10, версия 1809 (10,0; Сборка 17763), поведение эффекта управления цветом таково, что применяется такое масштабирование. Это означает, что вам, как разработчику, не нужно применять второй эффект корректировки уровня белого цвета в конвейере.

Соответствие спецификации ICC

Эффект управления цветом соответствует спецификации ICC версии 4.3 со следующими ограничениями:

  • Эффект поддерживает цветовые пространства 1, 3 и 4 канала.
  • Эффект не поддерживает профили ColorSpace или Именованный цвет.

Поведение альфа-канала

Как правило, эффект задает альфа-значение 1 (непрозрачный), если в исходном изображении нет альфа-данных и альфа-данные удаляются, если в целевом изображении нет места. В приведенной здесь таблице описано поведение альфа.

Исходное цветовое пространство, формат пикселей Целевое цветовое пространство, формат пикселей Поведение альфа-канала
1 канал, формат пикселей R
1 канал, формат пикселей R (Без альфа-данных)
1 канал, формат пикселей RGBA Для альфа-данных задано значение 1 (непрозрачные)
3 канала, формат пикселей RGBA Для альфа-данных задано значение 1 (непрозрачные)
4 канала, формат пикселей RGBA (Без альфа-данных)
1 канал, формат пикселей RGBA
1 канал, формат пикселей R Альфа-данные удалены
1 канал, формат пикселей RGBA Альфа-данные передаются через
3 канала, формат пикселей RGBA Альфа-данные передаются через
4 канала, формат пикселей RGBA Альфа-данные удалены
3 канала, формат пикселей RGBA
1 канал, формат пикселей R Альфа-данные удалены
1 канал, формат пикселей RGBA Альфа-данные передаются через
3 канала, формат пикселей RGBA Альфа-данные передаются через
4 канала, формат пикселей RGBA Альфа-данные удалены
4 канала, формат пикселей RGBA
1 канал, формат пикселей R (Без альфа-данных)
1 канал, формат пикселей RGBA Альфа-данные равны 1 (непрозрачные)
3 канала, формат пикселей RGBA Альфа-данные равны 1 (непрозрачные)
4 канала, формат пикселей RGBA (Без альфа-данных)

Режимы качества

Режим Описание
D2D1_COLORMANAGEMENT_QUALITY_PROOF Режим наименьшего качества. Для этого режима требуется уровень компонентов 9_1 или выше.
D2D1_COLORMANAGEMENT_QUALITY_NORMAL Режим нормального качества. Для этого режима требуется уровень компонентов 9_1 или выше.
D2D1_COLORMANAGEMENT_QUALITY_BEST Режим наилучшего качества. Для этого режима требуется уровень компонентов 10_0 или выше, а также буферы точности с плавающей запятой. Этот режим поддерживает точность с плавающей запятой, а также расширенный диапазон, как определено в спецификации ICC версии 4.3.

Эффект управления цветом завершается сбоем при рисовании, если приложение запрашивает режим качества, который не поддерживается оборудованием. Уровень компонентов можно определить при вызове D3D11CreateDevice. Для поддержки буфера с плавающей запятой можно проверка, вызвав ID2D1EffectContext::IsBufferPrecisionSupported со значением D2D1_BUFFER_PRECISION_32BPC_FLOAT.

Образец кода

Для примера этого эффекта скачайте пример корректировки фотографий эффектов Direct2D и ознакомьтесь с уроком 4 примера.

Требования

Требование Значение
Минимальная версия клиента Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Минимальная версия сервера Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Заголовок d2d1effects.h
Библиотека d2d1.lib, dxguid.lib