Skip to content

ब्राउज़र ओपन वर्ल्ड के लिए डायनेमिक LOD और स्ट्रीमिंग के साथ लैंडस्केप जनरेशन

परलिन नॉइज़ वाले हाइटमैप प्रोसीजरल टेरेन के लिए सामान्य शुरुआती बिंदु हैं। fBm के कुछ ऑक्टेव की परतें जोड़ें, एक कलर ग्रेडिएंट लागू करें और आपके पास कुछ ऐसा तैयार हो जाता है जो टेरेन जैसा दिखता है। हर ट्यूटोरियल यहीं समाप्त हो जाता है। लेकिन वास्तविक लैंडस्केप परतों में लगाए गए नॉइज़ जैसे नहीं दिखते। उनमें पानी द्वारा तराशी गई नदी घाटियाँ, तनाव से बनी दरारों द्वारा आकार पाई चट्टानी सतहें और लाखों वर्षों के अपरदन से बनी गुफाएँ तथा मेहराब होते हैं। उनमें परस्पर संबंधित टेक्सचर होते हैं—समतल भूमि पर घास, खड़ी ढलानों पर चट्टान और वृक्षरेखा के ऊपर बर्फ—जो उन्हीं भौतिक प्रक्रियाओं से उभरते हैं जिन्होंने ज्यामिति को आकार दिया।

यह गाइड बताती है कि नॉइज़ के बाद क्या आता है। इसमें भौतिक सिद्धांतों पर आधारित जनरेशन विधियाँ, गुफाओं और ओवरहैंग को संभालने वाले वॉल्यूमेट्रिक निरूपण, डिफ्यूज़न-आधारित न्यूरल टेरेन सिंथेसिस और इन सबको ब्राउज़र टैब में 60fps पर रेंडर करने के लिए आवश्यक GPU-संचालित LOD तथा स्ट्रीमिंग पाइपलाइन शामिल हैं।

यहाँ दी गई हर चीज़ हमारी विशिष्ट बाधा को ध्यान में रखती है: WebGL 2 / WebGPU में चलने वाला, नेटवर्क पर स्ट्रीम होने वाला और क्रिएटर्स द्वारा संपादित किया जा सकने वाला मल्टीप्लेयर ओपन वर्ल्ड।

हाइटमैप पर्याप्त क्यों नहीं हैं

हाइटमैप प्रत्येक ग्रिड बिंदु के लिए एक ऊँचाई मान संग्रहीत करता है। यह एक 2D फ़ंक्शन है: (x, z) देने पर y लौटाता है। यह निरूपण सघन, GPU-अनुकूल और तेज़ी से रेंडर होने वाला है। लेकिन इसकी कुछ मूलभूत सीमाएँ हैं जो क्रिएटर वर्ल्ड के लिए मायने रखती हैं।

गुफाएँ या ओवरहैंग संभव नहीं। हाइटमैप ऐसे टेरेन को निरूपित नहीं कर सकता जहाँ एक बिंदु की दो अलग-अलग ऊँचाइयाँ हों। गुफाएँ, मेहराब, चट्टानी ओवरहैंग, सुरंगें और तैरते द्वीप—ये सभी असंभव हैं। इसी कारण Minecraft, No Man's Sky और Deep Rock Galactic, सभी को वॉल्यूमेट्रिक टेरेन की आवश्यकता होती है।

ऊर्ध्वाधर फ़ीचर संभव नहीं। हाइटमैप में एक ऊर्ध्वाधर चट्टानी सतह लगभग अनंत ढलान होती है, जिससे टेक्सचर अत्यधिक खिंचते हैं और कोलिज़न आर्टिफ़ैक्ट बनते हैं। वास्तविक चट्टानों में क्षैतिज फ़ीचर—जैसे कगार और दरारें—होते हैं, जिन्हें हाइटमैप निरूपित नहीं कर सकता।

नॉइज़, नॉइज़ जैसा ही दिखता है। fBm के 8 ऑक्टेव और डोमेन वार्पिंग के बाद भी टेरेन में कृत्रिमता बनी रहती है। उसमें वास्तविक भूविज्ञान की दिशात्मक संरचना नहीं होती: पर्वतीय धाराएँ, जल-निकासी नेटवर्क, तलछट निक्षेप और विवर्तनिक वलन। ये पैटर्न नॉइज़ फ़ंक्शन से नहीं, बल्कि भौतिक प्रक्रियाओं से उभरते हैं।

क्रिएटर के संपादन सीमित होते हैं। यदि क्रिएटर केवल ऊँचाइयाँ बदल सकते हैं, तो वे सुरंगें नहीं खोद सकते, गुफाएँ नहीं बना सकते या भूमिगत स्थान निर्मित नहीं कर सकते। ऐसे वर्ल्ड के लिए जिसे क्रिएटर वास्तव में आकार दे सकें, टेरेन निरूपण को सामग्री जोड़ने के साथ-साथ हटाने की सुविधा भी देनी होगी।

समाधान हाइटमैप को पूरी तरह छोड़ देना नहीं है। वे उस 90% टेरेन के लिए अब भी सर्वोत्तम निरूपण हैं जो एक साधारण सतह है। समाधान एक हाइब्रिड दृष्टिकोण है: आधार टेरेन के लिए हाइटमैप, जहाँ जटिल ज्यामिति आवश्यक हो वहाँ वॉल्यूमेट्रिक ओवरले, यथार्थवादी भू-आकृतियों के लिए भौतिक रूप से सही जनरेशन और ऐसी विविधता के लिए न्यूरल सिंथेसिस जिसे नॉइज़ हासिल नहीं कर सकता।

संक्षिप्त उत्तर: हम वास्तव में क्या बनाएँगे

गहराई में जाने से पहले, यह निर्णय लेने की रूपरेखा है। लेख का शेष भाग हर घटक को समझाता है।

टेरेन निरूपण

एक हाइब्रिड हाइटमैप + SDF सिस्टम का उपयोग करें। हाइटमैप पूरे वर्ल्ड को कवर करता है—यह सस्ता, सघन और प्रमाणित है। SDF वॉल्यूम केवल वहीं मौजूद होते हैं जहाँ गुफाओं, ओवरहैंग या क्रिएटर द्वारा तराशे गए फ़ीचर के लिए उनकी आवश्यकता होती है—संभवतः 5-10% चंक्स में। इससे वर्ल्ड का 90% हिस्सा हाइटमैप की लागत पर बना रहता है, जबकि आवश्यक स्थानों पर मनचाही ज्यामिति का समर्थन मिलता है।

जनरेशन पाइपलाइन

इसे सर्वर-साइड पर एक शृंखलाबद्ध प्रक्रिया के रूप में चलाएँ:

  1. Terrain Diffusion—या टेक्स्ट प्रॉम्प्ट के लिए MESA—एक सीड से आधार हाइटमैप जनरेट करता है। यह वास्तविक एलिवेशन डेटा पर प्रशिक्षित, भूवैज्ञानिक रूप से यथार्थवादी भू-आकृतियों के साथ नॉइज़ को प्रतिस्थापित करता है।
  2. एनालिटिकल इरोजन—स्ट्रीम पावर लॉ—मिलीसेकंड में नदी नेटवर्क और पर्वतीय धाराओं के साथ हाइटमैप को परिष्कृत करता है।
  3. TerraFusion या Geodiffussr हाइटमैप से परस्पर संबंधित टेक्सचर जनरेट करता है—या WebGL 2 फ़ॉलबैक के लिए प्रोसीजरल ढलान/ऊँचाई नियमों का उपयोग करें।
  4. इकोसिस्टम सिमुलेशन वनस्पति घनत्व मैप बनाता है।
  5. Arenite-शैली का इरोजन उन स्थानों पर चट्टानी सतहों, मेहराबों और गुफाओं के लिए SDF वॉल्यूम जनरेट करता है जहाँ टेरेन को उनकी आवश्यकता होती है।
  6. चंक बनाएँ, कंप्रेस करें और CDN पर अपलोड करें। औसत चंक: 2-8 KB। वॉल्यूमेट्रिक डेटा वाला जटिल चंक: 20-100 KB।

क्रिएटर पैरामीटर समायोजित करके—“अधिक आर्द्र,” “अधिक पर्वतीय,” “गुफाएँ जोड़ें”—अपना आशय स्केच करके या ब्रश तथा SDF टूल से सीधे स्कल्प्ट करके इस पाइपलाइन के साथ इंटरैक्ट करते हैं।

LOD रणनीति

ब्राउज़र क्षमताहाइटमैप LODवॉल्यूमेट्रिक LODवनस्पति LOD
WebGPUकंप्यूट कलिंग + इनडायरेक्ट ड्रॉ वाला GPU-संचालित क्वाडट्री (CDLOD)कंप्यूट मार्चिंग क्यूब्स + Transvoxel वाला मल्टी-रिज़ॉल्यूशन SDFइनडायरेक्ट ड्रॉ के साथ ComputeInstanceCulling
WebGL 2CPU-साइड रिंग अपडेट वाले ज्योमेट्री क्लिपमैप2-3 LOD स्तरों पर पहले से जनरेट और कैश किए गए मेशCPU फ्रस्टम कलिंग, InstancedMesh

दोनों पाथ बिना पॉपिंग वाले ट्रांज़िशन के लिए वर्टेक्स शेडर में जियोमॉर्फ़िंग का उपयोग करते हैं। दोनों दूर की वनस्पति के लिए बिलबोर्ड इम्पोस्टर का उपयोग करते हैं। WebGPU पाथ तेज़ है—3.5ms टेरेन बजट—लेकिन WebGL 2 पाथ भी व्यावहारिक है—6.5ms।

स्ट्रीमिंग

प्रोग्रेसिव लोडिंग: पहले टेरेन ज्यामिति (<100ms), फिर टेक्सचर (<300ms), उसके बाद वनस्पति (<1s) और अंत में वॉल्यूमेट्रिक डेटा (<3s)। खिलाड़ी के वेग के आधार पर प्री-फ़ेच करें। मेमोरी बजट: कुल 256 MB टेरेन।

संपादन

सतह को स्कल्प्ट करने के लिए हाइटमैप ब्रश—ऊपर उठाना, नीचे करना, स्मूद करना, अपरदित करना। वॉल्यूमेट्रिक संपादन के लिए SDF प्रिमिटिव—गुफाएँ तराशना, मेहराब जोड़ना। दोनों स्थानीय रूप से तुरंत लागू होते हैं, 100-300ms में सर्वर से सिंक होते हैं और डेल्टा अपडेट के माध्यम से अन्य खिलाड़ियों तक प्रसारित होते हैं।

किस क्रम में क्या बनाएँ

महीना 1-2: ज्योमेट्री क्लिपमैप के साथ हाइटमैप टेरेन। केवल WebGL 2। CDN से स्ट्रीमिंग। प्रोसीजरल ढलान/ऊँचाई मटेरियल। इससे हर ब्राउज़र में टेरेन स्क्रीन पर दिखाई देने लगता है। जनरेशन के लिए नॉइज़ + एनालिटिकल इरोजन का उपयोग करें—Terrain Diffusion प्रतीक्षा कर सकता है।

महीना 3-4: वनस्पति और वातावरण। घनत्व मैप से GPU-इंस्टेंस्ड घास और पेड़। दिन/रात चक्र वाला प्रोसीजरल आकाश। वायुमंडलीय कोहरा। कैस्केडेड शैडो मैप। वर्ल्ड एक वास्तविक स्थान जैसा महसूस होने लगता है।

महीना 5-6: क्रिएटर संपादन। हाइटमैप ब्रश टूल। मल्टीप्लेयर टेरेन संपादनों के लिए डेल्टा-आधारित सिंक। समवर्ती संपादन के लिए स्थानिक लॉकिंग। इसी चरण में क्रिएटर वर्ल्ड को आकार देना शुरू करते हैं।

महीना 7-9: वॉल्यूमेट्रिक टेरेन और WebGPU पाथ। गुफाओं और ओवरहैंग के लिए SDF ओवरले। WebGPU कंप्यूट में मार्चिंग क्यूब्स। LOD सीमाओं के लिए Transvoxel। SDF स्कल्प्टिंग टूल। इससे संपूर्ण क्रिएशन टूलकिट उपलब्ध हो जाती है।

महीना 10-12: न्यूरल जनरेशन और अंतिम परिष्करण। आधार हाइटमैप के लिए Terrain Diffusion या MESA। टेक्सचर के लिए TerraFusion/Geodiffussr। सूक्ष्म विवरण के लिए फ़ेज़र नॉइज़। दोहराव रोकने के लिए हेक्स-टाइलिंग। वर्चुअल टेक्सचरिंग। लैप्लेशियन ब्लेंडिंग। टेरेन प्रोडक्शन-क्वालिटी तक पहुँच जाता है।

इस क्रम का अर्थ है कि 2 महीने बाद कुछ खेलने योग्य, 4 महीने बाद कुछ सुंदर, 6 महीने बाद कुछ संपादन योग्य और 12 महीने बाद अत्याधुनिक अनुभव उपलब्ध होगा।

इस लेख का शेष भाग प्रत्येक निर्णय के पीछे का शोध प्रस्तुत करता है।

हाइटमैप से आगे के टेरेन निरूपण

साइन्ड डिस्टेंस फ़ील्ड (SDF)

साइन्ड डिस्टेंस फ़ील्ड 3D स्पेस के प्रत्येक बिंदु पर निकटतम सतह तक की दूरी संग्रहीत करता है। धनात्मक मान बाहर होते हैं, ऋणात्मक मान अंदर होते हैं और ज़ीरो-क्रॉसिंग स्वयं सतह होती है। SDF गुफाओं, मेहराबों और तैरती ज्यामिति सहित मनचाहे 3D आकारों को निरूपित कर सकते हैं।

किसी SDF को मेश के रूप में रेंडर करने के लिए, आप ज़ीरो-क्रॉसिंग को त्रिभुजों के रूप में निकालने हेतु मार्चिंग क्यूब्स—या उसके किसी वैरिएंट—को चलाते हैं। मेश रिज़ॉल्यूशन ग्रिड रिज़ॉल्यूशन पर निर्भर करता है: 256x256x256 SDF ग्रिड 1-मीटर रिज़ॉल्यूशन पर लगभग एक चंक के बराबर टेरेन बनाता है।

ब्राउज़र इम्प्लीमेंटेशन: WebGPU मार्चिंग क्यूब्स कंप्यूट शेडर के माध्यम से पूरी तरह GPU पर चलता है। Will Usher का webgpu-marching-cubes इम्प्लीमेंटेशन ब्राउज़र में 256^3 ग्रिड को रियल टाइम में प्रोसेस करता है और नेटिव-स्पीड प्रदर्शन हासिल करता है। एल्गोरिदम अत्यधिक समानांतर है—प्रत्येक सेल स्वतंत्र रूप से प्रोसेस होता है—जिससे यह GPU कंप्यूट के लिए आदर्श बनता है।

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);
}

स्टोरेज लागत: 8-बिट क्वांटाइज़्ड प्रिसीजन वाला 256^3 SDF बिना कंप्रेस किए 16 MB लेता है। लेकिन वॉल्यूम का अधिकांश भाग खाली होता है—सतह से बहुत दूर। रन-लेंथ एन्कोडिंग या स्पार्स ऑक्ट्री स्टोरेज सामान्यतः इसे घटाकर प्रति चंक 100-500 KB कर देता है, जो हाइटमैप टेरेन के तुलनीय है।

संपादन: SDF टेरेन स्वाभाविक रूप से संपादन योग्य है। सामग्री जोड़ना डिस्टेंस फ़ील्ड पर एक min() ऑपरेशन है। सामग्री हटाना—खोदना—किसी निगेटेड आकार के साथ max() ऑपरेशन है। आकारों के बीच स्मूद ब्लेंडिंग के लिए smoothMin() का उपयोग किया जाता है। ये ऑपरेशन इंटरैक्टिव गति पर कंप्यूट शेडर में चलते हैं।

डुअल कॉन्टूरिंग

मार्चिंग क्यूब्स ग्रिड किनारों पर वर्टेक्स रखता है, जिससे चिकनी सतहें बनती हैं लेकिन तीखे फ़ीचर—चट्टानी किनारे और पत्थरों के कोने—खो जाते हैं। डुअल कॉन्टूरिंग प्रत्येक सेल में उस स्थिति पर एक वर्टेक्स रखता है जो सेल के भीतर सतह का सबसे अच्छा निरूपण करता है, जिससे तीखे किनारे और कोने सुरक्षित रहते हैं।

एल्गोरिदम को प्रत्येक ग्रिड बिंदु पर डिस्टेंस फ़ील्ड मान और सतह नॉर्मल—SDF का ग्रेडिएंट—दोनों चाहिए। यह सर्वोत्तम वर्टेक्स स्थिति खोजने के लिए प्रति सेल एक छोटी लीस्ट-स्क्वेयर समस्या हल करता है। परिणामस्वरूप ऐसा मेश बनता है जो चिकने टेरेन और तीखे चट्टानी फ़ीचर, दोनों को कैप्चर करता है।

Neural Dual Contouring (Chen et al., 2022, arXiv:2202.01999) लीस्ट-स्क्वेयर सॉल्वर को एक न्यूरल नेटवर्क से बदलता है जो सर्वोत्तम वर्टेक्स स्थितियों और एज क्रॉसिंग का अनुमान लगाता है। यह विशेष रूप से जटिल प्राकृतिक चट्टानी संरचनाओं के लिए बेहतर सतह पुनर्निर्माण सटीकता और फ़ीचर संरक्षण हासिल करता है।

Transvoxel एल्गोरिदम

वॉल्यूमेट्रिक टेरेन की सबसे कठिन समस्या मेश जनरेट करना नहीं, बल्कि LOD ट्रांज़िशन है। जब एक हाई-रिज़ॉल्यूशन चंक किसी लो-रिज़ॉल्यूशन चंक के पास होता है, तो सीमा पर मेश आपस में नहीं मिलते और दिखाई देने वाली दरारें बन जाती हैं।

Eric Lengyel द्वारा डिज़ाइन किया गया Transvoxel एल्गोरिदम (transvoxel.org) अलग-अलग रिज़ॉल्यूशन की सीमाओं के साथ विशेष ट्रांज़िशन सेल जोड़कर इस समस्या को हल करता है। ये सेल अतिरिक्त त्रिभुजों के साथ रिज़ॉल्यूशन के अंतर को जोड़ते हैं, जो दोनों ओर पूरी तरह मेल खाते हैं। एल्गोरिदम जटिल सीमा समस्या को 73 समतुल्यता वर्गों तक घटा देता है—जबकि ब्रूट-फ़ोर्स दृष्टिकोण में लगभग 12 लाख मामले होते।

Transvoxel विशेष रूप से उन रियल-टाइम ऐप्लिकेशन के लिए बनाया गया है जहाँ वॉक्सेल डेटा डायनेमिक रूप से बदलता है—क्रिएटर संपादन, अपरदन, खनन। यह पेटेंट-मुक्त है और जारी किए जा चुके गेम—Space Engineers, Astroneer—में उपयोग किया गया है। संपादन योग्य वॉल्यूमेट्रिक टेरेन वाले ब्राउज़र वर्ल्ड के लिए Transvoxel ही LOD समाधान है।

हाइब्रिड: हाइटमैप आधार + वॉल्यूमेट्रिक ओवरले

ब्राउज़र ओपन वर्ल्ड के लिए व्यावहारिक दृष्टिकोण एक परतदार सिस्टम है:

परत 1: हाइटमैप टेरेन पूरे वर्ल्ड को कवर करता है। लहरदार पहाड़ियों, घाटियों और पर्वतों के लिए यह सस्ता और सघन निरूपण है। यह प्रति चंक छोटे हाइटमैप पैच—प्रत्येक 2-4 KB—के रूप में स्ट्रीम होता है। रेंडरिंग स्थिर GPU लागत वाले ज्योमेट्री क्लिपमैप का उपयोग करती है।

परत 2: वॉल्यूमेट्रिक ओवरले केवल उन चंक्स में मौजूद होते हैं जहाँ जटिल ज्यामिति आवश्यक है। गुफाएँ, चट्टानी सतहें, मेहराब, क्रिएटर द्वारा तराशी गई सुरंगें और भूमिगत स्थान स्पार्स SDF वॉल्यूम के रूप में संग्रहीत किए जाते हैं। केवल वॉल्यूमेट्रिक डेटा वाले चंक्स पर SDF स्टोरेज और मार्चिंग क्यूब्स की लागत आती है।

परत 3: क्रिएटर संशोधन आधार परतों के ऊपर SDF संपादनों के रूप में संग्रहीत किए जाते हैं। सुरंग खोदने वाला क्रिएटर सुरंग का SDF आकार संग्रहीत करता है। रेंडरिंग सिस्टम अंतिम मेश बनाने के लिए हाइटमैप सतह को वॉल्यूमेट्रिक घटाव और जोड़ के साथ संयोजित करता है।

समतल टेरेन के लिए इस हाइब्रिड की लागत लगभग शून्य होती है—केवल हाइटमैप—और यह केवल वहीं स्केल करता है जहाँ जटिलता मौजूद हो। एक सामान्य वर्ल्ड में शायद केवल 5-10% चंक्स को वॉल्यूमेट्रिक डेटा की आवश्यकता होगी।

भौतिक रूप से सही टेरेन जनरेशन

नॉइज़ यादृच्छिक टेरेन बनाता है। भौतिकी यथार्थवादी टेरेन बनाती है। अंतर साफ़ दिखाई देता है: नॉइज़ टेरेन में कोई संरचना नहीं होती—वह हर जगह बेतरतीब रूप से ऊबड़-खाबड़ होता है—जबकि भौतिक टेरेन में नदी नेटवर्क, पर्वतीय धाराएँ, जलोढ़ पंखे और चट्टानी परतें होती हैं जो अपरदन तथा विवर्तनिकी से उभरती हैं।

हाइड्रॉलिक इरोजन: आधार

Sebastian Lague का हाइड्रॉलिक इरोजन इम्प्लीमेंटेशन काम करते हुए। सिम्युलेट की गई वर्षाबूँदें ढलान पर नीचे बहती हैं, गति और ढलान के आधार पर सामग्री का अपरदन करती हैं और वेग घटने पर तलछट जमा करती हैं—जिससे सपाट नॉइज़ नदी घाटियों, पर्वतीय धाराओं और जलोढ़ पंखों में बदल जाता है।

पानी ढलान पर नीचे बहता है, तलछट उठाता है और धीमा होने पर उसे जमा कर देता है। लाखों आभासी वर्षों तक सिम्युलेट की गई यही एक प्रक्रिया फ़ीचर-विहीन नॉइज़ को पहचानने योग्य भूवैज्ञानिक विशेषताओं वाले टेरेन में बदल देती है। कण-आधारित विधि हाइटमैप पर सिम्युलेटेड वर्षाबूंदें गिराती है। प्रत्येक बूंद ढलान की दिशा में बहती है (ग्रेडिएंट का अनुसरण करते हुए), गति और ढलान के आधार पर सामग्री का अपरदन करती है, घुले हुए भार के रूप में तलछट साथ ले जाती है, और वेग घटने या वहन क्षमता पार होने पर तलछट जमा करती है। 200,000-500,000 कणों के बाद भूभाग में ये संरचनाएँ विकसित होती हैं:

  • नदी घाटियाँ, जो अधिकतम जल-प्रवाह के मार्ग का अनुसरण करती हैं
  • पर्वत-शिखर रेखाएँ, जो जल-निकासी बेसिनों को अलग करती हैं
  • जलोढ़ पंख, जहाँ तीखी घाटियाँ समतल मैदानों में खुलती हैं
  • पर्वतीय भूभाग में V-आकार की घाटियाँ और हिमानी भूभाग में U-आकार की घाटियाँ

GPU कार्यान्वयन: कण सिम्युलेशन को समानांतर किया जा सकता है। प्रत्येक कण स्वतंत्र होता है (इस सन्निकटन में कणों के पारस्परिक प्रभाव को अनदेखा किया जाता है, जो अपरदन के लिए स्वीकार्य है)। एक WebGPU कंप्यूट शेडर 60fps पर प्रति फ़्रेम 10,000 कणों को प्रोसेस करता है और वास्तविक समय के लगभग 3 सेकंड में 200,000 कण पूरे कर लेता है।

Sebastian Lague का ओपन-सोर्स कार्यान्वयन (GitHub) मानक शुरुआती बिंदु है। यह C# में एक ही थ्रेड पर चलता है और कुछ सेकंड में 1024x1024 हाइटमैप प्रोसेस करता है। GPU संस्करण 50-100 गुना तेज़ है।

तापीय अपरदन

जल ही अपरदन की एकमात्र शक्ति नहीं है। तापमान में बदलाव से चट्टानें दरकती और टूटती हैं (तापीय अपक्षय)। जब भूभाग के दो बिंदुओं के बीच ढलान किसी सामग्री के विश्राम कोण से अधिक हो जाती है, तो सामग्री ऊँचे बिंदु से नीचे वाले बिंदु पर गिरती है। इससे ये संरचनाएँ बनती हैं:

  • चट्टानी कगारों के आधार पर पाद-मलबा ढलान (गिरी हुई चट्टानों के ढेर)
  • समय के साथ नरम हुई पर्वत-शिखर रेखाएँ
  • सामग्री-निर्भर रूपरेखाएँ (कठोर चट्टान तीखी ढलान बनाए रखती है, जबकि नरम मिट्टी ढहकर हल्के कोणों में बदल जाती है)

तापीय अपरदन, जलीय अपरदन की तुलना में सरल है। यह एक स्थानीय ऑपरेशन है: प्रत्येक सेल के लिए पड़ोसी सेल से ऊँचाई के अंतर की तुलना करें। यदि ढलान सीमा से अधिक हो, तो सामग्री को नीचे की ओर खिसकाएँ। यह प्रत्येक पुनरावृत्ति में एक कंप्यूट शेडर पास के रूप में चलता है और 50-100 पुनरावृत्तियों में अभिसरित हो जाता है।

जलीय और तापीय अपरदन को मिलाने पर ऐसा भूभाग बनता है, जो इनमें से किसी एक को अकेले इस्तेमाल करने की तुलना में कहीं अधिक प्राकृतिक दिखता है। जल घाटियाँ तराशता है; तापीय अपरदन उनके बीच की पर्वत-शिखर रेखाओं को नरम करता है और घाटियों के तल को मलबे से भरता है।

धारा शक्ति नियम: विश्लेषणात्मक अपरदन

हालिया शोध कण-आधारित सिम्युलेशन का एक विकल्प प्रस्तुत करता है। धारा शक्ति नियम (अपरदन दर को जल-निकासी क्षेत्रफल और ढलान से जोड़ने वाला एक भू-आकृति वैज्ञानिक समीकरण) को पुनरावृत्त सिम्युलेशन के बजाय विश्लेषणात्मक रूप से हल किया जा सकता है।

Cordonnier एवं अन्य (2024, HAL) विश्लेषणात्मक धारा शक्ति नियम को भूस्खलन और पहाड़ी ढलान प्रसरण प्रक्रियाओं के साथ जोड़ते हैं। परिणामस्वरूप ऐसा भूभाग जनरेशन मिलता है, जो भौतिक सिद्धांतों पर आधारित है, लेकिन कालक्रमिक सिम्युलेशन के बजाय गणितीय फ़ंक्शन के रूप में चलता है। आप नॉइज़-आधारित हाइटमैप और पैरामीटर (वर्षा दर, चट्टान की कठोरता, विवर्तनिक उत्थान दर) इनपुट करते हैं और मिलीसेकंड में अपरदित भूभाग प्राप्त करते हैं।

यह विश्लेषणात्मक विधि ब्राउज़र-आधारित दुनिया के लिए आदर्श है, क्योंकि यह पुनरावृत्त रूप से चलने के बजाय भूभाग जनरेशन के दौरान सर्वर पर केवल एक बार चलती है। क्रिएटर इन पैरामीटर को समायोजित कर सकते हैं ("इस क्षेत्र को अधिक पर्वतीय बनाएँ" उत्थान दर को समायोजित करता है; "इसे अधिक वर्षा वाला बनाएँ" वर्षा बढ़ाता है और घाटियों को गहरा करता है)।

Arenite: बहु-भौतिकी अपरदन (SIGGRAPH 2025)

Arenite परतदार चट्टान से मेहराब, हूडू और ब्यूट बनाने के लिए तनाव, पवन अपरदन, नदी अपरदन और कण निक्षेपण का सिम्युलेशन करता है। सर्वर-साइड जनरेशन ऐसे SDF वॉल्यूम बनाता है, जो सीधे मार्चिंग क्यूब्स पाइपलाइन में भेजे जाते हैं।

Arenite (प्रोजेक्ट पेज) एक भौतिकी-आधारित बलुआ पत्थर सिम्युलेटर है, जो सरल शुरुआती स्थितियों से मेहराब, चट्टानी कोटर, हूडू और ब्यूट बनाता है। उपयोगकर्ता अपरदनीयता मैप (नरम चट्टान बनाम कठोर चट्टान की परतें) और वनस्पति पेंट करते हैं, जिसके बाद सिस्टम इनका सिम्युलेशन करता है:

  • चट्टान स्तंभ में तनाव वितरण
  • पवन अपरदन, जो खुली हुई नरम सामग्री को प्राथमिकता से हटाता है
  • जल प्रवाह से होने वाला नदी अपरदन
  • नई संरचनाएँ बनाने वाला कण निक्षेपण

डेस्कटॉप GPU पर जटिल संरचनाओं के लिए GPU कार्यान्वयन 5 मिनट से कम समय में चलता है। यह रीयल-टाइम ब्राउज़र उपयोग के लिए बहुत धीमा है, लेकिन सर्वर-साइड जनरेशन के लिए पर्याप्त तेज़ है। कोई क्रिएटर नरम/कठोर चट्टान की परतों वाली कगार परिभाषित करके कुछ ही मिनटों में वास्तविक दिखने वाली मेहराब संरचना प्राप्त कर सकता है।

आउटपुट एक 3D वॉक्सेल फ़ील्ड होता है, जो सीधे हमारी SDF/मार्चिंग क्यूब्स पाइपलाइन में फ़िट हो जाता है।

विभिन्न निरूपणों में लचीला अपरदन

IRIT-STORM के 2024 के एक शोधपत्र ("Flexible Terrain Erosion," Springer) में एक व्यावहारिक समस्या हल की गई है: अधिकांश अपरदन विधियाँ केवल हाइटफ़ील्ड पर काम करती हैं। यदि आपका भूभाग वॉक्सेल, SDF या परतदार सामग्रियों का उपयोग करता है, तो आपको प्रत्येक के लिए अलग अपरदन कोड चाहिए।

लचीली अपरदन विधि अपरदन को दो स्वतंत्र प्रक्रियाओं में विभाजित करती है: भूभाग परिवर्तन (सतह से सामग्री हटाना) और सामग्री परिवहन (बुनियादी भौतिकी से नियंत्रित कणों द्वारा तलछट को स्थानांतरित करना)। प्रत्येक कण का आकार, घनत्व, प्रत्यास्थता और तलछट क्षमता कॉन्फ़िगर की जा सकती है। यथार्थपरक द्रव गतिकी के लिए एक वैकल्पिक वेक्टर फ़ील्ड कणों की गति नियंत्रित करता है।

चूँकि कण एकीकृत सामग्री परिवर्तन इंटरफ़ेस के माध्यम से भूभाग के साथ इंटरैक्ट करते हैं, इसलिए वही सिम्युलेशन हाइटफ़ील्ड, वॉक्सेल ग्रिड, इम्प्लिसिट सतहों और परतदार सामग्री स्टैक पर काम करता है। हमारे हाइब्रिड भूभाग (हाइटमैप आधार + SDF ओवरले) के लिए इसका अर्थ है कि एक ही अपरदन सिस्टम दोनों निरूपणों को संभालता है। कण सिम्युलेशन GPU पर समानांतर चलता है।

नदी नेटवर्क और जल-निकासी बेसिन

अपरदन नदियाँ तराशता है, लेकिन विश्वसनीय नदी नेटवर्क बनाने के लिए केवल पानी को ढलान की ओर बहाना पर्याप्त नहीं है। दो विधियाँ बेहतर परिणाम देती हैं:

जल-निकासी-प्रथम जनरेशन (Amit Patel, Red Blob Games, प्रोजेक्ट) ऊँचाई निर्धारित करने से पहले नदी नेटवर्क बनाता है। एक ग्राफ़ (Voronoi या त्रिभुज मेश) से शुरुआत करें। किनारों को पर्वत-शिखर रेखाओं (कोई प्रवाह नहीं), प्रवेश बिंदुओं (जल अंदर बहता है) या निकास बिंदुओं (जल बाहर बहता है) के रूप में वर्गीकृत करें। इससे वास्तविक जल-निकासी पदानुक्रम बनते हैं, जहाँ छोटी सहायक नदियाँ मिलकर बड़े जलमार्ग बनाती हैं और अलग-अलग नदी प्रकारों के लिए Rosgen वर्गीकरण प्रणाली का अनुसरण करती हैं (समतल भूभाग में गुँथे हुए चैनल, पहाड़ों में संकरी कंदराएँ)।

प्रवाह संचय यह ट्रैक करता है कि प्रत्येक भूभाग सेल से कितना जल गुजरता है। सिम्युलेटेड वर्षा को समान रूप से गिराएँ, उसे नीचे की ओर बहाएँ और प्रत्येक सेल पर आगमन की संख्या गिनें। अधिक संचय वाले सेल नदी चैनल होते हैं। मध्यम संचय वाले सेल मौसमी धाराएँ होते हैं। संचय मैप अपरदन की तीव्रता (अधिक जल = अधिक अपरदन) और वनस्पति वितरण (नदी तट अधिक नम होते हैं और अलग पौध प्रजातियों को सहारा देते हैं) को भी नियंत्रित करता है।

क्रिएटर की दुनिया के लिए नदी नेटवर्क, भूभाग निर्माण के दौरान सर्वर पर जनरेट किया जाता है और प्रत्येक चंक के लिए 2D प्रवाह दिशा मैप तथा जल संचय मैप के रूप में संग्रहित किया जाता है। ब्राउज़र क्लाइंट इन मैप का उपयोग जल सतहें रेंडर करने (नदी चैनलों में सही ऊँचाई पर समतल प्लेन) और वनस्पति वितरण नियंत्रित करने (जल के पास अधिक सघन हरियाली) के लिए करता है।

तटीय और समुद्र-तट जनरेशन

तटरेखाएँ वहाँ बनती हैं जहाँ भूभाग जल से मिलता है, और इनमें ऐसी विशिष्ट आकृतियाँ होती हैं जिन्हें मानक अपरदन उत्पन्न नहीं करता: समुद्री कगारें, समुद्र-तट निक्षेप, ज्वारीय मैदान, समुद्री स्तंभ और लहरों से कटी चट्टानी वेदिकाएँ।

NEWTS1.0 (2024, MIT) दो अपरदन तंत्रों का उपयोग करके चट्टानी तटरेखा के विकास का मॉडल बनाता है: समान पीछे हटना (स्थिर अपरदन दर) और लहर-चालित अपरदन (फेच दूरी और आपतित लहर के कोण पर निर्भर अपरदन दर)। यह मॉडल हजारों सिम्युलेटेड वर्षों तक चलता है और ऐसी अंतरीप, खाड़ियाँ, समुद्री स्तंभ तथा मेहराब बनाता है, जो वास्तविक तटीय भू-आकृति विज्ञान से मेल खाते हैं।

ब्राउज़र दुनिया के लिए तटीय आकृतियाँ दुनिया के निर्माण के दौरान पहले से जनरेट की जाएँगी। पैरामीटर (प्रमुख लहर दिशा, तट के साथ चट्टान की कठोरता में बदलाव) क्रिएटर को अपनी तटरेखा का स्वरूप नियंत्रित करने देते हैं। "नॉर्वेजियन फ़्योर्ड" सेटिंग खड़ी दीवारों वाली संकरी खाड़ियाँ बनाती है। "उष्णकटिबंधीय एटॉल" सेटिंग लैगून वाले निचले रेतीले तट बनाती है।

गुफ़ा और भूमिगत जनरेशन

गुफ़ाओं के लिए पूरी तरह आयतनात्मक भूभाग (SDF या वॉक्सेल) आवश्यक होता है, क्योंकि हाइटमैप बंद स्थानों को निरूपित नहीं कर सकते। जनरेशन की विधियाँ:

3D नॉइज़ थ्रेशोल्डिंग सबसे सरल विधि है। प्रत्येक वॉक्सेल पर 3D Perlin या simplex नॉइज़ का नमूना लें। सीमा से कम मान ठोस और अधिक मान खाली होते हैं। सुरंग का व्यास, कनेक्टिविटी और कक्ष का आकार नियंत्रित करने के लिए सीमा और नॉइज़ पैरामीटर समायोजित करें। इससे Minecraft की याद दिलाने वाली जैविक, कृमि-जैसी गुफ़ा प्रणालियाँ बनती हैं।

PLUME (Procedural Layer Underground Modeling Engine) (2024, arXiv:2508.20926) परतदार प्रक्रियात्मक नियमों का उपयोग करके वास्तविक दिखने वाली गुफ़ाएँ और लावा ट्यूब परिवेश बनाता है। मूल रूप से अंतरिक्ष अन्वेषण शोध (मंगल ग्रह के लावा ट्यूब का सिम्युलेशन) के लिए निर्मित यह प्रणाली स्टैलेक्टाइट, स्तंभ और कक्ष प्रणालियों वाली भूवैज्ञानिक रूप से विश्वसनीय भूमिगत संरचनाएँ बनाती है।

मेटाबॉल कार्विंग वाली L-system सुरंगें भूभाग के भीतर शाखाओं में बँटते सुरंग मार्ग उगाने के लिए L-system व्याकरण का उपयोग करती हैं और फिर मेटाबॉल इम्प्लिसिट सतहों से वास्तविक सुरंग ज्यामिति तराशती हैं। मेटाबॉल चिकनी, गोल गुफ़ा दीवारें बनाते हैं। अलग-अलग पैरामीटर वाले कई पास मुख्य मार्ग, पार्श्व कक्ष और संकरी जोड़ने वाली सुरंगें बनाते हैं।

क्रिएटर की दुनिया के लिए गुफ़ा जनरेशन SDF ओवरले सिस्टम से जुड़ा होता है। आधार भूभाग एक हाइटमैप होता है (कोई गुफ़ा नहीं)। जब किसी चंक को गुफ़ाओं की आवश्यकता होती है (चाहे प्रक्रियात्मक जनरेशन से या क्रिएटर के डिज़ाइन से), तब एक SDF वॉल्यूम जनरेट किया जाता है, जो आधार भूभाग से गुफ़ा ज्यामिति घटाता है। मार्चिंग क्यूब्स पाइपलाइन संयुक्त सतह को रेंडर करती है।

एक भौतिक प्रक्रिया के रूप में वनस्पति

गेम में वनस्पति आम तौर पर "2000 मीटर से नीचे घास, 1500 मीटर से नीचे पेड़, 3000 मीटर से ऊपर बर्फ़" जैसे नियमों के साथ प्रक्रियात्मक रूप से रखी जाती है। यह तेज़ है, लेकिन समान और अवास्तविक वितरण बनाती है।

भौतिक सिद्धांतों पर आधारित वनस्पति सिम्युलेशन प्रत्येक पौधे को संसाधनों (प्रकाश, जल, मिट्टी के पोषक तत्व) के लिए प्रतिस्पर्धा करने वाली इकाई के रूप में मॉडल करता है। सिम्युलेशन:

  1. बीज पूरे भूभाग में बिखेरे जाते हैं
  2. प्रत्येक पौधा उपलब्ध संसाधनों के आधार पर बढ़ता है (जल जलीय अपरदन सिम्युलेशन से बहता है, सूर्यप्रकाश ढलान और दिशा पर निर्भर करता है, मिट्टी की गहराई अपरदन के इतिहास पर निर्भर करती है)
  3. पौधे प्रतिस्पर्धा करते हैं: पेड़ों की छाया घास को बढ़ने से रोकती है, घनी छतरी नए अंकुरों को उगने नहीं देती
  4. सिम्युलेटेड समय के साथ बायोम स्वाभाविक रूप से उभरते हैं: जल वाली घाटियों में वन, हवा से प्रभावित पर्वत-शिखर रेखाओं पर विरल वनस्पति और जहाँ पानी जमा होता है वहाँ आर्द्रभूमियाँ

Deussen एवं अन्य का पारिस्थितिकी तंत्र सिम्युलेशन (शोधपत्र) ऐसे वन वितरण बनाता है, जो वास्तविक दुनिया के पारिस्थितिक पैटर्न से मेल खाते हैं। सिम्युलेशन 2D ग्रिड (प्रत्येक भूभाग चंक के लिए एक सेल) पर चलता है और घनत्व मैप तथा प्रजाति निर्धारण बनाता है, जिनका उपयोग रेंडरिंग सिस्टम GPU इंस्टेंसिंग से वनस्पति रखने के लिए करता है।

ब्राउज़र दुनिया के लिए वनस्पति सिम्युलेशन दुनिया के जनरेशन के दौरान सर्वर पर एक बार चलता है। आउटपुट प्रत्येक चंक के लिए घनत्व मैप का एक समूह होता है: पेड़ घनत्व, घास घनत्व, फूल घनत्व और चट्टानी मलबे का घनत्व। ब्राउज़र क्लाइंट रनटाइम पर वनस्पति बिखेरने के लिए GPU इंस्टेंसिंग के साथ इन मैप का उपयोग करता है।

डिफ़्यूज़न-आधारित भूभाग संश्लेषण

यह वह क्षेत्र है जहाँ सबसे तेज़ प्रगति हो रही है। डिफ़्यूज़न मॉडल (चित्रों के लिए Stable Diffusion के पीछे की वही तकनीक) भूभाग जनरेशन पर लागू किए जा रहे हैं, और इनके परिणाम नॉइज़-आधारित विधियों से काफ़ी अधिक यथार्थपरक हैं।

Terrain Diffusion: Perlin नॉइज़ का उत्तराधिकारी

Minecraft के भीतर चल रहा Terrain Diffusion, रीयल टाइम में अनंत और सीड-संगत भूभाग स्ट्रीम करता है। वास्तविक दुनिया के ऊँचाई डेटा पर प्रशिक्षित यह प्रणाली ऐसी भूवैज्ञानिक संरचना वाले परिदृश्य बनाती है, जिसकी बराबरी नॉइज़ फ़ंक्शन नहीं कर सकते।

Terrain Diffusion (Goslin, 2025, arXiv:2512.08309, प्रोजेक्ट पेज) 1985 में Perlin नॉइज़ के बाद प्रक्रियात्मक भूभाग जनरेशन में सबसे महत्वपूर्ण प्रगति है। तब से यह कार्य SIGGRAPH 2026 के लिए स्वीकार किया जा चुका है और इसका आधिकारिक arXiv शीर्षक अब "InfiniteDiffusion: Bridging Learned Fidelity and Procedural Utility for Open-World Terrain Generation" है। InfiniteDiffusion एल्गोरिदम और Terrain Diffusion फ़्रेमवर्क इसी शोधपत्र के दो हिस्से हैं।

मुख्य नवाचार InfiniteDiffusion है, जो एक ऐसा एल्गोरिदम है जो असीमित डोमेन के लिए डिफ़्यूज़न सैंपलिंग को नए रूप में प्रस्तुत करता है। पारंपरिक डिफ़्यूज़न मॉडल निश्चित आकार के आउटपुट (जैसे 512x512 हाइटमैप) जनरेट करते हैं। InfiniteDiffusion इन विशेषताओं के साथ अनंत विस्तार वाला भूभाग जनरेट करता है:

  • सीड संगति: Perlin नॉइज़ की तरह, एक ही सीड हमेशा वही भूभाग बनाता है
  • स्थिर-समय रैंडम एक्सेस: आप पड़ोसी क्षेत्रों को पहले जनरेट किए बिना किसी भी बिंदु की ऊँचाई क्वेरी कर सकते हैं
  • कोई सीमा आर्टिफ़ैक्ट नहीं: दिखाई देने वाले सीम-जोड़ों या दोहराव के बिना अनंत जनरेशन

सिस्टम डिफ़्यूज़न मॉडल के पदानुक्रमित स्टैक का उपयोग करता है। शीर्ष स्तर ग्रह-स्तरीय आकृतियों (महाद्वीप, पर्वत शृंखलाएँ) को कैप्चर करता है। प्रत्येक अगला स्तर अधिक सूक्ष्म विवरण जोड़ता है (अलग-अलग चोटियाँ, घाटियाँ, छोटे स्तर की खुरदराहट)। एक संक्षिप्त Laplacian एन्कोडिंग समुद्र तल से हिमालयी चोटियों तक की विशाल डायनेमिक रेंज में आउटपुट को स्थिर रखती है।

प्रदर्शन: जनरेशन रीयल-टाइम अन्वेषण की गति बनाए रखता है। शोधपत्र के अनुसार, कक्षीय वेग की सैद्धांतिक चरम सीमा (लगभग 7,700 m/s) पर भी भूभाग संश्लेषण किसी उपभोक्ता GPU पर यात्रा की गति से 9 गुना तेज़ चलता है। प्रोजेक्ट में रीयल-टाइम भूभाग संश्लेषण प्रदर्शित करने वाला Minecraft एकीकरण शामिल है। यह हमारे लिए क्यों महत्वपूर्ण है: Terrain Diffusion वास्तविक दुनिया के ऊँचाई डेटा (पृथ्वी की वास्तविक स्थलाकृति) पर प्रशिक्षित भू-दृश्य बनाता है। आउटपुट में नदी-तंत्र, पर्वत-शृंखलाएँ, तटीय विशेषताएँ और पठारी संरचनाएँ होती हैं, जो हाथ से समायोजित किए गए नॉइज़ पैरामीटरों से नहीं, बल्कि प्रशिक्षण डेटा से उभरती हैं। कोई क्रिएटर कह सकता है, "स्कॉटिश हाइलैंड्स जैसा भूभाग बनाओ," और डिफ्यूज़न मॉडल सही भूवैज्ञानिक स्वरूप वाला भूभाग तैयार कर देगा।

यह मॉडल वर्ल्ड जनरेशन के दौरान सर्वर-साइड पर चलता है। आउटपुट एक मानक हाइटमैप होता है, जो अन्य सभी भूभाग डेटा की तरह ब्राउज़र पर स्ट्रीम होता है। जनरेशन विधि क्लाइंट को दिखाई नहीं देती।

TerraFusion: ज्यामिति और टेक्सचर का संयुक्त जनरेशन

TerraFusion लेटेंट डिफ्यूज़न का उपयोग करके स्केच से भूभाग के हाइटमैप और उनसे मेल खाते सतही टेक्सचर संयुक्त रूप से बनाता है
TerraFusion हाथ से बनाए गए स्केच से हाइटमैप और टेक्सचर एक साथ बनाता है। ज्यामिति और मटेरियल के बीच संबंध पहले से ही अंतर्निहित होता है—नदी-तल रेतीले, चट्टानी दीवारें पथरीली और समतल भूमि घास से ढकी निकलती है—वह भी बिना किसी मैन्युअल स्प्लैट पेंटिंग के।

TerraFusion (2025, arXiv:2505.04050) हाइटमैप और भूभाग टेक्सचर को संयुक्त रूप से बनाकर एक कदम आगे जाता है। इसका मुख्य विचार यह है कि भूभाग की ज्यामिति और सतही रूप-रंग परस्पर संबंधित होते हैं (नदी-तल रेतीले, चट्टानी दीवारें पथरीली और समतल क्षेत्र घासदार होते हैं)। उन्हें अलग-अलग बनाने पर बेमेल परिणाम मिलते हैं।

TerraFusion हाइटमैप और टेक्सचर के लिए अलग-अलग VAE वाला एक लेटेंट डिफ्यूज़न मॉडल इस्तेमाल करता है, जिसे उनके संयुक्त वितरण को मॉडल करने के लिए प्रशिक्षित किया गया है। यह सिस्टम निम्न सुविधाएँ देता है:

  • बिना किसी शर्त के जनरेशन: मेल खाते टेक्सचर वाला यादृच्छिक, विश्वसनीय भूभाग
  • स्केच-आधारित जनरेशन: क्रिएटर एक मोटा नक्शा बनाता है (यहाँ घाटियाँ, वहाँ पर्वत-धाराएँ, इस किनारे पर चट्टानी दीवारें) और मॉडल उस स्केच से मेल खाने वाली विस्तृत ज्यामिति और टेक्सचर बनाता है

क्रिएटर वर्ल्ड के लिए यह बहुत प्रभावशाली है। क्रिएटर अपने प्लॉट का सामान्य लेआउट स्केच करता है और सिस्टम उसे उपयुक्त सतही मटेरियल वाले भूवैज्ञानिक रूप से विश्वसनीय भूभाग से भर देता है। न हाइटमैप पेंटिंग, न टेक्सचर स्प्लैटिंग और न ही मैन्युअल मटेरियल असाइनमेंट।

MESA: टेक्स्ट-टू-टेरेन

MESA वैश्विक Copernicus डेटा पर प्रशिक्षित होकर टेक्स्ट प्रॉम्प्ट से सैटेलाइट-शैली की भूभाग छवियाँ और ऊँचाई मानचित्र बनाता है
MESA टेक्स्ट प्रॉम्प्ट से आपस में संबद्ध सैटेलाइट छवियाँ और DEM आउटपुट करता है। Copernicus के वैश्विक डेटासेट पर प्रशिक्षित होने के कारण यह हर पैमाने और जलवायु क्षेत्र के वास्तविक भूभाग—फ़्योर्ड, स्टेपी, खेत और अल्पाइन पर्वत-धाराएँ—को समझता है।

MESA (2025, arXiv:2504.07210, CVPR 2025 Workshop) टेक्स्ट विवरणों से भूभाग बनाता है। इसे Copernicus कार्यक्रम के वैश्विक रिमोट सेंसिंग डेटा पर प्रशिक्षित किया गया है, इसलिए इसे हर प्रकार के स्थलीय भू-दृश्य का अनुभव है।

"खड़ी ग्रेनाइट दीवारों वाला एक फ़्योर्ड, जो चट्टानी तट पर खुलता है" जैसा प्रॉम्प्ट उपयुक्त भूवैज्ञानिक संरचना वाला हाइटमैप बनाता है। "हल्की पहाड़ियों और चौड़ी नदी घाटी वाली लहरदार कृषि भूमि" इससे बिल्कुल अलग परिणाम देती है।

MESA ने Major TOM Core-DEM एक्सटेंशन डेटासेट प्रस्तुत किया है, जो विश्वभर की सैटेलाइट इमेजरी को डिजिटल एलिवेशन मॉडल के साथ जोड़ता है। यह प्रशिक्षण डेटा मॉडल को यह समझ देता है कि वास्तविक भूभाग हर पैमाने और हर जलवायु क्षेत्र में कैसा दिखाई देता है।

Geodiffussr: टेक्स्ट-निर्देशित भूभाग टेक्सचरिंग

Geodiffussr ऊँचाई डेटा का सम्मान करते हुए टेक्स्ट विवरणों से भूभाग टेक्सचर बनाता है—चोटियों पर बर्फ़, तटों पर रेत और ढलानों पर जंगल
Geodiffussr एक हाइटमैप और टेक्स्ट प्रॉम्प्ट लेकर ऐसे सतही टेक्सचर बनाता है जो ऊँचाई का सम्मान करते हैं। बर्फ़ केवल विश्वसनीय ऊँचाइयों से ऊपर दिखाई देती है; ऊँचाई बढ़ने पर वनस्पति विरल होती जाती है; पानी गड्ढों में रहता है। ज्यामिति अपरिवर्तित रहती है।

Geodiffussr (2025, arXiv:2511.23029) किसी मौजूदा हाइटमैप को लेकर ऊँचाई डेटा का सम्मान करते हुए टेक्स्ट विवरणों से निर्देशित टेक्सचर बनाता है। "पतझड़ का जंगल" मध्यम ढलानों पर नारंगी और सुनहरी पत्तियाँ तथा खड़ी सतहों पर खुली चट्टान बनाता है। "उष्णकटिबंधीय तट" निचली भूमि पर ताड़ की वनस्पति और समुद्र तल पर प्रवाल-रेत बनाता है।

यह सिस्टम मल्टी-स्केल कंटेंट एग्रीगेशन का उपयोग करके सुनिश्चित करता है कि टेक्सचर असाइनमेंट ऊँचाई का सम्मान करें: बर्फ़ केवल भौतिक रूप से विश्वसनीय ऊँचाई के ऊपर दिखाई देती है, जल-विशेषताएँ गड्ढों में रहती हैं और ऊँचाई के साथ वनस्पति विरल होती जाती है।

क्रिएटर वर्ल्ड के लिए इसका अर्थ है कि ज्यामिति बदले बिना टेक्स्ट प्रॉम्प्ट से भूभाग के टेक्सचर दोबारा बनाए जा सकते हैं। क्रिएटर अपनी पसंद का भूभाग गढ़ता है, फिर उसका परिवेश बताता है ("अंधकारमय ज्वालामुखीय बंजर भूमि" या "हरा-भरा समशीतोष्ण जंगल") और सिस्टम उपयुक्त सतही मटेरियल बना देता है।

ब्राउज़र भूभाग के लिए डायनेमिक LOD

किसी बड़े भूभाग को हर जगह पूर्ण रेज़ोल्यूशन पर ब्राउज़र में रेंडर करना असंभव है। 1-मीटर रेज़ोल्यूशन वाले 4 किमी x 4 किमी वर्ल्ड में अकेले भूभाग के ही 1.6 करोड़ वर्टेक्स होते हैं। डायनेमिक LOD वर्ल्ड के आकार की परवाह किए बिना इसे घटाकर एक स्थिर और प्रबंधनीय वर्टेक्स संख्या तक ले आता है।

ज्योमेट्री क्लिपमैप

ज्योमेट्री क्लिपमैप की मूल SIGGRAPH 2004 प्रस्तुति। घटते हुए रेज़ोल्यूशन वाले भूभाग के संकेंद्रित छल्ले वर्ल्ड के आकार से स्वतंत्र रूप से वर्टेक्स संख्या को स्थिर रखते हैं—आज भी अधिकांश ब्राउज़र भूभाग LOD की यही बुनियाद है।

ज्योमेट्री क्लिपमैप (Losasso और Hoppe, SIGGRAPH 2004, पेपर) हाइटमैप भूभाग LOD के लिए अब भी सर्वोत्तम मानक हैं। विचार यह है: भूभाग को कैमरे पर केंद्रित संकेंद्रित वर्गाकार छल्लों के समूह के रूप में रेंडर किया जाए। प्रत्येक छल्ला पिछले वाले की तुलना में दोगुना क्षेत्र घेरता है, लेकिन आधे रेज़ोल्यूशन पर।

कैमरे के पास (सबसे भीतरी छल्ला): पूर्ण रेज़ोल्यूशन, 1-मीटर ग्रिड अंतराल। उससे बाहर वाला छल्ला: 2-मीटर अंतराल, 4x क्षेत्र को कवर करता है। अगला छल्ला: 4-मीटर अंतराल, 16x क्षेत्र को कवर करता है। इसी तरह 6-8 स्तरों तक, जब तक सबसे बाहरी छल्ला पूरी दृश्य दूरी को कवर न कर ले।

कुल वर्टेक्स संख्या स्थिर रहती है: लगभग N^2 * levels, जहाँ N वर्टेक्स में छल्ले की चौड़ाई है। N=256 और 8 स्तरों के साथ कुल मिलाकर लगभग 500K वर्टेक्स होते हैं। वर्ल्ड चाहे 1 किमी चौड़ा हो या 100 किमी, यह समान रूप से रेंडर होता है।

ब्राउज़र इम्प्लीमेंटेशन: ज्योमेट्री क्लिपमैप WebGL 2 में काम करते हैं क्योंकि उन्हें केवल मानक वर्टेक्स बफ़र अपडेट की आवश्यकता होती है (कंप्यूट शेडर नहीं)। कैमरे के हिलने पर CPU उपयुक्त रेज़ोल्यूशन पर भूभाग का सैंपल लेकर प्रत्येक छल्ले का हाइटमैप डेटा अपडेट करता है। वर्टेक्स शेडर टेक्सचर से ऊँचाई मान पढ़ता है और समतल ग्रिड को विस्थापित करता है।

मॉर्फ़िंग: यदि LOD स्तरों के बीच ट्रांज़िशन को सरल तरीके से संभाला जाए, तो स्पष्ट "पॉपिंग" दिखाई देती है। जियोमॉर्फ़िंग (नीचे इसके अपने अनुभाग में विस्तार से बताया गया है) वर्टेक्स शेडर के भीतर ट्रांज़िशन ज़ोन में स्तरों के बीच वर्टेक्स स्थितियों को ब्लेंड करती है, जिससे बिना किसी अतिरिक्त ड्रॉ कॉल लागत के सहज और पॉपिंग-मुक्त ट्रांज़िशन मिलते हैं।

CDLOD: क्वाडट्री-अनुकूली क्लिपमैप

CDLOD (Strugar, 2014, पेपर) स्थिर संकेंद्रित छल्लों के बजाय क्वाडट्री का उपयोग करके ज्योमेट्री क्लिपमैप को बेहतर बनाता है। क्वाडट्री भूभाग के अनुसार अनुकूलित होता है: समतल क्षेत्र मोटे नोड इस्तेमाल करते हैं, जबकि अधिक विवरण वाले क्षेत्रों (चट्टानी दीवारें, पर्वत-धाराएँ) को अधिक सूक्ष्म उपविभाजन मिलता है।

क्रिएटर वर्ल्ड के लिए यह महत्वपूर्ण है, क्योंकि अलग-अलग चंक की जटिलता अलग होती है। किसी समतल घास के मैदान को न्यूनतम रेज़ोल्यूशन चाहिए। चट्टानी दीवारों और गुफ़ाओं वाले पर्वतीय क्षेत्र को अधिकतम विवरण चाहिए। CDLOD वहीं रेज़ोल्यूशन आवंटित करता है जहाँ उसकी आवश्यकता होती है।

CPU-साइड क्वाडट्री ट्रैवर्सल हल्का होता है (कुछ सौ नोड) और यह निर्धारित करता है कि किन भूभाग पैच को किस रेज़ोल्यूशन पर ड्रॉ करना है। GPU प्रत्येक पैच को प्रति-पैच LOD यूनिफ़ॉर्म वाले इंस्टैंस्ड ग्रिड के रूप में रेंडर करता है।

Concurrent Binary Trees: ग्रह-स्तरीय टेसेलेशन

ग्रह-स्तरीय भूभाग के लिए CBT अनुकूली टेसेलेशन: त्रिभुज कैमरे के पास उपविभाजित होते हैं और दूरी पर मर्ज हो जाते हैं—पूरी तरह GPU पर। कंसोल हार्डवेयर पर 0.2ms से कम समय।

Concurrent Binary Trees (CBT) अनुकूली भूभाग टेसेलेशन के लिए GPU-अनुकूल डेटा संरचना है, जिसे Benyoub और Dupuy (Intel, HPG 2024, पेपर, GitHub) ने प्रस्तुत किया था।

मूल विचार यह है: भूभाग को एक बाइनरी ट्री के रूप में दर्शाया जाए, जहाँ प्रत्येक नोड एक त्रिभुज होता है। अनुकूली उपविभाजन कैमरे के पास मौजूद त्रिभुजों को विभाजित करता है और दूर मौजूद त्रिभुजों को मर्ज करता है। बाइनरी ट्री पूरी तरह GPU मेमोरी में 1D ऐरे (एक बाइनरी हीप) के रूप में रहता है और उपविभाजन/मर्ज ऑपरेशन कंप्यूट शेडर के रूप में चलते हैं।

2024 का पेपर CBT को वर्गाकार हाइटमैप डोमेन से आगे बढ़ाकर मनमाने पॉलीगॉन मेश तक ले जाता है। इसका अर्थ है कि आप किसी गोले (ग्रह रेंडरिंग के लिए) या मनमाने बेस मेश (गैर-आयताकार सीमाओं वाले गेम वर्ल्ड के लिए) को टेसेलेट कर सकते हैं। मुख्य सुधार यह है कि CBT को इम्प्लिसिट एन्कोडिंग के बजाय मेमोरी पूल मैनेजर की तरह इस्तेमाल करने से उपविभाजन के कहीं अधिक स्तर संभव हो जाते हैं।

प्रदर्शन: कंसोल-स्तरीय हार्डवेयर पर ग्रह-स्तरीय भूभाग टेसेलेशन 0.2ms से कम समय में। एल्गोरिदम प्रोसेसर की संख्या के साथ रैखिक रूप से स्केल करता है। WebGPU के लिए यह ब्राउज़र में ग्रह-स्तरीय भूभाग रेंडरिंग का रास्ता देता है, हालाँकि इसका इम्प्लीमेंटेशन काफ़ी जटिल है।

WebGPU के साथ GPU-संचालित LOD

WebGPU पूरी तरह GPU-संचालित भूभाग पाइपलाइन संभव बनाता है, जो LOD निर्णयों में CPU की भागीदारी समाप्त कर देती है:

  1. कंप्यूट पास 1: फ्रस्टम और ऑक्लूज़न कलिंग। एक कंप्यूट शेडर प्रत्येक भूभाग पैच के बाउंडिंग बॉक्स को व्यू फ्रस्टम और एक ऑक्लूज़न बफ़र (पिछले फ़्रेम का डाउनसैंपल किया गया डेप्थ बफ़र) के विरुद्ध जाँचता है। अदृश्य पैच पूरी तरह हटा दिए जाते हैं।

  2. कंप्यूट पास 2: LOD चयन। दृश्यमान पैच के लिए स्क्रीन-स्पेस आकार की गणना करके उपयुक्त LOD स्तर चुना जाता है। LOD स्तर और पैच ID को इनडायरेक्ट ड्रॉ बफ़र में लिखा जाता है।

  3. कंप्यूट पास 3: मेश जनरेशन (वॉल्यूमेट्रिक भूभाग के लिए)। SDF डेटा वाले चंक के लिए चुने गए LOD रेज़ोल्यूशन पर मेश बनाने हेतु मार्चिंग क्यूब्स चलाया जाता है।

  4. इनडायरेक्ट ड्रॉ। एक drawIndexedIndirect() कॉल सभी भूभाग पैच को रेंडर करती है। GPU सब कुछ तय करता है: क्या ड्रॉ करना है, किस रेज़ोल्यूशन पर और किस क्रम में।

वर्ल्ड के आकार या जटिलता की परवाह किए बिना इस पाइपलाइन की CPU लागत स्थिर रहती है (कंप्यूट शेडर और इनडायरेक्ट ड्रॉ कॉल डिस्पैच करना)। GPU सभी प्रति-पैच निर्णय संभालता है।

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]);
}

जियोमॉर्फ़िंग: पॉपिंग-मुक्त LOD ट्रांज़िशन

भूभाग LOD की सबसे बड़ी दृश्य समस्या पॉपिंग है: जब कोई पैच LOD स्तर बदलता है, तो वर्टेक्स अचानक नई स्थितियों पर पहुँच जाते हैं। जियोमॉर्फ़िंग ट्रांज़िशन ज़ोन में LOD स्तरों के बीच वर्टेक्स स्थितियों को सहजता से इंटरपोलेट करके इसे समाप्त करती है।

इम्प्लीमेंटेशन पूरी तरह वर्टेक्स शेडर में रहता है। प्रत्येक वर्टेक्स अपनी मौजूदा LOD स्थिति और अगले अधिक मोटे LOD की स्थिति, दोनों को संग्रहीत करता है। कैमरे की दूरी के ट्रांज़िशन सीमा को पार करते ही एक मॉर्फ़ फ़ैक्टर दोनों के बीच ब्लेंड करता है:

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 का ज्योमेट्री क्लिपमैप पेपर (GPU Gems 2, अध्याय 2) क्लिपमैप छल्लों का पूरा इम्प्लीमेंटेशन बताता है। मॉर्फ़ ज़ोन प्रत्येक छल्ले का बाहरी 20% होता है। इस ज़ोन में वर्टेक्स सहजता से अगले छल्ले के रेज़ोल्यूशन की ओर अभिसरित होते हैं। दृश्य प्रभाव यह है कि भूभाग की ज्यामिति अचानक बदलने के बजाय विवरण स्तरों के बीच "पिघलती" है। कैमरे की सामान्य गति पर यह ट्रांज़िशन दिखाई नहीं देता।

इमेज-स्पेस ब्लेंडिंग (Scherzer et al., पेपर) एक वैकल्पिक तरीका है, जो दो LOD स्तरों की रेंडर की गई छवियों को स्क्रीन स्पेस में ब्लेंड करता है। यह LOD के अधिक बड़े अंतर (जैसे मेश-से-बिलबोर्ड ट्रांज़िशन) को संभालता है, लेकिन ट्रांज़िशन ज़ोन के लिए एक अतिरिक्त रेंडर पास की लागत आती है।

GPU-संचालित वनस्पति कलिंग

वनस्पति (पेड़, घास, चट्टानें) अक्सर ओपन वर्ल्ड में ड्रॉ कॉल का सबसे बड़ा स्रोत होती है। एक सरल तरीका हर फ़्रेम में वनस्पति के प्रत्येक इंस्टैंस को ड्रॉ करता है। अब WebGPU के माध्यम से Three.js में उपलब्ध GPU-संचालित कलिंग अदृश्य इंस्टैंस को रास्टराइज़र तक पहुँचने से पहले ही हटा देती है।

Three.js का ComputeInstanceCulling (दस्तावेज़) बड़ी संख्या में इंस्टैंस के लिए 10-100x प्रदर्शन सुधार के साथ इंस्टैंस्ड मेश की फ्रस्टम और LOD कलिंग प्रदान करता है। पाइपलाइन:

  1. एक कंप्यूट शेडर सभी इंस्टैंस के बाउंडिंग स्फ़ीयर पढ़ता है
  2. प्रत्येक को कैमरा फ्रस्टम के विरुद्ध जाँचता है (6-प्लेन परीक्षण)
  3. दूरी-आधारित LOD लागू करता है: सीमा से आगे के इंस्टैंस कम विवरण पर स्विच होते हैं या पूरी तरह हटा दिए जाते हैं
  4. बचे हुए इंस्टैंस को एक बफ़र में संकुचित करके drawIndirect के माध्यम से ड्रॉ किया जाता है CPU प्रत्येक इंस्टेंस के लिए कोई काम नहीं करता। शुरुआती सेटअप के बाद, इंस्टेंस की संख्या चाहे जितनी हो, लागत प्रत्येक वनस्पति प्रकार के लिए एक कंप्यूट डिस्पैच और एक इनडायरेक्ट ड्रॉ कॉल होती है।

अधिक घनी वनस्पति के लिए, Three.js का IndirectBatchedMesh (दस्तावेज़) कई ज्योमेट्री प्रकारों (पेड़, झाड़ियाँ, चट्टानें) को एक ही बफ़र में पैक करता है और उन्हें मल्टी-ड्रॉ इनडायरेक्ट के साथ रेंडर करता है। एक चंक की पूरी वनस्पति के लिए केवल एक ड्रॉ कॉल।

हमारे वनस्पति सिस्टम के डेंसिटी-मैप-आधारित वितरण के साथ इसका अर्थ है: डेंसिटी मैप एक कंप्यूट शेडर में घास की 50,000 पत्तियों की स्थितियाँ उत्पन्न करता है, कलिंग पास स्क्रीन से बाहर या बहुत दूर मौजूद 70% पत्तियों को हटा देता है, और एक इनडायरेक्ट ड्रॉ कॉल शेष 15,000 पत्तियों को रेंडर करता है। कुल CPU लागत: नगण्य।

वॉल्यूमेट्रिक भूभाग के लिए LOD

वॉल्यूमेट्रिक भूभाग (SDF + मार्चिंग क्यूब्स) को अपने अलग LOD सिस्टम की आवश्यकता होती है, क्योंकि मेश पहले से तैयार नहीं होता, बल्कि उत्पन्न किया जाता है। तरीका:

मल्टी-रिज़ॉल्यूशन SDF स्टोरेज। SDF को मिपमैप जैसी हायरार्की में कई रिज़ॉल्यूशन पर स्टोर करें। लेवल 0 पूर्ण रिज़ॉल्यूशन (1-मीटर वॉक्सेल) है। लेवल 1 में 2-मीटर वॉक्सेल होते हैं (8x कम डेटा)। लेवल 2 में 4-मीटर वॉक्सेल होते हैं। प्रत्येक लेवल पर, न्यूनतम निरपेक्ष दूरी लेकर SDF को डाउनसैंपल किया जाता है।

LOD-चयनित मार्चिंग क्यूब्स। इच्छित LOD से मेल खाने वाले SDF लेवल पर मार्चिंग क्यूब्स चलाएँ। पास के चंक लेवल 0 का उपयोग करते हैं। दूर के चंक लेवल 2 या 3 का उपयोग करते हैं। Transvoxel एल्गोरिदम अलग-अलग लेवल के बीच की सीमा को संभालता है।

कैशिंग। उत्पन्न मेश तब तक कैश किए जाते हैं, जब तक SDF बदलता नहीं है (क्रिएटर का संपादन) या LOD लेवल बदलता नहीं है (कैमरा काफी दूर चला गया हो)। स्थिर भूभाग के लिए, मेश एक बार उत्पन्न किया जाता है और फिर पुनः उपयोग किया जाता है।

भूभाग के लिए स्ट्रीमिंग आर्किटेक्चर

चंक डेटा प्रारूप

प्रत्येक भूभाग चंक (64x64 मीटर) एक संक्षिप्त बाइनरी पैकेज के रूप में स्ट्रीम होता है:

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
  }
}

सामान्य आकार:

  • केवल हाइटमैप वाला चंक (समतल भूभाग): कंप्रेस करने पर 2-4 KB
  • हाइटमैप + वनस्पति: 4-8 KB
  • हाइटमैप + वॉल्यूमेट्रिक + वनस्पति (जटिल चंक): 20-100 KB
  • 5x5 पूर्ण-विवरण वाला पड़ोस: कुल 50-500 KB

प्रोग्रेसिव चंक लोडिंग

चंक दूरी, गति की दिशा और डेटा प्रकार के आधार पर प्राथमिकता क्रम में लोड होते हैं:

प्राथमिकता 1 (तत्काल, <100ms): उन चंक के लिए हाइटमैप ज्योमेट्री, जिनमें खिलाड़ी प्रवेश करने वाला है। भूभाग की सतह सबसे पहले दिखाई देती है। सबसे कम रिज़ॉल्यूशन (प्रति चंक 17x17) पर भी ज़मीन मौजूद रहती है।

प्राथमिकता 2 (तेज़, <300ms): स्प्लैट मैप और भूभाग टेक्सचर। ज़मीन को रंग मिलता है।

प्राथमिकता 3 (स्ट्रीमिंग, <1s): पूर्ण-रिज़ॉल्यूशन हाइटमैप अपग्रेड। वनस्पति डेंसिटी मैप। GPU इंस्टेंसिंग पेड़ और घास उत्पन्न करती है।

प्राथमिकता 4 (बैकग्राउंड, <3s): गुफाओं/ओवरहैंग वाले चंक के लिए वॉल्यूमेट्रिक SDF डेटा। मार्चिंग क्यूब्स Web Worker में मेश उत्पन्न करता है और बफ़र को मुख्य थ्रेड में स्थानांतरित करता है।

प्राथमिकता 5 (लेज़ी, <10s): क्रिएटर द्वारा रखी गई वस्तुएँ। संरचनाओं के लिए उच्च-रिज़ॉल्यूशन टेक्सचर। फूल, छोटी चट्टानें और मलबे जैसी सूक्ष्म वस्तुएँ।

पूर्वानुमानित प्री-फ़ेचिंग

चंक को लोड करने के लिए खिलाड़ी के उसमें प्रवेश करने तक प्रतीक्षा न करें। वेग के आधार पर अनुमान लगाएँ कि खिलाड़ी कहाँ जा रहा है और आगे का डेटा लोड करें:

  • चलने की गति (5 km/h): आगे के 2 चंक (128m) प्री-फ़ेच करें। सामान्य ब्रॉडबैंड लेटेंसी पर इससे 200-400ms का अग्रिम समय मिलता है।
  • दौड़ना/सवारी करना (15 km/h): आगे के 4 चंक प्री-फ़ेच करें। लोड रिंग वेग की दिशा के साथ खिसकती है।
  • उड़ना/तेज़ यात्रा: ट्रांज़िशन के दौरान रेंडरिंग रोकें। गंतव्य चंक को सर्वोच्च प्राथमिकता पर स्ट्रीम करें। पहले फ़्रेम के लिए पर्याप्त डेटा उपलब्ध होने पर रेंडरिंग फिर शुरू करें।

प्री-फ़ेच सिस्टम ट्रैक करता है कि कौन-से चंक कैश में हैं, कौन-से इन-फ़्लाइट हैं (अनुरोध किए गए हैं लेकिन अभी पहुँचे नहीं हैं), और किनकी आवश्यकता है। एक प्राथमिकता क्यू लंबित अनुरोधों को तात्कालिकता के अनुसार क्रमबद्ध करती है। जिन चंक से खिलाड़ी दूर जा चुका है, उनके अनुरोध रद्द कर दें।

मेमोरी बजट और निष्कासन

डेस्कटॉप पर एक ब्राउज़र टैब को 2-4 GB मिलता है। भूभाग सिस्टम को इसके एक हिस्से के भीतर रहना होगा (शेष रेंडरिंग, फ़िज़िक्स, नेटवर्किंग और JavaScript हीप के लिए है)।

लक्ष्य बजट: सभी भूभाग डेटा के लिए 256 MB।

हमारे सामान्य चंक आकारों पर:

  • पूर्ण-विवरण वाले कैश्ड चंक: प्रत्येक 5-100 KB के लगभग 100 चंक (10x10 पड़ोस) = रॉ डेटा के लिए 5-10 MB
  • GPU भूभाग ज्योमेट्री: ~50 MB (दृश्यमान भूभाग के लिए वर्टेक्स बफ़र और इंडेक्स बफ़र)
  • भूभाग टेक्सचर: ~100 MB (KTX2 कंप्रेस्ड, एटलस-पैक्ड)
  • वनस्पति इंस्टेंस बफ़र: ~50 MB (GPU इंस्टेंसिंग के लिए स्थितियाँ, रोटेशन और स्केल)
  • SDF वॉल्यूम और कैश्ड मार्चिंग क्यूब्स मेश: ~50 MB

दृश्यमान सीमा से बाहर के चंक को पहले GPU मेमोरी (टेक्सचर, वर्टेक्स बफ़र) से और फिर CPU कैश से निकाला जाता है। रॉ हाइटमैप डेटा सबसे अंत में हटाया जाता है, क्योंकि इसे बनाए रखना सबसे सस्ता है और खिलाड़ी के वापस मुड़ने पर इसका उपलब्ध होना सबसे महत्वपूर्ण है।

बायोम ट्रांज़िशन और एंटी-टाइलिंग

सहज बायोम सीमाएँ

वास्तविक भूदृश्यों में बायोम के बीच कठोर सीमाएँ नहीं होतीं। जंगल किसी रेखा पर अचानक समाप्त होकर रेगिस्तान नहीं बन जाता। वहाँ एक ग्रेडिएंट होता है: घना जंगल विरल पेड़ों में बदलता है, फिर झाड़ीदार भूमि में और अंततः छितरी रेगिस्तानी वनस्पति में। इसे सही ढंग से लागू करने पर दुनिया टाइलों में बँटी हुई लगने के बजाय सतत महसूस होती है।

AutoBiomes (Kötter et al., शोधपत्र) प्रक्रियात्मक भूभाग निर्माण को सरलीकृत जलवायु सिमुलेशन के साथ जोड़ता है। तापमान, आर्द्रता और ऊँचाई प्रत्येक बिंदु पर बायोम का प्रकार निर्धारित करते हैं। बायोम के बीच, मटेरियल वेट और वनस्पति घनत्व एक ट्रांज़िशन ज़ोन (आमतौर पर 50-100 मीटर चौड़ा) में इंटरपोलेट होते हैं। ट्रांज़िशन की चौड़ाई बायोम की जोड़ी के अनुसार बदलती है: जंगल-से-घासभूमि का ट्रांज़िशन चौड़ा और क्रमिक होता है, जबकि चट्टान-से-पानी का ट्रांज़िशन संकरा और अचानक होता है।

क्रिएटर दुनिया के लिए, बायोम असाइनमेंट एक मोटे ग्रिड पर चलता है (प्रत्येक 16x16 मीटर क्षेत्र पर एक बायोम सैंपल)। भूभाग शेडर मौजूदा फ़्रैगमेंट और उसके पड़ोसियों के बायोम मान पढ़ता है, ट्रांज़िशन ज़ोन में मटेरियल वेट इंटरपोलेट करता है और टेक्सचर को उसी के अनुसार ब्लेंड करता है। वनस्पति वितरण भी उन्हीं इंटरपोलेट किए गए घनत्व मानों का उपयोग करता है, इसलिए जंगल के किनारे पेड़ों का घनत्व धीरे-धीरे कम होता है।

क्रिएटर नियंत्रण: क्रिएटर को अपने प्लॉट पर बायोम ओवरराइड पेंट करने दें। सिस्टम भूभाग के गुणों से डिफ़ॉल्ट बायोम उत्पन्न करता है, लेकिन क्रिएटर उन्हें ओवरराइड कर सकते हैं। किसी निचले क्षेत्र पर "दलदल" पेंट करें और मटेरियल गंदले पानी, काई और सूखे पेड़ों में बदल जाता है। बायोम पेंट मैप प्रत्येक चंक के लिए बायोम ID का 16x16 ग्रिड (256 बाइट) होता है, जो प्रक्रियात्मक असाइनमेंट को ओवरराइड करता है।

हेक्स-टाइलिंग: टेक्सचर की पुनरावृत्ति हटाना

भूभाग रेंडरिंग में सबसे सामान्य विज़ुअल आर्टिफ़ैक्ट टेक्सचर की पुनरावृत्ति है। 100-मीटर के मैदान पर टाइल किया गया 1-मीटर का घास टेक्सचर स्पष्ट ग्रिड पैटर्न उत्पन्न करता है। दो तकनीकें इसे ठीक करती हैं:

हेक्स-टाइलिंग (Mikkelsen, डेमो) वर्गाकार टाइलिंग ग्रिड को षट्कोणीय ग्रिड से बदल देती है। प्रत्येक षट्कोणीय टाइल टेक्सचर को एक यादृच्छिक ऑफ़सेट और रोटेशन पर सैंपल करती है। सीम छिपाने के लिए षट्कोणीय सीमाओं को ब्लेंड किया जाता है। परिणामस्वरूप सतह टाइल की हुई दिखने के बजाय समान रूप से यादृच्छिक दिखाई देती है। लागत: प्रति फ़्रैगमेंट लगभग 3 अतिरिक्त टेक्सचर सैंपल। यह तकनीक प्रोडक्शन गेम्स में व्यापक रूप से उपयोग की जाती है और किसी भी फ़्रैगमेंट शेडर में चलती है।

स्टोकेस्टिक टेक्सचर फ़िल्टरिंग (Pharr et al., NVIDIA, 2024, शोधपत्र) स्टोकेस्टिक सैंपलिंग का उपयोग करके शेडिंग से पहले के बजाय बाद में फ़िल्टरिंग लागू करती है। स्टोकेस्टिक सैंपलिंग से होने वाली त्रुटि न्यूनतम होती है और स्पेशियोटेम्पोरल डीनॉइज़िंग उसे अच्छी तरह संभाल लेती है। इससे अधिक सटीक फ़िल्टर किए गए परिणाम मिलते हैं और यह कंप्रेस्ड/स्पार्स टेक्सचर के साथ काम करती है। भूभाग के लिए, यह टाइलिंग आर्टिफ़ैक्ट और उन फ़िल्टरिंग आर्टिफ़ैक्ट—दोनों को हटाती है जिन्हें हेक्स-टाइलिंग कभी-कभी ट्रांज़िशन पर उत्पन्न कर सकती है।

ब्राउज़र दुनिया के लिए हेक्स-टाइलिंग व्यावहारिक विकल्प है (यह किसी भी शेडर में काम करती है)। स्टोकेस्टिक फ़िल्टरिंग के लिए अधिक आधारभूत संरचना चाहिए, लेकिन टेम्पोरल डीनॉइज़िंग उपलब्ध होने पर यह बेहतर परिणाम देती है (जैसा कि TAA वाले WebGPU पाथ में होगा)।

भूभाग मटेरियल सिस्टम

ट्राइप्लेनर मैपिंग

मानक UV-मैप्ड टेक्सचर खड़ी ढलानों पर बहुत बुरी तरह खिंच जाते हैं, क्योंकि UV निर्देशांक संकुचित हो जाते हैं। ट्राइप्लेनर मैपिंग तीनों अक्षों (X, Y, Z) के साथ टेक्सचर प्रोजेक्ट करती है और सतह के नॉर्मल के आधार पर उन्हें ब्लेंड करती है:

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;

चट्टानी सतहों को X या Z प्रोजेक्शन मिलता है (कोई खिंचाव नहीं)। समतल ज़मीन को Y प्रोजेक्शन मिलता है। ब्लेंडिंग सहज और स्वचालित होती है। UV अनरैपिंग की आवश्यकता नहीं होती।

Babylon.js में बिल्ट-इन TriPlanar Material है। Three.js को कस्टम शेडर चाहिए, लेकिन इसका इम्प्लीमेंटेशन लगभग 30 पंक्तियों के GLSL का है।

PBR भूभाग के लिए, ट्राइप्लेनर मैपिंग को सभी चैनलों पर लागू करें: एल्बीडो, नॉर्मल, रफ़नेस और एम्बिएंट ऑक्लूज़न। प्रत्येक चैनल पर वही ब्लेंडिंग वेट लागू होते हैं।

ढलान और ऊँचाई-आधारित मटेरियल असाइनमेंट

स्प्लैट मैप को हाथ से पेंट करने के बजाय, भूभाग के गुणों के आधार पर मटेरियल को प्रक्रियात्मक रूप से असाइन करें:

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);

कम ऊँचाई वाली समतल ज़मीन को घास मिलती है। खड़ी ढलानों को चट्टान मिलती है। अधिक ऊँचाई पर बर्फ मिलती है (लेकिन केवल उन सतहों पर जो बर्फ जमने के लिए पर्याप्त समतल हों)। समुद्र तल के पास रेत मिलती है। ट्रांज़िशन सहज और भौतिक रूप से यथार्थपरक होते हैं।

क्रिएटर दुनिया के लिए, ऊँचाई थ्रेशोल्ड और ब्लेंड ज़ोन को प्रति चंक पेंट किए जा सकने वाले पैरामीटर के रूप में उपलब्ध कराएँ। क्रिएटर वृक्ष-रेखा को ऊपर या नीचे ले जा सकते हैं, बर्फ़ का फैलाव बढ़ा सकते हैं या अपने प्लॉट के मटेरियल नियमों को समायोजित करके घास वाली पहाड़ी को रेतीले रेगिस्तान में बदल सकते हैं।

GPU-अनुकूल लैप्लेशियन टेक्सचर ब्लेंडिंग

मानक टेक्सचर ब्लेंडिंग (लेयर के बीच लीनियर इंटरपोलेशन) या तो स्पष्ट सीम उत्पन्न करती है या फीके, कम-कॉन्ट्रास्ट वाले परिणाम देती है। लैप्लेशियन पिरामिड ब्लेंडिंग इसे हल करती है, लेकिन पारंपरिक रूप से इसके लिए महंगी प्रीकंप्यूटेशन आवश्यक होती है।

Wronski (NVIDIA, 2025, JCGT) एक GPU-अनुकूल वैरिएंट प्रस्तुत करते हैं, जो बिना प्रीकंप्यूटेशन और अतिरिक्त मेमोरी के रियल-टाइम शेडर में काम करता है। यह तकनीक मानक मिपमैप चेन को लैप्लेशियन पिरामिड के अनुमान के रूप में उपयोग करती है: टेक्सचर को मौजूदा मिप लेवल और एक अधिक मोटे लेवल—दोनों पर सैंपल करें, अंतर (लैप्लेशियन) की गणना करें और प्रत्येक लेयर के लैप्लेशियन योगदान को ब्लेंड करें।

परिणाम बड़े पैमानों पर सहजता से ब्लेंड करते हुए तीक्ष्ण स्थानीय विशेषताओं (घास की अलग-अलग पत्तियाँ, चट्टानों की दरारें) को सुरक्षित रखता है। लागत प्रति फ़्रैगमेंट कुछ अतिरिक्त टेक्सचर टैप है। जिस भूभाग में आप प्रति पिक्सेल 4+ मटेरियल लेयर ब्लेंड कर रहे हों, वहाँ यह लीनियर ब्लेंडिंग की तुलना में स्पष्ट रूप से बेहतर परिणाम देता है, विशेष रूप से घास, चट्टान और रेत के बीच के ट्रांज़िशन पर।

अपरदन विवरण के लिए फ़ेज़र नॉइज़

मानक भूभाग पास से अक्सर सपाट दिखता है, क्योंकि अपरदन सिमुलेशन हाइटमैप रिज़ॉल्यूशन (1-मीटर ग्रिड) पर काम करता है। वास्तविक भूभाग में सेंटीमीटर पैमाने पर सूक्ष्म अपरदन पैटर्न (पतली जलधारियाँ, नालियाँ, अपक्षय दरारें) होते हैं।

Grenier et al. (2024, CGF) रियल टाइम में भूभाग का सूक्ष्म विवरण जोड़ने के लिए फ़ेज़र नॉइज़ का उपयोग करते हैं। फ़ेज़र नॉइज़ आवर्ती फ़ंक्शन में डाले गए स्टोकेस्टिक फ़ेज़ फ़ील्ड को परिभाषित करके संरचित पैटर्न संश्लेषित करता है। भूभाग पर लागू होने पर, यह स्थानिक रूप से बदलते अपरदन पैटर्न बनाता है, जो:

  • विभिन्न पैमानों पर संकरी जलधारियों को बड़ी नालियों में मिलाते हैं
  • भूभाग की ढलान के साथ स्वतः संरेखित होते हैं (अपरदन पैटर्न ढलान की गिरावट रेखा का अनुसरण करते हैं)
  • 32x तक एम्प्लिफ़िकेशन प्राप्त करते हैं (हाइटमैप रिज़ॉल्यूशन से 32x अधिक विवरण जोड़ते हैं)
  • इंटरैक्टिव फ़्रेम रेट पर पूरी तरह फ़्रैगमेंट शेडर में चलते हैं

ब्राउज़र दुनिया के लिए, फ़ेज़र नॉइज़ भूभाग शेडर में एक डिटेल लेयर के रूप में चलता है। हाइटमैप बड़े पैमाने की आकृति प्रदान करता है। फ़ेज़र नॉइज़ ज्योमेट्री की जटिलता बढ़ाए बिना फ़्रैगमेंट शेडर में विश्वसनीय सूक्ष्म अपरदन जोड़ता है। पैरामीटर (पैटर्न आवृत्ति, एम्प्लीट्यूड, अभिविन्यास) प्रत्येक बायोम के अनुसार बदल सकते हैं: खुली चट्टान पर गहरी धारियाँ, रेत के टीलों पर हल्की लहरें और सूखी मिट्टी पर खुरदरी छाल जैसी बनावट।

भूभाग के लिए वर्चुअल टेक्सचरिंग

बड़े पैमाने पर भूभाग टेक्सचर एटलस असुविधाजनक रूप से विशाल हो जाता है। 1 टेक्सेल प्रति सेंटीमीटर की दर से 4 km x 4 km की दुनिया के लिए 400,000 x 400,000 पिक्सेल का टेक्सचर चाहिए। यह स्पष्ट रूप से असंभव है।

वर्चुअल टेक्सचरिंग (जिसे id Software के Rage से मेगाटेक्सचर भी कहा जाता है) भूभाग टेक्सचर को पेज्ड संरचना के रूप में मानकर इसे हल करती है। पूरा टेक्सचर अवधारणात्मक रूप से मौजूद होता है, लेकिन केवल स्क्रीन पर दिखाई देने वाली टाइलें ही GPU मेमोरी में लोड की जाती हैं। पाइपलाइन:

  1. फ़ीडबैक पास: भूभाग को ऐसे शेडर से रेंडर करें जो यह आउटपुट करे कि प्रत्येक पिक्सेल को कौन-सी टेक्सचर टाइल चाहिए (टाइल ID और मिप स्तर)। इसे वापस CPU पर पढ़ें (या कंप्यूट शेडर से प्रोसेस करें)।
  2. टाइल लोडिंग: अनुरोधित टाइलों को CDN से लोड करें या स्प्लैट मैप डेटा से प्रक्रियात्मक रूप से जनरेट करें।
  3. इंडायरेक्शन टेक्सचर: एक छोटा टेक्सचर वर्चुअल टाइल निर्देशांकों को टेक्सचर एटलस में फ़िज़िकल टाइल निर्देशांकों से मैप करता है।
  4. रेंडर पास: भूभाग शेडर सही फ़िज़िकल टाइल खोजने के लिए इंडायरेक्शन टेक्सचर देखता है, फिर एटलस से मटेरियल टेक्सचर का सैंपल लेता है।

WebGPU के कंप्यूट शेडर फ़ीडबैक विश्लेषण और पेज टेबल प्रबंधन को पूरी तरह GPU पर संभाल सकते हैं। CPU केवल टाइल I/O प्रबंधित करता है।

परिणाम: टेक्सचर मेमोरी में विस्फोटक वृद्धि के बिना किसी भी रिज़ॉल्यूशन पर विशिष्ट टेक्सचरिंग वाला भूभाग। कैमरे से दूर टाइलें कम रिज़ॉल्यूशन में लोड होती हैं। पास की टाइलें उच्च रिज़ॉल्यूशन में लोड होती हैं। कुल मेमोरी उपयोग एक निश्चित सीमा के भीतर रहता है (आमतौर पर 128-256 MB का टेक्सचर एटलस)।

गतिशील भूभाग प्रभाव

पानी के गड्ढे और गीलापन

बारिश केवल गिरती ही नहीं है। वह जमा भी होती है। धँसे हुए स्थानों में वह पानी के गड्ढे बनाती है। सतहों पर वह गीली चमक पैदा करती है। तीखी ढलानों से वह बह जाती है। इसका सिमुलेशन करने से मौसम केवल एक दृश्य ओवरले के बजाय भूभाग से जुड़ा हुआ महसूस होता है।

शेडर-आधारित तरीका द्रव गतिकी का सिमुलेशन नहीं करता। यह तय करने के लिए भूभाग के हाइटमैप का उपयोग करता है कि पानी कहाँ जमा होगा:

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);

अवतल क्षेत्र (हाइटमैप का ऋणात्मक लैप्लेशियन) पानी जमा करते हैं। अवतलता जितनी गहरी होगी, पानी का गड्ढा उतना ही बड़ा होगा। गीली सतहें गहरी हो जाती हैं और अधिक परावर्तक बनती हैं (कम रफ़नेस)। बारिश रुकने के बाद यह प्रभाव समय के साथ फीका पड़ जाता है।

पानी के गड्ढों में पूर्ण प्रतिबिंबों के लिए, गड्ढे की सतह पर एक प्लेनर रिफ़्लेक्शन पास जोड़ें। या स्क्रीन-स्पेस रिफ़्लेक्शन (SSR) का उपयोग करें, जो कम खर्चीला है और Three.js तथा Babylon.js—दोनों के पोस्ट-प्रोसेसिंग स्टैक में पहले से उपलब्ध है।

पानी के गड्ढों की सतह पर गिरने वाली बारिश की बूँदों के लिए फ़ीडबैक टेक्सचर में एक सरल 2D तरंग समीकरण का उपयोग किया जाता है (Saurel, 2026, ब्लॉग)। बारिश की प्रत्येक बूँद एक लहर पैदा करती है, जो बाहर की ओर फैलती और धीरे-धीरे क्षीण होती है। वेव टेक्सचर गड्ढे के नॉर्मल मैप को मॉड्यूलेट करता है, जिससे 60fps पर विश्वसनीय लहर पैटर्न बनते हैं।

पदचिह्न और भूभाग विरूपण

जब कोई खिलाड़ी नरम भूभाग (रेत, बर्फ़, कीचड़) पर चलता है, तो पदचिह्न भौतिक उपस्थिति की अनुभूति बढ़ाते हैं। तकनीक: प्रत्येक चंक के लिए एक छोटा विरूपण टेक्सचर (64x64 पिक्सेल = 4 KB) बनाए रखें, जो ऊँचाई ऑफ़सेट संग्रहीत करता है। जब कोई पात्र नरम भूभाग पर कदम रखता है, तो विरूपण टेक्सचर में पदचिह्न की आकृति स्टैम्प करें।

भूभाग वर्टेक्स शेडर विरूपण टेक्सचर पढ़ता है और ऊँचाई से ऑफ़सेट घटाता है। भूभाग फ़्रैगमेंट शेडर पदचिह्न वाले क्षेत्र को गहरा करता है (दबी हुई मिट्टी अधिक गहरी होती है) और रफ़नेस बढ़ाता है (अस्त-व्यस्त सतह)।

समय के साथ पदचिह्न फीके पड़ जाते हैं (बर्फ़ फिर भर जाती है, बारिश कीचड़ के निशान धो देती है), जिसके लिए विरूपण टेक्सचर को धीरे-धीरे शून्य किया जाता है। फीका पड़ने की दर मौसम पर निर्भर करती है: बारिश में तेज़, शुष्क परिस्थितियों में धीमी।

मल्टीप्लेयर दुनिया के लिए पदचिह्न डेटा अस्थायी और स्थानीय होता है। प्रत्येक क्लाइंट दिखाई देने वाले खिलाड़ियों के पदचिह्न जनरेट करता है। विरूपण टेक्सचर को क्लाइंटों के बीच सिंक करने की आवश्यकता नहीं होती (हर कोई अस्थायी पदचिह्नों का अपना संस्करण देखता है)। इससे हर कदम को ब्रॉडकास्ट करने की नेटवर्किंग लागत बचती है।

प्रक्रियात्मक आकाश और दिन/रात चक्र

किसी भी खुली दुनिया में आकाश दिखाई देने वाली सबसे बड़ी सतह है। यह पूरे भूभाग का वातावरण निर्धारित करता है।

Three.js में एक संपूर्ण आकाश प्रणाली है, जिसमें प्रक्रियात्मक सूर्य/चंद्रमा, दिन/रात चक्र, बादल, तारे और लेंस फ़्लेयर शामिल हैं। अंतर्निहित Three.js Sky उदाहरण (WebGPU में भी उपलब्ध) Preetham के विश्लेषणात्मक आकाश मॉडल को लागू करता है।

अधिक भौतिक रूप से सटीक परिणामों के लिए, webgpu-sky-atmosphere Hillaire के वायुमंडल मॉडल को WebGPU पोस्ट-प्रोसेस के रूप में लागू करता है। यह कई स्कैटरिंग फ़ेज़ फ़ंक्शन का समर्थन करता है और मूलभूत भौतिक सिद्धांतों से सही एरियल पर्सपेक्टिव (दूर का भूभाग अधिक धुँधला दिखाई देता है), सूर्य/सूर्यास्त के रंग और आकाश के ग्रेडिएंट उत्पन्न करता है।

TerrainView7 पहले से गणना की गई वायुमंडलीय स्कैटरिंग के साथ WebGPU में पूर्ण-पैमाने के ग्रह रेंडरिंग का प्रदर्शन करता है, जिससे साबित होता है कि भौतिक रूप से सटीक वायुमंडल रेंडरिंग ब्राउज़र में चलती है।

क्रिएटर दुनिया में आकाश के पैरामीटर (सूर्य की स्थिति, बादलों का विस्तार, धुंध का घनत्व) सर्वर की वर्ल्ड क्लॉक से सभी क्लाइंटों में सिंक्रनाइज़ किए जाते हैं। आकाश शेडर प्रत्येक क्लाइंट पर स्थानीय रूप से चलता है, जिससे सभी खिलाड़ियों के लिए एकसमान प्रकाश उत्पन्न होता है।

भूभाग प्रकाश व्यवस्था: अप्रत्यक्ष प्रकाश

सीधी धूप को शैडो मैप संभालते हैं। लेकिन छाया में भूभाग का रंग और चमक (परिवेशी/अप्रत्यक्ष प्रकाश) दृश्य गुणवत्ता के लिए उतने ही महत्वपूर्ण हैं। पूरी तरह काली छायाएँ गलत दिखती हैं। छायाओं पर आकाश के रंग की आभा होनी चाहिए (साफ़ दिन में नीली, बादलों वाले दिन में धूसर)।

ब्राउज़र दुनिया के लिए व्यावहारिक तरीका:

विज़िबिलिटी बिटमास्क के साथ स्क्रीन-स्पेस अप्रत्यक्ष प्रकाश (Jimenez et al., 2023, शोधपत्र) प्रत्येक पिक्सेल पर 32 दिशात्मक दृश्यता सेक्टर ट्रैक करके मानक SSAO को बेहतर बनाता है। यह न केवल यह दर्ज करता है कि कोई बिंदु कितना अवरुद्ध है, बल्कि अवरोध की दिशा भी दर्ज करता है। पतली सतहें दूसरी ओर से प्रकाश को सही ढंग से गुज़रने देती हैं। परिणाम ऐसा अप्रत्यक्ष प्रकाश है, जो ग्लोबल इल्यूमिनेशन अवसंरचना के बिना आस-पास की ज्यामिति पर प्रतिक्रिया करता है।

इसकी लागत SSAO के बराबर (1-2ms) है। दृश्य सुधार उल्लेखनीय है: घाटियों में भूभाग घाटी की दीवारों से परावर्तित प्रकाश ग्रहण करता है। बाहर निकली हुई चट्टानों के निचले हिस्से ज़मीन से परावर्तित प्रकाश से प्रकाशित होते हैं। यह प्रभाव आकाश शेडर की वायुमंडलीय स्कैटरिंग के साथ मिलकर भौतिक सिद्धांतों पर आधारित परिवेशी प्रकाश उत्पन्न करता है।

भूभाग फ़िज़िक्स एकीकरण

Rapier हाइटफ़ील्ड कोलाइडर

Rapier का WASM फ़िज़िक्स इंजन भूभाग के लिए अनुकूलित नेटिव हाइटफ़ील्ड कोलाइडर प्रदान करता है। भूभाग कोलाइडर बनाना सरल है:

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);

हाइटफ़ील्ड कोलाइडर कुशल ब्रॉडफ़ेज़ क्वेरी के लिए संरचित ग्रिड का उपयोग करता है। हाइटफ़ील्ड पर रेकास्टिंग की जटिलता त्रिभुज मेश की O(n) के बजाय O(log n) होती है। 65x65 चंक के लिए, टकराव क्वेरी माइक्रोसेकंड में पूरी हो जाती हैं।

वॉल्यूमेट्रिक भूभाग (SDF ओवरले) वाले चंक के लिए, मार्चिंग क्यूब्स आउटपुट से एक त्रिभुज मेश जनरेट करें और ट्राइमेश कोलाइडर का उपयोग करें। यह हाइटफ़ील्ड कोलाइडर से अधिक खर्चीला है, लेकिन मनमानी ज्यामिति संभाल सकता है। केवल खिलाड़ी के सबसे पास के 3-5 चंक के लिए ट्राइमेश कोलाइडर जनरेट करें। दूर के चंक को फ़िज़िक्स की आवश्यकता नहीं होती।

प्रदर्शन: 65x65 चंक के लिए Rapier का हाइटफ़ील्ड कोलाइडर, कैरेक्टर कंट्रोलर क्वेरी में प्रत्येक फ़िज़िक्स चरण पर लगभग 0.1ms जोड़ता है। हाइटफ़ील्ड कोलाइडर वाले 5 सक्रिय चंक: 0.5ms। वॉल्यूमेट्रिक चंक के लिए एक ट्राइमेश कोलाइडर: 0.2-0.5ms। कुल भूभाग फ़िज़िक्स बजट: 1ms से कम, जो पूरी दुनिया के 2-3ms फ़िज़िक्स बजट के भीतर है।

भूभाग-संवेदी कैरेक्टर कंट्रोलर

कैरेक्टर कंट्रोलर को भूभाग के गुणों पर प्रतिक्रिया देनी चाहिए:

  • ढलान सीमा: पात्र 45 डिग्री तक की ढलानों पर चल सकता है। इससे अधिक तीखी ढलानों पर वह फिसलने लगता है। इसके लिए पात्र की स्थिति पर भूभाग नॉर्मल का उपयोग किया जाता है (जिसकी गणना हाइटमैप ग्रेडिएंट से कम लागत में की जाती है)।
  • सतह मटेरियल प्रतिक्रिया: चट्टान पर चलने से रेत या कीचड़ पर चलने की तुलना में अलग कदमों की आवाज़ और गति उत्पन्न होती है। भूभाग का स्प्लैट मैप किसी भी बिंदु पर सतह का मटेरियल प्रदान करता है।
  • सीढ़ीनुमा चढ़ाई: पात्र 0.5 मीटर तक ऊँचे किनारों पर कदम रखकर चढ़ सकता है। Rapier का KinematicCharacterController कॉन्फ़िगर की जा सकने वाली कदम ऊँचाई के साथ इसे स्वचालित रूप से संभालता है।

ब्राउज़र में इंटरैक्टिव भूभाग संपादन

क्रिएटर दुनिया में भूभाग केवल जनरेट नहीं होता। खिलाड़ी उसे तराशते, संशोधित करते और नया आकार देते हैं। संपादन टूल को त्वरित प्रतिक्रिया वाला (तत्काल दृश्य फ़ीडबैक) और नेटवर्क से जुड़ा (अन्य खिलाड़ियों को बदलाव कुछ सेकंड में दिखाई दें) होना चाहिए।

WebGPU SDF एडिटर

Reinder Nijhoff का WebGPU SDF एडिटर दिखाता है कि पूर्ण-सुविधायुक्त SDF मॉडलिंग आज ब्राउज़र में काम करती है। एडिटर निम्नलिखित का समर्थन करता है:

  • स्थिति, घूर्णन और स्केल के साथ छह प्रिमिटिव आकृतियाँ (गोला, बॉक्स, शंकु, सिलेंडर, कैप्सूल, टोरस)
  • स्मूथ ब्लेंडिंग और कॉन्फ़िगर किए जा सकने वाले ब्लेंड रेडियस के साथ बूलियन ऑपरेशन (यूनियन, सब्ट्रैक्शन, इंटरसेक्शन)
  • समूहों और नेस्टेड ऑपरेशन वाले पदानुक्रमित सीन ग्राफ़
  • कई GPU कंप्यूट शेडर चरणों, 16,384 ग्रिड सेल में ऑक्ट्री-आधारित स्पेस पार्टिशनिंग और मार्चिंग क्यूब्स या सरफ़ेस नेट के माध्यम से सतह निष्कर्षण का उपयोग करने वाली रीयल-टाइम रेंडरिंग
  • शैडो मैप के माध्यम से टेम्पोरल एंटी-अलियासिंग और एम्बिएंट ऑक्लूज़न

प्रत्येक प्रिमिटिव को एक GPU बफ़र में 28 फ़्लोट (112 बाइट) के रूप में संग्रहीत किया जाता है। इस सघन निरूपण का अर्थ है कि कोई जटिल भूभाग संपादन (गुफ़ा का प्रवेश द्वार, मेहराब या तराशी गई चट्टानी सतह निर्धारित करने वाले दर्जनों SDF प्रिमिटिव) 5 KB से कम होता है और अन्य खिलाड़ियों के साथ तुरंत सिंक हो जाता है।

क्रिएटर दुनिया के लिए SDF संपादन वर्कफ़्लो इस प्रकार है:

  1. क्रिएटर एक स्कल्प्टिंग टूल चुनता है (गोला जोड़ें, बॉक्स घटाएँ, स्मूथ ब्लेंड)
  2. SDF प्रिमिटिव को रखने और उसका आकार तय करने के लिए दुनिया में क्लिक/ड्रैग करता है
  3. क्लाइंट स्थानीय मेश अपडेट करने के लिए संशोधित SDF पर तुरंत मार्चिंग क्यूब्स चलाता है (<16ms में फ़ीडबैक)
  4. SDF संपादन (प्रिमिटिव प्रकार + ट्रांसफ़ॉर्म + ब्लेंड मोड, ~100 बाइट) सर्वर को भेजा जाता है
  5. सर्वर संपादन को सत्यापित करता है (क्रिएटर के प्लॉट के भीतर हो, संरक्षित क्षेत्रों को न काटता हो) और आस-पास के खिलाड़ियों को ब्रॉडकास्ट करता है
  6. अन्य खिलाड़ियों के क्लाइंट SDF संपादन लागू करते हैं और अपना स्थानीय मेश फिर से जनरेट करते हैं

किसी संपादन के अन्य लोगों को दिखाई देने में लगने वाला कुल राउंड-ट्रिप समय: नेटवर्क विलंबता के आधार पर 100-300ms। क्रिएटर को अपना संपादन तुरंत दिखाई देता है, क्योंकि सर्वर पुष्टि से पहले ही उसे स्थानीय रूप से लागू कर दिया जाता है।

ब्रश-आधारित हाइटमैप संपादन

हाइटमैप परत (भूभाग का वह 90% हिस्सा जिसे वॉल्यूमेट्रिक सुविधाओं की आवश्यकता नहीं है) के लिए एक सरल संपादन मॉडल काम करता है। क्रिएटर ब्रश से ऊँचाई में बदलाव पेंट करता है:

  • ऊँचा/नीचा करें: फ़ॉलऑफ़ के साथ किसी त्रिज्या में ऊँचाई जोड़ें या घटाएँ
  • स्मूथ: किसी त्रिज्या में ऊँचाइयों का औसत निकालकर तीखे फ़ीचर हटाएँ
  • समतल करें: किसी त्रिज्या की सभी ऊँचाइयों को लक्ष्य मान पर सेट करें
  • अपरदन ब्रश: ब्रश की त्रिज्या में स्थानीय रूप से हाइड्रॉलिक अपरदन के कुछ चरण लागू करें

हाइटमैप संपादन एक डेल्टा होता है: ऊँचाई के बदलावों का एक छोटा पैच, जो आधार भूभाग पर ओवरले होता है। डेल्टा पैच बहुत छोटा होता है (16-बिट ऊँचाई ऑफ़सेट का 32x32 ग्रिड = 2 KB) और एक ही संदेश के रूप में अन्य खिलाड़ियों के साथ सिंक हो जाता है। प्रत्येक चंक में कई डेल्टा पैच जमा होते हैं और समय-समय पर सर्वर की ओर से चंक के स्थायी हाइटमैप में मर्ज कर दिए जाते हैं।

सहयोगात्मक संपादन की सीमाएँ

जब कई क्रिएटर एक ही चंक को एक साथ संपादित करते हैं, तो सिस्टम को नियमों की आवश्यकता होती है:

  • स्थानिक लॉकिंग: किसी दिए गए 8x8 मीटर उप-क्षेत्र को एक समय में केवल एक क्रिएटर संपादित कर सकता है। जब क्रिएटर संपादन स्ट्रोक शुरू करता है, तब लॉक प्राप्त होता है और ब्रश उठाते ही मुक्त हो जाता है। 10 सेकंड की निष्क्रियता के बाद लॉक की समय-सीमा समाप्त हो जाती है।
  • ओवरलैप न करने वाले संपादन: यदि दो क्रिएटर एक ही चंक के अलग-अलग हिस्सों को संपादित करते हैं, तो दोनों संपादन बिना टकराव के लागू होते हैं (वे अलग-अलग हाइटमैप सेल या SDF क्षेत्रों को संशोधित करते हैं)।
  • ओवरलैप करने वाले संपादन: यदि दो क्रिएटर एक ही स्थान को संपादित करते हैं, तो सर्वर प्राप्ति क्रम में संपादनों को क्रमबद्ध करता है। सामंजस्य के बाद दोनों क्लाइंट एक ही अंतिम परिणाम देखते हैं।

यह रखी गई वस्तुओं के लिए उपयोग किए जाने वाले पूर्ण CRDT तरीके से सरल है, क्योंकि भूभाग संपादन अलग-अलग ऑब्जेक्ट स्थिति के बजाय एक सतत फ़ील्ड (ऊँचाइयाँ, SDF दूरियाँ) पर योगात्मक ऑपरेशन होते हैं।

WebGPU में Nanite-शैली की वर्चुअल ज्यामिति

Unreal Engine 5 का Nanite बिल्ड समय पर क्लस्टर DAG (डायरेक्टेड एसाइक्लिक ग्राफ़) बनाकर और रनटाइम पर स्क्रीन-स्पेस त्रुटि के आधार पर प्रत्येक क्लस्टर के लिए सही LOD चुनकर अरबों त्रिभुज रेंडर करता है। पूरी पाइपलाइन GPU पर चलती है। इस तरीके को WebGPU पर पोर्ट किया जा चुका है।

Nanite WebGPU

मेशलेट LOD पदानुक्रम और सॉफ़्टवेयर रास्टराइज़र का उपयोग करके ब्राउज़र में एक जटिल मल्टी-ऑब्जेक्ट सीन रेंडर करता Nanite WebGPU
मेशलेट LOD, WGSL कंप्यूट शेडर में सॉफ़्टवेयर रास्टराइज़ेशन और प्रत्येक मेशलेट के लिए फ़्रस्टम व ऑक्लूज़न कलिंग का उपयोग करके Chrome में एक पूरा सीन रेंडर करता Nanite WebGPU। कोई नेटिव प्लगइन नहीं—शुद्ध WebGPU।

Scthe का Nanite WebGPU (1.1k+ GitHub स्टार) Nanite की मूल आर्किटेक्चर का एक संपूर्ण ब्राउज़र कार्यान्वयन है:

  • meshoptimizer की क्लस्टर जनरेशन का उपयोग करके ऑफ़लाइन बनाया गया मेशलेट LOD पदानुक्रम
  • WGSL कंप्यूट शेडर में लागू सॉफ़्टवेयर रास्टराइज़र (WebGPU की उन सीमाओं के भीतर काम करता है, जहाँ हार्डवेयर रास्टराइज़ेशन प्रत्येक क्लस्टर के लिए ड्रॉ को कुशलतापूर्वक नहीं कर सकता)
  • फ़्रस्टम और ऑक्लूज़न परीक्षणों का उपयोग करने वाली प्रत्येक इंस्टेंस और प्रत्येक मेशलेट के लिए कलिंग
  • बहुत अधिक दूर स्थित ऑब्जेक्ट के लिए बिलबोर्ड इम्पोस्टर
  • टेक्सचर और प्रत्येक वर्टेक्स के नॉर्मल का समर्थन पाइपलाइन: मेशों को लगभग 128 त्रिभुजों वाले क्लस्टरों में विभाजित किया जाता है। पड़ोसी क्लस्टरों को समूहबद्ध किया जाता है, और साझा सीमाओं को सुरक्षित रखते हुए प्रत्येक समूह को सरल बनाया जाता है (meshoptimizer का उपयोग करके)। यह प्रक्रिया पुनरावर्ती रूप से तब तक चलती है, जब तक पूरा मेश एक ही क्लस्टर में सिमट नहीं जाता। रनटाइम पर, एक कंप्यूट शेडर DAG में चलता है और प्रत्येक समूह के लिए सबसे कम-विस्तृत ऐसा क्लस्टर चुनता है, जो मौजूदा स्क्रीन रिज़ॉल्यूशन पर 1 पिक्सेल से कम त्रुटि उत्पन्न करता है।

THREE-Nanite एक उभरता हुआ Three.js कार्यान्वयन है, जो सैकड़ों हज़ार त्रिभुजों को संभालते हुए इंटीग्रेटेड ग्राफ़िक्स हार्डवेयर पर 20-40fps प्राप्त करता है। यह दर्शाता है कि Nanite-शैली की रेंडरिंग कम क्षमता वाले ब्राउज़र हार्डवेयर पर भी व्यावहारिक है।

meshoptimizer: LOD पाइपलाइन की नींव

meshoptimizer (Arseny Kapoulkine द्वारा) अधिकांश ब्राउज़र-संगत LOD पाइपलाइनों के पीछे की लाइब्रेरी है। संस्करण 1.0 (2025) ये सुविधाएँ प्रदान करता है:

  • मेश सरलीकरण, त्रुटि मेट्रिक्स के साथ (आकृति कितनी बदली, जिसका उपयोग LOD चयन के लिए होता है)
  • क्लस्टर निर्माण, Nanite-शैली की meshlet पदानुक्रमों के लिए
  • वर्टेक्स कैश अनुकूलन, GPU-अनुकूल त्रिभुज क्रम के लिए
  • ओवरड्रॉ अनुकूलन, पिक्सेल शेडर लागत कम करने के लिए
  • वर्टेक्स क्वांटाइज़ेशन और कंप्रेशन, छोटे डाउनलोड के लिए

meshoptimizer 1.0 (दिसंबर 2025 में जारी) एक नया सिंगल-हेडर clusterlod.h उपलब्ध कराता है, जो सीधे Nanite-शैली का सतत LOD लागू करता है। यह ऐसे क्लस्टरों की पदानुक्रम बनाता है जिन्हें क्रमशः समूहबद्ध और सरल किया जाता है; इसे जस का तस या किसी कस्टम पाइपलाइन के संदर्भ के रूप में उपयोग किया जा सकता है। यही वह सटीक क्लस्टर-DAG प्रिमिटिव है जिसकी भूभाग पाइपलाइन को SDF/marching-cubes मेश LOD के लिए आवश्यकता है।

हमारी भूभाग पाइपलाइन के लिए, meshoptimizer SDF भूभाग से मिले marching cubes आउटपुट को LOD पदानुक्रम वाले अनुकूलित, क्लस्टर किए गए मेशों में बदलता है। ऑफ़लाइन प्रोसेसिंग सर्वर-साइड चलती है। ब्राउज़र पहले से क्लस्टर किए गए मेश प्राप्त करता है और रनटाइम पर GPU-संचालित LOD चयन करता है।

LOD निर्माण के लिए meshoptimizer और रनटाइम चयन के लिए WebGPU कंप्यूट का संयोजन ब्राउज़र भूभाग को Nanite जैसा ही आर्किटेक्चरल पैटर्न देता है, जिसे वेब की सीमाओं के अनुरूप ढाला गया है।

भूभाग-सचेत लेवल डिज़ाइन

भूभाग केवल चलने की सतह नहीं है। उसका आकार खिलाड़ी की गति को दिशा देता है, ध्यान आकर्षित करता है और अन्वेषण की भावनात्मक लय बनाता है। सर्वोत्तम ओपन वर्ल्ड भूभाग का उपयोग एक डिज़ाइन उपकरण के रूप में करते हैं।

दृश्य-रेखाएँ और लैंडमार्क

The Level Design Book का दिशा-खोज अध्याय बताता है कि भूभाग की ऊँचाई खिलाड़ियों को क्या दिखाई देता है और वे कहाँ जाते हैं, इसे कैसे नियंत्रित करती है। एक पर्वत-श्रेणी अपने परे की चीज़ों को छिपाकर जिज्ञासा पैदा करती है। एक घाटी आवागमन को अपने सबसे निचले बिंदु की ओर ले जाती है। दूर से दिखाई देने वाला कोई ऊँचा लैंडमार्क (मीनार, पर्वत-शिखर, असामान्य पेड़) खिलाड़ियों को उसकी ओर चलने का लक्ष्य देता है।

क्रिएटर वर्ल्ड के लिए इसका अर्थ है कि भूभाग निर्माण को स्वाभाविक दिशा-खोज विशेषताएँ बनानी चाहिए। पर्वत-श्रेखाओं को दृश्य-रेखाएँ तोड़नी चाहिए, ताकि खिलाड़ी पहाड़ी की चोटी पार करके नया क्षेत्र देखे तो "उद्घाटन के क्षण" बनें। घाटियों को रोचक स्थानों की ओर मिलना चाहिए। ऐसे ऊँचे बिंदु होने चाहिए जहाँ क्रिएटर दूर से दिखाई देने वाले लैंडमार्क रख सकें।

जिज्ञासा-प्रेरित अन्वेषण

Purdue University के शोध (शोधपत्र) में स्थानिक अन्वेषण के चार प्रेरक पहचाने गए हैं:

  1. चरम बिंदुओं तक पहुँचना (सबसे ऊँचा शिखर, सबसे दूर का किनारा, सबसे गहरी गुफ़ा)। भूभाग में स्पष्ट चरम बिंदु होने चाहिए, जिन तक पहुँचने पर पुरस्कार जैसा अनुभव हो।
  2. दृश्य अवरोधों का समाधान करना (उस चट्टान के पीछे क्या है? उस गुफ़ा के अंदर क्या है?)। दृश्य को रोकने वाला भूभाग छिपी हुई चीज़ खोजने के लिए आगे बढ़ने को प्रेरित करता है।
  3. बेमेल वस्तुएँ (जंगल में कोई संरचना, अँधेरे में कोई प्रकाश)। प्राकृतिक भूभाग के बीच क्रिएटर द्वारा रखी गई वस्तुएँ ऐसा विरोधाभास बनाती हैं जो ध्यान खींचता है।
  4. स्थानिक संबंधों को समझना (यह घाटी उस तट से कैसे जुड़ती है?)। स्पष्ट रूप से समझ आने वाला भूगोल बनाने वाला भूभाग नक्शा पढ़ने और मार्ग की योजना बनाने को प्रोत्साहित करता है।

PlotMap: AI-सहायित POI प्लेसमेंट

PlotMap (arXiv:2309.15242) कथात्मक आवश्यकताओं को लेकर रुचि-बिंदुओं का लेआउट स्वचालित बनाता है (इस क्वेस्ट को नदी के पास एक गाँव चाहिए, उस क्वेस्ट को पहाड़ी की चोटी पर एक खंडहर चाहिए) और स्थानिक प्रतिबंधों को पूरा करने वाले भूभाग स्थान खोजता है। क्रिएटर वर्ल्ड के लिए ऐसी ही प्रणाली भूभाग के गुणों के आधार पर संरचनाएँ रखने के स्थान सुझा सकती है: "इस पहाड़ी की चोटी से अच्छी दृश्य-रेखाएँ मिलती हैं, इसलिए यह प्रहरी-मीनार के लिए उपयुक्त है," "यह सुरक्षित घाटी गाँव के लिए उपयुक्त होगी।"

बहता पानी और झरने

नदियाँ और झरने ऐसी भूभाग विशेषताएँ हैं जो दृश्य आकर्षण को परिवेशी ध्वनि और गेमप्ले उपयोगिता (बाधा, संसाधन या मार्ग के रूप में पानी) के साथ जोड़ती हैं।

नदी रेंडरिंग

ओपन वर्ल्ड में नदियों को आम तौर पर भूभाग की सतह का अनुसरण करने वाली टेक्सचरयुक्त पट्टियों के रूप में रेंडर किया जाता है। पट्टी का मेश नदी की स्प्लाइन (नियंत्रण बिंदुओं के रूप में संग्रहित) से बनाया जाता है और भूभाग के हाइटमैप पर प्रोजेक्ट किया जाता है। नदी का शेडर ये प्रभाव लागू करता है:

  • प्रवाह-संरेखित UVs, जो नदी की दिशा में स्क्रॉल करते हैं और बहते पानी का आभास बनाते हैं
  • किनारों पर झाग, जहाँ नदी तट से मिलती है (गहराई-आधारित, तटरेखा के झाग जैसा)
  • चैनल की चौड़ाई पर आधारित गति-भिन्नता (संकरे हिस्से तेज़ बहते हैं, चौड़े हिस्से धीमे)
  • गहराई-आधारित रंग के साथ पारदर्शिता (उथला पानी साफ़, गहरा पानी गहरा रंग लिए होता है)

ब्राउज़र वर्ल्ड के लिए नदी का डेटा संक्षिप्त होता है: एक स्प्लाइन (प्रत्येक नदी खंड में 20-50 नियंत्रण बिंदु, लगभग 400 बाइट) के साथ चौड़ाई और प्रवाह गति के पैरामीटर। क्लाइंट स्प्लाइन को अपनी भूभाग सतह पर प्रोजेक्ट करके स्थानीय रूप से नदी का मेश बनाता है।

झरना रेंडरिंग

जहाँ नदी किसी खड़ी चट्टान से नीचे गिरती है, वहाँ समतल नदी सतह की जगह झरने का पार्टिकल सिस्टम लेता है। रियल-टाइम जल सिमुलेशन शोध का हाइब्रिड तरीका (EG): जिन क्षेत्रों को हाइट फ़ील्ड से प्रस्तुत नहीं किया जा सकता (झरने, छींटे), वे फुहार, छींटे और झाग के पार्टिकल में बदल जाते हैं, जो द्रव सिमुलेशन के साथ द्रव्यमान और संवेग का आदान-प्रदान करते हैं।

ब्राउज़र वर्ल्ड के लिए झरने अधिक सरल होते हैं: पता लगाएँ कि नदी की स्प्लाइन भूभाग की ऊँचाई में अचानक बदलाव को कहाँ पार करती है, उस बिंदु पर नीचे की ओर वेग वाला पार्टिकल सिस्टम बनाएँ और तल पर झागदार छींटा जोड़ें। पार्टिकल स्क्रॉलिंग अल्फ़ा टेक्सचर वाले GPU-इंस्टेंस्ड क्वाड होते हैं। प्रत्येक झरने पर 500 पार्टिकल, एक ड्रॉ कॉल। गिरते पानी की ध्वनि दूरी क्षीणन के साथ Web Audio API का उपयोग करती है।

दूरस्थ भूभाग विशेषताओं के लिए इम्पोस्टर

पेड़, चट्टानें, इमारतें और अन्य भूभाग विशेषताएँ दूरी पर बहुत छोटी हो जाती हैं। उन्हें पूर्ण 3D मेश के रूप में रेंडर करना GPU साइकल व्यर्थ करता है। इम्पोस्टर दूरस्थ वस्तुओं को पहले से रेंडर की गई, कैमरे की ओर मुख करने वाली सपाट छवियों से बदल देते हैं।

ऑक्टाहेड्रल इम्पोस्टर एटलस

एक ऑक्टाहेड्रल इम्पोस्टर किसी 3D वस्तु का रूप कई दृश्य कोणों से कैप्चर करके उन्हें टेक्सचर एटलस में संग्रहीत करता है। रनटाइम पर शेडर मौजूदा दृश्य दिशा के आधार पर एटलस का सैंपल लेता है और कैप्चर किए गए दो निकटतम कोणों के बीच इंटरपोलेट करता है।

एक हेमी-ऑक्टाहेड्रल एटलस (केवल ऊपरी अर्धगोले से दृश्य, क्योंकि आप पेड़ों को शायद ही कभी नीचे से देखते हैं) समान टेक्सचर आकार में पूर्ण ऑक्टाहेड्रल एटलस की तुलना में दोगुना कोणीय रिज़ॉल्यूशन देता है। Unity की इम्पोस्टर प्रणाली के अनुसार, 1,600 पेड़ इंस्टेंस को वास्तविक मेशों (प्रत्येक में 140K त्रिभुज) से इम्पोस्टर में बदलने पर फ़्रेम समय 111ms से घटकर 5.78ms हो गया।

ब्राउज़र वर्ल्ड के लिए इम्पोस्टर पाइपलाइन:

  1. सर्वर-साइड: प्रत्येक एसेट को 16-32 दृश्य कोणों से रेंडर करें और रंग, नॉर्मल व गहराई कैप्चर करें
  2. उन्हें एटलस टेक्सचर में पैक करें (प्रत्येक एसेट के लिए एक एटलस, लगभग 256x256 पिक्सेल, KTX2 के रूप में <100 KB)
  3. रनटाइम पर: इम्पोस्टर दूरी (आमतौर पर 100-200m) से आगे के इंस्टेंस एटलस का सैंपल लेने वाले बिलबोर्ड के रूप में रेंडर हों
  4. बदलाव छिपाने के लिए 20m के संक्रमण क्षेत्र में मेश और इम्पोस्टर के बीच क्रॉसफ़ेड करें

बिलबोर्ड स्प्लैटिंग (BBSplat)

Billboard Splatting (2024, arXiv:2411.08508) सीखने योग्य टेक्सचरयुक्त समतलीय प्रिमिटिव का उपयोग करके इसे और आगे ले जाता है। पहले से रेंडर किए गए दृश्यों के बजाय, BBSplat किसी भी कोण से 3D वस्तु को सर्वोत्तम रूप से प्रस्तुत करने के लिए बिलबोर्ड की स्थितियों और टेक्सचरों को अनुकूलित करता है। इससे दृश्य-निर्भर रूप बनाए रखते हुए 3D Gaussian Splatting की तुलना में 17 गुना तक कंप्रेशन मिलता है। ब्राउज़र वर्ल्ड में दूरस्थ भूभाग विशेषताओं के लिए, BBSplat कोणीय कवरेज सुधारते हुए प्रति-एसेट इम्पोस्टर स्टोरेज घटा सकता है।

पेशेवर भूभाग टूल और उनसे मिलने वाली सीख

शुरू से भूभाग पाइपलाइन बनाने से पहले यह समझना उपयोगी है कि पेशेवर ऑफ़लाइन टूल क्या करते हैं। ये टूल भूभाग निर्माण पर दशकों के शोध को प्रोडक्शन वर्कफ़्लो में समाहित करते हैं।

Gaea (QuadSpinner) GPU-त्वरित है और बदलावों पर लगभग तुरंत फ़ीडबैक देता है। यह प्रत्येक दिशा में 20 लाख पिक्सेल तक के टाइल्ड बिल्ड, स्वचालित LOD मेश एक्सपोर्ट और एक नोड-आधारित ग्राफ़ का समर्थन करता है, जहाँ प्रत्येक नोड एक भौतिक प्रक्रिया है (अपरदन, अवसादन, उत्थान, तापीय अपक्षय)। Gaea के अपरदन नोड हाथ से तराशे हुए जैसे दिखने वाले भूभाग बनाते हैं, क्योंकि वे सामान्य नॉइज़ के बजाय विशिष्ट भौतिक प्रक्रियाओं का मॉडल बनाते हैं। मुख्य सीख: Gaea किसी एक अपरदन एल्गोरिदम का उपयोग नहीं करता। यह नदीजनित अपरदन (नदी द्वारा कटाव), तापीय अपरदन (चट्टानों का टूटना), तटीय अपरदन (लहरों की क्रिया) और पवन अपरदन (रेत के टीलों का निर्माण) के लिए अलग-अलग नोड देता है। उन्हें ग्राफ़ में संयोजित करने से किसी विशिष्ट जलवायु के भूवैज्ञानिक चरित्र वाला भूभाग बनता है।

World Machine भूभाग की वृहद संरचना पर ध्यान देते हुए ऐसा ही ग्राफ़-आधारित तरीका अपनाता है। इसका "लेआउट जनरेटर" कलाकारों को भूभाग विशेषताओं की मोटी आकृति स्केच करने देता है (यहाँ पर्वत, वहाँ घाटी, इस किनारे के साथ तटरेखा), जिसके बाद प्रणाली भौतिक रूप से विश्वसनीय विवरण भरती है। यही वह क्रिएटर वर्कफ़्लो है जो हम चाहते हैं: मंशा स्केच करें, भूविज्ञान पाएँ।

World Creator एडिटिंग के दौरान रियल-टाइम पूर्वावलोकन और ऐसे अंतर्निहित नदी निर्माण के कारण अलग पहचान रखता है, जो भूभाग का विश्लेषण करके जल-निकासी विश्लेषण के आधार पर प्रवाह मार्गों की स्वतः गणना करता है।

इन टूल से हमारी सीख: भौतिक प्रक्रियाओं को संयोजित करने वाला नोड-ग्राफ़ तरीका किसी भी एक एल्गोरिदम से अधिक शक्तिशाली है। हमारी सर्वर-साइड निर्माण पाइपलाइन को यह शृंखला समर्थित करनी चाहिए: नॉइज़ आधार > टेक्टॉनिक उत्थान > हाइड्रॉलिक अपरदन > तापीय अपक्षय > तटीय अपरदन > वनस्पति। क्रिएटर प्रत्येक चरण के पैरामीटर नियंत्रित करते हैं। पाइपलाइन सर्वर-साइड कुछ सेकंड में चलती है और हाइटमैप, स्प्लैट मैप तथा वनस्पति घनत्व मैप बनाती है।

SoilMachine: ओपन-सोर्स भू-आकृति विज्ञान

SoilMachine: युग्मित हाइड्रॉलिक, तापीय और पवन अपरदन वाला भूभाग दिखाने वाला ओपन-सोर्स मॉड्यूलर भू-आकृति विज्ञान सिम्युलेटर
SoilMachine एक ही परतदार भूभाग मॉडल में हाइड्रॉलिक, तापीय और पवन अपरदन को जोड़ता है। बहु-परत डेटा संरचना ऐसी विशेषताओं का समर्थन करती है जिन्हें हाइटमैप प्रस्तुत नहीं कर सकते: गुफ़ाएँ, बाहर निकली चट्टानें, सपाट-शीर्ष पहाड़ियाँ और भूजल वितरण।

SoilMachine एक ओपन-सोर्स मॉड्यूलर भू-आकृति विज्ञान सिम्युलेटर है, जो कई अपरदन प्रणालियों (हाइड्रॉलिक, तापीय, पवन) को अवसाद परिवहन और निक्षेपण के साथ जोड़ता है। GPU कंप्यूट के साथ C++ में निर्मित यह उस बहु-प्रक्रिया अपरदन दृष्टिकोण का संदर्भ कार्यान्वयन देता है जिसका उपयोग पेशेवर टूल करते हैं।

संबंधित soillib (C++20, MIT लाइसेंस) पुन: उपयोग योग्य लाइब्रेरी के रूप में अंतर्निहित भू-आकृति विज्ञान सिमुलेशन प्रिमिटिव प्रदान करता है। और hydro-gen रियल-टाइम पैरामीटर समायोजन वाले OpenGL कंप्यूट शेडरों में ग्रिड-आधारित (उथला पानी) और पार्टिकल-आधारित (बारिश की बूँद) दोनों प्रकार के हाइड्रॉलिक अपरदन लागू करता है।

इन ओपन-सोर्स टूल को हमारी सर्वर-साइड निर्माण पाइपलाइन के लिए अनुकूलित किया जा सकता है। यदि हम कभी रियल-टाइम क्रिएटर फ़ीडबैक के लिए ब्राउज़र में अपरदन चलाना चाहें, तो कंप्यूट शेडर कार्यान्वयन सीधे WebGPU में रूपांतरित किए जा सकते हैं।

बहु-परत भूभाग सामग्री

वास्तविक भूभाग एक ही सतह नहीं होता। उसमें परतें होती हैं: सबसे नीचे आधारशिला, ऊपर मिट्टी और सतहों पर जमा होती बर्फ़ या रेत। गतिशील परतें मौसम, ऋतुओं और क्रिएटर की कार्रवाइयों के साथ भूभाग का दृश्य चरित्र बदलती हैं।

परतदार हाइटफ़ील्ड निरूपण

एक हाइटमैप के बजाय प्रत्येक ग्रिड सेल के लिए कई ऊँचाई परतें उपयोग करें:

Cell {
  bedrock_height: f16,    // स्थायी चट्टानी सतह
  soil_height: f16,       // आधारशिला के ऊपर जमा मिट्टी/अवसाद
  snow_height: f16,       // गतिशील हिम संचय
  water_height: f16       // ठहरे हुए पानी की गहराई
}

कुल: प्रति सेल 8 बाइट (एक हाइटमैप के लिए 2 बाइट की तुलना में)। 65x65 चंक के लिए यह कंप्रेशन से पहले 34 KB है। फिर भी संक्षिप्त।

दृश्य सतह bedrock + soil + snow है। भूभाग शेडर सभी परतों को पढ़ता है और उसी अनुसार सामग्रियों को मिश्रित करता है: जहाँ मिट्टी पतली है, वहाँ चट्टान दिखाई देती है। जहाँ बर्फ़ जमी है, वहाँ सतह सफ़ेद होती है। जहाँ पानी ठहरा है, वहाँ पोखर या झीलें बनती हैं।

गतिशील संचय

हिमपात के दौरान बर्फ़ समतल और ऊपर की ओर मुख वाली सतहों पर जमा होती है। संचय दर सतह के नॉर्मल (खड़ी ढलानें बर्फ़ नहीं रोकतीं), तापमान (ऊँचाई पर निर्भर) और आश्रय (बाहर निकले हिस्सों के नीचे के क्षेत्र साफ़ रहते हैं) पर निर्भर करती है। एक कंप्यूट शेडर पास प्रत्येक मौसम टिक पर (हर कुछ सेकंड में) बर्फ़ की परत अपडेट करता है।

रेत का संचय भी पवन-प्रेरित निक्षेपण के साथ इसी तरह काम करता है। हवा खुले क्षेत्रों से कणों को उड़ाती है और उन्हें अवरोधों के पीछे तथा सुरक्षित क्षेत्रों में जमा करती है।

क्रिएटर वर्ल्ड में गतिशील संचय का अर्थ है कि अलग-अलग मौसम में भूभाग अलग दिखता है। बर्फ़ीले तूफ़ान के दौरान दुनिया बर्फ़ से ढक जाती है और साफ़ मौसम में पिघलती है। बारिश गड्ढों में पानी भर देती है। इससे क्रिएटर के कुछ किए बिना ही दुनिया प्रतिक्रियाशील महसूस होती है।

बहु-परत अपरदन

2024 का शोधपत्र "बहु-परत हाइटमैप का उपयोग करके 3D रियल-टाइम हाइड्रॉलिक अपरदन सिमुलेशन" (EG) अपरदन को परतों में काम करने के लिए विस्तारित करता है। पानी आधारशिला की तुलना में मिट्टी का अधिक तेज़ी से अपरदन करता है। अवसाद एक नई मिट्टी की परत के रूप में जमा होता है। सिमुलेशन परतों की अखंडता बनाए रखता है (आधारशिला मिट्टी के नीचे रहती है), साथ ही बाहर निकली चट्टानों जैसी जटिल विशेषताएँ संभव बनाता है (जहाँ आधारशिला नीचे की अपरदित मिट्टी के ऊपर बाहर निकली रहती है)। प्रदर्शन: 2048x2048 रिज़ॉल्यूशन पर RTX 3070 में प्रति सिमुलेशन चरण लगभग 6ms। यह सर्वर-साइड जनरेशन के लिए पर्याप्त तेज़ है, लेकिन ब्राउज़र में प्रति-फ़्रेम सिमुलेशन के लिए बहुत धीमा है। लेयर्ड रिप्रेज़ेंटेशन स्थिर टेरेन जनरेशन के लिए उपयुक्त है, जबकि डायनेमिक बर्फ़/पानी का संचय एक कम खर्चीले प्रति-फ़्रेम शेडर के रूप में चलता है।

घास, चट्टान और सूक्ष्म विवरणों की रेंडरिंग

लैंडस्केप को केवल टेरेन ज्यामिति और टेक्सचर से अधिक की आवश्यकता होती है। इसमें हवा में लहराती घास की पत्तियाँ, ढलानों पर बिखरी चट्टानें और फूल, कंकड़ व गिरी हुई शाखाओं जैसे छोटे विवरण होने चाहिए, जो पास से देखने पर दृश्य को प्राकृतिक बनाते हैं।

GPU-इंस्टेंस्ड घास

एक ही ड्रॉ कॉल में GPU इंस्टेंसिंग से रेंडर की गई घास की दस लाख पत्तियाँ। यही तकनीक Three.js और WebGPU में भी काम करती है: प्रति-इंस्टेंस ट्रांसफ़ॉर्म, वर्टेक्स-शेडर द्वारा हवा का एनिमेशन और टेरेन डेटा से पत्तियाँ बिखेरने के लिए डेंसिटी मैप।

ब्राउज़र-आधारित घास रेंडरिंग Three.js में अच्छी तरह सिद्ध है और GPU इंस्टेंसिंग के माध्यम से काम करती है। al-ro के घास डेमो का तरीका InstancedBufferGeometry का उपयोग करके एक ही ड्रॉ कॉल में घास की 100,000 पत्तियाँ रेंडर करता है।

घास की प्रत्येक पत्ती एक साधारण क्वाड (4-8 त्रिभुज) होती है। प्रति-इंस्टेंस एट्रिब्यूट उसकी स्थिति, ऊँचाई, झुकाव की दिशा, रंग विविधता और हवा का फ़ेज़ परिभाषित करते हैं। वर्टेक्स शेडर:

  1. प्रति-इंस्टेंस ट्रांसफ़ॉर्म पढ़ता है
  2. वर्ल्ड पोज़िशन और समय से जुड़ी साइन तरंगों का उपयोग करके हवा का एनिमेशन लागू करता है
  3. हवा की तीव्रता के आधार पर पत्ती को मोड़ता है (सिरे पर अधिक झुकाव, आधार पर बिल्कुल नहीं)
  4. रंग ग्रेडिएंट लागू करता है (सबसरफ़ेस स्कैटरिंग के लिए आधार पर गहरा और सिरे पर हल्का)

Codrops का मुलायम घास ट्यूटोरियल (2025, ट्यूटोरियल) शेल टेक्सचरिंग तरीका दिखाता है: ग्राउंड प्लेन को बढ़ते हुए ऑफ़सेट पर कई बार रेंडर किया जाता है और प्रत्येक लेयर घनी घास के आयतन जैसा रूप बनाने के लिए एक नॉइज़ टेक्सचर को सैंपल करती है। बहुत घने आवरण के लिए यह अलग-अलग पत्तियों की इंस्टेंसिंग से सस्ता है, लेकिन पास से कम यथार्थवादी दिखता है।

क्रिएटर वर्ल्ड में घास का घनत्व प्रति चंक वेजिटेशन डेंसिटी मैप से आता है। GPU रेंडरिंग के समय डेंसिटी मैप से पत्तियों की स्थितियाँ बिखेरता है। प्रत्येक पत्ती का डेटा न तो संग्रहित किया जाता है और न ही स्ट्रीम किया जाता है। डेंसिटी मैप प्रति चंक 32x32 ग्रिड (1 KB) होता है और GPU उससे पत्तियों के हज़ारों इंस्टेंस जनरेट करता है।

प्रक्रियात्मक चट्टान और क्लिफ़ विवरण

क्लिफ़ फ़ेस और चट्टानी टेरेन को ऐसे ज्यामितीय विवरणों की आवश्यकता होती है जिन्हें बेस हाइटमैप या SDF उचित रिज़ॉल्यूशन पर उपलब्ध नहीं करा सकते। दो तरीके एक-दूसरे के पूरक हैं:

GPU मेश शेडर रिसरफ़ेसिंग (Raad et al., Eurographics 2025, शोध-पत्र) एक मोटे कंट्रोल मेश से रेंडरिंग के समय प्रक्रियात्मक ज्यामिति जनरेट करता है। मेश शेडर बेस टेरेन सतह को पढ़ता है और विस्तृत ज्यामिति को मेमोरी में संग्रहित किए बिना विस्थापन, दरारें और उभार जोड़ता है। इससे VRAM का उपयोग घटता है और डायनेमिक LOD संभव होता है।

इंस्टेंस्ड रॉक स्कैटरिंग GPU इंस्टेंसिंग का उपयोग करके खड़ी ढलानों और क्लिफ़ के किनारों पर पहले से बने रॉक मेश रखती है। एक कंप्यूट शेडर टेरेन नॉर्मल और ढलान को पढ़ता है तथा जहाँ ढलान किसी थ्रेशोल्ड से अधिक होती है वहाँ चट्टानों के इंस्टेंस बिखेरता है। प्रत्येक इंस्टेंस रैंडम रोटेशन और स्केल वाला एक छोटा मेश (200-500 त्रिभुज) होता है। इंस्टेंसिंग के साथ बिखेरी गई 10,000 चट्टानें रेंडरिंग लागत में नगण्य वृद्धि करती हैं।

सड़कें और रास्ते

क्रिएटर द्वारा बनाई गई सड़कों, पगडंडियों और रास्तों को टेरेन के अनुरूप होना चाहिए और सतह की सामग्री को बदलना चाहिए (घास की जगह मिट्टी या पत्थर लगाकर)।

हर प्रमुख गेम इंजन में इस्तेमाल होने वाला तरीका: पथ को स्प्लाइन (कंट्रोल पॉइंट्स की एक शृंखला) के रूप में परिभाषित करें। स्प्लाइन को टेरेन की सतह पर प्रोजेक्ट करें। ऐसा स्ट्रिप मेश जनरेट करें जो स्प्लाइन का अनुसरण करे और टेरेन से थोड़ा ऊपर रहे। स्ट्रिप पर सड़क का टेक्सचर लागू करें। टेरेन शेडर में प्रोजेक्टेड टेक्सचर या डीकैल का उपयोग करके स्प्लाइन की चौड़ाई के भीतर टेरेन सामग्री को सड़क की सामग्री की ओर ब्लेंड करें।

ब्राउज़र वर्ल्ड में क्रिएटर टेरेन पर एक पथ बनाता है। क्लाइंट कंट्रोल पॉइंट्स जनरेट करके उन्हें सर्वर को भेजता है (कुछ दर्जन vec3 मान)। सर्वर स्प्लाइन को संग्रहित करता है। सभी क्लाइंट स्प्लाइन को अपने टेरेन मेश पर प्रोजेक्ट करके रोड स्ट्रिप को स्थानीय रूप से रेंडर करते हैं। सड़क का डेटा बहुत छोटा होता है (पथ के स्प्लाइन पॉइंट्स, संभवतः 200 बाइट), लेकिन उसका दृश्य प्रभाव बड़ा होता है: क्रिएटर की रचनाओं को जोड़ने वाले रास्ते दुनिया को आबाद महसूस कराते हैं।

टेरेन की छायाएँ

टेरेन की छायाएँ दृश्य को समझने (टेरेन का आकार जानने) और वातावरण (दिन के समय के अनुरूप भाव) के लिए अत्यंत महत्वपूर्ण हैं। ओपन वर्ल्ड में सूर्य पूरे दृश्यमान टेरेन पर छायाएँ डालता है।

कैस्केडेड शैडो मैप्स (CSM)

CSM व्यू फ़्रस्टम को दूरी की 3-4 श्रेणियों (कैस्केड) में बाँटता है। प्रत्येक कैस्केड अपनी दूरी के लिए उपयुक्त रिज़ॉल्यूशन पर सूर्य के दृष्टिकोण से एक शैडो मैप रेंडर करता है। निकट कैस्केड: उच्च रिज़ॉल्यूशन (पेड़ों और इमारतों के नीचे विस्तृत छायाएँ)। दूर का कैस्केड: कम रिज़ॉल्यूशन (पहाड़ों की व्यापक छायाएँ)।

Three.js और Babylon.js दोनों CSM का समर्थन करते हैं। टेरेन के लिए मुख्य ऑप्टिमाइज़ेशन: शैडो मैप में केवल टेरेन रेंडर करें, घास की अलग-अलग पत्तियाँ या छोटे विवरण नहीं। घास अपनी छाया के बजाय टेरेन के शैडो मैप का उपयोग करके स्वयं पर छाया दिखाती है।

प्रदर्शन बजट: प्रत्येक 1024x1024 के 3-4 शैडो कैस्केड। टेरेन को शैडो मैप्स में रेंडर करने की लागत 0.5-1ms है (टेरेन ज्यामिति पहले से GPU मेमोरी में होती है)। टेरेन शेडर में 4 कैस्केड सैंपल करने से 0.2-0.3ms जुड़ते हैं।

हाइटमैप से टेरेन सेल्फ़-शैडोइंग

बहुत बड़े टेरेन के लिए, जहाँ CSM महँगा हो जाता है, पहले से एक होराइज़न मैप की गणना करें: प्रत्येक टेरेन सेल के लिए 8 दिशाओं में अधिकतम ऊँचाई कोण संग्रहित करें। रेंडरिंग के समय सूर्य के कोण की होराइज़न मैप से तुलना करके निर्धारित करें कि कोई बिंदु छाया में है या नहीं। Skyrim दूरस्थ टेरेन (CSM की सीमा से परे) पर सेल्फ़-शैडो दिखाने के लिए इसी तरीके का उपयोग करता है।

होराइज़न मैप की गणना सर्वर-साइड पर हाइटमैप से की जाती है (कुछ सेकंड का प्रोसेसिंग समय) और यह प्रति चंक 128x128 टेक्सचर (16 KB कंप्रेस्ड) के रूप में स्ट्रीम होता है। इसका दृश्य प्रभाव महत्वपूर्ण है: बहुत अधिक दृश्य दूरी पर भी पर्वतीय घाटियाँ यथार्थवादी ढंग से गहरी दिखाई देती हैं।

स्ट्रीमिंग के लिए टेरेन डेटा कंप्रेशन

ब्राउज़र वर्ल्ड के लिए नेटवर्क ही बॉटलनेक है। टेरेन डेटा में बचाया गया प्रत्येक बाइट लोडिंग समय को कम करता है।

हाइटमैप कंप्रेशन

रॉ 16-बिट हाइटमैप अच्छी तरह कंप्रेस होते हैं क्योंकि आस-पास के सेल के मान समान होते हैं। पाइपलाइन:

  1. डेल्टा एन्कोडिंग: प्रत्येक सेल और उसके अनुमानित मान (पड़ोसी सेल का औसत) के बीच अंतर संग्रहित करें। डेल्टा मान छोटे और शून्य के आस-पास केंद्रित होते हैं।
  2. क्वांटाइज़ेशन: दूर के चंक्स के लिए प्रिसीज़न को 16-बिट से घटाकर 12-बिट या 8-बिट करें। 500 मीटर की दूरी पर 100m ऊँचाई सीमा में 8-बिट हाइट प्रिसीज़न (0.4m रिज़ॉल्यूशन) को 16-बिट से अलग नहीं पहचाना जा सकता।
  3. एंट्रॉपी कोडिंग: डेल्टा-एन्कोडेड स्ट्रीम पर zlib या brotli कंप्रेशन लागू करें। सामान्य कंप्रेशन अनुपात: 4-8x।

परिणाम: 16-बिट पर 65x65 चंक का आकार रॉ 8.4 KB से घटकर कंप्रेस्ड 1-2 KB हो जाता है। 8-बिट की घटी हुई प्रिसीज़न पर: 0.5-1 KB।

प्रोग्रेसिव हाइटमैप स्ट्रीमिंग

पहले कम रिज़ॉल्यूशन पर टेरेन भेजें, फिर उसे परिष्कृत करें। 17x17 हाइटमैप (4m सेल स्पेसिंग वाले 64m चंक के लिए न्यूनतम) रॉ रूप में 578 बाइट और कंप्रेस होने पर 200 बाइट से कम होता है। टेरेन तुरंत दिखाई देता है। फिर 33x33 रिफ़ाइनमेंट स्ट्रीम करें (विषम पंक्ति/कॉलम के सैंपल जोड़ता है)। उसके बाद पूर्ण 65x65 रिज़ॉल्यूशन भेजें। प्रत्येक स्तर पिछले डेटा को बदले बिना विवरण जोड़ता है।

यह ज्योमेट्री क्लिपमैप LOD रिंग्स के अनुरूप है: दूरस्थ टेरेन कम-रिज़ॉल्यूशन संस्करण (17x17), मध्य दूरी वाला टेरेन मध्यम संस्करण (33x33) और पास का टेरेन पूर्ण संस्करण (65x65) का उपयोग करता है। स्ट्रीमिंग प्राथमिकता रेंडरिंग LOD से मेल खाती है।

SDF वॉल्यूम कंप्रेशन

स्पार्स SDF वॉल्यूम बहुत अधिक कंप्रेस होते हैं क्योंकि अधिकांश वॉक्सेल सतह से दूर (खाली स्थान में) होते हैं। विकल्प:

रन-लेंथ एन्कोडिंग: एक जैसे मानों (खाली वॉक्सेल) की शृंखलाओं को एन्कोड करें। सामान्य SDF वॉल्यूम में 95% से अधिक स्थान खाली होता है, इसलिए RLE 10-50x कंप्रेशन देता है।

स्पार्स ऑक्ट्री: केवल उन ऑक्ट्री नोड्स को संग्रहित करें जिनमें सतह को काटने वाले वॉक्सेल हों। खाली स्थान के लिए कोई नोड नहीं होता। एकल गुफ़ा सुरंग वाले 64^3 SDF वॉल्यूम में केवल 2,000-5,000 भरे हुए नोड हो सकते हैं (कुल 262,144 वॉक्सेल के बजाय), जिनमें से प्रत्येक 1-2 बाइट में संग्रहित होता है।

एंट्रॉपी-ड्रिवन प्रोग्रेसिव कंप्रेशन (2024, HAL) एंट्रॉपी-अनुकूलित प्लेन और अडैप्टिव क्वांटाइज़ेशन के साथ स्पेस को बार-बार विभाजित करके 3D स्पैशियल डेटा पर लागू होता है। यह रेट-डिस्टॉर्शन समझौतों के लिए अनुकूलित रिफ़ाइनमेंट की स्ट्रीम बनाता है, जो नेटवर्क स्ट्रीमिंग की कम बिटरेट पर विशेष रूप से लाभदायक है।

सब कुछ एक साथ: ब्राउज़र टेरेन पाइपलाइन

इस लेख के शीर्ष पर दिया गया रणनीतिक अवलोकन त्वरित निर्णय फ़्रेमवर्क और चरणबद्ध बिल्ड योजना प्रस्तुत करता है। यह अनुभाग सर्वर-साइड जनरेशन पाइपलाइन और ब्राउज़र रेंडरिंग पाइपलाइन, दोनों का पूरा तकनीकी विवरण देता है।

जनरेशन पाइपलाइन (सर्वर-साइड)

जनरेशन पाइपलाइन भौतिक प्रक्रियाओं के एक डायरेक्टेड ग्राफ़ के रूप में चलती है, जो Gaea और World Machine के नोड-ग्राफ़ तरीके से प्रेरित है। प्रत्येक चरण पिछले चरण का आउटपुट लेकर उसे परिष्कृत करता है। क्रिएटर प्रत्येक चरण पर पैरामीटर नियंत्रित करते हैं।

चरणइनपुटप्रक्रियाआउटपुटसमय
1. बेस टेरेनसीड या टेक्स्ट प्रॉम्प्टTerrain Diffusion / MESA / नॉइज़ + fBm16-बिट हाइटमैप1-5s
2. अपरदनहाइटमैपएनालिटिकल स्ट्रीम पावर + थर्मल अपरदनअपरदित हाइटमैप, फ़्लो अक्यूम्युलेशन मैप, सेडिमेंट मैप0.5-2s
3. नदियाँअपरदित हाइटमैप, फ़्लो मैपड्रेनेज नेटवर्क एक्सट्रैक्शन, चैनल कार्विंगनदी स्प्लाइन, जल-स्तर मैप0.5s
4. तटसमुद्र तल के पास का हाइटमैपNEWTS-शैली का तरंग अपरदनतटीय विशेषताएँ (क्लिफ़, समुद्र तट, सी-स्टैक)1-3s
5. वॉल्यूमेट्रिकहाइटमैप + क्रिएटर का आशयArenite अपरदन / गुफ़ा जनरेशन / SDF स्कल्प्टप्रभावित चंक्स के लिए स्पार्स SDF वॉल्यूम1-60s
6. सामग्रियाँहाइटमैप + अपरदन मैप्सTerraFusion / Geodiffussr / प्रक्रियात्मक नियमस्प्लैट मैप्स, टेरेन टेक्सचर1-5s
7. वनस्पतिहाइटमैप + फ़्लो मैप + सामग्रियाँइकोसिस्टम प्रतिस्पर्धा सिमुलेशनप्रति चंक प्रत्येक बायोम के डेंसिटी मैप्स1-3s
8. होराइज़न मैप्सअंतिम हाइटमैप8 दिशाओं में अधिकतम ऊँचाई कोणप्रति चंक सेल्फ़-शैडो टेक्सचर2-5s
9. चंकिंगसभी आउटपुटस्लाइस, डेल्टा-एन्कोड, कंप्रेस, हैशCDN पर चंक पैकेज5-10s
कुल15-90s

एक नया 4x4 km वर्ल्ड 15-90 सेकंड में जनरेट हो जाता है। क्रिएटर के संपादन (स्कल्प्टिंग, पैरामीटर परिवर्तन) केवल प्रभावित चंक्स के प्रभावित चरणों को दोबारा चलाते हैं और आम तौर पर 5 सेकंड से कम में पूरे हो जाते हैं।

रेंडरिंग पाइपलाइन (ब्राउज़र)

चरणWebGPU पाथWebGL 2 फ़ॉलबैकफ़्रेम बजट
1. स्ट्रीमिंगप्रायोरिटी क्यू, प्रेडिक्टिव प्री-फ़ेचसमानलागू नहीं (एसिंक्रोनस)
2. हाइटमैप टेरेनGPU-ड्रिवन CDLOD क्वाडट्री, कंप्यूट कलिंग, इनडायरेक्ट ड्रॉज्योमेट्री क्लिपमैप्स, CPU रिंग अपडेट0.5-1ms
3. वॉल्यूमेट्रिक मेशकंप्यूट मार्चिंग क्यूब्स + TransvoxelWeb Worker से पहले से जनरेट किए गए मेश, 2-3 कैश्ड LOD0.5-2ms
4. LOD ट्रांज़िशनवर्टेक्स शेडर में जियोमॉर्फ़िंगसमानऊपर शामिल
5. सामग्रियाँट्राइप्लानर PBR + लैप्लेशियन ब्लेंडिंग + फ़ेज़र नॉइज़ डिटेल + वर्चुअल टेक्सचरिंगट्राइप्लानर PBR + लीनियर ब्लेंडिंग + पहले से बेक किए गए स्प्लैट मैप्स1-1.5ms
6. वनस्पतिComputeInstanceCulling + IndirectBatchedMesh, हेक्स-टाइल्ड ग्राउंड कवरCPU फ़्रस्टम कल + InstancedMesh1-1.5ms
7. पानीफ़्लो-अलाइन नदी स्ट्रिप्स, गहराई-आधारित तटीय झागसमान (सरल रिफ़्लेक्शन)0.5ms
8. छायाएँ3-4 कैस्केड CSM + होराइज़न मैप सेल्फ़-शैडो2 कैस्केड CSM0.5-1ms
9. वातावरणHillaire स्काई मॉडल + वॉल्यूमेट्रिक फ़ॉग + मौसम के कणPreetham स्काई + डिस्टेंस फ़ॉग0.5ms
10. डायनेमिक प्रभावपानी के गड्ढों का संचय, पदचिह्न विकृति, बर्फ़/बारिशपानी के गड्ढों का संचय, बारिश के कण0.3ms
कुल टेरेन3.5-6.5ms

60fps (प्रति फ़्रेम 16.6ms) पर टेरेन सिस्टम WebGPU में फ़्रेम बजट का 21% और WebGL 2 में 39% उपयोग करता है। शेष बजट खिलाड़ी अवतार, क्रिएटर ऑब्जेक्ट, UI, नेटवर्किंग और पोस्ट-प्रोसेसिंग के लिए उपलब्ध रहता है।

यह ब्राउज़र में क्यों काम करता है

पूरी पाइपलाइन ब्राउज़र की तीन सीमाओं को ध्यान में रखकर डिज़ाइन की गई है:

मेमोरी (अधिकतम 2-4 GB): 256 MB का टेरेन बजट पर्याप्त है क्योंकि हाइटमैप चंक्स प्रत्येक 2-8 KB (डेल्टा-एन्कोडेड), SDF वॉल्यूम स्पार्स (प्रति वॉल्यूमेट्रिक चंक 100-500 KB), वनस्पति रनटाइम पर 1 KB डेंसिटी मैप्स से जनरेट होती है और टेक्सचर KTX2 कंप्रेशन (प्रति 1024x1024 टेक्सचर 150 KB) का उपयोग करते हैं। किसी भी समय ब्राउज़र में दिखाई देने वाली दुनिया का कुल भार 50-200 MB होता है।

डिस्क एक्सेस नहीं: सब कुछ नेटवर्क पर स्ट्रीम होता है। प्रोग्रेसिव लोडिंग का अर्थ है कि खिलाड़ी को टेरेन <100ms में (कम-रिज़ॉल्यूशन हाइटमैप), टेक्सचर वाला टेरेन <300ms में और पूर्ण विवरण <3s में दिखाई देता है। वेग के आधार पर प्री-फ़ेचिंग सामान्य अन्वेषण के दौरान लोडिंग समय को छिपा देती है।

GPU में भारी विविधता: WebGPU पाथ उच्च-स्तरीय डेस्कटॉप संभालता है। WebGL 2 फ़ॉलबैक मोबाइल सहित अन्य सभी डिवाइस संभालता है। समान चंक डेटा दोनों पाथ को चलाता है। अंतर रेंडरिंग तकनीक में है, डेटा फ़ॉर्मैट में नहीं। WebGL 2 चलाने वाला Chromebook वही दुनिया देखता है जो WebGPU चलाने वाला RTX 4090 दिखाता है, बस कम विवरण और छोटी दृश्य दूरी के साथ।

शोध-पत्र

टेरेन रिप्रेज़ेंटेशन और मेश जनरेशन

"Marching Cubes: एक उच्च-रिज़ॉल्यूशन 3D सतह निर्माण एल्गोरिदम" -- Lorensen और Cline (SIGGRAPH 1987)। DOI। वॉल्यूमेट्रिक डेटा से त्रिभुज मेश निकालने का मूलभूत एल्गोरिदम। 38 वर्ष बाद भी यह सबसे व्यापक रूप से इस्तेमाल की जाने वाली आइसोसर्फ़ेस एक्सट्रैक्शन विधि है। GPU-पैरेलल इम्प्लीमेंटेशन WebGPU कंप्यूट शेडर्स में रियल टाइम पर चलते हैं। "हर्माइट डेटा का ड्यूल कंटूरिंग" -- Ju, Losasso, Schaefer, Warren (SIGGRAPH 2002)। DOI। ऐसे मेश बनाता है जो तीखे फ़ीचर्स (चट्टान के किनारे, शिलाओं के कोने) सुरक्षित रखते हैं, जिन्हें मार्चिंग क्यूब्स गोल कर देता है। दूरी मानों के अतिरिक्त सतह नॉर्मल्स की आवश्यकता होती है।

"न्यूरल ड्यूल कंटूरिंग" -- Chen et al. (2022)। arXiv:2202.01999। ड्यूल कंटूरिंग में लीस्ट-स्क्वेयर वर्टेक्स प्लेसमेंट को एक प्रशिक्षित प्रेडिक्टर से बदलता है। जटिल प्राकृतिक फ़ीचर्स के लिए बेहतर सतह गुणवत्ता देता है।

"ट्रांसवॉक्सेल एल्गोरिदम" -- Lengyel (2009, अद्यतन 2024)। transvoxel.org। वॉक्सेल भूभाग के लिए निर्बाध LOD ट्रांज़िशन। 73 ट्रांज़िशन सेल प्रकारों का उपयोग करके रिज़ॉल्यूशन सीमाओं पर दरारें समाप्त करता है। पेटेंट-मुक्त और रियल-टाइम अनुप्रयोगों के लिए डिज़ाइन किया गया।

भूभाग LOD और रेंडरिंग

"ज्योमेट्री क्लिपमैप्स: नेस्टेड रेगुलर ग्रिड्स का उपयोग करके भूभाग रेंडरिंग" -- Losasso और Hoppe (SIGGRAPH 2004)। पेपर। संकेंद्रित LOD रिंग्स के साथ स्थिर-लागत भूभाग रेंडरिंग। इंटरैक्टिव गति पर 40 GB के भूभाग संभालता है। अधिकांश ब्राउज़र भूभाग रेंडरर्स की आधारशिला।

"CDLOD: भूभाग रेंडरिंग के लिए हाइब्रिड LOD" -- Strugar (2014)। पेपर। ज्योमेट्री क्लिपमैप्स में क्वाडट्री-अडैप्टिव सुधार। केवल दूरी के बजाय भूभाग की जटिलता के आधार पर रिज़ॉल्यूशन आवंटित करता है।

"GPU-संचालित रेंडरिंग पाइपलाइन्स" -- Ubisoft (SIGGRAPH 2015), Wihlidal और Hoppe। उस GPU-संचालित दृष्टिकोण को औपचारिक रूप दिया जिसमें कंप्यूट शेडर्स कलिंग, LOD चयन और ड्रॉ कॉल जनरेशन संभालते हैं। हमारी WebGPU भूभाग पाइपलाइन का आर्किटेक्चरल पैटर्न।

भौतिक भूभाग जनरेशन

"तेज़ भूभाग जनरेशन के लिए भौतिकी-आधारित विश्लेषणात्मक अपरदन" -- Cordonnier et al. (2024)। HAL। विश्लेषणात्मक स्ट्रीम पावर लॉ अपरदन, जो पुनरावृत्तिमूलक सिमुलेशन से बचता है। मिलीसेकंड में भौतिक रूप से विश्वसनीय भूभाग जनरेट करता है।

"GPU पर तेज़ हाइड्रोलिक अपरदन सिमुलेशन और विज़ुअलाइज़ेशन" -- Mei, Decaudin, Hu (2007)। HAL। उथले-पानी के सिमुलेशन का उपयोग करने वाला GPU-समानांतर हाइड्रोलिक अपरदन। अधिकांश गेम इंजन अपरदन इम्प्लीमेंटेशन्स का आधार।

"एरेनाइट: एक भौतिकी-आधारित बलुआ पत्थर सिम्युलेटर" -- SIGGRAPH 2025। प्रोजेक्ट। तनाव और अपरदन सिमुलेशन से मेहराब, हूडू और शैल-कोटर जनरेट करने वाला मल्टी-फिज़िक्स अपरदन। डेस्कटॉप GPUs पर 5 मिनट से कम समय में चलता है।

"खड़ी भूभाग ढलानों के अपरदन के लिए कुशल मलबा-प्रवाह सिमुलेशन" -- Purdue CGVLAB (2024)। पेपर। GPU-त्वरित मलबा प्रवाह और खड़ी ढलान का अपरदन, जो यथार्थवादी पर्वतीय भूभाग फ़ीचर्स बनाता है।

"लचीला भूभाग अपरदन" -- IRIT-STORM (2024)। Springer। एकीकृत इंटरफ़ेस के साथ हाइटफ़ील्ड्स, वॉक्सेल ग्रिड्स, इम्प्लिसिट सतहों और परतदार सामग्रियों पर काम करने वाला पार्टिकल-आधारित अपरदन। हाइब्रिड भूभाग निरूपणों के लिए एक ही अपरदन सिस्टम का उपयोग संभव बनाता है।

भूभाग विवरण और टेक्सचरिंग

"GPU-अनुकूल लैप्लेशियन टेक्सचर ब्लेंडिंग" -- Wronski (NVIDIA, 2025)। JCGT। बिना पूर्व-गणना के भूभाग सामग्रियों के लिए रियल-टाइम लैप्लेशियन पिरामिड ब्लेंडिंग। सीम के आर्टिफ़ैक्ट्स हटाते हुए तीखे फ़ीचर्स सुरक्षित रखता है। प्रत्येक फ़्रैगमेंट के लिए केवल कुछ अतिरिक्त टेक्सचर टैप्स।

"नियंत्रित प्रोसीजरल पैटर्न्स के साथ रियल-टाइम भूभाग संवर्धन" -- Grenier et al. (2024)। CGF। हाइटमैप रिज़ॉल्यूशन से 32 गुना तक अधिक रिज़ॉल्यूशन पर फेज़र नॉइज़-आधारित सूक्ष्म-अपरदन विवरण। ढलान के अनुरूप पैटर्न पूरी तरह फ़्रैगमेंट शेडर में चलते हैं।

अडैप्टिव टेसेलेशन

"बड़े पैमाने के गेम कॉम्पोनेंट्स के लिए समवर्ती बाइनरी ट्रीज़" -- Benyoub और Dupuy (Intel, HPG 2024)। पेपर। अडैप्टिव भूभाग टेसेलेशन के लिए GPU-अनुकूल बाइनरी ट्री डेटा संरचना। 0.2ms से कम समय में ग्रह-स्तरीय ज्यामिति रेंडर करती है। वर्गाकार डोमेन्स से आगे बढ़ाकर मनमाने पॉलीगॉन मेश तक विस्तारित।

गुफ़ा और भूमिगत जनरेशन

"PLUME: प्रोसीजरल लेयर अंडरग्राउंड मॉडलिंग इंजन" -- 2024। arXiv:2508.20926। परतदार प्रोसीजरल नियमों का उपयोग करके यथार्थवादी गुफ़ा और लावा ट्यूब परिवेश जनरेट करने के लिए ओपन-सोर्स फ़्रेमवर्क। मूल रूप से अंतरिक्ष अन्वेषण रोबोटिक्स के लिए बनाया गया।

न्यूरल भूभाग संश्लेषण

"InfiniteDiffusion: ओपन-वर्ल्ड भूभाग जनरेशन के लिए प्रशिक्षित गुणवत्ता और प्रोसीजरल उपयोगिता को जोड़ना" -- Goslin (2025, SIGGRAPH 2026)। arXiv:2512.08309। लैप्लेशियन एन्कोडिंग वाले पदानुक्रमित डिफ़्यूज़न मॉडल्स का उपयोग करके अनंत, सीड-सुसंगत भूभाग जनरेशन। उपभोक्ता GPUs पर बेसलाइन से 9 गुना तेज़।

"TerraFusion: भूभाग ज्यामिति और टेक्सचर का संयुक्त जनरेशन" -- 2025। arXiv:2505.04050। स्केच कंडीशनिंग के साथ हाइटमैप और टेक्सचर के एक साथ संश्लेषण हेतु लैटेंट डिफ़्यूज़न।

"MESA: टेक्स्ट-संचालित भूभाग जनरेशन" -- CVPR 2025 Workshop। arXiv:2504.07210। Copernicus रिमोट सेंसिंग प्रशिक्षण डेटा का उपयोग करके टेक्स्ट-से-भूभाग जनरेशन।

"Geodiffussr: ऊँचाई-सटीकता के साथ जनरेटिव भूभाग टेक्सचरिंग" -- 2025। arXiv:2511.23029। फ़्लो-मैचिंग का उपयोग करके ऊँचाई डेटा का सम्मान करने वाला टेक्स्ट-निर्देशित भूभाग टेक्सचर जनरेशन।

"Sketch2Terrain: AI-संचालित रियल-टाइम भूभाग स्केच मैपिंग" -- 2025। प्रोजेक्ट। ऑगमेंटेड रियलिटी में स्केच-से-भूभाग रूपांतरण। मैन्युअल मैपिंग की तुलना में दक्षता में 38% सुधार।

वनस्पति और पारिस्थितिकी तंत्र सिमुलेशन

"बड़े पैमाने के वर्चुअल भूभागों पर वनस्पति का GPU-आधारित रियल-टाइम प्रोसीजरल वितरण" -- SBGames 2018। पेपर। GPU पर जैविक/अजैविक कारकों का उपयोग करने वाला क्वाडट्री-आधारित वनस्पति स्कैटरिंग।

"वनों का प्रोसीजरल जनरेशन और रेंडरिंग" -- 2022। पेपर। यथार्थवादी वन वितरण के लिए पारिस्थितिकी तंत्र प्रतिस्पर्धा सिमुलेशन के साथ संयुक्त L-सिस्टम वृक्ष जनरेशन।

"GPU वर्क ग्राफ़्स के साथ रियल-टाइम प्रोसीजरल जनरेशन" -- AMD GPUOpen 2024। पेपर। GPU वर्क ग्राफ़्स 4ms से कम समय में 79K+ वनस्पति इंस्टेंसेज़ जनरेट करते हैं।

ब्राउज़र GPU तकनीक

"GSWT रेंडरर" -- SIGGRAPH Asia 2025। GitHub। डायनेमिक LOD और स्ट्रीमिंग के साथ अनंत 3D भूभाग के लिए Gaussian Splatting Wang Tiles का उपयोग करने वाला WebGPU + Rust/Wasm रेंडरर।

"नेटिव गति से ब्राउज़र में GPU कंप्यूट: WebGPU मार्चिंग क्यूब्स" -- Usher (2024)। ब्लॉग। दर्शाता है कि समानांतर मेश जनरेशन एल्गोरिदम्स के लिए WebGPU कंप्यूट नेटिव-गति का प्रदर्शन प्राप्त करता है।

वॉक्सेल रेंडरिंग और बड़े पैमाने के दृश्य

"Aokana: ओपन-वर्ल्ड गेम्स के लिए GPU-संचालित वॉक्सेल रेंडरिंग फ़्रेमवर्क" -- 2025। arXiv:2505.02017। दसियों अरब वॉक्सेल वाले दृश्यों के लिए LOD और स्ट्रीमिंग सहित स्पार्स वॉक्सेल DAG। पिछली सर्वोत्तम तकनीक की तुलना में मेमोरी उपयोग 9 गुना कम और रेंडरिंग 4.8 गुना तेज़। गेम इंजनों के साथ एकीकरण के लिए डिज़ाइन किया गया।

प्रोसीजरल ज्यामिति और रीसरफेसिंग

"GPU मेश शेडर्स का उपयोग करके रियल-टाइम प्रोसीजरल रीसरफेसिंग" -- Raad et al. (Eurographics 2025)। पेपर। मेश शेडर्स का उपयोग करके रेंडर समय पर मोटे कंट्रोल मेश से विस्तृत ज्यामितीय सतहें जनरेट करता है। मेमोरी में उच्च-रिज़ॉल्यूशन ज्यामिति संग्रहीत किए बिना डायनेमिक LOD संभव बनाता है।

भूभाग छायाएँ

"भूभाग छायाओं का अनुकूलन" -- AMD GPUOpen। ब्लॉग। बड़े पैमाने के भूभाग के लिए व्यावहारिक CSM अनुकूलन। कैस्केड विभाजन, GPU-कुशल शैडो मैप रेंडरिंग और भूभाग-विशिष्ट अनुकूलनों को शामिल करता है।

वर्चुअल ज्यामिति और मेश अनुकूलन

"Nanite WebGPU" -- Scthe (2024)। GitHub, डेमो। UE5 Nanite आर्किटेक्चर का संपूर्ण ब्राउज़र इम्प्लीमेंटेशन: मेशलेट LOD पदानुक्रम, WGSL में सॉफ़्टवेयर रास्टराइज़र, प्रति-मेशलेट कलिंग और बिलबोर्ड इम्पोस्टर्स।

"मिनटों में अरबों त्रिभुज" -- Kapoulkine (2025)। ब्लॉग। पदानुक्रमित क्लस्टर्ड LOD जनरेशन के लिए Meshoptimizer v1.0। विशाल मेश को कुशलता से Nanite-शैली के क्लस्टर DAGs में प्रोसेस करता है।

"बिलबोर्ड स्प्लैटिंग (BBSplat)" -- 2024। arXiv:2411.08508। नए व्यू संश्लेषण के लिए प्रशिक्षित किए जा सकने वाले टेक्सचर्ड प्लेनर प्रिमिटिव्स, जो 3D Gaussian Splatting की तुलना में 17 गुना कम्प्रेशन प्राप्त करते हैं।

भूभाग प्रकाश और ग्लोबल इल्यूमिनेशन

"Once Human में ग्लोबल इल्यूमिनेशन" -- GDC 2025। सत्र। 16km के ओपन वर्ल्ड के लिए हाइब्रिड GI: न्यूरल नेटवर्क से कम्प्रेस किए गए प्रोब्स (69:1 अनुपात), ML-आधारित इनडोर/आउटडोर लीक समाधान और डायनेमिक प्रोब प्रतिक्रियाएँ।

"AMD FidelityFX Brixelizer के साथ GI" -- GDC 2024। पेपर। स्क्रीन-स्पेस प्रोब्स के साथ कंप्यूट-आधारित स्पार्स डिस्टेंस फ़ील्ड कैस्केड्स। हार्डवेयर रे-ट्रेसिंग की आवश्यकता नहीं।

"रेडिएंस कैस्केड्स" -- 2024। ब्लॉग। टेम्पोरल एक्यूम्यूलेशन के बिना कैस्केडेड रेडिएंस संरचनाओं का उपयोग करने वाला नॉइज़-रहित रियल-टाइम ग्लोबल इल्यूमिनेशन।

लेवल डिज़ाइन और अन्वेषण

"PlotMap: गेम वर्ल्ड बनाने के लिए स्वचालित लेआउट डिज़ाइन" -- 2023। arXiv:2309.15242। भूभाग पर कथानक-संबंधी स्थानिक प्रतिबंधों को पूरा करने वाला AI-सहायित POI प्लेसमेंट।

"स्थानिक अन्वेषण ट्रिगर्स" -- Purdue University (FDG 2022)। पेपर। खिलाड़ी को अन्वेषण के लिए प्रेरित करने वाले चार डिज़ाइन पैटर्न: चरम बिंदु, दृश्य अवरोध, असंगत वस्तुएँ और स्थानिक कनेक्शन।

डेटा कम्प्रेशन और स्ट्रीमिंग

"3D पॉइंट क्लाउड्स का एंट्रॉपी-संचालित प्रोग्रेसिव कम्प्रेशन" -- SGP 2024। पेपर। अडैप्टिव क्वांटाइज़ेशन के साथ पुनरावर्ती स्पेस पार्टिशनिंग का उपयोग करने वाला रेट-डिस्टॉर्शन अनुकूलित प्रोग्रेसिव कम्प्रेशन। परिवर्तनीय-बैंडविड्थ नेटवर्क स्ट्रीमिंग के अनुकूल रिफ़ाइनमेंट स्ट्रीम्स बनाता है।

इंटरैक्टिव संपादन

"WebGPU SDF एडिटर" -- Nijhoff (2026)। प्रोजेक्ट। रियल-टाइम मार्चिंग क्यूब्स, बूलियन ऑपरेशन्स, स्मूथ ब्लेंडिंग और ऑक्ट्री स्पेस पार्टिशनिंग के साथ ब्राउज़र में पूर्ण-विशेषताओं वाला SDF मॉडलिंग। प्रति प्रिमिटिव 112 बाइट्स।

नदी और तटीय जनरेशन

"प्रोसीजरल नदी अपवाह बेसिन" -- Patel (Red Blob Games)। प्रोजेक्ट। Voronoi/त्रिभुज मेश किनारा वर्गीकरण का उपयोग करने वाला जल-निकासी-प्रथम नदी जनरेशन। भूभाग की ऊँचाई निर्धारित करने से पहले नदी पदानुक्रम बनाता है।

"NEWTS1.0: लहरों और आगे बढ़ती खड़ी ढलानों द्वारा तटीय अपरदन का संख्यात्मक मॉडल" -- MIT (2024)। पेपर। एकसमान पीछे हटने और लहर-संचालित अपरदन का उपयोग करने वाला सरलीकृत तटीय अपरदन मॉडल। वास्तविक भू-आकृति विज्ञान से मेल खाते अंतरीप, खाड़ियाँ, समुद्री स्तंभ और मेहराब जनरेट करता है।

आगे पढ़ें

अभी आज़माएँजनरेट किए गए भू-दृश्य को गेम में शामिल करें

भूभाग तब बेहतर होता है जब आप उस पर चल सकते हैं।

मुफ़्त में बनाएँ →मुफ़्त है, ब्राउज़र में चलता है, कुछ इंस्टॉल नहीं करना।