जीपीआर बनावट और वीआरएएम को कैसे संभालता है?


18

यह वास्तव में अंतर-संबंधित प्रश्नों का एक गुच्छा है:

  1. संपीड़ित बनावट (dxt5 / dxt1 आदि) रेंडरिंग पाइपलाइन से गुजरते समय कभी पूरी तरह से विघटित हो जाती है?

  2. यदि पहले प्रश्न का उत्तर सही है, तो मेमोरी को कई बड़े असम्पीडित बनावटों के लिए कैसे प्रबंधित किया जाता है?

  3. क्या फ्रेमबफ़र आधुनिक GPU में VRAM से अलग है?

जवाबों:


29

DXT / BC / ETC जैसे GPU संपीड़ित बनावट प्रारूप विशेष रूप से उनके संपीड़ित रूप से सीधे पढ़ने के लिए डिज़ाइन किए गए हैं। उन्हें कच्चे RGBA बफर में अनपैक करने की आवश्यकता नहीं है।

जिस तरह से यह काम करता है वह टेक्सल्स के प्रत्येक ब्लॉक (अक्सर 4x4) में कुछ निश्चित संख्या में बिट्स होते हैं - इसलिए हम जानते हैं कि किसी विशेष टेक्सल को देखने के लिए बफर में कितनी दूर है - और ये ब्लॉक आसपास के सभी को पढ़े बिना विघटित हो सकते हैं / पूर्ववर्ती बनावट की जानकारी। जीपीयू में विशेष हार्डवेयर होते हैं जो आपके शेड्स से बनावट नमूना अनुरोधों को पूरा करने के लिए आवश्यक अनुरोध किए गए टेक्सल ब्लॉक को डिकम्पोज करता है।

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


आमतौर पर, कई प्रश्नों को कई पदों के माध्यम से किया जाना चाहिए, लेकिन चूंकि यह एक बहुत छोटा उत्तर है, मैं बिंदु 3 को भी मारूंगा।

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


संपीड़न एल्गोरिथ्म पर यह लिंक बेहद मददगार और गहन है। अच्छा लगा!
कोबर्न

7

आपके सवालों के जवाब वास्तव में प्लेटफॉर्म पर निर्भर करते हैं। आम तौर पर बीसी फॉर्मेट को मेमोरी में संपीड़ित रूप में रखा जाता है और जीपीआर टेक्सचर इकाइयों द्वारा उड़ान में अपघटन किया जाता है, लेकिन इसके अपवाद भी हैं। नामुमकिन Xbox 360 को TU से पहले 4x4 पिक्सेल BC ब्लॉक्स को डिकम्पोज करने के लिए जाना जाता है, इससे पहले कि इस तरह से कैश का उपयोग करने वाले डेटा को लाया जाए। मुझे ऐसे किसी भी प्लेटफ़ॉर्म के बारे में पता नहीं है, जो लोड होने पर पूरी बनावट को व्रम से अलग कर दे, लेकिन मुझे इसमें अतिरिक्त मेमोरी और बैंडविड्थ के उपयोग के कारण संदेह है।

फ़्रेमबफ़र्स के लिए एक ही बात जाती है - यह प्लेटफॉर्म पर निर्भर करता है। Xbox 360 पर आपके पास 10MB का समर्पित उच्च बैंडविड्थ वाला EDRAM था जिसे आपको टार्गेट टारगेट के लिए उपयोग करना था। Xbox One पर आपके पास अभी भी 32MB का विशेष ESRAM है जो उच्च बैंडविड्थ के कारण लक्ष्यों को प्रस्तुत करने के लिए पसंद किया जाता है (और इसे Xbox 360 पर इसके विपरीत से प्राप्त किया जा सकता है), लेकिन रेंडर लक्ष्य नियमित DDR3 मेमोरी में भी रह सकते हैं।

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