Compartilhar via


Efeito de ajuste no nível de branco

Esse efeito permite que o nível branco de uma imagem seja dimensionado linearmente. Isso é especialmente útil quando você converte entre o espaço de luminância referenciado pela exibição e o espaço de luminância referenciado pela cena ou vice-versa.

As propriedades desse efeito são identificadas pela enumeração D2D1_WHITELEVELADJUSTMENT_PROP e o CLSID é CLSID_D2D1WhiteLevelAdjustment.

Propriedades de efeito

Nome de exibição e enumeração de índice Tipo e valor padrão Descrição
InputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL FLOAT O nível de branco da imagem de entrada, em nits.
OutputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL FLOAT O nível branco da imagem de saída, em nits.

Comentários

Esse efeito destina-se a ser combinado com o efeito de mapa de tom HDR para permitir que você renderize imagens HDR em Direct2D com o gerenciamento de cores e o mapeamento de tom adequados. Confira os Comentários desse tópico para obter mais detalhes. Os efeitos são destinados a qualquer estrutura que queira fornecer uma melhor experiência de exibição de imagem HDR na classe que manipula todos os formatos de imagem HDR do Windows e se adapta aos recursos da exibição (seja HDR ou WCG/SDR).

No Windows, supõe-se que todo o conteúdo SDR/WCG esteja em um espaço de luminância referenciado pela exibição, o que significa que o nível em branco do conteúdo deve ser escalado verticalmente para o nível branco do vídeo antes de ser apresentado. No entanto, nem sempre é responsabilidade do aplicativo fazer isso. Por outro lado, supõe-se que o conteúdo HDR esteja em um espaço de luminância referenciado pela cena, o que significa que ele não deve ser dimensionado para corresponder ao nível branco da exibição. Dito isso, seu aplicativo pode precisar executar o dimensionamento em algumas circunstâncias ao renderizar conteúdo HDR para garantir que esse seja o resultado líquido.

Quando a área de trabalho do Windows está no modo SDR ou WCG, a área de trabalho é composta em um espaço de luminância referenciado por exibição. Mas se a área de trabalho do Windows estiver no modo HDR, a composição da área de trabalho ocorrerá no espaço de luminância referenciado pela cena. Dito isto, o próprio DWM (Gerenciador de Janelas da Área de Trabalho) executa ajustes de luminância (geralmente chamados de SDRBoost) para superfícies de composição de 8 bits e isso simplifica seu aplicativo para esse caso. Mesmo assim, o aumento automático significa que a função do aplicativo na conversão de um espaço de luminância para outro depende do formato de composição que seu aplicativo está usando para apresentar seu conteúdo.

A tabela a seguir descreve os casos em que seu aplicativo deve e não deve executar um ajuste de nível branco, bem como qual deve ser esse ajuste. Em geral, o ajuste depende de três fatores.

  1. Colorspace de conteúdo de entrada. Se o conteúdo de entrada contém valores de luminância de alto intervalo dinâmico (HDR) ou não. O conteúdo do WCG se comporta da mesma forma que a SDR para o comportamento de luminância.
  2. Formato de composição. O formato de pixel da superfície de destino apresentada ao DWM, por exemplo, uma cadeia de troca ou uma superfície de composição. Ao renderizar usando Direct2D, isso é UINT8 ou FP16.
  3. Modo de cor avançado da área de trabalho. Se o DWM está em execução no modo SDR, WCG ou HDR para a exibição atual. Obtenha essas informações por meio de DXGI_OUTPUT_DESC1::ColorSpace ou AdvancedColorInfo.CurrentAdvancedColorKind.

Com base nesses três fatores, você deve definir os valores apropriados para as InputWhiteLevel propriedades e OutputWhiteLevel .

Conteúdo de entrada Formato de composição Modo de cor avançado InputWhiteLevel OutputWhiteLevel
SDR/WCG UINT8 Qualquer N/D N/D
SDR/WCG FP16 SDR/WCG N/D N/D
SDR/WCG FP16 HDR SDRWhite 80
HDR Qualquer SDR/WCG 80 DXGI_OUTPUT_DESC1::MaxLuminance
HDR UINT8 HDR 80 SDRWhite
HDR FP16 HDR N/D N/D

Na tabela, o valor 80 é o nível de branco de referência, em nits, para conteúdo sRGB ou scRGB. Para isso, você pode usar a constante D2D1_SCENE_REFERRED_SDR_WHITE_LEVEL, que é definida em d2d1effects_2.h. O valor SDRWhite é o número de nits que a exibição deve usar para exibir conteúdo sRGB branco. Você pode recuperar esse valor acessando a propriedade AdvancedColorInfo.SdrWhiteLevelInNits . O valor N/A significa que o ajuste no nível branco não é usado neste cenário; você pode remover o efeito do grafo ou definir valores para uma operação não operada.

Observe que, nos casos em que um ajuste de nível branco não é necessário para o aplicativo, o DWM ou o display podem estar tratando a conversão do espaço de luminância referenciado por exibição para o espaço de luminância referenciado pela cena.

  • No modo SDR/WCG, a conversão ocorre após a composição dwm e se aplica a todo o conteúdo apresentado a essa exibição. A exibição executa implicitamente essa conversão.
  • No modo HDR, a conversão é executada automaticamente pelo DWM antes da composição, desde que a superfície de composição do aplicativo seja SDR.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1809 (10.0; Build 17763) [aplicativos da área de trabalho | Aplicativos UWP]
Cabeçalho d2d1effects_2.h
Biblioteca d2d1.lib, dxguid.lib