Skip to content

Modern oyunlarda hacimsel bulutlar ve hava durumu efektleri

Yazan: Oleg Sidorkin, Cinevva CTO'su ve Kurucu Ortağı

Yükselen hacimsel fırtına bulutları, şimşekler, yağmur perdeleri ve gökyüzünü yansıtan ıslak taş yol içeren stilize bir AAA sahnesi

Birkaç hafta önce modern AAA oyunlarda gerçekten kullanılan render teknikleri hakkında yazmıştım. Gökyüzü ve hava durumu konusunu kısa geçtim, çünkü kendi listesini hak ediyor. Bulutlar, sis, yağmur ve kar, bir arazi demosunu gerçek bir mekâna dönüştüren sistemlerdir. Ayrıca göründüğünden çok daha fazla ortak kod kullanırlar. Hacimsel bulutlar, yer sisi ve tanrısal ışınların hepsi aynı ışın yürütme tekniğine dayanır. Islak yollar, kar birikimi ve ayak izi izlerinin hepsi aynı yer değiştirme ve PBR hilesini kullanır. Rüzgâr ise sahnedeki her şeyin kullandığı tek bir yön vektörüdür.

İşte büyük stüdyoların 2026'da bu sistemleri nasıl geliştirdiğine dair, her parçanın arkasındaki makaleler ve oyun motoru sunumlarıyla birlikte kısa ve öznel bir tur.

1. Fizik tabanlı gökyüzü ve atmosfer

Atmosferik saçılma işin temelidir. Gökyüzünün rengi, ufuktaki pus, uzaktaki dağların maviye dönüşmesi ve gün batımının turuncusu; bunların tümü ışığın havada saçılmasından kaynaklanır. Modern oyun motorları bunu fizik kurallarına göre hesaplar: mavi renk için Rayleigh saçılması, güneş çevresindeki pus için Mie saçılması ve zenitteki koyu mor için ozon soğurumu.

Bruneton'ın 2008'de geliştirdiği özgün yöntem, her şeyi 4B arama tablolarına önceden işliyordu; bu da dinamik günün saati sistemlerini sınırlıyor ve güneşin alçak açılarında LUT yapaylıklarına yol açıyordu. UE5'in Sky Atmosphere bileşeninde kullanılan Sébastien Hillaire'in 2020 tarihli güncellemesi, yüksek boyutlu LUT'yi birkaç 2B doku ve kare başına güncellenen bir çoklu saçılma yaklaşımıyla değiştiriyor. Telefondan üst düzey PC'ye kadar her yerde çalışıyor.

Uzaktaki dağ silüeti üzerinde turuncudan maviye yumuşak bir geçiş sunan, altın saatte fizik tabanlı gökyüzü

Derinlemesine kaynaklar:

2. Perlin-Worley gürültüsüyle hacimsel bulutlar

Modern oyunlardaki temel bulut tekniği, Andrew Schneider'in 2015 tarihli Horizon Zero Dawn sunumuyla başladı. Bulutlar mesh değildir. Katmanlı gürültüyle tanımlanan bir 3B yoğunluk fonksiyonudur: düşük frekanslı bir Perlin-Worley karışımı bulutun genel şeklini oluştururken daha yüksek frekanslı Worley gürültüsü, silüeti aşındırarak ince ve tüylü kenarlara dönüştürür. Bir hava durumu haritası (dünya XZ koordinatlarıyla örneklenen 2B bir doku), her bölgenin bulut örtüsünü, bulut türünü ve yağışını kontrol eder. Yüksekliğe dayalı bir gradyan ise irtifaya göre kümülüs, stratus ve sirüs profilleri arasında geçiş yapar.

Render sistemi, kameradan bulut hacminin içine doğru bir ışın yürüterek yoğunluk ve saçılmayı biriktirir. 2017'deki "Nubis" iterasyonu, bölgesel ölçekte içerik oluşturma ve animasyon özellikleri ekledi; özgün PS4 uygulaması ise tüm gökyüzünü yaklaşık 2 ms'de işliyordu. Günümüzde hacimsel bulut kullanan çoğu stüdyonun tekniğinin kökeni hâlâ bu makaleye dayanır.

Detayların silüeti nasıl aşındırdığını gösteren, üst üste bindirilmiş Perlin ve Worley gürültü desenlerine ayrılmış 3B bir bulut şekli

Derinlemesine kaynaklar:

3. Voksel bulutlar ve Nubis³

Nubis'in 2023'teki evrimi, gerçek 3B vokseller lehine 2.5B şekil temsilini tamamen terk etti. Her voksel bulut yoğunluğunu doğrudan depoluyor; böylece sanatçılar bulut şekillerini araziyi yontar gibi biçimlendirip canlandırabiliyor. Daha yoğun bir temsile geçmenin maliyeti, sıkıştırılmış işaretli uzaklık alanlarıyla ışın yürütmenin hızlandırılması ve seyrek voksel verilerinin akıllıca yüksek çözünürlüğe çıkarılması sayesinde telafi ediliyor.

Sonuç olarak, temeldeki hilelerin dağıldığını görmeden içinden uçabileceğiniz türde bulut manzaraları ortaya çıkıyor. Çoğu stüdyo için gereğinden fazla olsa da üst düzey teknolojinin ilerlediği yön bu.

Kalın iç kısmı yumuşatılmış ince kenarlarla harmanlanan, 3B voksel ızgarasına ayrılmış bir kümülüs bulutu

Derinlemesine kaynaklar:

4. Katmanlı bulut render'ı ve 2B arka planlar

Her stüdyonun tam hacimsel bulutlara ayıracak bütçesi yoktur ve her kamera açısı da buna ihtiyaç duymaz. Birçok oyun farklı teknikleri birleştirir: yüksek irtifadaki sirüsler kayan bir 2B katman olarak, orta irtifadaki kümülüsler hacimsel ışınlarla, alçak irtifadaki stratuslar ise ince bir katılımcı ortam tabakası olarak işlenir. Ufukta genellikle, hacimsel geçişin belirli bir solma mesafesinden sonra harmanlandığı, önceden işlenmiş bir gökyüzü küp haritası kullanılır.

Bulut bütçesini makul tutan şey bu katmanlamadır. Tek bir bulut türü tam kalitede 4-6 ms tüketebilir; farklı bulut irtifalarında farklı kalite seviyelerini katmanlamak, aynı görünümü yarı maliyetle koruyabilir.

Üç bulut katmanına ayrılmış gün batımı gökyüzü: yüksek sirüs tutamları, orta irtifada kümülüs kümeleri ve ufka yakın alçak stratus pusu

Derinlemesine kaynaklar:

5. Froxel ızgaralarıyla hacimsel sis

Sis, 2B bir ekran efekti değil, 3B bir alandır. Standart modern yaklaşım froxel ızgarasıdır: kameranın görüş frustum'una hizalanmış, her hücresinde ("froxel" = frustum + voxel) yoğunluk ve aydınlatılmış renk depolanan 3B bir doku. Bir compute shader, tüm ışık kaynaklarından gelen saçılmayı ızgaraya enjekte eder, görüş ışını boyunca sönümü biriktirir ve sonucu tam ekran geçişi olarak uygular.

Pencerelerden süzülen ışık huzmelerini, noktasal ışıkların çevresindeki renkli sisi ve patlamaların etrafındaki görünür hacimleri oluşturan şey budur. Aynı zamanda uzaktaki nesneleri havayla bütünleştirerek solduran "atmosferik perspektifin" altında yatan mekanizmadır. Teknik, Assassin's Creed 4 için Bart Wronski tarafından geliştirildi ve Frostbite'ta Sébastien Hillaire tarafından standartlaştırıldı.

Kameraya yakın küçük, uzakta daha büyük hücrelere ve içlerinde sis parçacıklarına sahip 3B froxel ızgarası olarak görselleştirilmiş kamera frustum'u

Derinlemesine kaynaklar:

6. Tanrısal ışınlar ve alacakaranlık huzmeleri

Puslu havada görülebilen güneş ışınları ayrı bir efekt değildir. Sis yoğunluğu ve gölge haritası aynı compute shader tarafından kullanılabildiği sürece aynı sis sisteminin doğal bir sonucu olarak ortaya çıkarlar. Shader bir froxel'e ışık enjekte ettiğinde, o froxel'in dünya konumundaki gölge haritasını örnekler. Gölgedeki hücreler karanlık kalırken aydınlıktaki hücreler güneşin rengini alır. Kamera ışını sonuç boyunca yürütüldüğünde parlak hücreler kesintisiz ışık huzmeleri oluşturur.

Daha ucuz ekran uzayı çeşitleri de vardır (güneş konumundan derinlik tamponuna doğru radyal bulanıklaştırma) ve mobil ya da düşük seviye donanımlarda hâlâ doğru tercihtir. Ekran dışındaki güneş konumlarını yakalayamazlar ancak maliyetleri yok denecek kadar azdır.

Ağaç gövdeleri ve yer sisi arasından geçen güneş ışınlarının belirgin tanrısal ışık huzmeleri oluşturduğu şafak vakti ormanı

Derinlemesine kaynaklar:

7. Şimşek ve stokastik hava olayları

Şimşek, iki parçadan oluşan tek karelik bir efekttir: yıldırım mesh'i ile sahne genelindeki ton eşleme ve aydınlatma tepkisi. Yıldırımın kendisi genellikle özyinelemeli çizgi parçası bölme algoritmasıyla oluşturulan, kaotik görünmesi için konumları saptırılmış ve yere doğru incelen prosedürel bir billboard mesh'idir. Bazı oyun motorları bunu ekran uzayında eklemeli bir parlama olarak işlerken diğerleri, dünyaya tek karelik bir noktasal ışık enjeksiyonu aracılığıyla ışık saçan, tamamen aydınlatılmış emissive geometri olarak işler.

Asıl ilginç kısım diğer her şeydir: bulutların altı aşağıdan aydınlanır, zemin iki kare boyunca parlar, otomatik pozlama ölçümü birkaç karede toparlanır ve mesafeye bağlı olarak gecikmeli bir gök gürültüsü sesi çalınır. İyi uygulandığında bu yaklaşım, 16 ms'lik bir parlamayı beş saniyelik bir sekansa dönüştürerek hava durumunun yalnızca dünyanın üzerinde değil, dünyanın içinde gerçekleşen bir olay olduğu hissini verir.

Alacakaranlıkta bir fırtına bulutundan düşerek bulutların altını ve küçük bir köy silüetini aydınlatan çatallı yıldırım

Derinlemesine kaynaklar:

8. Yağmur parçacıkları, yağmur mesh'leri ve ekran uzayı damlaları

Modern oyunlarda yağan yağmur nadiren yalnızca parçacıklardan oluşur. Ucuz ve ikna edici çözüm; dikey ya da ekrana hizalı dörtgenler üzerine gerilmiş, sahnedeki diğer her şeyle aynı güneş ve gökyüzü probları tarafından aydınlatılan, kayan az sayıda doku kullanmaktır. Kameraya yaklaştıkça bağımsız çizgi parçacıkları ayrıntı katar. Kamera merceğinin üzerindeyse damlacık dokuları, kayan izler ve çarpma dalgaları, "fırtınanın içindesiniz" hissini güçlendirir.

Rüzgâr, yağmurun yönünü etkiler. Aynı rüzgâr vektörü bulutların hava durumu haritasını iter, çimleri büker ve yağmur dörtgenlerini eğer. Sahne genelinde tek bir vektör, onlarca tüketici. Uzak farların aydınlattığı sağanak yağmur perdeleri ve ıslak yoldaki halkalarla, gece yaşanan şiddetli yağmur fırtınası

Derinlemesine kaynaklar:

9. Islak yüzeyler, su birikintileri ve halkalar

Zemini değiştirmeyen yağmur hemen yapay görünür. Islak yüzeyler; albedolarını koyulaştırarak (su, gelen ışığı emer), normal haritalarını düzleştirerek (su tabakası mikro yüzeyi pürüzsüzleştirir) ve pürüzlülüklerini azaltarak (su, eğik açılarda neredeyse kusursuz bir aynadır) tepki verir. Gölgelendiricideki değişiklik küçük, görsel değişiklik ise çok büyüktür.

Su birikintileri maskelerle yönlendirilir: yüksekliğe dayalı veya köşe noktalarına boyanmış bir maske, "ıslaklık" parametresi yükseldikçe suyla dolacak alçak noktaları tanımlar. Halkalar, yağmur damlalarının çarpmasıyla tetiklenen flipbook normal haritası dokularıdır. Gerçekten iyi uygulamalarda ıslaklık durumu zaman içinde birikir; böylece uzun bir yağmur fırtınası dünyayı yavaşça sırılsıklam ederken kısa bir sağanak yalnızca yüksek noktaları koyulaştırır.

Neon tabelaları yansıtan sığ su birikintileri ve yağmur damlalarının oluşturduğu halkalarla, gece vakti ıslak bir arnavut kaldırımlı sokak

Derinlemesine kaynaklar:

10. Kar birikimi ve deformasyonu

Kar, yağmurun simetrik problemidir: dünya onu yalnızca almakla kalmamalı, hatırlamalıdır da. Standart yaklaşım, gökyüzünün görünür olduğu her yerde zaman içinde biriken, üstten görünüşlü bir "kar birikimi" dokusu kullanır (üstten görünüşlü bir derinlik veya gölge haritasına göre hesaplanır). Arazi gölgelendiricisi bu maskeyi örnekler ve gölgeli bölgelerde kar malzemesini, açıkta kalan alanlarda ise kar derinliğine göre yer değiştirmeyi harmanlar.

Ayak izleri ve lastik izleri, oyuncuyu merkez alan kayan bir deformasyon haritasına işlenir. Kamera hareket ettikçe eski ayak izleri kayarak görünümden çıkar ve doku döngüsel olarak sarılır. Arazi veya kar gölgelendiricisi bu deformasyon haritasını örnekler ve yazılmış noktalardaki köşe noktalarını aşağı iter. Battlefield 5'in kar sistemi bunu donanım mozaikleme ile yapar; daha düşük maliyetli yaklaşımlar yalnızca köşe noktası yer değiştirmesiyle birlikte yüksek yoğunluklu bir arazi ağı kullanır.

Taze ayak izleri, kayaların önünde birikmiş kar yığınları, yağan kar taneleri ve puslu uzak dağlarla stilize edilmiş karlı bir manzara

Derinlemesine kaynaklar:

11. Küresel bir sistem olarak rüzgâr

Rüzgâr bir parçacık efekti değildir. Prodüksiyon motorlarında, her dinamik sistemin köşe noktası gölgelendiricisinden okuduğu tek bir küresel vektördür (bazen düşük çözünürlüklü bir 3B alandır). Çimen yaprakları eğilir, ağaç dalları sallanır, kumaşlar dalgalanır, yapraklar sürüklenir, yağmur eğik yağar, duman taşınır ve bulutların hava durumu haritaları kayar. Kare başına güncellenen tek bir uniform değer, onlarca tüketici.

Daha gelişmiş sürüm, dünya konumuna göre örneklenen yön ve şiddeti depolayan bir "rüzgâr ızgarasıdır"; bu sayede yerel rüzgâr darbeleri, korunaklı vadiler ve binaların ardındaki iz akımları bulunan fırtınalar oluşturulabilir. Ayrıca aynı ağaçların eşzamanlı sallanmaması için bitki örtüsüne genellikle içerik üretimi sırasında köşe noktası başına bir ofset işlenir. Sonuç, aynı ritimde nefes alan bir dünyadır.

Fırtınalı bulutların altında, ön planda yapraklar girdaplar oluştururken çimenleri ve ağaçları yana doğru savuran güçlü rüzgâr

Derinlemesine kaynaklar:

12. Kum fırtınaları, tipiler ve yoğun hava olayları

Şiddetli hava olayları başlı başına bir işleme kategorisidir. Kum fırtınası; güçlü bir yönsel eğilime ve yoğun uzaklık sisine sahip, kalın, opak ve zemine hizalı bir sistir. Tipi, buna kameraya yakın bir parçacık hücumu ve azalan görüş mesafesi ekler. Volkanik kül ve duman da farklı renklerle aynı mimariyi kullanır.

Bunları inandırıcı kılan parçacıklar değil, bağlantıdır: güneş kararır, gökyüzünün tonu değişir, son işleme renk derecelendirmesi kayar, ortam sesleri değiştirilir, ayak sesi efektleri farklılaşır ve oyuncunun sesi varsa boğuklaşır. İşleyici yalnızca habercidir; sürükleyicilik, oyundaki her sistemin aynı anda tepki vermesinden doğar.

Üstünde morarmış bir gökyüzü ve arkasında açık mavi gök bulunan, çöl ovası boyunca ilerleyen turuncu toz ve kum duvarı

Derinlemesine kaynaklar:

13. Günün saati ve dinamik gökyüzü

Gerçek zamanlı gün döngüsü, bu listedeki diğer tüm sistemleri yayınlamaya değer kılan çarpandır. Güneşin yönü ve rengi, 24 dakikalık veya 24 saatlik bir döngü boyunca güncellenir. Atmosfer LUT'si güneş açısıyla birlikte güncellenir. Bulut aydınlatması her karede yeniden hesaplanır. Gölge kademeleri yeniden yönlendirilir. Yansıma probları yenilenir. Ortam rengi değişir. Son işleme pozlaması uyum sağlar.

Bunu görünür yapaylıklar olmadan gerçekleştirmek, büyük ölçüde doku önbellekleme ve zamansal kararlılık meselesidir. Hızlı teknikler, gökyüzünü sabit güneş açılarında önceden hesaplayıp aralarında enterpolasyon yapar; daha yavaş teknikler ise her karede yeniden hesaplar. Hillaire'in 2020 atmosfer modeli yeniden hesaplama için yeterince hızlıdır; UE5'in bunu kullanmasının nedeni de budur. Bulut hava durumu haritası rüzgârla birlikte kayar; böylece kimsenin anahtar kareler hazırlamasına gerek kalmadan bulutluluk doğal biçimde değişir.

Aynı manzara üzerinde üç dikey şerit: şafak pembesi, öğle mavisi ve gün batımı kırmızısı; tümünde aynı tepe silüeti

Derinlemesine kaynaklar:

14. Hava durumu durum makinesi

Tüm bunların altında küçük bir durum makinesi vardır. Çoğu oyun; her biri bulutluluk ve bulut türü, rüzgâr hızı ve yönü, yağış türü ve yoğunluğu, ortam rengi tonları, ses profili ve son işleme renk derecesi gibi parametrelerle tanımlanan 4 ila 12 hava durumu durumuyla (açık, parçalı bulutlu, kapalı, hafif yağmur, şiddetli yağmur, gök gürültülü fırtına, sis, kar, tipi, kum fırtınası) yayınlanır.

Geçişler, 30 ila 120 saniye boyunca parametre kümeleri arasında yapılan doğrusal enterpolasyonlardır. Geçiş özel bir durum değildir; yalnızca iki durumun doğrusal olarak harmanlanmasıdır ve her işleme alt sistemi o karedeki mevcut parametre değerlerini okur. Hava durumu betiklenebilir (bir ara sahne fırtına gerektirir), seed değeriyle üretilebilir (oyun içindeki her gün ve bölge için deterministik olur, böylece aynı dünyadaki iki oyuncu aynı hava durumunu görür) veya tamamen bir bölge ızgarası üzerinde tasarlanabilir. En temiz işlem hatları, üçünü de aynı parametre arabelleğine yazan farklı zamanlayıcılar olarak ele alır.

Aynı sahnenin yan yana görünümü: solda açık ve güneşli hava, sağda ise ıslak ve parıldayan yüzeylerle fırtınalı yağmur

Derinlemesine kaynaklar:

15. Sinematik anlar

Tüm bu sistem yığını birkaç özgün an için vardır. Bir fırtına cephesi yaklaşırken bir sırtın üzerinde durmak. Güneş ışığının ağaç örtüsündeki bir açıklığı delip geçtiğini izlemek. Bir mağaradan çıkıp kara adım atmak. Bir kümülüs bulutunun içinden uçarken içerideki ışığı görmek.

Bunlar, oyuncuların ekran görüntülerini aldığı anlardır. Aynı zamanda yukarıdaki her sistemin eşzamanlı çalışması gereken anlardır: bulut hacimleri, atmosferik saçılma, gölge entegrasyonlu sis, ıslak PBR, bitki örtüsündeki rüzgâr, günün saatine bağlı renk derecelendirmesi ve hava durumları arasındaki geçiş; bunların tümü tek karede bir araya gelir. Bunlardan birini bile yanlış yaparsanız büyü bozulur.

Güneşle aydınlanan bulut tepeleri ve aşağıdaki gölgeli vadilerle, bulut denizinin içinden yükselen tek bir dağ zirvesine yukarıdan bakış

Bunun tarayıcı için anlamı

Bu tekniklerin çoğu WebGPU'ya doğrudan uyarlanabilir. Açık dünya tarayıcı motorunda temel atmosferik sisi, eşdikdörtgensel skybox harmanlamasını ve ekran uzayında uzaklık pusunu kullanıma sunduk. Arazi işlem hattı artık kararlı olduğuna göre daha zor parçalar (tam hacimsel bulutlar, froxel ızgaralı sis, dinamik su birikintilerine sahip ıslak PBR, kar deformasyon haritaları) sıradaki bariz adımdır. Spike 24'ün skybox'tan parça başına sis rengi örneklemesi bu yapbozun bir parçasıdır. Aynı atmosfer LUT'sine veri sağlayan, compute shader tabanlı bir bulut raymarcher ise bir sonraki adımdır.

İyi haber şu ki tarayıcı donanımlarının alt sınırı artık yeterince yüksek. WebGPU compute, 3B dokular, dolaylı dispatch ve zaman damgası sorgularının tümü mevcut. Hillaire'in 2020 atmosferi birçok kez WebGL'ye taşındı. Schneider'ın Nubis sistemi, mekanik düzenlemelerle WGSL'ye çevrilebilen açık kaynaklı GLSL referans uygulamalarına sahip. Artık bir tarayıcı oyununun konsol oyunuyla aynı gökyüzüne sahip olamaması için işlemeye dayalı bir neden yok. Yalnızca mühendislik nedenleri var ve mühendislik nedenleri bizim sevdiğimiz türden.

Tüm sistem yığını hakkında ek kaynaklar

Tüm bunları bir araya getiren tek bir kaynak istiyorsanız SIGGRAPH'ın "Advances in Real-Time Rendering in Games" arşivi (advances.realtimerendering.com), 2014'e kadar uzanan temel hava durumu ve atmosfer sunumlarını içerir. Belirli oyunların gökyüzünü ve hava durumunu nasıl işlediğine dair prodüksiyon incelemeleri için Adrian Courrèges'in GPU profilleme makaleleri, GTA V, Horizon Zero Dawn ve Doom Eternal'ın ayrıntılı kare kare çözümlemelerini içerir. Özellikle gökyüzü ve atmosfer matematiği için scratchapixel.com'un hacim işleme bölümü en anlaşılır giriş kaynağıdır; Hillaire'in açık kaynaklı uygulama deposu ise prodüksiyon kalitesindeki referanstır.