Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Standard Material 3D and ORM Material 3D

Introdução

StandardMaterial3D and ORMMaterial3D (Occlusion, Roughness, Metallic) are default 3D materials that aim to provide most of the features artists look for in a material, without the need for writing shader code. However, they can be converted to shader code if additional functionality is needed.

This tutorial explains the parameters present in both materials.

There are 4 ways to add these materials to an object. A material can be added in the Material property of the mesh. It can be added in the Material property of the node using the mesh (such as a MeshInstance3D node), the Material Override property of the node using the mesh, and the 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.

BaseMaterial 3D settings

StandardMaterial3D has many settings that determine the look of a material. All of these are under the BaseMaterial3D category

../../_images/spatial_material1.png

ORM materials are almost exactly the same with one difference. Instead of separate settings and textures for occlusion, roughness, and metallic, there is a single ORM texture. The different color channels of that texture are used for each parameter. Programs such as Substance Painter and Armor Paint will give you the option to export in this format, for these two programs it's with the export preset for unreal engine, which also uses ORM textures.

Transparency

By default, materials in Godot are opaque. This is fast to render, but it means the material can't be seen through even if you use a transparent texture in the Albedo > Texture property (or set Albedo > Color to a transparent color).

To be able to see through a material, the material needs to be made transparent. Godot offers several transparency modes:

  • Disabled: Material is opaque. This is the fastest to render, with all rendering features supported.

  • Alpha: Material is transparent. Semi-transparent areas are drawn with blending. This is slow to render, but it allows for partial transparency (also known as translucency). Materials using alpha blending also can't cast shadows, and are not visible in screen-space reflections.

    • Alpha is a good fit for particle effects and VFX.

  • Alpha Scissor: Material is transparent. Semi-transparent areas whose opacity is below Alpha Scissor Threshold are not drawn (above this opacity, these are drawn as opaque). This is faster to render than Alpha and doesn't exhibit transparency sorting issues. The downside is that this results in "all or nothing" transparency, with no intermediate values possible. Materials using alpha scissor can cast shadows.

    • Alpha Scissor is ideal for foliage and fences, since these have hard edges and require correct sorting to look good.

  • Alpha Hash: Material is transparent. Semi-transparent areas are drawn using dithering. This is also "all or nothing" transparency, but dithering helps represent partially opaque areas with limited precision depending on viewport resolution. Materials using alpha hash can cast shadows.

    • Alpha Hash is suited for realistic-looking hair, although stylized hair may work better with alpha scissor.

  • Depth Pre-Pass: This renders the object's fully opaque pixels via the opaque pipeline first, then renders the rest with alpha blending. This allows transparency sorting to be mostly correct (albeit not fully so, as partially transparent regions may still exhibit incorrect sorting). Materials using depth prepass can cast shadows.

Nota

Godot will automatically force the material to be transparent with alpha blending if any of these conditions is met:

  • Setting the transparency mode to Alpha (as described here).

  • Setting a blend mode other than the default Mix

  • Enabling Refraction, Proximity Fade, or Distance Fade.

Comparison between alpha blending (left) and alpha scissor (right) transparency:

../../_images/spatial_material12.png

Aviso

Alpha-blended transparency has several limitations:

  • Alpha-blended materials are significantly slower to render, especially if they overlap.

  • Alpha-blended materials may exhibit sorting issues when transparent surfaces overlap each other. This means that surfaces may render in the incorrect order, with surfaces in the back appearing to be in front of those which are actually closer to the camera.

  • Alpha-blended materials don't cast shadows, although they can receive shadows.

  • Alpha-blended materials don't appear in any reflections (other than reflection probes).

  • Screen-space reflections and sharp SDFGI reflections don't appear on alpha-blended materials. When SDFGI is enabled, rough reflections are used as a fallback regardless of material roughness.

Before using the Alpha transparency mode, always consider whether another transparency mode is more suited for your needs.

Alpha Antialiasing

Nota

This property is only visible when the transparency mode is Alpha Scissor or Alpha Hash.

While alpha scissor and alpha hash materials are faster to render than alpha-blended materials, they exhibit hard edges between opaque and transparent regions. While it's possible to use post-processing-based antialiasing techniques such as FXAA and TAA, this is not always desired as these techniques tend to make the final result look blurrier or exhibit ghosting artifacts.

There are 3 alpha antialiasing modes available:

  • Disabled: No alpha antialiasing. Edges of transparent materials will appear aliased unless a post-processing-based antialiasing solution is used.

  • Alpha Edge Blend: Results in a smooth transition between opaque and transparent areas. Also known as "alpha to coverage".

  • Alpha Edge Clip: Results in a sharp, but still antialiased transition between opaque and transparent areas. Also known as "alpha to coverage + alpha to one".

When the alpha antialiasing mode is set to Alpha Edge Blend or Alpha Edge Clip, a new Alpha Antialiasing Edge property becomes visible below in the inspector. This property controls the threshold below which pixels should be made transparent. While you've already defined an alpha scissor threshold (when using Alpha Scissor only), this additional threshold is used to smoothly transition between opaque and transparent pixels. Alpha Antialiasing Edge must always be set to a value that is strictly below the alpha scissor threshold. The default of 0.3 is a sensible value with an alpha scissor of threshold of 0.5, but remember to adjust this alpha antialiasing edge when modifying the alpha scissor threshold.

If you find the antialiasing effect not effective enough, try increasing Alpha Antialiasing Edge while making sure it's below Alpha Scissor Threshold (if the material uses alpha scissor). On the other hand, if you notice the texture's appearance visibly changing as the camera moves closer to the material, try decreasing Alpha Antialiasing Edge.

Importante

For best results, MSAA 3D should be set to at least 2× in the Project Settings when using alpha antialiasing. This is because this feature relies on alpha to coverage, which is a feature provided by MSAA.

Without MSAA, a fixed dithering pattern is applied on the material's edges, which isn't very effective at smoothing out edges (although it can still help a little).

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: The final color of the object is added to the color of the screen, nice for flares or some fire-like effects.

  • Sub: The final color of the object is subtracted from the color of the screen.

  • Mul: The final color of the object is multiplied with the color of the screen.

../../_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: No depth draw takes place (do not confuse this with the No Depth Test option below).

  • 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

Criando Shaders(shading)

Shading mode

Godot tem um custo mais ou menos uniforme por pixel, graças à pré-passagem de profundidade. Todos os cálculos de iluminação são feitos executando o shader de iluminação em cada pixel.

Como esses cálculos são custosos, o desempenho pode ser reduzido consideravelmente em alguns casos extremos, como desenhar várias camadas de transparência (o que é comum em sistemas de partículas). Mudar para a iluminação por vértice pode ajudar nesses casos.

Além disso, em dispositivos mais simples ou móveis, a mudança para iluminação de vértice pode aumentar consideravelmente o desempenho de renderização.

../../_images/spatial_material2.png

Tenha em mente que quando a iluminação do vértice está habilitada, somente a iluminação direcional pode produzir sombras (por razões de desempenho).

However, in some cases you might want to show just the albedo (color) and ignore the rest. To do this you can set the shading mode to unshaded

../../_images/spatial_material26.png

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.

  • Oren Nayar: Esta implementação visa levar em conta a micro-superfície (via rugosidade). Funciona bem para materiais semelhantes ao barro e alguns tipos de tecido.

  • Toon: Provides a hard cut for lighting, with smoothing affected by roughness. It is recommended you disable sky contribution from your environment's ambient light settings or disable ambient light in the StandardMaterial3D to achieve a better effect.

../../_images/spatial_material6.png

Modo Especular

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

  • SchlickGGX: The most common blob used by PBR 3D engines nowadays.

  • Blinn: Comum em motores da geração anterior. Não vale a pena usar hoje em dia, mas deixado aqui por uma questão de compatibilidade.

  • Phong: O mesmo que acima.

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

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

../../_images/spatial_material7.png

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

Makes the object unaffected by depth-based or volumetric fog. This is useful for particles or other additively blended materials that would otherwise show the shape of the mesh (even in places where it would be invisible without the fog).

Cor do vértice

This setting allows choosing what is done by default to vertex colors that come from your 3D modeling application. By default, they are ignored.

../../_images/spatial_material4.png

Use como Albedo

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

É sRGB

Most 3D modeling software will likely export vertex colors as sRGB, so toggling this option on will help them look correct.

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).

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

A colocação de um mapa de profundidade em um material produz uma busca com raios para emular o deslocamento adequado das cavidades ao longo da direção da vista. Isto não é uma verdadeira geometria acrescentada, mas uma ilusão de profundidade. Pode não funcionar para objetos complexos, mas produz um efeito de profundidade realista para texturas. Para melhores resultados, Profundidade deve ser usado junto com o mapeamento normal.

../../_images/spatial_material20.png

Dispersão Subsuperficial

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.

Refração

When refraction is enabled, Godot attempts to fetch information from behind the object being rendered. This allows distorting the transparency in a way similar to refraction in real life.

Remember to use a transparent albedo texture (or reduce the albedo color's alpha channel) to make refraction visible, as refraction relies on transparency to have a visible effect.

A normal map can optionally be specified in the Refraction Texture property to allow distorting the refraction's direction on a per-pixel basis.

../../_images/spatial_material23.png

Nota

Refraction is implemented as a screen-space effect and forces the material to be transparent. This makes the effect relatively fast, but this results in some limitations:

  • Transparency sorting issues may occur.

  • The refractive material cannot refract onto itself, or onto other transparent materials. A refractive material behind another transparent material will be invisible.

  • Off-screen objects cannot appear in the refraction. This is most noticeable with high refraction strength values.

  • Opaque materials in front of the refractive material will appear to have "refracted" edges, even though they shouldn't.

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

When using triplanar mapping, it is computed in object local space. This option makes it use world space instead.

Sampling

Filtro

The filtering method for the textures used by the material. See this page for a full list of options and their description.

Repetir

if the textures used by the material repeat, and how they repeat. See this page for a full list of options and their description.

Sombras

Não Receber Sombras

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

Use sombra para 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.

Billboard

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: Billboard mode is enabled. The object's -Z axis will always face the camera's viewing plane.

  • Y-Billboard: The object's X axis will always be aligned with the camera's viewing plane.

  • Particle Billboard: Most suited for particle systems, because it allows specifying flipbook animation.

../../_images/spatial_material9.png

The Particles Anim section is only visible when the billboard mode is 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

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)

This option is only effective when the geometry rendered is made of points (generally it's made of triangles when imported from 3D modeling software). If so, then those points can be resized (see below).

Tamanho do ponto

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

Transmissão

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

Proximity and Distance Fade

Godot allows materials to fade by proximity to each other as well as depending on the distance from the viewer. Proximity fade is useful for effects such as soft particles or a mass of water with a smooth blending to the shores.

../../_images/spatial_material_proxfade.gif

Distance fade is useful for light shafts or indicators that are only present after a given distance.

Keep in mind enabling proximity fade or distance fade with Pixel Alpha mode enables alpha blending. Alpha blending is more GPU-intensive and can cause transparency sorting issues. Alpha blending also disables many material features such as the ability to cast shadows. To hide a character when they get too close to the camera, consider using Pixel Dither or better, Object Dither (which is even faster than Pixel Dither).

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).

Próximo passo

Sets the material to be used for the next pass. This renders the object again with a different material.