आधुनिक खेल दर्पण के लिए एक रेंडर-टू-टेक्सचर दृष्टिकोण का उपयोग क्यों करते हैं?


40

जब मारियो 64 या ड्यूकनेकम 3 डी जैसे पुराने गेम को देखते हैं, तो गेम के सभी दर्पण अनिवार्य रूप से दीवार में छेद करते हैं, जिनके पीछे दर्पण के सामने ज्यामिति की एक प्रतिबिंबित प्रतिलिपि होती है। DukeNukem3D के मामले में कोई भी बिना क्लिप को सक्रिय किए और उस दर्पण वाले कमरे में चल सकता है।

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

हार्डवेयर में परिवर्तन या इंजनों ने दूसरे दृष्टिकोण को इन दिनों इतना प्रभावी बना दिया है और इसके क्या लाभ हैं? शुद्ध दृश्यों के संदर्भ में पहला दृष्टिकोण बेहतर लगता है, क्योंकि यह पिक्सेलेशन मुद्दों से ग्रस्त नहीं है।


14
यदि आप दो कमरों के बीच एक दरवाजे पर दर्पण चाहते हैं तो क्या होगा?
सुपर जूल

जवाबों:


37
  1. आरटीटी (रेंडर-टू-टेक्सचर) के उपयोग से एडजस्टेबल परफॉर्मेंस के लिए आसानी से रेंडरिंग क्वालिटी (रिजॉल्यूशन, एलओडी, लाइटिंग कॉम्पलेक्सिटी) को स्केल किया जा सकता है। RTT भी एक निश्चित दूरी पर एक क्यूबैप के साथ सतह को बदलना आसान बनाता है, जहां प्रतिबिंब को वास्तव में देखना मुश्किल है।
  2. चूंकि आउटपुट एक बनावट है, इस बारे में अधिक विकल्प हैं कि इसके साथ क्या किया जा सकता है (प्रकाश, छायांकन, सम्मिश्रण, विरूपण)।
  3. यदि ज्यामिति का एक प्रतिबिंबित संस्करण दृश्य में रखा गया है, तो वास्तविक ज्यामिति के साथ अंतर करने पर इसे और अधिक जटिल पुलिंग की आवश्यकता होगी और इसे कोने के पीछे देखा जा सकता है। पुराने खेलों में, इससे बचने के लिए स्तर तैयार किए गए थे। यह उल्लेख करने के लिए नहीं कि किसी को वास्तविक मिररिंग करना है।
  4. अगर ज्योमेट्री को मैन्युअल रूप से मिरर नहीं किया जाता है, तो रेंडरिंग को म्यूट मैट्रिक्स और कलिंग मोड को बदलकर (मैट्रिक्स में स्पेस उलटा के लिए क्षतिपूर्ति करने के लिए) किया जाना चाहिए, और मिरर को काटने के लिए स्टैंसिल बफर का उपयोग करना चाहिए। आधुनिक इंजन पहले से सभी रेंडर स्टेट्स बनाना पसंद करते हैं, इसलिए मिरर रेंडरिंग के लिए आवश्यक बदलावों के साथ हर सीन रेंडर स्टेट की प्रतियां बनाने के साथ एक मामूली समस्या होगी।

इसलिए मूल रूप से RTT का उपयोग करने से सभी को अधिक स्वतंत्रता मिलती है।


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

@ ड्रोनस क्या? पहले स्थान पर "दर्पण" बनाने से परेशान क्यों? बस दीवार में एक छेद खोलें।
एस। तारिक 28etin

क्योंकि वास्तविक ज्यामिति दर्पण की दीवार के पीछे जगह नहीं छोड़ सकती है, जैसे कि असली दर्पण को काम करने के लिए पीछे कमरे की आवश्यकता नहीं होती है।
22

29

नहीं, आप गलत हैं - ऐसा नहीं है कि ड्यूक नुकेम 3 डी के दर्पण ने कैसे काम किया।

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

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

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

सबसे महत्वपूर्ण बात यह है कि दर्पण अधिक जटिल हो गए। उनके पास जटिल आकार, बनावट हो सकते हैं, वे जमीन पर हो सकते हैं ("पानी" के रूप में भी जाना जाता है) आदि। जबकि उन सभी समस्याओं को एक पोर्टल इंजन में हल किया जा सकता है, आरटीटी कुछ बिंदु पर सबसे सरल विकल्प बन जाता है, और जीपीयू काफी तेज होते हैं इसे संभालने के लिए।

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


स्पष्ट रूप से आम धारणा का कारण है कि ड्यूक नुकेम 3 डी ने इस तरह से काम किया है कि वास्तविक स्तर के डिजाइनों में, दर्पण के पीछे का स्थान उतना ही बड़ा है जितना कि यह कमरा प्रतिबिंबित करता है, भले ही रेंडरिंग इंजन को वास्तव में इसकी आवश्यकता न हो।
रैंडम 832

इसके अलावा, नॉन-मिरर पोर्टल्स, अच्छी तरह से, मिरर चीजें नहीं हैं, इसलिए मुझे नहीं पता कि "कोई कोड हैंडलिंग मिरर" कैसे संभव है।
रैंडम 832

5
@ Random832 यह आवश्यक था - कुछ दृश्य कलाकृतियाँ थीं यदि कुछ क्षेत्र उस स्थान पर दिखाई देते हैं जहाँ दर्पण वाला कमरा होना चाहिए था। यह उन हिस्सों में से एक है जहां प्रदर्शन के लिए ज्यादातर हानिरहित धारणाएं बहुत मायने रखती हैं। यदि आप कभी बिल्ड के साथ घूमते हैं, तो आपने देखा होगा कि जब दो सेक्टर समान ऊंचाई पर होते हैं, तो वे अच्छी तरह से प्रस्तुत नहीं करेंगे। मिररिंग के लिए, यह उसी तरह से काम करता है जैसे वास्तविक जीवन में दर्पण काम करता है। क्या आपने कभी सोचा कि y- अक्ष पर केवल "फ्लिप" दर्पण क्यों? यही कारण है कि आपको एक पोर्टल को फ्लिप करने की आवश्यकता नहीं है जो आपको उसी कमरे में वापस जोड़ता है।
लुअन

बिंदु एक, है सामान्य पोर्टल है कि विपरीत दिशा में चेहरे कि एक कमरे में सुराग हैं उन्हें दर्शाती 180 डिग्री से नहीं बल्कि घुमाने बातें करने के लिए है। इसलिए दर्पणों के लिए विशेष हैंडलिंग के रूप में ऐसा नहीं करने की क्षमता है। (ऐसा करने की क्षमता नहीं होने का मतलब यह होगा कि पोर्टल पोर्टल्स के रूप में काम नहीं करते हैं और केवल दर्पण के लिए उपयुक्त हैं, इस मामले में पूरी प्रणाली दर्पण के लिए विशेष हैंडलिंग है। और, हां, मुझे पता है कि दर्पण "y- अक्ष पर" केवल "फ्लिप" क्यों करते हैं। वास्तव में, वे z- अक्ष पर फ्लिप करते हैं। लेकिन तथ्य यह है कि वे विषम संख्या में अक्षों को फ्लिप करते हैं, जिससे वे पोर्टल्स से अलग हो जाते हैं।
रैंडम 832

@ Random832 इस बात पर निर्भर करता है कि आप y- अक्ष को क्या कहते हैं, :) और हाँ, आप सही हैं, विशेष हैंडलिंग है। लेकिन यह बहुत दिलचस्प है - यह प्रस्तुत किए गए डेटा को फ़्लिप करता है, न कि ज्यामिति (और स्प्राइट और सब कुछ ... वास्तव में बहुत काम, वास्तव में)। पोर्टल फ़्रेम को फ़्लिप किया जाता है, पोर्टल को हमेशा की तरह रेंडर किया जाता है, और फिर पूरी चीज़ को पीछे की ओर, लाइन द्वारा लाइन किया जाता है।
लुआअन

3

यदि यह संभव होता तो RTT का उपयोग किया गया होता लेकिन हार्डवेयर रेंडरिंग पाइपलाइन एक तरीका था।

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

आप पाएंगे कि हार्डवेयर रेंडरिंग पाइपलाइनों के लिए मानक RTT का उपयोग किया गया था क्योंकि यह रेंडरिंग लोड को कम करने का एक तरीका प्रदान करता था। 3 डी को छद्म 3 डी सामग्री प्रदान करने के लिए स्प्राइट प्रदान किया गया। टेक्सचर रेंडरिंग का तरीका बहुत महंगा था (सीपीयू) फिर से इस्तेमाल किया जा सकता था, विशेष मशीनों के अलावा जो सामान्य उपभोक्ता बाजार के बाहर थे।


1

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

चूंकि थ्रेस 'एक ऐसा क्षेत्र है, जिसमें आप गलती से कोई ज्यामिति नहीं डालेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.