Unity bietet einige leistungsbezogene Funktionen, die speziell für Android XR entwickelt wurden und das Android XR Extensions-Paket erfordern. Aktivieren Sie diese Funktionen, um die Frameraten zu verbessern und die GPU-Last durch Spacewarp und Vulkan-Subsampling zu reduzieren. Außerdem können Sie die Latenz beim Rendern durch Late Latching verringern.
Voraussetzungen
Bevor Sie dieser Anleitung folgen, müssen Sie die folgenden Voraussetzungen erfüllt haben:
- Führen Sie alle Schritte zum Einrichten Ihres Projekts in Unity aus.
- Importieren Sie das Android XR-Erweiterungspaket für Unity.
Spacewarp aktivieren
URP Application Spacewarp ist eine OpenXR-Optimierung, die dazu beiträgt, hohe Frameraten aufrechtzuerhalten, indem jeder zweite Frame synthetisiert wird. Bei dieser Technik werden Bewegungsvektoren und Tiefendaten aus vorherigen Frames verwendet, um vorherzusagen, wohin sich Pixel bewegen sollten. Dadurch werden Rechenleistung und Energieverbrauch reduziert.
Vorteile
- Reduziert die GPU-Rendering-Arbeitslast durch Synthetisieren alternativer Frames.
- Der Rechenaufwand und der Energieverbrauch werden erheblich reduziert.
- Durch die Reprojektion wird die Latenz zwischen Nutzerbewegungen und Display-Updates reduziert.
Diese Funktion aktivieren
- Klicken Sie im Unity-Hauptmenü auf Edit > Project Settings (Bearbeiten > Projekteinstellungen).
- Maximieren Sie den Bereich XR Plug-in Management (XR-Plug-in-Verwaltung).
- Wählen Sie den Tab aus, der Ihrem aktuellen XR-Gerät entspricht.
- Rufen Sie den Abschnitt OpenXR Feature Groups auf.
Aktivieren Sie im Abschnitt Alle Funktionen die Option Application SpaceWarp.
Vulkan-Subsampling aktivieren
Mit Vulkan-Subsampling können Bilder mit variabler Dichte mithilfe von Fragment Density Maps erstellt und gesampelt werden. Diese Vulkan-Funktion ermöglicht es, verschiedene Bereiche des Bildschirms mit unterschiedlichen Auflösungen zu rendern und in den Arbeitsspeicher zu übertragen. Das ist besonders nützlich für das Foveated Rendering, bei dem periphere Bereiche eine niedrigere Auflösung verwenden können.
Vorteile
- Bietet in Kombination mit Foveated Rendering je nach Formfaktor unterschiedliche Verbesserungen.
- Reduziert Aliasing in peripheren Bereichen durch bilineare Filterung.
- Ermöglicht effizientes Rendering mit variabler Rate in verschiedenen Bildschirmbereichen.
Diese Funktion aktivieren
- Klicken Sie im Unity-Hauptmenü auf Edit > Project Settings (Bearbeiten > Projekteinstellungen).
- Maximieren Sie den Bereich XR Plug-in Management (XR-Plug-in-Verwaltung) und klicken Sie dann auf OpenXR.
- Klicken Sie neben Android XR (Erweiterungen): Sitzungsverwaltung auf das Zahnradsymbol.
Aktivieren Sie Subsampling (Vulkan).
Late Latching aktivieren
Late Latching ist eine Technik, die die Verzögerung zwischen der physischen Bewegung des Nutzers und der daraus resultierenden visuellen Änderung auf dem Display minimiert. Dadurch kann die Kopfposition erst spät in der Pipeline zur Frame-Generierung aktualisiert werden, was sowohl den Komfort als auch die wahrgenommene Framerate Ihrer XR-Apps verbessert. Das wird erreicht, indem die Eingabelatenz um fast eine ganze Frame-Zeit reduziert wird.
Vorteile
- Die Motion-to-Photon-Latenz (MTP) wird deutlich reduziert.
- Verbessert den Tragekomfort und reduziert die Bewegungskrankheit.
- Verbessert die Stabilität und Präzision.
Diese Funktion aktivieren
So aktivieren Sie „Late Latching“:
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);
}
}