Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Material 3D Padrão e Material ORM 3D

Introdução

StandardMaterial3D e ORMMaterial3D (Oclusão, Rugosidade, Metálico) são materiais 3D padrão que visam fornecer a maioria dos recursos que os artistas procuram em um material, sem a necessidade de escrever código de shader. No entanto, eles podem ser convertidos para código de shader se funcionalidades adicionais forem necessárias.

Este tutorial explica os parâmetros presentes em ambos os materiais.

Existem 4 maneiras de adicionar esses materiais a um objeto. Um material pode ser adicionado na propriedade Material da malha (mesh). Ele pode ser adicionado na propriedade Material do nó que usa a malha (como um nó MeshInstance3D), na propriedade Material Override do nó que usa a malha, e no Material Overlay.

../../_images/add_material.webp

Se você adicionar um material à própria malha, toda vez que a malha for usada, ela terá esse material. Se você adicionar um material ao nó usando a malha, o material será usado apenas por esse nó e também substituirá a propriedade do material da malha. Se um material for adicionado na propriedade Sobreposição de material do nó, ele será usado apenas por esse nó. Ele também substituirá a propriedade de material regular do nó e a propriedade de material da malha.

A propriedade Material Overlay renderizará um material sobre o atual sendo usado pela malha. Por exemplo, isso pode ser usado para colocar um efeito de escudo transparente em uma malha.

Configurações do BaseMaterial3D

O StandardMaterial3D possui muitas configurações que determinam a aparência de um material. Todas elas estão sob a categoria BaseMaterial3D

../../_images/spatial_material1.webp

Materiais ORM são quase idênticos, com uma única diferença. Em vez de configurações e texturas separadas para oclusão, rugosidade e metalicidade, há uma única textura ORM. Os diferentes canais de cor dessa textura são usados para cada parâmetro. Programas como Substance Painter e Armor Paint oferecem a opção de exportar nesse formato — para esses dois programas, isso é feito com o preset de exportação para Unreal Engine, que também utiliza texturas ORM.

Transparência

Por padrão, os materiais no Godot são opacos. Isso é rápido para renderizar, mas significa que o material não pode ser visto através dele, mesmo que você use uma textura transparente na propriedade Albedo > Texture (ou defina Albedo > Color com uma cor transparente).

Para ser possível enxergar através de um material, ele precisa ser transparente. O Godot oferece vários modos de transparência:

  • Desativado: O material é opaco. Este é o modo mais rápido para renderizar, com suporte a todos os recursos de renderização.

  • Alpha: O material é transparente. Áreas semi-transparentes são desenhadas com mistura (blending). Esse modo é mais lento para renderizar, mas permite transparência parcial (também conhecida como translucidez). Materiais que usam mistura alfa também não podem projetar sombras e não são visíveis em reflexos de espaço de tela (Screen Space Reflections).

    • Alpha é uma boa opção para efeitos de partículas e VFX.

  • Alpha Scissor: O material é transparente. Áreas semi-transparentes cuja opacidade está abaixo do Alpha Scissor Threshold não são desenhadas (acima desse valor, são desenhadas como opacas). Esse modo é mais rápido de renderizar do que o modo Alpha e não apresenta problemas de ordenação de transparência. A desvantagem é que ele resulta em uma transparência "tudo ou nada", sem valores intermediários. Materiais que usam Alpha Scissor podem projetar sombras.

    • Alpha Scissor é ideal para folhagens e cercas, pois esses elementos têm bordas definidas e exigem ordenação correta para uma boa aparência.

  • Alpha Hash: O material é transparente. Áreas semi-transparentes são desenhadas usando reticulação (dithering). Este também é um modo de transparência "tudo ou nada", mas o dithering ajuda a representar áreas parcialmente opacas com precisão limitada, dependendo da resolução da janela de exibição. Materiais que usam Alpha Hash podem projetar sombras.

    • Alpha Hash é adequado para cabelos com aparência realista, embora cabelos estilizados possam funcionar melhor com Alpha Scissor.

  • Depth Pre-Pass: Renderiza primeiro os pixels totalmente opacos do objeto através da pipeline opaca e depois renderiza o restante com mistura alfa. Isso permite que a ordenação de transparência seja quase correta (embora não totalmente, já que regiões parcialmente transparentes ainda podem apresentar ordenação incorreta). Materiais que usam Depth Pre-Pass podem projetar sombras.

Nota

O Godot forçará automaticamente o material a ser transparente com mistura alfa se qualquer uma das seguintes condições for atendida:

  • Definir o modo de transparência como Alpha (conforme descrito aqui).

  • Definir um modo de mistura diferente do padrão Mix

  • Ativar Refraction, Proximity Fade ou Distance Fade.

Comparação entre transparência com mistura alfa (à esquerda) e Alpha Scissor (à direita):

../../_images/spatial_material12.png

Aviso

A transparência com mistura alfa possui várias limitações:

  • Materiais com mistura alfa são significativamente mais lentos para renderizar, especialmente se houver sobreposição entre eles.

  • Materiais com mistura alfa podem apresentar problemas de ordenação quando superfícies transparentes se sobrepõem. Isso significa que as superfícies podem ser renderizadas na ordem incorreta, com superfícies ao fundo aparecendo na frente daquelas que estão mais próximas da câmera.

  • Materiais com mistura alfa não projetam sombras, embora possam receber sombras.

  • Materiais com mistura alfa não aparecem em nenhum tipo de reflexo (exceto em probes de reflexão).

  • Reflexos de espaço de tela e reflexos nítidos do SDFGI não aparecem em materiais com mistura alfa. Quando o SDFGI está ativado, reflexos difusos são usados como alternativa, independentemente da rugosidade do material.

Antes de usar o modo de transparência Alpha, sempre considere se outro modo de transparência é mais adequado para suas necessidades.

Alpha Antialiasing

Nota

Esta propriedade só é visível quando o modo de transparência é Alpha Scissor ou Alpha Hash.

Embora materiais com alpha scissor e alpha hash sejam mais rápidos de renderizar do que materiais com alpha blending, eles apresentam bordas duras entre as regiões opacas e transparentes. Embora seja possível usar técnicas de antialiasing baseadas em pós-processamento, como FXAA e TAA, isso nem sempre é desejável, pois essas técnicas tendem a deixar o resultado final mais borrado ou a apresentar artefatos de ghosting.

Existem 3 modos de antialiasing alfa disponíveis:

  • Desativado: Sem antialiasing de alpha. As bordas dos materiais transparentes aparecerão com aliasing, a menos que uma solução de antialiasing baseada em pós-processamento seja utilizada.

  • Alpha Edge Blend: Resulta em uma transição suave entre as áreas opacas e transparentes. Também é conhecido como "alpha to coverage".

  • Alpha Edge Clip: Resulta em uma transição nítida, mas ainda com antialiasing, entre as áreas opacas e transparentes. Também é conhecido como "alpha to coverage + alpha to one".

Quando o modo de antialiasing de alpha está definido como Alpha Edge Blend ou Alpha Edge Clip, uma nova propriedade chamada Alpha Antialiasing Edge se torna visível abaixo no inspetor. Essa propriedade controla o limite abaixo do qual os pixels devem se tornar transparentes. Embora você já tenha definido um limite de alpha scissor (apenas ao usar Alpha Scissor), esse limite adicional é utilizado para realizar uma transição suave entre os pixels opacos e transparentes. Alpha Antialiasing Edge deve sempre ser configurado com um valor estritamente inferior ao limite de alpha scissor. O valor padrão de 0.3 é razoável com um limite de alpha scissor de 0.5, mas lembre-se de ajustar esse alpha antialiasing edge ao modificar o limite de alpha scissor.

Se você achar que o efeito de antialiasing não está suficientemente eficaz, tente aumentar o valor de Alpha Antialiasing Edge, garantindo que ele permaneça abaixo do Alpha Scissor Threshold (caso o material utilize alpha scissor). Por outro lado, se você perceber que a aparência da textura muda visivelmente conforme a câmera se aproxima do material, tente diminuir o valor de Alpha Antialiasing Edge.

Importante

Para obter os melhores resultados, o MSAA 3D deve estar configurado para pelo menos 2× nas Configurações do Projeto ao utilizar antialiasing de alpha. Isso porque esse recurso depende de alpha to coverage, que é uma funcionalidade fornecida pelo MSAA.

Sem o MSAA, um padrão de dithering fixo é aplicado nas bordas do material, o que não é muito eficaz para suavizar as bordas (embora ainda possa ajudar um pouco).

Modo de mesclagem

Controla o modo de mesclagem do material. Lembre-se de que qualquer modo diferente de Mix força o objeto a passar pelo pipeline transparente.

  • Mix: Modo de mesclagem padrão, alfa controla o quanto o objeto é visível.

  • Add: A cor final do objeto é adicionada à cor da tela, bom para reflexos ou alguns efeitos semelhantes a fogo.

  • Subtract: A cor final do objeto é subtraída da cor da tela.

  • Multiply: A cor final do objeto é multiplicada pela cor da tela.

  • Premultiplied Alpha: A cor do objeto deve já ter sido multiplicada pelo alfa. Esse modo se comporta como Add quando o alfa é 0.0 (totalmente transparente) e como Mix quando o alfa é 1.0 (opaco).

../../_images/spatial_material8.png

Cull Mode

Determina qual lado do objeto não é desenhado quando as faces traseiras são renderizadas:

  • Back: A parte de trás do objeto é retirada quando não visível (padrão).

  • Front: A frente do objeto é cortada quando não é visível.

  • Disabled: Utilizado para objetos com dupla face (não é realizado nenhuma retirada).

Nota

Por padrão, o Blender tem a eliminação de faces desabilitada nos materiais e irá exportar os materiais para combinar como eles renderizam no Blender. Isso significa que os materiais na Godot terão seu modo de eliminação definido como Desativado. Isso pode diminuir o desempenho, uma vez que as faces posteriores serão renderizadas, mesmo quando estão sendo selecionadas por outras faces. Para resolver isso, habilite Backface Culling na aba Materiais do Blender, então exporte a cena para glTF novamente.

Modo de Desenho de Profundidade

Especifica quando a renderização de profundidade deve ocorrer.

  • Somente opaco (padrão): A profundidade é desenhada apenas para objetos opacos.

  • Sempre: O desenho de profundidade é desenhado tanto para objetos opacos quanto transparentes.

  • Never: Nenhum desenho de profundidade é realizado (não confunda isso com a opção Sem Teste de Profundidade abaixo).

  • Depth Pre-Pass: Para objetos transparentes, uma passagem opaca é feita primeiro com as partes opacas, então a transparência é desenhada acima. Use esta opção com grama transparente ou folhagem de árvore.

../../_images/material_depth_draw.png

Sem Teste de Profundidade

Para que objetos próximos apareçam sobre objetos distantes, é realizado um teste de profundidade. Desativá-lo tem como resultado objetos aparecendo sobre (ou abaixo) de todo o resto.

Desativar isso faz mais sentido para desenhar indicadores no espaço do mundo e funciona muito bem com a propriedade Render Priority do Material (veja o final desta página).

../../_images/spatial_material3.png

Teste de profundidade

Isso pode ser usado para inverter o teste de profundidade padrão. Quando definido como Inverted, o objeto só aparecerá quando bloqueado, e será escondido de outra forma.

Não possui efeito se No Depth Test estiver habilitado.

../../_images/material_depth_test.webp

Criando Shaders(shading)

Modo de sombreamento

Os materiais suportam três modos de sombreamento: Per-Pixel, Per-Vertex e Unshaded.

Três esferas exibindo os modos Per-Pixel, Per-Vertex e Unshaded.

O modo de sombreamento Per-Pixel calcula a iluminação para cada pixel, sendo adequado para a maioria dos casos de uso. No entanto, em alguns casos, você pode querer aumentar o desempenho utilizando outro modo de sombreamento.

O modo de sombreamento Per-Vertex, frequentemente chamado de "sombreamento por vértice" ou "iluminação por vértice", calcula a iluminação uma vez para cada vértice e interpola o resultado entre os pixels.

Em dispositivos móveis ou de baixo desempenho, utilizar iluminação por vértice pode aumentar significativamente o desempenho da renderização. Ao renderizar várias camadas de transparência, como em sistemas de partículas, utilizar sombreamento por vértice pode melhorar o desempenho, especialmente quando a câmera está próxima das partículas.

Você também pode usar a iluminação por vértice para obter um visual retrô.

Dois cubos com uma textura de tijolos, um sombreado e outro sem sombreamento.

Textura de AmbientCG

O modo de sombreamento Unshaded não calcula iluminação. Em vez disso, a cor do Albedo é exibida diretamente. As luzes não afetarão o material de forma alguma, e materiais sem sombreamento tendem a parecer consideravelmente mais claros do que materiais com sombreamento.

Renderizar sem sombreamento é útil para alguns efeitos visuais específicos. Se for necessário desempenho máximo, também pode ser usado para partículas ou dispositivos móveis e de baixo desempenho.

Modo Difuso

Especifica o algoritmo usado pela dispersão difusa da luz ao atingir o objeto. O padrão é Burley. Outros modos também estão disponíveis:

  • Burley: Modo padrão, o algoritmo difuso Disney Principled PBS original.

  • Lambert: Não é afetado pela rugosidade.

  • Lambert Wrap: Amplia o Lambert para cobrir mais de 90 graus quando a rugosidade aumenta. Funciona muito bem para o cabelo e simula a dispersão de baixo custo da superfície subterrânea. Esta implementação conserva energia.

  • Toon: Fornece um corte brusco na iluminação, com a suavização influenciada pela rugosidade. Recomenda-se desabilitar a contribuição do céu nas configurações de luz ambiente do ambiente ou desabilitar a luz ambiente no StandardMaterial3D para obter um efeito melhor.

../../_images/spatial_material6.webp

Modo Especular

Especifica como o blob especular será renderizado. O blob especular representa a forma de uma fonte de luz refletida no objeto.

  • SchlickGGX: O modelo especular mais comum utilizado atualmente pelos motores 3D PBR.

  • Toon: Cria um blob toon, que muda de tamanho dependendo da rugosidade.

  • Desativado: Às vezes, o reflexo atrapalha. Vá embora!

../../_images/spatial_material7.webp

Desativar a luz ambiente

Faz com que o objeto não receba qualquer tipo de iluminação ambiente que de outra forma o iluminaria.

Desativar Fog

Faz com que o objeto não seja afetado por neblina baseada em profundidade ou volumétrica. Isso é útil para partículas ou outros materiais com blending aditivo que, de outra forma, exibiriam o formato da malha (mesmo em locais onde estaria invisível sem a neblina).

Desativar Oclusão Especular

Faz com que o objeto não tenha suas reflexões reduzidas onde normalmente seriam ocluídas.

Cor do vértice

Esta configuração permite escolher o que será feito por padrão com as cores de vértice provenientes do seu aplicativo de modelagem 3D. Por padrão, elas são ignoradas.

Use como Albedo

Escolhendo esta opção significa que a cor do vértice é usada como cor albedo.

É sRGB

A maioria dos softwares de modelagem 3D exporta cores de vértice em sRGB, portanto habilitar esta opção ajudará a exibi-las corretamente.

Albedo

Albedo é a cor base do material, sobre a qual operam todas as outras configurações. Quando ajustado para Unshaded, esta é a única cor que é visível. Nas versões anteriores do Godot, este canal era chamado Diffuse. A mudança de nome aconteceu principalmente porque, em PBR (Physically Based Rendering), esta cor afeta muito mais os cálculos do que apenas o caminho de iluminação difusa.

A cor e a textura do albedo podem ser usadas em conjunto à medida que são multiplicadas.

O alpha channel em cor e textura albedo também é usado para a transparência do objeto. Se você usar uma cor ou textura com alpha channel, certifique-se de ativar a transparência ou alpha scissoring para que ela funcione.

Metálico

O Godot usa um modelo metálico em vez de modelos concorrentes devido a sua simplicidade. Este parâmetro define o quão reflexivo é o material. Quanto mais reflexivo, menos difusa/luz ambiente afeta o material e mais luz é refletida. Este modelo é chamado de "conservação de energia".

O parâmetro Specular é uma quantidade geral para a refletividade (ao contrário de Metallic, isto não economiza energia, portanto deixe-o em 0.5 e não o toque a menos que seja necessário).

A refletividade interna mínima é 0.04, portanto é impossível tornar um material completamente sem reflexão, tal como na vida real.

../../_images/spatial_material13.png

Rugosidade

Rugosidade afeta a maneira como a reflexão acontece. Um valor de 0 faz dele um espelho perfeito, enquanto que um valor de 1 embaça completamente a reflexão (simulando o microsurfacing natural). Os tipos mais comuns de materiais podem ser obtidos com a combinação correta de Metálico e Rugosidade.

../../_images/spatial_material14.png

Emissão

Emissão especifica quanta luz é emitida pelo material (lembre-se de que isso não inclui a geometria ao redor da luz, a menos que VoxelGI or SDFGI sejam usados). Esse valor é adicionado à imagem final resultante e não é afetado por outra iluminação na cena.

../../_images/spatial_material15.png

Mapa Normal

O mapeamento normal permite definir uma textura que representa um detalhe de forma mais fina. Isto não modifica a geometria, apenas o ângulo de incidência da luz. No Godot, apenas os canais vermelho e verde dos mapas normais são usados para uma melhor compressão e compatibilidade mais ampla.

../../_images/spatial_material16.png

Nota

O Godot requer que o normal map use as coordenadas X+, Y- e Z+. Em outras palavras, se você importou um material feito para ser usado com outro motor, pode ser necessário converter o normal map para que seu eixo Y seja invertido. Caso contrário, a direção do normal map pode parecer estar invertida no eixo Y.

Mais informações sobre normal maps (incluindo uma tabela de ordem de coordenadas para motores populares) podem ser encontradas aqui (em Inglês).

Mapa de normais dobradas

Um mapa de normais dobradas (bent normal map) descreve a direção média da iluminação ambiente. Diferente de um mapa de normais comum, ele é usado para melhorar como um material reage à iluminação, em vez de adicionar detalhes à superfície.

Isso é conseguido de duas maneiras:

  • A iluminação difusa indireta é feita para corresponder melhor à iluminação global.

  • Se a oclusão especular estiver habilitada, ela será calculada usando as normais dobradas e a oclusão ambiente, em vez de apenas a luz ambiente. Isso inclui a oclusão de ambiente em espaço de tela (SSAO) e outras fontes de oclusão de ambiente.

../../_images/spatial_material_bentnormals.webp

O Godot utiliza apenas os canais vermelho e verde de um mapa de normais dobradas para melhor compactação e maior compatibilidade.

Ao criar um mapa de normais dobradas, há três requisitos para que ele funcione corretamente no Godot:

  • Uma distribuição cossenoidal de raios deve ser usada durante o bake.

  • A textura deve ser criada em espaço tangente.

  • O mapa de bent normals precisa usar as coordenadas X+, Y+ e Z+, isso é conhecido como estilo OpenGL. Se você importou um material feito para ser usado com outra engine, ele pode estar no estilo DirectX, caso em que o mapa de bent normals precisa ser convertido para que seu eixo Y seja invertido. Isso pode ser alcançado definindo o canal verde sob a seção Channel Remap como Inverted Green na aba de importação.

Nota

Um mapa de normais dobradas é diferente de um mapa de normais comum. Os dois não são intercambiáveis.

Aro

Alguns tecidos têm pequenos micropêlos que fazem com que a luz se espalhe ao seu redor. Godot emula isso com o parâmetro Rim. Ao contrário de outras implementações de iluminação de borda, que usam apenas o canal de emissão, esta realmente leva em consideração a luz (sem luz significa que não há borda). Isso torna o efeito consideravelmente mais realista.

../../_images/spatial_material17.png

O tamanho do "Rim" depende da rugosidade e existe um parâmetro especial para especificar como ele deve ser colorido. Se Tint for 0, a cor da luz é usada para o aro. Se Tint for 1, então o albedo do material é usado. Usar valores intermediários geralmente funciona melhor.

Clearcoat

O parâmetro Clearcoat é usado para adicionar uma passagem secundária de revestimento transparente ao material. Isto é comum em pintura de automóveis e brinquedos. Na prática, é um especular blob menor adicionada em cima do material existente.

../../_images/clearcoat_comparison.png

Anisotrópico

Isso altera a forma do blob especular e o alinha ao espaço tangente. A anisotropia é comumente usada com cabelos ou para tornar materiais como o alumínio escovado mais realistas. Funciona especialmente bem quando combinado com flowmaps.

../../_images/spatial_material18.png

Oclusão de Ambiente

É possível especificar um mapa de oclusão de ambiente pré-calculado. Este mapa afeta quanta luz ambiente atinge cada superfície do objeto (não afeta a luz direta por padrão). Embora seja possível usar Screen-Space Ambient Occlusion (SSAO) para gerar oclusão de ambiente, nada supera a qualidade de um mapa AO bem gerado e gravado. Recomenda-se a oclusão do ambiente seja pré-calculada sempre que possível.

../../_images/spatial_material19.png

Altura

Definir um mapa de altura (height map) em um material produz uma busca por ray-marching para emular o deslocamento correto de cavidades ao longo da direção da visão. Isso apenas cria uma ilusão de profundidade e não adiciona geometria real — para um formato de mapa de altura usado para colisão física (como terrenos), veja HeightMapShape3D. Pode não funcionar para objetos complexos, mas produz um efeito de profundidade realista para texturas. Para melhores resultados, o Height deve ser usado junto com o mapeamento de normais (normal mapping).

../../_images/spatial_material20.png

Dispersão Subsuperficial

Isso está disponível apenas no renderizador Forward+, não nos renderizadores Mobile ou Compatibility.

Este efeito emula a luz que penetra na superfície de um objeto, se dispersa e depois sai. É útil para criar pele realista, mármore, líquidos coloridos, etc.

../../_images/spatial_material21.png

Back Lighting

Isto controla quanta luz do lado iluminado (visível à luz) é transferida para o lado escuro (oposto à luz). Isto funciona bem para objetos finos, tais como folhas de plantas, grama, orelhas humanas, etc.

../../_images/spatial_material22.png

Refração

Quando a refração está habilitada, o Godot tenta obter informações da área atrás do objeto renderizado. Isso permite distorcer a transparência de maneira semelhante à refração na vida real.

Lembre-se de usar uma textura de albedo transparente (ou reduzir o canal alfa da cor do albedo) para tornar a refração visível, já que a refração depende da transparência para ter um efeito visível.

A refração também considera a rugosidade do material. Valores mais altos de rugosidade farão com que os objetos atrás da refração pareçam mais borrados, simulando o comportamento real. Se você não conseguir ver atrás do objeto quando a refração estiver habilitada e a transparência do albedo estiver reduzida, diminua o valor de Roughness do material.

Um mapa de normais pode ser especificado opcionalmente na propriedade Refraction Texture para permitir distorcer a direção da refração por pixel.

../../_images/spatial_material23.png

Nota

A refração é implementada como um efeito em espaço de tela e força o material a ser transparente. Isso torna o efeito relativamente rápido, mas resulta em algumas limitações:

  • Problemas de Transparency sorting podem ocorrer.

  • O material refrativo não pode refratar sobre si mesmo nem sobre outros materiais transparentes. Um material refrativo atrás de outro material transparente ficará invisível.

  • Objetos fora da tela não podem aparecer na refração. Isso é mais perceptível com valores altos de intensidade de refração.

  • Materiais opacos à frente do material refrativo parecerão ter bordas "refratadas", mesmo que não devessem.

Detalhe

Godot permite utilizar albedo secundário e mapas normais para gerar uma textura de detalhe, que pode ser misturada de muitas maneiras. Combinando isto com os modos secundário UV ou triplanar, muitas texturas interessantes podem ser alcançadas.

../../_images/spatial_material24.png

Há várias configurações que controlam como os detalhes são usados.

Máscara: A máscara de detalhes é uma imagem em preto e branco usada para controlar onde a mescla ocorre em uma textura. O branco é para as texturas de detalhe, o preto é para as texturas normais do material, diferentes tons de cinza são para a mistura parcial das texturas do material e das texturas de detalhe.

Modo de mescla: Estes quatro modos controlam como as texturas são misturadas entre si.

  • Mix: Combina valores de pixel de ambas as texturas. No preto, mostre apenas a textura do material, no branco, mostre apenas a textura do detalhe. Valores de cinza criam uma mistura suave entre os dois.

  • Add: Adiciona valores de pixel de uma textura com a outra. Ao contrário do modo de mistura, ambas as texturas são completamente misturadas em partes brancas de uma máscara e não em partes cinzas. A textura original é praticamente inalterada em preto

  • Sub: Subtrai os valores de pixel de uma textura com a outra. A segunda textura é completamente subtraída em partes brancas de uma máscara com apenas uma pequena subtração em partes pretas, partes cinza sendo diferentes níveis de subtração com base na textura exata.

  • Mul: Multiplica os números do canal RGB para cada pixel da textura superior com os valores para o pixel correspondente da textura inferior.

Albedo: Aqui é onde você coloca uma textura de albedo que você quer misturar. Se nada estiver neste slot, ele será interpretado como branco por padrão.

Normal: Aqui é onde você coloca uma textura normal que você quer misturar. Se nada estiver neste espaço, será interpretado como um mapa normal plano. Isto ainda pode ser usado mesmo que o material não tenha o mapa normal habilitado.

UV1 e UV2

Godot suporta dois canais UV por material. UV secundário é muitas vezes útil para a oclusão ambiente ou emissão (luz baked). Os UVs podem ser dimensionados e compensados, o que é útil ao usar texturas repetitivas.

Mapeamento Triplanar

Mapeamento triplanar é suportado para UV1 e UV2. Esta é uma maneira alternativa de obter coordenadas de textura, às vezes chamada de "Autotextura". As texturas são amostradas em X, Y e Z e misturadas pelo normal. Mapeamento triplanar pode ser realizado no espaço mundial ou no espaço objeto.

Na imagem abaixo, você pode ver como todos os primitivos compartilham o mesmo material com o triplanar do mundo, de modo que a textura do tijolo continua suavemente entre eles.

../../_images/spatial_material25.png

Triplanar Global

Ao utilizar mapeamento triplanar, ele é calculado no espaço local do objeto. Esta opção faz com que utilize o espaço global.

Amostragem

Filtro

O método de filtragem das texturas usadas pelo material. Consulte this page para a lista completa de opções e a descrição de cada uma.

Repetir

Se as texturas usadas pelo material se repetem e como elas se repetem. Consulte this page para a lista completa de opções e a descrição de cada uma.

Sombras

Desabilitar recebimento de sombras

Faz com que o objeto não receba nenhum tipo de sombra que de outra forma seria lançada sobre ele.

Converter sombra em opacidade

A iluminação modifica o alfa para que as áreas sombreadas sejam opacas e as áreas não sombreadas sejam transparentes. Útil para sobrepor sombras em câmera de RA.

Anúncio

Modo Billboard

Habilita o modo billboard para desenhar materiais. Isso controla como o objeto fica voltado para a câmera:

  • Disabled: Modo Billboard está desativado.

  • Enabled: O modo billboard está habilitado. O eixo -Z do objeto sempre ficará voltado para o plano de visualização da câmera.

  • Y-Billboard: O eixo X do objeto sempre ficará alinhado ao plano de visualização da câmera.

  • Particle Billboard: Mais adequado para sistemas de partículas, porque permite especificar a animação de flipbook.

../../_images/spatial_material9.webp

A seção Particles Anim só fica visível quando o modo de billboard é Particle Billboard.

Billboard Keep Scale

Permite dimensionar uma malha no modo billboard.

Crescer

Aumenta os vértices do objeto na direção apontada por suas normais:

../../_images/spatial_material10.png

Isto é comumente usado para criar esboços de baixos custos. Adicionar um segundo passe de material, torná-lo preto e sem sombras, reverse culling (Cull Front), e aumentar um pouco o tamanho:

../../_images/spatial_material11.png

Nota

Para que o Grow funcione como esperado, a malha deve ter faces conectadas com vértices compartilhados, ou “smooth shading”. Se a malha tiver faces desconectadas com vértices únicos, ou “flat shading”, a malha parecerá ter lacunas ao usar o Grow.

Observe que, a partir do Godot 4.5, contornos baseados em stencil buffer estão disponíveis utilizando o modo de stencil Outline stencil mode. Isso pode ser usado como alternativa ao Grow para contornos.

Transformar

Tamanho Fixo

Isso faz com que o objeto seja renderizado no mesmo tamanho, independentemente da distância. Isso é útil principalmente para indicadores (sem teste de profundidade e alta prioridade de renderização) e alguns tipos de billboards.

Usar Point Size (Tamanho de ponto)

Esta opção só é eficaz quando a geometria renderizada é composta por pontos (geralmente, ela é composta por triângulos quando importada de softwares de modelagem 3D). Nesse caso, esses pontos podem ter seu tamanho alterado (veja abaixo).

Tamanho do ponto

Ao desenhar pontos, especifique o tamanho do ponto em pixels.

Use Rastros de Partículas

Isso está disponível apenas nos renderizadores Forward+ e Mobile, não no renderizador Compatibility.

Se verdadeiro, habilita partes do shader necessárias para que as trilhas de GPUParticles3D funcionem. Isso também requer usar uma malha com skinning apropriado, como RibbonTrailMesh ou TubeTrailMesh. Habilitar esse recurso fora de materiais usados em malhas de GPUParticles3D quebrará a renderização do material.

Usar escala de corte em Z (Z Clip Scale)

Redimensiona o objeto sendo renderizado em direção à câmera para evitar o corte em elementos como paredes. Isso é destinado a objetos que são fixos em relação à câmera, como braços do jogador, ferramentas etc. A iluminação e as sombras continuarão funcionando corretamente quando esse ajuste for feito, mas efeitos em espaço de tela como SSAO e SSR podem apresentar problemas com escalas menores. Portanto, tente manter esse valor o mais próximo possível de 1.0.

Usar substituição de FOV

Substitui o ângulo de campo de visão (em graus) da Camera3D.

Nota

Isso se comporta como se o campo de visão fosse definido em uma Camera3D com Camera3D.keep_aspect configurado para Camera3D.KEEP_HEIGHT. Além disso, pode não apresentar o resultado correto em uma câmera não-perspectiva, onde a configuração de campo de visão é ignorada.

Desvanecimento por proximidade e distância

O Godot permite que materiais desapareçam gradualmente com base na proximidade entre si e também de acordo com a distância do observador. O desvanecimento por proximidade é útil para efeitos como partículas suaves ou massas de água com transição suave para as margens.

../../_images/spatial_material_proxfade.gif

O desvanecimento por distância é útil para feixes de luz ou indicadores que só estão presentes após uma determinada distância.

Lembre-se de que habilitar o desvanecimento por proximidade ou por distância com o modo Pixel Alpha ativa a mesclagem alfa. A mesclagem alfa exige mais da GPU e pode causar problemas de ordenação de transparência. Ela também desativa muitos recursos do material, como a capacidade de projetar sombras.

Nota

Para ocultar um personagem quando ele chega muito perto da câmera, considere usar Pixel Dither ou, de preferência, Object Dither (que é ainda mais rápido que o Pixel Dither).

Modo Pixel Alpha: A transparência real de um pixel do objeto muda conforme a distância para a câmera. Este é o efeito mais intenso, mas força o material a entrar no pipeline de transparência (o que leva, por exemplo, à ausência de sombras).

../../_images/standart_material_distance_fade_pixel_alpha_mode.webp

Modo Pixel Dither: O que isso faz é, de certa forma, aproximar a transparência renderizando apenas uma fração dos pixels.

../../_images/standart_material_distance_fade_pixel_dither_mode.webp

Modo Object Dither: Igual ao modo anterior, mas a transparência calculada é a mesma em toda a superfície do objeto.

../../_images/standart_material_distance_fade_object_dither_mode.webp

Estêncil (Stencil)

Desde a Godot 4.5, a própria permite materiais para fazer uso do buffer de estêncil. Esta funcionalidade é comumente usada para criar contornos e efeitos de raios-X, que podem ser úteis para destacar objetos, especialmente aqueles atrás de paredes.

Os modos Outline e X-Ray atribuem um material stencil pré-configurado à propriedade Next Pass do material. O modo Custom pode ser usado para efeitos avançados.

../../_images/material_stencil.webp

Os materiais que escrevem para o buffer de estêncil são sempre desenhados no passe transparente, por isso estão sujeitos às limitações habituais de limitações de transparência.

Nota

Assim como com a propriedade Grow, para que o contorno de stencil funcione como esperado, a malha deve ter faces conectadas com vértices compartilhados, ou "sombreamento suave". Se a malha tiver faces desconectadas com vértices únicos, ou "sombreamento plano", a malha parecerá ter lacunas ao usar um contorno de stencil.

Contornos baseados em stencil são renderizados de forma semelhante à propriedade Grow, mas não serão idênticos em todos os cenários, especialmente quando houver interseções com superfícies opacas.

Configurações do material

Prioridade de Renderização

A ordem de renderização dos objetos pode ser alterada, embora isto seja útil principalmente para objetos transparentes (ou objetos opacos que realizam desenho em profundidade, mas sem desenho colorido, como rachaduras no chão).

Os objetos são organizados por uma fila opaco/transparente e, em seguida, por render_priority, com maior prioridade sendo desenhada por último. Objetos transparentes também são organizados por profundidade.

O teste de profundidade se sobrepõe à prioridade. A prioridade, por si só, não pode forçar objetos opacos a serem desenhados uns sobre os outros.

Próximo passo

Definir next_pass em um material fará com que um objeto seja renderizado novamente com esse próximo material.

Os materiais são organizados por uma fila opaco/transparente e, em seguida, por render_priority, com maior prioridade sendo desenhada por último.

../../_images/next_pass.webp

A profundidade será testada como igual entre ambos os materiais, a menos que a configuração de crescimento (grow) ou outras transformações de vértice sejam usadas. Múltiplas passagens transparentes devem usar render_priority para garantir a ordem correta.