बनावट एटलस बनाम सरणी-बनावट: वे सीपीयू और जीपीयू द्वारा कैसे अलग-अलग हैं और प्रदर्शन को कैसे प्रभावित करता है?


10

यूनिटी 5.4 (वर्तमान में बीटा में), एक बहुप्रतीक्षित सुविधा लाएगा (2013 से) जो कि सरणी-बनावट है - ओपनग्लस के एरियरटेक्स्चर के समान व्यर्थ में । हालाँकि, arrays-textures और बनावट atlases के बारे में कुछ पढ़ने के बाद, मैं अभी भी सीपीयू और जीपीयू द्वारा उनके उपयोग पर तकनीकी अंतर को काफी समझ नहीं पा रहा हूं।

इसलिए, अधिक विशिष्ट होने के लिए, मैं मुख्य अंतर पर एक स्पष्टीकरण के लिए पूछना चाहता हूं कि सीपीयू और जीपीयू द्वारा बनावट एटलस और टेक्सचर एरे को कैसे निपटाया जाता है और सबसे महत्वपूर्ण बात यह है कि इस तरह के अंतर प्रदर्शन और मेमोरी हैंडलिंग पर कैसे प्रभाव डाल सकते हैं (जैसे कैसे बनावट arrays बनावट atlases, आदि की तुलना में अधिक प्रदर्शन हो सकता है)।

यदि यूनिटी के कार्यान्वयन पर तकनीकी विवरणों में इसकी दुर्भाग्यपूर्ण बंद-खटास के कारण कमी है, तो मैं OpenGL.s ArrayTexture के बारे में एक उत्तर के साथ काफी खुश होगा।


मुझे आश्चर्य नहीं है कि आपको तकनीकी तुलना नहीं मिली, क्योंकि दोनों कार्यान्वयन-निर्भर (सरणियों के लिए अधिक) हैं।
वंदरा

आप एक मुश्किल समय के बारे में जानकारी प्राप्त करने जा रहे हैं कि एकता इंजन के आंतरिक कार्य कैसे होते हैं, क्योंकि यह एक बंद स्रोत, ब्लैक बॉक्स है। केवल एक चीज जो आप कर सकते हैं, वह प्रत्येक मामले की रूपरेखा है और अपने आप को सीपीयू और जीपीयू उपयोग की तुलना में प्राप्त करें। यह समझने के लिए कि यह कैसे काम करता है, इसके लिए एक एकता इंजीनियर की आवश्यकता होगी, या उनके स्रोत कोड को खोला या लीक किया जाएगा।
jgallant

@Jon फेयर पर्याप्त है, लेकिन वास्तव में मैं एक इंजन-अज्ञेयवादी उत्तर में अधिक रुचि रखता था। यदि यह बहुत भिन्न होता है, तो मैं उदाहरण के लिए, ओपनजीएल के ऐरेटेक्स्चर: opengl.org/wiki/Array_Texture
ASteer

जवाबों:


12

जैसा कि ऊपर टिप्पणी में कहा गया है, प्रदर्शन कार्यान्वयन, आपके विशेष हार्डवेयर, और आप बनावट के साथ क्या करने की कोशिश कर रहे हैं, पर निर्भर करने वाला है, इसलिए प्रत्येक विकल्प को प्रोफाइल करने के लिए एकमात्र विश्वसनीय उत्तर है।

आप प्रत्येक विकल्प का उपयोग कैसे करते हैं, इसके संदर्भ में कुछ अंतर हैं, जो लगातार लागू होंगे:

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

यह बनावट के साथ आम समस्याओं से बचा जाता है जहां हमें आसन्न बनावट के बीच पैडिंग को जोड़ने की आवश्यकता होती है, ताकि उनके किनारों पर नमूनों को एक साथ रक्तस्राव से रखा जा सके, विशेष रूप से गहरे घुन के स्तर में।

इसका मतलब यह भी है कि यदि आप अपने बनावट को टाइल करना चाहते हैं, तो आप बनावट नमूने के हार्डवेयर का उपयोग इसे वैनिला बनावट की तरह कर सकते हैं। एटलस के साथ, हमें आमतौर पर टाइलिंग गणित को अपने टुकड़े टुकड़े में करना पड़ता है, क्योंकि नमूना केवल लपेटता है / दर्पण / clamps / बॉर्डर बनावट पूरे एटलस पर समन्वय करता है, न कि इसके अंदर व्यक्तिगत टाइल।

सरणी बनावट के साथ मुख्य प्रतिबंध यह है कि उन्हें अपने सभी घटक पाठों को एक ही रिज़ॉल्यूशन और एमआईपी स्तरों की संख्या की आवश्यकता होती है। यदि आप बहुत अलग-अलग रिज़ॉल्यूशन की ज़रूरतों के साथ एक साथ टेक्स्ट को बैचने की कोशिश कर रहे हैं (कहते हैं, इलाके की टाइलें जिनके LoD एक आभासी बनावट में दूरी के साथ बंद हो जाते हैं) तो आप इसके बजाय एटलस का लचीलापन चाहते हैं।


धन्यवाद, यह वही था जो मैं था। मेरा मतलब है, ठीक उसी के बारे में जवाब नहीं है जो तेजी से कम स्मृति गहन है - क्योंकि निश्चित रूप से ये कार्यान्वयन पर निर्भर हैं। फिर भी, मुझे यकीन था कि प्रत्येक मामले के कामकाज पर कुछ संकेत उनके सामान्य और सबसे अच्छे फिट परिदृश्यों को समझने के लिए उपयोगी हो सकते हैं। आपके जवाब ने वास्तव में उस पर मेरी मदद की है।
एएसटीर

सरणी बनावट का एक और नुकसान: वे द्वारा सीमित हैं GL_MAX_ARRAY_TEXTURE_LAYERS। मेरे अर्ध-आधुनिक जीपीयू पर, यह 2048 है, इसलिए यदि आप बहुत सारे छोटे पाठ चाहते हैं, तो यह सीमा बहुत कम हो सकती है।
2:22 पर jwd
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.