نقدّم لك 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 تلقائيًا ميزة "إنشاء نُسخ من وحدة معالجة الرسومات" لتقليل طلبات الرسم وتوفير وقت معالجة وحدة المعالجة المركزية. لذا، بدلاً من أن تخبر وحدة المعالجة المركزية وحدة معالجة الرسومات عن كل عنصر على حدة، تقوم وحدة معالجة الرسومات بتجميع العناصر المتشابهة معًا.
تكون هذه الميزة أكثر فعالية في المشاهد الكبيرة التي تحتوي على شبكات متكررة، مثل الأشجار في الغابة أو الأثاث في مبنى المكاتب أو العناصر المتناثرة في البيئة.
تخيَّل مشهدًا لغابة تضم 200 شجرة تستخدم الشبكة الأساسية نفسها. بدون ميزة GPU Resident Drawer، سيكون لديك 200 طلب رسم تستهلك وحدة معالجة الرسومات، وبالتالي تفرغ وحدة المعالجة المركزية. عند تفعيل هذه الميزة، ستنشئ وحدة معالجة الرسومات هذه الأشجار بذكاء، ما يقلّل عدد طلبات الرسم إلى 5-10 طلبات فقط. وهذا يوفّر قدرًا هائلاً من موارد وحدة معالجة الرسومات التي يمكنك استثمارها في منطق اللعب أو العمليات الحسابية الفيزيائية.
استبعاد الأجزاء المحجوبة في وحدة معالجة الرسومات
تستخدم ميزة GPU Occlusion Culling وحدة معالجة الرسومات بدلاً من وحدة المعالجة المركزية لتحديد العناصر المخفية وتخطّي عرضها. فهي ترصد تلقائيًا ما يتم حجبه (إخفاؤه) خلف عناصر أخرى، وبذلك لا يتم إهدار موارد وحدة معالجة الرسومات على عناصر لا يمكن للمستخدم رؤيتها.
تُعدّ هذه الميزة فعّالة بشكل خاص في المساحات الداخلية التي تحتوي على غرف متعددة أو بيئات كثيفة أو مشاهد معمارية حيث تحجب الجدران والأرضيات والأجسام الرؤية بشكل طبيعي.
على سبيل المثال، لنفترض أنّك بصدد إنشاء تجربة منزل متعدّد الغرف. عندما يكون المستخدم في الشاشات الكبيرة، لماذا يتم إهدار دورات وحدة معالجة الرسومات في عرض المطبخ المفصّل بالكامل والمخفي تمامًا خلف جدار؟ تتخطّى ميزة "استبعاد الأجسام المحجوبة" في وحدة معالجة الرسومات تلقائيًا عرض هذه الأجسام المخفية، ما يمنحك ميزانية أداء أكبر لما يظهر فعليًا.
مراقبة الأداء
لا يكفي استخدام هذه الميزات فقط. عليك أيضًا قياس تحسيناتك، حتى تتمكّن من تحديد تأثيرها والتحقّق من أنّ التغييرات التي أجريتها فعّالة.
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 والمعالجة اللاحقة لتطبيقات XR على الأجهزة الجوّالة. توفّر هذه الميزات الحد الأدنى من التأثير المرئي مقارنةً بتكلفة أدائها على الأجهزة الجوّالة، لذا ستحصل على تحسينات في الأداء يمكن قياسها مع اختلافات مرئية بالكاد يمكن ملاحظتها.
- SRP Batcher: يقلّل من عبء وحدة المعالجة المركزية (CPU) في المشاهد التي تحتوي على العديد من المواد التي تستخدم صيغة التظليل نفسها. من خلال تقليل تغييرات حالة العرض بين طلبات الرسم، يمكنك تقليل وقت وحدة المعالجة المركزية المستغرَق في العرض بشكل كبير.
- معدّل تحديث الشاشة: يتم ضبطه ديناميكيًا بين 72 و90 لقطة في الثانية استنادًا إلى مدى تعقيد المشهد. يمكنك خفض عدد اللقطات في الثانية أثناء التسلسلات المعقدة للحفاظ على الثبات، ثم زيادته أثناء اللحظات الأبسط للحصول على تفاعل سلس للغاية.
- العمق/النقوش غير الشفافة: يجب إيقاف هذه الميزات ما لم تكن مطلوبة تحديدًا لتأثيرات التظليل. فهي تتسبب في عمليات نسخ غير ضرورية لوحدة معالجة الرسومات، ما يؤدي إلى إهدار الأداء بدون تقديم أي فائدة لمعظم التطبيقات.
- مقياس العرض في مسار العرض العام (URP): يتيح لك هذا الإعداد العرض بدقة منخفضة لتحسين الأداء أو بدقة أعلى لتحسين جودة الصورة.
للحصول على تعليمات مفصّلة حول هذه التحسينات وغيرها، يُرجى الاطّلاع على دليل تحسين الأداء الكامل في Unity لنظام التشغيل Android XR.
الخاتمة
أداء تطبيق الواقع الممتد ليس مجرد مربّع اختيار فني. وهذا هو الفرق بين تجربة مريحة وجذابة وتجربة تجعل المستخدمين يشعرون بالمرض أو عدم الارتياح. تُعدّ التحسينات التي تناولناها بمثابة مجموعة أدوات لتحقيق أهداف معدّل عرض الإطارات المهمة على أحدث أجهزة XR.
إليك خارطة الطريق:
- ابدأ باستخدام ميزتَي "العرض المحدود" (Foveated Rendering) و"جمع العيّنات الجزئية في Vulkan" (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" و"إطار عمل التفاعل في Android XR".
Luke Hopkins, Ryan Bartley • مدّة القراءة: 4 دقائق -
أخبار المنتجاتلن تتمكّن التطبيقات التي تستهدف إصدار Android القادم من تعديل جهات الاتصال مباشرةً باستخدام إذن WRITE_CONTACTS.
Roxanna Aliabadi Walker • مدّة القراءة: 6 دقائق -
أخبار المنتجاتمع تسارع وتيرة تطوير الذكاء الاصطناعي الوكيل، تصل هندسة Android إلى آفاق جديدة ومثيرة: الانتقال من الإكمال التلقائي للرموز البرمجية إلى الوكلاء الذين ينفّذون المهام من البداية إلى النهاية تحت توجيهك. لديك حرية الاختيار والمرونة الكاملة في النماذج والوكلاء الذين تستخدمهم.
Jason Buchel • مدّة القراءة: 3 دقائق
يمكنك تلقّي آخر الإحصاءات حول تطوير تطبيقات Android في بريدك الوارد أسبوعيًا.