שיפור קצב הפריימים, הפחתת העומס על ה-GPU והפחתת זמן האחזור של העיבוד באמצעות ההגדרות של Android XR Extensions

‫Unity מספקת כמה תכונות שקשורות לביצועים וספציפיות ל-Android XR, ונדרש חבילת Android XR Extensions כדי להשתמש בהן. כדי לשפר את קצב הפריימים ולהפחית את העומס על ה-GPU, אפשר להפעיל את התכונות האלה באמצעות spacewarp ודגימת משנה של Vulkan. כדי להפחית את זמן האחזור של העיבוד המעקב באמצעות late latching.

דרישות מוקדמות

לפני שממשיכים לפי ההנחיות האלה, חשוב לוודא שביצעתם את הפעולות הבאות:

הפעלת תכונת SpaceWarp

URP Application Spacewarp הוא אופטימיזציה של OpenXR שעוזרת לשמור על קצב פריימים גבוה על ידי סינתזה של כל פריימים אחרים. הטכניקה הזו משתמשת בווקטורים של תנועה ובנתוני עומק מפריימים קודמים כדי לחזות לאן הפיקסלים צריכים לנוע, וכך מצמצמת את כוח החישוב ואת השימוש באנרגיה.

יתרונות

  • מפחית את עומס העבודה של רינדור GPU על ידי סינתזה של פריימים חלופיים.
  • התכונה מפחיתה באופן משמעותי את כוח החישוב ואת צריכת האנרגיה.
  • משתמש בהקרנה מחדש כדי לצמצם את זמן האחזור בין תנועות המשתמש לבין עדכוני התצוגה.

הפעלת התכונה

  1. בתפריט הראשי של Unity, לוחצים על Edit > Project Settings (עריכה > הגדרות הפרויקט).
  2. מרחיבים את הקטע XR Plug-in Management.
  3. בוחרים את הכרטיסייה שמתאימה למכשיר ה-XR הנוכחי.
  4. עוברים לקטע OpenXR Feature Groups (קבוצות תכונות של OpenXR).
  5. בקטע All Features (כל התכונות), מפעילים את האפשרות Application SpaceWarp (התכונה SpaceWarp באפליקציה).

    הגדרות Unity ל-spacewarp

הפעלת דגימת משנה של Vulkan

התכונה 'דגימת משנה ב-Vulkan' מאפשרת ליצור תמונות ולדגום אותן בצפיפויות משתנות באמצעות מפות צפיפות של פרגמנטים. התכונה הזו של Vulkan מאפשרת לעבד אזורים שונים במסך ולהעביר אותם לזיכרון ברזולוציות שונות. התכונה שימושית במיוחד לעיבוד פוביאלי, שבו אפשר להשתמש ברזולוציה נמוכה יותר באזורים היקפיים.

יתרונות

  • השיפור משתנה כשמשלבים את התכונה עם רינדור פוביאלי, בהתאם לגורם הצורה.
  • הפחתת ה-aliasing באזורים היקפיים באמצעות סינון דו-ליניארי.
  • ההגדרה הזו מאפשרת עיבוד יעיל של קצב פריימים משתנה באזורים שונים במסך.

הפעלת התכונה

  1. בתפריט הראשי של Unity, לוחצים על Edit > Project Settings (עריכה > הגדרות הפרויקט).
  2. מרחיבים את הקטע XR Plug-in Management (ניהול פלאגינים של XR) ואז לוחצים על OpenXR.
  3. לוחצים על סמל גלגל השיניים לצד Android XR (Extensions): Session Management (Android XR (תוספים): ניהול סשנים).
  4. מפעילים את האפשרות Subsampling (דגימת משנה).

    הגדרות Unity לדגימת משנה של Vulkan

הפעלת הצמדה מאוחרת

Late latching היא טכניקה שמצמצמת את העיכוב בין התנועה הפיזית של המשתמש לבין השינוי החזותי שמתקבל בתצוגה. היא מאפשרת לעדכן את תנוחת הראש בשלב מאוחר בצינור ליצירת פריים, וכך לשפר את הנוחות ואת קצב הפריימים הנתפס של אפליקציות ה-XR. התכונה הזו מצליחה לעשות את זה על ידי הפחתת זמן האחזור של הקלט בכמעט פרק זמן של פריים שלם.

יתרונות

  • מפחית באופן משמעותי את זמן האחזור של Motion-to-Photon ‏ (MTP).
  • משפר את הנוחות של המשתמשים ומפחית את הסיכון לבחילה.
  • שיפור היציבות והדיוק.

הפעלת התכונה

כדי להפעיל את התכונה 'הצגת מודעות מאוחרת', מפעילים אותה בזמן הריצה של האפליקציה:

private XRDisplaySubsystem xrDisplay;

private XRDisplaySubsystem.LateLatchNode lateLatchNode = XRDisplaySubsystem.LateLatchNode.Head;

void Start()
{
    List<XRDisplaySubsystem> xrDisplaySubsystems = new();

    SubsystemManager.GetSubsystems(xrDisplaySubsystems);

    if (xrDisplaySubsystems.Count >= 1)
    {
        xrDisplay = xrDisplaySubsystems[0];
    }
}

void Update()
{
    if (xrDisplay != null)
    {
        transform.position += new Vector3(Mathf.Epsilon, 0, 0);

        Quaternion rot = transform.rotation;

        rot.x += Mathf.Epsilon;

        transform.rotation = rot;

        xrDisplay.MarkTransformLateLatched(transform, lateLatchNode);
    }
}