Compartilhar via


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 em AlbedoColor e AlbedoMap. 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 de AlphaClipThreshold (veja abaixo). Isso também funciona para materiais opacos.
    • TransparencyWritesDepth: se o sinalizador TransparencyWritesDepth 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 cor ColorTransparencyMode 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 Fresnel FresnelEffectColor e FresnelEffectExponent explicados abaixo.
  • AlbedoColor: essa cor é multiplicada por outras cores, como AlbedoMap ou vertexcores. Se a transparência estiver habilitada em um material, o canal alfa será usado para ajustar a opacidade, sendo 1 totalmente opaco e 0 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 sinalizador AlphaClipped for definido na propriedade ColorFlags todos os pixels em que o valor alfa de albedo for menor do que o valor de AlphaClipThreshold 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 (modo TextureCoordinateGenerationMode.SourceUv0 ou TextureCoordinateGenerationMode.SourceUv1) e depois transformadas por meio de TexCoordScale e TexCoordOffset. Ao configurar um material por meio do código, esse modo também pode ser definido como TextureCoordinateGenerationMode.PlanarObjectSpace ou TextureCoordinateGenerationMode.PlanarWorldSpace para gerar as coordenadas como a distância de vértice para dois planos 3D configuráveis TexCoordPlaneU e TexCoordPlaneV. Isso é conhecido como “mapeamento de textura planar”.

  • TexCoordScale e TexCoordOffset: 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 e TexCoordPlaneV: 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 entre 0 e 1 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

Próximas etapas