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