प्रतिपादन से पहले वस्तुओं को छाँटना


10

मैं एक दृश्य ग्राफ को लागू करने की कोशिश कर रहा हूं और सभी लेखों में मैं वहां आया हूं जो ऑब्जेक्ट सॉर्टिंग के बारे में बात करता है। इसलिए आप उदाहरण के लिए अपनी वस्तुओं को "सामग्री" द्वारा क्रमबद्ध करेंगे। अब जब तक मैं बैठ नहीं गया और इसे लागू करना शुरू कर दिया, मैंने इसे इस तरह से लिया, क्योंकि यह समझ में आया। लेकिन अब मैं सोच रहा हूँ कि वास्तव में छँटाई क्या बदलती है?

मेरे इंजन में, मेरे पास यूबीओ के लिए एक प्रबंधक है, मैं उन डेटा को स्टोर करने के लिए उपयोग करता हूं जो इस समय कार्यक्रमों के बीच साझा किए जाएंगे, जिसमें केवल समय, कैमरा और प्रोजेक्शन मैट्रिसेस और लाइट्स शामिल हैं (मुझे यह चिंता नहीं है कि कौन सी रोशनी प्रभावित करती है कौन सी वस्तु ATM)।

अब प्रत्येक मॉडल के लिए मुझे मॉडल को वर्ल्ड मैट्रिक्स यूनिफॉर्म में बदलना होगा, कोई छँटाई करने वाला नहीं है। तो क्या इस मैट्रिक्स को बदलने से छलांग प्रत्येक वस्तु के लिए एक सामग्री को सेट कर रही है जो खराब है?

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

BTW के बारे में कोई जानकारी है कि क्या एक समान को बदलना और glBufferSubData को कॉल करना अधिक (या कम) महंगा है।


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

@PatrickHughes भयानक, धन्यवाद, मैं निश्चित रूप से उन लोगों की जाँच करूँगा
dreta

जवाबों:


4

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

गहराई से छँटाई में अभी भी मूल्य है, भी। आपको पारदर्शी वस्तुओं (कई उन्नत तकनीकों को अनदेखा करना, जो सीमित परिस्थितियों में आवश्यक हो, को दूर करना) के लिए वापस छाँटना होगा।

आगे से पीछे की ओर अपारदर्शी वस्तुओं को छांटने में भी मूल्य होता है, क्योंकि इससे शुरुआती-जेड आपके दृश्य के टुकड़े के ऊपरी हिस्से को बहुत कम कर देता है।


3
अपारदर्शी / पारदर्शी वस्तुओं का आदेश देना जटिल परिस्थितियों (मनमाने नियमों के बिना असंभव होने की बात) के लिए आसान नहीं है। आप ग्ल कॉल को कम करने के उद्देश्य से बनावट द्वारा समूह भी बना सकते हैं।
डार्कविंग्स

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

opengl.org/wiki/Transparency_Sorting 'मनमाने नियम' से मेरा यही अभिप्राय है। जटिल मामलों के लिए कोई उद्देश्य 'सही' नहीं है। 'सॉर्टिंग' और 'ऑर्डरिंग' के बारे में ओपी ने स्पष्ट रूप से कहा है कि 'सामग्री द्वारा छँटाई' (पारदर्शिता की परवाह किए बिना), और मेरा लक्ष्य प्रदर्शन प्रभाव के बाद से बनावट के लिए समान था।
डार्कविंग्स

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

देखिए, एक टिप्पणी का मतलब यह नहीं है कि मुझे आपके उत्तर में कुछ गलत लगा, और मैंने कभी नहीं कहा कि 'कोई छँटाई नहीं कर सकता'। मैंने कहा है कि ऐसे मामले हैं जहां कोई उद्देश्य सही समाधान मौजूद नहीं है, इसलिए स्पष्ट रूप से मनमाने नियमों का उपयोग करके समाधान ढूंढा जाना चाहिए। वे 2 पूरी तरह से अलग बयान हैं।
डार्कविंग्स

3

विशुद्ध रूप से गहराई से वस्तुओं को क्रमबद्ध करना एक बड़ा मूल्य है, विशेष रूप से बाइनिंग या टाइलिंग प्रतिपादन आर्किटेक्चर पर।

सॉलिड को बैक टू बैक सॉर्ट करें, बैक टू फ्रंट से ट्रांसपेरेंसी।

रेंडर करते समय, कैमरा और सॉलिड के नज़दीक आने वाले सामान को पहले रेंडर किया जाता है, और उसी जगह पर रहने वाली किसी भी चीज़ को शुरुआती z- बफर चेक द्वारा खारिज कर दिया जाएगा।

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

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