Skip to content

Tarayıcı Tabanlı Açık Dünyalar için Dinamik LOD ve Akışla Arazi Üretimi

Perlin gürültülü yükseklik haritaları, prosedürel arazi üretiminin varsayılan başlangıç noktasıdır. Birkaç fBm oktavını katmanlayıp bir renk gradyanı uyguladığınızda araziyi andıran bir şey elde edersiniz. Her eğitim burada sona erer. Ancak gerçek araziler, üst üste bindirilmiş gürültü gibi görünmez. Suyun oyduğu nehir vadilerine, gerilim çatlaklarının şekillendirdiği dik yamaçlara ve milyonlarca yıllık erozyonun oluşturduğu mağara ve kemerlere sahiptirler. Ayrıca geometriyi şekillendiren aynı fiziksel süreçlerden doğan birbiriyle ilişkili dokulara da sahiptirler: düz zeminde çimen, dik yamaçlarda kaya, ağaç sınırının üzerinde kar.

Bu rehber, gürültüden sonra gelenleri ele alıyor. Fiziksel temelli üretim yöntemlerini, mağaraları ve çıkıntıları destekleyen hacimsel gösterimleri, difüzyon tabanlı sinirsel arazi sentezini ve tüm bunları bir tarayıcı sekmesinde 60 fps hızında işlemek için gereken GPU güdümlü LOD ve akış hatlarını inceliyor.

Buradaki her şey, belirli kısıtımıza yöneliktir: WebGL 2 / WebGPU üzerinde çalışan, ağ üzerinden akışla aktarılan ve içerik üreticileri tarafından düzenlenebilen çok oyunculu bir açık dünya.

Yükseklik Haritaları Neden Yeterli Değil?

Bir yükseklik haritası, her ızgara noktası için tek bir yükseklik değeri saklar. Bu, 2B bir fonksiyondur: (x, z) verildiğinde y değerini döndürür. Bu gösterim kompakt, GPU dostu ve hızlı işlenebilirdir. Ancak içerik üreticilerine açık bir dünya açısından önemli olan temel sınırlamalara sahiptir.

Mağara veya çıkıntı yoktur. Bir yükseklik haritası, tek bir noktanın iki farklı yüksekliğe sahip olduğu arazileri temsil edemez. Bu nedenle mağaralar, kemerler, uçurum çıkıntıları, tüneller ve yüzen adaların tümü olanaksızdır. Minecraft, No Man's Sky ve Deep Rock Galactic tam da bu nedenle hacimsel araziye ihtiyaç duyar.

Dikey özellikler yoktur. Yükseklik haritasındaki dikey bir uçurum yüzeyi, neredeyse sonsuz bir eğimdir; bu da aşırı doku esnemesine ve çarpışma kusurlarına yol açar. Gerçek uçurumlarda, yükseklik haritasının temsil edemediği yatay özellikler (seki ve yarıklar) bulunur.

Gürültü, gürültü gibi görünür. 8 fBm oktavı ve alan çarpıtması kullanılsa bile arazi yapay bir niteliğe sahiptir. Gerçek jeolojinin yönlü yapısından yoksundur: sırt hatları, drenaj ağları, tortu birikintileri ve tektonik kıvrımlar. Bu desenler gürültü fonksiyonlarından değil, fiziksel süreçlerden doğar.

İçerik üreticilerinin düzenlemeleri sınırlıdır. İçerik üreticileri yalnızca yükseklikleri değiştirebiliyorsa tünel kazamaz, mağara oluşturamaz veya yer altı alanları inşa edemez. İçerik üreticilerinin gerçekten şekillendirebildiği bir dünya için arazi gösteriminin eklemenin yanı sıra çıkarma işlemlerini de desteklemesi gerekir.

Çözüm, yükseklik haritalarını tamamen terk etmek değildir. Basit bir yüzeyden oluşan arazinin %90'ı için hâlâ en iyi gösterimdirler. Çözüm hibrit bir yaklaşımdır: karmaşık geometrinin gerektiği yerlerde hacimsel katmanlarla desteklenen yükseklik haritası tabanlı arazi, gerçekçi yeryüzü şekilleri için fiziksel olarak doğru üretim ve gürültünün sağlayamadığı çeşitlilik için sinirsel sentez.

Kısa Yanıt: Gerçekte Ne İnşa Ederdik?

Ayrıntılara geçmeden önce karar çerçevesini sunalım. Makalenin geri kalanı her bir parçayı açıklıyor.

Arazi gösterimi

Bir hibrit yükseklik haritası + SDF sistemi kullanın. Yükseklik haritası tüm dünyayı kapsar (ucuz, kompakt ve kendini kanıtlamıştır). SDF hacimleri yalnızca mağara, çıkıntı veya içerik üreticilerinin oyduğu özelliklerin gerektiği yerlerde bulunur (parçaların belki %5-10'u). Böylece dünyanın %90'ı yükseklik haritası maliyetinde kalırken ihtiyaç duyulan yerlerde rastgele karmaşıklıkta geometri desteklenir.

Üretim hattı

Sunucu tarafında zincirlenmiş bir süreç olarak çalıştırın:

  1. Terrain Diffusion (veya metin istemleri için MESA), bir tohumdan temel yükseklik haritasını üretir. Bu yaklaşım, gürültünün yerine gerçek yükselti verileriyle eğitilmiş, jeolojik açıdan gerçekçi yeryüzü şekillerini koyar.
  2. Analitik erozyon (akarsu gücü yasası), yükseklik haritasını milisaniyeler içinde nehir ağları ve sırt hatlarıyla iyileştirir.
  3. TerraFusion veya Geodiffussr, yükseklik haritasından birbiriyle ilişkili dokular üretir (ya da WebGL 2 geri dönüş yolu için prosedürel eğim/yükseklik kurallarını kullanın).
  4. Ekosistem simülasyonu, bitki örtüsü yoğunluk haritaları üretir.
  5. Arenite tarzı erozyon, arazinin gerektirdiği yerlerde uçurum yüzeyleri, kemerler ve mağaralar için SDF hacimleri üretir.
  6. Parçalara bölün, sıkıştırın ve CDN'e yükleyin. Ortalama parça: 2-8 KB. Hacimsel veri içeren karmaşık parça: 20-100 KB.

İçerik üreticileri; parametreleri ("daha yağışlı", "daha dağlık", "mağara ekle") ayarlayarak, amaçlarını taslak hâlinde çizerek veya fırçalar ve SDF araçlarıyla doğrudan şekillendirerek bu üretim hattıyla etkileşime girer.

LOD stratejisi

Tarayıcı özelliğiYükseklik haritası LOD'uHacimsel LODBitki örtüsü LOD'u
WebGPUHesaplama tabanlı ayıklama + dolaylı çizim kullanan GPU güdümlü dörtlü ağaç (CDLOD)Hesaplama tabanlı marching cubes + Transvoxel kullanan çok çözünürlüklü SDFDolaylı çizim kullanan ComputeInstanceCulling
WebGL 2CPU tarafında halka güncellemeleri kullanan geometri klip haritalarıÖnbelleğe alınmış, 2-3 LOD seviyesinde önceden üretilmiş ağlarCPU görüş hacmi ayıklaması, InstancedMesh

Her iki yol da takılmasız geçişler için köşe gölgelendiricisinde geometri biçim dönüşümü kullanır. Her ikisi de uzaktaki bitki örtüsü için reklam panosu temsilleri kullanır. WebGPU yolu daha hızlıdır (3,5 ms arazi bütçesi), ancak WebGL 2 yolu da uygulanabilirdir (6,5 ms).

Akış

Aşamalı yükleme: önce arazi geometrisi (<100 ms), sonra dokular (<300 ms), ardından bitki örtüsü (<1 sn) ve son olarak hacimsel veri (❤️ sn). Oyuncunun hızına göre önceden getirme. Bellek bütçesi: toplam 256 MB arazi.

Düzenleme

Yüzey şekillendirme için yükseklik haritası fırçaları (yükseltme, alçaltma, yumuşatma, aşındırma). Hacimsel düzenleme için SDF primitifleri (mağara oyma, kemer ekleme). Her ikisi de yerel olarak anında uygulanır, 100-300 ms içinde sunucuyla eşitlenir ve değişiklik güncellemeleri aracılığıyla diğer oyunculara yayınlanır.

Neyi hangi sırayla geliştirmeli?

1-2. Aylar: Geometri klip haritalarıyla yükseklik haritası arazisi. Yalnızca WebGL 2. CDN'den akış. Prosedürel eğim/yükseklik malzemeleri. Böylece arazi her tarayıcıda ekrana gelir. Üretim için gürültü + analitik erozyon kullanın (Terrain Diffusion bekleyebilir).

3-4. Aylar: Bitki örtüsü ve atmosfer. Yoğunluk haritalarından GPU örneklemeli çimenler ve ağaçlar. Gece/gündüz döngülü prosedürel gökyüzü. Atmosferik sis. Basamaklı gölge haritaları. Dünya, gerçek bir mekân gibi hissettirmeye başlar.

5-6. Aylar: İçerik üreticisi düzenlemeleri. Yükseklik haritası fırça araçları. Çok oyunculu arazi düzenlemeleri için değişiklik tabanlı eşitleme. Eş zamanlı düzenleme için uzamsal kilitleme. İçerik üreticileri dünyayı bu aşamada şekillendirmeye başlar.

7-9. Aylar: Hacimsel arazi ve WebGPU yolu. Mağaralar ve çıkıntılar için SDF katmanları. WebGPU hesaplama ile marching cubes. LOD sınırları için Transvoxel. SDF şekillendirme araçları. Bu aşama, eksiksiz içerik üretim araç setinin kilidini açar.

10-12. Aylar: Sinirsel üretim ve son rötuşlar. Temel yükseklik haritası için Terrain Diffusion veya MESA. Dokular için TerraFusion/Geodiffussr. Mikro ayrıntılar için fazör gürültüsü. Tekrarları önlemek için altıgen döşeme. Sanal dokulama. Laplasyen harmanlama. Arazi, üretim kalitesine ulaşır.

Bu sıralamayla 2 ay sonra oynanabilir, 4 ay sonra güzel, 6 ay sonra düzenlenebilir ve 12 ay sonra en ileri teknolojiye sahip bir şey ortaya çıkar.

Bu makalenin geri kalanı, her kararın ardındaki araştırmayı açıklıyor.

Yükseklik Haritalarının Ötesindeki Arazi Gösterimleri

İşaretli Uzaklık Alanları (SDF'ler)

Bir işaretli uzaklık alanı, 3B uzaydaki her noktada en yakın yüzeye olan uzaklığı saklar. Pozitif değerler dışarıyı, negatif değerler içeriyi temsil eder ve sıfır geçişi yüzeyin kendisidir. SDF'ler mağaralar, kemerler ve yüzen geometriler dâhil olmak üzere rastgele karmaşıklıkta 3B şekilleri temsil eder.

Bir SDF'yi ağ olarak işlemek için sıfır geçişini üçgenler hâlinde çıkarmak üzere marching cubes (veya bir türevi) çalıştırılır. Ağ çözünürlüğü, ızgara çözünürlüğüne bağlıdır: 256x256x256 boyutlu bir SDF ızgarası, 1 metrelik çözünürlükte yaklaşık bir parçayı kaplayan arazi üretir.

Tarayıcı uygulaması: WebGPU marching cubes, hesaplama gölgelendiricileri aracılığıyla tamamen GPU üzerinde çalışır. Will Usher'ın webgpu-marching-cubes uygulaması, 256^3 boyutlu bir ızgarayı tarayıcıda gerçek zamanlı olarak işler ve yerel uygulama hızına ulaşır. Algoritma son derece paralelleştirilebilirdir (her hücre bağımsız olarak işlenir), bu da onu GPU hesaplamaları için ideal kılar.

wgsl
@compute @workgroup_size(4, 4, 4)
fn marchingCubes(@builtin(global_invocation_id) id: vec3<u32>) {
    let sdfValues = sampleSDF(id);
    let caseIndex = classifyCell(sdfValues);
    if (caseIndex == 0u || caseIndex == 255u) { return; }
    let triangles = lookupTriangulation(caseIndex);
    let vertices = interpolateEdges(sdfValues, triangles);
    appendToMeshBuffer(vertices);
}

Depolama maliyeti: 8 bit nicemlenmiş hassasiyette 256^3 boyutlu bir SDF, sıkıştırılmamış olarak 16 MB'tır. Ancak hacmin büyük bölümü boştur (yüzeyden uzaktadır). Çalışma uzunluğu kodlaması veya seyrek sekizli ağaç depolaması, bunu genellikle parça başına 100-500 KB'a düşürür; bu da yükseklik haritası arazisiyle karşılaştırılabilir.

Düzenleme: SDF arazisi doğal olarak düzenlenebilir. Malzeme eklemek, uzaklık alanında bir min() işlemidir. Malzeme çıkarmak (kazmak), tersine çevrilmiş bir şekille max() işlemidir. Şekiller arasındaki yumuşak harmanlama için smoothMin() kullanılır. Bu işlemler, bir hesaplama gölgelendiricisinde etkileşimli hızlarda çalışır.

Dual Contouring

Marching cubes, köşeleri ızgara kenarlarına yerleştirir; bu da pürüzsüz yüzeyler üretir ancak keskin özellikleri (uçurum kenarları, kaya köşeleri) kaybeder. Dual contouring, her hücreye o hücre içindeki yüzeyi en iyi temsil eden konumda tek bir köşe yerleştirerek keskin kenarları ve köşeleri korur.

Algoritma, her ızgara noktasında hem uzaklık alanı değerlerine hem de yüzey normallerine (SDF'nin gradyanı) ihtiyaç duyar. En uygun köşe konumunu bulmak için hücre başına küçük bir en küçük kareler problemi çözer. Sonuç, hem pürüzsüz araziyi hem de keskin kayalık özellikleri yakalayan bir ağdır.

Neural Dual Contouring (Chen ve diğerleri, 2022, arXiv:2202.01999), en küçük kareler çözücüsünün yerine en uygun köşe konumlarını ve kenar kesişimlerini tahmin eden bir sinir ağı kullanır. Özellikle karmaşık doğal kaya oluşumlarında daha yüksek yüzey yeniden oluşturma doğruluğu ve özellik koruması sağlar.

Transvoxel Algoritması

Hacimsel arazideki en zor problem ağı üretmek değil, LOD geçişleridir. Yüksek çözünürlüklü bir parça düşük çözünürlüklü bir parçanın yanında olduğunda ağlar sınırda hizalanmaz ve görünür çatlaklar oluşur.

Eric Lengyel tarafından tasarlanan Transvoxel algoritması (transvoxel.org), çözünürlükler arasındaki sınırlara özel geçiş hücreleri ekleyerek bu sorunu çözer. Bu hücreler, her iki tarafla da tam olarak eşleşen ek üçgenlerle çözünürlük farkını kapatır. Algoritma, karmaşık sınır problemini 73 eşdeğerlik sınıfına indirger (kaba kuvvet yaklaşımındaki yaklaşık 1,2 milyon duruma kıyasla).

Transvoxel, voksel verilerinin dinamik olarak değiştiği gerçek zamanlı uygulamalar (içerik üreticisi düzenlemeleri, erozyon, madencilik) için özel olarak tasarlanmıştır. Patent kısıtlaması yoktur ve yayımlanmış oyunlarda (Space Engineers, Astroneer) kullanılmıştır. Düzenlenebilir hacimsel araziye sahip bir tarayıcı dünyası için LOD çözümü Transvoxel'dir.

Hibrit: Yükseklik Haritası Tabanı + Hacimsel Katmanlar

Tarayıcı tabanlı bir açık dünya için pratik yaklaşım, katmanlı bir sistemdir:

Katman 1: Yükseklik haritası arazisi tüm dünyayı kapsar. Bu, dalgalı tepeler, vadiler ve dağlar için ucuz ve kompakt gösterimdir. Her parça için küçük yükseklik haritası yamaları (her biri 2-4 KB) hâlinde akışla aktarılır. İşleme, sabit GPU maliyetine sahip geometri klip haritalarını kullanır.

Katman 2: Hacimsel katmanlar yalnızca karmaşık geometrinin gerektiği parçalarda bulunur. Mağaralar, uçurum yüzeyleri, kemerler, içerik üreticilerinin oyduğu tüneller ve yer altı alanları seyrek SDF hacimleri olarak saklanır. Yalnızca hacimsel veri içeren parçalar SDF depolama ve marching cubes maliyetine katlanır.

Katman 3: İçerik üreticisi değişiklikleri, temel katmanların üzerinde SDF düzenlemeleri olarak saklanır. Bir içerik üreticisi tünel kazdığında tünelin SDF şekli saklanır. İşleme sistemi, nihai ağı üretmek için yükseklik haritası yüzeyini hacimsel çıkarma ve ekleme işlemleriyle birleştirir.

Bu hibrit yaklaşımın düz arazide maliyeti neredeyse sıfırdır (yalnızca yükseklik haritası) ve maliyet yalnızca karmaşıklığın bulunduğu yerlerde artar. Tipik bir dünyada parçaların belki %5-10'u hacimsel veriye ihtiyaç duyar.

Fiziksel Olarak Doğru Arazi Üretimi

Gürültü rastgele arazi üretir. Fizik ise gerçekçi arazi üretir. Aradaki fark görülebilir: gürültü arazisi yapısızdır (her yerde rastgele engebelidir), fiziksel arazi ise erozyon ve tektonikten doğan nehir ağlarına, sırt hatlarına, alüvyon yelpazelerine ve uçurum şeritlerine sahiptir.

Hidrolik Erozyon: Temel

Sebastian Lague'un hidrolik erozyon uygulaması çalışırken. Simüle edilen yağmur damlaları yamaç aşağı akar, hız ve eğime göre malzemeyi aşındırır ve hız düştüğünde tortu biriktirir; böylece düz gürültü nehir vadilerine, sırt hatlarına ve alüvyon yelpazelerine dönüşür.

Su yamaç aşağı akar, tortu toplar ve yavaşladığında bunu biriktirir. Milyonlarca sanal yıl boyunca simüle edilen bu tek süreç, özelliksiz gürültüyü tanınabilir jeolojik özelliklere sahip araziye dönüştürür. Parçacık tabanlı yaklaşım, yükseklik haritasına simüle edilmiş yağmur damlaları bırakır. Her damla yokuş aşağı akar (gradyanı izleyerek), hızına ve eğime bağlı olarak malzemeyi aşındırır, tortuyu çözünmüş yük olarak taşır ve hızı azaldığında ya da taşıma kapasitesi aşıldığında tortuyu biriktirir. 200.000-500.000 parçacıktan sonra arazide şunlar oluşur:

  • Maksimum su akışının yolunu izleyen nehir vadileri
  • Drenaj havzalarını birbirinden ayıran sırt hatları
  • Dik vadilerin düz ovalara açıldığı yerlerde birikinti yelpazeleri
  • Dağlık arazide V biçimli vadiler, buzullaşmış arazide ise U biçimli vadiler

GPU uygulaması: Parçacık simülasyonu paralelleştirilebilir. Her parçacık bağımsızdır (yaklaşım, parçacık-parçacık etkileşimini göz ardı eder; bu da erozyon için yeterince uygundur). Bir WebGPU compute shader'ı, 60 fps'de kare başına 10.000 parçacık işleyerek 200.000 parçacığı yaklaşık 3 saniyelik gerçek sürede tamamlar.

Sebastian Lague'ın açık kaynaklı uygulaması (GitHub) standart başlangıç noktasıdır. C# üzerinde tek bir iş parçacığında çalışır ve 1024x1024 boyutunda bir yükseklik haritasını birkaç saniyede işler. GPU sürümü 50-100 kat daha hızlıdır.

Termal Erozyon

Tek erozyon kuvveti su değildir. Sıcaklık değişimleri kayaların çatlayıp ufalanmasına neden olur (termal ayrışma). İki arazi noktası arasındaki eğim, malzemenin doğal yığılma açısını aştığında malzeme yüksek noktadan alçak noktaya düşer. Bunun sonucunda şunlar oluşur:

  • Uçurumların tabanında moloz yamaçları (düşmüş kaya yığınları)
  • Zamanla yumuşamış sırt hatları
  • Malzemeye bağlı profiller (sert kaya dik eğimleri korurken yumuşak toprak daha hafif açılara çöker)

Termal erozyon, hidrolik erozyondan daha basittir. Yerel bir işlemdir: Her hücre için komşularla olan yükseklik farkı karşılaştırılır. Eğim eşiği aşarsa malzeme yokuş aşağı taşınır. Her iterasyonda tek bir compute shader geçişi olarak çalışır ve 50-100 iterasyonda yakınsar.

Hidrolik ve termal erozyonu birleştirmek, her ikisinin tek başına ürettiğinden çok daha doğal görünen araziler oluşturur. Su vadileri oyar; termal erozyon ise aralarındaki sırtları yumuşatır ve vadi tabanlarını döküntülerle doldurur.

Akarsu Gücü Yasası: Analitik Erozyon

Güncel araştırmalar, parçacık tabanlı simülasyona bir alternatif sunuyor. Akarsu gücü yasası (erozyon hızını drenaj alanı ve eğimle ilişkilendiren jeomorfolojik bir denklem), iteratif olarak simüle edilmek yerine analitik olarak çözülebilir.

Cordonnier ve diğerleri (2024, HAL), analitik akarsu gücü yasasını heyelan ve yamaç difüzyonu süreçleriyle birleştiriyor. Sonuç, fiziksel temellere dayanan ancak zamansal bir simülasyon yerine matematiksel bir fonksiyon olarak çalışan bir arazi üretimidir. Gürültü tabanlı bir yükseklik haritası ile parametreleri (yağış oranı, kaya sertliği, tektonik yükselme hızı) girersiniz ve milisaniyeler içinde aşınmış bir arazi elde edersiniz.

Bu analitik yaklaşım, iteratif olarak değil, arazi üretimi sırasında sunucu tarafında bir kez çalıştığı için tarayıcı tabanlı bir dünya açısından idealdir. Parametreler üreticiler tarafından ayarlanabilir ("bu bölgeyi daha dağlık yap" yükselme hızını ayarlar; "daha yağışlı yap" yağışı artırır ve vadileri derinleştirir).

Arenite: Çok Fizikli Erozyon (SIGGRAPH 2025)

Arenite, katmanlı kayalardan kemerler, peri bacaları ve masa dağları oluşturmak için gerilimi, rüzgâr erozyonunu, akarsu erozyonunu ve parçacık birikimini simüle eder. Sunucu tarafındaki üretim, doğrudan marching cubes işlem hattını besleyen SDF hacimleri oluşturur.

Arenite (Proje sayfası), basit başlangıç koşullarından kemerler, kaya oyukları, peri bacaları ve masa dağları üreten fizik tabanlı bir kumtaşı simülatörüdür. Kullanıcılar aşınabilirlik haritaları (yumuşak kaya ve sert kaya katmanları) ile bitki örtüsünü boyar, ardından sistem şunları simüle eder:

  • Kaya sütunu boyunca gerilim dağılımı
  • Açıkta kalan yumuşak malzemeyi öncelikli olarak kaldıran rüzgâr erozyonu
  • Su akışından kaynaklanan akarsu erozyonu
  • Yeni oluşumlar yaratan parçacık birikimi

GPU uygulaması, bir masaüstü GPU'sunda karmaşık oluşumlar için 5 dakikadan kısa sürede çalışır. Bu, gerçek zamanlı tarayıcı kullanımı için fazla yavaş olsa da sunucu tarafında üretim için yeterince hızlıdır. Bir üretici, yumuşak/sert kaya katmanlarına sahip bir uçurum yüzeyi tanımlayıp dakikalar içinde gerçekçi bir kemer oluşumu elde edebilir.

Çıktı, SDF/marching cubes işlem hattımıza doğrudan uyan bir 3D voksel alanıdır.

Farklı Gösterimlerde Esnek Erozyon

IRIT-STORM'un 2024 tarihli bir makalesi ("Flexible Terrain Erosion," Springer) pratik bir sorunu çözüyor: Çoğu erozyon yöntemi yalnızca yükseklik alanlarında çalışır. Araziniz vokseller, SDF'ler veya katmanlı malzemeler kullanıyorsa her biri için ayrı erozyon koduna ihtiyacınız olur.

Esnek erozyon yöntemi, erozyonu iki bağımsız sürece ayırır: arazi değişimi (yüzeyden malzeme kaldırma) ve malzeme taşınımı (temel fizik kurallarına tabi parçacıklarla tortuyu taşıma). Her parçacığın yapılandırılabilir boyutu, yoğunluğu, geri sekme katsayısı ve tortu kapasitesi vardır. İsteğe bağlı bir vektör alanı, gerçekçi akışkan dinamikleri için parçacık hareketini kontrol eder.

Parçacıklar araziyle birleşik bir malzeme değişimi arayüzü üzerinden etkileştiği için aynı simülasyon yükseklik alanları, voksel ızgaraları, örtük yüzeyler ve katmanlı malzeme yığınları üzerinde çalışır. Hibrit arazimiz (yükseklik haritası tabanı + SDF katmanları) açısından bu, her iki gösterimi de tek bir erozyon sisteminin işlemesi anlamına gelir. Parçacık simülasyonu GPU üzerinde paralel olarak çalışır.

Nehir Ağları ve Drenaj Havzaları

Erozyon nehirleri oyar, ancak ikna edici nehir ağları üretmek için yalnızca suyu yokuş aşağı akıtmak yeterli değildir. İki yaklaşım daha iyi sonuçlar üretir:

Önce drenaj yaklaşımıyla üretim (Amit Patel, Red Blob Games, Proje), yükseltiyi atamadan önce nehir ağını oluşturur. Bir grafikle (Voronoi veya üçgen örgü) başlayın. Kenarları sırt (akış yok), giriş (su içeri akar) veya çıkış (su dışarı akar) olarak sınıflandırın. Böylece nehirlerin küçük kollardan büyük su yollarına doğru birleştiği, farklı nehir türleri için Rosgen sınıflandırma sistemini izleyen gerçekçi drenaj hiyerarşileri oluşur (düz arazide örgülü kanallar, dağlarda dar boğazlar).

Akış birikimi, her arazi hücresinden ne kadar su geçtiğini izler. Simüle edilmiş yağmuru eşit şekilde bırakın, suyu yokuş aşağı akıtın ve her hücreye yapılan ziyaretleri sayın. Birikimin yüksek olduğu hücreler nehir yataklarıdır. Orta düzeyde birikime sahip hücreler mevsimsel akarsulardır. Birikim haritası ayrıca erozyon yoğunluğunu (daha fazla su = daha fazla erozyon) ve bitki örtüsü dağılımını (nehir kıyıları daha nemlidir ve farklı bitki türlerini destekler) yönlendirir.

Üretici dünyasında nehir ağı, arazi oluşturulurken sunucu tarafında üretilir ve parça başına bir 2D akış yönü haritası ile bir su birikimi haritası olarak saklanır. Tarayıcı istemcisi bu haritaları su yüzeylerini oluşturmak (nehir yataklarında doğru yükseklikte düzlemler) ve bitki örtüsü dağılımını yönlendirmek (suya yakın yerlerde daha gür) için kullanır.

Kıyı ve Sahil Şeridi Üretimi

Kıyılar, arazinin suyla buluştuğu yerlerdir ve standart erozyonun üretmediği ayırt edici özelliklere sahiptir: deniz falezleri, plaj birikintileri, gelgit düzlükleri, deniz sütunları ve dalga aşındırma platformları.

NEWTS1.0 (2024, MIT), kayalık kıyı şeridinin evrimini iki erozyon mekanizması kullanarak modeller: düzgün gerileme (sabit erozyon hızı) ve dalga kaynaklı erozyon (erişim mesafesi ve gelen dalganın açısının bir fonksiyonu olarak erozyon hızı). Model, simüle edilmiş binlerce yıl boyunca çalışır ve gerçek kıyı jeomorfolojisiyle eşleşen burunlar, koylar, deniz sütunları ve kemerler üretir.

Tarayıcı tabanlı bir dünya için kıyı özellikleri, dünya oluşturulurken önceden üretilir. Parametreler (hâkim dalga yönü, kıyı boyunca kaya sertliği değişimi), üreticilerin kıyı şeritlerinin karakterini kontrol etmesine olanak tanır. "Norveç fiyordu" ayarı dik yamaçlı girintiler oluşturur. "Tropik atol" ayarı, lagünlere sahip alçak kumlu kıyılar üretir.

Mağara ve Yer Altı Üretimi

Yükseklik haritaları kapalı alanları temsil edemediği için mağaralar tamamen hacimsel arazi (SDF'ler veya vokseller) gerektirir. Üretim yaklaşımları şunlardır:

3D gürültü eşikleme en basit yöntemdir. Her vokselde 3D Perlin veya simplex gürültüsünü örnekleyin. Eşiğin altındaki değerler dolu, üstündekiler boştur. Tünel çapını, bağlantılılığı ve oda boyutunu kontrol etmek için eşik ile gürültü parametrelerini ayarlayın. Bu, Minecraft'ı andıran organik, solucan benzeri mağara sistemleri oluşturur.

PLUME (Procedural Layer Underground Modeling Engine) (2024, arXiv:2508.20926), katmanlı prosedürel kurallarla gerçekçi mağara ve lav tüpü ortamları üretir. Başlangıçta uzay araştırmaları için (Mars lav tüplerini simüle etmek amacıyla) geliştirilen sistem; sarkıtlar, sütunlar ve oda sistemleri içeren jeolojik açıdan makul yer altı yapıları üretir.

Metaball oyma kullanan L-sistemi tünelleri, arazi boyunca dallanan tünel yolları büyütmek için bir L-sistemi grameri kullanır, ardından gerçek tünel geometrisini metaball örtük yüzeyleriyle oyar. Metaball'lar pürüzsüz, yuvarlak mağara duvarları oluşturur. Farklı parametrelere sahip birden çok geçiş; ana geçitler, yan odalar ve dar bağlantı tünelleri oluşturur.

Üretici dünyasında mağara üretimi, SDF katman sistemine bağlanır. Temel arazi bir yükseklik haritasıdır (mağara içermez). Bir parçada mağaralara ihtiyaç duyulduğunda (prosedürel üretim veya üretici tasarımı nedeniyle), temel araziden mağara geometrisini çıkaran bir SDF hacmi üretilir. Marching cubes işlem hattı birleşik yüzeyi oluşturur.

Fiziksel Bir Süreç Olarak Bitki Örtüsü

Oyunlardaki bitki örtüsü genellikle "2000 m'nin altında çimen, 1500 m'nin altında ağaç, 3000 m'nin üstünde kar" gibi kurallarla prosedürel olarak yerleştirilir. Bu yöntem hızlıdır ancak tekdüze ve gerçekçi olmayan dağılımlar üretir.

Fiziksel temelli bitki örtüsü simülasyonu, her bitkinin kaynaklar (ışık, su, topraktaki besin maddeleri) için rekabet ettiğini modeller. Simülasyon:

  1. Tohumlar araziye dağıtılır
  2. Her bitki mevcut kaynaklara göre büyür (su, hidrolik erozyon simülasyonundan akar; güneş ışığı eğime ve bakıya bağlıdır; toprak derinliği erozyon geçmişine bağlıdır)
  3. Bitkiler rekabet eder: Ağaçlar çimenleri gölgede bırakır, yoğun bitki örtüsü yeni fidelerin büyümesini engeller
  4. Simüle edilmiş zaman içinde biyomlar doğal olarak ortaya çıkar: Sulu vadilerde ormanlar, rüzgâra açık sırtlarda seyrek bitki örtüsü, suyun biriktiği yerlerde sulak alanlar

Deussen ve diğerlerinin ekosistem simülasyonu (Makale), gerçek dünyadaki ekolojik örüntülerle eşleşen orman dağılımları üretir. Simülasyon bir 2D ızgara üzerinde (arazi parçası başına bir hücre) çalışır ve oluşturma sisteminin GPU örneklemeli bitki örtüsü yerleşimi için kullandığı yoğunluk haritaları ile tür atamalarını üretir.

Tarayıcı tabanlı bir dünyada bitki örtüsü simülasyonu, dünya üretimi sırasında sunucu tarafında bir kez çalışır. Çıktı, parça başına bir dizi yoğunluk haritasıdır: ağaç yoğunluğu, çimen yoğunluğu, çiçek yoğunluğu ve kaya döküntüsü yoğunluğu. Tarayıcı istemcisi, çalışma zamanında bitki örtüsünü dağıtmak için bu haritaları GPU örnekleme ile kullanır.

Difüzyon Tabanlı Arazi Sentezi

Alan en hızlı bu yönde ilerliyor. Difüzyon modelleri (görüntüler için Stable Diffusion'ın temelindeki teknoloji) arazi üretimine uygulanıyor ve sonuçlar gürültü tabanlı yöntemlerden önemli ölçüde daha gerçekçi.

Terrain Diffusion: Perlin Gürültüsünün Halefi

Minecraft içinde çalışan Terrain Diffusion, tohumla tutarlı sonsuz araziyi gerçek zamanlı olarak aktarır. Gerçek dünya yükselti verileriyle eğitildiği için gürültü fonksiyonlarının erişemeyeceği jeolojik yapıya sahip manzaralar üretir.

Terrain Diffusion (Goslin, 2025, arXiv:2512.08309, Proje sayfası), 1985'teki Perlin gürültüsünden bu yana prosedürel arazi üretimindeki en önemli ilerlemedir. Çalışma daha sonra SIGGRAPH 2026'ya kabul edildi ve standart arXiv başlığı artık "InfiniteDiffusion: Bridging Learned Fidelity and Procedural Utility for Open-World Terrain Generation"dır. InfiniteDiffusion algoritması ve Terrain Diffusion çerçevesi aynı makalenin iki yarısıdır.

Temel yenilik, difüzyon örneklemesini sınırsız alanlar için yeniden formüle eden bir algoritma olan InfiniteDiffusion'dır. Geleneksel difüzyon modelleri sabit boyutlu çıktılar (örneğin 512x512 boyutunda bir yükseklik haritası) üretir. InfiniteDiffusion ise şu özelliklerle sonsuz genişlikte arazi üretir:

  • Tohum tutarlılığı: Perlin gürültüsünde olduğu gibi aynı tohum her zaman aynı araziyi üretir
  • Sabit süreli rastgele erişim: Önce komşu bölgeleri üretmeden herhangi bir noktadaki yüksekliği sorgulayabilirsiniz
  • Sınır bozulmalarının olmaması: Görünür dikişler veya tekrarlar olmadan sonsuz üretim

Sistem, hiyerarşik bir difüzyon modeli yığını kullanır. En üst seviye gezegen ölçeğindeki özellikleri (kıtalar, sıradağlar) yakalar. Sonraki her seviye daha ince ayrıntılar ekler (tek tek zirveler, vadiler, küçük ölçekli pürüzlülük). Kompakt bir Laplasyen kodlama, deniz seviyesinden Himalaya zirvelerine uzanan devasa dinamik aralık boyunca çıktıları kararlı hâle getirir.

Performans: Üretim, gerçek zamanlı keşif hızına ayak uydurur. Makaleye göre, yörünge hızının teorik uç noktasında bile (yaklaşık 7.700 m/s) arazi sentezi, tüketici sınıfı bir GPU'da ilerleme hızından 9 kat daha hızlı çalışır. Proje, gerçek zamanlı arazi sentezini gösteren bir Minecraft entegrasyonu içerir. Bu bizim için neden önemli: Terrain Diffusion, gerçek dünya yükselti verileriyle (Dünya'nın gerçek topoğrafyasıyla) eğitilmiş manzaralar üretir. Çıktıda elle ayarlanmış gürültü parametrelerinden değil, eğitim verilerinden ortaya çıkan nehir ağları, sıradağlar, kıyı oluşumları ve plato yapıları bulunur. Bir içerik üreticisi, "İskoçya Yaylaları'na benzeyen bir arazi üret" diyebilir ve difüzyon modeli doğru jeolojik karaktere sahip bir sonuç oluşturabilir.

Model, dünya üretimi sırasında sunucu tarafında çalışır. Çıktı, diğer tüm arazi verileri gibi tarayıcıya aktarılan standart bir yükseklik haritasıdır. Üretim yöntemi istemci tarafından görülmez.

TerraFusion: Birleşik Geometri ve Doku

TerraFusion, gizli uzay difüzyonunu kullanarak eskizlerden arazi yükseklik haritalarını ve bunlarla eşleşen yüzey dokularını birlikte üretir
TerraFusion, elle çizilmiş bir eskizden yükseklik haritasını ve dokuyu birlikte üretir. Geometri ile malzeme arasındaki ilişki doğrudan sonuca işlenir: nehir yatakları kumlu, uçurum yüzeyleri kayalık, düz zeminler çimenli çıkar; üstelik hiçbir manuel splat boyama gerekmez.

TerraFusion (2025, arXiv:2505.04050), yükseklik haritaları ile arazi dokularını birlikte üreterek bir adım daha ileri gider. Temel içgörü şudur: arazi geometrisi ile yüzey görünümü birbiriyle ilişkilidir (nehir yatakları kumlu, uçurum yüzeyleri kayalık, düz alanlar çimenlidir). Bunları ayrı ayrı üretmek uyumsuzluklara yol açar.

TerraFusion, yükseklik haritaları ve dokular için ayrı VAE'lere sahip, bunların ortak dağılımını modellemek üzere eğitilmiş bir gizli uzay difüzyon modeli kullanır. Sistem şunları destekler:

  • Koşulsuz üretim: Eşleşen dokulara sahip, rastgele ve gerçekçi arazi
  • Eskiz koşullu üretim: İçerik üreticisi kabaca bir harita çizer (vadiler burada, sırtlar şurada, uçurumlar bu kenar boyunca) ve model, eskizle eşleşen ayrıntılı geometri ile dokular üretir

Bu, içerik üreticilerinin dünyaları için son derece güçlüdür. İçerik üreticisi arsasının genel yerleşimini çizer; sistem de uygun yüzey malzemeleriyle jeolojik açıdan gerçekçi araziyi tamamlar. Yükseklik haritası boyamaya, doku splat boyamasına veya manuel malzeme atamaya gerek kalmaz.

MESA: Metinden Araziye

MESA, küresel Copernicus verileriyle eğitilerek metin istemlerinden uydu tarzı arazi görüntüleri ve yükselti haritaları üretir
MESA, metin istemlerinden eşleştirilmiş uydu görüntüleri ve sayısal yükselti modelleri (DEM) üretir. Copernicus küresel veri kümesiyle eğitildiği için fiyortlardan bozkırlara, tarım arazilerinden alp sırtlarına kadar her ölçekteki ve iklim kuşağındaki gerçek araziyi anlar.

MESA (2025, arXiv:2504.07210, CVPR 2025 Çalıştayı), metin açıklamalarından arazi üretir. Copernicus programının küresel uzaktan algılama verileriyle eğitildiğinden, karasal manzaraların her türünü görmüştür.

"Kayalık bir kıyıya açılan, dik granit duvarlı bir fiyort" gibi bir istem, uygun jeolojik yapıya sahip bir yükseklik haritası üretir. "Yumuşak tepeleri ve geniş bir nehir vadisi olan dalgalı tarım arazileri" ise tamamen farklı bir sonuç oluşturur.

MESA, uydu görüntülerini dünya genelindeki sayısal yükselti modelleriyle eşleştiren Major TOM Core-DEM genişletilmiş veri kümesini sunar. Bu eğitim verileri, modele gerçek arazinin her ölçekte ve her iklim kuşağında nasıl göründüğünü kavrama yetisi kazandırır.

Geodiffussr: Metin Güdümlü Arazi Dokulama

Geodiffussr, yükselti verilerine uyarak metin açıklamalarından arazi dokuları üretir: zirvelerde kar, kıyılarda kum, yamaçlarda orman
Geodiffussr, bir yükseklik haritası ve metin istemi alarak yükseltiye uygun yüzey dokuları üretir. Kar yalnızca gerçekçi rakımların üzerinde görünür; bitki örtüsü yükseldikçe seyrekleşir; su çöküntülerde birikir. Geometri değişmeden kalır.

Geodiffussr (2025, arXiv:2511.23029), mevcut bir yükseklik haritasını alır ve yükselti verilerine uyarak metin açıklamalarının yönlendirdiği dokular üretir. "Sonbahar ormanı", orta eğimli yamaçlarda turuncu ve altın renkli yapraklar, dik yüzeylerde ise çıplak kaya oluşturur. "Tropik kıyı", alçak zeminde palmiye bitki örtüsü ve deniz seviyesinde mercan kumu üretir.

Sistem, doku atamalarının yükseltiye uygun olmasını sağlamak için çok ölçekli içerik birleştirme kullanır: kar yalnızca fiziksel olarak gerçekçi bir rakımın üzerinde görünür, su oluşumları çöküntülerde yer alır ve bitki örtüsü yükseldikçe seyrekleşir.

İçerik üreticilerinin dünyaları açısından bu, arazi dokularının geometri değiştirilmeden bir metin isteminden yeniden üretilebilmesi anlamına gelir. İçerik üreticisi istediği araziyi şekillendirir, ardından atmosferi tarif eder ("karanlık volkanik çorak arazi" veya "yemyeşil ılıman orman") ve sistem uygun yüzey malzemelerini üretir.

Tarayıcı Arazileri için Dinamik LOD

Büyük arazileri her yerde tam çözünürlükte işlemek tarayıcıda imkânsızdır. 1 metre çözünürlüklü, 4 km x 4 km boyutundaki bir dünya, yalnızca arazi için 16 milyon köşe noktası içerir. Dinamik LOD, dünya boyutundan bağımsız olarak bu sayıyı sabit ve yönetilebilir bir köşe noktası düzeyine indirir.

Geometri Klip Haritaları

Geometri klip haritalarının özgün SIGGRAPH 2004 sunumu. Çözünürlüğü her aşamada yarıya inen eş merkezli arazi halkaları, dünya boyutundan bağımsız olarak köşe noktası sayısını sabit tutar. Bu yöntem günümüzde hâlâ çoğu tarayıcı tabanlı arazi LOD sisteminin temelidir.

Geometri klip haritaları (Losasso ve Hoppe, SIGGRAPH 2004, Makale), yükseklik haritası tabanlı arazi LOD sistemleri için hâlâ altın standarttır. Fikir şudur: araziyi, kameranın merkezinde bulunduğu eş merkezli kare halkalar kümesi olarak işlemek. Her halka, bir öncekinin iki katı alanı kaplar ancak çözünürlüğü yarıya iner.

Kameraya yakın (en içteki halka): tam çözünürlük, 1 metrelik ızgara aralığı. Bir dış halka: 2 metrelik aralık, 4 kat alan kapsamı. Sonraki halka: 4 metrelik aralık, 16 kat alan kapsamı. Bu düzen, en dıştaki halka görünür mesafenin tamamını kapsayana kadar 6-8 seviye boyunca devam eder.

Toplam köşe noktası sayısı sabittir: yaklaşık N^2 * seviye; burada N, köşe noktası cinsinden halka genişliğidir. N=256 ve 8 seviye kullanıldığında toplam yaklaşık 500 bin köşe noktası elde edilir. Dünya ister 1 km ister 100 km genişliğinde olsun, işlenen miktar aynıdır.

Tarayıcı uygulaması: Geometri klip haritaları WebGL 2'de çalışır çünkü yalnızca standart köşe arabelleği güncellemeleri gerektirir (hesaplama gölgelendiricileri gerekmez). Kamera hareket ettikçe CPU, araziyi uygun çözünürlükte örnekleyerek her halkanın yükseklik haritası verilerini günceller. Köşe gölgelendiricisi, yükseklik değerlerini bir dokudan okur ve düz ızgarayı buna göre yükseltir.

Morf geçişi: LOD seviyeleri arasındaki geçiş, basit biçimde ele alındığında gözle görülür "sıçramalara" yol açar. Geomorphing (aşağıda kendi bölümünde ayrıntılı olarak açıklanmıştır), köşe gölgelendiricisindeki geçiş bölgesi boyunca köşe konumlarını seviyeler arasında harmanlayarak ek çizim çağrısı maliyeti olmadan pürüzsüz ve sıçramasız geçişler sağlar.

CDLOD: Dörtlü Ağaç Uyarlamalı Klip Haritaları

CDLOD (Strugar, 2014, Makale), sabit eş merkezli halkalar yerine dörtlü ağaç kullanarak geometri klip haritalarını geliştirir. Dörtlü ağaç araziye uyum sağlar: düz alanlar kaba düğümler kullanırken, yüksek ayrıntı içeren alanlar (uçurumlar, sırtlar) daha ince alt bölümlere ayrılır.

Bu, içerik üreticilerinin dünyaları için önemlidir çünkü farklı parçaların karmaşıklık düzeyleri farklıdır. Düz bir çayır en düşük çözünürlüğe ihtiyaç duyar. Uçurumlar ve mağaralar içeren dağlık bir bölge ise en yüksek ayrıntıyı gerektirir. CDLOD, çözünürlüğü önemli olduğu yerlere tahsis eder.

CPU tarafındaki dörtlü ağaç dolaşımı hafiftir (birkaç yüz düğüm) ve hangi arazi yamalarının hangi çözünürlükte çizileceğini belirler. GPU, her yamayı yama başına LOD uniform değişkenlerine sahip örneklenmiş bir ızgara olarak işler.

Eşzamanlı İkili Ağaçlar: Gezegen Ölçeğinde Mozaikleme

Gezegen ölçeğindeki araziler için CBT uyarlamalı mozaikleme: üçgenler kameranın yakınında alt bölümlere ayrılır, uzakta ise tamamen GPU üzerinde birleştirilir. Konsol donanımında 0,2 ms'nin altında.

Eşzamanlı İkili Ağaçlar (CBT), Benyoub ve Dupuy tarafından sunulan, uyarlamalı arazi mozaiklemesine yönelik GPU dostu bir veri yapısıdır (Intel, HPG 2024, Makale, GitHub).

Temel fikir, araziyi her düğümün bir üçgen olduğu ikili ağaç biçiminde temsil etmektir. Uyarlamalı alt bölümleme, kameraya yakın üçgenleri böler ve uzaktaki üçgenleri birleştirir. İkili ağaç, GPU belleğinde tamamen 1B bir dizi (ikili yığın) olarak bulunur; alt bölümleme ve birleştirme işlemleri ise hesaplama gölgelendiricileri olarak çalışır.

2024 tarihli makale, CBT'yi kare yükseklik haritası alanlarından gelişigüzel çokgen örgülere genişletir. Bu, bir küreyi (gezegen işleme için) veya gelişigüzel bir temel örgüyü (dikdörtgen olmayan sınırlara sahip bir oyun dünyası için) mozaikleyebileceğiniz anlamına gelir. Temel geliştirme şudur: CBT'nin örtük kodlama yerine bellek havuzu yöneticisi olarak kullanılması, çok daha yüksek alt bölümleme seviyelerine olanak tanır.

Performans: konsol düzeyindeki donanımda gezegen ölçekli arazi mozaikleme 0,2 ms'nin altında tamamlanır. Algoritma, işlemci sayısıyla doğrusal olarak ölçeklenir. WebGPU açısından bu, uygulama karmaşıklığı yüksek olsa da tarayıcıda gezegen ölçekli arazi işleme için bir yol sunar.

WebGPU ile GPU Güdümlü LOD

WebGPU, LOD kararlarında CPU katılımını ortadan kaldıran, tamamen GPU güdümlü bir arazi işlem hattına olanak tanır:

  1. Hesaplama geçişi 1: Görüş hacmi ve örtülme ayıklaması. Bir hesaplama gölgelendiricisi, her arazi yamasının sınırlayıcı kutusunu görüş hacmine ve bir örtülme arabelleğine (önceki karenin küçültülmüş derinlik arabelleği) karşı sınar. Görünmeyen yamalar tamamen elenir.

  2. Hesaplama geçişi 2: LOD seçimi. Görünür yamalar için ekran uzayındaki boyut hesaplanır ve uygun LOD seviyesi seçilir. LOD seviyesi ile yama kimliği dolaylı çizim arabelleğine yazılır.

  3. Hesaplama geçişi 3: Örgü üretimi (hacimsel arazi için). SDF verilerine sahip parçalar için, seçilen LOD çözünürlüğünde örgü üretmek üzere marching cubes algoritması çalıştırılır.

  4. Dolaylı çizim. Tek bir drawIndexedIndirect() çağrısı tüm arazi yamalarını işler. GPU her şeye karar verir: neyin, hangi çözünürlükte ve hangi sırayla çizileceğine.

Bu işlem hattının CPU maliyeti, dünya boyutu veya karmaşıklığından bağımsız olarak sabittir (hesaplama gölgelendiricilerini ve dolaylı çizim çağrısını başlatma). Yama başına tüm kararları GPU verir.

wgsl
@compute @workgroup_size(64)
fn lodSelection(@builtin(global_invocation_id) id: vec3<u32>) {
    let patchIdx = id.x;
    let bounds = patchBounds[patchIdx];

    if (!frustumTest(bounds, viewProjection)) { return; }
    if (occlusionTest(bounds, depthPyramid) == OCCLUDED) { return; }

    let screenSize = projectedSize(bounds, viewProjection, screenDimensions);
    let lod = clamp(u32(log2(maxScreenSize / screenSize)), 0u, MAX_LOD);

    let drawIdx = atomicAdd(&drawCount, 1u);
    drawArgs[drawIdx] = DrawArgs(patchIdx, lod, indexCount[lod], indexOffset[lod]);
}

Geomorphing: Sıçramasız LOD Geçişleri

Arazi LOD sistemlerindeki en büyük görsel bozulma sıçramadır: bir yama LOD seviyesini değiştirdiğinde köşe noktaları aniden yeni konumlara atlar. Geomorphing, bir geçiş bölgesi boyunca köşe konumlarını LOD seviyeleri arasında pürüzsüz biçimde enterpole ederek bunu ortadan kaldırır.

Uygulamanın tamamı köşe gölgelendiricisinde yer alır. Her köşe noktası hem mevcut LOD konumunu hem de bir sonraki daha kaba LOD konumunu saklar. Kamera mesafesi geçiş eşiğini aşarken bir morf faktörü ikisini harmanlar:

glsl
float morphFactor = smoothstep(lodNear, lodFar, distanceToCamera);
float morphedHeight = mix(fineLodHeight, coarseLodHeight, morphFactor);
gl_Position = viewProjection * vec4(worldPos.x, morphedHeight, worldPos.z, 1.0);

Hoppe'nin geometri klip haritası makalesi (GPU Gems 2, Bölüm 2), klip haritası halkalarına yönelik tam uygulamayı açıklar. Morf bölgesi, her halkanın dıştaki %20'lik kısmıdır. Bu bölge içinde köşe noktaları, bir sonraki halkanın çözünürlüğüne doğru pürüzsüz biçimde yakınsar. Görsel etki şudur: arazi geometrisi, ayrıntı seviyeleri arasında aniden geçmek yerine "erir". Tipik kamera hızlarında geçiş fark edilmez.

Görüntü uzayı harmanlama (Scherzer ve diğerleri, Makale), iki LOD seviyesinin işlenmiş görüntülerini ekran uzayında harmanlayan bir alternatiftir. Bu yöntem, daha uç LOD farklarını (ör. örgüden billboard'a geçişler) destekler ancak geçiş bölgesi için ek bir işleme geçişi maliyeti getirir.

GPU Güdümlü Bitki Örtüsü Ayıklaması

Bitki örtüsü (ağaçlar, çimenler, kayalar), açık dünyalarda çoğu zaman çizim çağrılarının en büyük kaynağıdır. Basit bir yaklaşım, her karede her bitki örtüsü örneğini çizer. Artık Three.js'de WebGPU aracılığıyla kullanılabilen GPU güdümlü ayıklama, görünmeyen örnekleri rasterleştiriciye ulaşmadan önce eler.

Three.js'in ComputeInstanceCulling özelliği (Belgeler), yüksek örnek sayılarında 10-100 kat performans artışı sağlayan görüş hacmi ve LOD ayıklaması sunar. İşlem hattı şöyledir:

  1. Bir hesaplama gölgelendiricisi tüm örneklerin sınırlayıcı kürelerini okur
  2. Her birini kamera görüş hacmine karşı sınar (6 düzlemli test)
  3. Mesafe tabanlı LOD uygular: eşiğin ötesindeki örnekler daha düşük ayrıntıya geçer veya tamamen elenir
  4. Kalan örnekler bir arabellekte sıkıştırılır ve drawIndirect aracılığıyla çizilir CPU, örnek başına hiçbir işlem yapmaz. İlk kurulumdan sonra maliyet, örnek sayısından bağımsız olarak bitki örtüsü türü başına bir compute dispatch ve bir dolaylı çizim çağrısından ibarettir.

Daha yoğun bitki örtüsü için Three.js'in IndirectBatchedMesh özelliği (Dokümantasyon), birden fazla geometri türünü (ağaçlar, çalılar, kayalar) tek bir arabellekte paketler ve bunları çoklu dolaylı çizimle oluşturur. Böylece bir chunk'taki tüm bitki örtüsü tek çizim çağrısıyla oluşturulur.

Bitki örtüsü sistemimizdeki yoğunluk haritası tabanlı dağıtımla birleştirildiğinde bunun anlamı şudur: yoğunluk haritası bir compute shader'da 50.000 çim yaprağı konumu üretir, ayıklama geçişi ekran dışında veya çok uzakta olanların %70'ini eler ve tek bir dolaylı çizim çağrısı kalan 15.000 yaprağı oluşturur. Toplam CPU maliyeti: ihmal edilebilir.

Hacimsel Arazi İçin LOD

Hacimsel arazi (SDF + marching cubes), mesh önceden hazırlanmak yerine üretildiği için kendine ait bir LOD sistemine ihtiyaç duyar. Yaklaşım şöyledir:

Çok çözünürlüklü SDF depolama. SDF'yi mipmap benzeri bir hiyerarşide birden fazla çözünürlükte depolayın. Seviye 0 tam çözünürlüktür (1 metrelik vokseller). Seviye 1, 2 metrelik voksellerden oluşur (8 kat daha az veri). Seviye 2, 4 metrelik voksellerden oluşur. Her seviyede SDF, minimum mutlak mesafe alınarak alt örneklenir.

LOD seçimli marching cubes. Marching cubes algoritmasını istenen LOD ile eşleşen SDF seviyesinde çalıştırın. Yakındaki chunk'lar seviye 0'ı kullanır. Uzaktaki chunk'lar seviye 2 veya 3'ü kullanır. Transvoxel algoritması farklı seviyeler arasındaki sınırı işler.

Önbellekleme. Üretilen mesh'ler, SDF değişene (üretici düzenlemesi) veya LOD seviyesi değişene (kamera önemli ölçüde hareket edene) kadar önbellekte tutulur. Statik arazide mesh bir kez üretilir ve yeniden kullanılır.

Arazi İçin Akış Mimarisi

Chunk Veri Biçimi

Her arazi chunk'ı (64x64 metre), kompakt bir ikili paket olarak aktarılır:

ChunkPacket {
  header: {
    chunkX: i16, chunkZ: i16,
    version: u32,
    flags: u8  // hasHeightmap | hasVolumetric | hasVegetation
  }
  heightmap: {
    resolution: u8,      // 65x65 for full, 33x33 for half, 17x17 for quarter
    quantizedHeights: u16[resolution * resolution],  // delta-encoded, zlib compressed
    splatMap: u8[4 * resolution * resolution]         // RGBA blend weights, LZ4 compressed
  }
  volumetric?: {         // only present if flags.hasVolumetric
    sdfResolution: u8,   // typically 32 or 64
    sparseOctree: bytes  // run-length encoded sparse SDF
  }
  vegetation?: {         // only present if flags.hasVegetation
    treeDensityMap: u8[16 * 16],    // 4m resolution density grid
    grassDensityMap: u8[32 * 32],   // 2m resolution density grid
    rockDensityMap: u8[16 * 16]
  }
  creatorObjects: {
    count: u16,
    objects: PlacedObject[]   // assetId + transform + properties, ~40 bytes each
  }
}

Tipik boyutlar:

  • Yalnızca yükseklik haritası içeren chunk (düz arazi): sıkıştırılmış olarak 2-4 KB
  • Yükseklik haritası + bitki örtüsü: 4-8 KB
  • Yükseklik haritası + hacimsel veri + bitki örtüsü (karmaşık chunk): 20-100 KB
  • Tam ayrıntılı 5x5 komşuluk: toplam 50-500 KB

Aşamalı Chunk Yükleme

Chunk'lar mesafeye, hareket yönüne ve veri türüne göre öncelik sırasıyla yüklenir:

Öncelik 1 (anında, <100 ms): Oyuncunun girmek üzere olduğu chunk'ların yükseklik haritası geometrisi. Önce arazi yüzeyi görünür. En düşük çözünürlükte bile (chunk başına 17x17) zemin hazırdır.

Öncelik 2 (hızlı, <300 ms): Splat haritaları ve arazi dokuları. Zemin renk kazanır.

Öncelik 3 (akışla yükleme, <1 sn): Tam çözünürlüklü yükseklik haritası yükseltmesi. Bitki örtüsü yoğunluk haritaları. GPU örnekleme ağaçları ve çimleri üretir.

Öncelik 4 (arka plan, ❤️ sn): Mağaralar veya çıkıntılar içeren chunk'lar için hacimsel SDF verileri. Marching cubes mesh'i bir Web Worker içinde üretir ve arabelleği ana iş parçacığına aktarır.

Öncelik 5 (gerektiğinde, <10 sn): Üretici tarafından yerleştirilen nesneler. Yapılar için yüksek çözünürlüklü dokular. Çiçekler, küçük kayalar ve döküntüler gibi ayrıntı nesneleri.

Öngörülü Önceden Getirme

Bir chunk'ı yüklemek için oyuncunun içine girmesini beklemeyin. Hıza göre nereye gittiğini tahmin edin ve ilerideki alanları yükleyin:

  • Yürüme hızı (5 km/sa): İlerideki 2 chunk'ı (128 m) önceden getirin. Tipik geniş bant gecikmesinde bu, 200-400 ms'lik bir hazırlık süresi sağlar.
  • Koşma/binme (15 km/sa): İlerideki 4 chunk'ı önceden getirin. Yükleme halkası hız yönüyle birlikte kayar.
  • Uçuş/hızlı seyahat: Geçiş sırasında oluşturmayı duraklatın. Hedef chunk'ları en yüksek öncelikle aktarın. İlk kare için yeterli veri hazır olduğunda oluşturmayı sürdürün.

Önceden getirme sistemi, hangi chunk'ların önbellekte olduğunu, hangilerinin aktarımda olduğunu (istendi ancak henüz ulaşmadı) ve hangilerine ihtiyaç duyulduğunu izler. Bir öncelik kuyruğu, bekleyen istekleri aciliyetlerine göre sıralar. Oyuncunun uzaklaştığı chunk'lara yönelik istekleri iptal edin.

Bellek Bütçesi ve Tahliye

Bir tarayıcı sekmesine masaüstünde 2-4 GB bellek ayrılır. Arazi sisteminin bunun yalnızca bir bölümünü kullanması gerekir (geri kalanı oluşturma, fizik, ağ iletişimi ve JavaScript heap'i içindir).

Hedef bütçe: tüm arazi verileri için 256 MB.

Tipik chunk boyutlarımızla:

  • Tam ayrıntılı önbelleğe alınmış chunk'lar: Her biri 5-100 KB olan yaklaşık 100 adet (10x10 komşuluk) = ham veri için 5-10 MB
  • GPU arazi geometrisi: yaklaşık 50 MB (tepe noktası arabellekleri, görünür arazi için indeks arabellekleri)
  • Arazi dokuları: yaklaşık 100 MB (KTX2 ile sıkıştırılmış, atlas içinde paketlenmiş)
  • Bitki örtüsü örnek arabellekleri: yaklaşık 50 MB (GPU örnekleme için konumlar, dönüşler, ölçekler)
  • SDF hacimleri ve önbelleğe alınmış marching cubes mesh'leri: yaklaşık 50 MB

Görünür menzilin dışındaki chunk'lar önce GPU belleğinden (dokular, tepe noktası arabellekleri), ardından CPU önbelleğinden tahliye edilir. Ham yükseklik haritası verileri en son kaldırılır; çünkü bunları tutmak en düşük maliyetlidir ve oyuncu arkasını döndüğünde hazır bulunması en önemli veridir.

Biyom Geçişleri ve Döşeme Tekrarını Önleme

Yumuşak Biyom Sınırları

Gerçek manzaralarda biyomlar arasında keskin sınırlar bulunmaz. Bir orman bir çizgide bitip çöle dönüşmez. Bir geçiş vardır: yoğun orman seyrek ağaçlara, ardından çalılıklara ve son olarak seyrek çöl bitki örtüsüne dönüşür. Bunu doğru yapmak, dünyanın döşemelerden oluşmuş gibi değil, kesintisiz hissedilmesini sağlar.

AutoBiomes (Kötter ve diğerleri, Makale), prosedürel arazi üretimini basitleştirilmiş iklim simülasyonuyla birleştirir. Sıcaklık, nem ve yükseklik her noktadaki biyom türünü belirler. Biyomlar arasında malzeme ağırlıkları ve bitki örtüsü yoğunluğu bir geçiş bölgesi boyunca (genellikle 50-100 metre genişliğinde) enterpole edilir. Geçiş genişliği biyom çiftine göre değişir: ormandan çayıra geçiş geniş ve kademeliyken, uçurumdan suya geçiş dar ve keskindir.

Üretici dünyasında biyom ataması kaba bir ızgara üzerinde çalışır (her 16x16 metrelik alan için bir biyom örneği). Arazi shader'ı mevcut fragment ve komşuları için biyom değerlerini okur, geçiş bölgesindeki malzeme ağırlıklarını enterpole eder ve dokuları buna göre harmanlar. Bitki örtüsü dağıtımı da aynı enterpole edilmiş yoğunluk değerlerini kullanır; böylece ağaç yoğunluğu orman sınırında kademeli olarak azalır.

Üretici denetimi: üreticilerin kendi parsellerine biyom geçersiz kılmaları boyamasına izin verin. Sistem arazi özelliklerinden varsayılan biyomları üretir, ancak üreticiler bunları geçersiz kılabilir. Alçak bir alana "bataklık" boyandığında malzeme bulanık suya, yosuna ve ölü ağaçlara dönüşür. Biyom boyama haritası, prosedürel atamayı geçersiz kılan ve her chunk için biyom kimliklerinden oluşan 16x16'lık bir ızgaradır (256 bayt).

Altıgen Döşeme: Doku Tekrarını Ortadan Kaldırma

Arazi oluşturmada en yaygın görsel kusur doku tekrarıdır. 100 metrelik bir çayır boyunca döşenen 1 metrelik çim dokusu, görünür ızgara desenleri oluşturur. İki teknik bunu düzeltir:

Altıgen döşeme (Mikkelsen, Demo), kare döşeme ızgarasını altıgen bir ızgarayla değiştirir. Her altıgen döşeme, dokuyu rastgele bir ofset ve dönüşle örnekler. Altıgen sınırlar, dikişleri gizlemek için harmanlanır. Sonuç, döşenmiş görünmek yerine homojen biçimde rastgele görünen bir yüzeydir. Maliyet: fragment başına yaklaşık 3 ek doku örneği. Bu teknik üretim oyunlarında yaygın olarak kullanılır ve her fragment shader'da çalışır.

Stokastik doku filtreleme (Pharr ve diğerleri, NVIDIA, 2024, Makale), stokastik örnekleme kullanarak filtrelemeyi gölgelemeden önce değil sonra uygular. Stokastik örneklemeden kaynaklanan hata minimum düzeydedir ve uzamsal-zamansal gürültü giderme tarafından iyi işlenir. Bu, daha doğru filtrelenmiş sonuçlar üretir ve sıkıştırılmış/seyrek dokularla çalışır. Arazi için hem döşeme kusurlarını hem de altıgen döşemenin geçişlerde bazen oluşturabildiği filtreleme kusurlarını ortadan kaldırır.

Bir tarayıcı dünyası için altıgen döşeme pratik seçimdir (her shader'da çalışır). Stokastik filtreleme daha fazla altyapı gerektirir ancak zamansal gürültü giderme mevcutsa daha iyi sonuçlar üretir (TAA kullanan bir WebGPU yolunda bu mevcut olacaktır).

Arazi Malzeme Sistemi

Üç Düzlemli Eşleme

Standart UV eşlemeli dokular, UV koordinatları sıkıştığı için dik yamaçlarda ciddi biçimde esner. Üç düzlemli eşleme, dokuları üç eksen boyunca (X, Y, Z) yansıtır ve yüzey normaline göre harmanlar:

glsl
vec3 blending = abs(normal);
blending = normalize(max(blending, 0.00001));
blending /= (blending.x + blending.y + blending.z);

vec4 xaxis = texture(material, worldPos.yz * scale);
vec4 yaxis = texture(material, worldPos.xz * scale);
vec4 zaxis = texture(material, worldPos.xy * scale);

vec4 color = xaxis * blending.x + yaxis * blending.y + zaxis * blending.z;

Uçurum yüzeyleri X veya Z izdüşümünü alır (esneme olmaz). Düz zemin Y izdüşümünü alır. Harmanlama yumuşak ve otomatiktir. UV açılımı gerekmez.

Babylon.js yerleşik bir TriPlanar Material içerir. Three.js özel bir shader gerektirir, ancak uygulama yaklaşık 30 satır GLSL'den ibarettir.

PBR arazi için üç düzlemli eşlemeyi tüm kanallara uygulayın: albedo, normal, pürüzlülük ve ortam örtme. Her kanala aynı harmanlama ağırlıkları uygulanır.

Eğim ve Rakıma Dayalı Malzeme Ataması

Splat haritalarını elle boyamak yerine, malzemeleri arazi özelliklerine göre prosedürel olarak atayın:

glsl
float slope = acos(dot(normal, vec3(0, 1, 0)));
float altitude = worldPos.y;

float grassWeight = smoothstep(0.3, 0.0, slope) * smoothstep(2000.0, 1500.0, altitude);
float rockWeight = smoothstep(0.2, 0.5, slope);
float snowWeight = smoothstep(2500.0, 3000.0, altitude) * smoothstep(0.4, 0.1, slope);
float sandWeight = smoothstep(5.0, 0.0, altitude) * smoothstep(0.15, 0.0, slope);

Düşük rakımdaki düz zemin çimle kaplanır. Dik yamaçlar kayalık olur. Yüksek rakımlar karla kaplanır (ancak yalnızca karın birikebileceği kadar düz yüzeylerde). Deniz seviyesine yakın alanlar kumla kaplanır. Geçişler yumuşaktır ve fiziksel temellere dayanır.

Bir üretici dünyasında rakım eşiklerini ve harmanlama bölgelerini her chunk için boyanabilir parametreler olarak sunun. Üreticiler ağaç sınırını yukarı veya aşağı taşıyabilir, kar örtüsünü genişletebilir ya da parsellerindeki malzeme kurallarını ayarlayarak çimenli bir tepeyi kumlu bir çöle dönüştürebilir.

GPU Dostu Laplasyen Doku Harmanlama

Standart doku harmanlama (katmanlar arasında doğrusal enterpolasyon), ya görünür dikişler ya da soluk, düşük kontrastlı sonuçlar üretir. Laplasyen piramit harmanlama bu sorunu çözer ancak geleneksel olarak maliyetli ön hesaplama gerektirir.

Wronski (NVIDIA, 2025, JCGT), gerçek zamanlı shader'larda ön hesaplama ve ek bellek gerektirmeden çalışan GPU dostu bir varyant sunar. Teknik, standart mipmap zincirini Laplasyen piramidin bir yaklaşımı olarak kullanır: dokuyu hem mevcut mip seviyesinde hem de daha kaba bir seviyede örnekler, farkı (Laplasyeni) hesaplar ve her katmandan gelen Laplasyen katkılarını harmanlar.

Sonuç, daha büyük ölçeklerde yumuşak biçimde harmanlama yaparken keskin yerel ayrıntıları (tek tek çim yaprakları, kaya çatlakları) korur. Maliyeti fragment başına birkaç ek doku erişimidir. Piksel başına 4 veya daha fazla malzeme katmanının harmanlandığı arazilerde bu yöntem, özellikle çim, kaya ve kum arasındaki geçişlerde doğrusal harmanlamadan belirgin biçimde daha iyi sonuç verir.

Erozyon Ayrıntıları İçin Fazör Gürültüsü

Standart arazi, erozyon simülasyonu yükseklik haritası çözünürlüğünde (1 metrelik ızgara) çalıştığı için yakından bakıldığında genellikle düz görünür. Gerçek arazide santimetre ölçeğinde ince erozyon desenleri (ince yarıntılar, oyuntular, aşınma çatlakları) bulunur.

Grenier ve diğerleri (2024, CGF), gerçek zamanlı olarak araziye mikro ayrıntılar eklemek için fazör gürültüsü kullanır. Fazör gürültüsü, periyodik fonksiyonlara beslenen stokastik bir faz alanı tanımlayarak yapılandırılmış desenler sentezler. Araziye uygulandığında şu özelliklere sahip, uzamsal olarak değişken erozyon desenleri oluşturur:

  • Dar yarıntıları farklı ölçeklerde daha büyük oyuntulara dönüştürür
  • Arazi eğimiyle otomatik olarak hizalanır (erozyon desenleri düşüş çizgisini izler)
  • 32 kata kadar büyütme sağlar (yükseklik haritası çözünürlüğünün 32 katında ayrıntı ekler)
  • Etkileşimli kare hızlarında tamamen bir fragment shader içinde çalışır

Bir tarayıcı dünyasında fazör gürültüsü, arazi shader'ında bir ayrıntı katmanı olarak çalışır. Yükseklik haritası büyük ölçekli şekli sağlar. Fazör gürültüsü, geometri karmaşıklığını artırmadan fragment shader içinde ikna edici mikro erozyon ekler. Parametreler (desen sıklığı, genlik, yönelim) biyoma göre değişebilir: çıplak kayada derin yarıntılar, kum tepelerinde hafif dalgalar, kurumuş çamurda ağaç kabuğunu andıran pürüzlü doku.

Arazi İçin Sanal Dokulama

Büyük ölçeklerde arazi doku atlasını yönetmek zorlaşır. Santimetre başına 1 tekselde 4 km x 4 km'lik bir dünya, 400.000 x 400.000 piksellik bir doku gerektirir. Bu açıkça olanaksızdır.

Sanal dokulama (id Software'ın Rage oyunundan gelen adıyla megatexture), arazi dokusunu sayfalanmış bir yapı olarak ele alarak bu sorunu çözer. Dokunun tamamı kavramsal olarak mevcuttur, ancak yalnızca ekranda görünen döşemeler GPU belleğine yüklenir. İşlem hattı:

  1. Geri bildirim geçişi: Araziyi, her pikselin hangi doku döşemesine ihtiyaç duyduğunu (döşeme kimliği ve mip seviyesi) çıktı olarak veren bir gölgelendiriciyle işle. Bu veriyi CPU'ya geri oku (veya bir hesaplama gölgelendiricisiyle işle).
  2. Döşeme yükleme: İstenen döşemeleri CDN'den yükle veya splat haritası verilerinden prosedürel olarak oluştur.
  3. Dolaylı adresleme dokusu: Küçük bir doku, sanal döşeme koordinatlarını bir doku atlasındaki fiziksel döşeme koordinatlarıyla eşler.
  4. İşleme geçişi: Arazi gölgelendiricisi, doğru fiziksel döşemeyi bulmak için dolaylı adresleme dokusuna bakar ve ardından malzeme dokusunu atlastan örnekler.

WebGPU'nun hesaplama gölgelendiricileri, geri bildirim analizini ve sayfa tablosu yönetimini tamamen GPU üzerinde gerçekleştirebilir. CPU yalnızca döşeme G/Ç işlemlerini yönetir.

Sonuç: Doku belleğinde patlamaya yol açmadan her çözünürlükte benzersiz dokulara sahip arazi. Kameradan uzaktaki döşemeler düşük çözünürlükte yüklenir. Yakındaki döşemeler yüksek çözünürlükte yüklenir. Toplam bellek kullanımı sabit bir bütçe içinde kalır (genellikle 128-256 MB doku atlası).

Dinamik Arazi Efektleri

Su Birikintileri ve Islaklık

Yağmur yalnızca yağmaz. Birikir. Çukurlarda su birikintileri oluşturur. Yüzeylerde ıslak bir parlaklık meydana getirir. Dik eğimlerde akıp gider. Bunu simüle etmek, hava durumunun yalnızca görsel bir katman değil, araziyle bağlantılı bir unsur gibi hissedilmesini sağlar.

Gölgelendirici tabanlı yaklaşım akışkanlar dinamiğini simüle etmez. Suyun nerede birikeceğini belirlemek için arazi yükseklik haritasını kullanır:

glsl
float concavity = heightCenter * 4.0 - heightLeft - heightRight - heightUp - heightDown;
float puddleDepth = max(0.0, concavity * rainIntensity - evaporationRate * timeSinceRain);
float wetness = smoothstep(0.0, 0.02, puddleDepth);

vec3 wetColor = baseColor * 0.7;
float wetRoughness = baseRoughness * 0.3;
vec3 finalColor = mix(baseColor, wetColor, wetness);
float finalRoughness = mix(baseRoughness, wetRoughness, wetness);

İçbükey alanlar (yükseklik haritasının negatif Laplasyeni) su toplar. İçbükeylik ne kadar derinse su birikintisi de o kadar büyük olur. Islak yüzeyler koyulaşır ve daha yansıtıcı hâle gelir (daha düşük pürüzlülük). Yağmur durduktan sonra efekt zamanla kaybolur.

Tam su birikintisi yansımaları için su yüzeyinde düzlemsel bir yansıma geçişi ekleyin. Alternatif olarak, daha düşük maliyetli olan ve hem Three.js hem de Babylon.js son işleme yığınlarında zaten bulunan ekran uzayı yansımalarını (SSR) kullanın.

Su birikintisi yüzeylerindeki yağmur damlaları, geri beslemeli bir dokuda basit bir 2B dalga denklemi kullanır (Saurel, 2026, Blog). Her yağmur damlası dışarı doğru yayılan ve giderek sönen bir dalga oluşturur. Dalga dokusu, su birikintisinin normal haritasını değiştirerek 60 fps'de ikna edici dalga desenleri oluşturur.

Ayak İzleri ve Arazi Deformasyonu

Bir oyuncu yumuşak arazide (kum, kar, çamur) yürürken ayak izleri fiziksel mevcudiyet hissini güçlendirir. Teknik şöyledir: Her parça için yükseklik ofsetlerini depolayan küçük bir deformasyon dokusu (64x64 piksel = 4 KB) tutun. Bir karakter yumuşak araziye bastığında deformasyon dokusuna bir ayak izi şekli damgalayın.

Arazi tepe gölgelendiricisi deformasyon dokusunu okur ve ofseti yükseklikten çıkarır. Arazi parça gölgelendiricisi ayak izi alanını koyulaştırır (sıkışmış zemin daha koyudur) ve pürüzlülüğü artırır (bozulmuş yüzey).

Deformasyon dokusu kademeli olarak sıfırlanarak ayak izleri zamanla kaybolur (kar izleri doldurur, yağmur çamur izlerini siler). Kaybolma hızı hava durumuna bağlıdır: yağmurda hızlı, kuru koşullarda yavaştır.

Çok oyunculu bir dünyada ayak izi verileri geçicidir ve yereldir. Her istemci, görünür oyuncular için ayak izleri oluşturur. Deformasyon dokusunun istemciler arasında eşitlenmesi gerekmez (herkes geçici ayak izlerinin kendi sürümünü görür). Bu, her adımı yayınlamanın ağ maliyetini önler.

Prosedürel Gökyüzü ve Gece/Gündüz Döngüsü

Gökyüzü, herhangi bir açık dünyadaki en büyük görünür yüzeydir. Tüm arazinin atmosferini belirler.

Three.js; prosedürel güneş/ay, gece/gündüz döngüsü, bulutlar, yıldızlar ve mercek parlamaları içeren eksiksiz bir gökyüzü sistemine sahiptir. Yerleşik Three.js Sky örneği (WebGPU için de mevcuttur), Preetham'ın analitik gökyüzü modelini uygular.

Fiziksel olarak daha doğru sonuçlar için webgpu-sky-atmosphere, Hillaire'in atmosfer modelini bir WebGPU son işleme efekti olarak uygular. Birden fazla saçılma faz fonksiyonunu destekler ve temel fizik ilkelerinden doğru hava perspektifi (uzaktaki arazi daha puslu görünür), güneş/gün batımı renkleri ve gökyüzü gradyanları üretir.

TerrainView7, önceden hesaplanmış atmosferik saçılmayla WebGPU'da tam ölçekli gezegen işlemeyi göstererek fiziksel olarak doğru atmosfer işlemenin tarayıcıda çalıştığını kanıtlar.

İçerik üretici dünyasında gökyüzü parametreleri (güneş konumu, bulutluluk oranı, pus yoğunluğu), sunucunun dünya saatinden tüm istemcilere eşitlenir. Gökyüzü gölgelendiricisi her istemcide yerel olarak çalışarak tüm oyuncılar için tutarlı aydınlatma üretir.

Arazi Aydınlatması: Dolaylı Aydınlatma

Doğrudan güneş ışığı gölge haritalarıyla işlenir. Ancak gölgedeki arazinin rengi ve parlaklığı (ortam/dolaylı ışık) görsel kalite açısından aynı derecede önemlidir. Tamamen siyah gölgeler yanlış görünür. Gölgeler gökyüzünün rengiyle tonlanmalıdır (açık bir günde mavi, bulutlu bir günde gri).

Bir tarayıcı dünyası için pratik yaklaşım:

Görünürlük bit maskeli ekran uzayı dolaylı aydınlatma (Jimenez ve diğerleri, 2023, Makale), piksel başına 32 yönlü görünürlük sektörü izleyerek standart SSAO'yu geliştirir. Bu yalnızca bir noktanın ne kadar örtüldüğünü değil, örtülmenin yönünü de yakalar. İnce yüzeyler, ışığın diğer taraftan doğru biçimde geçmesine izin verir. Sonuç, küresel aydınlatma altyapısı gerektirmeden yakındaki geometriye tepki veren dolaylı aydınlatmadır.

Maliyeti SSAO ile karşılaştırılabilir düzeydedir (1-2 ms). Görsel iyileşme belirgindir: Kanyonlardaki arazi, kanyon duvarlarından sekme ışığı alır. Çıkıntıların alt kısımları zeminden yansıyan ışıkla aydınlanır. Efekt, gökyüzü gölgelendiricisindeki atmosferik saçılmayla birleşerek fiziksel temelli ortam aydınlatması üretir.

Arazi Fiziği Entegrasyonu

Rapier Yükseklik Alanı Çarpıştırıcıları

Rapier'ın WASM fizik motoru, arazi için optimize edilmiş yerel yükseklik alanı çarpıştırıcıları sağlar. Bir arazi çarpıştırıcısı oluşturmak basittir:

typescript
const heights = new Float32Array(65 * 65);
// Fill with heightmap data...
const groundCollider = RAPIER.ColliderDesc.heightfield(
  64, 64, heights, new RAPIER.Vector3(64.0, 100.0, 64.0)
);
world.createCollider(groundCollider);

Yükseklik alanı çarpıştırıcısı, verimli geniş faz sorguları için yapısal ızgarayı kullanır. Bir yükseklik alanına karşı ışın dökümünün karmaşıklığı, üçgen ağdaki O(n) yerine O(log n)'dir. 65x65 boyutundaki bir parçada çarpışma sorguları mikrosaniyeler içinde sonuçlanır.

Hacimsel araziye (SDF katmanları) sahip parçalar için marching cubes çıktısından bir üçgen ağ oluşturun ve bir üçgen ağ çarpıştırıcısı kullanın. Bu, yükseklik alanı çarpıştırıcısından daha maliyetlidir ancak rastgele geometrileri işleyebilir. Üçgen ağ çarpıştırıcılarını yalnızca oyuncuya en yakın 3-5 parça için oluşturun. Uzaktaki parçaların fiziğe ihtiyacı yoktur.

Performans: Rapier'ın 65x65 boyutundaki bir parçaya yönelik yükseklik alanı çarpıştırıcısı, karakter denetleyicisi sorguları için her fizik adımına yaklaşık 0,1 ms ekler. Yükseklik alanı çarpıştırıcılarına sahip 5 etkin parça: 0,5 ms. Hacimsel bir parça için bir üçgen ağ çarpıştırıcısı: 0,2-0,5 ms. Toplam arazi fiziği bütçesi: 1 ms'nin altında; tüm dünyanın 2-3 ms'lik fizik bütçesinin oldukça içinde.

Araziye Duyarlı Karakter Denetleyicisi

Karakter denetleyicisinin arazi özelliklerine tepki vermesi gerekir:

  • Eğim sınırlama: Karakter 45 dereceye kadar olan eğimlerde yürüyebilir. Daha dik eğimler kaymaya neden olur. Bunun için karakterin konumundaki arazi normali kullanılır (yükseklik haritası gradyanından düşük maliyetle hesaplanır).
  • Yüzey malzemesi tepkisi: Kaya üzerinde yürümek, kum veya çamur üzerinde yürümekten farklı ayak sesi efektleri ve hareket hızı üretir. Arazinin splat haritası herhangi bir noktadaki yüzey malzemesini sağlar.
  • Basamak çıkma: Karakter 0,5 metreye kadar olan çıkıntılara adım atabilir. Rapier'ın KinematicCharacterController bileşeni bunu yapılandırılabilir basamak yüksekliğiyle otomatik olarak işler.

Tarayıcıda Etkileşimli Arazi Düzenleme

İçerik üretici dünyasında arazi yalnızca oluşturulmaz. Oyuncular tarafından şekillendirilir, değiştirilir ve yeniden biçimlendirilir. Düzenleme araçlarının hızlı tepki vermesi (anında görsel geri bildirim) ve ağ bağlantılı olması (diğer oyuncuların değişiklikleri saniyeler içinde görmesi) gerekir.

WebGPU SDF Düzenleyicisi

Reinder Nijhoff'un WebGPU SDF Düzenleyicisi, tam özellikli SDF modellemenin günümüzde tarayıcıda çalıştığını gösterir. Düzenleyici şunları destekler:

  • Konum, döndürme ve ölçek özelliklerine sahip altı temel şekil (küre, kutu, koni, silindir, kapsül, torus)
  • Yumuşak harmanlama ve yapılandırılabilir harmanlama yarıçaplarıyla Boole işlemleri (birleşim, çıkarma, kesişim)
  • Gruplar ve iç içe işlemler içeren hiyerarşik sahne grafikleri
  • Birden fazla GPU hesaplama gölgelendiricisi aşaması, 16.384 ızgara hücresine yayılan sekizli ağaç tabanlı uzay bölümleme ve marching cubes ya da surface nets aracılığıyla yüzey çıkarma kullanan gerçek zamanlı işleme
  • Gölge haritaları aracılığıyla zamansal kenar yumuşatma ve ortam perdeleme

Her temel şekil, tek bir GPU arabelleğinde 28 kayan noktalı sayı (112 bayt) olarak depolanır. Bu kompakt gösterim, karmaşık bir arazi düzenlemesinin (bir mağara girişini, kemeri veya oyulmuş uçurum yüzeyini tanımlayan onlarca SDF temel şekli) 5 KB'den az yer kaplaması ve diğer oyunculara anında eşitlenmesi anlamına gelir.

İçerik üretici dünyasında SDF düzenleme iş akışı şöyledir:

  1. İçerik üretici bir şekillendirme aracı seçer (küre ekle, kutu çıkar, yumuşak harmanla)
  2. SDF temel şeklini yerleştirmek ve boyutlandırmak için dünyada tıklar/sürükler
  3. İstemci, yerel ağı güncellemek için değiştirilmiş SDF üzerinde marching cubes algoritmasını hemen çalıştırır (<16 ms içinde geri bildirim)
  4. SDF düzenlemesi (temel şekil türü + dönüşüm + harmanlama modu, yaklaşık 100 bayt) sunucuya gönderilir
  5. Sunucu düzenlemeyi doğrular (içerik üreticinin arsası içinde, korumalı alanlarla kesişmiyor) ve yakındaki oyunculara yayınlar
  6. Diğer oyuncuların istemcileri SDF düzenlemesini uygular ve yerel ağlarını yeniden oluşturur

Bir düzenlemenin başkalarına görünür hâle gelmesi için gereken toplam gidiş-dönüş süresi: ağ gecikmesine bağlı olarak 100-300 ms. İçerik üretici, düzenlemesi sunucu onayından önce yerel olarak uygulandığı için sonucu anında görür.

Fırça Tabanlı Yükseklik Haritası Düzenleme

Yükseklik haritası katmanı (arazinin hacimsel özelliklere ihtiyaç duymayan %90'lık kısmı) için daha basit bir düzenleme modeli yeterlidir. İçerik üretici, yükseklik değişikliklerini bir fırçayla boyar:

  • Yükselt/alçalt: Yumuşak geçişli bir yarıçap içinde yükseklik ekle veya çıkar
  • Yumuşat: Bir yarıçap içindeki yüksekliklerin ortalamasını alarak keskin özellikleri gider
  • Düzleştir: Bir yarıçap içindeki tüm yükseklikleri hedef değere ayarla
  • Erozyon fırçası: Fırça yarıçapı içinde yerel olarak birkaç hidrolik erozyon adımı uygula

Yükseklik haritası düzenlemesi bir deltadır: temel arazinin üzerine bindirilen küçük bir yükseklik değişiklikleri yaması. Delta yaması çok küçüktür (16 bit yükseklik ofsetlerinden oluşan 32x32 ızgara = 2 KB) ve diğer oyunculara tek bir mesaj olarak eşitlenir. Her parçada birden fazla delta yaması birikir ve sunucu tarafında düzenli aralıklarla parçanın kalıcı yükseklik haritasıyla birleştirilir.

İş Birliğine Dayalı Düzenleme Kısıtlamaları

Birden fazla içerik üretici aynı parçayı eşzamanlı olarak düzenlediğinde sistemin kurallara ihtiyacı vardır:

  • Uzamsal kilitleme: Belirli bir 8x8 metrelik alt bölgeyi aynı anda yalnızca bir içerik üretici düzenleyebilir. Kilit, içerik üretici bir düzenleme fırça darbesine başladığında alınır ve fırçayı kaldırdığında serbest bırakılır. Kilitler, 10 saniye işlem yapılmadığında zaman aşımına uğrar.
  • Örtüşmeyen düzenlemeler: İki içerik üretici aynı parçanın farklı kısımlarını düzenlerse her iki düzenleme de çakışma olmadan uygulanır (farklı yükseklik haritası hücrelerini veya SDF bölgelerini değiştirirler).
  • Örtüşen düzenlemeler: İki içerik üretici aynı konumu düzenlerse sunucu, düzenlemeleri geliş sırasına göre serileştirir. Uzlaştırmadan sonra her iki istemci de aynı nihai sonucu görür.

Bu, yerleştirilmiş nesneler için kullanılan tam CRDT yaklaşımından daha basittir; çünkü arazi düzenlemeleri, ayrık nesne durumu yerine sürekli bir alan (yükseklikler, SDF mesafeleri) üzerindeki toplamsal işlemlerdir.

WebGPU'da Nanite Tarzı Sanal Geometri

Unreal Engine 5'in Nanite sistemi, derleme zamanında bir küme DAG'ı (yönlendirilmiş döngüsüz grafik) oluşturarak ve çalışma zamanında ekran uzayı hatasına göre küme başına doğru LOD'yi seçerek milyarlarca üçgen işler. Tüm işlem hattı GPU üzerinde çalışır. Bu yaklaşım WebGPU'ya taşınmıştır.

Nanite WebGPU

Meshlet LOD hiyerarşisi ve yazılım rasterleştiricisi kullanarak tarayıcıda karmaşık, çok nesneli bir sahneyi işleyen Nanite WebGPU
Meshlet LOD, WGSL hesaplama gölgelendiricilerinde yazılım rasterleştirme ve meshlet başına görüş hacmi ile örtülme ayıklaması kullanarak Chrome'da tam bir sahneyi işleyen Nanite WebGPU. Yerel eklenti yok — saf WebGPU.

Scthe tarafından geliştirilen Nanite WebGPU (GitHub'da 1,1 binden fazla yıldız), Nanite'ın temel mimarisinin eksiksiz bir tarayıcı uygulamasıdır:

  • Meshoptimizer'ın küme oluşturma özelliği kullanılarak çevrimdışı oluşturulan meshlet LOD hiyerarşisi
  • WGSL hesaplama gölgelendiricilerinde uygulanan yazılım rasterleştiricisi (donanım rasterleştirmenin küme başına çizimleri verimli biçimde gerçekleştiremediği WebGPU kısıtlamaları içinde çalışır)
  • Görüş hacmi ve örtülme testleri kullanan örnek başına ve meshlet başına ayıklama
  • Çok uzaktaki nesneler için billboard impostor'ları
  • Doku ve tepe noktası başına normal desteği İşlem hattı şu şekilde çalışır: Ağlar yaklaşık 128 üçgenden oluşan kümelere bölünür. Komşu kümeler gruplanır ve paylaşılan sınırlar korunarak her grup sadeleştirilir (meshoptimizer kullanılarak). Bu işlem, ağın tamamı tek bir kümeye indirgenene kadar özyinelemeli olarak sürer. Çalışma zamanında bir compute shader DAG üzerinde ilerler ve mevcut ekran çözünürlüğünde 1 pikselden daha az hata üreten, grup başına en kaba kümeyi seçer.

THREE-Nanite, yüz binlerce üçgeni işlerken tümleşik grafik donanımlarında 20-40 fps'ye ulaşan, gelişmekte olan bir Three.js uygulamasıdır. Nanite tarzı render işlemenin düşük seviye tarayıcı donanımlarında bile uygulanabilir olduğunu gösterir.

meshoptimizer: LOD İşlem Hattının Temeli

meshoptimizer (Arseny Kapoulkine tarafından geliştirilmiştir), tarayıcı uyumlu LOD işlem hatlarının çoğunun arkasındaki kütüphanedir. Sürüm 1.0 (2025) şunları sağlar:

  • Hata metrikleriyle ağ sadeleştirme (şeklin ne kadar değiştiği; LOD seçimi için kullanılır)
  • Nanite tarzı meshlet hiyerarşileri için küme oluşturma
  • GPU dostu üçgen sıralaması için verteks önbelleği optimizasyonu
  • Piksel shader maliyetini azaltmak için overdraw optimizasyonu
  • Daha küçük indirmeler için verteks nicemleme ve sıkıştırma

meshoptimizer 1.0 (Aralık 2025'te yayımlandı), Nanite tarzı sürekli LOD'yi doğrudan uygulayan yeni, tek başlık dosyalı bir clusterlod.h ile gelir. Aşamalı olarak gruplanıp sadeleştirilen bir küme hiyerarşisi oluşturur; bu hiyerarşi olduğu gibi veya özel bir işlem hattına referans olarak kullanılabilir. Bu, arazi işlem hattının SDF/marching cubes ağ LOD'si için ihtiyaç duyduğu küme-DAG temel yapısının ta kendisidir.

Arazi işlem hattımızda meshoptimizer, SDF arazisinden alınan marching cubes çıktısını LOD hiyerarşilerine sahip, optimize edilmiş kümeli ağlara dönüştürür. Çevrimdışı işleme sunucu tarafında yürütülür. Tarayıcı, önceden kümelenmiş ağları alır ve çalışma zamanında GPU güdümlü LOD seçimi gerçekleştirir.

LOD üretimi için meshoptimizer ile çalışma zamanı seçimi için WebGPU compute'un birleşimi, tarayıcı arazisine web kısıtlamalarına uyarlanmış Nanite ile aynı mimari örüntüyü kazandırır.

Araziye Duyarlı Seviye Tasarımı

Arazi yalnızca üzerinde yürünecek bir yüzey değildir. Şekli, oyuncu hareketini yönlendirir, dikkati belirli noktalara çeker ve keşfin duygusal ritmini oluşturur. En iyi açık dünyalar araziyi bir tasarım aracı olarak kullanır.

Görüş Hatları ve Simgesel Noktalar

The Level Design Book'un yol bulma bölümü, arazi yüksekliğinin oyuncuların ne gördüğünü ve nereye gittiğini nasıl kontrol ettiğini açıklar. Bir sırt, ötesindekileri gizleyerek merak uyandırır. Bir vadi, hareketi en alçak noktasına doğru yönlendirir. Uzaktan görülebilen yüksek bir simgesel nokta (kule, dağ zirvesi, sıra dışı bir ağaç), oyunculara yönelebilecekleri bir hedef verir.

Bir üretici dünyası için bu, arazi üretiminin doğal yol bulma unsurları oluşturması gerektiği anlamına gelir. Sırt hatları görüşü kesmeli ve oyuncu bir tepenin zirvesine ulaşıp yeni bir alan gördüğünde "ortaya çıkış anları" yaratmalıdır. Vadiler ilgi çekici konumlara doğru birleşmelidir. Üreticilerin uzaklardan görülebilen simgesel noktalar yerleştirebileceği yüksek noktalar bulunmalıdır.

Merak Odaklı Keşif

Purdue Üniversitesi'nin araştırması (Makale), mekânsal keşfi tetikleyen dört unsuru belirler:

  1. Uç noktalara ulaşmak (en yüksek zirve, en uzak sınır, en derin mağara). Arazi, ulaşmayı ödüllendiren belirgin uç noktalara sahip olmalıdır.
  2. Görsel engellerin ardını keşfetmek (o uçurumun arkasında ne var? o mağaranın içinde ne var?). Görüşü engelleyen arazi, gizlenen şeyi bulmak için hareket etmeyi teşvik eder.
  3. Bulunduğu yere aykırı nesneler (ıssız doğada bir yapı, karanlıkta bir ışık). Doğal araziye karşıt olarak üreticilerce yerleştirilen nesneler, dikkati çeken bir kontrast oluşturur.
  4. Mekânsal bağlantıları anlamak (bu vadi o kıyıya nasıl bağlanıyor?). Okunabilir bir coğrafya oluşturan arazi, harita okumayı ve rota planlamayı teşvik eder.

PlotMap: Yapay Zekâ Destekli İlgi Noktası Yerleşimi

PlotMap (arXiv:2309.15242), anlatısal gereksinimleri (bu görev için nehir yakınında bir köy gerekiyor, şu görev için tepe üzerinde bir harabe gerekiyor) alıp mekânsal kısıtlamaları karşılayan arazi konumlarını bularak ilgi noktası yerleşimini otomatikleştirir. Bir üretici dünyasında benzer bir sistem, arazi özelliklerine göre yapıların nereye yerleştirileceğini önerebilir: "bu tepenin zirvesi bir gözetleme kulesi için iyi görüş hatlarına sahip", "bu korunaklı vadi bir köy için uygun olur."

Akan Sular ve Şelaleler

Nehirler ve şelaleler, görsel çekiciliği ortam sesi ve oynanış olanaklarıyla (engel, kaynak veya yol olarak su) birleştiren arazi özellikleridir.

Nehir Render İşlemesi

Açık dünyalardaki nehirler genellikle arazi yüzeyini takip eden dokulu şeritler olarak render edilir. Şerit ağı, nehir spline'ından (kontrol noktaları olarak saklanır) oluşturulur ve arazi yükseklik haritasına yansıtılır. Nehir shader'ı şunları uygular:

  • Akan su görünümü oluşturmak için nehir yönünde kayan akışa hizalı UV'ler
  • Nehrin kıyıyla buluştuğu yerlerde kenar köpüğü (derinlik tabanlı, kıyı köpüğüne benzer)
  • Kanal genişliğine göre hız değişimi (dar kesimler daha hızlı, geniş kesimler daha yavaş akar)
  • Derinlik tabanlı renkle şeffaflık (sığ kısımlar berrak, derin kısımlar koyudur)

Bir tarayıcı dünyası için nehir verileri kompakttır: spline (nehir segmenti başına 20-50 kontrol noktası, yaklaşık 400 bayt) ile genişlik ve akış hızı parametreleri. İstemci, spline'ı kendi arazi yüzeyine yansıtarak nehir ağını yerel olarak oluşturur.

Şelale Render İşlemesi

Bir nehrin uçurum yüzeyinden aşağı döküldüğü yerde, düz nehir yüzeyinin yerini bir şelale parçacık sistemi alır. Gerçek zamanlı su simülasyonu araştırmalarındaki hibrit yaklaşımda (EG), bir yükseklik alanıyla temsil edilemeyen bölgeler (şelaleler, sıçramalar), akışkan simülasyonuyla kütle ve momentum alışverişi yapan serpinti, sıçrama ve köpük parçacıklarına dönüştürülür.

Bir tarayıcı dünyasında şelaleler daha basittir: nehir spline'ının arazi yüksekliğindeki bir süreksizliği kestiği yeri algılayın, o noktada aşağı yönlü hıza sahip bir parçacık sistemi oluşturun ve tabana köpüklü bir sıçrama ekleyin. Parçacıklar, kayan alfa dokularına sahip, GPU ile örneklenmiş dörtgenlerdir. Şelale başına 500 parçacık, tek draw call. Dökülen suyun sesi, mesafeye bağlı zayıflatmayla Web Audio API'yi kullanır.

Uzaktaki Arazi Özellikleri İçin Impostor'lar

Ağaçlar, kayalar, binalar ve diğer arazi özellikleri uzakta küçücük görünür. Bunları tam 3B ağlar olarak render etmek GPU döngülerini boşa harcar. Impostor'lar, uzaktaki nesnelerin yerine kameraya dönük, önceden render edilmiş düz görüntüler kullanır.

Oktahedral Impostor Atlasları

Oktahedral bir impostor, 3B nesnenin görünümünü birden fazla bakış açısından yakalar ve bunları bir doku atlasında saklar. Çalışma zamanında shader, mevcut görüş yönüne göre atlası örnekler ve yakalanmış en yakın iki açı arasında interpolasyon yapar.

Hemi-oktahedral bir atlas (ağaçlara nadiren aşağıdan bakıldığı için yalnızca üst yarımküreden görünümler), aynı doku boyutuna sahip tam oktahedral atlasın iki katı açısal çözünürlük sağlar. Unity'nin impostor sistemi, 1.600 ağaç örneği gerçek ağlardan (her biri 140 bin üçgen) impostor'lara geçirildiğinde kare süresinin 111 ms'den 5,78 ms'ye düştüğünü bildiriyor.

Bir tarayıcı dünyası için impostor işlem hattı:

  1. Sunucu tarafında: renk, normal ve derinliği yakalayarak her varlığı 16-32 bakış açısından render edin
  2. Bir atlas dokusunda paketleyin (varlık başına bir atlas, yaklaşık 256x256 piksel, KTX2 olarak <100 KB)
  3. Çalışma zamanında: impostor mesafesinin (genellikle 100-200 m) ötesindeki örnekleri, atlası örnekleyen billboard'lar olarak render edin
  4. Geçişi gizlemek için ağ ile impostor arasında 20 m'lik bir geçiş bölgesi boyunca çapraz geçiş uygulayın

Billboard Splatting (BBSplat)

Billboard Splatting (2024, arXiv:2411.08508), öğrenilebilir dokulu düzlemsel temel öğeler kullanarak bunu daha ileri taşır. BBSplat, önceden render edilmiş görünümler yerine, 3B nesneyi her açıdan en iyi şekilde temsil etmek için billboard konumlarını ve dokularını optimize eder. Bu, bakış açısına bağlı görünümü korurken 3D Gaussian Splatting'e kıyasla 17 kata kadar sıkıştırma sağlar. Bir tarayıcı dünyasındaki uzaktaki arazi özellikleri için BBSplat, açısal kapsama alanını iyileştirirken varlık başına impostor depolama alanını azaltabilir.

Profesyonel Arazi Araçları ve Öğrettikleri

Sıfırdan bir arazi işlem hattı oluşturmadan önce profesyonel çevrimdışı araçların ne yaptığını anlamaya değer. Bu araçlar, üretim iş akışlarına dönüştürülmüş onlarca yıllık arazi üretimi araştırmasını temsil eder.

Gaea (QuadSpinner), GPU hızlandırmalıdır ve değişiklikler için neredeyse anında geri bildirim sağlar. Her kenarda 2 milyon piksele kadar döşemeli üretimleri, otomatik LOD ağ dışa aktarmayı ve her düğümün fiziksel bir süreç olduğu (erozyon, tortulaşma, yükselme, termal aşınma) düğüm tabanlı bir grafiği destekler. Gaea'nın erozyon düğümleri, genel gürültü yerine belirli fiziksel süreçleri modelledikleri için elle şekillendirilmiş gibi görünen araziler üretir. Temel çıkarım şudur: Gaea tek bir erozyon algoritması kullanmaz. Akarsu erozyonu (nehir aşındırması), termal erozyon (uçurum parçalanması), kıyı erozyonu (dalga etkisi) ve rüzgâr erozyonu (kumul oluşumu) için ayrı düğümler sunar. Bunların bir grafikte birleştirilmesi, belirli bir iklimin jeolojik karakterine sahip araziler üretir.

World Machine, arazi makro yapısına odaklanan benzer bir grafik yaklaşımı kullanır. "Layout generator" aracı, sanatçıların arazi özelliklerinin kabaca şeklini çizmesine (dağ burada, vadi şurada, kıyı çizgisi bu kenar boyunca) olanak tanır ve sistem fiziksel açıdan makul ayrıntıları doldurur. Bu, tam olarak istediğimiz üretici iş akışıdır: niyeti taslak olarak çiz, jeolojiyi elde et.

World Creator, düzenleme sırasında gerçek zamanlı önizleme ve araziyi analiz edip drenaj çözümlemesine göre akış yollarını otomatik olarak hesaplayan yerleşik nehir üretimiyle kendini farklılaştırır.

Bu araçlardan aldığımız ders: Fiziksel süreçleri birleştiren düğüm-grafik yaklaşımı, herhangi bir tekil algoritmadan daha güçlüdür. Sunucu tarafındaki üretim işlem hattımız şu zincirlemeyi desteklemelidir: gürültü tabanı > tektonik yükselme > hidrolik erozyon > termal aşınma > kıyı erozyonu > bitki örtüsü. Üreticiler her aşamadaki parametreleri kontrol eder. İşlem hattı sunucu tarafında saniyeler içinde çalışır ve yükseklik haritaları, splat haritaları ve bitki örtüsü yoğunluk haritaları üretir.

SoilMachine: Açık Kaynaklı Jeomorfoloji

SoilMachine: birbirine bağlı hidrolik, termal ve rüzgâr erozyonuna sahip araziyi gösteren açık kaynaklı modüler jeomorfoloji simülatörü
SoilMachine, hidrolik, termal ve rüzgâr erozyonunu tek bir katmanlı arazi modelinde birleştirir. Çok katmanlı veri yapısı, yükseklik haritalarının temsil edemediği özellikleri destekler: mağaralar, çıkıntılar, dik tepeler ve yeraltı suyu dağılımları.

SoilMachine, birden fazla erozyon sistemini (hidrolik, termal, rüzgâr) tortu taşınımı ve birikimiyle birleştiren, açık kaynaklı modüler bir jeomorfoloji simülatörüdür. GPU compute ile C++ dilinde geliştirilmiştir ve profesyonel araçların kullandığı çok süreçli erozyon yaklaşımının referans uygulamasını sağlar.

İlgili soillib (C++20, MIT lisansı), temel jeomorfoloji simülasyonu yapı taşlarını yeniden kullanılabilir bir kütüphane olarak sunar. hydro-gen ise OpenGL compute shader'larında hem ızgara tabanlı (sığ su) hem de parçacık tabanlı (yağmur damlası) hidrolik erozyonu, gerçek zamanlı parametre ayarlama özelliğiyle uygular.

Bu açık kaynaklı araçlar, sunucu tarafındaki üretim işlem hattımıza uyarlanabilir. Erozyonu gerçek zamanlı üretici geri bildirimi için tarayıcıda çalıştırmak istersek compute shader uygulamaları doğrudan WebGPU'ya aktarılabilir.

Çok Katmanlı Arazi Materyalleri

Gerçek arazi tek bir yüzeyden ibaret değildir. Katmanlardan oluşur: altta ana kaya, üstte toprak ve yüzeylerde biriken kar veya kum. Dinamik katmanlama; mevsimler, hava koşulları ve üretici eylemleriyle arazinin görsel karakterini değiştirir.

Katmanlı Yükseklik Alanı Gösterimi

Tek bir yükseklik haritası yerine, her ızgara hücresi için birden fazla yükseklik katmanı kullanın:

Cell {
  bedrock_height: f16,    // kalıcı kaya yüzeyi
  soil_height: f16,       // ana kayanın üzerinde biriken toprak/tortu
  snow_height: f16,       // dinamik kar birikimi
  water_height: f16       // durgun su derinliği
}

Toplam: hücre başına 8 bayt (tek bir yükseklik haritası için 2 bayta kıyasla). 65x65 boyutunda bir parça için bu, sıkıştırmadan önce 34 KB'dir. Yine de kompakttır.

Görsel yüzey bedrock + soil + snow şeklindedir. Arazi shader'ı tüm katmanları okur ve materyalleri buna göre harmanlar: toprağın ince olduğu yerlerde kaya görünür. Karın biriktiği yerlerde yüzey beyazdır. Suyun bulunduğu yerlerde su birikintileri veya göller oluşur.

Dinamik Birikim

Kar yağışı sırasında kar; düz, yukarı dönük yüzeylerde birikir. Birikme hızı yüzey normaline (dik yamaçlar kar tutmaz), sıcaklığa (yüksekliğe bağlıdır) ve korunaklılığa (çıkıntıların altındaki alanlar açık kalır) bağlıdır. Bir compute shader geçişi, kar katmanını her hava durumu tikinde (birkaç saniyede bir) günceller.

Kum birikimi de rüzgârın taşıdığı çökelmeyle benzer şekilde çalışır. Rüzgâr, parçacıkları açık yüzeylerden taşır ve engellerin arkasındaki korunaklı alanlarda biriktirir.

Bir üretici dünyasında dinamik birikim, arazinin farklı hava koşullarında farklı görünmesi anlamına gelir. Kar fırtınası sırasında dünyayı kar kaplar ve hava açtığında erir. Yağmur, çukurları suyla doldurur. Bu, üreticilerin herhangi bir şey yapmasına gerek kalmadan dünyanın tepkisel ve canlı hissettirmesini sağlar.

Çok Katmanlı Erozyon

2024 tarihli "3D Real-Time Hydraulic Erosion Simulation using Multi-Layered Heightmaps" (EG) makalesi, erozyonu katmanlar arasında çalışacak şekilde genişletir. Su, toprağı ana kayadan daha hızlı aşındırır. Tortu, yeni bir toprak katmanı olarak birikir. Simülasyon, çıkıntılar (ana kayanın, altındaki aşınmış toprağın üzerine uzandığı yerler) gibi karmaşık özelliklere olanak tanırken katman bütünlüğünü korur (ana kaya toprağın altında kalır). Performans: 2048x2048 çözünürlükte RTX 3070 üzerinde simülasyon adımı başına yaklaşık 6 ms. Bu, sunucu tarafında üretim için yeterince hızlıdır ancak tarayıcıda kare başına simülasyon için fazla yavaştır. Katmanlı temsil statik arazi üretiminde işe yararken dinamik kar/su birikimi, kare başına çalışan daha düşük maliyetli bir gölgelendirici olarak uygulanır.

Çim, Kaya ve Detay Görselleştirme

Peyzaj yalnızca arazi geometrisi ve dokulardan fazlasına ihtiyaç duyar. Rüzgârda sallanan çim yapraklarına, yamaçlara dağılmış kayalara ve yakın plan görünümleri doğal kılan çiçekler, çakıl taşları ve düşmüş dallar gibi küçük ayrıntılara ihtiyaç vardır.

GPU Örneklemeli Çim

Tek bir çizim çağrısında GPU örnekleme ile görselleştirilmiş bir milyon çim yaprağı. Aynı teknik Three.js ve WebGPU'da da çalışır: örnek başına dönüşümler, tepe noktası gölgelendiricisinde rüzgâr animasyonu ve arazi verilerinden çim yapraklarını dağıtmak için bir yoğunluk haritası.

Tarayıcı tabanlı çim görselleştirme, Three.js üzerinde kendini kanıtlamıştır ve GPU örnekleme aracılığıyla çalışır. al-ro'nun çim demosundaki yaklaşım, InstancedBufferGeometry kullanarak 100.000 çim yaprağını tek bir çizim çağrısıyla görselleştirir.

Her çim yaprağı basit bir dörtgendir (4-8 üçgen). Örnek başına öznitelikler konumu, yüksekliği, bükülme yönünü, renk varyasyonunu ve rüzgâr fazını tanımlar. Tepe noktası gölgelendiricisi:

  1. Örnek başına dönüşümü okur
  2. Dünya konumu ve zamana bağlı sinüs dalgaları kullanarak rüzgâr animasyonu uygular
  3. Çim yaprağını rüzgâr şiddetine göre büker (uçta daha fazla bükülme, tabanda hiç bükülme yoktur)
  4. Renk gradyanı uygular (yüzey altı saçılımı için tabanda daha koyu, uçta daha açık)

Codrops'un kabarık çim öğreticisi (2025, Öğretici) bir kabuk dokulama yaklaşımını gösterir: yoğun bir çim hacmi görünümü oluşturmak için zemin düzlemini giderek artan uzaklıklarda birden çok kez görselleştirir ve her katmanda bir gürültü dokusunu örnekler. Bu yaklaşım, çok yoğun kaplama için ayrı çim yapraklarını örneklemekten daha düşük maliyetlidir ancak yakın mesafede daha az gerçekçidir.

Bir üretici dünyasında çim yoğunluğu, parça başına bitki örtüsü yoğunluk haritasından gelir. GPU, görselleştirme sırasında çim yaprağı konumlarını yoğunluk haritasından dağıtır. Çim yaprağı başına hiçbir veri depolanmaz veya aktarılmaz. Yoğunluk haritası parça başına 32x32'lik bir ızgaradır (1 KB) ve GPU bundan binlerce çim yaprağı örneği üretir.

Prosedürel Kaya ve Uçurum Ayrıntıları

Uçurum yüzeyleri ve kayalık araziler, temel yükseklik haritasının veya SDF'nin makul bir çözünürlükte sağlayamayacağı geometrik ayrıntılara ihtiyaç duyar. İki yaklaşım birbirini tamamlar:

GPU örgü gölgelendiricisiyle yeniden yüzeyleme (Raad vd., Eurographics 2025, Makale), kaba bir kontrol örgüsünden görselleştirme sırasında prosedürel geometri üretir. Örgü gölgelendiricisi temel arazi yüzeyini okur ve ayrıntı geometrisini bellekte saklamadan yüzeye yer değiştirme, çatlaklar ve çıkıntılar ekler. Bu, VRAM kullanımını azaltır ve dinamik LOD sağlar.

Örneklemeli kaya dağıtımı, önceden hazırlanmış kaya örgülerini GPU örnekleme kullanarak dik yamaçlara ve uçurum kenarlarına yerleştirir. Bir hesaplama gölgelendiricisi arazi normalini ve eğimi okur, ardından eğimin belirli bir eşiği aştığı yerlere kaya örnekleri dağıtır. Her örnek, rastgele döndürme ve ölçeğe sahip küçük bir örgüdür (200-500 üçgen). 10.000 dağınık kaya, örnekleme kullanıldığında ihmal edilebilir düzeyde görselleştirme maliyeti getirir.

Yollar ve Patikalar

Üreticilerin yerleştirdiği yollar, izler ve patikaların araziye uyum sağlaması ve yüzey malzemesini değiştirmesi gerekir (çimi toprak veya taşla değiştirmek).

Tüm büyük oyun motorlarının kullandığı yaklaşım şudur: yolu bir eğri (bir dizi kontrol noktası) olarak tanımlayın. Eğriyi arazi yüzeyine yansıtın. Eğriyi izleyen ve arazinin biraz üzerinde duran bir şerit örgü oluşturun. Şeride bir yol dokusu uygulayın. Arazi gölgelendiricisinde, yansıtılmış bir doku veya çıkartma kullanarak eğrinin genişliği içinde arazi malzemesini yol malzemesine doğru harmanlayın.

Bir tarayıcı dünyasında üretici, arazi üzerine bir yol çizer. İstemci kontrol noktaları oluşturur ve bunları sunucuya gönderir (birkaç düzine vec3 değeri). Sunucu eğriyi saklar. Tüm istemciler, eğriyi kendi arazi örgülerine yansıtarak yol şeridini yerel olarak görselleştirir. Yol verisi çok küçüktür (yol eğrisinin noktaları, yaklaşık 200 bayt) ancak görsel etkisi büyüktür: üretici yapıtlarını birbirine bağlayan yollar, dünyanın içinde yaşam varmış gibi hissettirmesini sağlar.

Arazi Gölgeleri

Arazi gölgeleri, okunabilirlik (arazi biçimini anlama) ve atmosfer (günün saatine bağlı ruh hâli) açısından kritik öneme sahiptir. Açık bir dünyada güneş, görünür arazinin tamamına gölgeler düşürür.

Kademeli Gölge Haritaları (CSM)

CSM, görüş hacmini 3-4 uzaklık aralığına (kademe) böler. Her kademe, güneşin bakış açısından kendi uzaklığına uygun çözünürlükte bir gölge haritası oluşturur. Yakın kademe: yüksek çözünürlük (ağaçların ve binaların altındaki ayrıntılı gölgeler). Uzak kademe: düşük çözünürlük (geniş dağ gölgeleri).

Hem Three.js hem de Babylon.js CSM'yi destekler. Arazi için temel optimizasyon şudur: gölge haritasında yalnızca araziyi görselleştirin; tek tek çim yapraklarını veya küçük ayrıntıları değil. Çimler, kendi gölgeleri yerine arazinin gölge haritasını kullanır.

Performans bütçesi: Her biri 1024x1024 olan 3-4 gölge kademesi. Araziyi gölge haritalarına çizmek 0,5-1 ms sürer (arazi geometrisi zaten GPU belleğindedir). Arazi gölgelendiricisinde 4 kademeyi örneklemek 0,2-0,3 ms ekler.

Yükseklik Haritasından Arazi Öz Gölgelendirmesi

CSM'nin maliyetli hâle geldiği çok büyük arazilerde bir ufuk haritasını önceden hesaplayın: her arazi hücresi için 8 ana yöndeki maksimum yükselme açısını saklayın. Görselleştirme sırasında bir noktanın gölgede olup olmadığını belirlemek için güneş açısını ufuk haritasıyla karşılaştırın. Skyrim, uzak arazilerde (CSM menzilinin ötesinde) arazi öz gölgelerini bu şekilde işler.

Ufuk haritası, yükseklik haritasından sunucu tarafında hesaplanır (birkaç saniyelik işlem) ve parça başına 128x128'lik bir doku olarak aktarılır (sıkıştırılmış hâlde 16 KB). Görsel etkisi belirgindir: dağ vadileri, son derece uzak görüş mesafelerinde bile gerçekçi biçimde kararır.

Akış İçin Arazi Verisi Sıkıştırması

Bir tarayıcı dünyasındaki darboğaz ağdır. Arazi verilerinde tasarruf edilen her bayt, daha hızlı yükleme süresi demektir.

Yükseklik Haritası Sıkıştırması

Ham 16 bit yükseklik haritaları iyi sıkıştırılır çünkü bitişik hücreler benzer değerlere sahiptir. İşlem hattı:

  1. Delta kodlama: Her hücre ile tahmin edilen değeri (komşularının ortalaması) arasındaki farkı saklayın. Delta değerleri küçüktür ve sıfıra yakın kümelenir.
  2. Niceleme: Uzak parçalarda hassasiyeti 16 bitten 12 bit veya 8 bite düşürün. 500 metre uzaklıkta, 8 bit yükseklik hassasiyeti (100 metrelik yükseklik aralığında 0,4 m çözünürlük) 16 bitten ayırt edilemez.
  3. Entropi kodlama: Delta kodlanmış akışa zlib veya brotli sıkıştırması uygulayın. Tipik sıkıştırma oranı: 4-8 kat.

Sonuç: 16 bitlik 65x65 bir parça, ham 8,4 KB'tan sıkıştırılmış 1-2 KB'a düşer. 8 bit azaltılmış hassasiyette: 0,5-1 KB.

Aşamalı Yükseklik Haritası Akışı

Araziyi önce düşük çözünürlükte gönderin, ardından iyileştirin. 17x17'lik bir yükseklik haritası (4 m hücre aralığına sahip 64 m'lik bir parça için gereken minimum değer) ham olarak 578 bayt, sıkıştırılmış olarak ise 200 bayttan azdır. Arazi anında görünür. Ardından 33x33'lük iyileştirmeyi aktarın (tek numaralı satır/sütun örneklerini ekler). Son olarak 65x65 tam çözünürlüğü aktarın. Her seviye, önceki verilerin yerini almadan ayrıntı ekler.

Bu, geometri klip haritası LOD halkalarıyla eşleşir: uzak arazi düşük çözünürlüklü sürümü (17x17), orta mesafedeki arazi orta çözünürlüğü (33x33), yakın plan ise tam çözünürlüğü (65x65) kullanır. Akış önceliği, görselleştirme LOD'siyle eşleşir.

SDF Hacim Sıkıştırması

Seyrek SDF hacimleri önemli ölçüde sıkıştırılır çünkü çoğu voksel yüzeyden uzaktadır (boş alan). Seçenekler:

Çalışma uzunluğu kodlaması: Aynı değerlerden oluşan dizileri (boş vokselleri) kodlayın. Tipik SDF hacimlerinin %95'ten fazlası boştur, dolayısıyla RLE 10-50 kat sıkıştırma sağlar.

Seyrek sekizli ağaç: Yalnızca yüzeyi kesen vokseller içeren sekizli ağaç düğümlerini saklayın. Boş alanda düğüm yoktur. Tek bir mağara tüneline sahip 64^3'lük bir SDF hacminde yalnızca 2.000-5.000 dolu düğüm bulunabilir (toplam 262.144 voksele karşılık) ve her biri 1-2 bayt olarak saklanır.

Entropi odaklı aşamalı sıkıştırma (2024, HAL), alanı entropi için optimize edilmiş düzlemler ve uyarlanabilir niceleme ile özyinelemeli olarak bölerek 3B uzamsal verilere uygulanır. Bu, özellikle ağ üzerinden akışın düşük bit hızlarında yararlı olan, hız-bozulma dengeleri için optimize edilmiş bir iyileştirme akışı üretir.

Tümünü Bir Araya Getirmek: Tarayıcı Arazi İşlem Hattı

Bu makalenin başındaki stratejik genel bakış, hızlı karar çerçevesini ve aşamalı geliştirme planını sunar. Bu bölüm, hem sunucu tarafındaki üretim işlem hattının hem de tarayıcıdaki görselleştirme işlem hattının tüm teknik ayrıntılarını sağlar.

Üretim İşlem Hattı (Sunucu Tarafı)

Üretim işlem hattı, Gaea ve World Machine'in düğüm grafiği yaklaşımından esinlenerek fiziksel süreçlerden oluşan yönlendirilmiş bir grafik şeklinde çalışır. Her aşama, önceki aşamanın çıktısını alıp iyileştirir. Üreticiler her aşamadaki parametreleri kontrol eder.

AşamaGirdiSüreçÇıktıSüre
1. Temel araziTohum veya metin istemiTerrain Diffusion / MESA / gürültü + fBm16 bit yükseklik haritası1-5 sn
2. ErozyonYükseklik haritasıAnalitik akarsu gücü + termal erozyonErozyona uğramış yükseklik haritası, akış birikim haritası, tortu haritası0,5-2 sn
3. NehirlerErozyona uğramış yükseklik haritası, akış haritasıDrenaj ağı çıkarımı, kanal oymaNehir eğrileri, su seviyesi haritası0,5 sn
4. KıyıDeniz seviyesine yakın yükseklik haritasıNEWTS tarzı dalga erozyonuKıyı özellikleri (uçurumlar, plajlar, kaya sütunları)1-3 sn
5. HacimselYükseklik haritası + üretici amacıArenite erozyonu / mağara üretimi / SDF yontularıEtkilenen parçalar için seyrek SDF hacimleri1-60 sn
6. MalzemelerYükseklik haritası + erozyon haritalarıTerraFusion / Geodiffussr / prosedürel kurallarSplat haritaları, arazi dokuları1-5 sn
7. Bitki örtüsüYükseklik haritası + akış haritası + malzemelerEkosistem rekabet simülasyonuParça başına her biyom için yoğunluk haritaları1-3 sn
8. Ufuk haritalarıSon yükseklik haritası8 yönde maksimum yükselme açısıParça başına öz gölge dokusu2-5 sn
9. ParçalamaTüm çıktılarDilimleme, delta kodlama, sıkıştırma, karma oluşturmaCDN üzerindeki parça paketleri5-10 sn
Toplam15-90 sn

Yeni bir 4x4 km dünya 15-90 saniyede üretilir. Üretici düzenlemeleri (yontma, parametre değişiklikleri), yalnızca etkilenen parçalar için etkilenen aşamaları yeniden çalıştırır ve genellikle 5 saniyeden kısa sürede tamamlanır.

Görselleştirme İşlem Hattı (Tarayıcı)

AdımWebGPU yoluWebGL 2 yedeğiKare bütçesi
1. AkışÖncelik kuyruğu, tahmine dayalı ön getirmeAynıYok (asenkron)
2. Yükseklik haritası arazisiGPU güdümlü CDLOD dörtlü ağacı, hesaplama tabanlı ayıklama, dolaylı çizimGeometri klip haritaları, CPU halka güncellemeleri0,5-1 ms
3. Hacimsel örgüHesaplama tabanlı marching cubes + TransvoxelWeb Worker'dan önceden üretilmiş örgüler, önbelleğe alınmış 2-3 LOD0,5-2 ms
4. LOD geçişleriTepe noktası gölgelendiricisinde geometrik biçim geçişiAynıYukarıya dâhil
5. MalzemelerÜç düzlemli PBR + Laplace harmanlama + fazör gürültüsü ayrıntısı + sanal dokulamaÜç düzlemli PBR + doğrusal harmanlama + önceden işlenmiş splat haritaları1-1,5 ms
6. Bitki örtüsüComputeInstanceCulling + IndirectBatchedMesh, altıgen döşemeli zemin örtüsüCPU görüş hacmi ayıklaması + InstancedMesh1-1,5 ms
7. SuAkışa hizalı nehir şeritleri, derinlik tabanlı kıyı köpüğüAynı (daha basit yansımalar)0,5 ms
8. Gölgeler3-4 kademeli CSM + ufuk haritası öz gölgeleri2 kademeli CSM0,5-1 ms
9. AtmosferHillaire gökyüzü modeli + hacimsel sis + hava durumu parçacıklarıPreetham gökyüzü + mesafe sisi0,5 ms
10. Dinamik efektlerSu birikintisi oluşumu, ayak izi deformasyonu, kar/yağmurSu birikintisi oluşumu, yağmur parçacıkları0,3 ms
Toplam arazi3,5-6,5 ms

60 fps'de (kare başına 16,6 ms), arazi sistemi WebGPU'da kare bütçesinin %21'ini, WebGL 2'de ise %39'unu kullanır. Geri kalanı oyuncu avatarları, üretici nesneleri, kullanıcı arayüzü, ağ iletişimi ve son işleme için kullanılabilir.

Bu Neden Tarayıcıda Çalışıyor?

İşlem hattının tamamı üç tarayıcı kısıtı etrafında tasarlanmıştır:

Bellek (en fazla 2-4 GB): 256 MB'lık arazi bütçesi yeterlidir çünkü yükseklik haritası parçalarının her biri 2-8 KB'tır (delta kodlanmış), SDF hacimleri seyrektir (hacimsel parça başına 100-500 KB), bitki örtüsü çalışma zamanında 1 KB'lık yoğunluk haritalarından üretilir ve dokular KTX2 sıkıştırması kullanır (1024x1024 başına 150 KB). Herhangi bir anda, tarayıcıda görünür olan dünyanın toplam ağırlığı 50-200 MB'tır.

Disk erişimi yok: Her şey ağ üzerinden aktarılır. Aşamalı yükleme sayesinde oyuncu araziyi <100 ms içinde (düşük çözünürlüklü yükseklik haritası), dokulu araziyi <300 ms içinde ve tüm ayrıntıları ❤️ sn içinde görür. Hıza dayalı ön getirme, normal keşif sırasında yükleme sürelerini gizler.

GPU'lar büyük ölçüde değişkenlik gösterir: WebGPU yolu üst düzey masaüstü bilgisayarları destekler. WebGL 2 yedeği, mobil cihazlar dâhil diğer her şeyi destekler. Aynı parça verileri her iki yolu da besler. Fark, veri biçiminde değil görselleştirme tekniğindedir. WebGL 2 çalıştıran bir Chromebook, WebGPU çalıştıran bir RTX 4090 ile aynı dünyayı görür; yalnızca ayrıntı düzeyi ve görüş mesafesi daha düşüktür.

Araştırma Makaleleri

Arazi Temsili ve Örgü Üretimi

"Marching Cubes: Yüksek Çözünürlüklü Bir 3B Yüzey Oluşturma Algoritması" -- Lorensen ve Cline (SIGGRAPH 1987). DOI. Hacimsel verilerden üçgen örgüler çıkarmaya yönelik temel algoritma. 38 yıl sonra hâlâ en yaygın kullanılan izoyüzey çıkarma yöntemidir. GPU paralel uygulamaları, WebGPU hesaplama gölgelendiricilerinde gerçek zamanlı çalışır. "Hermite Verilerinin Dual Contouring Yöntemiyle İşlenmesi" -- Ju, Losasso, Schaefer, Warren (SIGGRAPH 2002). DOI. Marching cubes yönteminin yuvarlaklaştırdığı keskin detayları (uçurum kenarları, kaya köşeleri) koruyan mesh'ler üretir. Mesafe değerlerine ek olarak yüzey normalleri gerektirir.

"Neural Dual Contouring" -- Chen ve diğerleri (2022). arXiv:2202.01999. Dual contouring yöntemindeki en küçük karelere dayalı köşe yerleşimini öğrenilmiş bir tahmin modeliyle değiştirir. Karmaşık doğal detaylarda daha iyi yüzey kalitesi sağlar.

"Transvoxel Algoritması" -- Lengyel (2009, 2024'te güncellendi). transvoxel.org. Voksel arazi için kesintisiz LOD geçişleri sağlar. 73 geçiş hücresi türü kullanarak çözünürlük sınırlarındaki çatlakları ortadan kaldırır. Patent gerektirmez ve gerçek zamanlı uygulamalar için tasarlanmıştır.

Arazi LOD'u ve Render İşleme

"Geometri Clipmap'leri: İç İçe Düzenli Izgaralarla Arazi Render İşleme" -- Losasso ve Hoppe (SIGGRAPH 2004). Makale. Eş merkezli LOD halkalarıyla sabit maliyetli arazi render işlemesi sunar. 40 GB büyüklüğündeki arazileri etkileşimli hızlarda işler. Çoğu tarayıcı tabanlı arazi renderer'ının temelini oluşturur.

"CDLOD: Arazi Render İşleme için Hibrit LOD" -- Strugar (2014). Makale. Geometri clipmap'lerini quadtree tabanlı uyarlanabilir bir yaklaşımla geliştirir. Çözünürlüğü yalnızca mesafeye göre değil, arazi karmaşıklığına göre de dağıtır.

"GPU Güdümlü Render İşleme İş Hatları" -- Ubisoft (SIGGRAPH 2015), Wihlidal ve Hoppe. Compute shader'ların ayıklama, LOD seçimi ve çizim çağrısı oluşturma işlemlerini yönettiği GPU güdümlü yaklaşımı resmileştirdi. WebGPU arazi iş hattımızın mimari kalıbını oluşturur.

Fiziksel Arazi Üretimi

"Hızlı Arazi Üretimi için Fizik Tabanlı Analitik Erozyon" -- Cordonnier ve diğerleri (2024). HAL. Yinelemeli simülasyondan kaçınan, akarsu gücü yasasına dayalı analitik erozyon. Milisaniyeler içinde fiziksel olarak gerçekçi araziler üretir.

"GPU'da Hızlı Hidrolik Erozyon Simülasyonu ve Görselleştirme" -- Mei, Decaudin, Hu (2007). HAL. Sığ su simülasyonunu kullanan GPU paralel hidrolik erozyon yöntemi. Çoğu oyun motorundaki erozyon uygulamasının temelini oluşturur.

"Arenite: Fizik Tabanlı Bir Kumtaşı Simülatörü" -- SIGGRAPH 2025. Proje. Gerilim ve erozyon simülasyonuyla kemerler, peri bacaları ve kaya oyukları üreten çoklu fizik tabanlı erozyon sistemi. Masaüstü GPU'larda 5 dakikadan kısa sürede çalışır.

"Dik Arazi Erozyonu için Verimli Moloz Akışı Simülasyonu" -- Purdue CGVLAB (2024). Makale. Gerçekçi dağlık arazi şekilleri üreten, GPU hızlandırmalı moloz akışı ve dik yamaç erozyonu.

"Esnek Arazi Erozyonu" -- IRIT-STORM (2024). Springer. Yükseklik alanları, voksel ızgaraları, örtük yüzeyler ve katmanlı malzemeler üzerinde birleşik bir arayüzle çalışan parçacık tabanlı erozyon. Hibrit arazi temsilleri için tek bir erozyon sisteminin kullanılmasını sağlar.

Arazi Detayları ve Dokulandırma

"GPU Dostu Laplasyen Doku Harmanlama" -- Wronski (NVIDIA, 2025). JCGT. Ön hesaplama gerektirmeden arazi malzemeleri için gerçek zamanlı Laplasyen piramit harmanlama sunar. Birleşim izi kusurlarını ortadan kaldırırken keskin detayları korur. Fragment başına yalnızca birkaç ek doku örneklemesi gerektirir.

"Kontrollü Prosedürel Desenlerle Gerçek Zamanlı Arazi İyileştirme" -- Grenier ve diğerleri (2024). CGF. Yükseklik haritası çözünürlüğünün 32 katına kadar ulaşan, fazör gürültüsü tabanlı mikro erozyon detayları. Eğime hizalanmış desenler tamamen bir fragment shader içinde çalışır.

Uyarlanabilir Mozaikleme

"Büyük Ölçekli Oyun Bileşenleri için Eşzamanlı İkili Ağaçlar" -- Benyoub ve Dupuy (Intel, HPG 2024). Makale. Uyarlanabilir arazi mozaiklemesi için GPU dostu ikili ağaç veri yapısı. Gezegen ölçeğindeki geometrileri 0,2 ms'den kısa sürede render eder. Kare alanlardan rastgele çokgen mesh'lere genişletilmiştir.

Mağara ve Yeraltı Üretimi

"PLUME: Prosedürel Katmanlı Yeraltı Modelleme Motoru" -- 2024. arXiv:2508.20926. Katmanlı prosedürel kurallarla gerçekçi mağara ve lav tüpü ortamları üretmeye yönelik açık kaynaklı bir çerçeve. Başlangıçta uzay keşif robotları için geliştirilmiştir.

Sinir Ağı Tabanlı Arazi Sentezi

"InfiniteDiffusion: Açık Dünya Arazi Üretiminde Öğrenilmiş Gerçekçilik ile Prosedürel Kullanışlılığı Birleştirme" -- Goslin (2025, SIGGRAPH 2026). arXiv:2512.08309. Laplasyen kodlamalı hiyerarşik difüzyon modellerini kullanarak sonsuz ve seed açısından tutarlı arazi üretimi sağlar. Tüketici sınıfı GPU'larda temel modele göre 9 kat daha hızlıdır.

"TerraFusion: Arazi Geometrisi ve Dokusunun Birlikte Üretilmesi" -- 2025. arXiv:2505.04050. Eskiz koşullandırmasıyla eşzamanlı yükseklik haritası ve doku sentezi için örtük difüzyon.

"MESA: Metin Güdümlü Arazi Üretimi" -- CVPR 2025 Workshop. arXiv:2504.07210. Copernicus uzaktan algılama eğitim verilerini kullanan metinden arazi üretimi.

"Geodiffussr: Yükseklik Tutarlılığıyla Üretken Arazi Dokulandırma" -- 2025. arXiv:2511.23029. Akış eşleştirmeyi kullanarak yükseklik verilerine uyan, metin güdümlü arazi dokusu üretimi.

"Sketch2Terrain: Yapay Zekâ Güdümlü Gerçek Zamanlı Arazi Eskizi Eşleme" -- 2025. Proje. Artırılmış gerçeklikte eskizden arazi üretimi. Manuel eşlemeye kıyasla %38 verimlilik artışı sağlar.

Bitki Örtüsü ve Ekosistem Simülasyonu

"Büyük Ölçekli Sanal Arazilerde GPU Tabanlı Gerçek Zamanlı Prosedürel Bitki Örtüsü Dağılımı" -- SBGames 2018. Makale. Biyotik ve abiyotik etkenleri kullanarak GPU üzerinde quadtree tabanlı bitki örtüsü dağıtımı.

"Ormanların Prosedürel Üretimi ve Render Edilmesi" -- 2022. Makale. Gerçekçi orman dağılımı için L-sistemi tabanlı ağaç üretimini ekosistem rekabet simülasyonuyla birleştirir.

"GPU İş Grafikleriyle Gerçek Zamanlı Prosedürel Üretim" -- AMD GPUOpen 2024. Makale. 79 binden fazla bitki örtüsü örneğini 4 ms'den kısa sürede üreten GPU iş grafikleri.

Tarayıcı GPU Teknolojisi

"GSWT Renderer" -- SIGGRAPH Asia 2025. GitHub. Dinamik LOD ve akış desteğiyle sonsuz 3D arazi üretmek için Gaussian Splatting Wang Tiles kullanan WebGPU + Rust/Wasm renderer.

"Yerel Uygulama Hızında Tarayıcı GPU Hesaplama: WebGPU Marching Cubes" -- Usher (2024). Blog. WebGPU compute'un paralel mesh üretim algoritmalarında yerel uygulama hızında performans sağladığını gösterir.

Voksel Render İşleme ve Büyük Ölçekli Sahneler

"Aokana: Açık Dünya Oyunları için GPU Güdümlü Voksel Render İşleme Çerçevesi" -- 2025. arXiv:2505.02017. On milyarlarca voksel içeren sahneler için LOD ve akış destekli Seyrek Voksel DAG'ı. Önceki en gelişmiş yöntemlere kıyasla bellek kullanımını 9 kat azaltır ve render işlemesini 4,8 kat hızlandırır. Oyun motorlarıyla entegrasyon için tasarlanmıştır.

Prosedürel Geometri ve Yeniden Yüzeyleme

"GPU Mesh Shader'larıyla Gerçek Zamanlı Prosedürel Yeniden Yüzeyleme" -- Raad ve diğerleri (Eurographics 2025). Makale. Mesh shader'ları kullanarak render sırasında kaba kontrol mesh'lerinden ayrıntılı geometrik yüzeyler üretir. Yüksek çözünürlüklü geometriyi bellekte tutmadan dinamik LOD kullanılmasını sağlar.

Arazi Gölgeleri

"Arazi Gölgelerini Optimize Etme" -- AMD GPUOpen. Blog. Büyük ölçekli araziler için pratik CSM optimizasyonu. Kademelerin bölünmesini, GPU açısından verimli gölge haritası oluşturmayı ve araziye özgü optimizasyonları ele alır.

Sanal Geometri ve Mesh Optimizasyonu

"Nanite WebGPU" -- Scthe (2024). GitHub, Demo. UE5 Nanite mimarisinin eksiksiz tarayıcı uygulaması: meshlet LOD hiyerarşisi, WGSL ile yazılmış yazılım rasterleştiricisi, meshlet başına ayıklama ve billboard impostor'ları.

"Dakikalar İçinde Milyarlarca Üçgen" -- Kapoulkine (2025). Blog. Hiyerarşik kümelenmiş LOD üretimi için Meshoptimizer v1.0. Devasa mesh'leri verimli biçimde Nanite tarzı küme DAG'larına dönüştürür.

"Billboard Splatting (BBSplat)" -- 2024. arXiv:2411.08508. Yeni bakış açısı sentezi için öğrenilebilir dokulu düzlemsel primitifler; 3D Gaussian Splatting'e kıyasla 17 kat sıkıştırma sağlar.

Arazi Aydınlatması ve Küresel Aydınlatma

"Once Human'da Küresel Aydınlatma" -- GDC 2025. Oturum. 16 km'lik açık dünya için hibrit GI: sinir ağıyla sıkıştırılmış problar (69:1 oranı), makine öğrenimi tabanlı iç/dış mekân ışık sızıntısı çözümü ve dinamik prob tepkileri.

"AMD FidelityFX Brixelizer ile GI" -- GDC 2024. Makale. Ekran uzayı probları kullanan, compute tabanlı seyrek mesafe alanı kademeleri. Donanımsal ışın izleme gerektirmez.

"Radiance Cascades" -- 2024. Blog. Zamansal birikim olmadan kademeli ışıma yapılarını kullanan, gürültüsüz gerçek zamanlı küresel aydınlatma.

Bölüm Tasarımı ve Keşif

"PlotMap: Oyun Dünyaları Oluşturmak için Otomatik Yerleşim Tasarımı" -- 2023. arXiv:2309.15242. Arazideki anlatısal mekânsal kısıtlamaları karşılayan, yapay zekâ destekli ilgi noktası yerleşimi.

"Mekânsal Keşif Tetikleyicileri" -- Purdue University (FDG 2022). Makale. Oyuncuyu keşfe yönlendiren dört tasarım kalıbı: uç noktalar, görsel engeller, bulunduğu yere uymayan nesneler ve mekânsal bağlantılar.

Veri Sıkıştırma ve Akış

"3D Nokta Bulutlarının Entropi Güdümlü Aşamalı Sıkıştırılması" -- SGP 2024. Makale. Uyarlanabilir nicelemeyle yinelemeli uzay bölümleme kullanan, hız-bozulma açısından optimize edilmiş aşamalı sıkıştırma. Değişken bant genişliğine sahip ağ akışına uygun iyileştirme akışları üretir.

Etkileşimli Düzenleme

"WebGPU SDF Düzenleyicisi" -- Nijhoff (2026). Proje. Gerçek zamanlı marching cubes, Boole işlemleri, yumuşak harmanlama ve octree uzay bölümleme özellikleriyle tarayıcıda tam kapsamlı SDF modelleme. Primitif başına 112 bayt kullanır.

Nehir ve Kıyı Üretimi

"Prosedürel Nehir Drenaj Havzaları" -- Patel (Red Blob Games). Proje. Voronoi/üçgen mesh kenar sınıflandırmasını kullanan, drenaj öncelikli nehir üretimi. Arazi yüksekliğini atamadan önce nehir hiyerarşilerini oluşturur.

"NEWTS1.0: Dalgalar ve İlerleyen Falezlerle Kıyı Erozyonunun Sayısal Modeli" -- MIT (2024). Makale. Eşit geri çekilme ve dalga güdümlü erozyon kullanan basitleştirilmiş kıyı erozyonu modeli. Gerçek jeomorfolojiyle uyumlu burunlar, koylar, deniz sütunları ve kemerler üretir.

Ek Kaynaklar

Hemen deneyinÜretilmiş bir araziyi oyuna yerleştirin

Üzerinde yürüyebildiğinizde arazi çok daha güzeldir.

Ücretsiz oluştur →Ücretsiz, tarayıcınızda çalışır, kurulum yok.