Entwickeln

Eye Tracked Foveated Rendering

Aktualisiert: 16.12.2024
Beim Eye Tracked Foveated Rendering (ETFR) wird mithilfe der Blickrichtung der betrachtete Bereich (fovealare Region) in voller Auflösung gerendert, während für den peripheren Bereich eine niedrigere Pixeldichte verwendet wird, um auszunutzen, dass das menschliche Auge hier eine geringere Sehschärfe aufweist. Mit diesem Verfahren wird die Anzahl der zu rendernden Pixel stärker verringert als bei der Verwendung von Fixed Foveated Rendering (FFR), was zu größeren GPU-Einsparungen führt.

Wie funktioniert das?

ETFR ist eine Weiterentwicklung von FFR, einer Technologie, die die Inhalte in der Bildschirmmitte (fovealare Region) in der vollen Auflösung und die Inhalte in der Peripherie in einer niedrigen Auflösung rendert. So können erhebliche GPU-Einsparungen für Meta Quest-Apps erzielt werden.
Beim ETFR-Verfahren wird die fovealare Region mithilfe von Eye-Tracking in die jeweilige Blickrichtung verschoben. Da die Region mit niedriger Auflösung stets im peripheren Sichtfeld „versteckt“ wird, können aggressivere Foveation-Karten eingesetzt werden, die zu größeren GPU-Einsparungen führen.
Eye tracked foveated rendering

Voraussetzungen

Bevor du ETFR verwendest, vergewissere dich, dass du mit der neuesten Version des Meta Quest-Betriebssystems und der Unreal Engine-Integration arbeitest. Um ETFR für deine App aktiviert zu können, brauchst du Folgendes:
  • Meta Quest Pro-Headset
  • Unreal Engine 4.27 (v46 des Integration SDK) oder höher

Projekteinrichtung

  1. Folge den Anweisungen in Erstellen deiner ersten Meta Quest VR-App in Unreal Engine, um den Unreal Engine-Editor zu generieren und auszuführen.
  2. Wähle Settings > Project Settings.
  3. Stelle sicher, dass unter Platform > Android > Build die Option Support Vulkan ausgewählt und Support OpenGL ES3.1 nicht ausgewählt ist, da ETFR nur von Vulkan unterstützt wird.
  4. Vergewissere dich, dass unter Plugins > Meta XR > General > XR API die Option Oculus OVRPlugin + OpenXR backend ausgewählt ist, da ETFR nur im Oculus OVRPlugin + OpenXR-Backend verfügbar ist.
  5. Stelle sicher, dass unter Plugins > Meta XR > Mobile > Foveated Rendering die Option Support Eye Tracked Foveated Rendering ausgewählt ist. Dadurch wird die ETFR-Unterstützung im aktuellen Unreal-Projekt aktiviert, sodass sie über die globalen Einstellungen, Blueprints oder C++-Schnittstellen gesteuert werden kann.

Globale Aktivierung von ETFR

Führe unter Plugins > Meta XR > Mobile > Foveated Rendering folgende Schritte aus:
  1. Lege Foveated Rendering Method auf Eye Tracked Foveated Rendering fest.
  2. Stelle Foveated Rendering Level auf das ETFR-Level ein, in dem deine Inhalte gerendert werden sollen. Die Visualisierung der Foveation-Karte findest du im Abschnitt „Nutzen der eingesparten GPU-Leistung“.
  3. Optional kannst du die Option Dynamic Foveated Rendering aktivieren, wenn das ETFR-Level je nach GPU-Last angepasst werden soll. Teste jedoch im Rahmen der Entwicklung unbedingt die Grafikqualität und -leistung, während diese Option deaktiviert ist.
  4. Wenn ETFR aktiviert ist und Eye-Tracking nicht (mehr) verfügbar ist, verwendet die App automatisch Dynamic High FFR als Fallback, um möglichst viel Leistung im Vergleich zu ETFR beizubehalten, sofern es nicht durch spezielle Einstellungen überschrieben wird. Ein mögliches Szenario, in dem Eye-Tracking nicht (mehr) verfügbar ist, ist, wenn der*die Nutzer*in die Berechtigung verweigert oder er*sie das Eye-Tracking in den Systemeinstellungen deaktiviert.

Aktivieren von ETFR über Blueprints

Die Oculus Function Library enthält zusätzliche Nodes für ETFR-Funktionen. Ein einfaches Beispiel für ihre Verwendung findest du im Blueprint-Beispiel.
Mit der Funktion Get Eye Tracked Foveated Rendering Supported kannst du prüfen, ob das Gerät, auf dem deine App ausgeführt wird, ETFR unterstützt. So kannst du die Einstellungen oder das Verhalten deiner App anpassen, wenn ein Gerät keine ETFR-Unterstützung bietet.
Mit der Funktion Set Foveated Rendering Method kannst du zur Laufzeit zwischen FFR und ETFR wechseln. Wenn die Berechtigung für das Eye-Tracking noch nicht gewährt wurde, wird der*die Nutzer*in jetzt dazu aufgefordert. Lehnt er*sie die Berechtigung ab, wird automatisch Dynamic High FFR als Fallback verwendet.
ETFR Blueprint
Für „Oculus XR Event Component“ gibt es einen neuen Delegate „Oculus Eye Tracking State Changed“, der verwendet werden kann, um Funktionen auszuführen, wenn das Eye-Tracking zur Laufzeit verfügbar oder nicht verfügbar wird. Dieser Fall kann beispielsweise eintreten, wenn die Berechtigungen für das Eye-Tracking abgelehnt werden oder es ein Problem mit dem Eye-Tracking gibt.
Bei der Verwendung von ETFR wird standardmäßig Dynamic High FFR als Fallback verwendet, wenn das Eye-Tracking nicht mehr verfügbar ist. Du kannst jedoch mit diesem Delegate das Standard-FFR-Fallback überschreiben und die Grafikeinstellungen oder die Auflösung ändern, um Leistungsunterschiede auszugleichen.
ETFR Blueprint state changed

Erstellen und Testen deiner App

  • Wähle im Dropdown-Menü der Symbolleiste Platforms > Android > Package Project aus. Stelle sicher, dass Android (ASTC) im Android-Untermenü ausgewählt ist.
ETFR build and test application

Best Practices

Im folgenden Abschnitt werden verschiedene Best Practices für die Integration von ETFR in deine App beschrieben.

Abwägungen hinsichtlich der Nutzer*innen

Bei der Integration von ETFR in deine App solltest du ein paar wichtige Punkte beachten. Der erste ist, dass diese Funktion nur auf der Meta Quest Pro verfügbar ist. Wenn deine App für die Meta Quest 2 ausgeliefert wird, musst du sicherstellen, dass die Funktion nur aktiviert wird, wenn das Gerät sie unterstützt.
Es besteht auch die Möglichkeit, dass Nutzer*innen das Eye-Tracking in den Systemeinstellungen deaktivieren oder die Berechtigung für das Eye-Tracking nicht akzeptieren. In diesen Fällen wird ETFR nicht aktiviert, wenn SetFoveatedRenderingMethod(EyeTrackedFoveatedRendering) aufgerufen wird.
Und der letzte Punkt: Es ist eine gute Idee, eine entsprechende Option in den Einstellungen deiner App bereitzustellen, damit die Nutzer*innen diese Funktion je nach Wunsch aktivieren oder deaktivieren können.
Daher ist es wichtig, dass du verstehst, dass ETFR möglicherweise aufgrund einiger dieser Faktoren deaktiviert werden muss – unabhängig von deiner Entscheidung, wie die zusätzliche Leistung genutzt werden soll.

Nutzen der eingesparten GPU-Leistung

ETFR bietet im Durchschnitt bei allen Levels größere GPU-Einsparungen als FFR, da eine aggressivere Foveation-Karte verwendet wird (siehe unten). Entwickler*innen können zwischen Leistungseinsparungen und Grafikqualität wählen, indem sie sich für das Foveation-Level entscheiden, das am besten zu den Inhalten ihrer App passt, und auch andere Oberflächenparameter wie MSAA und den Skalierungsfaktor von Augentexturen entsprechend festlegen.
ETFR extra GPU savings
Eine empfohlene Methode zur Nutzung der durch ETFR eingesparten GPU-Leistung ist, die Augentexturen zu vergrößern, um schärfere Bilder zu erhalten. Hier siehst du ein Beispiel für die GPU-Renderzeit für FFR bzw. ETFR beim Rendering mit der standardmäßigen und mit einer vergrößerten Augentextur in einer unserer Test-Apps:
ETFR test application stats
Wenn diese App beispielsweise FFR-3 verwenden würde, könnten wir auf ETFR-2 umstellen und eine höhere Auflösung für die Augentextur mit MSAA2 nutzen, um mit ungefähr demselben GPU-Zeitverbrauch ein schärferes Bild zu erhalten.
Wie stark die GPU-Einsparung mit ETFR ist, hängt von den Inhalten deiner App ab. Erstelle daher unbedingt mehrere Profile deiner App mit verschiedenen Foveation-Levels und rendere die Zielgröße, um die beste Kombination für dich zu bestimmen.
Außerdem empfehlen wir, Dynamic Foveated Rendering zu aktivieren, damit das Foveation-Level automatisch an die aktuelle GPU-Rendering-Last angepasst wird. Das höchste verwendbare Foveation-Level wird durch das Foveated-Rendering-Level bestimmt. Wir empfehlen, die Rendering-Qualität beim höchsten Foveation-Level umfassend zu testen, bevor du diese Option aktivierst. So erkennst du beispielsweise, ob zu viele Foveation-Artefakte im peripheren Sichtfeld auftreten, was vermieden werden sollte.