Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este efeito permite que o nível de branco de uma imagem seja dimensionado linearmente. Isso é especialmente útil quando você converte entre espaço de luminância referido por exibição e espaço de luminância referenciado por cena, ou vice-versa.
As propriedades para esse efeito são identificadas pelo D2D1_WHITELEVELADJUSTMENT_PROP enumeração, e o CLSID é CLSID_D2D1WhiteLevelAdjustment.
Propriedades do efeito
| Nome para exibição e enumeração de índice | Tipo e valor padrão | Descrição |
|---|---|---|
| InputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL | FLUTUAR | O nível de branco da imagem de entrada, em lêndeas. |
| OutputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL | FLUTUAR | O nível de branco da imagem de saída, em lêndeas. |
Comentários
Este efeito destina-se a ser combinado com o efeito de mapa de tons HDR para permitir que você renderize imagens HDR em Direct2D com gerenciamento de cores e mapeamento de tons adequados. Consulte a de Observações desse tópico para obter mais detalhes. Os efeitos destinam-se a qualquer estrutura que pretenda fornecer a melhor experiência de visualização de imagens HDR da sua classe, que lida com todos os formatos de imagem HDR do Windows e se adapte às capacidades do ecrã (quer seja HDR ou WCG/SDR).
No Windows, todo o conteúdo SDR/WCG é assumido como estando em um espaço de luminância referenciado pela tela, o que significa que o nível de branco do conteúdo deve ser dimensionado para o nível de branco da tela antes de ser finalmente apresentado. No entanto, nem sempre é da responsabilidade da sua aplicação fazê-lo. Por outro lado, presume-se que o conteúdo HDR esteja em um espaço de luminância referenciado por cena, o que significa que ele não deve ser dimensionado para corresponder ao nível de branco da tela. 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 pela tela. Mas se a área de trabalho do Windows estiver no modo HDR, a composição da área de trabalho acontece no espaço de luminância referido por cena. Dito isso, o próprio DWM (Desktop Window Manager) 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 impulso automático significa que o papel do seu 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 abaixo descreve os casos em que seu aplicativo deve e não deve executar um ajuste de nível de branco, bem como qual deve ser esse ajuste. Em geral, o ajustamento depende de três fatores.
- Espaço de cores de conteúdo de entrada. Se o conteúdo de entrada contém valores de luminância de alta faixa dinâmica (HDR) ou não. O conteúdo do WCG se comporta da mesma forma que o SDR para o comportamento da luminância.
- Formato de composição. O formato de pixel da superfície de destino que é apresentado ao DWM — por exemplo, um de cadeia de permuta de ou uma superfície de composição de . Ao renderizar usando Direct2D, isso é UINT8 ou FP16.
- Modo de cor avançado da área de trabalho. Se o DWM está sendo executado no modo SDR, WCG ou HDR para a tela atual. Obtenha estas informações através DXGI_OUTPUT_DESC1::ColorSpace ou AdvancedColorInfo.CurrentAdvancedColorKind.
Com base nesses três fatores, você deve definir os valores apropriados para as propriedades InputWhiteLevel e OutputWhiteLevel.
| Conteúdo de entrada | Formato de composição | Modo de cor avançado | InputWhiteLevel | OutputWhiteLevel |
|---|---|---|---|---|
| SDR/WCG | UINT8 | Qualquer | N/A | N/A |
| SDR/WCG | FP16 | SDR/WCG | N/A | N/A |
| SDR/WCG | FP16 | HDR | SDRWhite | 80 |
| HDR | Qualquer | SDR/WCG | 80 | DXGI_OUTPUT_DESC1::MaxLuminance |
| HDR | UINT8 | HDR | 80 | SDRWhite |
| HDR | FP16 | HDR | N/A | N/A |
Na tabela, o valor 80 é o nível de branco de referência, em lêndeas, 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 lêndeas que a tela deve usar para exibir conteúdo sRGB branco. Você pode recuperar esse valor acessando a propriedadeAdvancedColorInfo.SdrWhiteLevelInNits. O valor N/A significa que o ajuste do nível de branco não é usado neste cenário; Você pode remover o efeito do gráfico ou definir valores para um no-op.
Observe que, nos casos em que um ajuste de nível de branco não é necessário para o aplicativo, o DWM ou o monitor podem estar lidando com a conversão de espaço de luminância referido pelo monitor para espaço de luminância referido por cena.
- No modo SDR/WCG, a conversão acontece após a composição DWM e aplica-se a todo o conteúdo apresentado nesse ecrã. O visor executa implicitamente esta conversão.
- No modo HDR, a conversão é realizada automaticamente pelo DWM antes da composição, desde que a superfície de composição do seu aplicativo seja SDR.
Requerimentos
| Exigência | Valor |
|---|---|
| Cliente mínimo suportado | Windows 10, versão 1809 (10.0; Build 17763) [aplicativos de desktop | Aplicativos UWP] |
| Cabeçalho | d2d1effects_2.h |
| Biblioteca | d2d1.lib, dxguid.lib |