Este documento é uma visão geral do fluxo de trabalho original de materiais em camadas, que usa funções de material para criar combinações de camadas complexas. Para obter informações sobre o novo recurso Camadas de material no Editor de Instância de Material, leia aqui.
Materiais em camadas fornecem um meio de criar um único material que possui uma série de submateriais (ou camadas) que você pode colocar na superfície dos seus objetos usando operações por pixel, como máscaras. Eles são perfeitos para lidar com misturas complexas entre tipos de superfície exclusivos. Na imagem dos foguetes abaixo, o foguete na extrema direita está usando uma camada separada para suas partes de cromo, alumínio e cobre. Estas são combinados por pixel em todo o material.
Como uma funcionalidade, materiais em camadas existem como uma extensão de Funções de material. Funções de materiais são redes de nós independentes que executam uma operação específica, como uma equação matemática complexa. Você pode reutilizar essas funções à vontade em qualquer número de materiais. Usando os nós Criar atributos de material e Quebrar atributos de material, você pode definir um conjunto completo de atributos de material totalmente dentro de uma função material. Você pode então chamar essas funções de material em um material de base e mesclar entre elas usando funções de mesclagem de camadas de material.
A imagem acima mostra um material cromado simples definido inteiramente dentro de uma função de material usando o nó Criar atributos de material. Você pode usar essa função como uma camada no seu material base e mesclá-la com outras funções de material (camadas).
É importante perceber que, como funções de material não podem ser aplicadas diretamente a uma superfície, você precisa inserir cada camada de função de material em um material base padrão, que então pode ser aplicado a malhas estáticas. É possível usar funções de material para criar quantas camadas você desejar, mesclando-as como achar melhor.
Em um alto nível, o fluxo de trabalho se parece com isto:
- Crie uma nova função de material e edite o gráfico de nó até obter perfeição. Essa função atuará como uma camada quando você a chamar no seu material base.
- Conecte sua rede de nós a um novo nó Criar atributos de material e conecte-a à saída Função.
- Salve a função de material.
- Repita esse processo para qualquer outra camada de função de material que você queira criar.
- Crie um novo material e abra-o no Editor de Material.
- Arraste suas funções de material do Navegador de conteúdo até o novo material para usá-las como camadas.
- Combine várias funções de material usando as funções Mesclagem de camadas de material.
Seu objeto final agora pode ter vários materiais distintos misturados na superfície.
Principais benefícios
Materiais em camadas permitem que você crie o que, de outra forma, seria um material muito complicado, mantendo esse material muito mais gerenciável do ponto de vista da capacidade de edição futura.
Por exemplo, você pode criar o efeito de materiais em camadas usando um gráfico de material convencional (sem camadas ou funções). No entanto, isso exigiria redes complexas para misturar diferentes texturas e valores para cada Entrada de material. Como a maioria dos materiais faz uso de várias entradas, a complexidade desse tipo de material aumentaria significativamente.
Considere a complexidade da rede abaixo, que não usa camadas de material e mescla um efeito de cromo e cobre, como visto no foguete acima.
Um gráfico de material tradicional sem camadas.
Clique na imagem para ampliar.
Com um material em camadas, cada tipo de material distinto está contido em seu próprio nó. Isso torna a mesclagem muito mais simples e muito mais fácil para um artista editar e depurar. Ao usar os nós Criar atributos de material e Quebrar atributos de material, você pode conectar cada uma das camadas de função do material diretamente sem precisar se preocupar em conectar propriedades individuais.
A rede abaixo atinge o mesmo resultado que a anterior, mas os materiais cromo e cobre são modularizados em suas próprias funções de material.
Este é o mesmo material usando funções de material como camadas.
Clique na imagem para ampliar.
Outro benefício de uma abordagem de material em camadas é que, como eles usam funções de material, cada camada é reutilizável. Isso permite configurar uma biblioteca de arquétipos de materiais ou de materiais que definem um tipo de superfície básico do mundo real. Por exemplo, você pode criar camadas que representam superfícies genéricas como alumínio, aço, couro, plástico, borracha e assim por diante. Em seguida, pode usar um material em camadas para mesclar entre eles. Isso é muito útil quando se deseja criar um objeto detalhado, como um personagem, sem a necessidade de criar um grande conjunto de materiais para aplicar separadamente na superfície.
Tipos de mesclagem
Na lista Funções de material na paleta Editor de Material, há uma lista de várias funções de Mesclagem de camadas de material. Elas existem para ajudar você a mesclar materiais sem precisar recriar gráficos de nó complexos todas as vezes. Diferentes tipos permitem tipos especializados de mesclagens, como a capacidade de substituir funcionalidades específicas do material.
| Funções de mesclagem de camadas de material | |
|---|---|
| MatLayerBlend_AO | Combina um mapa de oclusão de ambiente (AO) sobre a superfície para remover reflexão. |
| MatLayerBlend_BaseColorOverride | Permite que a cor de base seja substituída. |
| MatLayerBlend_BreakBaseColor | Exibe a cor de base de uma camada de material de entrada. |
| MatLayerBlend_BreakNormal | Exibe a normal de uma camada de material de entrada. |
| MatLayerBlend_Decal | Mescla uma folha de decalque sobre o material usando o segundo canal UV. |
| MatLayerBlend_Decal_UV3 | Combina uma folha de decalque sobre a camada de material usando o terceiro canal UV. |
| MatLayerBlend_Emissive | Mescla uma textura emissiva sobre a camada de material. |
| MatLayerBlend_GlobalNormal | Mescla uma textura de normal sobre a camada de material. |
| MatLayerBlend_LightmassReplace | Substitui a cor de base em Lightmass, permitindo alterações nos resultados da iluminação indireta. |
| MatLayerBlend_ModulateRoughness | Multiplica a rugosidade da camada de material por uma textura de entrada. Útil para um visual "gorduroso". |
| MatLayerBlend_NormalBlend | Mescla uma textura de normal na superfície, mas por meio de uma textura de máscara, permitindo o controle de onde a normal aparecerá. |
| MatLayerBlend_NormalFlatten | Diminui o efeito do mapa de normais. |
| MatLayerBlend_RoughnessOverrideSubstitui a textura de rugosidade de uma camada de material. | |
| MatLayerBlend_Simple | Fornece uma solução de mesclagem de interpolação linear simples (Lerp) para 2 camadas de material. Não mescla a normal. Em vez disso, retém a normal do material de base. |
| MatLayerBlend_Stain | Mescla o material superior sobre o material de base como uma mancha, o que significa que apenas os valores de cor de base e rugosidade do material superior são usados. |
| MatLayerBlend_Standard | Combina todos os atributos de duas camadas de material. |
| MatLayerBlend_Tint | Permite tingir uma camada de material inserindo uma cor de tonalidade e uma máscara para controlar a localização dessa tonalidade. Útil para fazer alterações parciais de cor. |
| MatLayerBlend_TintAllChannels | Semelhante a Tonalidade, mas também afeta o Especular. É uma função de caso muito especial. Geralmente, você não precisará dela. |
| MatLayerBlend_TopNormal | Mescla todos os atributos de ambos os materiais, mas usa apenas a normal do material superior. |
Instância de materiais em camadas
Como materiais em camadas são essencialmente funções de material, parametrizá-los para instanciação requer uma certa premeditação extra. Para fazer o melhor uso de Parâmetros escalares e Parâmetros de vetor, você pode criar uma expressão de Entrada de função como parte de uma camada de material. Em seguida, pode conectar um parâmetro a essa entrada do material de nível superior. Consulte a Visão geral de funções de material para obter mais informações.
O fluxo funciona mais ou menos assim:
- Parâmetro de material (Parâmetro escalar, Parâmetro de vetor etc.)
- Camada de material (função)
- Expressão de entrada de função
- Uma rede para definir a camada de material
- Saída da função
- Material final
Algumas dicas úteis:
- Ao colar suas expressões de material em uma função para criar sua camada, substitua todos os parâmetros por nós de entrada de função apropriadamente nomeados.
- Quando você trouxer sua nova função de material para um material, conecte novos nós de parâmetro nas entradas.
- Agora, você pode instanciar o material final, e seus parâmetros direcionarão os aspectos apropriados das suas camadas.
- Certifique-se de fornecer valores padrão para suas entradas de função. Isso agiliza o fluxo de trabalho para quem não precisa fazer alterações.
Advertências
Embora materiais em camadas sejam úteis para lidar com configurações de vários materiais, você deve tomar cuidado ao empregá-los. Eles podem ser pesados em termos de desempenho, especialmente se os materiais usados nas funções de camada forem complexos.
Lembre-se de que todas as suas camadas são renderizadas simultaneamente e depois mescladas. Por exemplo, se você tiver quatro camadas em um material, para cada pixel do seu objeto, o mecanismo deverá testar para ver qual das quatro está mesclada e rejeitar qualquer uma que não esteja em uso. Esse cálculo adicional torna o material mais exigente em termos de desempenho.
Seu primeiro impulso pode ser usar materiais em camadas sempre que quiser ter vários tipos de superfície em um objeto. Por exemplo, em um automóvel, você pode querer ter uma camada distinta para tinta, outra para aço, borracha, vidro e assim por diante. Em vez disso, é mais eficiente separar muitas dessas camadas no nível da geometria. Isso cria mais elementos de material nos seus objetos, o que aumenta as draw calls, mas geralmente é muito mais eficiente. Resumindo: se você puder aplicar vários materiais em vez de usar um material em camadas, faça isso. Se precisar ter controle por pixel sobre onde os materiais são colocados, use as funções de material em camadas ou Camadas de material.
Embora a condensação de vários materiais individuais em um único material reduza as draw calls, o material em camadas resultante geralmente é muito pesado para ser usado em plataformas móveis.