Voxel Space
वेब डेमो: Voxel Space इंजन
इतिहास
- 1992 में CPU आज की तुलना में लगभग 1000 गुना धीमा था, और GPU ऐक्सेलरेशन या तो उपलब्ध नहीं था या बहुत महँगा था।
- उस समय 3D गेम केवल CPU पर ही गणना किए जाते थे, और रेंडरिंग इंजन सिर्फ़ सिंगल-कलर पॉलीगॉन को रेंडर करते थे।
- 1991 में MicroProse का गेम Gunship 2000 और 1992 में NovaLogic का गेम Comanche जारी हुआ।
- Comanche ने उस समय के हिसाब से बेहद प्रभावशाली ग्राफिक्स दिया, जिसमें टेक्सचर, शेडिंग और शैडोज़ दिखाए गए थे।
रेंडरिंग एल्गोरिथ्म
- Comanche ने Voxel Space तकनीक का उपयोग किया, जो ray casting जैसी अवधारणा पर आधारित है।
- Voxel Space इंजन एक 2.5D इंजन है, और यह सामान्य 3D इंजन द्वारा दी जाने वाली सभी स्वतंत्रताएँ नहीं देता।
हाइट मैप और कलर मैप
- किसी टेरेन को दिखाने का सबसे आसान तरीका हाइट मैप और कलर मैप का उपयोग करना है।
- Comanche गेम में 1024 * 1024 आकार के 1-बाइट हाइट मैप और कलर मैप का इस्तेमाल किया गया था।
- ऐसे मैप पुनरावर्ती होते हैं, और वे जटिल संरचनाएँ दिखा नहीं पाते, लेकिन कलर मैप में पहले से ही शेडिंग और शैडो शामिल हैं, इसलिए रेंडरिंग के दौरान लाइटिंग कैलकुलेट करने की ज़रूरत नहीं रहती।
बेसिक एल्गोरिथ्म
- 3D इंजन का रेंडरिंग एल्गोरिथ्म बहुत सरल है।
- Voxel Space इंजन हाइट और कलर मैप को रैस्टराइज़ करके लंबवत लाइनें खींचता है।
- स्क्रीन को क्लियर करके बैक-टू-फ्रंट तरीके से रेंडर किया जाता है ताकि ओक्लूजन सुनिश्चित हो।
- ऑब्ज़र्वर से ऑप्टिकल दूरी के हिसाब से मैप लाइनें तय की जाती हैं।
- लाइन को रैस्टराइज़ करके स्क्रीन की कॉलम गिनती के हिसाब से फिट किया जाता है।
- 2D मैप से लाइन के प्रत्येक सेगमेंट के लिए हाइट और कलर निकाले जाते हैं।
- हाइट कोऑर्डिनेट पर perspective projection लागू की जाती है।
- perspective projection से प्राप्त हाइट और उसके रंग से लंबवत लाइनें ड्रॉ की जाती हैं।
रोटेशन जोड़ना
- ऊपर वाले एल्गोरिथ्म से केवल उत्तर दिशा ही देखी जा सकती है।
- किसी अन्य एंगल को देखने के लिए कुछ लाइन कोड से कोऑर्डिनेट्स को rotate करना पड़ता है।
परफॉर्मेंस ऑप्टिमाइज़ेशन
- परफॉर्मेंस बढ़ाने के लिए कई ट्रिक्स मौजूद हैं।
- बैक-टू-फ्रंट की जगह फ्रंट-टू-बैक भी रेंडर किया जा सकता है।
- ओक्लूजन सुनिश्चित करने के लिए अतिरिक्त y-buffer की जरूरत होती है।
- डिटेल लेवल को एडजस्ट करके पास के क्षेत्रों में अधिक और दूर के क्षेत्रों में कम डिटेल रेंडर की जाती है।
लिंक
- वेब प्रोजेक्ट डेमो पेज
- Voxel टेरेन इंजन परिचय
- निजी वेबसाइट
मैप
लाइसेंस
- सॉफ़्टवेयर भाग MIT लाइसेंस के तहत है।
- Voxel Space तकनीक अभी भी कुछ देशों में पेटेंट के अधीन हो सकती है।
- कलर और हाइट मैप गेम Comanche से रिवर्स-इंजीनियर किए गए हैं, इसलिए लाइसेंस में शामिल नहीं हैं।
1 टिप्पणियां
Hacker News टिप्पणी
मुझे उन दिनों की याद आती है जब अनोखे और खूबसूरत एल्गोरिदम सच में जादुई-सा अनुभव देते थे। उस समय हार्डवेयर संसाधन सीमित थे, इसलिए डेवलपर्स नई तकनीकों और क्रिएटिविटी से गेम को आगे बढ़ाते थे।
mars.com नाम के प्रोग्राम से जुड़ा वीडियो काफी इंटरेस्टिंग लगा
यह rendering तरीका दिलचस्प है, लेकिन किसी भी arbitrary volume को render नहीं कर सकता, इसलिए इसे सच में voxel कहना मुश्किल है। यह दरअसल एक साफ़-सुथरा heightmap renderer implementation है
शीर्षक में शायद 2020 या 2017 की चर्चा शामिल हो; 2021 में भी इसी repository पर discussion थी
जब मैंने पहली बार programming शुरू की थी, तब QBasic से terrain heightmap बनाकर isometric style में render करने वाला प्रोग्राम लिखा था। शायद वही वजह थी कि मैं coding में बना रहा
मैंने Adventure Game Studio में इसी तकनीक से एक गेम बनाया था। यह इंजन के पुराने संस्करण के साथ optimized नहीं था, लेकिन शायद कभी उसे अपडेट करूँगा
आजकल ज़्यादातर गेमों में पहाड़ खाली-खोखले लगते हैं, लेकिन इस तरीके से पहाड़ ठोस दिखते हैं
मुझे वो एहसास याद है जब मैंने पहली बार Comanche खेला था—लगता था जैसे कोई चीज़ भविष्य से या किसी फिल्म से आई हो
software renderer वाला प्रोजेक्ट काफी मज़ेदार होता है और weekend प्रोजेक्ट के लिए एकदम परफेक्ट है। पहले मैं इसी तरह के एल्गोरिदम बना चुका हूँ, लेकिन अभी की implementation कहीं ज्यादा performant और आसान है
काश मैं उस alternate timeline में रहता जहाँ GPU voxel-based होते