Partilhar via


Efeito de gerenciamento de cores

Use o efeito de gerenciamento de cores para transformar uma imagem de um perfil de cor ICC (International Color Consortium) em outro. O efeito transforma a imagem de acordo com a especificação ICC.

O CLSID para este efeito é CLSID_D2D1ColorManagement.

Propriedades do efeito

Nome para exibição e enumeração de índice Descrição
SourceContext
D2D1_COLORMANAGEMENT_PROP_SOURCE_COLOR_CONTEXT
As informações do espaço de cor de origem. O tipo é ID2D1ColorContext.
O valor padrão é NULL.
SourceIntent
D2D1_COLORMANAGEMENT_PROP_SOURCE_RENDERING_INTENT
Qual a intenção de renderização ICC usar. O tipo é D2D1_COLORMANAGEMENT_RENDERING_INTENT.
O valor padrão é D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCETUAL.
DestinationContext
D2D1_COLORMANAGEMENT_PROP_DESTINATION_COLOR_CONTEXT
As informações do espaço de cores de destino. O tipo é ID2D1ColorContext.
O valor padrão é NULL.
DestinoIntenção
D2D1_COLORMANAGEMENT_PROP_DESTINATION_RENDERING_INTENT
Qual a intenção de renderização ICC usar. O tipo é D2D1_COLORMANAGEMENT_RENDERING_INTENT.
O valor padrão é D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCETUAL.
AlphaMode
D2D1_COLORMANAGEMENT_PROP_ALPHA_MODE
Como interpretar dados alfa contidos na imagem de entrada. O tipo é D2D1_COLORMANAGEMENT_ALPHA_MODE.
O valor padrão é D2D1_COLORMANAGEMENT_ALPHA_MODE_PREMULTIPLIED.
Qualidade
D2D1_COLORMANAGEMENT_PROP_QUALITY
O nível de qualidade da transformação. O tipo é D2D1_COLORMANAGEMENT_QUALITY.
O valor padrão é D2D1_COLORMANAGEMENT_QUALITY_NORMAL.

Modos de intenção de renderização

Enumeração Descrição
D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCEPTUAL O efeito comprime ou expande a gama de cores completa da imagem para preencher a gama de cores do dispositivo, para produzir uma saída percetivamente agradável que preserva os detalhes da cor, mas pode sacrificar a precisão colorimétrica. É útil para a reprodução geral de conteúdo da vida real, como fotos.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_RELATIVE_COLORIMETRIC O efeito ajusta todas as cores que estão fora da gama que o dispositivo de saída pode renderizar para a cor mais próxima que pode ser renderizada. Não preserva o ponto branco.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_SATURATION O efeito preserva a saturação de cores puras na imagem à custa possível da tonalidade e leveza. É útil para gráficos como gráficos e diagramas.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_ABSOLUTE_COLORIMETRIC O efeito ajusta todas as cores que estão fora da gama que o dispositivo de saída pode renderizar para a cor mais próxima que pode ser renderizada. O efeito não altera as cores da gama e preserva o ponto branco.

Modos alfa de imagem de entrada

Enumeração Descrição
D2D1_COLORMANAGEMENT_ALPHA_MODE_PREMULTIPLIED O efeito pressupõe que o modo alfa é pré-multiplicado.
D2D1_COLORMANAGEMENT_ALPHA_MODE_STRAIGHT O efeito assume que o modo alfa é reto.

D2D1_GAMMA1_G2084 mudanças de comportamento

Se seu aplicativo usa o espaço de D2D1_GAMMA1_G2084 ou um dos valores de enumeração DXGI_COLOR_SPACE_TYPE que usam o espaço de cores SMPTE ST.2084 (Percetual Quantizer), o aplicativo pretende trabalhar com dados HDR.

O ID2D1DeviceContext5::CreateColorContextFromSimpleColorProfile e ID2D1DeviceContext5::CreateColorContextFromDxgiColorSpace APIs não levam em conta isso; em vez disso, o conteúdo HDR é dimensionado para caber na faixa de 0-1 durante a operação G2084 DeGamma.

Na prática, o conteúdo que é codificado neste espaço gama usa um WhiteLevel de referência de 10.000 Nits, que normalmente seria representado no CCCS como 10.000 / 80 = 125.0. Portanto, para facilitar melhor seu aplicativo, é mais simples para essa conversão gama também dimensionar a luminância por um fator de 125. A partir do Windows 10, versão 1809 (10.0; Build 17763), o comportamento do efeito de gerenciamento de cores é tal que ele aplica esse dimensionamento. Isso significa que você, como desenvolvedor, não precisa aplicar um segundo efeito de ajuste de nível branco no pipeline.

Conformidade com a especificação ICC

O efeito de gerenciamento de cores é compatível com a especificação ICC v4.3, com estas limitações:

  • O efeito suporta espaços de cores de 1, 3 e 4 canais.
  • O efeito não suporta perfis ColorSpace ou Named Color.

Comportamento do canal alfa

Em geral, o efeito define alfa como 1 (opaco) se não houver dados alfa na imagem de origem e os dados alfa são descartados se não houver espaço na imagem de destino. A tabela aqui descreve o comportamento alfa.

Espaço de cores de origem, formato de pixel Espaço de cores de destino, formato de pixel Comportamento alfa
1 canal, formato R pixel
1 canal, formato R pixel (Sem dados alfa)
1 canal, formato de pixel RGBA Os dados alfa são definidos como 1 (opaco)
3 canais, formato de pixel RGBA Os dados alfa são definidos como 1 (opaco)
4 canais, formato de pixel RGBA (Sem dados alfa)
1 canal, formato de pixel RGBA
1 canal, formato R pixel Os dados alfa são descartados
1 canal, formato de pixel RGBA Os dados alfa são passados através
3 canais, formato de pixel RGBA Os dados alfa são passados através
4 canais, formato de pixel RGBA Os dados alfa são descartados
3 canais, formato de pixel RGBA
1 canal, formato R pixel Os dados alfa são descartados
1 canal, formato de pixel RGBA Os dados alfa são passados através
3 canais, formato de pixel RGBA Os dados alfa são passados através
4 canais, formato de pixel RGBA Os dados alfa são descartados
4 canais, formato de pixel RGBA
1 canal, formato R pixel (Sem dados alfa)
1 canal, formato de pixel RGBA Os dados alfa são definidos como 1 (opaco)
3 canais, formato de pixel RGBA Os dados alfa são definidos como 1 (opaco)
4 canais, formato de pixel RGBA (Sem dados alfa)

Modos de qualidade

Modo Descrição
D2D1_COLORMANAGEMENT_QUALITY_PROOF O modo de qualidade mais baixa. Este modo requer o nível de funcionalidade 9_1 ou superior.
D2D1_COLORMANAGEMENT_QUALITY_NORMAL Modo de qualidade normal. Este modo requer o nível de funcionalidade 9_1 ou superior.
D2D1_COLORMANAGEMENT_QUALITY_BEST O melhor modo de qualidade. Este modo requer o nível de recurso 10_0 ou superior, bem como buffers de precisão de ponto flutuante. Este modo suporta precisão de ponto flutuante, bem como alcance estendido, conforme definido na especificação ICC v4.3.

O efeito de gerenciamento de cores falhará ao desenhar se o aplicativo solicitar um modo de qualidade que não é suportado pelo hardware. Você pode determinar o nível do recurso ao chamar D3D11CreateDevice. Você pode verificar o suporte ao buffer de ponto flutuante chamando ID2D1EffectContext::IsBufferPrecisionSupported com o valor D2D1_BUFFER_PRECISION_32BPC_FLOAT.

Código de exemplo

Para obter um exemplo desse efeito, baixe o exemplo de ajuste de fotos de efeitos Direct2De consulte a Lição 4 do exemplo.

Requerimentos

Exigência Valor
Cliente mínimo suportado Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows]
Servidor mínimo suportado Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows]
Cabeçalho d2d1effects.h
Biblioteca d2d1.lib, dxguid.lib