अगर मैं गहराई परीक्षण का उपयोग नहीं करता, तो क्या मैं पिक्सेल त्यागने के लिए प्रदर्शन खो देता हूं?


22

जब मैंने पहली बार डिसकस इंस्ट्रक्शन की खोज की, तो मैंने पाया कि एक्सपर्ट्स ने कहा कि डिसकवरी करने से रिजल्ट परफॉर्मेंस ड्रेन हो जाएगा। उन्होंने कहा कि पिक्सल को त्यागने से GPU का उपयोग सही ढंग से करने की क्षमता टूट जाएगी क्योंकि GPU को पहले दोनों ऑब्जेक्ट्स के लिए Fragment shader चलाना होगा, ताकि यह जांचा जा सके कि कैमरा के पास निकटता है या नहीं। 2 डी गेम के लिए मैं वर्तमान में काम कर रहा हूं, मैंने गहराई-परीक्षण और गहराई-लेखन दोनों को अक्षम कर दिया है। मैं सभी वस्तुओं को उनकी गहराई से छांट रहा हूं और यह सब है, फैंसी चीजें करने के लिए GPU की कोई आवश्यकता नहीं है। अब मैं सोच रहा हूं कि क्या यह अभी भी खराब है अगर मैं अपने टुकड़े टुकड़े में पिक्सल को त्याग दूं?

जवाबों:


20

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

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

पूरी तरह से एपीआई के माध्यम से गहराई परीक्षण को अक्षम करने से अनुकूलन को भी चलने से रोका जाना चाहिए, क्योंकि इससे गलत तरीके से प्रस्तुत किए गए दृश्य हो सकते हैं। आपके मामले में, फिर, यह कोई फर्क नहीं पड़ता कि आप उपयोग करते हैं discard

हाल के हार्डवेयर परीक्षण (प्रारंभिक स्टैंसिल परीक्षणों सहित) का उपयोग करके बाध्य कर सकते हैं layout(early_fragment_tests)- उत्तर की शुरुआत में जिस पृष्ठ पर मैंने लिंक किया था, उस पर इस पर अधिक जानकारी (और चेतावनी) है।


3

हमेशा प्रदर्शन के प्रश्नों के लिए सबसे सटीक उत्तर यह होता है कि इसे अपने लक्ष्य हार्डवेयर पर आज़माएँ और जो होता है उसे मापें।

आपके मामले में यह शायद बुरा काम नहीं है। वास्तव में एक मौका है यह मेमोरी बैंडविड्थ पर बचत करके प्रदर्शन में मदद करेगा। हालांकि, यह shader निर्देश भी जोड़ देगा, इसलिए यह हमेशा एक प्रदर्शन लाभ नहीं है।

यहां तक ​​कि गहराई बफर का उपयोग करते समय प्रदर्शन हिट हमेशा बहुत महत्वपूर्ण नहीं होता है, यदि आप उस आदेश से सावधान हैं जिसमें आप चीजों को आकर्षित करते हैं।

Https://fgiesen.wordpress.com/2011/07/08/a-trip-through-the-graphics-pipeline-2011-part-7/ पर एक ब्लॉग पोस्ट है, जिसमें कुछ विस्तार से वर्णन किया गया है कि प्रारंभिक गहराई परीक्षण कैसे काम कर सकता है हार्डवेयर में, और वहाँ क्या सीमाएँ हो सकती हैं।


1
वास्तव में परीक्षण के बाद मुझे लगता है कि यह मान लेना सुरक्षित है कि मैं न तो हारता हूं और न ही प्रदर्शन हासिल करता हूं, लेकिन मैं गहराई से स्पष्टीकरण देने वाले उत्तर की तलाश में था कि क्या और क्यों होने वाला है।
अली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.