بهبود نرخ فریم، کاهش بار پردازنده گرافیکی و کاهش تأخیر رندر با استفاده از تنظیمات افزونه‌های اندروید XR

یونیتی برخی ویژگی‌های مرتبط با عملکرد را ارائه می‌دهد که مختص اندروید XR هستند و به بسته افزونه‌های اندروید XR نیاز دارند. این ویژگی‌ها را فعال کنید تا نرخ فریم بهبود یابد و بار پردازنده گرافیکی از طریق spacewarp و نمونه‌برداری فرعی Vulkan کاهش یابد و با استفاده از late latching، تأخیر رندر ردیابی شده کاهش یابد.

پیش‌نیازها

قبل از دنبال کردن این راهنما، مطمئن شوید که پیش‌نیازهای زیر را تأیید و تکمیل کرده‌اید:

فعال کردن spacewarp

URP Application Spacewarp یک بهینه‌سازی OpenXR است که با ترکیب هر فریم در میان، به حفظ نرخ فریم بالا کمک می‌کند. این تکنیک از بردارهای حرکت و داده‌های عمق از فریم‌های قبلی برای پیش‌بینی محل حرکت پیکسل‌ها استفاده می‌کند و قدرت محاسباتی و مصرف انرژی را کاهش می‌دهد.

مزایا

  • با ترکیب فریم‌های جایگزین، حجم کار رندرینگ GPU را کاهش می‌دهد.
  • به طور قابل توجهی توان محاسباتی و مصرف انرژی را کاهش می‌دهد.
  • از بازنمایی برای کاهش تأخیر بین حرکات کاربر و به‌روزرسانی‌های نمایش استفاده می‌کند.

فعال کردن این قابلیت

  1. از منوی اصلی یونیتی، روی ویرایش > تنظیمات پروژه کلیک کنید.
  2. بخش مدیریت افزونه XR را گسترش دهید.
  3. برگه‌ای را که مربوط به دستگاه XR فعلی شماست، انتخاب کنید.
  4. به بخش گروه‌های ویژه OpenXR بروید.
  5. در بخش «همه ویژگی‌ها» ، Application SpaceWarp را فعال کنید.

    تنظیمات یونیتی برای spacewarp

نمونه‌برداری فرعی ولکان را فعال کنید

نمونه‌برداری فرعی (Subsampling) در Vulkan امکان ایجاد و نمونه‌برداری تصاویر با تراکم‌های متغیر با استفاده از نقشه‌های تراکم قطعه‌ای (Fragment Density Maps) را فراهم می‌کند. این ویژگی Vulkan امکان رندر شدن و انتقال نواحی مختلف صفحه نمایش به حافظه با وضوح‌های مختلف را فراهم می‌کند، که به ویژه برای رندرینگ foveated مفید است، جایی که نواحی پیرامونی می‌توانند از وضوح پایین‌تری استفاده کنند.

مزایا

  • بسته به فاکتور فرم، در ترکیب با رندرینگ foveated بهبودهای متفاوتی ارائه می‌دهد.
  • از طریق فیلتر دوخطی، پدیده‌ی «آلایزینگ» (Aliasing) را در نواحی پیرامونی کاهش می‌دهد.
  • رندرینگ با نرخ متغیر کارآمد را در مناطق مختلف صفحه نمایش فعال می‌کند.

فعال کردن این قابلیت

  1. از منوی اصلی یونیتی، روی ویرایش > تنظیمات پروژه کلیک کنید.
  2. بخش مدیریت افزونه‌های XR را باز کنید و سپس روی OpenXR کلیک کنید.
  3. روی نماد چرخ‌دنده کنار Android XR (افزونه‌ها): مدیریت جلسه کلیک کنید.
  4. نمونه‌برداری فرعی (Vulkan) را فعال کنید.

    تنظیمات یونیتی برای نمونه‌برداری فرعی Vulkan

فعال کردن قفل شدن دیرهنگام

قفل‌گذاری دیرهنگام تکنیکی است که تأخیر بین حرکت فیزیکی کاربر و تغییر بصری حاصل از آن روی صفحه نمایش را به حداقل می‌رساند. این تکنیک به شما امکان می‌دهد تا حالت سر را در اواخر خط تولید فریم به‌روزرسانی کنید، که هم راحتی و هم نرخ فریم درک شده از برنامه‌های XR شما را بهبود می‌بخشد. این تکنیک با کاهش تأخیر ورودی نزدیک به یک زمان کل فریم، به این هدف دست می‌یابد.

مزایا

  • به طور قابل توجهی تأخیر حرکت به فوتون (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);
    }
}