Werbung
AMD und NVIDIA sind in den vergangenen Monaten bemüht zu zeigen, dass sie jeweils in der Lage sind, an den neuen Entwicklungen bei den Grafik-APIs zu partizipieren. Die höhere Leistung spielt dabei natürlich die Hauptrolle und zwar unabhängig davon, ob eine Darstellung auf dem Monitor erfolgt oder in einem VR-Headset. Sowohl AMD als auch NVIDIA haben dazu eigene Schnittstellen entwickelt, die es Entwicklern einfacher machen sollen, für VR-Headsets das Maximum an Leistung herauszuholen. AMD wählt mit LiquidVR eine etwas offenere Position, während man bei NVIDIA auf GameWorks VR vertraut.
In vielen Punkten sind sich die verwendeten Technologien aber sehr ähnlich und dies trifft auch auf Asynchronous Time Warp zu, dessen Implementierung und Funktionsweise Oculus und AMD jeweils in einem Developer-Blog veröffentlicht haben. NVIDIA sprach auf der GPU Technology Conference im vergangenen Jahr bereits darüber und auch AMD ließ in Vorträgen immer wieder einige Worte dazu fallen, die nun konkret aufgefertigt wurden.
Der aktuell größte Störfaktor beim Rendering für ein VR-Headset ist ein Frame, der gedroppt werden muss – also nicht dargestellt wird. Es gibt verschiedene Gründe warum dies passiert. Eventuell reicht die Leistung des Systems nicht aus und die Frames erreichen die Brille zu langsam oder das Timing stimmt nicht und die Frames werden immer erst kurz nach dem Refresh des Displays ausgeliefert. Es gibt allerdings einige Methoden, um dies zu verhindern, doch auch diese können fehlschlagen und dann kommt es zu einem Effekt, der sehr störend beim Tragen einer solchen Brille ist.
Beim Asynchronous Time Warp wird der letzte fertig gerenderte Frame beibehalten und ersetzt letztendlich den nicht rechtzeitig berechneten Folgeframe. Damit bei der Darstellung aber nicht der gleiche Frame noch einmal angezeigt wird, was einem Stottern des Bildes nahekommt, wird dieser Frame leicht um die inzwischen getätigten Bewegungen des Kopfes bzw. des Nutzers angepasst. Die Anpassung der Berechnung wird auf der GPU ausgeführt, auf den Shadern. Der dazugehörige Prozess kann asynchron durchgeführt werden, ein Vorteil, der auch im Rahmen der Quick Response Queue und bei den Asynchronous Shaders insgesamt bereits eine Rolle spielt.
Letztendlich kann sichergestellt werden, dass immer ein fertig gerenderter Frame zur Verfügung steht – egal ob dieser in Echtzeit gerendert wurde oder nur bei Asynchronous Time Warp als Backup vorgehalten wird. In der Praxis ist die Umsetzung aber ungleich schwieriger, denn die Berechnung des Asynchronous Time Warp sollte so spät wie möglich im Rendering-Prozess des aktuellen Frames erfolgen, es muss aber noch genügend Zeit vorhanden sein, um die Berechnung vollständig auszuführen. Wird die Berechnung für den Asynchronous Time Warp zu früh angestoßen, könnte es bis zur Ausgabe noch größere Bewegungen beim Headtracking oder dem der Controller gegeben haben, die nicht mehr einbezogen werden können.
Daher werden die Berechnungen des Asynchronous Time Warp in die Quick Response Queue eingeführt. Somit kann sichergestellt werden, dass die Berechnungen selbst zu einem späten Zeitpunkt noch rechtzeitig und vollständig durchgeführt werden können.
AMD arbeitet bereits an weiteren Technologien, die von den Asynchronous Shaders und der Quick Response Queue Gebrauch machen. Als Beispiel wird die Berechnung von Audioinhalten genannt, die nun ebenfalls besser und positionsgenau erfolgen sollen, wenn sich der Nutzer im virtuellen Raum bewegt. Details dazu will man aber erst zu einem späteren Zeitpunkt veröffentlichen.