Compartilhar 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) para outro. O efeito transforma a imagem de acordo com a especificação ICC.

O CLSID para esse efeito é CLSID_D2D1ColorManagement.

Propriedades do efeito

Nome de exibição e enumeração de índice Descrição
SourceContext
D2D1_COLORMANAGEMENT_PROP_SOURCE_COLOR_CONTEXT
As informações de espaço de cor de origem. O tipo é ID2D1ColorContext.
O valor padrão é NULL.
SourceIntent
D2D1_COLORMANAGEMENT_PROP_SOURCE_RENDERING_INTENT
Qual intenção de renderização icc usar. O tipo é D2D1_COLORMANAGEMENT_RENDERING_INTENT.
O valor padrão é D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCEPTUAL.
DestinationContext
D2D1_COLORMANAGEMENT_PROP_DESTINATION_COLOR_CONTEXT
As informações de espaço de cor de destino. O tipo é ID2D1ColorContext.
O valor padrão é NULL.
DestinationIntent
D2D1_COLORMANAGEMENT_PROP_DESTINATION_RENDERING_INTENT
Qual intenção de renderização icc usar. O tipo é D2D1_COLORMANAGEMENT_RENDERING_INTENT.
O valor padrão é D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCEPTUAL.
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 compacta ou expande a gama de cores completa da imagem para preencher a gama de cores do dispositivo, para produzir uma saída perceptuamente agradável que preserva os detalhes da cor, mas pode sacrificar a precisão colorimétrica. É útil para reprodução geral de conteúdo da vida real, como fotos.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_RELATIVE_COLORIMETRIC O efeito ajusta todas as cores que ficam fora da gama que o dispositivo de saída pode renderizar para a cor mais próxima que pode ser renderizada. Ele não preserva o ponto branco.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_SATURATION O efeito preserva a saturação de cores puras na imagem em detrimento possível de matiz e leveza. Ele é útil para gráficos como gráficos e diagramas.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_ABSOLUTE_COLORIMETRIC O efeito ajusta todas as cores que ficam 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 na gama e preserva o ponto em branco.

Modos alfa de imagem de entrada

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

D2D1_GAMMA1_G2084 alterações de comportamento

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

As APIs ID2D1DeviceContext5::CreateColorContextFromSimpleColorProfile e ID2D1DeviceContext5::CreateColorContextFromDxgiColorSpace não são responsáveis por isso; em vez disso, o conteúdo HDR é dimensionado para caber no intervalo de 0 a 1 durante a operação de DeGamma do G2084.

Na prática, o conteúdo codificado nesse espaço gama usa uma referência WhiteLevel 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 em um fator de 125. A partir de 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 do ICC

O efeito de gerenciamento de cores está em conformidade com a especificação ICC v4.3, com estas limitações:

  • O efeito dá suporte a espaços de cores de canal 1, 3 e 4.
  • O efeito não dá suporte a perfis ColorSpace ou Cor Nomeada.

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 forem descartados se não houver espaço na imagem de destino. A tabela aqui descreve o comportamento alfa.

Colorspace de origem, formato de pixel Colorspace de destino, formato de pixel Comportamento alfa
1 canal, formato de pixel R
1 canal, formato de pixel R (Sem dados alfa)
1 canal, formato de pixel RGBA Os dados alfa são definidos como 1 (opaco)
3 canal, 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 de pixel R Os dados alfa são descartados
1 canal, formato de pixel RGBA Dados alfa são passados
3 canal, formato de pixel RGBA Dados alfa são passados
4 canais, formato de pixel RGBA Os dados alfa são descartados
3 canal, formato de pixel RGBA
1 canal, formato de pixel R Os dados alfa são descartados
1 canal, formato de pixel RGBA Dados alfa são passados
3 canal, formato de pixel RGBA Dados alfa são passados
4 canais, formato de pixel RGBA Os dados alfa são descartados
4 canais, formato de pixel RGBA
1 canal, formato de pixel R (Sem dados alfa)
1 canal, formato de pixel RGBA Os dados alfa são definidos como 1 (opaco)
3 canal, 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

Mode Descrição
D2D1_COLORMANAGEMENT_QUALITY_PROOF O modo de qualidade mais baixa. Esse modo requer o nível de recurso 9_1 ou superior.
D2D1_COLORMANAGEMENT_QUALITY_NORMAL Modo de qualidade normal. Esse modo requer o nível de recurso 9_1 ou superior.
D2D1_COLORMANAGEMENT_QUALITY_BEST O modo de melhor qualidade. Esse modo requer o nível de recurso 10_0 ou superior, bem como buffers de precisão de ponto flutuante. Esse modo dá suporte à precisão de ponto flutuante, bem como ao intervalo 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 sem suporte do hardware. Você pode determinar o nível de recurso ao chamar D3D11CreateDevice. Você pode marcar para 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 Direct2D exemplo de ajuste de foto de efeitos e consulte a Lição 4 do exemplo.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store]
Servidor mínimo com suporte Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store]
Cabeçalho d2d1effects.h
Biblioteca d2d1.lib, dxguid.lib