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


Поведение профиля ICC с расширенным цветом

Расширенный цвет — это зонтичный термин технологий ОС для дисплеев с значительно более высокой точностью цвета, чем стандартные. Дополнительные сведения см. в статье Использование DirectX с расширенным цветом в режиме высокого или стандартного динамического диапазона. Расширенное управление цветами и автоматическое управление цветами обеспечивает согласованность и точность цвета цветов для всех приложений: устаревших и современных. Однако ваше приложение уже может выполнять собственное явное управление цветами с помощью профилей цветов Международного консорциума цветов (ICC).

Если расширенный цвет активен на экране SDR или HDR, поведение профилей отображения ICC изменяется в способах, не совместимых с обратной стороной. Если приложение работает с профилями ICC, Windows предлагает вспомогательные средства совместимости, чтобы убедиться, что ваше приложение продолжает получать правильное поведение. Расширенные приложения с поддержкой цвета должны переходить от прямого взаимодействия с профилями ICC отображения, так как Windows предоставляет интерфейсы API для замены приложений, которые абстрагируют профиль; Полные рекомендации доступны в использовать DirectX с расширенным цветом на высоко/стандартном динамическом диапазоне.

В этом разделе описываются изменения в поведении профиля ICC. Кроме того, если ваше приложение, управляемое цветом, должно продолжать использовать профили DISPLAY ICC, в этом разделе показано, как адаптировать приложение для добавочного использования расширенных цветов.

Устаревшее поведение управления цветами Windows

Если расширенный цвет неактивен, Windows не выполняет никакого управления цветами в выходных данных визуального содержимого приложения (например, GDI hDC, цепочка буферов DirectX или визуальный элемент композиции); На практике предполагается, что содержимое приложения находится в стандартном цветовом пространстве SRGB. Если вы хотите точное воспроизведение цветов на активном дисплее, приложение должно выполнять собственное управление цветами, чаще всего с помощью профилей цветов Международного консорциума цветов (ICC). Основными основными основными этапами являются следующие действия.

  1. Получите характеристики цвета дисплея.
  2. Преобразование цветового пространства в цветовое пространство дисплея.
  3. Выполните сопоставление гаммов, чтобы ограничить область отображения.

Ниже приведены дополнительные сведения о трех шагах.

Получение характеристик цвета дисплея

Приложение Win32 использует функции управления профилями цвета Windows windows Color System для получения профиля ICC по умолчанию, который сообщает о цветовых характеристиках дисплея, включая доступный цветной гаммы.

Вместо этого приложение универсальной платформы Windows использует метод DisplayInformation.GetColorProfileAsync.

Преобразование цветового пространства в цветовое пространство дисплея

Если цветовое пространство дисплея не соответствует цветовой области содержимого, необходимо выполнить преобразование цветового пространства. Например, цифровое содержимое часто закодировано как sRGB, но отображение может быть широкой гаммой DCI-P3. Обычно вы используете библиотеку управления цветами ICC, которая считывает профиль ICC и преобразует значения цвета содержимого в соответствие. Windows предоставляет несколько обработчиков управления цветом ICC; например, эффект управления цветомDirect2D.

Важно отметить, что управление цветом на основе профиля ICC или выходных данных, на которые ссылается. Это означает, что значения цветов не хранятся как абсолютные (цвета, называемые сценой), но вместо этого кодируются относительно цветового пространства дисплея (выходное устройство). Например, если приложение отрисовывает красный цвет SRGB, оно представлено как RGB(1, 0, 0) в отрисованных выходных данных. Но если вы отрисовываете это содержимое на дисплее Adobe RGB, то RGB(1, 0, 0) просто интерпретируется дисплеем как его наиболее насыщенный красный (Adobe RGB красный), который является неправильным. При применении преобразования цвета ICC он будет повторно кодировать цвет как RGB(0.858659, 0, 0), и при отображении этого дисплея Adobe RGB он будет воспроизведен правильно как красный sRGB.

Выполнение сопоставления гаммы для ограничения гаммы дисплея

Помимо переосмысления значений цветов для сопоставления цветового пространства дисплея, необходимо обработать ситуацию, когда дисплей не может физически воспроизвести все цвета в содержимом; Значение , если цветовая гамма содержимого больше, чем отображаемое. Этот процесс называется сопоставлением гамм.

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

В рабочем процессе на основе профиля ICC сопоставление гамм обычно обрабатывается автоматически в библиотеке управления цветами. У вас есть некоторый контроль над поведением сопоставления, выбрав намерение отрисовки (см. режимы намерения отрисовки).

Заметка

Если вы находитесь в расширенном рабочем процессе цвета, мы обычно не рекомендуем использовать намерение перцептивной отрисовки, ни для источника или назначения, так как он был разработан для источников SDR и назначений с меньшим цветом gamuts, чем те, которые используются для HDR и некоторых дисплеев WCG; поэтому использование их может привести к непредвиденному поведению.

Автоматическое управление цветами системы Windows

Если расширенный цвет активен, Windows выполняет автоматическое управление цветами системы— это гарантирует, что содержимое цвета вашего приложения точно воспроизводится на экране. Это значительно упрощает необходимые действия в приложении, хотя расширенные приложения могут продолжать выполнять дополнительную обработку для максимальной цветовой и перцептивной точности. Дополнительные сведения см. в статье Использование DirectX с расширенным цветом в режиме высокого или стандартного динамического диапазона.

Получение характеристик цвета дисплея

Расширенные приложения с поддержкой цвета не должны напрямую взаимодействовать с профилем display ICC. Вместо этого можно получить свойства цвета дисплея с помощью DisplayInformation::GetAdvancedColorInfo или IDXGIOutput6.

Преобразование цветового пространства в цветовое пространство дисплея

Windows выполнит преобразование цветового пространства в цветовое пространство дисплея, определенное текущим профилем цвета по умолчанию. Если профиль отсутствует, будут использоваться данные цветовой метрики EDID. Приложение автоматически получает сцены, на которые ссылается цветовое поведение, например, если вы отрисовываете красный цвет SRGB, закодированный как RGB(1, 0, 0) и отображается на мониторе Adobe RGB, Windows будет правильно воспроизводить его как красный sRGB. Расширенные приложения с поддержкой цвета должны пометить их содержимое правильным цветовым пространством, чтобы сообщить Windows с помощью IDXGISwapChain3::SetColorSpace1. Для всех приложений с поддержкой расширенного цвета, которые отображаются в стандартном формате пикселей целочисленного (например, 8-разрядного RGBA), Windows будет явно рассматривать приложение как sRGB. Если вы хотите отобразить AdobeRGB красный цвет в сценарии расширенного цвета, вам потребуется отрисовка RGB(1.158157,0,0) в области с тегами scRGB (она ограничена гаммой дисплея).

Выполнение сопоставления гаммы для ограничения гаммы дисплея

Конвейер отображения GPU будет выполнять числовое вырезка на цветах вне гамма. Если ваше приложение хочет использовать более сложное сопоставление, вам нужно сделать это самостоятельно.

Поведение профиля ICC по умолчанию с расширенным цветом

Автоматическое управление цветами системы обязательно влияет на то, как существующие приложения на основе профилей ICC работают, так как они выполняют множество действий, которые теперь обрабатываются операционной системой (OS.) Windows применяет поведение по умолчанию (описано ниже) к приложениям на основе профилей ICC. Это гарантирует, что эти приложения не имеют неправильного поведения. Однако без дополнительной работы они не получат доступ к каким-либо расширенным возможностям цвета.

В частности, по умолчанию приложение на основе профиля ICC ограничено гаммой SRGB, даже если монитор фактически шире. Windows также предоставляет вспомогательный компонент совместимости ICC, который может предоставить приложению ICC доступ ко всему гамму дисплея. Дополнительные сведения см. в разделе Справку о совместимости профилей ICC в этом разделе.

Получение характеристик цвета дисплея

Если расширенный цвет активен, все вызовы API управления цветом профилей, чтобы получить профиль по умолчанию для дисплея, возвращает "без профиля", независимо от того, какие профили установлены. По соглашению "нет профиля" следует интерпретировать как sRGB.

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

Чтобы применить это, Windows добавляет концепцию STANDARD и EXTENDED подтипов цветового профиля. Это относится к любым API-интерфейсам управления цветом, которые используют COLORPROFILESUBTYPE:

CPST_STANDARD_DISPLAY_COLOR_MODE
CPST_EXTENDED_DISPLAY_COLOR_MODE

Заметка

STANDARD и EXTENDED подтипов не являются свойством, хранящимся в самом профиле; скорее, они применяются к ассоциации профиля к отображению (т. е. при добавлении профиля в список сопоставлений профилей дисплея). Один профиль может быть связан как с STANDARD, так и с подтипами EXTENDED для дисплея, что означает, что он будет доступен как для стандартных, так и для сценариев расширенного цвета.

Отображение сопоставлений профилей, предназначенных для использования в SDR , будь то обычный SDR или Advanced Color SDR, имеют подтип STANDARD (ворат по умолчанию, если значение не указано). Отображение сопоставлений профилей для использования в режиме HDR — это подтип EXTENDED. Если приложение не указывает подтип, то это интерпретируется как STANDARD.

Все api получения с помощью COLORPROFILESUBTYPE возвращают только профили с соответствующими STANDARD или подтипом EXTENDED. Например, если HDR активен, для использования допустимы только профили отображения с подтипом EXTENDED, а профили подтипов STANDARD не используются. API-интерфейсы setter могут указать подтип (STANDARD используется по умолчанию).

Преобразование цветового пространства в цветовое пространство дисплея

Так как API-интерфейсы управления профилями ICC возвращают sRGB при активном расширенном цвете, приложение на основе профиля ICC будет управлять цветом в SRGB, и Windows будет правильно воспроизводить это как sRGB на дисплее.

Выполнение сопоставления гаммы для ограничения гаммы дисплея

Сохраняется любое существующее поведение сопоставления гаммутов.

Вспомогательный помощник по совместимости профилей ICC

Если расширенный цвет активен, Windows предоставляет вспомогательный компонент совместимости для отображения профилей ICC, которые предоставляют доступ ко всей гамме дисплея. Таким образом, ваше приложение продолжает получать точные и широкие цвета гаммы вплоть до сообщаемой возможности дисплея— те же функции, которые доступны на калибровке широкодоступных мониторов гаммы в устаревшем режиме, отличном от расширенного цвета сегодня. Без этого вспомогательного приложения приложение будет ограничено поведением по умолчанию, которое является SRGB (см. поведение профиля ICC по умолчанию с расширенным цветом).

Этот вспомогательный помощник доступен начиная с Windows 11. Он не предоставляет другие преимущества расширенного цвета, включая доступ к более высокой точности/ битовой глубине или высокому динамическому диапазону, вам потребуется изменить приложение, чтобы быть расширенным цветом.

Включение вспомогательного средства совместимости display ICC

Вспомогательный помощник по совместимости display ICC включен на основе каждого приложения. Он по умолчанию не включен.

Пользователи могут включить его для приложения, перейдя на вкладку "Совместимость" свойств исполняемого файла и выбрав Использовать устаревшее управление цветами ICC. Вспомогательный компонент совместимости применяется ко всему процессу и активен только в том случае, если для дисплея включен расширенный цвет, он не влияет на стандартный дисплей SDR.

пользовательском интерфейсе для включения вспомогательного средства совместимости ICC для исполняемого

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

Нет программного способа включить этот вспомогательный элемент совместимости для вашего приложения.

Получение характеристик цвета дисплея

Если вспомогательный компонент совместимости активен, то когда приложение запрашивает профиль цвета по умолчанию STANDARD с помощью функций управления профилями цветов Windows , Windows создает искусственный профиль ICC, используя те же данные, которые заполняют API-интерфейсы расширенных цветов. Данные искусственного профиля могут поступать из сочетания текущего профиля цвета, из EDID или DisplayID дисплея или из других источников.

Если приложение запрашивает профиль цвета по умолчанию EXTENDED, то это означает, что ваше приложение является расширенным цветом, и оно получит фактический профиль EXTENDED.

Преобразование цветового пространства в цветовое пространство дисплея

Если помощник по совместимости активен, приложение, как ожидается, будет использовать управление цветами ICC для назначения профиля искусственного отображения. В Windows предполагается, что ваше приложение предназначено для этого цветового пространства и будет выполнять правильное преобразование цветового пространства, чтобы обеспечить точное отображение на дисплее.

Преобразование цветового пространства применяется ко всему процессу приложения, поэтому все визуальное содержимое приложения рассматривается как целевое пространство цвета дисплея, даже если некоторые из него не управляются цветом и номинально предназначены для SRGB (например, пользовательского интерфейса). Преобразование цветового пространства также применяется независимо от графического API (GDI, DirectX, XAML и т. д.), формата пикселей или других характеристик отрисованного содержимого.

Выполнение сопоставления гаммы для ограничения гаммы дисплея

Сохраняется любое существующее поведение сопоставления гаммутов.

Изменения в поведении, видимые пользователем

Пользователи могут проверить, активен ли вспомогательный элемент совместимости ICC для исполняемого файла, проверив вкладку свойств совместимости. Если приложение отображает сведения о профиле по умолчанию, отображаемом по умолчанию, пользователи увидят, что это искусственный профиль. Описательное содержимое профиля (включая имя) — это сведения о реализации.

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