Z
ZeroStrat
Gast
Hallo ComputerBase-Community,
Code + Infos auf GitHub: GitHub - DevTechProfile/CapFrameX: Frametime analysis tool
Download-Link: Releases . DevTechProfile/CapFrameX . GitHub
Offizielle Website: https://www.capframex.com/
ComputerBase Download-Link: https://www.computerbase.de/downloads/systemtools/grafikkarten/capframex-tool/
Bei Fragen, einfach posten hier im Thread. Feedback ist immer gerne gesehen.
Beste Grüße, ZeroStrat
Code + Infos auf GitHub: GitHub - DevTechProfile/CapFrameX: Frametime analysis tool
Download-Link: Releases . DevTechProfile/CapFrameX . GitHub
Offizielle Website: https://www.capframex.com/
ComputerBase Download-Link: https://www.computerbase.de/downloads/systemtools/grafikkarten/capframex-tool/
Record Liste
Egal in welchem View man sich gerade befindet, die Record Liste befindet sich immer auf der linken Seite.
Hier sind die Aufnahmen zu sehen, die man mit CapFrameX (oder auch mit OCAT) gemacht hat. Der Ordner wird dabei konstant überwacht und neu aufgenommene Benchmarks werden sofort eingefügt.
Im unteren Bereich gibt es mehrere Eingabefelder für die CPU, GPU und RAM, die automatisch gefüllt werden und nach Bedarf verändert werden können. Über die Buttons neben den Zeilen kann der Inhalt jederzeit wieder auf den vom System ausgegebenen Wert gestellt werden.
Da standardmäßig der Prozessname verwendet wird, kann im Feld "Game" der gewünschte Name des Spiels eingegeben werden, sofern er noch nicht in der mitgelieferten Liste enthalten ist, die mit jeder neuen Version erweitert und mit der eigenen verglichen wird.
Zusätzlich kann man jede Aufnahme mit einem eigenen Kommentar versehen.
Globale Nagigationsleiste
Am oberen Rand befinden sich die Reiter für die verschiedenen Views, ein Screenshot Button, ein direkter Link zur CX Github Seite und ein Optionsmenü.
Optionen
Moving average window size = Die Spanne der Frames, mit der die average Linie beim Frametime Graphen berechnet wird.(Analysis View)
Stuttering factor = Der Faktor der durchschnittlichen Frametimes, ab dem ein Frame als Ruckler betrachtet wird.(Analysis View)
Observed directory = Das Verzeichnis, in dem die Aufnahmen gespeichert werden oder OCAT/Presentmon Aufnahmen hineingezogen werden können.
FPS value rounding digits = Anzahl der Nachkommastellen bei den Performance Parametern.
Screenshot directory = Das Verzeichnis, in dem Screenshots gespeichert werden.
Hardware info source = Auswahl, welche Informationen zur Hardware in die Aufnahmedateien geschrieben werden.
Automatic detection: Die Daten, die vom System ausgelesen wurden
Custom description: Eingabefelder erscheinen, in denen man die Daten manuell eintragen kann
Capture View
In der Capture View können die Einstellungen zum Aufzeichnen von Benchmarks getätigt werden. Die Capture Funktion läuft dabei unabhängig davon, ob man sich in diesem View befindet oder nicht.
Im oberen Bereich befindet sich die Running processes und die Ignore Liste.
Darunter gibt ein Infotext Auskunft über den aktuellen Status des Capture Service.
Unter Running processes tauchen automatisch alle laufenden Prozesse auf, die aufgenommen werden können.
In der Ignore Liste stehen alle Prozesse, die von dieser Erkennung ausgeschlossen sind.
Darunter können die Einstellungen für den Hotkey, die Dauer der Aufnahme (0=unbegrenzt) und die Art der Rückmeldung("Voice", "simple" und "none") festgelegt werden.
Ganz oben kann man einen Logger ausklappen, der genauere Infos zu den Ereignissen ausgibt, wie z.b. Start und Stop Zeitpunkt der Aufnahme, Länge der Aufnahme ect.
Mit Betätigung des Hotkeys wird eine Aufnahme gestartet. Das funktioniert allerdings nur dann automatisch, wenn genau ein Prozess in der Liste vorhanden ist.
Die beiden anderen möglichen Fälle (kein Prozess und mehr als ein Prozess in der Liste) werden dem Nutzer bei Betätigung des Hotkeys durch eine Sprachansage mitgeteilt, die Info über mehrere Prozesse auch durch den Infotext.
Sollte mehr als ein Prozess auftauchen, kann der gewünschte Prozess manuell durch Anklicken ausgewählt werden.
Da man sich aber in so einem Fall meist mitten in der gewünschten Anwendung befindet, ist die bessere Vorgehensweise, vorher jeden ungewünschten Prozess auszuwählen und mit den Pfeil Buttons in die Ignore Liste zu verschieben, sodass beim Start der Anwendung auch nur diese in der Liste steht und somit nicht manuell ausgewählt werden muss.
Sobald die Ignore Liste mit allen ungewünschten Prozessen gefüllt ist (die Running processes Liste also generell beim Start von CapFrameX leer ist) muss man sich um nichts mehr kümmern, man startet einfach ein beliebiges Spiel und drückt den Hotkey zum Aufnehmen.
Die Ignore Liste enthält nach der Installation bereits die meisten gängigen Prozesse und wird, genau wie die Liste mit den Spielenamen, stetig aktualisiert und mit jeder neuen Version mit der bestehenden Liste der Nutzer abgeglichen.
Overlay View
Enthält Optionen für die Steuerung des OSD, die Auswahl der Einträge, die im OSD angezeigt werden und Optionen für die Run History und die Aggregation.
Linke Seite
"Overlay Items" Liste, in der man die einzelnen Einträge im OSD umschalten und deren Reihenfolge ändern kann. Einträge mit gleichem Group Name werden im OSD in der gleichen Zeile angezeigt.
Overlay Hotkey, um die Anzeige aller CX Einträge im OSD zu steuern. (Dabei wird nicht das komplette RTSS OSD ausgeblendet, wie es beim MSI Afterburner Hotkey passiert)
Rechte Seite
Run History: Einstellungen für die Anzahl der Durchläufe und die Metriken, die neben dem Average angezeigt werden sollen. Die Durchläufe werden dabei stets im OSD angezeigt. Ist die Run History voll, ersetzen zusätzliche Runs die jeweils ältesten.
Aggregation: Sobald die Run History voll ist, werden die Frametimes aller Durchläufe zu einer einzigen Datei kombiniert, welche dann von CX ausgelesen werden kann und ein Ausschnitt der Metriken im OSD gezeigt*.
Ist die Run History voll, wird der Median der hier ausgewählten Metrik berechnet und die übrigen Runs über einen ebenfalls hier ausgewählten Prozentwert auf Ausreißer überprüft.
Sind Ausreißer vorhanden, werden die entsprechenden Einträge im OSD rot markiert.
Einstellungen für den Umgang mit Ausreißern innerhalb der Durchläufe:
"Mark & use": Ausreißer werden zwar markiert, es werden aber generell alle Einträge der History automatisch zusammengefasst.
"Mark & replace": Sind Ausreißer vorhanden, müssen zusätzliche Durchläufe gemacht werden, wobei die Ausreißer entfernt werden und die volle History erneut überprüft wird. Die Durchläufe werden erst zusammengefasst, wenn keine Ausreißer mehr vorhanden sind.
*Da die Aggregation nicht mit einer Mittelwertbildung aus mehreren Einzelergebnissen arbeitet, sondern die Gesamten Rohdaten der Frametimes zusammenfasst und diese dann einmal zusammen auswertet, können speziell bei den Perzentilwerten Abweichungen entstehen.
Wir sind aber davon überzeugt, dass unsere Methode für die Berechnung von Perzentilen die verlässlchere ist.
Analysis View
Hier werden die getätigten Messungen einzeln ausgewertet.
Im oberen Bereich kann man zwischen Frametime Graphen, FPS Graphen, und den L-Shapes(Perzentil Verteilung der Frametimes) wählen.
Im unteren Bereich sieht man verschiedene Performance Parameter.
Daneben zeigt ein Kuchendiagramm den Anteil der Zeit, in der die Frametimes 2.5x höher als der Durchschnitt bzw die FPS 2.5x niedriger als der Durchschnitt waren, das Spiel also merklich geruckelt hat.
Im Unteren Bereich ist die Toolbar, mit der man die anzuzeigenden Performance Parameter und die Skala der Y-Achse anpassen kann, eine Option um ungewöhnlich starke Ausreißer zu entfernen und ein Toggle für den Range Slider, mit dem man den X-Bereich der Aufnahme verändern kann.
Comparison View
Hier können mehrere Messungen miteinander verglichen werden.
Per Doppelklick auf die Einträge in der Record Liste, können diese zur Comparison Liste rechts hinzugefügt werden. Ein Klick auf einen Eintrag in der Comparison Liste wählt ihn in der Record Liste aus. Über den unteren Button werden alle Einträge wieder aus der Liste entfernt.
Der erste Reiter des Views zeigt die Messungen als Balkendiagramm an.
Vergleicht man nur Messungen eines einzigen Spiels, wird dieses als Überschrift über das Diagramm gesetzt, bei verschiedenen Spielen wird deren Name an die Balken geschrieben.
Zusätzlich steht ein einstellbarer Kontext an jedem Eintrag.
In der unteren Toolbar kann die Sortierung geändert, sowie die angezeigten Parameter und der Kontext eingestellt werden.
Zusätzlich kann mit dem Grouping Toggle die Art der Sortierung umgestellt werden:
Aus-> Alle Einträge werden nach FPS sortiert
An-> Einträge werden erst nach Spiel, dann nach FPS sortiert
Im zweiten Reiter können die Frametime Graphen und die L-Shapes miteinander verglichen werden.
Ein Mouseover über die Einträge in der Liste hebt den jeweiligen Graphen hervor, zusätzlich kann die Farbe geändert und der Graph ausgeblendet werden.
In der Toolbar kann der Range Slider und die Anzeige des Kontextes als Legende im Frametime Diagramm ein- oder ausgeschaltet werden. Die Einstellung des Kontextes ist für beide Reiter gleich.
(Die Steuerung der Graphen kann in den Optionen im Reiter "HELP" gefunden werden.)
Report View
Die Report View ist eine simple Ansicht, um alle in den Messungen enthaltenen Daten kompakt darzustellen. Mit einem Rechtsklick kann man diese Daten auch in die Zwischenablage kopieren und z.B. in Excel einfügen.
Synchronization View
Auf der Synchronization View ist es möglich, die Funktionsqualität des eigenen Monitors bzw. dessen Sync-Technik zu überprüfen. Das Ziel einer adaptiven Sync-Technik wie FreeSync oder G-Sync ist es, dass die Frames mit möglichst wenig Verzögerung auf dem Monitor angezeigt werden, wenn sie die Render Pipeline verlassen. Deswegen sollten die Kurven "Frametimes" und "Display changed times" idealerweise nahezu gleich aussehen. In diesem Fall folgt die Bildaktualisierung des Monitors den Frametimes des Systems adaptiv, was zu einem flüssigen Spielerlebnis führt.
Unter dem Graphen werden zwei Prozentwerte angezeigt. Der erste zeigt die Rate der Übereinstimmung von Frametimes und Display Changed Times, der zweite zeigt den Anteil der Frames, die innerhalb des definierten Sync Bereichs des Monitors liegen.
Das Histogramm im unteren Bereich zeigt die diskrekte Verteilung der Bildaktualisierungszeiten. Unten rechts befindet sich ein Kuchendiagramm, das anzeigt, wie viele Frames "gedroppt", also letztlich nicht angezeigt wurden.
Im zweiten Tab wird der Input Lag als Graph, Balkendiagramm sowie als Histogramm angezeigt.
Dieser Wert ist nur eine Annäherung, da wir die Daten nicht exakt von PresentMon bekommen können, allerdings gab uns der Entwickler eine Formel, mit der man aus den vorhandenen Daten den Input Lag recht genau abschätzen kann.
Egal in welchem View man sich gerade befindet, die Record Liste befindet sich immer auf der linken Seite.
Hier sind die Aufnahmen zu sehen, die man mit CapFrameX (oder auch mit OCAT) gemacht hat. Der Ordner wird dabei konstant überwacht und neu aufgenommene Benchmarks werden sofort eingefügt.
Im unteren Bereich gibt es mehrere Eingabefelder für die CPU, GPU und RAM, die automatisch gefüllt werden und nach Bedarf verändert werden können. Über die Buttons neben den Zeilen kann der Inhalt jederzeit wieder auf den vom System ausgegebenen Wert gestellt werden.
Da standardmäßig der Prozessname verwendet wird, kann im Feld "Game" der gewünschte Name des Spiels eingegeben werden, sofern er noch nicht in der mitgelieferten Liste enthalten ist, die mit jeder neuen Version erweitert und mit der eigenen verglichen wird.
Zusätzlich kann man jede Aufnahme mit einem eigenen Kommentar versehen.
Globale Nagigationsleiste
Am oberen Rand befinden sich die Reiter für die verschiedenen Views, ein Screenshot Button, ein direkter Link zur CX Github Seite und ein Optionsmenü.
Optionen
Moving average window size = Die Spanne der Frames, mit der die average Linie beim Frametime Graphen berechnet wird.(Analysis View)
Stuttering factor = Der Faktor der durchschnittlichen Frametimes, ab dem ein Frame als Ruckler betrachtet wird.(Analysis View)
Observed directory = Das Verzeichnis, in dem die Aufnahmen gespeichert werden oder OCAT/Presentmon Aufnahmen hineingezogen werden können.
FPS value rounding digits = Anzahl der Nachkommastellen bei den Performance Parametern.
Screenshot directory = Das Verzeichnis, in dem Screenshots gespeichert werden.
Hardware info source = Auswahl, welche Informationen zur Hardware in die Aufnahmedateien geschrieben werden.
Automatic detection: Die Daten, die vom System ausgelesen wurden
Custom description: Eingabefelder erscheinen, in denen man die Daten manuell eintragen kann
Capture View
In der Capture View können die Einstellungen zum Aufzeichnen von Benchmarks getätigt werden. Die Capture Funktion läuft dabei unabhängig davon, ob man sich in diesem View befindet oder nicht.
Im oberen Bereich befindet sich die Running processes und die Ignore Liste.
Darunter gibt ein Infotext Auskunft über den aktuellen Status des Capture Service.
Unter Running processes tauchen automatisch alle laufenden Prozesse auf, die aufgenommen werden können.
In der Ignore Liste stehen alle Prozesse, die von dieser Erkennung ausgeschlossen sind.
Darunter können die Einstellungen für den Hotkey, die Dauer der Aufnahme (0=unbegrenzt) und die Art der Rückmeldung("Voice", "simple" und "none") festgelegt werden.
Ganz oben kann man einen Logger ausklappen, der genauere Infos zu den Ereignissen ausgibt, wie z.b. Start und Stop Zeitpunkt der Aufnahme, Länge der Aufnahme ect.
Mit Betätigung des Hotkeys wird eine Aufnahme gestartet. Das funktioniert allerdings nur dann automatisch, wenn genau ein Prozess in der Liste vorhanden ist.
Die beiden anderen möglichen Fälle (kein Prozess und mehr als ein Prozess in der Liste) werden dem Nutzer bei Betätigung des Hotkeys durch eine Sprachansage mitgeteilt, die Info über mehrere Prozesse auch durch den Infotext.
Sollte mehr als ein Prozess auftauchen, kann der gewünschte Prozess manuell durch Anklicken ausgewählt werden.
Da man sich aber in so einem Fall meist mitten in der gewünschten Anwendung befindet, ist die bessere Vorgehensweise, vorher jeden ungewünschten Prozess auszuwählen und mit den Pfeil Buttons in die Ignore Liste zu verschieben, sodass beim Start der Anwendung auch nur diese in der Liste steht und somit nicht manuell ausgewählt werden muss.
Sobald die Ignore Liste mit allen ungewünschten Prozessen gefüllt ist (die Running processes Liste also generell beim Start von CapFrameX leer ist) muss man sich um nichts mehr kümmern, man startet einfach ein beliebiges Spiel und drückt den Hotkey zum Aufnehmen.
Die Ignore Liste enthält nach der Installation bereits die meisten gängigen Prozesse und wird, genau wie die Liste mit den Spielenamen, stetig aktualisiert und mit jeder neuen Version mit der bestehenden Liste der Nutzer abgeglichen.
Overlay View
Enthält Optionen für die Steuerung des OSD, die Auswahl der Einträge, die im OSD angezeigt werden und Optionen für die Run History und die Aggregation.
Linke Seite
"Overlay Items" Liste, in der man die einzelnen Einträge im OSD umschalten und deren Reihenfolge ändern kann. Einträge mit gleichem Group Name werden im OSD in der gleichen Zeile angezeigt.
Overlay Hotkey, um die Anzeige aller CX Einträge im OSD zu steuern. (Dabei wird nicht das komplette RTSS OSD ausgeblendet, wie es beim MSI Afterburner Hotkey passiert)
Rechte Seite
Run History: Einstellungen für die Anzahl der Durchläufe und die Metriken, die neben dem Average angezeigt werden sollen. Die Durchläufe werden dabei stets im OSD angezeigt. Ist die Run History voll, ersetzen zusätzliche Runs die jeweils ältesten.
Aggregation: Sobald die Run History voll ist, werden die Frametimes aller Durchläufe zu einer einzigen Datei kombiniert, welche dann von CX ausgelesen werden kann und ein Ausschnitt der Metriken im OSD gezeigt*.
Ist die Run History voll, wird der Median der hier ausgewählten Metrik berechnet und die übrigen Runs über einen ebenfalls hier ausgewählten Prozentwert auf Ausreißer überprüft.
Sind Ausreißer vorhanden, werden die entsprechenden Einträge im OSD rot markiert.
Einstellungen für den Umgang mit Ausreißern innerhalb der Durchläufe:
"Mark & use": Ausreißer werden zwar markiert, es werden aber generell alle Einträge der History automatisch zusammengefasst.
"Mark & replace": Sind Ausreißer vorhanden, müssen zusätzliche Durchläufe gemacht werden, wobei die Ausreißer entfernt werden und die volle History erneut überprüft wird. Die Durchläufe werden erst zusammengefasst, wenn keine Ausreißer mehr vorhanden sind.
*Da die Aggregation nicht mit einer Mittelwertbildung aus mehreren Einzelergebnissen arbeitet, sondern die Gesamten Rohdaten der Frametimes zusammenfasst und diese dann einmal zusammen auswertet, können speziell bei den Perzentilwerten Abweichungen entstehen.
Wir sind aber davon überzeugt, dass unsere Methode für die Berechnung von Perzentilen die verlässlchere ist.
Analysis View
Hier werden die getätigten Messungen einzeln ausgewertet.
Im oberen Bereich kann man zwischen Frametime Graphen, FPS Graphen, und den L-Shapes(Perzentil Verteilung der Frametimes) wählen.
Im unteren Bereich sieht man verschiedene Performance Parameter.
Daneben zeigt ein Kuchendiagramm den Anteil der Zeit, in der die Frametimes 2.5x höher als der Durchschnitt bzw die FPS 2.5x niedriger als der Durchschnitt waren, das Spiel also merklich geruckelt hat.
Im Unteren Bereich ist die Toolbar, mit der man die anzuzeigenden Performance Parameter und die Skala der Y-Achse anpassen kann, eine Option um ungewöhnlich starke Ausreißer zu entfernen und ein Toggle für den Range Slider, mit dem man den X-Bereich der Aufnahme verändern kann.
Comparison View
Hier können mehrere Messungen miteinander verglichen werden.
Per Doppelklick auf die Einträge in der Record Liste, können diese zur Comparison Liste rechts hinzugefügt werden. Ein Klick auf einen Eintrag in der Comparison Liste wählt ihn in der Record Liste aus. Über den unteren Button werden alle Einträge wieder aus der Liste entfernt.
Der erste Reiter des Views zeigt die Messungen als Balkendiagramm an.
Vergleicht man nur Messungen eines einzigen Spiels, wird dieses als Überschrift über das Diagramm gesetzt, bei verschiedenen Spielen wird deren Name an die Balken geschrieben.
Zusätzlich steht ein einstellbarer Kontext an jedem Eintrag.
In der unteren Toolbar kann die Sortierung geändert, sowie die angezeigten Parameter und der Kontext eingestellt werden.
Zusätzlich kann mit dem Grouping Toggle die Art der Sortierung umgestellt werden:
Aus-> Alle Einträge werden nach FPS sortiert
An-> Einträge werden erst nach Spiel, dann nach FPS sortiert
Im zweiten Reiter können die Frametime Graphen und die L-Shapes miteinander verglichen werden.
Ein Mouseover über die Einträge in der Liste hebt den jeweiligen Graphen hervor, zusätzlich kann die Farbe geändert und der Graph ausgeblendet werden.
In der Toolbar kann der Range Slider und die Anzeige des Kontextes als Legende im Frametime Diagramm ein- oder ausgeschaltet werden. Die Einstellung des Kontextes ist für beide Reiter gleich.
(Die Steuerung der Graphen kann in den Optionen im Reiter "HELP" gefunden werden.)
Report View
Die Report View ist eine simple Ansicht, um alle in den Messungen enthaltenen Daten kompakt darzustellen. Mit einem Rechtsklick kann man diese Daten auch in die Zwischenablage kopieren und z.B. in Excel einfügen.
Synchronization View
Auf der Synchronization View ist es möglich, die Funktionsqualität des eigenen Monitors bzw. dessen Sync-Technik zu überprüfen. Das Ziel einer adaptiven Sync-Technik wie FreeSync oder G-Sync ist es, dass die Frames mit möglichst wenig Verzögerung auf dem Monitor angezeigt werden, wenn sie die Render Pipeline verlassen. Deswegen sollten die Kurven "Frametimes" und "Display changed times" idealerweise nahezu gleich aussehen. In diesem Fall folgt die Bildaktualisierung des Monitors den Frametimes des Systems adaptiv, was zu einem flüssigen Spielerlebnis führt.
Unter dem Graphen werden zwei Prozentwerte angezeigt. Der erste zeigt die Rate der Übereinstimmung von Frametimes und Display Changed Times, der zweite zeigt den Anteil der Frames, die innerhalb des definierten Sync Bereichs des Monitors liegen.
Das Histogramm im unteren Bereich zeigt die diskrekte Verteilung der Bildaktualisierungszeiten. Unten rechts befindet sich ein Kuchendiagramm, das anzeigt, wie viele Frames "gedroppt", also letztlich nicht angezeigt wurden.
Im zweiten Tab wird der Input Lag als Graph, Balkendiagramm sowie als Histogramm angezeigt.
Dieser Wert ist nur eine Annäherung, da wir die Daten nicht exakt von PresentMon bekommen können, allerdings gab uns der Entwickler eine Formel, mit der man aus den vorhandenen Daten den Input Lag recht genau abschätzen kann.
Bei Fragen, einfach posten hier im Thread. Feedback ist immer gerne gesehen.
Beste Grüße, ZeroStrat
Zuletzt bearbeitet von einem Moderator: