Unity udostępnia niektóre funkcje związane z wydajnością, które są specyficzne dla Androida XR i wymagają pakietu Android XR Extensions. Włącz te funkcje, aby zwiększyć liczbę klatek na sekundę i zmniejszyć obciążenie procesora graficznego dzięki spacewarp i próbkowaniu Vulkan oraz skrócić czas oczekiwania na renderowanie śledzone za pomocą późnego zatrzaskiwania.
Wymagania wstępne
Zanim zaczniesz korzystać z tych wskazówek, sprawdź, czy spełniasz te wymagania wstępne:
- Wykonaj wszystkie czynności związane z konfigurowaniem projektu w Unity.
- Zaimportuj pakiet Android XR Extensions for Unity.
Włączanie spacewarp
URP Application Spacewarp to optymalizacja OpenXR, która pomaga utrzymać wysoką liczbę klatek na sekundę dzięki syntezie co drugiej klatki. Technika ta wykorzystuje wektory ruchu i dane o głębi z poprzednich klatek, aby przewidzieć, gdzie powinny się przesuwać piksele, co zmniejsza moc obliczeniową i zużycie energii.
Zalety
- Zmniejsza obciążenie renderowania przez GPU dzięki syntezie alternatywnych klatek.
- Znacznie zmniejsza moc obliczeniową i zużycie energii.
- Wykorzystuje ponowną projekcję, aby zmniejszyć opóźnienie między ruchami użytkownika a aktualizacjami wyświetlanego obrazu.
Włącz tę funkcję
- W menu głównym Unity kliknij Edit > Project Settings (Edytuj > Ustawienia projektu).
- Rozwiń sekcję Zarządzanie wtyczkami XR.
- Wybierz kartę odpowiadającą Twojemu obecnemu urządzeniu XR.
- Otwórz sekcję Grupy funkcji OpenXR.
W sekcji Wszystkie funkcje włącz Przestrzenną deformację aplikacji.
Włącz próbkowanie Vulkan
Podpróbkowanie w Vulkanie umożliwia tworzenie i próbkowanie obrazów o różnej gęstości za pomocą map gęstości fragmentów. Ta funkcja Vulkan umożliwia renderowanie i przenoszenie do pamięci różnych obszarów ekranu w różnych rozdzielczościach, co jest szczególnie przydatne w przypadku renderowania foveated, w którym obszary peryferyjne mogą korzystać z niższej rozdzielczości.
Zalety
- Zapewnia różną poprawę w połączeniu z renderowaniem foveated, w zależności od formatu.
- Zmniejsza aliasing na obrzeżach dzięki filtrowaniu dwuliniowemu.
- Umożliwia wydajne renderowanie ze zmienną częstotliwością w różnych regionach ekranu.
Włącz tę funkcję
- W menu głównym Unity kliknij Edit > Project Settings (Edytuj > Ustawienia projektu).
- Rozwiń sekcję XR Plug-in Management (Zarządzanie wtyczkami XR), a potem kliknij OpenXR.
- Kliknij ikonę koła zębatego obok opcji Android XR (rozszerzenia): zarządzanie sesjami.
Włącz Subsampling (Vulkan).
Włącz późne zatrzaskiwanie
Późne zatrzaskiwanie to technika, która minimalizuje opóźnienie między ruchem użytkownika a wynikającą z niego zmianą wizualną na wyświetlaczu. Umożliwia to aktualizowanie pozycji głowy na późnym etapie procesu generowania klatek, co zwiększa komfort i odczuwalną liczbę klatek na sekundę w aplikacjach XR. Osiąga to dzięki zmniejszeniu opóźnienia wejściowego o czas zbliżony do czasu trwania całej klatki.
Zalety
- Znacznie zmniejsza opóźnienie ruchu do fotonu (MTP).
- Zwiększa komfort użytkownika i ogranicza chorobę lokomocyjną.
- Zwiększa stabilność i precyzję.
Włącz tę funkcję
Aby włączyć późne zatrzaskiwanie, włącz tę funkcję w czasie działania aplikacji:
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);
}
}