Поведение профиля ICC с расширенным цветом
Расширенный цвет — это общий термин технологий ОС для дисплеев со значительно более высокой точностью цвета, чем стандартные дисплеи. Дополнительные сведения см. в статье Использование DirectX с дополнительным цветом на дисплеях с высоким или стандартным динамическим диапазоном. Расширенное управление цветом и автоматическое управление цветами обеспечивают согласованное и точное цветообразуемое отображение цвета для всех приложений: как устаревших, так и современных. Однако ваше приложение уже может выполнять собственное явное управление цветом с помощью профилей цветов Международного консорциума цветов (ICC).
Если расширенный цвет активен на дисплеях SDR или HDR, поведение профилей ICC отображения меняется не обратно совместимыми способами. Если ваше приложение работает с профилями отображения ICC, Windows предлагает вспомогательные средства совместимости, чтобы обеспечить правильное поведение приложения. Расширенные приложения с поддержкой цвета должны переходить от прямого взаимодействия с профилями ОТОБРАЖЕНИЯ ICC, так как Windows предоставляет api-интерфейсы для замены приложений, которые абстрагируются от профиля; Полное руководство см. в статье Использование DirectX с расширенным цветом на дисплеях с высоким или стандартным динамическим диапазоном.
В этом разделе описываются изменения в поведении профиля ICC. Кроме того, если вашему управляемому цветом приложению необходимо продолжать использовать профили отображения ICC, в этом разделе показано, как адаптировать приложение для постепенного использования расширенных преимуществ цвета.
Устаревшее поведение управления цветом Windows
Если функция Advanced Color неактивна, Windows не выполняет управление цветом в выходных данных визуального содержимого вашего приложения (например, GDI hDC, цепочка буферов DirectX или визуальный элемент композиции); На практике предполагается, что содержимое приложения находится в стандартном цветовом пространстве sRGB. Если требуется точная цветопередача на активном дисплее, приложение должно выполнять собственное управление цветом, чаще всего с помощью цветовых профилей Международного консорциума цветов (ICC). Main концептуальные шаги:
- Получение цветовых характеристик дисплея.
- Выполните преобразование цветового пространства в цветовое пространство дисплея.
- Выполните сопоставление гаммы, чтобы ограничить гамму дисплея.
Ниже приведены дополнительные сведения о трех шагах.
Получение цветовых характеристик дисплея
Приложение Win32 использует функции управления профилями Системы цветов Windows для получения профиля 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 red), что неправильно. При применении преобразования цвета ICC цвет будет повторно закодирован как RGB(0.858659, 0, 0)
, а при отображении на дисплее Adobe RGB он будет правильно воспроизведен как красный sRGB.
Выполнение сопоставления гаммы для ограничения гаммы экрана
Помимо переосмысления значений цвета в соответствии с цветовой областью дисплея, необходимо обрабатывать ситуацию, когда дисплей не может физически воспроизвести все цвета в содержимом; Значение , если цветовая гамма содержимого больше, чем у дисплея. Этот процесс называется сопоставлением гамм.
Сопоставление гаммы является потерей, так как вы должны найти компромисс в том, как приблизить большую гамму содержимого. Самый простой метод — колориметрический, где цвета, находящиеся в пределах гаммы экрана, сохраняются, а цвета, которые находятся вне гаммы, обрезаются до ближайшего значения в гамме.
В рабочем процессе на основе профиля ICC сопоставление гамм обычно обрабатывается автоматически в библиотеке управления цветами. Вы можете управлять поведением сопоставления, выбрав намерение отрисовки (см. раздел Режимы намерений отрисовки).
Примечание
Если вы используете расширенный рабочий процесс цвета, мы обычно не рекомендуем использовать намерение перцептивной отрисовки ни для источника, ни для назначения, так как он был разработан для источников SDR и назначений с меньшими цветовыми гаммами, чем те, которые используются для HDR и некоторых дисплеев WCG; поэтому их использование может привести к непредвиденному поведению.
Автоматическое системное управление цветом Windows
Если параметр Advanced Color активен, Windows выполняет автоматическое системное управление цветом. Это гарантирует точное воспроизведение цветового содержимого приложения на дисплее. Это значительно упрощает необходимые действия в приложении, хотя расширенные приложения могут продолжать выполнять дополнительную обработку для достижения максимальной точности цвета и восприятия. Дополнительные сведения см. в статье Использование DirectX с дополнительным цветом на дисплеях с высоким или стандартным динамическим диапазоном.
Получение цветовых характеристик дисплея
Расширенные приложения с поддержкой цвета не должны напрямую взаимодействовать с профилем ICC отображения. Вместо этого можно получить цветовые свойства дисплея с помощью DisplayInformation::GetAdvancedColorInfo или IDXGIOutput6.
Преобразование цветового пространства в цветовое пространство дисплея
Windows выполнит преобразование цветового пространства в цветовое пространство дисплея, определенное текущим цветовым профилем по умолчанию. Если профиль отсутствует, будут использоваться данные цветометрии EDID. Ваше приложение автоматически получает цветовое поведение, ссылаемое на сцену . Например, если вы отрисовываете sRGB red в RGB(1, 0, 0)
виде и отображаете на мониторе Adobe RGB, Windows правильно воспроизведет его как красный sRGB. Расширенные приложения с поддержкой цвета должны помечать свое содержимое правильным цветовым пространством, чтобы осведомить Windows с помощью IDXGISwapChain3::SetColorSpace1. Для всех приложений, не поддерживающих расширенный цвет, которые отображаются в стандартном целочисленном формате пикселей (например, 8-разрядном формате RGBA), Windows будет явно обрабатывать приложение как sRGB. Если вы хотите отобразить красный цвет AdobeRGB в сценарии Advanced Color, необходимо выполнить отрисовку RGB(1.158157,0,0)
в поверхности с тегами scRGB (она ограничена гаммой дисплея).
Выполнение сопоставления гаммы для ограничения гаммы экрана
Конвейер отображения GPU будет выполнять числовую обрезку для цветов вне гаммы. Если ваше приложение хочет использовать более сложное сопоставление, это необходимо сделать самостоятельно.
Поведение профиля ICC по умолчанию с расширенным цветом
Автоматическое управление цветом системы обязательно влияет на поведение существующих приложений на основе профилей ICC, так как они сами выполняют множество действий, которые теперь обрабатываются операционной системой (ОС). Windows применяет поведение по умолчанию (описано ниже) к приложениям на основе профилей ICC. Это гарантирует, что эти приложения не имеют неправильного поведения. Однако без дальнейшей работы они не получат доступа к каким-либо расширенным возможностям цвета.
В частности, по умолчанию приложение на основе профиля ICC ограничено гаммой sRGB, даже если монитор на самом деле имеет более широкую гамму. Windows также предоставляет вспомогатель совместимости ICC, который может предоставить приложению ICC доступ ко всей гамме дисплея. Дополнительные сведения см. в разделе Вспомогателя совместимости профилей ICC в этой статье.
Получение цветовых характеристик дисплея
Если параметр Advanced Color активен, любые вызовы API управления цветным профилем для получения профиля по умолчанию для дисплея будут возвращать "нет профиля", независимо от того, какие профили фактически установлены. По соглашению "нет профиля" должно интерпретироваться как sRGB.
Профили ОТОБРАЖЕНИЯ ICC по-прежнему действительны и используются с расширенным цветом, но они используются только на уровне системы, и большинство приложений не должны напрямую взаимодействовать с ними. Приведенные ниже сведения обычно требуются только в том случае, если ваше приложение является служебной программой, которая перечисляет все профили отображения или создает или устанавливает профили.
Чтобы применить это, Windows добавляет понятие STANDARD
и EXTENDED
подтипы цветового профиля. Это относится к любым API-интерфейсам управления цветными профилями, которые используют COLORPROFILESUBTYPE:
CPST_STANDARD_DISPLAY_COLOR_MODE
CPST_EXTENDED_DISPLAY_COLOR_MODE
Примечание
STANDARD
Подтипы и EXTENDED
не являются свойством, хранящимся в самом профиле; скорее они применяются к связи профиля с отображением (т. е. при добавлении профиля в список сопоставлений профилей отображения). Один профиль может быть связан с подтипами и EXTENDED
для дисплея. Это означает, что он будет доступен как для стандартных, так STANDARD
и для расширенных цветов.
Сопоставления профилей отображения, предназначенные для использования в SDR, будь то обычный SDR или Advanced Color SDR, имеют подтип STANDARD
(thiat по умолчанию, если значение не указано). Сопоставления профилей отображения для использования в режиме HDR являются подтипом EXTENDED
. Если приложение не указывает подтип, он интерпретируется как STANDARD
.
Любой API-интерфейс получения , использующий COLORPROFILESUBTYPE, будет возвращать только профили с соответствующим STANDARD
или EXTENDED
подтипом. Например, если hdr активен, то только профили отображения с подтипом EXTENDED
допустимы для использования, а STANDARD
профили подтипов не используются.
Сеттер API могут указывать подтип (STANDARD
по умолчанию).
Преобразование цветового пространства в цветовое пространство дисплея
Так как API-интерфейсы управления профилями ICC возвращают sRGB, когда активна функция Advanced Color, приложение на основе профиля ICC будет управлять цветом в sRGB, а Windows будет правильно воспроизводить его как sRGB на дисплее.
Выполнение сопоставления гаммы для ограничения гаммы экрана
Сохраняется любое существующее поведение сопоставления гаммы.
Отображение вспомогательной функции совместимости профилей ICC
Если параметр Advanced Color активен, Windows предоставляет вспомогающее средство совместимости для профилей ICC дисплея, которое обеспечивает доступ ко всей гамме дисплея. Таким образом, ваше приложение будет получать точные и широкие цвета гаммы до сообщаемых возможностей дисплея— те же функции, которые доступны на откалиброванных мониторах с широкой гаммой в устаревшем цветовом режиме, отличном от расширенного. Без этого вспомогательного средства ваше приложение будет ограничено поведением по умолчанию, то есть sRGB (см. статью Поведение профиля ICC по умолчанию с расширенным цветом).
Эта вспомогающая функция доступна начиная с Windows 11. Он не предоставляет других преимуществ расширенного цвета, включая доступ к более высокой точности, битовой глубине или большому динамическому диапазону. Вам потребуется изменить приложение, чтобы оно учитывалось с учетом расширенных цветов.
Включение вспомогательной функции совместимости с icc display
Вспомогатель совместимости дисплея ICC включается для каждого приложения. По умолчанию он не включен.
Пользователи могут включить его для приложения, перейдя на вкладку Совместимость свойств исполняемого файла и выбрав Использовать устаревшее управление цветом ICC дисплея. Вспомогательное средство совместимости применяется ко всему процессу и активируется, только если для дисплея включен дополнительный цвет. Это не влияет на стандартный дисплей SDR.
Windows автоматически включает вспомогающую функцию для некоторых популярных приложений, которые, как известно, используют управление цветовым профилем ICC.
Нет программного способа включения этого вспомогательного средства совместимости для вашего приложения.
Получение цветовых характеристик дисплея
Если вспомогатель совместимости активен, то, когда приложение запрашивает цветовой профиль по умолчанию STANDARD
с помощью функций управления системным профилем Цвета Windows, Windows создает искусственный профиль ICC, используя те же данные, которые заполняют API-интерфейсы расширенных возможностей отображения цвета. Данные искусственного профиля могут поступать из сочетания текущего цветового профиля, из EDID или DisplayID дисплея или из других источников.
Если приложение запрашивает цветовой профиль по умолчанию EXTENDED
, это означает, что ваше приложение учитывает расширенный цвет и получит фактический EXTENDED
профиль.
Преобразование цветового пространства в цветовое пространство дисплея
Если вспомогатель совместимости активен, ожидается, что ваше приложение будет использовать управление цветом ICC для синтетического профиля отображения. Windows предполагает, что ваше приложение предназначено для этого цветового пространства, и выполнит правильное преобразование цветового пространства, чтобы обеспечить его точное отображение на дисплее.
Преобразование цветового пространства применяется ко всему процессу приложения, поэтому все визуальное содержимое приложения обрабатывается как ориентированное на цветовое пространство дисплея, даже если некоторые из него не управляются цветом и номинально предназначены для sRGB (например, пользовательского интерфейса). Преобразование цветового пространства также применяется независимо от графического API (GDI, DirectX, XAML и т. д.), формата пикселей или других характеристик отображаемого содержимого.
Выполнение сопоставления гаммы для ограничения гаммы дисплея
Сохраняется любое существующее поведение сопоставления гаммы.
Изменения в поведении, видимые пользователем
Пользователи могут проверить, активна ли вспомогатель совместимости с icc для исполняемого файла, проверив вкладку Свойства совместимости. Если в приложении отображаются сведения о профиле ICC по умолчанию, пользователи увидят, что это искусственный профиль. Описательное содержимое профиля (включая имя) является подробным описанием реализации.
Фактическое поведение цвета должно совпадать с поведением при отключении дополнительного цвета. В обоих случаях приложение будет отображать точные цвета, которые могут получить доступ к полной гамме дисплея, как описано в профиле ICC.