Iluminação de fumaça realista com iluminação de 6 vias no gráfico VFX

Simular e renderizar fumaça e explosões em tempo real sempre foi um desafio devido à natureza complexa das interações e dinâmicas de iluminação envolvidas.
Mais tecnologias em tempo real estão introduzindo simulação e renderização de fluidos volumétricos, mas ainda parecem ser caras demais para serem amplamente utilizadas em jogos. Então, como acontece com muitos problemas de renderização, o importante é tentar aproximar ao máximo a aparência com o menor custo possível.
O Tech Stream 2022.2 apresenta um fluxo de trabalho completo de ponta a ponta (do DCC ao Unity) que permite renderizar fumaça de simulações cozidas de forma realista. Este fluxo de trabalho é escalável em todas as plataformas, sob quaisquer condições de iluminação. Esta solução também inclui uma biblioteca de mapas prontos para uso, projetados para tornar mais fácil para qualquer pessoa levar os efeitos de fumaça a um novo nível de fidelidade visual.
A renderização de fumaça em jogos geralmente é feita com sprites texturizados porque calcular iluminação totalmente volumétrica é muito caro para um orçamento em tempo real. Uma das perguntas mais comuns quando se trata de sprites, no entanto, é: Como acender a fumaça com base em uma geometria plana e 2D?
Existem várias abordagens, como usar mapeamento normal ou usar um mapa de cores totalmente preparado. Mas essas abordagens carecem de realismo, extensibilidade ou ambos.
Entra em cena a iluminação de 6 vias, uma abordagem alternativa para esse problema que usa um conjunto de mapas de luz que contêm a resposta de iluminação da fumaça para luz vinda de seis direções diferentes. Esses mapas de luz são integrados em um conjunto de duas texturas, juntamente com um canal alfa e uma máscara emissiva opcional.

Equipada com essas texturas, a fumaça pode ser sombreada dinamicamente sob diferentes condições de iluminação. Ele exibirá fenômenos de iluminação volumétrica, como sombreamento interno ou bordas de luz quando iluminado por trás, o que não era possível com outras técnicas.

Você pode encontrar vários controles, como cor, absorção, gradiente emissivo e remapeamento de mapa de luz para criar efeitos variados com base no mesmo conjunto de texturas. Isso permite que você reutilize seus ativos em muitos cenários diferentes.
Essa técnica conhecida por vários nomes (iluminação de 6 vias, iluminação de 6 pontos, mapas de luz 6D, mapas de luz de 6 pontos, iluminação de fumaça e assim por diante) é usada em vários jogos AAA – confira esta ótima visão geral da técnica escrita pelo ex-diretor de tecnologia de efeitos visuais do jogo.
As principais vantagens de empregar a técnica incluem:
- Permitindo a renderização de interações de luz complexas que de outra forma não seriam possíveis em tempo real, como a dispersão de múltiplos reflexos, já que ela pode ser diretamente transferida da simulação para mapas de luz.
- Melhorando a qualidade visual com efeitos de fumaça mais integrados ao mundo graças à melhor iluminação – por exemplo, quando adicionada a uma cena, a fumaça reagirá a qualquer número e a todos os tipos de luzes dinâmicas (ou seja, direção, ponto, área), bem como à iluminação indireta (por exemplo, sondas) e ambiente. Portanto, o mesmo ativo pode ser colocado em locais diferentes, mas cada instância parecerá pertencer ao seu ambiente próximo.
- Produzindo baixo overhead apesar da alta qualidade do visual. Os efeitos de fumaça são, na verdade, bastante econômicos para renderizar, comparáveis a um sprite iluminado tradicional.
- Salvando memória de disco e textura. Embora as texturas de flipbook sejam sempre pesadas na memória, usar iluminação de 6 vias permite que você reutilize a mesma textura em muitos lugares diferentes. A aparência da fumaça resultante pode variar muito com base nas variações aplicadas a ela (cor, absorção e assim por diante) e nas condições de iluminação do local onde ela é colocada. Para economizar mais memória, você pode aproveitar os vetores de movimento assados para reduzir o número de quadros necessários (uma ferramenta útil para isso é o TFlow da Tuatara na Unity Asset Store).

Uma desvantagem a ter em mente é a planura desse truque. Se essa técnica proporciona uma ótima impressão de volume graças à iluminação de alta fidelidade, ainda é uma folha de textura e não um efeito volumétrico 3D. Por esse motivo, ele é mais adequado para efeitos de fundo, efeitos ornamentais como vapor ou explosões. Para dar mais profundidade, você precisará usar esse efeito em mais partículas ou combiná-lo com efeitos volumétricos (por exemplo, névoa volumétrica local ou materiais volumétricos no Pipeline de renderização de alta definição).
Aqui estão alguns casos de uso típicos:
- Dia: Simula a propagação da iluminação solar e celeste através da fumaça
- Noite: Luzes e holofotes estáticos ou de ponto móvel podem acender a fumaça
- Fumaça de alta fidelidade
- Pó
- Vapor
- Nuvens volumétricas: Iluminação de 6 vias para nuvens de heróis
- Efeitos avançados como portais, tempestades de areia ou tornados
Fornecemos algumas ferramentas para ajudar no processo de geração do mapa de luz. No repositório VFXToolbox , você encontrará exportadores para Houdini e Blender, juntamente com outras ferramentas como o Image Sequencer, que pode ser usado para reembalar flipbooks de lightmap de 6 vias ou para ajustar a intensidade da cor.
Todas as instruções relativas à instalação da ferramenta podem ser encontradas no arquivo Readme.txt. Observe que duas variantes da ferramenta coexistem. A primeira pode ser encontrada no Contexto do Objeto. Ele é baseado no nó de renderização OpenGL e é muito rápido.
A segunda variante pode ser encontrada no contexto Stage e é construída em torno do renderizador Karma. Ambos oferecem a capacidade de renderizar lightmaps, emissivos e exportar para Flipbook.

Para instalar o complemento, siga o procedimento padrão no Blender. No menu Preferências, instale o arquivo unity_6way.py e ative o complemento. Depois disso, você encontrará um painel na visualização 3D, na categoria Unity.
O complemento permite renderizar mapas de luz, renderizar canais emissivos, fazer alguma composição básica e criar flipbooks a partir de uma sequência de mapas de luz. Essas tarefas podem ser feitas todas de uma vez ou separadamente, com cada etapa tendo configurações individuais para controlar o resultado final.

Outras ferramentas

Algumas ferramentas podem já fornecer opções e plug-ins oficiais ou criados pelo usuário para exportar mapas de luz de 6 vias.
Por exemplo, no EmberGen você pode usar uma opção chamada “Seis pontos” no nó Renderizar. Observe que esse fluxo de trabalho não é oficialmente suportado porque não temos controle sobre a intensidade da luz nesses mapas. No entanto, você ainda pode achar útil ajustá-lo manualmente.
Você também pode criar mapas de iluminação de 6 vias usando suas próprias ferramentas. Para isso, você pode seguir os passos e formatar a embalagem descritos abaixo.
Para criar os mapas de luz, precisamos renderizar os objetos seis vezes com diferentes configurações de iluminação.
Usamos luzes brancas direcionais com uma direção diferente para cada renderização: superior, inferior, esquerda, direita, frontal e traseira, todas em relação à câmera.
Informações emissivas, como fogo, não fazem parte dos mapas de luz e podem ser renderizadas posteriormente em uma textura separada ou compactadas dentro de um canal extra dos mapas de luz.
Os dados para mapas de iluminação de 6 vias são compactados em duas texturas RGBA. Cada uma das seis direções do mapa de luz é armazenada em um canal de cor (vermelho, verde ou azul) das duas texturas.
Além disso, o canal alfa da primeira textura contém a transparência. Isso deixa o canal alfa da segunda textura como um canal extra disponível. O fluxo de trabalho atual oferece a opção de incluir um componente emissivo nesse canal extra.


Você pode examinar os canais separadamente no Editor Unity, em uma janela de visualização, quando a textura é selecionada.
Lightmaps criados por outras ferramentas podem agrupar esses canais em ordens diferentes. Há uma funcionalidade básica para reordenar canais dentro do Unity usando o Inspetor, mas você pode precisar de um editor de imagens se precisar mover canais de uma textura para outra.

A iluminação da fumaça é diretamente integrada no circuito de luz HDRP, o que significa que não há limite específico para o número de luzes que afetarão a fumaça. É claro que quanto mais luzes, mais intensivo em termos computacionais ele se torna (você pode aproveitar camadas de luz para atenuar isso).
Todos os tipos de luzes diretas são manipulados, como luzes direcionais, pontuais, spot, retangulares e lineares. Ele também cria resultados impressionantes para luzes dentro de efeitos de fumaça para criar relâmpagos, faíscas elétricas, sinalizadores, vaga-lumes e muito mais.

Para cada luz, é importante primeiro determinar sua direção em relação à partícula e usar essa direção para mesclar os diferentes mapas de luz. Para luzes de área, usamos uma abordagem de Ponto Mais Representativo, identificando o ponto mais próximo na luz para calcular a direção.

A partícula também é afetada pela iluminação indireta, em particular por Light Probes, Adaptive Probe Volumes (APV), Ambient Probes e Light Probe Proxy Volumes (LPPV), dependendo de quais tipos estão ativos na cena. Para obter o melhor desempenho, você pode usar o modo somente ambiente para pular completamente o loop de luz e permitir um cálculo de iluminação muito barato.

Para considerações de desempenho, as contribuições da sonda são avaliadas no shader de vértice e então interpoladas para o shader de pixel. Isso significa que se você estiver usando uma saída quad, as pontas de prova serão avaliadas apenas nos quatro cantos do quad. Para sondas espacialmente variáveis, como APVs, um ou mais vértices podem terminar em um lado de uma parede, enquanto o restante da partícula está no outro lado. Se isso acontecer, as contribuições da sonda estarão erradas e levarão a artefatos visuais. Uma solução, neste caso, é usar uma malha mais tesselada, com mais vértices. Observe que isso geralmente não é um problema para cenas externas.
A fumaça é considerada totalmente difusa em nosso modelo, portanto contribuições indiretas especulares não são avaliadas. Isso significa, por exemplo, que sondas de reflexão não afetam partículas usando iluminação de fumaça de 6 vias.
Também oferecemos duas maneiras diferentes de aplicar cor à fumaça. Você pode conseguir isso derivando a absorção de luz por componente de cor dos mapas de luz (para um comportamento mais realista da fumaça colorida) ou com uma multiplicação simples (a maneira mais barata).


A saída de renderização de iluminação de 6 vias no VFX Graph oferece vários controles para personalizar a aparência do efeito e criar efeitos diferentes reutilizando os mesmos mapas de luz.



Leva apenas alguns minutos para adicionar uma linda fumaça de 6 vias ao seu projeto. Você deve estar trabalhando no Unity 2022.2 ou superior e usar VFX Graph e HDRP.
Para que você fique por dentro, criamos uma biblioteca de mapas prontos para uso. Oferecemos tanto ativos de alta fidelidade que você pode processar e compactar como quiser – por exemplo, usando o VFX Toolbox – quanto versões mais compactas, leves e prontas para o seu jogo.

Para criar um efeito usando esses mapas e iluminação de 6 vias, siga estas etapas:
- Arraste e solte os mapas na pasta Assetdo Unity.
- Crie e abra um novo ativo de gráfico VFX.
- Crie uma nova Saída de Partículas Iluminadas e selecione-a.
- No Inspetor, selecione Six Way Smoke Lit no menu suspenso Tipo de material.

- Defina o Lightmap dos eixos positivo e negativo no contexto de saída com os mapas que você importou.
- Teste com diferentes condições de iluminação.
Para saber mais sobre o VFX Graph em geral, visite nosso site e leia nosso e-book O guia definitivo para criar efeitos visuais avançados no Unity.
Para as próximas iterações sobre iluminação de 6 vias, nos concentraremos na integração do Shader Graph e no suporte ao Universal Render Pipeline (URP). Também temos ideias para eliminar algumas limitações inerentes da técnica (planicidade revelada ao receber sombras, mapas de luz locais para uma partícula e não levando em consideração vizinhos oclusivos, e muito mais).
Também estamos trabalhando para adicionar a saída de névoa volumétrica ao gráfico VFX, permitindo que efeitos visuais gerem névoa volumétrica. Isso permite aumentar ainda mais os efeitos de fumaça combinando esse recurso com iluminação de 6 vias. Já está disponível em Alpha em 2023.1.a25.
E, claro, estamos buscando simulação, reprodução e renderização de fluidos volumétricos reais. Tudo isso lhe dará uma paleta completa de técnicas para renderizar efeitos de fumaça bonitos e realistas com base em suas plataformas de destino e orçamento.
Compartilhe seu feedback conosco ou faça perguntas através do nosso tópico dedicado no fórum Unity. Para propor novos recursos e votar nos próximos recursos em consideração, confira nosso roteiro de renderização pública.
