Skip to content

Nuvens volumétricas e efeitos climáticos em jogos modernos

Por Oleg Sidorkin, CTO e cofundador da Cinevva

Cena AAA estilizada com imponentes nuvens volumétricas de tempestade, raios, cortinas de chuva e uma estrada de pedra molhada refletindo o céu

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.

Céu com base física durante a hora dourada, com um gradiente suave do laranja ao azul sobre a silhueta de uma montanha distante

Leituras aprofundadas:

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.

Forma de uma nuvem 3D decomposta em padrões sobrepostos de ruído Perlin e Worley, mostrando como os detalhes corroem a silhueta

Leituras aprofundadas:

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.

Uma nuvem cúmulo decomposta em uma grade 3D de voxels, com bordas esfiapadas e suavizadas se mesclando ao interior blocado

Leituras aprofundadas:

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.

Céu ao pôr do sol dividido em três camadas de nuvens: mechas altas de cirros, tufos médios de cúmulos e névoa baixa de estratos perto do horizonte

Leituras aprofundadas:

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.

Frustum da câmera visualizado como uma grade 3D de froxels, com células menores perto da câmera e maiores à distância, contendo partículas de neblina

Leituras aprofundadas:

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.

Floresta ao amanhecer com raios de sol atravessando troncos de árvores e a neblina rasteira, formando feixes crepusculares bem definidos

Leituras aprofundadas:

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.

Relâmpago ramificado atingindo o solo a partir de uma nuvem de tempestade ao entardecer, iluminando a base das nuvens e a silhueta de um pequeno vilarejo

Leituras aprofundadas:

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. Tempestade noturna intensa, com cortinas de chuva iluminadas por faróis distantes e ondulações em uma estrada molhada

Para se aprofundar:

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.

Rua de paralelepípedos molhada à noite, com poças rasas refletindo letreiros de neon e anéis de ondulação causados pelo impacto das gotas de chuva

Para se aprofundar:

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.

Paisagem nevada estilizada, com pegadas recentes, montes de neve acumulados contra as rochas, flocos caindo e montanhas distantes envoltas em névoa

Para se aprofundar:

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.

Vento forte inclinando a grama e as árvores para o lado, com folhas rodopiando em primeiro plano sob nuvens de tempestade

Para se aprofundar:

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.

Uma parede de poeira e areia alaranjada avançando sobre uma planície desértica, com um céu carregado acima e azul límpido atrás

Para se aprofundar:

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.

Três faixas verticais sobre a mesma paisagem: amanhecer rosado, meio-dia azul e pôr do sol vermelho, todas compartilhando a mesma silhueta de colina

Para se aprofundar:

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.

A mesma cena lado a lado, sob sol e céu limpo à esquerda e chuva de tempestade à direita, com superfícies molhadas e reluzentes

Para se aprofundar:

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.

Vista de cima de um mar de nuvens, com um único pico de montanha emergindo, os topos das nuvens iluminados pelo sol e vales sombreados abaixo

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.