बहु-पास प्रभाव का अच्छा उदाहरण?


9

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

हालांकि मैं इस बारे में उत्सुक हूं कि आपको कई पास के लिए क्या चाहिए? मैं समझता हूं कि 3 डी के शुरुआती दिनों में आपके पास केवल एक बनावट इकाई थी और तब आपके पास 2 थे और अक्सर यह पर्याप्त नहीं था यदि आप पर्यावरण मानचित्रण भी करना चाहते थे। लेकिन आधुनिक उपकरणों पर, यहां तक ​​कि मोबाइल वर्ग में, आप 8 या अधिक बनावट का नमूना ले सकते हैं और एक ही शेडर में जितनी चाहें उतनी प्रकाश गणना कर सकते हैं।

क्या अधिक अनुभवी यहां व्यावहारिक उदाहरण प्रस्तुत कर सकते हैं जहां अभी भी बहु-पास प्रतिपादन की आवश्यकता है, या क्या यह केवल XNA / Direct3d की ओर से ओवर-इंजीनियरिंग है?

जवाबों:


5

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

जैसे कि रानीरानी ने एक्सएनएसीसी उदाहरण के बारे में उल्लेख किया है, वे बड़ी संख्या में रोशनी प्रदान करने के लिए कई पास का उपयोग कर रहे हैं। हालांकि उस उदाहरण में, वे एक ही पास को निष्पादित कर रहे हैं, बस एक बार प्रत्येक प्रकाश के लिए।

ध्यान रखें कि Shader Model 2 और इससे पहले कि कहीं भी Shader Model 3 या 4 प्रत्येक Shader में दिए गए निर्देशों के पास कहीं भी संभाल नहीं सकता है, फिर भी एक और कारण कई पासों में प्रभाव को विभाजित करता है - पुराने हार्डवेयर का समर्थन करने के लिए।


क्या आप एक उदाहरण दे सकते हैं जहाँ एक XNA इफ़ेक्ट ऑब्जेक्ट जहाँ आप इफ़ेक्टपास के माध्यम से लूप करते हैं, अलग-अलग इफ़ेक्ट का उपयोग करने के विरोध में एक से अधिक पास हैं और क्यों?
जेसन गोएमाट

4

जैसा कि अन्य उत्तरों में बताया गया है, बहु-पास रेंडरिंग (एक ही जाली को कई बार अलग-अलग शेड्स / मापदंडों के साथ खींचना), जैसा कि अन्य उत्तरों में सुझाया गया है, निश्चित रूप से अभी भी उपयोग किया जाता है, मुख्य रूप से प्रकाश और विशेष प्रभावों के लिए।

इस तरह की चीज के लिए डी 3 डीएक्स इफेक्ट पास का इस्तेमाल किया जा सकता है। लेकिन इसे एक से अधिक शेडर / प्रभाव के साथ भी लागू किया जा सकता है।

पास का मूल उद्देश्य निचले-छोर (पूर्व-शेडर-2.0) हार्डवेयर पर जटिल शेड्स को लागू करने में मदद करना था, जहां बनावट चरणों की संख्या और प्रति पास shader निर्देश पर प्रतिबंध काफी सीमित थे।

बहु-पास प्रकाश व्यवस्था के उदाहरण में, स्विचिंग प्रभाव के बजाय पास का उपयोग करके क्या कोई महत्वपूर्ण प्रदर्शन लाभ होना चाहिए?


3

सभी ने उल्लेख किया है कि प्रकाश बात के अलावा, इस का एक और प्रमुख उपयोग धुंधला है । क्षैतिज और ऊर्ध्वाधर अलग-अलग पास में किए जाते हैं (इसलिए 9x9 ब्लर प्राप्त करने के लिए, 81 के बजाय प्रत्येक आउटपुट पिक्सेल के लिए केवल 18 पिक्सेल की आवश्यकता होती है)। इसका उपयोग ब्लूम / एचडीआर, क्षेत्र की गहराई, चमक, आदि के लिए किया जाता है


संभवतः, लेकिन मुझे लगता है कि धब्बा कार्यान्वयन क्षैतिज और ऊर्ध्वाधर पास के लिए एक ही शेडर का उपयोग करेगा - और नमूना नमूने में (पास shader स्थिरांक या प्रति-शीर्ष डेटा के रूप में) पास?
ब्लूज़क्रान

1
@bluescrn - ब्लूम को आमतौर पर 4-पास प्रभाव के रूप में माना जाता है: एक उज्ज्वल क्षेत्रों और डाउनस्केल को निकालने के लिए, एक को क्षैतिज रूप से धुंधला करने के लिए, एक को ऊर्ध्वाधर रूप से धुंधला करने के लिए, एक को मूल के साथ धुंधली छवि को संयोजित / अपस्केल करने के लिए। जबकि इनको नियंत्रित करने के लिए shader पैरामीटर्स का उपयोग किया जा सकता है, ब्रांचिंग को सभी को अलग करने की आवश्यकता होगी, लेकिन दो ब्लर पास
Robert Fraser


1

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

इसके अलावा, मेरा मानना ​​है कि अधिकांश फर shaders कई पास का उपयोग करते हैं।


0

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

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