प्रॉडक्ट से जुड़ी खबरें
Unity की मदद से Android XR के लिए परफ़ॉर्मेंस ऑप्टिमाइज़ करना
छह मिनट में पढ़ें
Samsung Galaxy XR लॉन्च हो गया है और यह Android XR पर काम करता है! यह ब्लॉग पोस्ट, Android XR Spotlight Week का हिस्सा है. इसमें हम संसाधन उपलब्ध कराते हैं. जैसे, ब्लॉग पोस्ट, वीडियो, सैंपल कोड वगैरह. इन सभी को इस तरह डिज़ाइन किया गया है कि इनसे आपको Android XR के लिए ऐप्लिकेशन बनाने, उन्हें तैयार करने, और उनके बारे में ज़्यादा जानने में मदद मिले.
इस हफ़्ते, Samsung ने Galaxy XR लॉन्च किया है. इसे Google और Qualcomm के साथ मिलकर बनाया गया है. यह डेवलपर के लिए एक रोमांचक समय है. हमारा मकसद है कि आपको अपने एक्सआर ऐप्लिकेशन से बेहतर परफ़ॉर्मेंस मिले.
सामान्य डिवाइसों पर गेम और ऐप्लिकेशन की परफ़ॉर्मेंस खराब होने से, उपयोगकर्ताओं को परेशानी हो सकती है. हालांकि, एक्सआर डिवाइसों पर परफ़ॉर्मेंस खराब होने से ज़्यादा गंभीर समस्याएं हो सकती हैं. एक्सआर डिवाइसों पर परफ़ॉर्मेंस को बेहतर बनाना ज़रूरी है. अगर एक्सआर डिवाइसों पर फ़्रेम रेट का टारगेट पूरा नहीं होता है, तो इससे चक्कर आने जैसी गंभीर समस्याएं हो सकती हैं.
इस गाइड में, हम आपको Android XR के लिए ऐप्लिकेशन डेवलप करने के लिए, परफ़ॉर्मेंस ऑप्टिमाइज़ेशन के ज़रूरी पहलुओं के बारे में बताएंगे. आपको यह जानने को मिलेगा कि किन सुविधाओं से परफ़ॉर्मेंस को सबसे ज़्यादा बेहतर बनाया जा सकता है, उनका इस्तेमाल कब करना चाहिए, और वे एक साथ मिलकर कैसे काम करती हैं, ताकि आपको फ़्रेम रेट के टारगेट पूरे करने में मदद मिल सके.
हमारा मकसद यह है:
- कम से कम: 72 एफ़पीएस (यह Play की क्वालिटी के लिए बने दिशा-निर्देशों का हिस्सा है)
- ज़रूरी नहीं: 90 एफ़पीएस. इसके लिए, हर फ़्रेम के लिए 11 मि॰से॰ का बजट
इतने ज़्यादा फ़्रेम रेट को बनाए रखना क्यों ज़रूरी है, इस बारे में ज़्यादा जानने के लिए, हमारे परफ़ॉर्मेंस के लिए बने दिशा-निर्देश देखें.
एक्सआर डिवाइसों के लिए परफ़ॉर्मेंस से जुड़ी सुविधाएं
हम एक्सआर डिवाइसों के लिए परफ़ॉर्मेंस से जुड़ी दो सुविधाओं के बारे में बात करेंगे: फ़ोविएटेड रेंडरिंग और Vulkan सबसैंपलिंग.
फ़ोविएटेड रेंडरिंग
फ़ोविएटेड रेंडरिंग एक ऑप्टिमाइज़ेशन है, जिसके दो मोड होते हैं. पहला मोड स्टैटिक मोड है. इसमें स्क्रीन के बीच वाले हिस्से को ज़्यादा रिज़ॉल्यूशन पर रेंडर किया जाता है. इसके बाद, स्क्रीन के किनारे वाले हिस्सों को कम रिज़ॉल्यूशन पर रेंडर किया जाता है.
दूसरा मोड आई-ट्रैकिंग मोड है. इसमें स्क्रीन के उस हिस्से को पूरी जानकारी के साथ रेंडर किया जाता है जिस पर उपयोगकर्ता की नज़र होती है. वहीं, स्क्रीन के किनारे वाले हिस्सों को कम क्वालिटी पर रेंडर किया जाता है. यह मोड, असल में इंसानी नज़र के काम करने के तरीके की नकल करता है. इसमें हम स्क्रीन के उस हिस्से को पूरी जानकारी के साथ देखते हैं जिस पर हमारी नज़र होती है.
फ़ोविएटेड रेंडरिंग की मदद से, जीपीयू के वर्कलोड को काफ़ी कम किया जा सकता है. साथ ही, उपयोगकर्ता को इमेज की क्वालिटी में कोई फ़र्क़ नहीं दिखता. फ़ोविएटेड रेंडरिंग की सबसे अच्छी बात यह है कि उपयोगकर्ताओं को स्क्रीन के किनारे वाले हिस्सों की क्वालिटी में कोई फ़र्क़ नहीं दिखता. हालांकि, जीपीयू की परफ़ॉर्मेंस में सुधार ज़रूर दिखता है.
मान लें कि आप 3D कलाकृतियों वाला एक म्यूज़ियम बना रहे हैं. फ़ोविएटेड रेंडरिंग के बिना, आपको 'फ़ील्ड ऑफ़ व्यू' में हर चीज़ को रेंडर करने के लिए, 90 एफ़पीएस बनाए रखने में मुश्किल होगी. फ़ोविएटेड रेंडरिंग की मदद से, उन हिस्सों को ज़्यादा जानकारी के साथ रेंडर किया जा सकता है जिन पर उपयोगकर्ता की नज़र होती है. वहीं, बैकग्राउंड को कम क्वालिटी पर रेंडर किया जा सकता है. उपयोगकर्ताओं को इसमें कोई फ़र्क़ नहीं दिखेगा. हालांकि, आपके पास सीन में ज़्यादा जानकारी जोड़ने का विकल्प होगा.
Vulkan सबसैंपलिंग
Vulkan सबसैंपलिंग, फ़ोविएटेड रेंडरिंग के साथ मिलकर काम करता है. फ़ोविएटेड रेंडरिंग यह तय करता है कि अलग-अलग क्वालिटी लेवल पर क्या रेंडर करना है. वहीं, Vulkan सबसैंपलिंग, फ़्रैगमेंट डेंसिटी मैप का इस्तेमाल करके, अलग-अलग क्वालिटी लेवल को असरदार तरीके से रेंडर करने का काम करता है.
फ़ोविएटेड रेंडरिंग के साथ मिलकर काम करने पर, Vulkan सबसैंपलिंग से परफ़ॉर्मेंस में 0.5 मि॰से॰ का फ़ायदा मिलता है. इससे स्क्रीन के किनारे वाले हिस्सों में दिखने वाले खुरदुरे किनारों को भी ठीक किया जा सकता है. इससे पूरी इमेज साफ़ दिखती है.
उदाहरण के लिए, फ़्लाइट सिम्युलेटर गेम में उपयोगकर्ता इंस्ट्रूमेंट और कंट्रोल पर फ़ोकस करते हैं. ऐसे में, फ़ोविएटेड रेंडरिंग को Vulkan सबसैंपलिंग के साथ मिलाकर इस्तेमाल करने से, कंट्रोल पूरी जानकारी के साथ रेंडर होते हैं. वहीं, कॉकपिट के किनारे वाले हिस्से को रेंडर करने के लिए कम संसाधनों का इस्तेमाल किया जाता है. 0.5 मि॰से॰ ज़्यादा समय नहीं लगता. हालांकि, इससे इंटरेक्टिव एलिमेंट जोड़ने या मुश्किल पलों के दौरान फ़्रेम ड्रॉप होने से रोका जा सकता है.
मुश्किल सीन के लिए जीपीयू की सुविधाएं
फ़ोविएटेड रेंडरिंग और Vulkan सबसैंपलिंग के अलावा, जीपीयू की कुछ ऐसी सुविधाएं भी हैं जिनसे स्मार्ट इंस्टेंसिंग और कलिंग की मदद से, गैर-ज़रूरी वर्कलोड को कम किया जा सकता है. ये सुविधाएं, खास तौर पर उन मुश्किल सीन के लिए कारगर हैं जिनमें एक ही तरह की ज्यामिति या ज़्यादा ऑक्लूज़न होता है.
जीपीयू रेसिडेंट ड्रॉअर
जीपीयू रेसिडेंट ड्रॉअर, ड्रॉ कॉल को कम करने और सीपीयू के प्रोसेसिंग टाइम को बचाने के लिए, जीपीयू इंस्टेंसिंग का इस्तेमाल करता है. इसलिए, सीपीयू हर ऑब्जेक्ट के बारे में जीपीयू को अलग-अलग बताने के बजाय, जीपीयू एक जैसे ऑब्जेक्ट को एक साथ बैच करता है.
यह सुविधा, खास तौर पर उन बड़े सीन के लिए कारगर है जिनमें एक ही तरह के मेश का इस्तेमाल किया जाता है. जैसे, जंगल में पेड़, ऑफ़िस की बिल्डिंग में फ़र्नीचर या किसी सीन में बिखरे हुए प्रॉप.
मान लें कि जंगल के एक सीन में 200 पेड़ हैं और सभी पेड़ एक ही बेस मेश का इस्तेमाल कर रहे हैं. जीपीयू रेसिडेंट ड्रॉअर के बिना, जीपीयू के 200 ड्रॉ कॉल होंगे. इससे सीपीयू का वर्कलोड कम हो जाएगा. इस सुविधा को चालू करने पर, जीपीयू उन पेड़ों को स्मार्ट तरीके से इंस्टेंस करेगा. इससे ड्रॉ कॉल की संख्या 5 से 10 तक कम हो जाएगी. इससे जीपीयू के वर्कलोड को काफ़ी कम किया जा सकता है. इसके बाद, गेमप्ले लॉजिक या फ़िज़िक्स कैलकुलेशन में इसका इस्तेमाल किया जा सकता है.
जीपीयू ऑक्लूज़न कलिंग
जीपीयू ऑक्लूज़न कलिंग, छिपे हुए ऑब्जेक्ट को आइडेंटिफ़ाई करने और उन्हें रेंडर न करने के लिए, सीपीयू के बजाय जीपीयू का इस्तेमाल करता है. यह सुविधा, अन्य ऑब्जेक्ट के पीछे छिपे हुए ऑब्जेक्ट को अपने-आप डिटेक्ट करती है. इसलिए, जीपीयू का इस्तेमाल उन चीज़ों को रेंडर करने के लिए नहीं किया जाता जिन्हें उपयोगकर्ता नहीं देख सकता.
यह सुविधा, खास तौर पर उन सीन के लिए कारगर है जिनमें कई कमरे, घने सीन या आर्किटेक्चरल सीन होते हैं. इनमें दीवारें, फ़्लोर, और ऑब्जेक्ट, व्यू को ब्लॉक करते हैं.
उदाहरण के लिए, मान लें कि आप कई कमरों वाला घर बना रहे हैं. जब उपयोगकर्ता लिविंग रूम में है, तो पूरी जानकारी के साथ किचन को रेंडर करने के लिए जीपीयू साइकल क्यों खर्च की जाए, जबकि वह दीवार के पीछे पूरी तरह से छिपा हुआ है? जीपीयू ऑक्लूज़न कलिंग, छिपे हुए ऑब्जेक्ट को रेंडर नहीं करता. इससे आपको उन ऑब्जेक्ट को रेंडर करने के लिए ज़्यादा परफ़ॉर्मेंस बजट मिलता है जो असल में दिखते हैं.
अपनी परफ़ॉर्मेंस की निगरानी करना
सिर्फ़ इन सुविधाओं का इस्तेमाल करना काफ़ी नहीं है. आपको अपने ऑप्टिमाइज़ेशन को मेज़र भी करना होगा, ताकि उनके असर का पता लगाया जा सके और यह पुष्टि की जा सके कि आपके बदलाव असल में काम कर रहे हैं.
परफ़ॉर्मेंस मेट्रिक API
परफ़ॉर्मेंस मेट्रिक API की मदद से, आपके ऐप्लिकेशन के मेमोरी इस्तेमाल, सीपीयू परफ़ॉर्मेंस, और जीपीयू परफ़ॉर्मेंस की रीयल टाइम में निगरानी की जा सकती है. इससे कंपोज़िटर और रनटाइम लेयर का पूरा डेटा मिलता है, ताकि आपको यह पता चल सके कि आपके ऐप्लिकेशन में क्या हो रहा है.
बदलाव करने से पहले, एक बेसलाइन सेट करें. इसके बाद, ऑप्टिमाइज़ेशन लागू करें, उसके असर को मेज़र करें, और फिर से प्रोसेस दोहराएं. डेटा पर आधारित इस तरीके का मतलब है कि आपको पता है कि आप असल में परफ़ॉर्मेंस को बेहतर बना रहे हैं. इसके लिए, आपको अनुमान लगाने की ज़रूरत नहीं है.
फ़ोविएटेड रेंडरिंग चालू करने से पहले, आपके जीपीयू का फ़्रेम टाइम 13 मि॰से॰ हो सकता है. यह आपके 11 मि॰से॰ के बजट से ज़्यादा है. फ़ोविएटेड रेंडरिंग चालू करें, फिर से मेज़र करें, और उम्मीद है कि यह 9 मि॰से॰ तक कम हो जाएगा. इससे आपको 4 मि॰से॰ का फ़ायदा मिलेगा. इसका इस्तेमाल, सीन में ज़्यादा जानकारी जोड़ने, अन्य जगहों पर विज़ुअल क्वालिटी को बेहतर बनाने या अलग-अलग तरह के कॉन्टेंट के लिए बेहतर परफ़ॉर्मेंस देने के लिए किया जा सकता है.
इन मेट्रिक के बिना, ऑप्टिमाइज़ेशन का कोई फ़ायदा नहीं है. परफ़ॉर्मेंस मेट्रिक API से आपको यह पता चलता है कि आपके खास इस्तेमाल के मामले में असल में क्या मदद कर रहा है.
फ़्रेम डीबगर
फ़्रेम डीबगर, Unity का एक इन-बिल्ट टूल है. इसकी मदद से यह समझा जा सकता है कि आपका सीन, फ़्रेम दर फ़्रेम कैसे रेंडर हो रहा है. इससे आपको ड्रॉ कॉल का क्रम दिखता है. साथ ही, यह पुष्टि करने के लिए कि आपके ऑप्टिमाइज़ेशन सही तरीके से काम कर रहे हैं, आपको उन्हें स्टेप-बाय-स्टेप देखने की सुविधा मिलती है.
क्या आपको पुष्टि करनी है कि एसआरपी बैचिंग काम कर रहा है? फ़्रेम डीबगर में 'RenderLoopNewBatcher' एंट्री देखें. क्या आपको यह देखना है कि जीपीयू रेसिडेंट ड्रॉअर सही तरीके से बैचिंग कर रहा है या नहीं? 'हाइब्रिड बैच ग्रुप' एंट्री देखें. इन विज़ुअल पुष्टि से आपको यह समझने में मदद मिलती है कि आपकी ऑप्टिमाइज़ेशन सेटिंग असल में काम कर रही हैं या नहीं.
अपने सीन के पहले 50 ड्रॉ कॉल को स्टेप-बाय-स्टेप देखें. अगर आपको एक जैसे ऑब्जेक्ट, बैच के बजाय अलग-अलग ड्रॉ होते दिखते हैं, तो इसका मतलब है कि आपकी इंस्टेंसिंग या बैचिंग सही तरीके से काम नहीं कर रही है. फ़्रेम डीबगर, इन समस्याओं को तुरंत दिखाता है, ताकि उन्हें ठीक किया जा सके.
अन्य ऑप्टिमाइज़ेशन
ऊपर बताए गए ऑप्टिमाइज़ेशन के अलावा, परफ़ॉर्मेंस के लिए बनी हमारी पूरी गाइड में कुछ अन्य ऑप्टिमाइज़ेशन के बारे में भी बताया गया है. यहां खास बातें बताई गई हैं:
- यूआरपी सेटिंग: मोबाइल एक्सआर के लिए, एचडीआर और पोस्ट प्रोसेसिंग की सुविधा बंद करें. मोबाइल हार्डवेयर पर इन सुविधाओं की परफ़ॉर्मेंस की लागत की तुलना में, इनका विज़ुअल असर बहुत कम होता है. इसलिए, आपको परफ़ॉर्मेंस में काफ़ी फ़ायदा मिलेगा. साथ ही, विज़ुअल में बहुत कम अंतर दिखेगा.
- एसआरपी बैचिंग: एक ही शेडर वैरिएंट का इस्तेमाल करने वाले कई मटीरियल वाले सीन के लिए, सीपीयू ओवरहेड को कम करता है. ड्रॉ कॉल के बीच रेंडर-स्टेट में होने वाले बदलावों को कम करके, रेंडरिंग में लगने वाले सीपीयू के समय को काफ़ी कम किया जा सकता है.
- डिसप्ले रीफ़्रेश रेट: सीन की जटिलता के आधार पर, 72 एफ़पीएस और 90 एफ़पीएस के बीच डाइनैमिक तौर पर अडजस्ट करें. जटिल सीक्वेंस के दौरान, फ़्रेम रेट को कम करें, ताकि स्थिरता बनी रहे. इसके बाद, आसान पलों के दौरान, अल्ट्रा-स्मूद इंटरैक्शन के लिए इसे बढ़ाएं.
- डेप्थ/ओपेक टेक्सचर: इन्हें तब तक बंद रखें, जब तक शेडर इफ़ेक्ट के लिए इनकी ज़रूरत न हो. इनसे गैर-ज़रूरी जीपीयू कॉपी करने की कार्रवाइयां होती हैं. इससे परफ़ॉर्मेंस खराब होती है. साथ ही, ज़्यादातर ऐप्लिकेशन के लिए इनका कोई फ़ायदा नहीं होता.
- यूआरपी रेंडर स्केल: इस सेटिंग की मदद से, परफ़ॉर्मेंस के फ़ायदों के लिए कम रिज़ॉल्यूशन पर रेंडर किया जा सकता है. साथ ही, बेहतर विज़ुअल क्वालिटी के लिए, रेंडरिंग को अपस्केल किया जा सकता है.
इन और अन्य ऑप्टिमाइज़ेशन के बारे में चरण-दर-चरण निर्देश पाने के लिए, Android XR के लिए Unity की परफ़ॉर्मेंस के बारे में पूरी गाइड देखें.
नतीजा
आपके एक्सआर ऐप्लिकेशन की परफ़ॉर्मेंस, सिर्फ़ एक तकनीकी पहलू नहीं है. इससे उपयोगकर्ता को बेहतर और दिलचस्प अनुभव मिलता है. वहीं, खराब परफ़ॉर्मेंस की वजह से, उपयोगकर्ता को चक्कर आ सकते हैं या असहज महसूस हो सकता है. हमने जिन ऑप्टिमाइज़ेशन के बारे में बताया है वे नए एक्सआर डिवाइसों पर फ़्रेमरेट के उन अहम टारगेट को पूरा करने के लिए आपके टूलकिट हैं.
यहां आपका रोडमैप दिया गया है:
- फ़ोविएटेड रेंडरिंग और Vulkan सबसैंपलिंग से शुरुआत करें. एक्सआर डिवाइसों के लिए बनी इन सुविधाओं से, जीपीयू के वर्कलोड को तुरंत और काफ़ी कम किया जा सकता है.
- अगर आपके पास एक ही तरह की ज्यामिति या इनडोर स्पेस वाले मुश्किल सीन हैं, तो जीपीयू रेसिडेंट ड्रॉअर और ऑक्लूज़न कलिंग की सुविधा जोड़ें.
- परफ़ॉर्मेंस मेट्रिक API की मदद से हर चीज़ की निगरानी करें, ताकि यह पक्का किया जा सके कि आपके बदलाव असल में काम कर रहे हैं
- परफ़ॉर्मेंस को बेहतर बनाने के लिए, यूआरपी के अन्य ऑप्टिमाइज़ेशन देखें
लगातार मेज़र करना और प्रोसेस को दोहराना ज़रूरी है. ज़रूरी नहीं कि हर ऑप्टिमाइज़ेशन से हर प्रोजेक्ट को एक जैसा फ़ायदा मिले. इसलिए, परफ़ॉर्मेंस मेट्रिक API का इस्तेमाल करके, यह पता लगाएं कि आपके खास इस्तेमाल के मामले में असल में क्या मदद करता है.
आगे क्या करना है: अपने कौशल को बढ़ाना
और जानने के लिए तैयार हैं? ये संसाधन देखें:
- Android XR के लिए Unity की परफ़ॉर्मेंस के बारे में गाइड - इसमें यहां बताई गई सभी सुविधाओं को लागू करने के बारे में चरण-दर-चरण निर्देश दिए गए हैं.
- Unity और Android XR का इस्तेमाल शुरू करना - अपना डेवलपमेंट एनवायरमेंट सेट अप करें और ऐप्लिकेशन बनाना शुरू करें.
- Android XR के लिए डेवलपर दस्तावेज़ - इसमें Android XR की सभी सुविधाओं के लिए पूरी गाइड दी गई हैं
पढ़ना जारी रखें
-
प्रॉडक्ट से जुड़ी खबरें
मोबाइल का इकोसिस्टम हमेशा बदलता रहता है. इससे नए अवसर और नए खतरे दोनों मिलते हैं. इन बदलावों के बावजूद, Android और Google Play यह पक्का करने के लिए प्रतिबद्ध हैं कि अरबों लोग भरोसे के साथ अपने ऐप्लिकेशन का इस्तेमाल कर सकें और डेवलपर के इनोवेशन को बढ़ावा मिल सके.
Vijaya Kaza • तीन मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
Jetpack Compose का अप्रैल ‘26 वर्शन स्थिर है. इस वर्शन में, Compose के मुख्य मॉड्यूल का वर्शन 1.11 (बीओएम मैपिंग देखें), शेयर किए गए एलिमेंट के डीबग टूल, ट्रैकपैड इवेंट वगैरह शामिल हैं.
Meghan Mehta • पांच मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
Android Studio Panda 4 अब स्थिर है और इसका इस्तेमाल प्रोडक्शन में किया जा सकता है. इस वर्शन में प्लानिंग मोड, नेक्स्ट एडिट प्रेडिक्शन वगैरह शामिल हैं. इससे, बेहतर क्वालिटी वाले Android ऐप्लिकेशन बनाना पहले से कहीं ज़्यादा आसान हो गया है.
Matt Dyor • पांच मिनट में पढ़ें
अप-टू-डेट रहें
हर हफ़्ते, Android डेवलपमेंट से जुड़ी अहम जानकारी अपने इनबॉक्स में पाएं.