PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CapFrameX - Capture und Analyse Tool


ZeroStrat
2019-01-06, 19:00:39
Hallo Community,

ich habe in den letzten Monaten ein eigenes Frametime Analyse Tool entwickelt, das auf der letzten Version von OCAT (V1.3) aufsetzt. Die Frametime-Daten und System-Infos werden von den OCAT Aufzeichnungen übernommen, visualisiert und ausgewertet.

https://raw.githubusercontent.com/DevTechProfile/CapFrameX/master/Images/Single_Record_small.png
https://raw.githubusercontent.com/DevTechProfile/CapFrameX/master/Images/Single_Record.png

Code + Beschreibung auf GitHub:https://github.com/DevTechProfile/CapFrameX
Offizieller Download-Link: https://github.com/DevTechProfile/CapFrameX/releases
Offizieller Download-Link OCAT: https://github.com/GPUOpen-Tools/OCAT/releases

Featureliste:


Automatic file record (OCAT) management/directory observer
Selectable records in DataGrid/ searching in DataGrid
Displaying frametime graph and moving average
Scrollable sliding window on frametime data
Calculating and displaying basic parameter (average, p-quantiles, min)
Calculating and displaying adaptive standard deviation
Calculating and displaying stuttering percentage
Calculating and displaying L-shape curve
Removing outliers
Record comparison (performance parameter, L-shape analysis)
Displaying system info from OCAT record file
Export performance parameter and graphs (Excel)
Export comparison table as report (Excel)


Warum habe ich die Zeit investiert, um ein eigenes Tool entwickeln?

Zum einen ist OCAT ein sehr professionelles Tool, dass alle gängigen APIs unterstützt. Leider sind die Analysefunktionen, die es mitliefert sehr begrenzt. Genau dort wollte ich ansetzen. Tools wie FRAPS bieten nicht den Support wie OCAT und sind daher nicht zukunftstauglich.

Afterburner bietet ebenfalls vergleichbare Möglichkeiten, wenngleich der Analyseumfang geringer ist als bei CapFrameX. Das größte Manko ist die Mittelwertbildung über das eingestellte Sampling-Intervall. Dies kann beispielsweise zu Inkonsistenzen der Art führen, dass der Min-Wert größer ausfällt als das 0.1% Quantil. Um das zu umgehen, müsste das Sampling-Intervall auf 5ms, besser sogar 2ms eingestellt werden. Das kann allerdings einen negativen Einfluss auf die Gaming-Performance haben.

Ähnliches lässt sich beim Adrenalin Treiber für AMD Grafikkarten beobachten. Ein Sampling-Intervall von 2ms kann teils negative Auswirkungen auf die Performance haben.

Was ich hier erschaffen wollte, ist ein Tool, dass alle interessanten Performance-Parameter berechnen kann und zwar konsistent und transparent. Der Quellcode ist öffentlich zugänglich und steht damit zur allgemeinen Diskussion. Alle Werte werden nach korrekten mathematischen Methoden berechnet. Durch den Open-Source Ansatz ist alles und für jeden stets überprüfbar.

Das Tool kann von Profis eingesetzt werden, die die Aufzeichnungen von OCAT komfortabel verwalten wollen. Alle Daten aus den Aufzeichnungen können per Kontextmenü ausgewählt und in die Zwischenablage kopiert werden, so dass ein Export nach Excel einfach und zügig durchgeführt werden kann.

Ich möchte ausdrücklich, dass CapFrameX ein Community-Projekt wird, daher ist konstruktive Kritik an dem Tool und Vorschläge für Verbesserungen immer gerne gesehen!

Bugs dürfen natürlich gerne hier oder auf GitHub (Issue) berichtet werden.

Viel Spaß beim Benchen, ZeroStrat

Edit: Ich werde in den nächsten Tagen ein Video Tutorial nachreichen. Falls ihr vorab schon Fragen habt zu dem Tool, scheut euch nicht, diese zu stellen.

Morgenlicht
2019-01-07, 03:29:53
Lässt sich von diesem Tool auch eine Portable-Version (installationsfreie) erstellen?

ZeroStrat
2019-01-07, 08:15:06
Lässt sich von diesem Tool auch eine Portable-Version (installationsfreie) erstellen?

Theoretisch sollte das möglich sein. Darf ich fragen, warum du das brauchst?

@all: Im ersten Link oben sind übrigens Screenshots der Oberfläche, wenn man nach unten scrollt.

Raff
2019-01-07, 11:11:51
Sieht vielversprechend aus, danke für deinen Einsatz! :up: Sehe ich mir schnellstmöglich genauer an.

MfG,
Raff

ZeroStrat
2019-01-07, 11:42:06
Sieht vielversprechend aus, danke für deinen Einsatz! :up: Sehe ich mir schnellstmöglich genauer an.


Prima! Bin auf dein Feedback gespannt. :up:


@all: Noch ein allgemeiner Hinweis. Wenn ihr den Installer runterladet, dann werdet ihr einen Warnhinweis von Windows bekommen. Ich habe zwar die eigentliche Exe gesigned, aber das Wix Toolkit scheint das nicht zu übernehmen. Ich arbeite an einer Lösung über MSI files.

Die Software ist unbedenklich! Das gleiche gilt für OCAT.

Iscaran
2019-01-07, 11:58:11
Welche Anforderungen an Hardware/Software hat das CFX bzw. OCAT ?

Kann ich das z.B. einfach als User mit Interesse an eigenen Frametimes installieren und laufen lassen auf dem heimrechner ?

Also einfach OCAT+CFX installieren und dann game starten und "fertig" ?
Oder braucht man was besonderes zusätzliches noch dazu ?

ZeroStrat
2019-01-07, 12:25:51
Welche Anforderungen an Hardware/Software hat das CFX bzw. OCAT ?


Ganz wichtig ist, dass OCAT V1.3 verwendet wird. Ansonsten kümmert sich der Installer um alles. Windows 7 habe ich auch getestet. Wird unterstützt.


Also einfach OCAT+CFX installieren und dann game starten und "fertig" ?
Oder braucht man was besonderes zusätzliches noch dazu ?

Du installierst zunächst OCAT, dann CapFrameX. Wenn du eine Aufzeichnung durchführen willst, startest du OCAT. Eine Aufzeichnung wird mit F12 gestartet und auch beendet. Wenn CapFrameX während der Aufzeichnung läuft, werden alle Daten automatisch in der Liste auf der linken Seite importiert. Es kann auch danach gestartet werden. Beim Starten wird ebenfalls alles importiert.

Hier noch ein Video, wie beide Tools (noch alte Version von CapFrameX) live verwendet werden: https://www.youtube.com/watch?v=4GaibVqatv4

Screemer
2019-01-07, 13:03:44
Könntest du das Tool noch um Funktionen erweitern, die der genericlogviewer (https://www.computerbase.de/forum/threads/logviewer-fuer-aida64-hwinfo-gpu-z-ist-da.1227694/) bietet? So könnte man z.b. frametimes, Verbrauch und Takt in Relation stellen.

Schon Mal vielen Dank für das schon jetzt tolle Tool!

ZeroStrat
2019-01-07, 13:24:58
Könntest du das Tool noch um Funktionen erweitern, die der genericlogviewer (https://www.computerbase.de/forum/threads/logviewer-fuer-aida64-hwinfo-gpu-z-ist-da.1227694/) bietet? So könnte man z.b. frametimes, Verbrauch und Takt in Relation stellen.

Schon Mal vielen Dank für das schon jetzt tolle Tool!

Vielen Dank! Dieser Logviewer scheint ein super Tool zu sein. Daher will ich auch gar keine Konkurrenz darstellen. ^^

CapFrameX ist ein reines Frametime Analysetool, welches erstmal nur mit OCAT zusammenarbeiten soll. Das Alleinstellungsmerkmal ist die Adaptive Standardabweichung und die L-Shapes, womit man Glattheit und Stuttering hervorragend analysieren kann.

Um andere Datenquellen einzubinden, müsste ich das Tool umfangreich erweitern. Vielleicht kommt das später noch. Allerdings möchte ich mich zunächst auf die Frametimes konzentrieren. Es werden noch einige interessante Features kommen. :smile:

ZeroStrat
2019-01-07, 21:15:25
Hier ein kleines Tutorial zum dem Thema:

https://youtu.be/0-5YM9-iKOU

Morgenlicht
2019-01-08, 01:54:38
Theoretisch sollte das möglich sein. Darf ich fragen, warum du das brauchst?Ich bin immer sehr skeptisch, wenn Installationsroutinen durchlaufen müssen für kleine hilfreiche Tools. Die Frage nach portable bezog sich in dem Fall mehr auf die Programmausführung, ohne daß das System durch die Installation "verseucht" wird.

Wenn das Tool nur durch Installation zum sicheren Betrieb überredet werden kann, dann verstehe ich das.

ZeroStrat
2019-01-08, 09:46:25
Ich bin immer sehr skeptisch, wenn Installationsroutinen durchlaufen müssen für kleine hilfreiche Tools. Die Frage nach portable bezog sich in dem Fall mehr auf die Programmausführung, ohne daß das System durch die Installation "verseucht" wird.


Ich habe hier die Dateien in "Rohform sozusagen: https://1drv.ms/u/s!AuNH4ODdyhLpgwNXfSJJ7kROtK8Y

Du extrahierst das Zip File und startest "CapFrame.exe" in dem Ordner.

ZeroStrat
2019-01-16, 19:16:18
Die Version 1.0.1 steht zum Download bereit: https://github.com/DevTechProfile/CapFrameX/releases

Viele Änderungen sind jetzt nicht enthalten, aber ich musste den Release vorziehen, weil es einen kritischen Bug bei der Berechnung der Average Werte gab, der möglicherweise auftreten konnte.

Änderungen:

1. Schneiden von Graphen/Daten auf der Seite "Single Record". Dazu muss der Expander "Data/Chart Settings" geöffnet werden. Danach den Toggle Button "Cutting Mode" aktivieren. Es werden zwei Slider eingeblendet, mit denen von rechts und links gekürzt werden kann.

2. Benutzerdefinierter Vergleichskontext durch Kommentare (in CSV File abspeichern). Rechte Maustaste auf einen Eintrag in der Liste links öffnet ein Kontextmenü. "Edit record data" klicken und Daten bearbeiten. Mit "OK" werden die Daten dauerhaft gespeichert. Auf der "Record Comparison" Seite steht ein weiterer Kontext bereit.

3. Ordner für Datenquelle verwalten in den Settings. Settings öffnen und den Button mit dem Ordnersymbol anklicken. Danach öffnet sich ein Dialog zum auswählen den Quellordners.

http://extreme.pcgameshardware.de/fullsizeImage.php?i=1027956

FlappyStompy
2019-02-14, 23:05:43
Hey! Cooles Tool, gefällt mir! Eine Kritikpunkt hätte ich: Das Stuttering relativ zu den absoluten Frames anzugeben kaschiert gegebenenfalls ein unangenehmes Spielgefühl (denke an periodische Ruckler alle 2 Sekunden bei ~144fps, das wäre dann immer noch ein Wert unter 1%). Die absolute Zahl der Ruckler wäre denke ich sinnvoller.

Und: Wäre es vielleicht möglich, den Einlese-Part ein bisschen aufzubohren, sodass man alternativ eine Tabellenformatierung angeben kann? Wäre für Logs aus irgendwelchen eingebauten Benchmarks in Spielen vielleicht ein netter Zusatz.

ZeroStrat
2019-02-26, 08:10:18
Hey! Cooles Tool, gefällt mir! Eine Kritikpunkt hätte ich: Das Stuttering relativ zu den absoluten Frames anzugeben kaschiert gegebenenfalls ein unangenehmes Spielgefühl (denke an periodische Ruckler alle 2 Sekunden bei ~144fps, das wäre dann immer noch ein Wert unter 1%). Die absolute Zahl der Ruckler wäre denke ich sinnvoller.

Und: Wäre es vielleicht möglich, den Einlese-Part ein bisschen aufzubohren, sodass man alternativ eine Tabellenformatierung angeben kann? Wäre für Logs aus irgendwelchen eingebauten Benchmarks in Spielen vielleicht ein netter Zusatz.

Hallo FlappyStompy,

es ist bereits geplant, den Stuttering-Wert als Kuchendiagramm darzustellen. Das Standardverhalten wird sein, dass sowohl die relativen, als auch die absoluten Werte angezeigt werden.

Was den anderen Punkt betrifft, hätte ich eine Rückfrage: was meinst du genau mit Tabellenformatierung? Ein paar Beispiele wären hilfreich für mich.

Grüße, ZS

FlappyStompy
2019-03-06, 03:05:53
Ich dachte an eine Funktion, die es erlaubt, für eine Tabelle in Textform anzugeben, welche Art Daten in welcher Spalte liegen, z.B. 1-10 Spalten a la

Name1 Name2 Name3 Name 4 Name 5 Name6 ...
%f %f %f %f %f %f ...

mit den üblichen Flags für Fließkommazahlen. In irgendeiner Art und Weise liest Du ja auch die OCAT-Logs ein und arbeitest dann mit speziellen Spalten, weil Du weißt was drin liegt, oder? Ich habe in den Quellcode nicht reingeschaut, weil ich noch nie etwas auf Windows programmiert habe. Für die einzelnen Spalten wäre es ja dann vielleicht möglich, die gleichen Operationen drauf loszulassen, wie Du sie sowieso schon implementiert hast. Wie gesagt, dann könnte man auch Logs von eingebauten Benchmarks durch Dein Programm drehen.

ZeroStrat
2019-03-12, 09:07:51
Es ist eh geplant, alles aus den OCAT Logs herauszuholen, was möglich ist. Ich werde das auch konfigurierbar machen, so dass man sich von der Informationsflut nicht erschlagen fühlt.

ZeroStrat
2019-03-21, 08:34:14
Ich habe einen Release gewagt: https://github.com/DevTechProfile/CapFrameX/releases

Neue Features:


Synchronization info (G-Sync + FreeSync)
Average low 0.1% and 1% parameter
PNG analysis export
Direct data editing (comments and CPU/GPU info)
Better DataGrid sorting + searching
Ignore and delete record data


Probiert auch mal die neue OCAT Version, es lohnt sich.

@Raff: Ich bin zwar nicht 100% zufrieden (bin ich eh nie ), aber ich denke, die aktuelle Version kann nun auf die Heft-CD.

ZeroStrat
2019-04-17, 21:17:03
Die neue Version 1.1.2 ist verfügbar: https://github.com/DevTechProfile/CapFrameX/releases/tag/v1.1.2

New features
* FPS graph with average line
* Configurable statistical parameter

Bugfixes
* Fixed inconsistent 1% and 0.1% low average calculation
* Fixed wrong culture settings when copying values to clipboard
* Fixed crash when moving slider to inner position (cutting mode)

Improvements
* New charts with massive performance increase

ZeroStrat
2019-04-30, 13:05:27
CapFrameX wird in der nächsten Version, die bald erscheint, eine eigene, vollwertige Capture Funktion haben. Die ersten Tests sehen sehr gut aus. Es gibt eine nahezu 100%ige Abdeckung mit korrekten Messungen bei den getesteten Spielen.

Damit haben die Anwender zukünftig ein Tool zur Verfügung, welches den gesamten Workflow massiv vereinfacht - Benchen wie aus einem Guss. Stay tuned!

ZeroStrat
2019-05-24, 21:03:38
Update vom 24.05.19 - CX mit eigener Capture Page


Hallo 3DCenter-Community,

ich habe in den letzten Monaten ein eigenes Frametime Capture und Analyse Tool entwickelt, das im Kern auf PresentMon aufsetzt.

Code + Infos auf GitHub: https://github.com/DevTechProfile/CapFrameX
Offizieller Download-Link: https://github.com/DevTechProfile/CapFrameX/releases

Warum habe ich die Zeit investiert, um ein eigenes Tool entwickeln?

Das Ziel war es, ein hoch genaues, zuverlässiges und komfortables Tool zu schaffen, was es mit der Zeit tatsächlich geworden ist.

Afterburner bietet ebenfalls vergleichbare Möglichkeiten, wenngleich der Analyseumfang geringer ist als bei CapFrameX. Das größte Manko ist die Mittelwertbildung über das eingestellt Sampling-Intervall. Dies kann beispielsweise zu Inkonsistenzen der Art führen, dass der Min-Wert größer ausfällt als das 0.1% Quantil. Um das zu umgehen, müsste das Sampling-Intervall auf 5ms, besser sogar 2ms eingestellt werden. Das kann allerdings einen negativen Einfluss auf die Gaming-Performance haben.

Ähnliches lässt sich beim Adrenalin Treiber für AMD Grafikkarten beobachten. Ein Sampling-Intervall von 2ms kann teils negative Auswirkungen auf die Performance haben.

Was ich hier erschaffen wollte, ist ein Tool, dass alle gängigen 3D APIs unterstützt und möglichst immer zuverlässig funktioniert , auch wenn unterschiedlichste Spiele gebencht werden. Alle interessanten Performance-Parameter sollen berechnet werden können und zwar konsistent und transparent. Der Quellcode ist öffentlich zugänglich und steht damit zur allgemeinen Diskussion. Alle Werte werden nach korrekten mathematischen Methoden berechnet. Durch den Open-Source Ansatz ist alle stets überprüfbar.

Das Tool kann von Profis eingesetzt werden, die ihre Benchmarks hochpräzise erstellen und komfortabel verwalten wollen. Alle Daten aus den Aufzeichnungen können per Kontextmenü ausgewählt und in die Zwischenablage kopiert werden, so dass ein Export nach Excel einfach und zügig durchgeführt werden kann.

Ich möchte ausdrücklich, dass CapFrameX ein Community-Projekt ist, daher ist konstruktive Kritik an dem Tool und Vorschläge für Verbesserungen immer gerne gesehen!

Bugs dürfen natürlich gerne hier oder auf GitHub (Issue) berichtet werden. Habt ihr Fragen? Ich beantworte sie gerne.

Viel Spaß beim Benchen!

Liste der Features für das nächste Release:
* Redesign Comparsison Page

Hinweise: Der offizielle Release der neuen Version 1.2.1 erfolgt morgen am 25.05.2019.

Beta 1.2.1.9 kann vorab hier geladen werden: https://www.computerbase.de/forum/threads/capframex-capture-und-analyse-tool.1851025/post-22216322

Tutorial Video zur neuen Capture Page: https://www.youtube.com/watch?v=ZqMMPDxJUkk&feature=youtu.be

ZeroStrat
2019-06-15, 18:46:57
Release 1.2.3 ist am Start: https://github.com/DevTechProfile/CapFrameX/releases/tag/v1.2.3

New features
* Editable game name
* More system infos
* Record files with info header
* Sound feedback volume controller
* PresentMon record file analysis, fully compatible

Bugfixes
* Crash when entering invalid hotkey

Edit: Falls sich jemand die neue Version unmittelbar nach diesem Post heruntergeladen hat, sorry, darin war ein Bug enthalten. Die Korrektur ist ab sofort online.