Werbung
Virtuelle Realität, dargestellt mit Hilfe von Displays in Brillen, wird in nächster Zukunft eine immer wichtigere Rolle spielen. Oculus gilt mit der Oculus Rift nur als Vorreiter einer Technik, die mit Microsofts Hololense (die auf einer anderen Technik beruht) oder der Steam/HTC Vive schon prominente Mitstreiter gefunden hat. Doch die Darstellung in einer VR-Brille stellt völlig neue Herausforderungen an die Render-Technik, die auf den ersten Blick gar nicht so deutlich werden. AMD und NVIDIA haben sich bereits entsprechend positioniert. Bei AMD stellt Liquid VR die notwenigen Technologien zur Verfügung, NVIDIA hat seine Schnittstellen als Direct VR zusammengefasst.
Eine der größten Herausforderungen ist die Reduzierung von Verzögerungen. Ein schnelles Tracking der Bewegungen ist entscheidend, um ein echtes VR-Erlebnis überhaupt erst möglich zu machen. Bereits kleinste Verzögerungen sorgen für ein Unwohlsein. Aus der Sensorik der Bewegungen sind die Verzögerungen inzwischen weitestgehend entfernt worden. Recht wenig Einfluss haben die Entwickler aber auf die Verzögerungen, die im Rendering-Prozess auftreten. Hier kommt Direct VR von NVIDIA ins Spiel.
DirectX 12 sorgt durch die Art und Weise seiner Implementation für eine Reduzierung der Renderzeiten. Doch um auf Werte von 20 ms und weniger zu kommen, sind noch weitere Anstrengungen notwendig. Die Frame Queue soll eigentlich dafür sorgen, dass im Falle von Verzögerungen beim Rendering dennoch genügend Frames vorhanden sind, um eine ruckelfreie Darstellung zu erlauben. Allerdings kann es hier zu einem großen Zeitversatz bzw. einer fehlerhaften Darstellung zwischen dem aktuellen Input und der Ausgabe des Frames kommen. Daher wird bei VR Direct die Frame Queue auf einen Frame reduziert.
Eine wichtige Rolle kommt dem Timewarp zu. Timewarp sagt die Bewegung des Trackings weiter voraus und rendert die Szene größer als sie durch das VR-Display dargestellt wird. Abhängig vom Headtracking wird der entsprechende Bildausschnitt gewählt. Mit Timewarp lässt sich die Latenz für das Headtracking zwar reduziert, andere Eingaben (wie das Abgeben eines Schusses oder eine andere Interaktion) werden jedoch nicht beachtet.
Den größten Sprung soll die Latenz aber durch eine Technik namens Auto Asynchronous Warp machen. Ohne dass die jeweils verwendete Anwendung daraufhin optimiert werden muss, wird der Input des Trackings der Kopfbewegung erst dann in den Renderpfad eingefügt, wenn dieser zu einem gewissen Teil bereits berechnet wurde. Eventuelle Korrekturen der Position des Spielers werden erst danach ausgeführt. Damit will NVIDIA die komplette Renderzeit halbieren und die Zeiten von der Eingabe des Nutzers (der Kopfbewegung) bis zur Ausgabe auf dem Display auf 25 ms drücken. NVIDIAs GPU-Architektur "Fermi", "Kepler" und "Maxwell" sind an bestimmte Draw Calls gebunden, um diese Voraussagen ausführen zu können. Zukünftige GPUs - damit ist die "Pascal"-Architektur gemeint - sollen hier feiner auflösen können.
Ein Asynchronous Timewarp lässt sich allerdings komplett vermeiden, wenn die Framerate auf immer dem gleichen Niveau gehalten werden kann. Die Oculus Rift in der aktuellen Ausführung "Crescent Bay" beispielsweise setzt 90 Bilder pro Sekunde für jedes Auge voraus. Um dieses Ziel zu erreichen wäre es natürlich am einfachsten, wenn eine Grafikkarten ausreichend Leistung zur Verfügung stellt, um diese 90 Bilder pro Sekunde für jedes Auge auch zu liefern. Bei Auflösungen von FullHD pro Auge oder gar im Bereich von UltraHD/4K ist aktuell aber noch keine Grafikkarte in der Lage, dies zu liefern. Also sucht NVIDIA nach Wegen, um die Leistung zu erhöhen. Dies wäre beispielsweise durch den Einsatz von zwei Grafikkarten - eine pro Auge - möglich.
NVIDIA nennt diese Umsetzung VR SLI. VR SLI erzeugt allerdings eine höhere Last auf der CPU und erhöht auch hier die Latenzen. Zudem ist ein AFR (Alternate Frame Rendering) nicht dazu geeignet. Also wird die Ausgabe jeweils einer Grafikkarte auf ein Auge fest miteinander verbunden. Die Synchronisation der Ausgabe erfolgt über den PCI-Express-Bus und benötigt dort einige Millisekunden, die wiederum auf die ohnehin schon vorhandene Verzögerung des Renderings draufgerechnet werden müssen. NVIDIA steht in dieser Hinsicht also noch vor einer Herausforderung. Außerdem ist VR SLI derzeit nur für DirectX 11 möglich.
Eine andere Möglichkeit der Leistungsoptimierung ist die Reduzierung der Renderarbeit. Nicht das komplette Rendering muss für die Position beider Augen erneut ausgeführt werden. Viele Objekte und Teilbereiche des Renderings werden doppelt ausgeführt und können eingespart werden. Auch außerhalb der Rendering-Pipeline und innerhalb des Treibers sind viele Arbeitsschritte redundant und damit nicht notwendig. Hier sieht NVIDIA noch großes Potenzial für zukünftige Verbesserungen.
Auch wenn Steam und HTC bereits gegen Ende des Jahres die Verfügbarkeit der Vive planen, so stehen die Hersteller, egal ob nun Oculus, AMD oder NVIDIA noch vor großen Herausforderungen. NVIDIA testet VR Direct und VR SLI derzeit in einem Alpha-Status des Treibers. Der Weg ist klar, nun müssen nur noch die Steine aus dem Weg geräumt werden. Das VR mehr als nur ein Trend ist, dürfte durch das Engagement gleich mehrerer großer Unternehmen offensichtlich sein.