प्रॉडक्ट से जुड़ी खबरें
Unity की मदद से Android XR के लिए परफ़ॉर्मेंस ऑप्टिमाइज़ करना
6 मिनट में पढ़ें
Samsung Galaxy XR लॉन्च हो गया है. यह Android XR पर काम करता है! यह ब्लॉग पोस्ट, Android XR Spotlight Week का हिस्सा है. इसमें हम संसाधन उपलब्ध कराते हैं. जैसे, ब्लॉग पोस्ट, वीडियो, सैंपल कोड वगैरह. इन सभी को इस तरह डिज़ाइन किया गया है कि इनकी मदद से, Android XR के लिए ऐप्लिकेशन बनाना और उन्हें तैयार करना सीखा जा सके.
इस हफ़्ते, Samsung ने Galaxy XR लॉन्च किया है. इसे Google और Qualcomm के साथ मिलकर बनाया गया है. यह डेवलपर के लिए एक रोमांचक समय है. हम चाहते थे कि आपको अपने XR ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाने में मदद मिले.
सामान्य डिवाइसों पर गेम और ऐप्लिकेशन की परफ़ॉर्मेंस खराब होने से, उपयोगकर्ताओं को परेशानी हो सकती है. हालांकि, 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 • 4 मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
Android 17 के रिलीज़ होने के साथ ही, हम अडैप्टिव फ़र्स्ट डेवलपमेंट स्टैंडर्ड पर ट्रांज़िशन कर रहे हैं. आपके उपयोगकर्ता अब सिर्फ़ एक तरह के डिवाइस पर निर्भर नहीं रहते. वे दिन भर फ़ोन, फ़ोल्ड किए जा सकने वाले डिवाइस, टैबलेट, लैपटॉप, ऑटोमोटिव डिसप्ले, और इमर्सिव XR एनवायरमेंट के बीच ट्रांज़िशन करते हैं.
Fahd Imtiaz • 4 मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
हमें Google TV की उन सुविधाओं और डेवलपर टूल के बारे में बताते हुए खुशी हो रही है जिन्हें आपके कॉन्टेंट की खोज को बढ़ाने और आपके ऐप्लिकेशन को टीवी के लिए आने वाले समय के अनुभवों के लिए तैयार करने के लिए डिज़ाइन किया गया है.
Paul Lammertsma • 4 मिनट में पढ़ें
अप-टू-डेट रहें
Android डेवलपमेंट से जुड़ी अहम जानकारी हर हफ़्ते अपने इनबॉक्स में पाएं.