Compreender como os dados são representados e manipulados no Editor de Material é um dos principais conceitos na criação de materiais do Unreal Engine. As entradas no Nó de Material Principal, que definem os atributos físicos de um material, são cada uma programadas para aceitar um tipo específico de dados. Da mesma maneira, muitos dos nós de Expressão de Material usados para construir materiais falharão ao serem compilados, a menos que recebam um tipo específico de dados em suas entradas.
Esta página fornece uma visão geral dos quatro tipos de dados disponíveis no Editor de Material e exemplos de como eles são usados com frequência.
Tipos de dados flutuantes
Em computação gráfica, um float é um tipo de dados que armazena um único valor numérico, positivo ou negativo. Float é a abreviação de ponto flutuante, o que significa que o número contém uma casa decimal e não precisa ser um número inteiro. Exemplos de valores float podem incluir 1,0, -0,5 ou 2,0.
Em última análise, todos os tipos de dados no Material Editor são variações da variável float. O ponto em que eles diferem é na quantidade de valores que armazenam. Enquanto um float representa um único número, um float2 armazena dois valores discretos de ponto flutuante. Por exemplo: (1.0, 0.5).
A tabela a seguir divide os quatro tipos de dados disponíveis no Editor de Material.
| Tipo de dados | Expressão(ões) de material | Estrutura de dados | Usos comuns |
|---|---|---|---|
| Float | Constante, Parâmetro Escalar | (r) | Metálico, Rugosidade, operações aritméticas |
| Float2 | Constant2Vector | (r, g) | Coordenadas UV ou XY, Escala |
| Float3 | Constant3Vector | (r, g, b) | Cor (r, g, b) ou coordenadas 3D (x, y, z) |
| Float4 | Constant4Vector, Parâmetro de Vetor, Texturas | (r, g, b, a) | Cor com canal alfa, Texturas (r, g, b, a) |
Float
Conforme descrito acima, um float armazena um único valor de ponto flutuante. Pode ser positivo ou negativo e contém uma casa decimal. Existem duas expressões de material que você pode usar para definir um float.
Expressão de material constante
Um nó de Expressão de material constante armazena um único valor float constante. Por ser uma constante, esse valor não muda após a compilação do material. A imagem abaixo mostra um nó Constante que contém um valor de 1,0.
Parâmetro escalar
Um parâmetro escalar também armazena um float. Ao contrário de uma constante, o parâmetro escalar também se torna uma variável nomeada que você pode modificar em uma instância de material após a compilação do material ou até mesmo em tempo de execução. A imagem abaixo mostra um Parâmetro Escalar com o nome de Rugosidade e um valor padrão de 0,6. Você pode usar isso para definir o atributo de rugosidade do material, ao mesmo tempo em que fornece aos artistas uma maneira de substituir o valor em uma instância de material.
Para obter mais informações sobre quando e como usar parâmetros escalares em vez de constantes, leia a documentação sobre Materiais instanciados.
Exemplos
Certas entradas no Nó de Material Principal são definidas por um float. Por exemplo, entradas Metálico, Especular e Rugosidade aceitam um valor float entre 0 e 1. Portanto, você pode passar uma expressão de material constante ou parâmetro escalar diretamente ao Nó de Material Principal para definir esses atributos.
Constantes e parâmetros escalares são frequentemente usados para controlar a magnitude de algum efeito. Abaixo, um Parâmetro escalar denominado Intensidade emissiva é multiplicado por uma cor sólida e transmitido para a entrada Cor emissiva. Alterar o valor no parâmetro Intensidade emissiva torna a saída emissiva mais clara ou mais escura.
Float2
Um Float2 armazena dois valores numéricos. Por exemplo: (2.0, 3.0).
No Editor de Material, a expressão de material Constant2Vector é usada para definir um float2. Abaixo, um Constant2Vector é mostrado com valores de 2.0 e 3.0 em cada um de seus dois canais.
Constant2Vector
O Constant2Vector é útil sempre que você precisa definir ou modificar um atributo que requer dados de dois canais. No painel de detalhes, os dois valores são rotulados como R e G, referindo-se aos canais vermelho e verde na cor rgb, mas esse é apenas um dos usos possíveis. Coordenadas (UV, XY) e escala (largura, altura) são outros atributos que você pode definir com um Constant2Vector.
No exemplo abaixo, um Constant2Vector é adicionado a um nó de Coordenadas de Textura para modificar a posição da textura em um plano. No primeiro slide, os valores em Constant2Vector são (0, 0) e, portanto, a posição da textura permanece inalterada.

Os valores em Constant2Vector controlam a posição da textura.
Quando o valor de R é alterado para 0,5, a textura se desloca ao longo do eixo horizontal, pois está sendo adicionada à coordenada U da textura. Isso faz com que a textura envolva as bordas esquerda e direita do plano. Quando o valor G é alterado para 0,5, a textura muda verticalmente. O centro da textura está agora nos quatro cantos do plano.
Float3
Um float3 armazena três valores numéricos. No Editor de Material, o nó Constant3Vector define um float3.
Constant3Vector
No Unreal Engine, a cor de um pixel é definida por três valores que representam os canais de cor vermelho, verde e azul. Portanto, um uso comum para float3 é definir uma cor sólida.
Se você clicar duas vezes em um nó Constant3Vector, uma caixa de diálogo seletora de cores será exibida, permitindo selecionar uma cor com a roda ou a ferramenta de conta-gotas. O seletor de cores também fornece campos para inserir os valores RGB, HSV ou Hex se você precisar criar uma cor específica. Você também pode iniciar o seletor de cores clicando na amostra de cores do painel Detalhes.
Um segundo caso de uso para um float3 é para definir as coordenadas (x, y, z). Por exemplo, a entrada Deslocamento da Posição de Mundo aceita três valores, que definem em quantas unidades o material é deslocado nos eixos x, y e z do espaço de mundo.
Nos quatro slides abaixo, os valores em um Constant3Vector são alterados para 800. Você pode ver como a posição da esfera muda, primeiro no eixo x, depois no eixo y e por fim no eixo z no terceiro slide.

O Deslocamento da Posição de Mundo assume três valores, para compensar o material ao longo dos eixos x, y e z.
Parametrizando um Constant3Vector
Você pode parametrizar um Constant3Vector clicando nele com o botão direito e escolhendo Converter em Parâmetro no menu de contexto. Isso converte o nó em um parâmetro de vetor. O nó Parâmetro de Vetor na verdade armazena quatro valores (r, g, b, a), tornando-o um float4.
No entanto, qualquer entrada que exija um float3 simplesmente usará os três primeiros valores e descartará o quarto. Por exemplo, a entrada Cor de Base aceita um float3. Se você conectar um parâmetro de vetor à Cor de Base, ele usará os canais R, G e B e descartará o quarto valor (o canal alfa). Como o Unreal Engine sabe qual canal descartar, você pode usar um parâmetro de vetor com segurança quando precisar parametrizar um float3, mesmo que o nó seja tecnicamente um float4.
Float4
Um float4 armazena quatro valores de ponto flutuante. Por exemplo: (50.0, 0.0, 100.0, 0.5). Existem duas Expressões de Material comumente usadas para definir um float4.
Constant4Vector
O Constant4Vector armazena quatro valores constantes. O Constant4Vector é usado com mais frequência para representar cores RGBA, ou seja, cores com um canal alfa. Como Constant3Vector, você pode clicar duas vezes no nó ou clicar na amostra no painel Detalhes para acessar um seletor de cores.
Parâmetro de vetor
Um Parâmetro de Vetor é um float4 parametrizado. Você pode criar um parâmetro de vetor diretamente da paleta ou pode. O uso mais comum para um Parâmetro de Vetor é criar parâmetros de cor em um material que os artistas possam substituir facilmente em instâncias de material. Por exemplo, multiplicar um parâmetro de vetor em cima de uma textura é uma maneira de adicionar um controle de tonalidade a algum aspecto de um material (Cor de Base e Emissivo, por exemplo).
Além de sua utilidade em um fluxo de trabalho de material parametrizado, o parâmetro de vetor tem uma vantagem adicional. Ao contrário de qualquer exemplo anterior nesta página, cada canal de dados individual dentro de um parâmetro de vetor é acessível por meio dos cinco pins de saída no lado direito do nó. Conforme rotulado acima, eles são:
- RGBA: gera todos os valores no float4. No exemplo acima: (0.0, 1.0, 0.5, 0.0).
- R: gera o valor apenas no canal R.
- G: gera o valor apenas no canal G.
- B: gera o valor apenas no canal B.
- A: gera o valor apenas no canal A.
Isso enfatiza um aspecto importante da criação de materiais. Em última análise, as informações que fluem através de um gráfico de material são apenas valores de ponto flutuante empacotados e representados de maneiras diferentes. Mesmo que os canais de um parâmetro de vetor sejam rotulados como RGBA no painel Detalhes, isso não significa que eles precisem ser usados dessa forma no seu material.
Além de representar a cor, você pode usar um parâmetro de vetor para parametrizar quatro valores discretos, mas relacionados. Um desses usos do nó é no material pai do Megascans, em que um parâmetro de vetor é usado para parametrizar o mosaico UV e o deslocamento do material.
Observe que os canais RGBA foram renomeados neste exemplo para Ladrilhamento X, Ladrilhamento Y, Deslocamento X e Deslocamento Y. É possível renomear os canais de um parâmetro de vetor no painel Detalhes em Personalização de Parâmetros > Nomes de Canal. Esses nomes ficam visíveis no Editor de Instância de Material quando um artista substitui os valores de parâmetros.
Leia mais sobre o nó de Parâmetro de vetor aqui e saiba mais sobre a Parametrização de materiais nestas páginas.
Leitura adicional
Os quatro tipos de dados apresentados nesta página formam a base de todas as informações que percorrem um gráfico de material. É importante entender que os tipos de dados não são necessariamente imutáveis. Por exemplo, você pode combinar dois floats para formar um float2. Da mesma forma, você pode extrair ou isolar um único float de um tipo de dados maior.
Continue lendo sobre a manipulação de tipos de dados e regras para realizar aritmética em um gráfico de material aqui: Manipulação de dados de materiais e aritmética.