سماعة الرأس Samsung Galaxy XR متاحة الآن، وهي تعمل بنظام التشغيل Android XR. منشور المدونة هذا هو جزء من أسبوع Android XR Spotlight، حيث نقدّم موارد، مثل مشاركات المدونة والفيديوهات ونماذج الرموز البرمجية وغيرها، وكلها مصمّمة لمساعدتك في التعلّم والإنشاء وإعداد تطبيقاتك لأجهزة Android XR.
أطلقت Samsung هذا الأسبوع سماعة الرأس Galaxy XR التي تم تصميمها بالتعاون مع Google وQualcomm. هذه فترة رائعة للمطوّرين، وأردنا مساعدتك في تحقيق أفضل أداء ممكن لتطبيق الواقع الممتد.
في حين أنّ الأداء الضعيف في الألعاب والتطبيقات على الأجهزة غير المتوافقة مع تقنيات الواقع الممتد قد يكون محبطًا للمستخدم، فإنّ الأداء في عالم الواقع الممتد ليس مجرد خيار، بل هو أساس نجاح تطبيقك. وإذا لم تحقّق معدّل اللقطات المستهدَف في الواقع الممتد، قد يتسبب ذلك في مشاكل أكثر خطورة، مثل دوار الحركة.
في هذا الدليل، سنشرح لك عمليات تحسين الأداء الأساسية التي عليك معرفتها لتطوير تطبيقات Android XR. ستتعرّف على الميزات التي تحقّق أكبر تحسينات في الأداء، ومتى يجب استخدامها، وكيف تعمل معًا لمساعدتك في تحقيق معدّلات اللقطات المستهدَفة.
في ما يلي ما نسعى إلى تحقيقه:
- الحد الأدنى: 72 لقطة في الثانية (جزء من إرشادات جودة التشغيل)
- اختياري: 90 لقطة في الثانية مع 11 ملي ثانية لكل لقطة
لمزيد من المعلومات حول أهمية الحفاظ على معدّل لقطات مرتفع، اطّلِع على إرشادات الأداء.
ميزات الأداء الخاصة بالواقع المُمتد
سنبدأ بتغطية ميزتَين متعلّقتَين بالأداء في تجارب الواقع الممتد، وهما "التقديم البؤري" و"أخذ العينات الفرعية في Vulkan".
Foveated Rendering
الرسم البؤري هو تحسين يتضمّن وضعَين. الأول هو الوضع الثابت الذي يعرض مركز الشاشة بدقة أعلى، ويقلل الدقة تدريجيًا كلما نظرت إلى الخارج.
أما الوضع الثاني فهو وضع تتبُّع حركة العين الذي يعرض تحديدًا المنطقة التي تنظر إليها بتفاصيل كاملة، مع تقليل الجودة المعروضة في الأجزاء المحيطة. وهي تحاكي بشكل أساسي طريقة عمل الرؤية البشرية، حيث لا نرى التفاصيل الدقيقة إلا في المنطقة المحددة التي نركّز عليها.
يقلّل العرض البؤري بشكل كبير من عبء العمل على وحدة معالجة الرسومات بدون التأثير في جودة الصورة التي يراها المستخدم. تكمن ميزة العرض البؤري في أنّ المستخدمين لن يلاحظوا انخفاض الجودة في مجال رؤيتهم المحيطي، ولكن وحدة معالجة الرسومات ستلاحظ بالتأكيد تحسّن الأداء.
لنفترض أنّك تعمل على إنشاء تجربة في متحف تتضمّن قطعًا أثرية ثلاثية الأبعاد معقّدة. بدون تقنية "العرض البؤري"، ستواجه صعوبة في الحفاظ على معدل 90 لقطة في الثانية عند محاولة عرض كل شيء في "مجال الرؤية". باستخدام تقنية "العرض البؤري"، يمكنك الحفاظ على تفاصيل المجسمات العالية في المكان الذي ينظر إليه المستخدم، ولكن يتم عرض البيئة الخلفية بجودة أقل. لن يلاحظ المستخدمون الفرق، ولكن سيكون لديك مساحة لإضافة المزيد من التفاصيل إلى المشهد.
جمع العيّنات الجزئية في Vulkan
تُعدّ ميزة "أخذ العينات الفرعية في Vulkan" أفضل صديق لتقنية "التقديم البؤري". في حين تحدّد ميزة "العرض البؤري" ما يجب عرضه بمستويات جودة مختلفة، تتعامل ميزة "جمع العيّنات الجزئية" في Vulkan مع كيفية عرض مستويات الجودة المختلفة بكفاءة باستخدام "خرائط كثافة الأجزاء".
عند استخدامها مع تقنية "التركيز على جزء من الصورة"، تمنحك تقنية Vulkan Subsampling أداءً إضافيًا بمقدار 0.5 مللي ثانية. ويساعد أيضًا في تنعيم الحواف المتعرّجة في مجال رؤيتك المحيطي، ما يجعل الصورة تبدو أكثر وضوحًا بشكل عام.
على سبيل المثال، في لعبة محاكاة الطيران التي يركّز فيها المستخدمون على الأدوات وعناصر التحكّم، يعني الجمع بين العرض البؤري والتقليل من دقة العرض في Vulkan أنّ عناصر التحكّم التفصيلية يتم عرضها بوضوح، ولكن هيكل قمرة القيادة المحيطي يستخدم موارد أقل. قد لا يبدو هذا الوقت الإضافي البالغ 0.5 ملي ثانية كبيرًا، ولكنّه يتيح إضافة عنصر تفاعلي إضافي أو تجنُّب فقدان اللقطات خلال اللحظات المكثّفة.
ميزات وحدة معالجة الرسومات للمشاهد المعقّدة
بالإضافة إلى ميزتَي "العرض البؤري" و"جمع عيّنات جزئية في Vulkan"، هناك بعض ميزات وحدة معالجة الرسومات التي تقلّل من الضغط غير الضروري من خلال ميزتَي "النسخ الذكي" و"الاستبعاد". وتكون هذه التقنية فعّالة بشكل خاص في المشاهد المعقّدة التي تتضمّن أشكالاً هندسية متكرّرة أو حجبًا كبيرًا.
GPU Resident Drawer
يستخدم درج العناصر المقيمة في وحدة معالجة الرسومات تلقائيًا ميزة "النسخ المتطابق لوحدة معالجة الرسومات" لتقليل طلبات الرسم وتوفير وقت معالجة وحدة المعالجة المركزية. وبالتالي، بدلاً من أن يخبر وحدة المعالجة المركزية وحدة معالجة الرسومات بكل عنصر على حدة، تجمع وحدة معالجة الرسومات العناصر المتشابهة معًا.
تكون هذه الميزة أكثر فعالية في المشاهد الكبيرة التي تتضمّن أشكالاً مكرّرة، مثل الأشجار في الغابة أو الأثاث في مبنى المكاتب أو الدعائم المنتشرة في جميع أنحاء البيئة.
تخيَّل مشهدًا لغابة تضم 200 شجرة باستخدام شبكة أساسية واحدة. بدون GPU Resident Drawer، لديك 200 طلب رسم تستهلك وحدة معالجة الرسومات، وبالتالي تحرير وحدة المعالجة المركزية. عند تفعيل هذه الميزة، ستنشئ وحدة معالجة الرسومات (GPU) مثيلاً ذكيًا لهذه الأشجار، ما سيؤدي إلى تقليل عدد طلبات الرسم إلى 5 أو 10 طلبات فقط. هذا توفير كبير في وحدة معالجة الرسومات يمكنك استثماره بعد ذلك في منطق اللعب أو حسابات الفيزياء.
GPU Occlusion Culling
تستخدِم ميزة إزالة الانسداد في وحدة معالجة الرسومات وحدة معالجة الرسومات بدلاً من وحدة المعالجة المركزية لتحديد العناصر المخفية وتخطّي عرضها. ترصد هذه الميزة تلقائيًا العناصر المحجوبة (المخفية) خلف عناصر أخرى، وبالتالي لا تستهلك وحدة معالجة الرسومات في عرض عناصر لا يمكن للمستخدم رؤيتها.
تكون هذه الميزة فعّالة بشكل خاص في المساحات الداخلية التي تضم غرفًا متعددة أو البيئات الكثيفة أو المشاهد المعمارية التي تحجب فيها الجدران والأرضيات والأشياء المنظر بشكل طبيعي.
على سبيل المثال، لنفترض أنّك بصدد إنشاء تجربة منزلية تتضمّن عدّة غرف. عندما يكون المستخدم في غرفة المعيشة، لماذا نهدر دورات وحدة معالجة الرسومات في عرض المطبخ المفصّل بالكامل والمخفي تمامًا خلف جدار؟ تتخطى ميزة GPU Occlusion Culling تلقائيًا عرض العناصر المخفية، ما يمنحك ميزانية أداء أكبر للعناصر المرئية.
مراقبة أدائك
لا يكفي استخدام هذه الميزات فقط. عليك أيضًا قياس التحسينات التي تجريها، حتى تتمكّن من تحديد تأثيرها والتأكّد من أنّ التغييرات التي أجريتها تؤدي الغرض المطلوب.
Performance Metrics API
توفّر Performance Metrics API إمكانية مراقبة استخدام الذاكرة وأداء وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU) في تطبيقاتك في الوقت الفعلي. توفّر لك هذه الأداة بيانات شاملة من طبقات التركيب ووقت التشغيل، ما يتيح لك معرفة ما يحدث في تطبيقك بالضبط.
ضَع خطًا أساسيًا قبل إجراء التغييرات، وطبِّق عملية تحسين، وقيِّم التأثير، وكرِّر العملية. يعني هذا الأسلوب المستند إلى البيانات أنّك تعرف أنّك تحسّن الأداء فعلاً بدلاً من التخمين.
قبل تفعيل ميزة "العرض البؤري"، قد يكون وقت عرض اللقطة في وحدة معالجة الرسومات 13 ملي ثانية، وهو ما يتجاوز ميزانيتك البالغة 11 ملي ثانية. فعِّل ميزة "العرض البؤري"، ثم قِس الأداء مرة أخرى، ومن المفترض أن تلاحظ انخفاضًا إلى 9 ملي ثانية. هذا يعني أنّك حصلت على 4 ملي ثانية من المساحة الإضافية لتضيف المزيد من التفاصيل إلى المشهد أو تحسّن الجودة المرئية في أماكن أخرى أو تضمن ببساطة أداءً أكثر سلاسة في مجموعة أكبر من المحتوى.
وبدون هذه المقاييس، ستُجري التحسينات بدون معرفة النتائج. تخبرك Performance Metrics API بالحقيقة حول ما يساعد حالة الاستخدام المحدّدة.
أداة تصحيح الأخطاء في اللقطات
أداة تصحيح أخطاء الإطارات هي أداة مدمجة في Unity لفهم طريقة عرض المشهد بدقة، إطارًا بإطار. تعرض لك هذه الأداة تسلسل طلبات الرسم وتتيح لك تتبُّعها خطوة بخطوة للتحقّق من أنّ التحسينات تعمل بشكلٍ صحيح.
هل تريد التأكّد من أنّ أداة تجميع طلبات العرض الفردية تعمل؟ ابحث عن إدخالات RenderLoopNewBatcher في "أداة تصحيح أخطاء الإطارات". هل يتم تجميع GPU Resident Drawer بشكل صحيح؟ ابحث عن إدخالات "مجموعة الدفعات المختلطة". تساعدك هذه التأكيدات المرئية في معرفة ما إذا كانت إعدادات التحسين تؤتي ثمارها فعلاً.
تتبَّع أول 50 طلب رسم في المشهد. إذا رأيت عناصر مشابهة يتم رسمها بشكل فردي بدلاً من تجميعها، يعني ذلك أنّ عملية إنشاء النسخ أو التجميع لا تعمل بشكل صحيح. تتيح لك أداة Frame Debugger الاطّلاع على هذه المشاكل على الفور لتتمكّن من حلّها.
تحسينات إضافية
بالإضافة إلى التحسينات التي تناولناها أعلاه، يغطّي دليل الأداء الكامل أيضًا بعض التحسينات الإضافية الأخرى. في ما يلي ملخّص سريع:
- إعدادات URP: أوقِف HDR وPost Processing لأجهزة XR الجوّالة. تقدّم هذه الميزات تأثيرًا مرئيًا بسيطًا مقارنةً بتكلفة أدائها على أجهزة الجوّال، لذا ستحقّق تحسينات ملحوظة في الأداء مع اختلافات مرئية بالكاد يمكن إدراكها.
- أداة تجميع SRP: تقلّل من الحمل الزائد لوحدة المعالجة المركزية (CPU) في المشاهد التي تتضمّن العديد من المواد التي تستخدم صيغة التظليل نفسها. من خلال تقليل التغييرات في حالة العرض بين طلبات الرسم، يمكنك تقليل وقت وحدة المعالجة المركزية (CPU) المستخدَم في العرض بشكل كبير.
- معدّل إعادة تحميل الشاشة: يتم تعديل المعدّل ديناميكيًا بين 72 و90 لقطة في الثانية استنادًا إلى مدى تعقيد المشهد. خفض عدد اللقطات في الثانية أثناء المشاهد المعقّدة للحفاظ على الثبات، ثم زيادته أثناء المشاهد الأبسط لتوفير تفاعل سلس للغاية
- العمق/النقوش المعتمة: أوقِف هذه الإعدادات ما لم تكن مطلوبة تحديدًا لتأثيرات التظليل. وتتسبّب في عمليات نسخ غير ضرورية لوحدة معالجة الرسومات تؤدي إلى إهدار الأداء بدون تقديم أي فائدة لمعظم التطبيقات.
- مقياس العرض في مسار العرض الشامل (URP): يتيح لك هذا الإعداد العرض بدقة منخفضة لتحسين الأداء أو زيادة دقة العرض لتحسين جودة الصورة.
للحصول على تعليمات تفصيلية حول عمليات التحسين هذه وغيرها، يمكنك الاطّلاع على "دليل أداء Unity الكامل لنظام التشغيل Android XR".
الخاتمة
لا يقتصر أداء تطبيق الواقع الممتد على مجرد استيفاء المتطلبات الفنية. وهو الفرق بين تجربة مريحة وجذابة وتجربة تجعل المستخدمين يشعرون بالدوار أو عدم الارتياح. إنّ التحسينات التي تناولناها هي مجموعة الأدوات التي تساعدك في تحقيق معدّلات اللقطات المهمة هذه على أحدث أجهزة XR.
إليك خارطة الطريق:
- ابدأ باستخدام ميزتَي Foveated Rendering وVulkan Subsampling. توفّر هذه الميزات الخاصة بتجربة الواقع الممتد توفيرًا فوريًا وملحوظًا في وحدة معالجة الرسومات.
- أضِف GPU Resident Drawer وOcclusion Culling إذا كانت لديك مشاهد معقّدة تتضمّن أشكالاً هندسية متكرّرة أو مساحات داخلية.
- تتبُّع كل شيء باستخدام Performance Metrics API لضمان أنّ التغييرات تساعدك فعلاً
- استكشاف تحسينات إضافية في URP للحصول على هامش نمو إضافي في الأداء
من الضروري القياس بشكل مستمر والتكرار. لن يستفيد كل مشروع من كل عملية تحسين بشكل متساوٍ، لذا استخدِم Performance Metrics API للحصول على فكرة واضحة عمّا يساعد حالة الاستخدام المحدّدة.
الخطوة التالية: توسيع نطاق مهاراتك
هل أنت مستعد للاطّلاع على مزيد من التفاصيل؟ يمكنك الاطّلاع على المراجع التالية:
- دليل أداء Unity لنظام التشغيل Android XR: تعليمات مفصّلة خطوة بخطوة لتنفيذ جميع الميزات الموضّحة هنا
- بدء استخدام Unity وAndroid XR: يمكنك إعداد بيئة التطوير و بدء إنشاء التطبيقات.
- مستندات المطوّرين في Android XR: أدلة شاملة لجميع ميزات Android XR
-
أخبار المنتجاتيسرّنا الإعلان عن أنّنا أتحنا رسميًا استخدام Unreal Engine وGodot على Android XR. نطرح أيضًا أدوات جديدة مصمَّمة لتعزيز إنتاجيتك وإتاحة إمكانات جديدة في الواقع الممتد، وهي Android XR Engine Hub وAndroid XR Interaction Framework.
Luke Hopkins, Ryan Bartley • مدّة القراءة: 4 دقائق -
أخبار المنتجاتفي آذار (مارس) الماضي، أطلقنا Android Bench، وهي قائمة ترتيب للنماذج اللغوية الكبيرة في مهام تطوير تطبيقات Android في العالم الحقيقي. منذ ذلك الحين، حسّنّا معيار الأداء استنادًا إلى ملاحظاتكم، بما في ذلك تقييم نماذج المصادر المفتوحة وإضافة سمات التكلفة والكفاءة إلى قائمة الصدارة.
يستغرق الاطِّلاع على المقال 3 دقائق -
أخبار المنتجاتنحن ملتزمون في Google Play بتقديم أفضل تجربة ممكنة للمستخدمين، مع ضمان توفّر الأدوات والإمكانات اللازمة لنجاح المطوّرين.
Paul Feng • يستغرق الاطّلاع على المقال 3 دقائق
يمكنك تلقّي أحدث الإحصاءات حول تطوير تطبيقات Android في بريدك الوارد أسبوعيًا.