Neues Frametime Analyse Tool - CapFrameX

Taxxor

Commodore
Dabei seit
Mai 2011
Beiträge
4.916
Würde ich auch sagen, ich benutze eigentlich auch nur den Y zoom.
Ich fände da auch meinen Vorschlag von gestern schick, die Min und Max werte einfach eingeben zu können, um genauer einen gewünschten Bereich zu erhalten und dann über einen Doppelklick oder einen Button wieder automatisch zu skalieren.

Ganz besonders schick könnte man auch den Zoom damit verbinden, sodass man weiterhin die Y Achse zoomen und verschieben kann, aber die Werte dann immer in den Data Chart Settings übernommen werden, und ein Doppelklick den gleichen Effekt wie der Druck auf den "Auto" Button hat.

Dann kann man sich aussuchen, entweder mit der Maus zu zoomen oder die genauen Werte manuell einzugeben.

Anschaulich würde das in etwa so aussehen:
772607



--> Der Wunsch kommt aber eigentlich auch nur daher, dass es bei den aktuellen ruckelnden Charts eine Qual ist, mit Zoomen und Verschieben eine Y Achse von z.B. 10-50ms hinzubekommen.
Mit den neuen Charts geht das vielleicht auch so fluffig, dass man die oben genannte Option gar nicht braucht.
Es sei denn, die Option bedeutet nicht viel Aufwand, aber ich denke mal das würde sie^^
 
Zuletzt bearbeitet:

ZeroStrat

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
296
Ey, was für ein Akt das jetzt war, den Zoom auf die y-Achse zu reduzieren.

Mit den alten Charts:
C#:
Chart.ZoomingMode = ZoomingMode.Y;
Mit den neuen Charts:
C#:
var zoomer = new DelegatePlotCommand<OxyMouseWheelEventArgs>((view, controller, args) =>
{
    view.ActualModel.GetAxesFromPoint(args.Position, out Axis xAxis, out Axis yAxis);

    //if zoom is disabled, return
    var isZoomEnabled = ((xAxis != null && xAxis.IsZoomEnabled) || (yAxis != null && yAxis.IsZoomEnabled));
    if (!isZoomEnabled) return;

    var current = InverseTransform(yAxis, xAxis, args.Position.X, args.Position.Y);
    var scale = args.Delta * 0.001;
    if (args.IsControlDown) scale *= 3;
    scale = 1 + scale;

    // make sure the zoom factor is not negative
    if (scale < 0.1) scale = 0.1;

    //always set yaxis to null if both y ans x axis are present
    //you can also remove this and use a forloop on the yAxis.ZoomAt line to zoom all the yAxes
    if (xAxis != null && yAxis != null) xAxis = null;

    xAxis?.ZoomAt(scale, current.X);
    yAxis?.ZoomAt(scale, current.Y);

    FrametimePlotView.Model.InvalidatePlot(false);
});

FrametimePlotView.Controller = new PlotController();
FrametimePlotView.Controller.BindMouseWheel(OxyModifierKeys.None, zoomer);
:freak::freak:
Ergänzung ()

@Taxxor Meinst du, die Leute würden so einen Zooming Mode Switch verwenden? Man muss die Settings aufklappen, den Mode umswitchen, irgendwelche Zahle eintippen, bestätigen und dann erst hat man das gewünschte Ergebnis...

Jetzt ist es so: am Mausrad drehen. Fertig. Doppelklick auf Chart -> alles beim Alten.
 
Zuletzt bearbeitet:

Taxxor

Commodore
Dabei seit
Mai 2011
Beiträge
4.916
@ZeroStrat Okay, da kann ich mit leben^^ nach oben und unten ziehen mit gedruckter MT geht auch noch wie vorher?
 

ZeroStrat

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
296
Die Sync Page ist auch umgestellt. Gerade solche "Klopper" wie unten können jetzt geschmeidig gezeichnet werden. Das neue Control lächelt nur müde beim Rendern...
 

Anhänge

ZeroStrat

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
296
Die Comparison Seite ist nun auch mit schnellen Charts versorgt. Die ausgewählten Kontexte wie CPU, GPU oder Kommentare finden sich nun auch in der Legende wieder.
 

Anhänge

Taxxor

Commodore
Dabei seit
Mai 2011
Beiträge
4.916
Wird das nicht ein wenig eng wenn man mehr als 2 drin hat?

Die Liste rechts ist doch eigentlich schon eine Legende, da die Einträge die Farben der jeweiligen Graphen haben.
Da müsste dann nur eine Zeile rein wo die CPU, GPU, custom comments stehen
 

ZeroStrat

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
296
Wird das nicht ein wenig eng wenn man mehr als 2 drin hat?
Es gibt zwar einen Wrapping Mechanismus, aber ich baue einen Schalter ein, um es abschalten zu können.

Die Liste rechts ist doch eigentlich schon eine Legende, da die Einträge die Farben der jeweiligen Graphen haben.
Da müsste dann nur eine Zeile rein wo die CPU, GPU, custom comments stehen
Man kann aber jetzt einfach sowas wie 1080p oder 1440p in die Legende schreiben. Das steht ja nicht auf der linken Seite in der Liste.

Aber ein guter Vorschlag, wie man Frametime Graphen und Balkendiagramme besser zuordnen kann, ist natürlich gerne gesehen.

Edit: Ich arbeite jetzt noch daran, dass der Cutting Mode wieder funktioniert und baue das Highlightning ein. Ich habe eine Idee, wie das funktionieren könnte. Wenn es allerdings ausarten sollte, würde ich erstmal auf Highlightning verzichten.
 
Zuletzt bearbeitet:

Taxxor

Commodore
Dabei seit
Mai 2011
Beiträge
4.916
Man kann aber jetzt einfach sowas wie 1080p oder 1440p in die Legende schreiben. Das steht ja nicht auf der linken Seite in der Liste.
Schreibt man das aktiv rein?
Das sind doch einfach die Kontexte die man rechts in den Optionen auswählt und die auch unten an den Balken stehen.
Diese könnte man doch auch in der Liste anzeigen lassen oder nicht?
Das wurde glaube ich auch schon mal vorgeschlagen .

Number of samples würde ich z.b. dafür rausnehmen(wenn eine weitere Zeile zuviel ist)und da das anzeigen lassen was man ausgewählt hat.
Ergänzung ()

Ich habe eine Idee, wie das funktionieren könnte. Wenn es allerdings ausarten sollte, würde ich erstmal auf Highlightning verzichten.
Auf jeden Fall könnte man schon mal einbauen die Graphen mit einem Klick auf den Eintrag in der Liste komplett auszublenden. Vielleicht ein Sichtbarkeits Kästchen zum ankreuzen.
Ergänzung ()

Aber ein guter Vorschlag, wie man Frametime Graphen und Balkendiagramme besser zuordnen kann, ist natürlich gerne gesehen.
Die Balken eines Graphen alle in der gleiche Farbe machen.
Also im obigen Bild einmal drei Balken blau und einmal Türkis. Damit hat man direkt die optische Zuordnung zum Graphen.

Die unterschiedliche Färbung der Balken nach Art des Wertes(AVG, P1, P0.1) kann man weglassen, indem man die Art einfach unter jeden Balken schreibt. Bzw später mit den horizontalen Balken daneben. So klappt's in der Single record Anzeige ja auch.

Die Legende kann man dann bei den Balken komplett rauslasssen
 
Zuletzt bearbeitet:

ZeroStrat

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
296
Die Balken eines Graphen alle in der gleiche Farbe machen.
Also im obigen Bild einmal drei Balken blau und einmal Türkis. Damit hat man direkt die optische Zuordnung zum Graphen.

Die unterschiedliche Färbung der Balken nach Art des Wertes(AVG, P1, P0.1) kann man weglassen, indem man die Art einfach unter jeden Balken schreibt. Bzw später mit den horizontalen Balken daneben. So klappt's in der Single record Anzeige ja auch.

Die Legende kann man dann bei den Balken komplett rauslasssen
Ich denke auch, das wäre der beste Ansatz. Plane ich mal genau so ein...
 

ZeroStrat

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
296
Ich befürchte, das sieht schlecht aus für gruppierte Balkendiagramme. Auch die neuen Charts bieten leider nicht die Möglichkeit, die Balken innerhalb einer Gruppe einzeln zu labeln, so dass der Wert oben und die Parameterbezeichnung unten steht. Es geht nur in Kombination, so dass der Platz nicht reicht. Die vertikalen Balken müssen also in Kombination mit einer Legende verwendet werden.
 

Taxxor

Commodore
Dabei seit
Mai 2011
Beiträge
4.916
@ZeroStrat Gibt es denn die Hoffnung, dass es mit horizontalen Balken dann am Ende so aussehen könnte?
773075




Sooo schlimm wäre es aber ja auch nicht, wenn man die Farben weiterhin nach Art des Wertes festlegt mit dazugehöriger Legende, wie momentan. Genau so sieht es ja auch bei PCGH aus.

Dann muss man sich eine andere Möglichkeit suchen, die Balken zuzuordnen.

Wie wäre es mit einer Art Markierung vor dem Namen in der Farbe des Charts, also so ein Punkt wie oben rechts in der Liste auch, nur etwas dezenter. Oder direkt die komplette Schrift der Bezeichnung in dieser Farbe halten.

Also so in der Art
773123
 
Zuletzt bearbeitet:

Taxxor

Commodore
Dabei seit
Mai 2011
Beiträge
4.916
@ZeroStrat
Generell stellt sich mir bei horizontalen Balken die Frage: Wären das nicht auch programmtechnisch im Grunde einfach mehrere Single Record Balken untereinander?

Im Single Record steht ja auch die Art links und der Wert rechts vom Balken.
Dann müsste man nur noch jedem Datensatz eine eigene Farbe geben den Ausgewählten Kontext davor packen und es sähe so aus wie in meinem oberen Bild. Oder denke ich da zu einfach?
 
Zuletzt bearbeitet:

ZeroStrat

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
296
@Taxxor Ja, das fiel mir auch noch ein gerade. Ich lasse das mit dem Gruppieren innerhalb eines Charts und verwende einfach ein Chart pro Gruppe. Dann kann ich es so machen, wie auf der Single Record Page. Aber die vertikale Anordnung sollte eigentlich ohne Frametime Graphen gezeichnet werden. Der Abschnitt ist doch sonst viel zu klein. Ich dachte tatsächlich an einen neuen Tab nur mit vertikalen Balken ohne Liste und ohne Frametime Graphen, dafür dann aber mit allem Schnickschnack.
 

Taxxor

Commodore
Dabei seit
Mai 2011
Beiträge
4.916
Ich dachte tatsächlich an einen neuen Tab nur mit vertikalen Balken ohne Liste und ohne Frametime Graphen, dafür dann aber mit allem Schnickschnack.
Horizontal meinst du bestimmt.

Ja das klingt gut

Dann könnte man den Platz im frametimes Tab vielleicht für etwas anderes nutzen, was mit frametimes zu tun hat.
z.b. den stuttering % Wert und die adaptive STD (in ms) der einzelnen Datensätze vergleichen.
Dafür kann man ja die jetzigen vertikalen Balken nehmen, müsste also nichts umstellen, nur die Werte austauschen.
 
Zuletzt bearbeitet:

Taxxor

Commodore
Dabei seit
Mai 2011
Beiträge
4.916
@ZeroStrat Ja ab jetzt hab ich Zeit^^

Mir ist auch ein eventuelles Problem aufgefallen bei den geplanten horizontalen FPS Balken.

Bekommst du denn eine Sortierung da rein, also dass man absteigend nach avg oder P1 sortieren kann, wenn jeder Messwert sein eigener Chart ist?

Wenn du aber sowieso dafür einen eigenen Tab machen willst, fällt doch die Notwendigkeit der optischen Zuordnung zu den Graphen weg.
Dann kann man ja auch einen einzigen Chart machen mit Legende wie in meinem 2. Bild, wenn es dadurch einfacher wird.
Zumindest wird die Unterscheidung der einzelnen Werte(avg, P1, P0.1) einfacher, wenn man eine Farbe pro Wert hat. Alles in einer Farbe zu machen diente ja nur der Zuordnung zum jeweiligen Graphen, der aber ja nun eh nicht mehr auf der gleichen Seite ist.
 
Zuletzt bearbeitet:

ZeroStrat

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2017
Beiträge
296
Hier der RC3 (Version 1.1.2.2) im Anhang. Neu und zu testen ist:
  • Statistik Parameter auf der Single Record Seite sind lokal und können mit einem Button sofort aktiv geschaltet werden, ohne die Session erneut laden zu müssen
  • Die Settings gelten auch für das Kopieren des Parameter in die Zwischenablage
  • Single Record Seite mit neuen Charts, insbesondere ist die Bedienung mit den Slidern im Cutting Mode sehr performant (Frametimes + FPS)
  • Die Balkendiagramme auf der Single Record Seite beginnen immer bei 0
  • Buttons (der aufklappbare Inhalt) zum Setzen des Vergleichskontextes und Relativmodus überdecken nicht mehr die Vergleichsliste auf der linken Seite (Ghost HitTestVisible)
  • Comparison Seite mit neuen Charts, insbesondere ist die Bedienung mit den Slidern im Cutting Mode sehr performant (Frametimes Graphen)
  • Data/Chart Settings auf der Comparison Seite aufgeräumt. Die Legende für den Vergleichskontext ist abschaltbar
  • Comparison Seite: wenn man mit der Maus über einen Eintrag in der Vergleichsliste links geht, wird der jeweilige Graph hervorgehoben
  • Data/Chart Settings auf der Synchronization Seite entfernt
  • Neue Charts auf der Synchronization Seite. Auch starke Zickzack-Graphen werden performant dargestellt
Hinweis: Die Low Average Werte werden aktuell durch Abzählen berechnet und nicht durch eine p-Quantil-Schranke. Wollen wir den alten Stand wiederherstellen?

Wenn du aber sowieso dafür einen eigenen Tab machen willst, fällt doch die Notwendigkeit der optischen Zuordnung zu den Graphen weg.
Dann kann man ja auch einen einzigen Chart machen mit Legende wie in meinem 2. Bild, wenn es dadurch einfacher wird.
Zumindest wird die Unterscheidung der einzelnen Werte(avg, P1, P0.1) einfacher, wenn man eine Farbe pro Wert hat. Alles in einer Farbe zu machen diente ja nur der Zuordnung zum jeweiligen Graphen, der aber ja nun eh nicht mehr auf der gleichen Seite ist.
Ich schlage vor, dass wir ein Konzept erstellen für diesen Tab unabhängig von technischen Restriktionen. Ich denke, dass diese Funktion später sehr wichtig werden könnte, so dass ich mich nicht auf die aktuell zur Verfügung stehenden Charts beschränken würde.
 

Anhänge

Taxxor

Commodore
Dabei seit
Mai 2011
Beiträge
4.916
Hinweis: Die Low Average Werte werden aktuell durch Abzählen berechnet und nicht durch eine p-Quantil-Schranke. Wollen wir den alten Stand wiederherstellen?
Wie auch immer du es in 1.1.1.15beta1, also vor der Diskussion hier, hattest, war es gut^^
Zumindest beim Testen mit verschiedenen Messungen wurde hier zuverlässig bei 1300 Frames exakt der Schnitt der schlechtesten 1, bei 4800 der Schnitt der schlechtesten 5 Frames genommen.
Ergänzung ()

@ZeroStrat Und hier mein kurzes Feedback, alles andere aus deiner Liste, was hier nicht auftaucht, funktioniert soweit ich das beurteilen kann gut.

1. Ohne, dass man die X Achse zoomen kann, bringt einem das Verschieben mit der Maus in X Richtung nichts.
Im Gegenteil, es ist eher nervig wenn man beim Verschieben nicht ganz gerade nach oben oder unten zieht und einen Teil des Graphen aus dem Fenster raus zieht.
Das betrifft sowohl den Single Record als auch die Record Comparison.

Wenn man sich wirklich einen Teilausschnitt z.B. von Frame 3000 bis Frame 4000 genauer ansehen möchte, könnte das Sliding Window wieder rein kommen, wie es vorher drin war, sowohl beim Single Record als auch bei der Comparison.
Man könnte allerdings auch den Cutting Mode dafür nutzen, wenn man beide Regler frei über die komplette X Achse verschieben könnte. Damit könnte man sich dann auch alles bis auf die letzten X Frames wegschneiden, um diese zu betrachten, was momentan nicht geht.
Dann sollte nur die X Achsen Beschriftung nicht immer auf 0 gehen, damit man die Stelle auch findet.



2. Die Skalierung der Y Achse bleibt im Single Record nun nicht mehr erhalten, wenn man einen neuen Record auswählt.
Die Charts auf der Comparison Seite bleiben hingegen genau auf dem Punkt stehen, wo man sie zuletzt hingeschoben hat. Auch die X Achse skaliert nicht automatisch auf die Länge des längsten Benches in der Liste.
Hier muss man aktuell bei jedem neu hinzugefügten Bench einen Doppelklick machen, damit die Skalierung wieder passt.

Also auf der Single Record sollte die Y Skalierung erhalten bleiben.
Bei der Comparison sollten beiden Achsen immer automatisch skalieren, wie es aktuell beim Single Record ist, da dort ja dann sowieso alle Graphen eine gemeinsame Skalierung nutzen.



3. Die Balkendiagramme beginnen immer noch nicht bei 0
773405




4. Die zwei Haken für das aktiv Schalten der Parameter Settings sollten eine Beschriftung bekommen.


5. Wenn ich im Cutting Mode der Comparison beide Regler in die Mitte ziehe, schmiert das Programm ab^^
 
Zuletzt bearbeitet:
Top