Efecto de ajuste de nivel blanco

Este efecto permite escalar linealmente el nivel blanco de una imagen. Esto resulta especialmente útil cuando se convierte entre el espacio de luminosidad al que se hace referencia para la presentación y el espacio de luminosidad al que se hace referencia en la escena, o viceversa.

Las propiedades de este efecto se identifican mediante la enumeración D2D1_WHITELEVELADJUSTMENT_PROP ,y el 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á pensado para combinarse con el efecto de mapa de tono HDR para permitirle representar imágenes HDR en Direct2D con la administración de colores y la asignación de tono adecuadas. 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 DE HDR que controle todos los formatos de imagen de Windows HDR y se adapte a las funcionalidades de la pantalla (ya sea HDR o WCG/SDR).

En Windows, se supone que todo el contenido de SDR/WCG está en un espacio de luminosidad al que se hace referencia para mostrar, lo que significa que el nivel blanco del contenido se debe escalar verticalmente hasta el nivel de 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 luminosidad al que se hace referencia a la escena, lo que significa que no se debe escalar en última instancia para que coincida con el nivel de 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 Windows está en modo SDR o WCG, el escritorio se compone de un espacio de luminosidad al que se hace referencia para mostrar. Pero si el escritorio Windows está en modo HDR, la composición del escritorio se produce en el espacio de luminosidad al que se hace referencia en la escena. Dicho esto, el propio Administrador de ventanas de escritorio (DWM) realiza ajustes de luminosidad (a menudo denominados SDRBoost) para superficies de composición de 8 bits, lo que simplifica la aplicación para ese caso. Aun así, la potenciación automática significa que el rol de la aplicación en la conversión de un espacio de luminosidad a otro depende del formato de composición que la aplicación usa 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 de blanco, así como cuál debe ser ese ajuste. En general, el ajuste depende de tres factores.

  1. Espacio de colores de contenido de entrada. Si el contenido de entrada contiene valores de luminosidad de alto rango dinámico (HDR) o no. El contenido de WCG se comporta igual que SDR para el comportamiento de luminosidad.
  2. 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 mediante Direct2D, se trata de UINT8 o FP16.
  3. Modo de color avanzado de escritorio. Si el DWM se ejecuta en modo SDR, WCG o HDR para la pantalla actual. Obtenga esta información mediante DXGI_OUTPUT_DESC1::ColorSpace o AdvancedColorInfo.CurrentAdvancedColorKind.

En función de estos tres factores, debe establecer los valores adecuados para las InputWhiteLevel propiedades OutputWhiteLevel y .

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 N/D N/D

En la tabla, el valor 80 es el nivel blanco de referencia, en nits, para el contenido de sRGB o scRGB. Para ello, puede usar la constante D2D1_SCENE_REFERRED_SDR_WHITE_LEVEL, que se define en d2d1effects_2.h . El valor es el número de nits que debe usar la pantalla SDRWhite para mostrar contenido sRGB blanco. Puede recuperar este valor accediendo a la propiedad AdvancedColorInfo.SdrWhiteLevelInNits. El valor N/A significa que no se usa el ajuste de nivel de blanco en este escenario; puede quitar el efecto del gráfico o establecer valores para una operación no op.

Tenga en cuenta que, en los casos en los que la aplicación no necesita un ajuste de nivel de blanco, el DWM o la pantalla pueden controlar la conversión del espacio de luminosidad al 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 pantalla realiza implícitamente esta conversión.
  • En el modo HDR, el DWM realiza automáticamente la conversión antes de la composición, siempre y cuando 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 de aplicaciones de escritorio UWP 17763) [ |]
Encabezado d2d1effects _ 2.h
Biblioteca d2d1.lib, dxguid.lib