أخبار المنتجات

تحسين الأداء على Android XR باستخدام Unity

قراءة لمدة 6 دقائق
عرض الملف الشخصي لـ "لوك هوبكينز"
Luke Hopkins مهندس علاقات المطوّرين، Android

سماعة الرأس Samsung Galaxy XR متوفّرة الآن وتعمل بنظام التشغيل Android XR. هذه المشاركة في المدونة جزء من أسبوع Android XR Spotlight الذي نوفّر فيه مراجع، مثل مشاركات في المدونة وفيديوهات ونماذج من الرموز البرمجية وغير ذلك، وكلها مصمّمة لمساعدتك في التعلّم والإنشاء وإعداد تطبيقاتك لنظام التشغيل Android XR.  

أطلقت Samsung هذا الأسبوع سماعة الرأس Galaxy XR التي تم إنشاؤها بالتعاون مع Google وQualcomm. هذا وقت مثير للمطوّرين، وأردنا مساعدتك في تحقيق أفضل أداء ممكن لتطبيقك الذي يستخدم الواقع المُمتد.

في حين أنّ الأداء الضعيف في الألعاب والتطبيقات على الأجهزة التي لا تستخدم الواقع المُمتد قد يكون محبطًا للمستخدم، فإنّ الأداء في عالم الواقع المُمتد ليس اختياريًا فحسب، بل هو أساسي لنجاح تطبيقك. إذا لم تحقّق عدد اللقطات في الثانية المستهدَف في الواقع المُمتد، قد يؤدي ذلك إلى مشاكل أكثر خطورة بكثير، مثل دوار الحركة. 

في هذا الدليل، سنشرح لك تحسينات الأداء الأساسية التي عليك فهمها لتطوير التطبيقات على Android XR. ستتعرّف على الميزات التي تحقّق أكبر تحسينات في الأداء، ومتى يجب استخدامها، وكيفية عملها معًا لمساعدتك في تحقيق عدد اللقطات في الثانية المستهدَفة.

إليك ما نسعى إلى تحقيقه: 

  • الحد الأدنى: 72 لقطة في الثانية (جزء من إرشادات جودة اللعب)
  • اختياري: 90 لقطة في الثانية مع ميزانية قدرها 11 ملي ثانية لكل لقطة

لمزيد من المعلومات حول أهمية الحفاظ على معدّل لقطات مرتفع كهذا، اطّلِع على إرشادات الأداء.   

ميزات الأداء الخاصة بالواقع المُمتد

سنبدأ بتغطية ميزتَين خاصتَين بالأداء في الواقع المُمتد، وهما العرض المُركَّز على منطقة الرؤية وجمع العيّنات الجزئية في Vulkan. 

العرض المُركَّز على منطقة الرؤية

العرض المُركَّز على منطقة الرؤية هو تحسين يتضمّن وضعَين. الأول هو الوضع الثابت الذي يعرض مركز الشاشة بدقة أعلى، ويقلّل الدقة تدريجيًا كلما نظرت إلى الخارج.

والثاني هو وضع تتبُّع العين الذي يعرض بالتفصيل المنطقة التي تنظر إليها تحديدًا، مع تقليل الجودة المعروضة في رؤيتك المحيطية. ويحاكي هذا الوضع بشكل أساسي طريقة عمل الرؤية البشرية، حيث لا نرى التفاصيل الدقيقة إلا في المنطقة المحدّدة التي نركّز عليها.

يقلّل العرض المُركَّز على منطقة الرؤية بشكل كبير من حِمل وحدة معالجة الرسومات بدون التأثير سلبًا على جودة الصورة التي يراها المستخدم. تكمن ميزة العرض المُركَّز على منطقة الرؤية في أنّ المستخدمين لن يلاحظوا انخفاض الجودة في رؤيتهم المحيطية، ولكنّ وحدة معالجة الرسومات ستلاحظ بالتأكيد الأداء المحسّن.

لنفترض أنّك تنشئ تجربة متحف تتضمّن قطعًا أثرية ثلاثية الأبعاد معقدة. بدون العرض المُركَّز على منطقة الرؤية، ستواجه صعوبة في الحفاظ على معدّل 90 لقطة في الثانية أثناء محاولة عرض كل شيء في "مجال الرؤية". باستخدام العرض المُركَّز على منطقة الرؤية، يمكنك الحفاظ على هذه التفاصيل عالية الدقة في المكان الذي ينظر إليه المستخدم، ولكن يتم عرض البيئة الخلفية بجودة أقل. لن يلاحظ المستخدمون الفرق، ولكن سيكون لديك مساحة إضافية لإضافة المزيد من التفاصيل إلى المشهد.

جمع العيّنات الجزئية في Vulkan

ميزة "جمع العيّنات الجزئية في Vulkan" هي أفضل صديق للعرض المُركَّز على منطقة الرؤية. في حين أنّ العرض المُركَّز على منطقة الرؤية يحدّد ما يجب عرضه بمستويات جودة مختلفة، تتعامل ميزة "جمع العيّنات الجزئية في Vulkan" مع كيفية عرض مستويات الجودة المختلفة بكفاءة باستخدام "خرائط كثافة الأجزاء".

عند دمج ميزة "جمع العيّنات الجزئية في Vulkan" مع العرض المُركَّز على منطقة الرؤية، ستحصل على 0.5 ملي ثانية إضافية من الأداء. تساعد هذه الميزة أيضًا في إزالة الحواف الخشنة في رؤيتك المحيطية، ما يجعل الصورة تبدو أكثر وضوحًا بشكل عام.

على سبيل المثال، في لعبة محاكاة الطيران حيث يركّز المستخدمون على الأدوات وعناصر التحكّم، يعني الجمع بين العرض المُركَّز على منطقة الرؤية وجمع العيّنات الجزئية في Vulkan أنّ عناصر التحكّم التفصيلية يتم عرضها بوضوح، ولكنّ هيكل قمرة القيادة المحيطية يستخدم عددًا أقل من الموارد. قد لا تبدو 0.5 ملي ثانية إضافية كثيرة، ولكنّها الفرق بين توفّر مساحة لعنصر تفاعلي إضافي أو عدم توفّرها، أو بين عدم فقدان اللقطات أثناء اللحظات الشديدة أو فقدانها.

ميزات وحدة معالجة الرسومات للمشاهد المعقدة

بالإضافة إلى العرض المُركَّز على منطقة الرؤية وجمع العيّنات الجزئية في Vulkan، هناك بعض ميزات وحدة معالجة الرسومات التي تقلّل من الإجهاد غير الضروري من خلال إنشاء مثيلات ذكية وإزالة العناصر غير المرئية. تكون هذه الميزات فعّالة بشكل خاص للمشاهد المعقدة التي تتضمّن أشكالاً هندسية متكررة أو حجبًا كبيرًا.

GPU Resident Drawer

يستخدم GPU Resident Drawer تلقائيًا إنشاء مثيلات وحدة معالجة الرسومات لتقليل طلبات العرض وتوفير وقت المعالجة لوحدة المعالجة المركزية. بدلاً من أن تخبر وحدة المعالجة المركزية وحدة معالجة الرسومات عن كل عنصر على حدة، تجمع وحدة معالجة الرسومات العناصر المتشابهة معًا.

تكون هذه الميزة أكثر فعالية للمشاهد الكبيرة التي تتضمّن أشكالاً شبكية متكررة، مثل الأشجار في الغابة أو الأثاث في مبنى مكاتب أو الدعائم المنتشرة في جميع أنحاء البيئة.

تخيّل مشهدًا لغابة يتضمّن 200 شجرة تستخدم الشكل الشبكي الأساسي نفسه. بدون GPU Resident Drawer، سيكون لديك 200 طلب عرض تستهلك وحدة معالجة الرسومات، وبالتالي توفّر وقت المعالجة لوحدة المعالجة المركزية. عند تفعيل هذه الميزة، ستنشئ وحدة معالجة الرسومات مثيلات ذكية لهذه الأشجار، ما من المفترض أن يقلّل عدد طلبات العرض إلى 5 أو 10 فقط. هذا توفير كبير لوحدة معالجة الرسومات يمكنك استثماره بعد ذلك في منطق اللعب أو حسابات الفيزياء.

GPU Occlusion Culling

تستخدم ميزة GPU Occlusion Culling وحدة معالجة الرسومات بدلاً من وحدة المعالجة المركزية لتحديد العناصر المخفية وتخطّي عرضها. ترصد هذه الميزة تلقائيًا ما يتم حجبه (إخفاؤه) خلف عناصر أخرى، لذا لن تستهلك وحدة معالجة الرسومات في عرض أشياء لا يمكن للمستخدم رؤيتها.

تكون هذه الميزة فعّالة بشكل خاص في المساحات الداخلية التي تتضمّن غرفًا متعددة أو بيئات كثيفة أو مشاهد معمارية حيث تحجب الجدران والأرضيات والعناصر الرؤية بشكل طبيعي.

على سبيل المثال، لنفترض أنّك تنشئ تجربة منزل متعدد الغرف. عندما يكون المستخدم في غرفة المعيشة، لماذا تستهلك دورات وحدة معالجة الرسومات في عرض المطبخ المفصّل بالكامل والمخفي تمامًا خلف جدار؟ تتخطّى ميزة GPU Occlusion Culling تلقائيًا عرض هذه العناصر المخفية، ما يمنحك ميزانية قائمة على الأداء أكبر لما هو مرئي فعليًا.

مراقبة أدائك

لا يكفي مجرد استخدام هذه الميزات. عليك أيضًا قياس التحسينات التي تجريها، حتى تتمكّن من تحديد تأثيرها والتحقّق من أنّ التغييرات التي تجريها تعمل فعلاً.

‫Performance Metrics API

توفر Performance Metrics API مراقبة في الوقت الفعلي لاستخدام الذاكرة وأداء وحدة المعالجة المركزية وأداء وحدة معالجة الرسومات في تطبيقاتك. تمنحك هذه الواجهة بيانات شاملة من طبقتَي Compositor وRuntime، ما يتيح لك الاطّلاع على ما يحدث بالضبط في تطبيقك.

عليك تحديد خط أساس قبل إجراء التغييرات، وتطبيق تحسين، وقياس التأثير، ثم تكرار العملية. يعني هذا النهج المستند إلى البيانات أنّك تعرف أنّك تحسّن الأداء فعليًا بدلاً من التخمين.

قبل تفعيل العرض المُركَّز على منطقة الرؤية، قد يكون وقت عرض اللقطة لوحدة معالجة الرسومات 13 ملي ثانية، وهو ما يزيد عن ميزانيتك البالغة 11 ملي ثانية. فعِّل العرض المُركَّز على منطقة الرؤية، وقم بالقياس مرة أخرى، ونأمل أن ينخفض إلى 9 ملي ثانية. هذا يعني أنّك حصلت على 4 ملي ثانية من المساحة الإضافية لإضافة المزيد من التفاصيل إلى المشهد أو تحسين الجودة المرئية في مكان آخر أو ببساطة ضمان أداء أكثر سلاسة على نطاق أوسع من المحتوى.

بدون هذه المقاييس، ستجري التحسينات بدون معرفة التأثير. تخبرك واجهة برمجة التطبيقات Performance Metrics API بالحقيقة حول ما يساعد فعلاً في حالة الاستخدام المحدّدة.

برنامج تصحيح الأخطاء في الإطار

برنامج تصحيح الأخطاء في الإطار هو أداة مضمّنة في Unity لفهم كيفية عرض المشهد بالضبط، إطارًا بإطار. تعرض لك هذه الأداة تسلسل طلبات العرض وتتيح لك تتبُّعها للتحقّق من أنّ التحسينات التي تجريها تعمل بشكل صحيح.

هل تريد التأكّد من أنّ SRP Batcher يعمل؟ ابحث عن الإدخالات "RenderLoopNewBatcher" في برنامج تصحيح الأخطاء في الإطار. هل تريد التحقّق مما إذا كان GPU Resident Drawer يجمع العناصر بشكل صحيح؟ ابحث عن الإدخالات "Hybrid Batch Group". تساعدك عمليات التأكيد المرئية هذه في فهم ما إذا كانت إعدادات التحسين تؤثر فعلاً.

تتبَّع أول 50 طلب عرض في المشهد. إذا رأيت عناصر مشابهة يتم عرضها بشكل فردي بدلاً من تجميعها، فهذا يشير إلى أنّ إنشاء المثيلات أو التجميع لا يعمل بشكل صحيح. يجعل برنامج تصحيح الأخطاء في الإطار هذه المشاكل مرئية على الفور حتى تتمكّن من معالجتها.

تحسينات إضافية

بالإضافة إلى التحسينات التي تناولناها أعلاه، يتناول دليل الأداء الكامل أيضًا بعض التحسينات الإضافية الأخرى. في ما يلي ملخص سريع:

  • إعدادات URP: عليك إيقاف النطاق العالي الديناميكية والمعالجة اللاحقة للواقع المُمتد على الأجهزة الجوّالة. تقدّم هذه الميزات تأثيرًا مرئيًا ضئيلاً مقارنةً بتكلفة أدائها على الأجهزة الجوّالة، لذا ستحصل على تحسينات قابلة للقياس في الأداء مع اختلافات مرئية بالكاد يمكن ملاحظتها.
  • ‫SRP Batcher: يقلّل من الحمل الزائد لوحدة المعالجة المركزية للمشاهد التي تتضمّن العديد من المواد التي تستخدم نوع التظليل نفسه. من خلال تقليل تغييرات حالة العرض بين طلبات العرض، يمكنك تقليل وقت وحدة المعالجة المركزية الذي يتم استخدامه في العرض بشكل كبير.
  • معدّل تحديث الشاشة: يمكنك تعديل المعدّل ديناميكيًا بين 72 لقطة في الثانية و90 لقطة في الثانية استنادًا إلى مدى تعقيد المشهد. يمكنك خفض عدد اللقطات في الثانية أثناء التسلسلات المعقدة للحفاظ على الثبات، ثم زيادته أثناء اللحظات الأبسط للتفاعل بسلاسة فائقة.
  • العمق/النسيج غير الشفاف: عليك إيقاف هذه الميزات ما لم تكن مطلوبة تحديدًا لتأثيرات التظليل. تؤدي هذه الميزات إلى عمليات نسخ غير ضرورية لوحدة معالجة الرسومات تستهلك الأداء بدون تقديم أي فائدة لمعظم التطبيقات.
  • مقياس العرض في URP: يتيح لك هذا الإعداد العرض بدقة منخفضة لتحسين الأداء أو زيادة دقة العرض لتحسين الجودة المرئية.

للحصول على تعليمات مفصّلة حول هذه التحسينات والمزيد، اطّلِع على دليل أداء Unity الكامل لنظام التشغيل Android XR.

الخاتمة

أداء تطبيقك الذي يستخدم الواقع المُمتد ليس مجرد خيار فني. إنّه الفرق بين تجربة مريحة وجذابة وتجربة تجعل المستخدمين يشعرون بالمرض أو عدم الارتياح. التحسينات التي تناولناها هي مجموعة الأدوات التي تساعدك في تحقيق معدّلات اللقطات المستهدَفة المهمة على أحدث أجهزة الواقع المُمتد.

إليك خارطة الطريق:

  1. ابدأ بالعرض المُركَّز على منطقة الرؤية وجمع العيّنات الجزئية في Vulkan. تحقّق هاتان الميزتان الخاصتان بالواقع المُمتد توفيرات فورية وملحوظة لوحدة معالجة الرسومات.
  2. أضِف GPU Resident Drawer وOcclusion Culling إذا كانت لديك مشاهد معقدة تتضمّن أشكالاً هندسية متكررة أو مساحات داخلية.
  3. راقِب كل شيء باستخدام واجهة برمجة التطبيقات Performance Metrics API للتأكّد من أنّ التغييرات التي تجريها تساعد فعلاً.
  4. استكشِف تحسينات URP الإضافية للحصول على مساحة إضافية للأداء

من الضروري القياس باستمرار وتكرار العملية. لن يستفيد كل مشروع من كل تحسين بالتساوي، لذا استخدِم واجهة برمجة التطبيقات Performance Metrics API للحصول على فكرة واضحة عن ما يساعد فعلاً في حالة الاستخدام المحدّدة.

الخطوة التالية: توسيع نطاق مهاراتك

هل أنت مستعد للاطّلاع على مزيد من التفاصيل؟ يمكنك الاطّلاع على المراجع التالية:

  • دليل أداء Unity لنظام التشغيل Android XR : تعليمات مفصّلة خطوة بخطوة لتنفيذ جميع الميزات التي تم تناولها هنا.
  • بدء استخدام Unity وAndroid XR - يمكنك إعداد بيئة التطوير و البدء في الإنشاء.
  • مستندات المطوّرين لنظام التشغيل Android XR : أدلة شاملة لجميع ميزات Android XR الخاصة
Written by:
مواصلة القراءة