प्रॉडक्ट से जुड़ी खबरें
Unity की मदद से Android XR के लिए परफ़ॉर्मेंस ऑप्टिमाइज़ करना
छह मिनट में पढ़ें
Samsung Galaxy XR अब उपलब्ध है और यह Android XR पर काम करता है! यह ब्लॉग पोस्ट, Android XR Spotlight Week का हिस्सा है. इसमें हम संसाधन उपलब्ध कराते हैं. जैसे, ब्लॉग पोस्ट, वीडियो, सैंपल कोड वगैरह. इन सभी को इस तरह डिज़ाइन किया गया है कि ये Android XR के लिए ऐप्लिकेशन बनाने, उन्हें तैयार करने, और उनके बारे में ज़्यादा जानने में आपकी मदद करें.
इस हफ़्ते, Samsung ने Galaxy XR लॉन्च किया है. इसे Google और Qualcomm के साथ मिलकर बनाया गया है. यह डेवलपर के लिए एक रोमांचक समय है. हम चाहते थे कि आप अपने XR ऐप्लिकेशन से बेहतर परफ़ॉर्मेंस हासिल कर सकें.
सामान्य डिवाइसों पर गेम और ऐप्लिकेशन की परफ़ॉर्मेंस खराब होने से, उपयोगकर्ताओं को परेशानी हो सकती है. हालांकि, XR की दुनिया में परफ़ॉर्मेंस सिर्फ़ एक विकल्प नहीं है, बल्कि यह आपके ऐप्लिकेशन की सफलता के लिए ज़रूरी है. अगर XR में फ़्रेम रेट का टारगेट पूरा नहीं होता है, तो इससे चक्कर आने जैसी ज़्यादा गंभीर समस्याएं हो सकती हैं.
इस गाइड में, हम आपको Android XR डेवलपमेंट के लिए ज़रूरी परफ़ॉर्मेंस ऑप्टिमाइज़ेशन के बारे में बताएंगे. आपको यह जानने को मिलेगा कि किन सुविधाओं से परफ़ॉर्मेंस में सबसे ज़्यादा सुधार होता है, उनका इस्तेमाल कब करना चाहिए, और वे फ़्रेम रेट के टारगेट पूरे करने में आपकी मदद कैसे करती हैं.
हमारा लक्ष्य यह है:
- कम से कम: 72 एफ़पीएस (यह Play की क्वालिटी के लिए बने दिशा-निर्देशों का हिस्सा है)
- ज़रूरी नहीं: 90 एफ़पीएस. इसके लिए, हर फ़्रेम के लिए 11 मि॰से॰ का बजट
इतने ज़्यादा फ़्रेम रेट को बनाए रखना क्यों ज़रूरी है, इस बारे में ज़्यादा जानने के लिए, हमारे परफ़ॉर्मेंस के लिए बने दिशा-निर्देश देखें.
XR के लिए खास परफ़ॉर्मेंस सुविधाएं
हम XR के लिए खास तौर पर डिज़ाइन की गई दो परफ़ॉर्मेंस सुविधाओं के बारे में बताकर शुरुआत करेंगे: फ़ोविएटेड रेंडरिंग और 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 ड्रॉ कॉल को स्टेप-बाय-स्टेप देखें. अगर आपको एक जैसे ऑब्जेक्ट, बैच के बजाय अलग-अलग ड्रॉ होते दिखते हैं, तो इसका मतलब है कि आपकी इंस्टेंसिंग या बैचिंग सही तरीके से काम नहीं कर रही है. फ़्रेम डीबगर, इन समस्याओं को तुरंत दिखाता है, ताकि उन्हें ठीक किया जा सके.
अन्य ऑप्टिमाइज़ेशन
ऊपर बताए गए ऑप्टिमाइज़ेशन के अलावा, परफ़ॉर्मेंस के लिए बनी हमारी पूरी गाइड में कुछ अन्य ऑप्टिमाइज़ेशन के बारे में भी बताया गया है. यहां खास बातें बताई गई हैं:
- यूआरपी सेटिंग: मोबाइल XR के लिए, एचडीआर और पोस्ट प्रोसेसिंग की सुविधा बंद करें. मोबाइल हार्डवेयर पर इन सुविधाओं की परफ़ॉर्मेंस की लागत की तुलना में, इनका विज़ुअल असर बहुत कम होता है. इसलिए, आपको परफ़ॉर्मेंस में काफ़ी सुधार दिखेगा. साथ ही, विज़ुअल में बहुत कम अंतर दिखेगा.
- एसआरपी बैचिंग: एक ही शेडर वैरिएंट का इस्तेमाल करने वाले कई मटीरियल वाले सीन के लिए, सीपीयू ओवरहेड कम करता है. ड्रॉ कॉल के बीच रेंडर-स्टेट में होने वाले बदलावों को कम करके, रेंडरिंग में लगने वाले सीपीयू टाइम को काफ़ी कम किया जा सकता है.
- डिसप्ले रीफ़्रेश रेट: सीन की जटिलता के आधार पर, 72 एफ़पीएस और 90 एफ़पीएस के बीच डाइनैमिक तौर पर अडजस्ट करें. जटिल सीक्वेंस के दौरान, स्थिरता बनाए रखने के लिए फ़्रेम रेट कम करें. इसके बाद, अल्ट्रा-स्मूद इंटरैक्शन के लिए, आसान मोमेंट के दौरान इसे बढ़ाएं.
- डेप्थ/ओपेक टेक्सचर: इन्हें तब तक बंद रखें, जब तक शेडर इफ़ेक्ट के लिए इनकी ज़रूरत न हो. इनकी वजह से, जीपीयू की कॉपी करने की ऐसी कार्रवाइयां होती हैं जिनकी ज़रूरत नहीं होती. इससे परफ़ॉर्मेंस खराब होती है. साथ ही, ज़्यादातर ऐप्लिकेशन के लिए कोई फ़ायदा नहीं मिलता.
- यूआरपी रेंडर स्केल: इस सेटिंग की मदद से, परफ़ॉर्मेंस के फ़ायदों के लिए कम रिज़ॉल्यूशन पर रेंडर किया जा सकता है. साथ ही, बेहतर विज़ुअल क्वालिटी के लिए, रेंडरिंग को अपस्केल किया जा सकता है.
इन और अन्य ऑप्टिमाइज़ेशन के बारे में चरण-दर-चरण निर्देश पाने के लिए, Android XR के लिए Unity की परफ़ॉर्मेंस के बारे में पूरी गाइड देखें.
नतीजा
आपके XR ऐप्लिकेशन की परफ़ॉर्मेंस, सिर्फ़ एक तकनीकी चेकबॉक्स नहीं है. इससे यह तय होता है कि उपयोगकर्ताओं को आरामदायक और दिलचस्प अनुभव मिलेगा या ऐसा अनुभव मिलेगा जिससे उन्हें चक्कर आएंगे या असहज महसूस होगा. हमने जिन ऑप्टिमाइज़ेशन के बारे में बताया है वे आपके लिए एक टूलकिट हैं. इनकी मदद से, नए XR डिवाइसों पर फ़्रेम रेट के अहम टारगेट पूरे किए जा सकते हैं.
यहां आपका रोडमैप दिया गया है:
- फ़ोविएटेड रेंडरिंग और Vulkan सबसैंपलिंग से शुरुआत करें. XR के लिए खास तौर पर डिज़ाइन की गई इन सुविधाओं से, जीपीयू के इस्तेमाल में तुरंत और साफ़ तौर पर बचत होती है.
- अगर आपके पास दोहराई गई ज्यामिति या इनडोर स्पेस वाले मुश्किल सीन हैं, तो जीपीयू रेसिडेंट ड्रॉअर और ऑक्लूज़न कलिंग की सुविधा जोड़ें.
- परफ़ॉर्मेंस मेट्रिक API की मदद से हर चीज़ की निगरानी करें, ताकि यह पक्का किया जा सके कि आपके बदलाव असल में काम कर रहे हैं
- परफ़ॉर्मेंस को बेहतर बनाने के लिए, यूआरपी के अन्य ऑप्टिमाइज़ेशन देखें
लगातार मेज़र करना और फिर से बदलाव करना ज़रूरी है. ज़रूरी नहीं कि हर ऑप्टिमाइज़ेशन से हर प्रोजेक्ट को एक जैसा फ़ायदा मिले. इसलिए, परफ़ॉर्मेंस मेट्रिक API का इस्तेमाल करके यह साफ़ तौर पर जानें कि आपके खास इस्तेमाल के उदाहरण के लिए असल में क्या काम करता है.
आगे क्या करना है: अपने कौशल को बढ़ाना
और जानने के लिए तैयार हैं? ये संसाधन देखें:
- Android XR के लिए Unity की परफ़ॉर्मेंस के बारे में गाइड - यहां बताई गई सभी सुविधाओं को लागू करने के लिए, चरण-दर-चरण निर्देश.
- Unity और Android XR का इस्तेमाल शुरू करना - अपना डेवलपमेंट एनवायरमेंट सेट अप करें और बनाना शुरू करें.
- Android XR के लिए डेवलपर दस्तावेज़ - Android XR की सभी सुविधाओं के लिए पूरी गाइड
पढ़ना जारी रखें
-
प्रॉडक्ट से जुड़ी खबरें
हमें यह बताते हुए खुशी हो रही है कि Android XR के लिए, Unreal Engine और Godot के आधिकारिक तौर पर काम करने की सुविधा उपलब्ध हो गई है. हम नए टूल भी लॉन्च कर रहे हैं. इन्हें आपकी प्रॉडक्टिविटी बढ़ाने और XR की नई सुविधाएं उपलब्ध कराने के लिए डिज़ाइन किया गया है: Android XR Engine Hub और Android XR Interaction Framework.
Luke Hopkins, Ryan Bartley • चार मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
हर साल, Google I/O में अलग-अलग इकोसिस्टम और प्रॉडक्ट के लिए नई घोषणाएं और संसाधन उपलब्ध कराए जाते हैं. इनमें Android डेवलपमेंट भी शामिल है. डेवलपमेंट, एआई और एजेंट की मदद से काम करने वाले टूल की ओर बढ़ रहा है. इसलिए, हमने अपनी पेशकशों को बढ़ाया है, ताकि Android के लिए किसी भी तरह के ऐप्लिकेशन बनाने में आपकी मदद की जा सके.
Simona Milanovic • दो मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
Google I/O ‘26 में, हमने दिखाया कि Android इकोसिस्टम में हुए नए बदलावों की मदद से, अपने ऐप्लिकेशन की क्वालिटी को कैसे बेहतर बनाया जा सकता है. साथ ही, डेवलपमेंट की प्रोसेस को कैसे बेहतर बनाया जा सकता है.
Ataul Munim • तीन मिनट में पढ़ें
अप-टू-डेट रहें
Android डेवलपमेंट से जुड़ी नई जानकारी हर हफ़्ते अपने इनबॉक्स में पाएं.