Nuvens volumétricas e efeitos climáticos em jogos modernos
Por Oleg Sidorkin, CTO e cofundador da Cinevva

Há algumas semanas, escrevi sobre as técnicas de renderização realmente usadas nos jogos AAA modernos. Uma área que abordei superficialmente foi o céu e o clima, porque ela merece uma lista própria. Nuvens, neblina, chuva e neve são os sistemas que transformam uma demonstração de terreno em um lugar. Eles também compartilham mais código do que pode parecer. Nuvens volumétricas, neblina rasteira e raios crepusculares usam todos o mesmo ray marching. Estradas molhadas, acúmulo de neve e rastros de pegadas usam todos o mesmo truque de deslocamento combinado com PBR. O vento é um único vetor de direção lido por tudo na cena.
Este é um passeio curto e opinativo por como os maiores estúdios criam esses sistemas em 2026, com os artigos e as palestras sobre engines por trás de cada parte.
1. Céu e atmosfera com base física
A dispersão atmosférica é a base. A cor do céu, a névoa no horizonte, a forma como montanhas distantes ficam azuis e o laranja do pôr do sol vêm todos da dispersão da luz pelo ar. Engines modernas calculam isso a partir da física: dispersão de Rayleigh para o azul, dispersão de Mie para a névoa ao redor do sol e absorção pelo ozônio para o violeta profundo no zênite.
O método original de Bruneton, de 2008, pré-calculava tudo em tabelas de consulta 4D, o que limitava a variação dinâmica da hora do dia e acrescentava artefatos de LUT quando o sol estava baixo. A atualização de Sébastien Hillaire, de 2020, usada pelo componente Sky Atmosphere da UE5, substitui a LUT de alta dimensionalidade por algumas texturas 2D e uma aproximação de dispersão múltipla atualizada a cada quadro. Ela funciona tanto em celulares quanto em PCs de alto desempenho.

Leituras aprofundadas:
- Hillaire, Uma técnica escalável e pronta para produção de renderização de céu e atmosfera (EGSR 2020, o padrão moderno, usado na UE5).
- Bruneton e Neyret, Dispersão atmosférica pré-calculada (EGSR 2008, a abordagem original com LUT).
- Bruneton, Dispersão atmosférica pré-calculada: uma nova implementação (referência de código aberto, com suporte a ozônio e múltiplos planetas).
- Epic Games, Componente Sky Atmosphere (documentação da UE5).
2. Nuvens volumétricas com ruído Perlin-Worley
A técnica que serve de base para as nuvens em jogos modernos surgiu na palestra de Andrew Schneider sobre Horizon Zero Dawn, em 2015. Nuvens não são malhas. Elas são uma função de densidade 3D definida por camadas de ruído: uma combinação de Perlin-Worley de baixa frequência produz a forma geral da nuvem, enquanto um ruído Worley de frequência mais alta corrói a silhueta, criando bordas esfiapadas. Um mapa climático — uma textura 2D amostrada pelas coordenadas XZ do mundo — controla a cobertura, o tipo de nuvem e a precipitação por região. Um gradiente baseado na altura combina os perfis de cúmulos, estratos e cirros de acordo com a altitude.
O renderizador percorre um raio da câmera através do volume da nuvem, acumulando densidade e dispersão. A iteração "Nubis", de 2017, acrescentou criação e animação em escala regional, e a implementação original para PS4 renderizava o céu inteiro em cerca de 2 ms. A maioria dos estúdios que lança jogos com nuvens volumétricas hoje ainda deriva seu trabalho desse artigo.

Leituras aprofundadas:
- Schneider, As paisagens de nuvens volumétricas em tempo real de Horizon Zero Dawn (SIGGRAPH 2015, a referência canônica).
- Schneider, Nubis: criação de paisagens de nuvens volumétricas em tempo real com a Decima Engine (SIGGRAPH 2017, a continuação em escala regional).
- Hillaire, Renderização de céu, atmosfera e nuvens com base física no Frostbite (SIGGRAPH 2016, a versão do Frostbite).
- Häggström, Renderização em tempo real de nuvens volumétricas (uma tese clara e acessível, com o código completo dos shaders).
3. Nuvens de voxels e Nubis³
A evolução do Nubis, de 2023, abandonou completamente a representação de formas em 2,5D em favor de voxels 3D reais. Cada voxel armazena diretamente a densidade da nuvem, permitindo que artistas esculpam e animem suas formas da mesma maneira que esculpem terrenos. O custo de migrar para uma representação mais densa é compensado pela aceleração do ray marching por meio de campos de distância com sinal compactados e pelo aumento inteligente da resolução de dados esparsos de voxels.
O resultado é o tipo de paisagem de nuvens pela qual você pode voar por dentro sem que os truques subjacentes se desfaçam diante dos seus olhos. É um exagero para a maioria dos estúdios, mas é nessa direção que o segmento de ponta está avançando.

Leituras aprofundadas:
- Schneider, Nubis³: métodos (e loucuras) para modelar e renderizar nuvens imersivas baseadas em voxels em tempo real (SIGGRAPH 2023, a palestra sobre nuvens de voxels).
- Schneider, Nubis, evoluído (SIGGRAPH 2022, a ponte entre 2,5D e 3D completo).
- Schneider, Volumetria e efeitos visuais em tempo real (site pessoal de Andrew, com notas de cursos e análises detalhadas).
4. Renderização de nuvens em camadas e fundos 2D
Nem todo estúdio pode arcar com nuvens totalmente volumétricas, e nem todo ângulo de câmera precisa delas. Muitos jogos combinam técnicas: cirros em grande altitude renderizados como uma camada 2D em movimento, cúmulos em altitude média como volumes percorridos por raios e estratos em baixa altitude como uma camada fina de meio participante. O horizonte costuma usar um cubemap de céu pré-calculado, ao qual a etapa volumétrica se mescla após uma distância de transição.
É essa divisão em camadas que mantém o custo das nuvens sob controle. Um único tipo de nuvem na qualidade máxima pode consumir de 4 a 6 ms; usar qualidades diferentes para camadas em altitudes distintas pode preservar a mesma aparência pela metade do custo.

Leituras aprofundadas:
- Vos, As paisagens de nuvens volumétricas em tempo real de Horizon Zero Dawn (vídeo da GDC 2016; a análise das camadas está na segunda metade).
- Bauer, Criando o mundo atmosférico de Red Dead Redemption 2 (SIGGRAPH 2019, o pipeline combinado de céu, nuvens e volumetria de RDR2).
- Hillaire, Nuvens volumétricas e mega partículas na REDengine 4 (GDC 2025, o pipeline de nuvens de Cyberpunk 2077).
5. Neblina volumétrica com grades de froxels
A neblina é um campo 3D, não um efeito de tela 2D. A abordagem moderna padrão é a grade de froxels: uma textura 3D alinhada ao frustum de visão da câmera, em que cada célula ("froxel" = frustum + voxel) armazena a densidade e a cor iluminada. Um compute shader injeta na grade a dispersão proveniente de cada fonte de luz, acumula a extinção ao longo do raio de visão e aplica o resultado em uma passagem de tela cheia.
É isso que produz feixes de luz atravessando janelas, neblina colorida ao redor de luzes pontuais e volumes visíveis ao redor de explosões. Esse também é o mecanismo subjacente da "perspectiva atmosférica", que faz objetos distantes desaparecerem gradualmente no ar. A técnica foi introduzida por Bart Wronski para Assassin's Creed 4 e padronizada por Sébastien Hillaire no Frostbite.

Leituras aprofundadas:
- Wronski, Neblina volumétrica: uma solução unificada de dispersão atmosférica baseada em compute shader (SIGGRAPH 2014, o artigo original sobre grades de froxels).
- Hillaire, Renderização volumétrica unificada e com base física no Frostbite (SIGGRAPH 2015, a implementação pronta para produção).
- Kovalovs, Efeitos volumétricos de The Last of Us Part Two (SIGGRAPH 2020, com observações sobre jitter temporal e composição com correção de profundidade).
- Wright et al., Lumen: iluminação global em tempo real na Unreal Engine 5 (SIGGRAPH 2022, inclui a interação do Lumen com a neblina volumétrica).
6. Raios divinos e feixes crepusculares
Raios de sol visíveis no ar enevoado não são um efeito separado. Eles surgem do mesmo sistema de neblina, desde que tanto a densidade da neblina quanto o mapa de sombras estejam disponíveis para o mesmo compute shader. Quando o shader injeta luz em um froxel, ele amostra o mapa de sombras na posição desse froxel no mundo. As células na sombra permanecem escuras, enquanto as iluminadas recebem a cor do sol. Ao percorrer o resultado com o raio da câmera, as células claras formam feixes contínuos.
Existem variantes mais baratas em espaço de tela — desfoque radial partindo da posição do sol em direção ao buffer de profundidade —, e elas ainda são a escolha certa para dispositivos móveis ou hardware de baixo desempenho. Elas não funcionam quando o sol está fora da tela, mas custam quase nada.

Leituras aprofundadas:
- Mitchell, Dispersão volumétrica da luz como pós-processamento (GPU Gems 3, a abordagem de desfoque radial em espaço de tela).
- Engelhardt e Dachsbacher, Amostragem epipolar para sombras e raios crepusculares em meios participantes (I3D 2010, a técnica mais precisa para GPU).
- Vos, Efeitos de luz volumétrica em Killzone: Shadow Fall (SIGGRAPH 2014, a versão de produção com integração de sombras).
7. Raios e eventos climáticos estocásticos
Um relâmpago é um efeito de um único quadro com duas partes: a malha do raio e a resposta de tonemapping e iluminação de toda a cena. O raio em si costuma ser uma malha procedural de billboards, construída com um algoritmo recursivo de subdivisão de segmentos de linha, com deslocamentos aleatórios para criar irregularidade e afunilamento em direção ao solo. Algumas engines o renderizam como um clarão aditivo em espaço de tela; outras, como uma geometria emissiva totalmente iluminada que projeta luz sobre o mundo por meio da injeção de uma luz pontual durante um único quadro.
A parte interessante é todo o resto: as bases das nuvens são iluminadas por baixo, o chão clareia por dois quadros, a medição da exposição automática leva alguns quadros para se recuperar e um som de trovão é reproduzido com atraso calculado pela distância. Quando bem executado, isso transforma um clarão de 16 ms em uma sequência de cinco segundos que faz o clima parecer algo acontecendo no mundo, e não apenas sobre ele.

Leituras aprofundadas:
- Reed e Wyvill, Simulação visual de relâmpagos (SIGGRAPH 1994, o algoritmo recursivo de raios que todos ainda usam).
- Kim e Lin, Animação rápida de relâmpagos usando uma malha adaptativa (IEEE TVCG 2007, com maior embasamento físico).
- Bauer, Criando o mundo atmosférico de Red Dead Redemption 2 (SIGGRAPH 2019, o pipeline de tempestades de RDR2, incluindo a temporização dos relâmpagos).
8. Partículas de chuva, malhas de chuva e gotas em espaço de tela
A chuva em queda nos jogos modernos raramente é composta apenas por partículas. A solução barata e convincente é usar um pequeno conjunto de texturas em movimento, esticadas sobre quadriláteros verticais ou alinhados à tela e iluminadas pelas mesmas sondas de luz do sol e do céu que todo o resto. Mais perto da câmera, partículas individuais em forma de rastros acrescentam detalhes. Na própria lente da câmera, texturas de gotas, rastros escorrendo e ondulações de impacto transmitem a sensação de que "você está dentro da tempestade".
O vento afeta a direção da chuva. O mesmo vetor de vento move o mapa climático das nuvens, inclina a grama e inclina os quadriláteros da chuva. Um único vetor para toda a cena, dezenas de sistemas consumidores. 
Para se aprofundar:
- Tatarchuk, Renderização de chuva em tempo real direcionável por artistas em ambientes urbanos (EGSR 2006, a referência clássica para chuva em camadas).
- Garg e Nayar, Renderização fotorrealista de rastros de chuva (SIGGRAPH 2006, a física da luz através das gotas de chuva).
- Wojciechowski, Chuva em Cyberpunk 2077 (GDC 2021, uma análise detalhada de uma produção moderna).
9. Superfícies molhadas, poças e ondulações
Uma chuva que não altera o chão parece falsa imediatamente. Superfícies molhadas reagem escurecendo o albedo (a água absorve a luz incidente), suavizando as normais (a película de água alisa a microsuperfície) e reduzindo a rugosidade (a água é um espelho quase perfeito em ângulos rasantes). A mudança no shader é pequena; a mudança visual é enorme.
As poças são controladas por máscaras: uma máscara baseada em altura ou pintada nos vértices define as áreas mais baixas que se enchem de água à medida que um parâmetro de “umidade” aumenta. As ondulações usam texturas de mapa de normais em flipbook, acionadas pelos impactos das gotas de chuva. As implementações realmente boas acumulam o estado de umidade ao longo do tempo, de modo que uma tempestade prolongada encharca o mundo aos poucos, enquanto uma chuva breve apenas escurece as áreas mais altas.

Para se aprofundar:
- Lagarde e de Rousiers, Migrando o Frostbite para renderização baseada em física 3.0, seção 5.5 (SIGGRAPH 2014, os ajustes clássicos de PBR para superfícies molhadas).
- Lagarde, Adotando um modelo de sombreamento baseado em física (a série original de posts com a matemática do PBR molhado).
- Cyanilux, Análise de efeitos de chuva (um passo a passo acessível no Shader Graph sobre poças, ondulações e gotas).
10. Acúmulo e deformação de neve
A neve é o problema simétrico ao da chuva: o mundo precisa se lembrar dela, não apenas recebê-la. A abordagem padrão usa uma textura de “acúmulo de neve” vista de cima, que aumenta ao longo do tempo onde quer que o céu esteja visível (calculado em relação a um mapa de profundidade ou de sombras visto de cima). O shader do terreno amostra essa máscara e mescla o material de neve nas regiões sombreadas, além de aplicar deslocamento de neve profunda nas áreas expostas.
Pegadas e marcas de pneus são renderizadas em um mapa de deformação deslizante centralizado no jogador. Conforme a câmera se move, as pegadas antigas saem da área e a textura se repete. O shader do terreno ou da neve amostra esse mapa de deformação e empurra os vértices para baixo onde houver registros. A neve de Battlefield 5 faz isso com tesselação por hardware; abordagens mais baratas usam uma malha de terreno de alta densidade apenas com deslocamento de vértices.

Para se aprofundar:
- Barré-Brisebois, Experiência prática com Battlefield 5: como os pequenos detalhes importam (o artigo de produção sobre a neve do Frostbite).
- St-Amour, Deformação de neve em tempo real (uma tese com todos os detalhes de implementação na GPU).
- Andersson, Renderização de terrenos no Frostbite usando splatting procedural em shaders (a base do sistema de splatting sobre a qual funciona o acúmulo de neve).
11. Vento como sistema global
O vento não é um efeito de partículas. Em engines de produção, ele é um único vetor global (às vezes, um campo 3D de baixa resolução) que todos os sistemas dinâmicos leem em seus shaders de vértice. Folhas de grama se curvam, galhos balançam, tecidos tremulam, folhas são levadas, a chuva se inclina, a fumaça é transportada e os mapas meteorológicos das nuvens se deslocam. Um uniforme atualizado por frame, dezenas de consumidores.
A versão mais sofisticada é uma “grade de vento” que armazena direção e intensidade amostradas pela posição no mundo, permitindo tempestades com rajadas localizadas, vales protegidos e rastros de turbulência atrás de edifícios. A vegetação também costuma receber um deslocamento por vértice gravado durante a autoria, para que árvores idênticas não balancem em perfeita sincronia. O resultado é um mundo que respira no mesmo ritmo.

Para se aprofundar:
- McAuley, Renderizando o mundo de Far Cry 4 (GDC 2015, inclui a grade de vento de Far Cry 4 para a vegetação).
- Habel e Wimmer, Renderização realista de paisagens em tempo real usando nuvens de billboards (mais antigo, mas a matemática do vento sobre a vegetação não mudou).
- Frostbite, A vegetação de Horizon Zero Dawn (SIGGRAPH 2017, com a arquitetura do sistema de vento).
12. Tempestades de areia, nevascas e clima denso
Condições climáticas severas formam uma categoria própria de renderização. Uma tempestade de areia é uma névoa espessa, opaca e alinhada ao solo, com forte viés direcional e névoa de distância agressiva. Uma nevasca acrescenta uma rajada de partículas próxima à câmera e reduz a visibilidade. Cinzas vulcânicas e fumaça usam a mesma arquitetura, mas com cores diferentes.
O que torna esses efeitos convincentes não são as partículas, mas o acoplamento: o sol escurece, o céu muda de tonalidade, a gradação de cores do pós-processamento se altera, o áudio ambiente é trocado, os sons de passos mudam e a voz do jogador, caso exista, fica abafada. O renderizador é o mensageiro; a imersão vem de todos os sistemas do jogo reagindo ao mesmo tempo.

Para se aprofundar:
- Burley, O céu e a atmosfera em tempo real de Uncharted: The Lost Legacy (GDC 2018, com observações sobre a composição de clima denso).
- Khalifa, Efeitos climáticos atmosféricos em Forza Horizon 5 (GDC 2022, clima moderno em mundo aberto).
- Karis, A tecnologia por trás da demonstração “Lumen in the Land of Nanite” da Unreal Engine 5 (SIGGRAPH 2021, a pilha volumétrica da cena de poeira na caverna).
13. Hora do dia e céus dinâmicos
A passagem do tempo em tempo real é o multiplicador que faz valer a pena lançar todos os outros sistemas desta lista. A direção e a cor do sol são atualizadas ao longo de um ciclo de 24 minutos ou 24 horas. A LUT da atmosfera é atualizada conforme o ângulo do sol. A iluminação das nuvens é recalculada a cada frame. As cascatas de sombras são redirecionadas. As sondas de reflexão são atualizadas. A cor ambiente muda. A exposição do pós-processamento se adapta.
Fazer isso sem artefatos visíveis é, em grande parte, uma questão de cache de texturas e estabilidade temporal. Técnicas rápidas pré-calculam o céu em ângulos fixos do sol e fazem a interpolação; técnicas mais lentas recalculam tudo a cada frame. O modelo atmosférico de Hillaire de 2020 é rápido o bastante para ser recalculado, motivo pelo qual faz parte da UE5. O mapa meteorológico das nuvens se desloca com o vento, fazendo a cobertura mudar naturalmente sem que ninguém precise criar keyframes.

Para se aprofundar:
- Hillaire, Uma técnica escalável e pronta para produção de renderização do céu e da atmosfera (EGSR 2020, com a discussão sobre passagem dinâmica do tempo).
- Pesce, Renderização do céu em tempo real: técnicas e compromissos (capítulo de Ray Tracing Gems II, uma análise moderna).
- Bauer, Criando o mundo atmosférico de Red Dead Redemption 2 (SIGGRAPH 2019, com o pipeline de 24 horas).
14. A máquina de estados climáticos
Por baixo de tudo isso existe uma pequena máquina de estados. A maioria dos jogos é lançada com algo entre 4 e 12 estados climáticos (céu limpo, parcialmente nublado, encoberto, chuva leve, chuva forte, tempestade, neblina, neve, nevasca, tempestade de areia), cada um definido por um conjunto de parâmetros: cobertura e tipo de nuvens, velocidade e direção do vento, tipo e intensidade da precipitação, tonalidades da cor ambiente, perfil de áudio e gradação de pós-processamento.
As transições são interpolações lineares entre conjuntos de parâmetros ao longo de 30 a 120 segundos. A transição não é um caso especial: são apenas dois estados sendo interpolados, enquanto cada subsistema de renderização lê os valores atuais dos parâmetros naquele frame. O clima pode ser roteirizado (uma cena precisa de uma tempestade), baseado em seed (determinístico por região e por dia dentro do jogo, para que dois jogadores no mesmo mundo vejam o mesmo clima) ou totalmente criado em uma grade de regiões. Os pipelines mais limpos tratam os três como diferentes agendadores escrevendo no mesmo buffer de parâmetros.

Para se aprofundar:
- Bauer, Criando o mundo atmosférico de Red Dead Redemption 2 (SIGGRAPH 2019, com o pipeline de estados climáticos).
- Khalifa, Efeitos climáticos atmosféricos em Forza Horizon 5 (GDC 2022, com a abordagem de mesclagem de parâmetros).
- Schneider, As paisagens de nuvens volumétricas em tempo real de Horizon Zero Dawn (SIGGRAPH 2015, com a evolução das nuvens controlada por mapas meteorológicos).
15. Os momentos cinematográficos
Toda essa pilha existe para criar alguns momentos marcantes. Ficar sobre uma crista enquanto uma frente de tempestade se aproxima. Observar um raio de sol atravessar uma clareira na copa das árvores. Sair de uma caverna e entrar na neve. Voar através de uma nuvem cúmulo e ver a luz em seu interior.
São esses os momentos dos quais os jogadores tiram capturas de tela. Também são os momentos em que todos os sistemas acima precisam funcionar ao mesmo tempo: nuvens volumétricas, dispersão atmosférica, neblina integrada às sombras, PBR molhado, vento sobre a vegetação, gradação de cores conforme a hora do dia e uma transição entre estados climáticos, tudo compondo um único frame. Se qualquer um deles estiver errado, a magia se desfaz.

O que isso significa para o navegador
A maioria dessas técnicas pode ser adaptada diretamente para WebGPU. Já lançamos neblina atmosférica básica, mesclagem de skyboxes equiretangulares e névoa de distância em screen space na engine de mundo aberto para navegador. As partes mais difíceis — nuvens volumétricas completas, neblina em grade de froxels, PBR molhado com poças dinâmicas e mapas de deformação de neve — são o próximo passo óbvio, agora que o pipeline de terrenos está estável. A amostragem por fragmento da cor da neblina a partir do skybox no Spike 24 é uma peça desse quebra-cabeça. O próximo passo é um ray marcher de nuvens em compute shader alimentando a mesma LUT atmosférica.
A boa notícia é que o patamar mínimo de hardware para navegadores já é alto o suficiente. Compute no WebGPU, texturas 3D, despacho indireto e consultas de timestamp estão todos disponíveis. A atmosfera de Hillaire de 2020 já foi portada várias vezes para WebGL. O Nubis de Schneider possui implementações de referência de código aberto em GLSL que podem ser traduzidas para WGSL com alterações mecânicas. Já não existe um motivo relacionado à renderização para que um jogo de navegador não possa ter o mesmo céu que um jogo de console. Restam apenas motivos de engenharia — e motivos de engenharia são do tipo que gostamos.
Leituras adicionais sobre toda a pilha
Se você quiser uma única fonte que reúna tudo isso, o acervo “Advances in Real-Time Rendering in Games” da SIGGRAPH (advances.realtimerendering.com) contém as apresentações de referência sobre clima e atmosfera desde 2014. Para análises de produção sobre como jogos específicos renderizam seus céus e efeitos climáticos, os artigos de análise de GPU de Adrian Courrèges incluem descrições detalhadas, frame a frame, de GTA V, Horizon Zero Dawn e Doom Eternal. Especificamente para a matemática do céu e da atmosfera, o capítulo sobre renderização de volumes do scratchapixel.com é a introdução mais acessível, e o repositório da implementação de código aberto de Hillaire é a referência com qualidade de produção.