2012-03-30 14 views
5

पर रेटिना स्क्रीन के लिए शेडर अनुकूलन मैं एक 3 डी आईफोन एप्लिकेशन बनाता हूं जो कई बिलबोर्ड का उपयोग करता है। मेरा फ्रेम बफर रेटिना स्क्रीन पर दो गुना बड़ा है क्योंकि मैं आईफोन 4 पर अपनी गुणवत्ता में वृद्धि करना चाहता हूं। समस्या यह है कि फ्रेमबफर आकार के कारण खंड टुकड़े अधिक समय का उपभोग करते हैं। क्या शेडर परिशुद्धता बढ़ाने के बिना रेटिना स्क्रीन और उच्च परिभाषा बनावट प्रबंधित करने का कोई तरीका है?आईओएस

उत्तर

9

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

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

मान लें कि आप अपने टुकड़े के शेडर्स द्वारा सीमित हैं, आईओएस जीपीयू पर प्रदर्शन में सुधार करने के लिए आप कुछ चीजें कर सकते हैं।

आपके मामले में, ऐसा लगता है कि बनावट का आकार एक मुद्दा हो सकता है। पहली बात यह है कि मैं मानक बिटमैप स्रोतों के बजाय PowerVR बनावट संपीड़ित (पीवीआरटीसी) बनावट का उपयोग करता हूं। पीवीआरटीसी बनावट स्मृति में संपीड़ित प्रारूप में संग्रहीत हैं, और समकक्ष बिटमैप्स से बहुत छोटी हो सकती हैं। यह बनावट पढ़ने पर कैश हिट बढ़ाकर बहुत तेज पहुंच की अनुमति दे सकता है।

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

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

मैं विभिन्न अनुकूलन के बारे में जा सकता हूं (उपयुक्त जहां इत्यादि के बजाय लोप या मध्यम परिशुद्धता का उपयोग कर रहा हूं), मेरे पास had a little help in this area myself है, लेकिन ये पहली चीजें हैं जिन पर मैं ध्यान केंद्रित करूंगा। अंत में, आप अपने शेडर्स को PowerVR's profiling editor के माध्यम से चलाने का भी प्रयास कर सकते हैं जो आपको इन शेडरों के सर्वोत्तम और सबसे खराब केस प्रदर्शन के लिए चक्र समय अनुमान दे सकता है।

रेटिना डिस्प्ले डिवाइस भी सबसे खराब अपराधी नहीं हैं जब यह टुकड़े की छाया सीमाओं की बात आती है। आईपैड 1 की पूर्ण स्क्रीन पर कुछ प्रतिपादन करने का प्रयास करें, क्योंकि इसमें आईफोन 4/4 एस की तुलना में अधिक पिक्सल हैं, फिर भी आईपैड 2/3 या आईफोन 4 एस की तुलना में बहुत धीमी जीपीयू है। यदि आप आईपैड 1 पर अच्छी तरह से चलाने के लिए कुछ प्राप्त कर सकते हैं, तो यह सबकुछ (यहां तक ​​कि रेटिना आईपैड) पर भी अच्छा होगा।

+0

इन सभी परिशुद्धताओं के लिए धन्यवाद। रेंडरर उपयोग लगभग 99% और टाइलर लगभग 5% है। मुझे लगता है कि मिपमैपिंग प्रदर्शन में सुधार नहीं करेगा क्योंकि मेरे अधिकांश बिलबोर्ड 2 डी स्प्राइट्स (बनावट को स्केल नहीं किया गया है) के रूप में प्रदर्शित होते हैं। मैं पावरवीआर के प्रोफाइलिंग एडिटर का प्रयास करूंगा, और आईपैड 1 पर अपने ऐप का परीक्षण करूंगा। – Klem

+0

धन्यवाद ब्रैड। मैं पिछले 6 महीनों में पागल जैसे शेडर्स को कोडिंग कर रहा हूं और जब मैंने सीख लिया कि बनावट निर्देशांक को कैसे संशोधित किया जाए तो यह मेरे दिमाग में एक प्रकाश की तरह था। लेकिन मैं हाल ही में सोच रहा हूं कि दो अलग-अलग बनावटों से पढ़ना बेहतर है या एक बनावट में आधार और सामान्य मानचित्रों को टाइल करना बेहतर है। जो तेज है। शेडर्स गाइड के लिए ऐप्पल के सर्वोत्तम प्रथाओं का तात्पर्य है कि अगर टेक्सकोर्ड में संशोधन कशेरुक शेडर में किया जाता है तो यह एक आश्रित बनावट नहीं पढ़ता है। मैं यह देखने के लिए कोशिश कर रहा हूं कि iphone4 प्रतिपादन गति तेज है या नहीं। और शायद विभिन्न मानचित्रों को भी आजमाएं। – badweasel