Efecto de ajuste de nivel blanco
Este efecto permite escalar linealmente el nivel blanco de una imagen. Esto es especialmente útil cuando se convierte entre el espacio de luminancia a la que se hace referencia a la pantalla y el espacio de luminancia a la que se hace referencia a la escena, o viceversa.
Las propiedades de este efecto se identifican mediante la enumeración D2D1_WHITELEVELADJUSTMENT_PROP y clSID se CLSID_D2D1WhiteLevelAdjustment.
Propiedades de efecto
Enumeración de nombre para mostrar e índice | Tipo y valor predeterminado | Descripción |
---|---|---|
InputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL | FLOAT | Nivel blanco de la imagen de entrada, en nits. |
OutputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL | FLOAT | Nivel blanco de la imagen de salida, en nits. |
Observaciones
Este efecto está diseñado para combinarse con el efecto de mapa de tono HDR para que puedas representar imágenes HDR en Direct2D con la correcta administración de colores y la asignación de tono. Vea los comentarios de ese tema para obtener más detalles. Los efectos están dirigidos a cualquier marco que quiera proporcionar una mejor experiencia de visualización de imágenes HDR que controla todos los formatos de imagen HDR de Windows y se adapta a las funciones de la pantalla (ya sea HDR o WCG/SDR).
En Windows, se supone que todo el contenido SDR/WCG se encuentra en un espacio de luminancia a la que se hace referencia en la pantalla, lo que significa que el nivel blanco del contenido se debe escalar verticalmente al nivel blanco de la pantalla antes de que se presente en última instancia. Sin embargo, no siempre es responsabilidad de la aplicación hacerlo. En cambio, se supone que el contenido HDR está en un espacio de luminancia a la que se hace referencia a la escena, lo que significa que no se debe escalar en última instancia para que coincida con el nivel blanco de la pantalla. Dicho esto, es posible que la aplicación tenga que realizar el escalado en algunas circunstancias al representar contenido HDR para asegurarse de que este es el resultado neto.
Cuando el escritorio de Windows está en modo SDR o WCG, el escritorio se compone en un espacio de luminancia a la que se hace referencia en pantalla. Pero si el escritorio de Windows está en modo HDR, la composición del escritorio se produce en el espacio de luminancia a la que se hace referencia en la escena. Dicho esto, el propio Administrador de ventanas de escritorio (DWM) realiza ajustes de luminancia (a menudo llamados SDRBoost) para superficies de composición de 8 bits, y que simplifica la aplicación para ese caso. Incluso así, el aumento automático significa que el rol de la aplicación en la conversión de un espacio de luminancia a otro depende del formato de composición que usa la aplicación para presentar su contenido.
En la tabla siguiente se describen los casos en los que la aplicación debe y no debe realizar un ajuste de nivel blanco, así como lo que debe ser ese ajuste. En general, el ajuste depende de tres factores.
- Espacio de colores de contenido de entrada. Si el contenido de entrada contiene valores de luminancia de alto rango dinámico (HDR) o no. El contenido de WCG se comporta igual que SDR para el comportamiento de la luminancia.
- Formato de composición. Formato de píxel de la superficie de destino que se presenta al DWM, por ejemplo, una cadena de intercambio o una superficie de composición. Al representar con Direct2D, se trata de UINT8 o FP16.
- Modo de color avanzado de escritorio. Si DWM se ejecuta en modo SDR, WCG o HDR para la pantalla actual. Obtenga esta información a través de DXGI_OUTPUT_DESC1::ColorSpace o AdvancedColorInfo.CurrentAdvancedColorKind.
En función de estos tres factores, debe establecer los valores adecuados para las InputWhiteLevel
propiedades y OutputWhiteLevel
.
Contenido de entrada | Formato de composición | Modo de color avanzado | InputWhiteLevel | OutputWhiteLevel |
---|---|---|---|---|
SDR/WCG | UINT8 | Any | N/D | N/D |
SDR/WCG | FP16 | SDR/WCG | N/D | N/D |
SDR/WCG | FP16 | HDR | SDRWhite | 80 |
HDR | Any | SDR/WCG | 80 | DXGI_OUTPUT_DESC1::MaxLuminance |
HDR | UINT8 | HDR | 80 | SDRWhite |
HDR | FP16 | HDR | No aplicable | N/D |
En la tabla, el valor 80 es el nivel blanco de referencia, en nits, para contenido sRGB o scRGB. Para ello, puede usar la constante D2D1_SCENE_REFERRED_SDR_WHITE_LEVEL, que se define en d2d1effects_2.h
. El valor SDRWhite
es el número de nits que la pantalla debe usar para mostrar contenido sRGB blanco. Puede recuperar este valor accediendo a la propiedad AdvancedColorInfo.SdrWhiteLevelInNits . El valor N/A significa que el ajuste de nivel blanco no se usa en este escenario; Puede quitar el efecto del grafo o establecer valores para una operación sin operación.
Tenga en cuenta que, en los casos en los que la aplicación no necesita un ajuste de nivel blanco, dwm o la pantalla pueden controlar la conversión del espacio de luminancia a la que se hace referencia a la escena.
- En el modo SDR/WCG, la conversión se produce después de la composición de DWM y se aplica a todo el contenido presentado a esa pantalla. La presentación realiza implícitamente esta conversión.
- En el modo HDR, el DWM realiza automáticamente la conversión antes de la composición, siempre que la superficie de composición de la aplicación sea SDR.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 10, versión 1809 (10.0; Compilación 17763) [aplicaciones de escritorio | Aplicaciones para UWP] |
Encabezado | d2d1effects_2.h |
Biblioteca | d2d1.lib, dxguid.lib |