आस्थगित प्रतिपादन में छाया


12

मैंने आस्थगित प्रतिपादन के बारे में कुछ सामग्री पढ़ी है, और मुझे लगता है कि मुझे इसके बारे में जानकारी है। लेकिन मुझे समझ में नहीं आता है कि यह छाया को कैसे पूरा करता है। जी-बफर, जहां तक ​​मैं जानता हूं, इसमें प्रत्येक प्रकाश के लिए एक छायाचित्र बनाना शामिल नहीं है, इसलिए मैं उलझन में हूं कि प्रकाश पास कैसे पता चलता है कि प्रत्येक पिक्सेल को ढंका हुआ है या नहीं। आखिरकार, एक दिया गया पिक्सेल जो कैमरे के दृष्टिकोण से दिखाई देता है, वास्तव में किसी भी दिए गए प्रकाश के परिप्रेक्ष्य से दिखाई नहीं दे सकता है- और यह कि ज्यामिति को कैमरे के परिप्रेक्ष्य से दिखाई नहीं दे सकता है और इसलिए इसके बारे में G- बफर में कुछ भी नहीं लिखा है ।

यदि आप शैडमैप्स को रेंडर करना शुरू करते हैं, तो यह फारवर्ड रेंडरिंग के समान ही प्रतीत होता है- आप छायाप्रति प्रदान करने के लिए हर प्रकाश के लिए दृश्य में सभी ज्यामिति को प्रस्तुत करते हैं।

तो कैसे स्थगित किया गया रेंडर छायांकन आगे रेंडरिंग के बराबर है?

जवाबों:


14

आस्थगित छायांकन छाया के लिए कुछ विशेष नहीं करता है। आपको अभी भी छाया मानचित्रों को सामान्य रूप से प्रस्तुत करने की आवश्यकता है और फिर प्रत्येक प्रकाश को बनावट के रूप में बाध्य उचित छाया मानचित्र के साथ प्रस्तुत करना होगा।

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

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


1
यदि आप बहुत चालाक हैं तो आप छाया मानचित्र (जैसे घन मानचित्र DX10 नमूना करता है) के निर्माण के लिए GBuffer के निर्माण के दौरान ज्यामिति shader का उपयोग करने की कोशिश कर सकते हैं। मुझे यकीन नहीं है कि अगर यह किया गया है, अगर यह संभव है या यदि यह अंत में धीमा होगा - लेकिन यह छाया मानचित्रों के निर्माण को स्थगित छायांकन के करीब लाएगा , या आपके धर्म के आधार पर परिभाषा में।
जोनाथन डिकिंसन

6

खैर, एक छाया नक्शा क्या है? एक छाया मानचित्र एक बनावट है जो टेक्सल्स एक सरल प्रश्न का उत्तर देता है: टेक्सल द्वारा दर्शाए गए दिशा के साथ प्रकाश से कितनी दूरी पर है, क्या प्रकाश रोड़ा है? बनावट निर्देशांक विभिन्न छायांकन मानचित्रण एल्गोरिथ्म के आधार पर, विभिन्न प्रोजेक्टिव टेक्सचरिंग साधनों का उपयोग करके उत्पन्न किया जाता है।

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

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

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

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

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

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

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

किसी भी तरह से, आपके पास कैमरा-स्पेस पोजीशन है। और, जैसा कि ऊपर कहा गया है, हम उन्हें कैमरा-स्पेस से छाया प्रोजेक्टिव टेक्सचर स्पेस में बदलने के लिए एक मैट्रिक्स लगा सकते हैं। तो ... ऐसा करो। फिर अपने छाया मानचित्र पर पहुँचें।

समस्या सुलझ गयी।


क्या आस्थगित प्रतिपादन (अनुकूलन के लिए) में प्रकाश प्रति ज्यामिति को बाहर करना संभव है?
सांवरसा

@ समसौरा: "प्रति प्रकाश को छोड़कर ज्यामिति" क्या है? छाया के नक्शे में जाने से? जलाई जा रही से?
निकोल बोलस

मैं देख रहा हूं कि आपने इसके संबंध में प्रश्न का उत्तर दिया, धन्यवाद। दूसरों के लिए, यदि वे प्रश्न / उत्तर का पालन करना चाहते हैं: gamedev.stackexchange.com/q/178755/2287
समरसा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.