Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 Usar DirectX con color avanzado en pantallas de rango dinámico alto/estándar. La administración avanzada de colores y colores automáticos garantiza un color de visualización coherente y cromáticamente preciso para todas las aplicaciones: tanto heredadas como modernas. Sin embargo, es posible que la aplicación ya realice su propia administración de colores explícita mediante perfiles de color del Consorcio internacional de colores (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 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; está disponible una guía completa 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 debe seguir usando perfiles icc para mostrar, en este tema se muestra cómo adaptar la aplicación para aprovechar incrementalmente las ventajas de color avanzado.
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, supone que el contenido de la aplicación está en el espacio de colores sRGB estándar. Si quieres una reproducción precisa del color en la pantalla activa, la aplicación debe realizar su propia administración de colores, con más frecuencia usando perfiles de color del International Color Consortium (ICC). Los pasos conceptuales principales son:
- Obtiene las características de color de la pantalla.
- Realice la conversión del espacio de color al espacio de colores de la pantalla.
- Realice la asignación de gamut para restringir la gama de la pantalla.
Estos son más detalles sobre cada uno 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 color de Windows para obtener el perfil ICC predeterminado, que indica las características de color de la pantalla, incluida su gama de colores disponible.
Una aplicación para la Plataforma universal de Windows usa método DisplayInformation.GetColorProfileAsync en su lugar.
Realizar la conversión del espacio de color al espacio de colores de la pantalla
Si el espacio de color de la pantalla no coincide con el espacio de color del contenido, debe realizar una conversión de espacio de color. Por ejemplo, el contenido digital se suele codificar como sRGB, pero la pantalla podría 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 de .
Es importante tener en cuenta que la administración de colores basada en perfiles icc es o a los que se hace referencia a la salida. Esto significa que los valores de color no se almacenan como absolutos (colores a los que se hace referencia a 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 rojo, se representa como RGB(1, 0, 0)
en la salida representada. Pero si está representando ese contenido en una pantalla Adobe RGB, RGB(1, 0, 0)
se interpreta simplemente por la pantalla como su rojo más saturado (Adobe RGB rojo), que es incorrecto. Cuando se aplica una transformación de color ICC, se volverá a codificar el color como RGB(0.858659, 0, 0)
, y cuando se represente por la pantalla RGB de Adobe, 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 color 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 una pérdida 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 origen o 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 su uso puede 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, lo que garantiza que el contenido de color de la aplicación se reproduzcan con precisión en la pantalla. Esto simplifica drásticamente las acciones necesarias en la aplicación, aunque es posible que las aplicaciones avanzadas sigan realizando un procesamiento adicional para una precisión máxima de color y perceptual. Para obtener más información, consulte Usar DirectX con color avanzado en pantallas de rango dinámico alto/estándar.
Obtener las características de color de la pantalla
Las aplicaciones avanzadas con reconocimiento de colores 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 al espacio de colores de la pantalla
Windows realizará la conversión del espacio de color al 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 comportamiento de color a la escena, por ejemplo, si representas sRGB rojo codificado como RGB(1, 0, 0)
y se muestran en un monitor RGB de Adobe, Windows lo reproducirá correctamente como rojo sRGB. Las aplicaciones avanzadas con reconocimiento de color deben etiquetar su contenido con el espacio de color correcto para informar a Windows mediante IDXGISwapChain3::SetColorSpace1. Para todas las aplicaciones que no son compatibles con colores avanzadas 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á representar 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 visualización de la GPU realizará recortes numéricos en colores fuera de la 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 están realizando muchas acciones que ahora se controlan mediante el sistema operativo (OS.) 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 seguir trabajando, no obtendrá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 Mostrar asistente de 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 instalados realmente. Por convención, "ningún perfil" 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. La siguiente información suele ser necesaria solo si la aplicación es una utilidad que enumera todos los perfiles de visualización o está creando o instalando perfiles.
Para aplicar esto, Windows agrega el concepto de STANDARD
y EXTENDED
subtipos de perfil de color. Esto se aplica a las API de administración de perfiles de color que usan el COLORPROFILESUBTYPE:
CPST_STANDARD_DISPLAY_COLOR_MODE
CPST_EXTENDED_DISPLAY_COLOR_MODE
Nota
STANDARD
y EXTENDED
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 asociación de perfiles de la pantalla). Un único perfil podría asociarse con STANDARD
y EXTENDED
subtipos para 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 un subtipo STANDARD
(es decir, 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 de de captador que use COLORPROFILESUBTYPE solo devolverá perfiles con el subtipo STANDARD
o EXTENDED
coincidente. Por ejemplo, si HDR está activo, los únicos perfiles de visualización con el subtipo EXTENDED
son válidos para su uso y no se usan perfiles de subtipo STANDARD
.
API de setter puede especificar el subtipo (STANDARD
es el valor predeterminado).
Realizar la conversión del espacio de color al espacio de colores 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 administrará 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 gamut 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 Advanced Color).
Ese asistente está disponible a partir de Windows 11. No proporciona otras ventajas de Advanced Color, incluido el acceso a una mayor precisión o profundidad de bits o a un rango dinámico alto, ya que deberá modificar la aplicación para que sea compatible con el color avanzado.
Habilitación del asistente de compatibilidad con icc de visualización
El asistente de compatibilidad icc de pantalla está habilitado por aplicación. No está habilitado de forma predeterminada.
Los usuarios pueden habilitarlo para una aplicación; para ello, vaya a la pestaña Compatibilidad de las propiedades del ejecutable y seleccione Usar la administración de colores icc de visualización 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.
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 de STANDARD
predeterminado mediante las funciones de administración de perfiles del sistema de color de Windows , Windows construye un perfil ICC sintético con los mismos datos que rellenan las API de funcionalidades de visualización de color avanzadas. Los datos del perfil sintético pueden provenir 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 de EXTENDED
predeterminado, eso indica que la aplicación es compatible con colores avanzados y recibirá el perfil de EXTENDED
real.
Realizar la conversión del espacio de color al 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 color y realizará la conversión correcta del espacio de color para asegurarse de que se representa con precisión en la pantalla.
La conversión del espacio de color 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 nominal 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 gamut existente.
Cambios de comportamiento visibles para el usuario
Los usuarios pueden comprobar si el asistente de compatibilidad icc de pantalla está activo para un archivo ejecutable comprobando su pestaña Propiedades de compatibilidad. Si la aplicación muestra información sobre el perfil de ICC para mostrar 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.