Unreal Engine 4 - sombreador em chamas

Este é um pequeno sombreador que apareceu quando eu estava pensando em vários métodos de aplicação do fluxograma. Existem muitos efeitos de transição / dissolução, mas a maioria deles parece bastante estática, pois usa texturas estáticas. Este shader está longe de ser perfeito, mas o movimento suave o torna visualmente atraente como um efeito de gravação suave.

O shader em si é extremamente simples, abaixo descreverei o processo de criá-lo. Como na maioria dos meus shaders, envolvi-o em uma função de material para que ele possa ser usado com qualquer material existente.

Nota Você pode abrir imagens em uma nova guia para visualizá-las em alta resolução.

Texturas


Usei as seguintes texturas no shader, a primeira é o ruído simples gerado no Substance Designer, a segunda é o fluxograma que eu pintei usando o FlowMap Painter .



Configurar o FlowMap


O fluxograma é um método pelo qual usamos vetores 2D armazenados como texturas para distorcer as texturas UV ao longo do tempo. Essa animação então faz um loop para criar a ilusão de fluxo. Normalmente, isso é usado em correntes de água para criar a impressão de que a água flui em torno de pedras, etc. Mas, é claro, pode ser usado para muitas outras coisas. No meu shader, eu o uso para criar o efeito de queima de material. Se você quiser entender mais sobre o fluxograma, recomendo ler um artigo sobre o Polycount e assistir a uma lição de Simonschreibt , na qual ele explica perfeitamente o trabalho com o fluxograma.

Minhas configurações abaixo



Como você pode ver, temos opções para controlar a força da distorção, o mosaico da textura e também a direção do fluxo.

Para controlar o efeito, eu uso a saída do canal vermelho do mapa de ruído. Se você olhar para o nó Lerp, verá o seguinte resultado:



Spheremask


Esta etapa pode ser implementada de várias maneiras; no final, tudo o que ele precisa é de um valor de escala de gradiente para controlar nosso efeito. Nesse caso, eu uso o SphereMask controlado pela posição do blueprint para mover nossa máscara. Movendo o projeto, posso influenciar quais áreas são queimadas, bem como animar o raio da esfera para criar um efeito de combustão. Se você quiser aprender como configurar um conjunto de parâmetros de material para transferir a posição da BP para um sombreador, recomendo a leitura sobre o sombreador Wormhole , onde descrevo isso em detalhes.

Criar o SphereMask é fácil, pois o UE4 já possui uma função interna.



Nesse caso, o raio é indicado nas coordenadas do mundo (World Space); para ver isso, tente alterar o valor do raio. Por padrão, o local do SphereMask é {0, 0, 0}; portanto, você notará que a esfera aparece no centro da malha.



O próximo passo é subtrair o resultado do ruído do fluxograma do SphereMask, para obter um padrão de queima à medida que a máscara aumenta.



Observe que você pode configurar o parâmetro Dureza do SphereMask para controlar a propagação na transição.
Dureza: 0,2Dureza: 0,5

Agora podemos pegar o resultado e multiplicá-lo pelo Opacity_Mask e devolver o Opacity do material ao nosso canal para obter a máscara final.

Você também pode fazer isso sem ajustar o fluxograma usando apenas uma textura estática. A única diferença é que, usando o fluxograma, você obterá uma animação mais suave. Abaixo você pode ver a diferença.
com fluxogramasem fluxograma

Brilho e carbonização da borda


Para criar bordas queimadas e obter um contorno preto carbonizado, usamos a técnica que usei em muitos dos meus shaders, onde definimos o gradiente da máscara como 0 e criamos uma máscara de borda usando a função de distância.

Abaixo você pode ver essas configurações. A única coisa que deve ser notada aqui é que escolhemos 0,45 para o contorno do brilho e 0,5 para o contorno da carbonização, para que eles sejam deslocados um em relação ao outro, e a carbonização aparece ao redor do brilho. Em seguida, criamos um parâmetro a partir da largura para controlar a propagação conforme necessário.



Se você colocar uma visualização em cada um desses nós, verá o seguinte
EmberglowCharring

Agora pegue o resultado do EmberGlow e multiplique-o pela cor da chama, adicione-o à cor Emissiva e retorne-o à entrada do nosso material.



Como alternativa, você pode usar o resultado da seção EmberGlow como dados difusos para exibir cores com base no gradiente. Essa técnica é chamada de renderização de gradiente, e o UE4 agora tem uma função CurveAtlass que permite definir curvas de cores e acessá-las dentro do shader. Lembre-se de que essa é uma função experimental e eu encontrei várias falhas na tentativa de usá-la em meus shaders; portanto, aconselho que você evite usá-la por enquanto.



Depois, pegamos o resultado da seção Charring e multiplicamos por Basecolor a partir da entrada da função para obter o valor de Final Basecolor.



Agora você pode ver como as bordas ficam pretas antes de gravar



É aqui que terminamos.

Agora a parte mais legal - podemos mudar nossa planta para mudar a área de queima. Por exemplo, em um jogo, podemos usar a localização da tocha do jogador para controlar esse efeito. Como resultado, parecerá que está queimando alguma coisa. E podemos controlar o parâmetro e o raio SphereMask Hardness para obter a aparência de que precisamos. É assim que ficará com diferentes configurações.



Além disso, você pode animar o raio para que pareça queimar com o tempo.

Você pode usar um exemplo de projeto com esse shader no repositório do github

Source: https://habr.com/ru/post/pt435174/


All Articles