Materiais de cores
Os materiais de cores são um dos tipos de material compatíveis no Azure Remote Rendering. Eles são usados para malhas que não devem receber tipos de iluminação, mas sim, sempre aparecer com brilho total. Esse pode ser o caso de materiais que piscam, como painéis de carro, lâmpadas, ou para dados que já incorporam iluminação estática, como modelos obtidos através de fotogrametria.
Os materiais de cores são mais eficientes para renderizar do que os materiais de PBR devido ao seu modelo de sombreamento mais simples. Eles também suportam diferentes modos de transparência.
Propriedades do material de cor
As propriedades de material a seguir são expostas na API de runtime, por exemplo, na classe ColorMaterial do C# ou na classe ColorMaterial do C++, respectivamente.
ColorFlags
: diversos sinalizadores de recursos podem ser combinados nesta máscara de bits para habilitar os seguintes recursos:UseVertexColor
: se a malha contiver cores vertex e esta opção estiver habilitada, a cor vertex da malha será multiplicada emAlbedoColor
eAlbedoMap
. Por padrão,UseVertexColor
está desabilitado.DoubleSided
: se a bilateralidade estiver definida como verdadeira, os triângulos com esse material serão renderizados, mesmo se a câmera estiver apontada para as faces traseiras deles. Por padrão, essa opção está desabilitada. Consulte também Single-sided rendering.AlphaClipped
: permite cortes rígidos em uma base por pixel, com base no valor alfa abaixo do valor deAlphaClipThreshold
(veja abaixo). Isso também funciona para materiais opacos.TransparencyWritesDepth
: se o sinalizadorTransparencyWritesDepth
estiver definido no material e o material for transparente, os objetos que usarem esse material também contribuirão para o buffer de profundidade final. Consulte a propriedade do material de corColorTransparencyMode
na próxima seção. É recomendável habilitar esse recurso se o caso de uso precisa de uma reprojeção de estágio tardio mais plausível de cenas totalmente transparentes. Para cenas mistas opacas/transparentes, essa configuração pode causar um 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 obtidos da camada de profundidade por pixel do objeto mais próximo à câmera.FresnelEffect
: este sinalizador de material permite o efeito de Fresnel aditivo no respectivo material. A aparência do efeito é regida pelos outros parâmetros de FresnelFresnelEffectColor
eFresnelEffectExponent
explicados abaixo.
AlbedoColor
: essa cor é multiplicada por outras cores, comoAlbedoMap
ou vertexcores. Se a transparência estiver habilitada em um material, o canal alfa será usado para ajustar a opacidade, sendo1
totalmente opaco e0
totalmente transparente. A cor albedo padrão é branca opaca.Observação
Como os materiais de cores não refletem o ambiente, um material de cor totalmente transparente se torna invisível. Isso é diferente para materiais de PBR.
AlbedoMap
: um textura 2D para valores de albedo por pixel.AlphaClipThreshold
: se o sinalizadorAlphaClipped
for definido na propriedadeColorFlags
todos os pixels em que o valor alfa de albedo for menor do que o valor deAlphaClipThreshold
não serão desenhados. O recorte alfa pode ser usado mesmo sem habilitar a transparência e é muito mais rápido para renderizar. No entanto, os materiais com recorte alfa ainda são mais lentos para renderizar do que os materiais totalmente opacos. Por padrão, o recorte alfa fica desabilitado.TexCoordMode
: define o modo usado para produzir coordenadas de textura para a textura albedo. Esse modo será ignorado se esse material não usar uma textura. Por padrão, as coordenadas de textura são buscadas dos fluxos de vértice de entrada da malha (modoTextureCoordinateGenerationMode.SourceUv0
ouTextureCoordinateGenerationMode.SourceUv1
) e depois transformadas por meio deTexCoordScale
eTexCoordOffset
. Ao configurar um material por meio do código, esse modo também pode ser definido comoTextureCoordinateGenerationMode.PlanarObjectSpace
ouTextureCoordinateGenerationMode.PlanarWorldSpace
para gerar as coordenadas como a distância de vértice para dois planos 3D configuráveisTexCoordPlaneU
eTexCoordPlaneV
. Isso é conhecido como “mapeamento de textura planar”.TexCoordScale
eTexCoordOffset
: para coordenadas de textura da malha de origem, uma transformação linear extra pode ser aplicada. A escala é multiplicada nas coordenadas de textura UV, o deslocamento é adicionado a ela. Pode ser usado para alongar e deslocar as texturas. A escala padrão é (1, 1) e o deslocamento é (0, 0).TexCoordPlaneU
eTexCoordPlaneV
: para modos de mapeamento planar, eles 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, em que (x,y,z) é a posição do vértice no mundo ou no espaço do objeto.FresnelEffectColor
: a cor de Fresnel utilizada para esse material. É importante apenas quando o sinalizador de efeito de Fresnel é definido nesse material (veja acima). Essa propriedade controla a cor base do brilho Fresnel (confira Efeito Fresnel para ver uma explicação completa). No momento, apenas os valores de canal RGB são importantes e o valor alfa será ignorado.FresnelEffectExponent
: o expoente de Fresnel utilizado para esse material. É importante apenas quando o sinalizador de efeito de Fresnel é definido nesse material (veja acima). Essa propriedade controla o espalhamento do brilho de Fresnel. O valor mínimo de 0,01 causa um espalhamento em todo o objeto. O valor máximo de 10,0 restringe o brilho apenas às bordas mais adornadas visíveis.VertexMix
: esse valor entre0
e1
especifica o quanto a cor vertex em uma malha contribui para a cor final. No valor padrão de 1, a cor vertex é multiplicada totalmente na cor de albedo. Com um valor de 0, as cores vertex são totalmente ignoradas.ColorTransparencyMode
: ao contrário dos materiais de PBR, os materiais de cores distinguem entre diferentes modos de transparência:Opaque
: o modo padrão desabilita a transparência. No entanto, o recorte alfa ainda é possível e deve ser prioritário, se for suficiente.AlphaBlended
: esse modo é semelhante ao modo de transparência para materiais de PBR. Ele deve ser usado para materiais transparentes, como vidro.Additive
: esse 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 que piscam (mas que sejam transparentes), como canetas hidrográficas usadas para realçar objetos importantes.
Observação
Embora AlbedoColor
e FresnelEffectColor
tenham o mesmo intervalo de valores aceito que para materiais PBR, seus canais serão efetivamente fixados a [0; 1] para materiais de cor.
Substituições de material de cor durante a conversão
Um subconjunto de propriedades de material de cor pode ser substituído durante a conversão de modelo por meio do arquivo de substituição de material. A tabela a seguir mostra o mapeamento entre as propriedades de runtime 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 ColorMaterial do C#
- RenderingConnection.CreateMaterial() do C#
- Classe ColorMaterial do C++
- RenderingConnection::CreateMaterial() do C++