Share via


Comportamiento del perfil ICC con color avanzado

Advanced Color es un término paraguas de tecnologías del sistema operativo para pantallas con una fidelidad de color significativamente mayor que las pantallas estándar. Para obtener más información, consulte Uso de DirectX con color avanzado en pantallas de rango dinámico alto/estándar. La administración avanzada de colores y colores automáticos garantizan un color de visualización coherente y colorimétricomente preciso para todas las aplicaciones: heredadas y modernas. Sin embargo, es posible que la aplicación ya realice su propia administración de colores explícita mediante perfiles de color international Color Consortium (ICC).

Cuando el color avanzado está activo en pantallas SDR o HDR, el comportamiento de los perfiles icc cambia de maneras no compatibles con versiones anteriores. Si la aplicación funciona con perfiles de ICC para mostrar, Windows ofrece asistentes de compatibilidad para asegurarse de que la aplicación sigue teniendo un comportamiento correcto. Las aplicaciones avanzadas con reconocimiento de colores deben pasar de interactuar directamente con perfiles icc para mostrar, ya que Windows proporciona API orientadas a aplicaciones de reemplazo que abstraen el perfil; puede obtener instrucciones completas en Uso de DirectX con color avanzado en pantallas de rango dinámico alto/estándar.

En este tema se describen los cambios en el comportamiento del perfil icc. Además, si la aplicación administrada por colores necesita seguir usando perfiles icc para mostrar, en este tema se muestra cómo adaptar la aplicación para aprovechar incrementalmente las ventajas avanzadas de color.

Comportamiento heredado de administración de colores de Windows

Cuando El color avanzado está inactivo, Windows no realiza ninguna administración de colores en la salida de contenido visual de la aplicación (por ejemplo, GDI hDC, cadena de intercambio directX o objeto visual de composición); en la práctica, se supone que el contenido de la aplicación está en el espacio de colores sRGB estándar. Si quieres una reproducción de color precisa en la pantalla activa, tu aplicación debe realizar su propia administración de colores, con más frecuencia usando perfiles de color international Color Consortium (ICC). Los pasos conceptuales principales son:

  1. Obtiene las características de color de la pantalla.
  2. Realice la conversión del espacio de color en el espacio de colores de la pantalla.
  3. Realice la asignación de gamut para restringir la gama de la pantalla.

Estos son más detalles sobre ech de los tres pasos.

Obtener las características de color de la pantalla

Una aplicación Win32 usa las funciones de administración de perfiles del sistema de colores de Windows para obtener el perfil ICC predeterminado, que indica las características de color de la pantalla, incluida su gama de colores disponible.

En su lugar, una aplicación de Plataforma universal de Windows usa el método DisplayInformation.GetColorProfileAsync.

Realizar la conversión del espacio de color en el espacio de color de la pantalla

Si el espacio de colores de la pantalla no coincide con el espacio de colores del contenido, debe realizar una conversión de espacio de color. Por ejemplo, el contenido digital suele codificarse como sRGB, pero la pantalla puede ser de amplia gama DCI-P3. Normalmente, usaría una biblioteca de administración de colores ICC que lee el perfil ICC y transforma los valores de color del contenido para que coincidan. Windows proporciona varios motores de administración de colores ICC; por ejemplo, el efecto de administración de colores de Direct2D.

Es importante tener en cuenta que la administración de colores basada en perfiles ICC se hace referencia a la presentación o se hace referencia a la salida. Esto significa que los valores de color no se almacenan como colores absolutos (a los que se hace referencia en la escena), sino que se codifican en relación con el espacio de color de la pantalla (el dispositivo de salida). Por ejemplo, si la aplicación representa sRGB en rojo, se representa como RGB(1, 0, 0) en la salida representada. Pero si estás representando ese contenido en una pantalla Adobe RGB, RGB(1, 0, 0) la pantalla se interpreta simplemente como su rojo más saturado (Adobe RGB rojo), que es incorrecto. Cuando aplique una transformación de color ICC, volverá a codificar el color como RGB(0.858659, 0, 0)y, cuando se represente en la pantalla Adobe RGB, se reproducirá correctamente como rojo sRGB.

Realizar una asignación de gama para restringir la gama de la pantalla

Además de reinterpretar los valores de color para que coincidan con el espacio de colores de la pantalla, debe controlar el caso en el que la pantalla no pueda reproducir físicamente todos los colores del contenido; Si la gama de colores del contenido es mayor que la de la pantalla. Ese proceso se denomina asignación de gama.

La asignación de gamut es perdida porque tiene que hacer un equilibrio sobre cómo aproximar la gama más grande del contenido. El método más sencillo es colorimétrico, donde se conservan los colores que están dentro de la gama de la pantalla, y los colores que están fuera de la gama se recortan al valor de gama más cercano.

En un flujo de trabajo basado en perfiles ICC, la asignación de la gama normalmente se controla automáticamente en la biblioteca de administración de colores. Para controlar el comportamiento de asignación, seleccione la intención de representación (consulte Modos de intención de representación).

Nota

Cuando se encuentra en un flujo de trabajo de color avanzado, por lo general no se recomienda usar la intención de representación perceptual, ni para el origen o el destino, ya que se diseñó para orígenes y destinos de SDR que tienen gamas de colores más pequeñas que las usadas para HDR y algunas pantallas WCG; por lo que usarlos pueden dar lugar a un comportamiento inesperado.

Administración automática del color del sistema de Windows

Cuando El color avanzado está activo, Windows realiza la administración automática de colores del sistema, garantiza que el contenido de color de la aplicación se reproduce con precisión en la pantalla. Esto simplifica drásticamente las acciones necesarias en la aplicación, aunque las aplicaciones avanzadas pueden seguir realizando un procesamiento adicional para obtener el color máximo y la precisión perceptual. Para obtener más información, consulte Uso de DirectX con color avanzado en pantallas de rango dinámico alto/estándar.

Obtener las características de color de la pantalla

Las aplicaciones compatibles con colores avanzadas no deben interactuar directamente con el perfil de ICC para mostrar. En su lugar, puede obtener las propiedades de color de la pantalla mediante DisplayInformation::GetAdvancedColorInfo o IDXGIOutput6.

Realizar la conversión del espacio de color en el espacio de color de la pantalla

Windows realizará la conversión del espacio de color en el espacio de colores de la pantalla determinado por el perfil de color predeterminado actual. Si no hay ningún perfil, se usarán los datos de colorimetría EDID. La aplicación obtiene automáticamente el comportamiento de color al que se hace referencia en la escena ; por ejemplo, si representas el color rojo sRGB codificado como RGB(1, 0, 0) y se muestra en un monitor Adobe RGB, Windows lo reproducirá correctamente como rojo sRGB. Las aplicaciones compatibles con colores avanzadas deben etiquetar su contenido con el espacio de color correcto para informar a Windows mediante IDXGISwapChain3::SetColorSpace1. Para todas las aplicaciones no compatibles con colores que se representan en un formato de píxel entero estándar (por ejemplo, RGBA de 8 bits), Windows tratará explícitamente la aplicación como sRGB. Si desea representar AdobeRGB rojo en un escenario de color avanzado, deberá representarse RGB(1.158157,0,0) en una superficie etiquetada scRGB (está restringida por la gama de la pantalla).

Realizar una asignación de gama para restringir la gama de la pantalla

La canalización de pantalla de la GPU realizará recortes numéricos en colores fuera de gama. Si la aplicación desea usar una asignación más sofisticada, debe hacerlo usted mismo.

Comportamiento predeterminado del perfil ICC con color avanzado

La administración automática de colores del sistema afecta necesariamente a la forma en que se comportan las aplicaciones basadas en perfiles ICC existentes, ya que realizan muchas acciones que ahora están controladas por el sistema operativo (SO). Windows aplica el comportamiento predeterminado (descrito a continuación) a las aplicaciones basadas en perfiles icc. Esto garantiza que esas aplicaciones no tengan un comportamiento incorrecto. Sin embargo, sin más trabajo, no tendrán acceso a ninguna de las funcionalidades de color extendidas.

En concreto, de forma predeterminada, la aplicación basada en perfiles icc está restringida a la gama sRGB, incluso si el monitor es realmente más amplio. Windows también proporciona un asistente de compatibilidad icc que puede proporcionar a la aplicación ICC acceso a toda la gama de la pantalla. Para obtener más información, consulte la sección Asistente para mostrar compatibilidad de perfiles ICC en este tema.

Obtener las características de color de la pantalla

Cuando El color avanzado está activo, las llamadas a las API de administración de perfiles de color para obtener el perfil predeterminado de una pantalla devolverán "sin perfil", independientemente de qué perfiles estén realmente instalados. Por convención " no profile" debe interpretarse como sRGB.

Los perfiles icc para mostrar siguen siendo válidos y se usan con color avanzado, pero solo se usan en el nivel del sistema y la mayoría de las aplicaciones no deben interactuar directamente con ellos. Por lo general, la siguiente información solo es necesaria si la aplicación es una utilidad que enumera todos los perfiles de presentación o está creando o instalando perfiles.

Para aplicar esto, Windows agrega el concepto de subtipos de perfil de STANDARD color y EXTENDED . Esto se aplica a las API de administración de perfiles de color que usan COLORPROFILESUBTYPE:

CPST_STANDARD_DISPLAY_COLOR_MODE
CPST_EXTENDED_DISPLAY_COLOR_MODE

Nota

STANDARD y EXTENDED los subtipos no son una propiedad almacenada dentro del propio perfil; en su lugar, se aplican a la asociación del perfil a una presentación (es decir, cuando el perfil se agrega a la lista de asociaciones de perfiles de la pantalla). Un único perfil podría estar asociado a ambos STANDARD subtipos para EXTENDED una presentación, lo que significa que estaría disponible tanto para escenarios de color estándar como avanzados.

Mostrar asociaciones de perfil diseñadas para su uso en SDR (ya sea SDR normal o SDR de color avanzado) tienen subtipo STANDARD (tiat es el valor predeterminado si no se especifica ningún valor). Las asociaciones de perfil de visualización para su uso en modo HDR son subtipos EXTENDED. Si la aplicación no especifica un subtipo, se interpreta como STANDARD.

Cualquier API getter que use COLORPROFILESUBTYPE solo devolverá perfiles con el subtipo o EXTENDED coincidenteSTANDARD. Por ejemplo, si HDR está activo, los únicos perfiles de visualización con el EXTENDED subtipo son válidos para su uso y STANDARD no se usan perfiles de subtipo. Setter Las API pueden especificar el subtipo (STANDARD es el valor predeterminado).

Realizar la conversión del espacio de color en el espacio de color de la pantalla

Dado que las API de administración de perfiles icc devuelven sRGB cuando el color avanzado está activo, la aplicación basada en perfiles icc se administrará en color a sRGB y Windows lo reproducirá correctamente como sRGB en la pantalla.

Realizar una asignación de gama para restringir la gama de la pantalla

Se conserva cualquier comportamiento de asignación de gama existente.

Mostrar asistente de compatibilidad de perfiles ICC

Cuando el color avanzado está activo, Windows proporciona un asistente de compatibilidad para mostrar perfiles ICC que proporciona acceso a toda la gama de la pantalla. De ese modo, la aplicación sigue recibiendo colores precisos y anchos de gama hasta la funcionalidad notificada de la pantalla, la misma funcionalidad que está disponible en monitores de gama ancha calibrados en el modo de color no avanzado heredado hoy en día. Sin ese asistente, la aplicación se limitará al comportamiento predeterminado, que es sRGB (consulta Comportamiento predeterminado del perfil ICC con color avanzado).

Ese asistente está disponible a partir de Windows 11. No proporciona otras ventajas del color avanzado, incluido el acceso a una mayor precisión, profundidad de bits o rango dinámico alto, ya que tendrá que modificar la aplicación para que tenga en cuenta el color avanzado.

Habilitación del asistente de compatibilidad con ICC para pantalla

El asistente de compatibilidad icc de pantalla está habilitado por aplicación. No está habilitado de manera predeterminada.

Los usuarios pueden habilitarla para una aplicación; para ello, vaya a la pestaña Compatibilidad de las propiedades del archivo ejecutable y seleccione Usar administración de colores icc para mostrar heredada. El asistente de compatibilidad se aplica a todo el proceso y solo está activo cuando el color avanzado está habilitado para la pantalla, no tiene ningún efecto en una pantalla SDR estándar.

Interfaz de usuario para habilitar el asistente de compatibilidad de ICC para mostrar para un archivo ejecutable

Windows habilita automáticamente el asistente para algunas aplicaciones populares que se conocen para usar la administración de perfiles de color ICC.

No hay ninguna manera de habilitar ese asistente de compatibilidad para la aplicación.

Obtener las características de color de la pantalla

Si el asistente de compatibilidad está activo, cuando la aplicación consulta el perfil de color predeterminado STANDARD mediante las funciones de administración de perfiles del sistema de colores de Windows, Windows construye un perfil ICC sintético con los mismos datos que rellenan las API de funcionalidades de visualización de color avanzado. Los datos del perfil sintético pueden proceder de una combinación del perfil de color actual, del EDID o DisplayID de la pantalla, o de otros orígenes.

Si la aplicación consulta el perfil de color predeterminado EXTENDED , eso indica que la aplicación es compatible con colores avanzados y recibirá el perfil real EXTENDED .

Realizar la conversión del espacio de colores en el espacio de colores de la pantalla

Si el asistente de compatibilidad está activo, se espera que la aplicación use la administración de colores ICC para dirigirse al perfil de visualización sintética. Windows supone que la aplicación tiene como destino ese espacio de colores y realizará la conversión de espacio de color correcta para asegurarse de que se representa con precisión en la pantalla.

La conversión del espacio de colores se aplica a todo el proceso de la aplicación, por lo que todo el contenido visual de la aplicación se trata como destino del espacio de colores de la pantalla, incluso si algunos no están administrados por colores y tienen como destino nominalmente sRGB (por ejemplo, interfaz de usuario). La conversión del espacio de colores también se aplica independientemente de la API de gráficos (GDI, DirectX, XAML, etc.), el formato de píxel u otras características del contenido representado.

Realizar la asignación de gamut para restringir la gama de la pantalla

Se conserva cualquier comportamiento de asignación de gama existente.

Cambios de comportamiento visibles para el usuario

Los usuarios pueden comprobar si el asistente de compatibilidad icc para mostrar está activo para un ejecutable comprobando su pestaña Propiedades de compatibilidad. Si la aplicación muestra información sobre el perfil icc de visualización predeterminado, los usuarios verán que es un perfil sintético. El contenido descriptivo del perfil (incluido el nombre) es un detalle de implementación.

El comportamiento de color real debe ser idéntico a cuando el color avanzado está deshabilitado. En ambos casos, la aplicación representará colores precisos que pueden acceder a la gama completa de la pantalla, como se describe en el perfil icc.