Materiais de cor
Os materiais de cor são um dos tipos de material suportados na Renderização Remota do Azure. Eles são usados para malhas que não devem receber nenhum tipo de iluminação, mas aparecem sempre com brilho máximo. Tal pode ser o caso de materiais «brilhantes», como painéis de instrumentos de automóveis, lâmpadas, ou de dados que já incorporam iluminação estática, como modelos obtidos através da fotogrametria.
Os materiais de cor são mais eficientes de renderizar do que os materiais PBR devido ao seu modelo de sombreamento mais simples. Também suportam diferentes modos de transparência.
Propriedades do material de cor
As seguintes propriedades de material são expostas na API de tempo de execução, por exemplo, na classe C# ColorMaterial ou na classe C++ ColorMaterial, respectivamente.
ColorFlags
: Sinalizadores de recursos diversos podem ser combinados nesta máscara de bits para habilitar os seguintes recursos:UseVertexColor
: Se a malha contiver vertex cores e esta opção estiver ativada, a cor da vertex malha será multiplicada em eAlbedoMap
AlbedoColor
. Por padrãoUseVertexColor
, está desabilitado.DoubleSided
: Se a dupla face estiver definida como verdadeira, os triângulos com este material são renderizados mesmo que a câmara esteja a olhar para as suas faces traseiras. Por padrão, essa opção está desativada. Consulte também Single-sided rendering.AlphaClipped
: Permite recortes rígidos por pixel, com base no valor alfa estar abaixo do valor deAlphaClipThreshold
(veja abaixo). Isso também funciona para materiais opacos.TransparencyWritesDepth
: Se aTransparencyWritesDepth
bandeira estiver fixada no material e o material for transparente, os objetos que utilizam este material também contribuirão para o buffer de profundidade final. Consulte a propriedadeColorTransparencyMode
do material da cor na próxima seção. A ativação desse recurso é recomendada se o seu caso de uso precisar de uma reprojeção de estágio final mais plausível de cenas totalmente transparentes. Para cenas mistas opacas/transparentes, essa configuração pode introduzir comportamento de reprojeção implausível ou artefatos de reprojeção. Por esse motivo, a configuração padrão e recomendada para o caso de uso geral é desabilitar esse sinalizador. Os valores de profundidade gravados são retirados da camada de profundidade por pixel do objeto mais próximo da câmera.FresnelEffect
: Esta bandeira de material permite o efeito de fresnel aditivo sobre o respetivo material. A aparência do efeito é regida pelos outros parâmetrosFresnelEffectColor
de fresnel eFresnelEffectExponent
explicada abaixo.
AlbedoColor
: Esta cor é multiplicada por outras cores, como asAlbedoMap
vertex ou cores. Se a transparência é ativada em um material, o canal alfa é usado para ajustar a opacidade, com1
significado totalmente opaco e0
significado totalmente transparente. A cor padrão do albedo é branco opaco.Nota
Como os materiais de cor não refletem o ambiente, um material de cor totalmente transparente torna-se invisível. Isso é diferente para materiais PBR.
AlbedoMap
: Uma textura 2D para valores de albedo por pixel.AlphaClipThreshold
: Se oAlphaClipped
sinalizador estiver definido naColorFlags
propriedade, todos os pixels em que o valor alfa do albedo for inferior ao valor de não serão desenhadosAlphaClipThreshold
. O recorte alfa pode ser usado mesmo sem permitir a transparência e é muito mais rápido de renderizar. No entanto, os materiais cortados alfa ainda são mais lentos de renderizar do que os materiais totalmente opacos. Por padrão, o recorte alfa está desativado.TexCoordMode
: Define o modo que é usado para produzir coordenadas de textura para a textura de albedo. Este modo é ignorado se este material não utilizar uma textura. Por padrão, as coordenadas de textura são buscadas nos fluxos de vértice de entrada da malha (modoTextureCoordinateGenerationMode.SourceUv0
ouTextureCoordinateGenerationMode.SourceUv1
) e, em seguida, transformadas atravésTexCoordScale
de eTexCoordOffset
. Ao configurar um material através de código, este modo também pode ser definido paraTextureCoordinateGenerationMode.PlanarObjectSpace
ouTextureCoordinateGenerationMode.PlanarWorldSpace
para gerar as coordenadas como a distância de vértice para dois planosTexCoordPlaneU
3D configuráveis eTexCoordPlaneV
. Isso é conhecido como "mapeamento de textura plana".TexCoordScale
eTexCoordOffset
: Para coordenadas de textura da malha de origem, uma transformação extra linear pode ser aplicada. A escala é multiplicada nas coordenadas de textura UV, o deslocamento é adicionado a ela. Pode ser usado para esticar e deslocar as texturas. A escala padrão é (1, 1) e o deslocamento é (0, 0).TexCoordPlaneU
eTexCoordPlaneV
: Para os modos de mapeamento planar, estes definem os planos de textura para a coordenada u e a coordenada v, respectivamente. Os planos são definidos na forma normal padrão (A,B,C,D), de modo que uma coordenada é calculada como t = Ax + By + C*z + D, onde (x,y,z) é a posição do vértice em qualquer mundo ou espaço de objeto.FresnelEffectColor
: A cor fresnel utilizada para este material. Apenas importante quando a bandeira do efeito fresnel foi colocada neste material (ver acima). Esta propriedade controla a cor base do brilho fresnel (veja o efeito fresnel para uma explicação completa). Atualmente, apenas os valores do canal RGB são importantes e o valor alfa será ignorado.FresnelEffectExponent
: O expoente de fresnel utilizado para este material. Apenas importante quando a bandeira do efeito fresnel foi colocada neste material (ver acima). Esta propriedade controla a propagação do brilho fresnel. O valor mínimo 0,01 causa uma dispersão por todo o objeto. O valor máximo de 10,0 restringe o brilho apenas às bordas mais visíveis do pastoreio.VertexMix
: Este valor entre0
e1
especifica quão fortemente a vertex cor em uma malha contribui para a cor final. No valor padrão de 1, a vertex cor é multiplicada para a cor albedo completamente. Com um valor de 0, as vertex cores são totalmente ignoradas.ColorTransparencyMode
: Ao contrário dos materiais PBR, os materiais de cor distinguem entre diferentes modos de transparência:Opaque
: O modo padrão desativa a transparência. No entanto, o corte alfa ainda é possível e deve ser preferido, se suficiente.AlphaBlended
: Este modo é semelhante ao modo de transparência para materiais PBR. Deve ser usado para materiais transparentes como o vidro.Additive
: Este modo é o modo de transparência mais simples e eficiente. A contribuição do material é adicionada à imagem renderizada. Esse modo pode ser usado para simular objetos brilhantes (mas ainda transparentes), como marcadores usados para destacar objetos importantes.
Nota
Embora AlbedoColor
e FresnelEffectColor
tenham a mesma faixa de valor aceito que para materiais PBR, seus canais serão efetivamente fixados a [0; 1] para materiais de cor.
O material de cor substitui durante a conversão
Um subconjunto de propriedades de material de cor pode ser substituído durante a conversão do modelo por meio do arquivo de substituição de material. A tabela a seguir mostra o mapeamento entre as propriedades de tempo de execução documentadas acima e o nome da propriedade correspondente no arquivo de substituição:
Nome da propriedade do material | Nome da propriedade no arquivo de substituição |
---|---|
ColorFlags.AlphaClipped |
alphaClipEnabled |
ColorFlags.UseVertexColor |
useVertexColor |
ColorFlags.DoubleSided |
isDoubleSided |
ColorFlags.TransparencyWritesDepth |
transparencyWritesDepth |
AlbedoColor |
albedoColor |
TexCoordScale |
textureCoordinateScale |
TexCoordOffset |
textureCoordinateOffset |
ColorTransparencyMode |
transparent |
AlphaClipThreshold |
alphaClipThreshold |
Documentação da API
- Classe C# ColorMaterial
- C# RenderingConnection.CreateMaterial()
- Classe C++ ColorMaterial
- C++ RenderingConnection::CreateMaterial()