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

تحسين الأداء في 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 كيفية عرض مستويات الجودة المختلفة بكفاءة باستخدام "خرائط كثافة الأجزاء" (Fragment Density Maps).

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

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

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

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

GPU Resident Drawer

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

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

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

استبعاد الأجزاء المحجوبة في وحدة معالجة الرسومات

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

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

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

مراقبة الأداء

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

Performance Metrics API

توفّر واجهة برمجة التطبيقات Performance Metrics API مراقبة في الوقت الفعلي لاستخدام الذاكرة في تطبيقاتك وأداء وحدة المعالجة المركزية (CPU) وأداء وحدة معالجة الرسومات (GPU). وتوفّر لك بيانات شاملة من طبقات المُركِّب ووقت التشغيل، ما يتيح لك معرفة ما يحدث في تطبيقك بالضبط.

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

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

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

Frame Debugger

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

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

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

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

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

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

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

الخاتمة

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

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

  1. ابدأ باستخدام ميزتَي "العرض المرتكز على العين" (Foveated Rendering) و"جمع العيّنات الجزئية في Vulkan"‏ (Vulkan Subsampling). توفّر هذه الميزات المخصّصة للواقع الممتد توفيرًا فوريًا وملحوظًا في وحدة معالجة الرسومات.
  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
من كتابة:
متابعة القراءة