Entwickeln
Entwickeln
Deine Plattform auswählen

Performance Head-Up Display

OCULUS RIFT DOCUMENTATION
Dieses Thema betrifft die Oculus Rift-Entwicklung mit dem PC SDK. Informationen über die Optimierung der Leistung für Meta Quest-Apps findest du im jeweiligen Thema für deine Entwicklungsplattform:
Mit dem Performance Head-Up Display (HUD) können du und deine Nutzer*innen Leistungsinformationen für Apps anzeigen, die mit dem SDK erstellt wurden.
Die Performance HUD-Bildschirme werden vom Compositor gerendert, sodass sie mit einem einzigen SDK-Aufruf an ovr_EndFrame angezeigt werden können. Im Oculus Debug-Tool oder in OculusWorldDemo kannst du mithilfe der F11-Taste durch die Performance HUD-Bildschirme schalten.

Leistungsübersicht

Die HUD-Leistungsübersicht zeigt die Bildrate der App und die verfügbare, nicht genutzte Hardwareleistung an. Dieses HUD kann von dir oder dem*der Nutzer*in verwendet werden, um die Simulation und Grafiktreue einer App zu optimieren. Nutzer*innen können V-Sync nicht deaktivieren, daher kann es anstelle eines Bildfrequenzzählers zur Leistungsmessung verwendet werden. Es ist auch für die Fehlerbehebung nützlich, wenn Probleme mit der App oder der Hardware-Einrichtung zusammenhängen.
Auf dem folgenden Bild siehst du die HUD-Leistungsübersicht:
In der folgenden Tabelle werden die einzelnen Kennzahlen beschrieben:
KennzahlBeschreibung
App Motion-to-Photon Latency
Latenzzeit von der Abfrage der letzten vorhergesagten Tracking-Informationen durch die App mit ovr_GetTrackingState() bis zur Beleuchtung der mittleren Scanlinie des Zielbildes auf dem HMD-Display. Dies sind die gleichen Informationen, die auch vom Latency Timing HUD bereitgestellt werden.
Unused performance
Hiermit kann der*die Nutzer*in überprüfen, ob der PC leistungsfähig genug ist, um das Auslassen von Frames zu vermeiden. Es wird der Prozentsatz der verfügbaren PC-Leistung angezeigt, der nicht von der App und dem Compositor genutzt wird. Dies wird anhand der von dem Application Render Timing Hud erfassten CPU- und GPU-Zeit geteilt durch die native Bildwiederholrate (Kehrwert der Bildwiederholfrequenz) des HMD berechnet. Hinweis: Wenn die GPU-Auslastung fast 100 % erreicht, wählt die adaptive Warteschlange einen früheren Rendering-Startpunkt. Wenn sich dieser Startpunkt mit dem Compositing-Prozess im vorherigen Frame überschneidet, kommt es zu Leistungsspitzen. Wenn du beginnst, die Auslastung zu senken, zeigt das Diagramm einen anfänglichen Abfall, bevor es lineare Werte anzeigt.
Application Frames Dropped
Erhöht sich jedes Mal, wenn die App vor der Ausführung des Compositors vor jedem V-Sync (Vertical Synchronization) mit ovr_EndFrame keinen neuen Satz von Layern einreicht. Diese Angabe ist identisch mit App Missed Submit Count im Application Render Timing HUD.
Compositor Frames Dropped
Erhöht sich jedes Mal, wenn der Compositor bei V-Sync (Vertical Synchronization) keinen neuen gerenderten Frame präsentiert. Diese Angabe ist identisch mit Compositor Missed V-Sync Count im Compositor Render Timing HUD.

Latenzzeit-Timing

Der Latency Timing HUD zeigt die Diagramme „App to Mid - Photon, Timewarp to Photon - Start und Timewarp to Photon - Start“ an.-->
Auf dem folgenden Screenshot ist das Latency Timing HUD dargestellt:
In der folgenden Tabelle werden die einzelnen Kennzahlen beschrieben:
KennzahlBeschreibung
App Tracking to Mid-Photon
Latenzzeit vom Aufruf der Funktion ovr_GetTrackingState() durch die App bis zur Anzeige (d. h. Beleuchtung) des Zielbildes auf dem HMD-Display.
TimeWarp to Mid-Photon
Latenzzeit von der Übertragung der letzten vorhergesagten Tracking-Informationen an die GPU für die TimeWarp-Ausführung bis zu dem Zeitpunkt, an dem die mittlere Scanlinie des Zielbildes auf dem HMD-Display angezeigt wird.
Flip to Photon - Start
Zeitunterschied zwischen dem Zeitpunkt, an dem der Back-Buffer dem HMD präsentiert wird, und dem Zeitpunkt, an dem die erste Scanlinie des Zielbilds auf dem HMD-Display angezeigt wird.

Rendering-Timing der App

Über das Application Render Timing HUD werden anwendungsspezifische Rendering-Timing-Informationen angezeigt.
Auf dem folgenden Screenshot ist das Application Render Timing HUD dargestellt:
In der folgenden Tabelle werden die einzelnen Kennzahlen beschrieben:
KennzahlBeschreibung
App Missed Submit Count
Erhöht sich jedes Mal, wenn die App vor der Ausführung des Compositors und vor jedem V-Sync (Vertical Synchronization) mit ovr_EndFrame keinen neuen Satz von Ebenen einreicht.
App Frame-rate
Die Rate, mit der das Rendering der App ovr_EndFrame aufruft. Sie wird die native Aktualisierungsrate des HMD nie überschreiten, da der Aufruf von ovr_EndFrame die CPU-Ausführung der App nach Bedarf drosselt.
App Render GPU Time
Die gesamte GPU-Zeit, die von der Client-App für das Rendering aufgewendet wurde. Dazu gehört auch die Arbeit, die von der App nach der Rückgabe von ovr_EndFrame erledigt wird, ggf. unter Verwendung der Spiegeltextur. Es kann auch GPU-Befehlspuffer-„Bubbles“ enthalten, wenn der CPU-Thread der App die Daten nicht schnell genug an die GPU weiterleitet, um sie zu beschäftigen. Wenn die App die GPU fast vollständig auslastet, kann die Arbeit am nächsten Frame (N+1) durch den Rendering-Vorgang des Compositors am aktuellen Frame (N) verdrängt werden. Aufgrund der Funktionsweise der GPU-Timing-Abfrage der App kann dies zu künstlich überhöhten GPU-Zeiten der App führen, da sie die GPU-Nutzungszeiten des Compositors mit einbeziehen.
App Render CPU Time
Die Zeitdifferenz zwischen dem Zeitpunkt, zu dem die App die Ausführung auf der CPU fortsetzte, nachdem ovr_EndFrame den nachfolgenden Aufruf an ovr_EndFrame zurückgegeben hatte. Dies wird mit „N/A“ angezeigt, wenn der Latenztester nicht wie erwartet funktioniert (wenn zum Beispiel das HMD-Display aufgrund längerer Inaktivität in den Ruhezustand wechselt). Dazu gehört auch der IPC-Aufruf-Overhead an den Compositor, nachdem ovr_EndFrame von der Client-App aufgerufen wurde.
 

Rendering-Timing des Compositors

Das Compositor Render Timing HUD enthält Rendering-Timing-Informationen für den Runtime-Compositor. Der Compositor wendet Verzerrung und TimeWarp auf die von der VR-App bereitgestellten geschichteten Augenstrukturen an.
Auf dem folgenden Screenshot ist das Compositor Render Timing HUD dargestellt:
In der folgenden Tabelle werden die einzelnen Kennzahlen beschrieben:
KennzahlBeschreibung
Compositor Missed V-Sync Count
Erhöht sich jedes Mal, wenn der Compositor bei V-Sync (Vertical Synchronization) keinen neuen gerenderten Frame präsentiert.
Compositor Frame-rate
Die Rate der endgültigen Komposition. Diese ist unabhängig von der Rendering-Rate der Client-App. Da der Compositor immer an V-Sync gebunden ist, wird dieser Wert niemals die native HMD-Bildwiederholfrequenz überschreiten. Wenn der Compositor jedoch neue Frames nicht rechtzeitig fertigstellt, kann die native Bildwiederholfrequenz unterschritten werden.
Compositor GPU Time
Die Zeit, die die GPU mit der Ausführung des Compositor-Renderers verbringt. Dies umfasst TimeWarp und die Verzerrung aller von der App übermittelten Ebenen. Die Anzahl der aktiven Ebenen, ihre Auflösungen und die angeforderte Sampling-Qualität können sich alle auf die GPU-Zeiten auswirken.
Comp Gpu-End to V-Sync
Die Zeitspanne zwischen dem Abschluss des Compositor-Renderings durch die GPU und dem Zeitpunkt, an dem V-Sync ausgelöst wird und dieser Puffer auf dem HMD ausgelesen wird.

Asynchronous SpaceWarp Stats

Das Asynchronous SpaceWarp (ASW) HUD zeigt Aktivitäts- und Tracking-Statistiken für ASW an, das als Teil des Runtime Compositor ausgeführt wird. ASW wird automatisch aktiviert, wenn eine App die erforderliche native Bildrate für das angeschlossene HMD nicht erreicht. Nach der Aktivierung zwingt ASW die App dazu, mit der halben normalen Bildrate zu laufen, dabei aber jedes zweite Bild zu extrapolieren. Damit hat die App mehr Zeit, ihre Arbeit abzuschließen.
Auf dem folgenden Screenshot ist das ASW HUD dargestellt:
In der folgenden Tabelle werden die einzelnen Kennzahlen beschrieben:
KennzahlBeschreibung
ASW Status
Zeigt die Verfügbarkeit und den aktuellen ASW-Status an. „Not Available“ (Nicht verfügbar) kann auf das Betriebssystem und/oder den Grafikprozessortyp zurückzuführen sein, die auf dem PC verwendet werden. „Available - Not Active“ (Verfügbar – nicht aktiv) bedeutet, dass die App die erforderliche native Aktualisierungsrate erfolgreich beibehält, sodass ASW nicht aktiviert ist.
ASW Active-Toggle Count
Zeichnet auf, wie oft ASW während der Nutzungsdauer des HMD aktiviert wurde.
ASW Presented-Frame Count
Erfasst die Anzahl der von ASW extrapolierten Frames, die angezeigt wurden. Wenn ASW aktiv ist, da die App gezwungen ist, mit halber Geschwindigkeit zu laufen, ist mit einem Anstieg dieses Wertes um 45 fps bei einer 90-Hz-Bildwiederholrate des HMD zu rechnen.
ASW Failed-Frame Count
Erfasst die Anzahl der hochgerechneten Einzelbilder, die ASW anzeigen musste, aber nicht rechtzeitig vorbereiten konnte. Hierfür kann es verschiedene Gründe geben, beispielsweise einen Konflikt um Betriebssystemressourcen oder eine Überschreitung der Systemkapazitäten.

Versionsinformationen

Das Version Information HUD zeigt Informationen über das HMD und die Version des SDK an, die zur Erstellung der App verwendet wurde.
Auf dem folgenden Screenshot ist das Version Information HUD dargestellt:
In der folgenden Tabelle werden die einzelnen Informationen beschrieben:
NameBeschreibung
OVR SDK Runtime Ver
Version der aktuell installierten Laufzeitumgebung. Jede VR-App, die das OVR SDK ab Version 0.5.0 verwendet, nutzt diese Laufzeitumgebung.
OVR SDK Client DLL Ver
Die SDK-Version, für die die Client-App kompiliert wurde.
HMD Type
Der HMD-Typ.
HMD Serial
Die Seriennummer des HMD.
HMD Firmware
Die Version der installierten HMD-Firmware.
Sensor Serial
Die Seriennummer des Positionssensors.
Sensor Firmware
Die Version der installierten Firmware des Positionssensors.