Frametimes und Vsync

alalcoolj

Software-Overclocker(in)
Hallo zusammen,
wenn ich das Konzept von Vsync richtig verstanden habe, sind mit eingeschaltetem Vsync bei einem 60Hz TFT doch nur Frametimes von 16,66ms, 33,33ms, 66,66ms, etc. möglich!? Ich habe nun mit aktiviertem Vsync die Frametimes bei Batman AA und Arcania mit Fraps aufgezeichnet, und sie nehmen aber alle möglichen Werte an, z.B. 36ms wenn ich knapp unter 30 FPS habe. Der MSI Afterburner zeigt auch alle möglichen Werte an - wie bei ausgeschaltetem VSync. Vsync ist definitiv eingeschaltet, da die Obergrenze bei genau 60 FPS liegt (16,7ms Frametime).
Ich habe eine GTX275 mit aktuellstem Nvidia Treiber und einen 60Hz IPS-Panel Tft über HDMI angeschlossen.
Warum habe ich diese verschiedenen Frametimes??? In meinem Fall wird mir das Problem von Mikrorucklern durch Sprünge von 60FPS auf 30FPS nicht klar...
Danke schonmal für Eure Ideen!
 
Vsync drosselt nur die bilder pro sekunde auf 60, dieser wert wird nicht überschritten. weil ein 60hz monitor nur 60 bilder pro sekunde anzeigen kann und bei über 60 bilder tearing entsteht.

die reaktionszeit eines monitors ist wieder ein anderes thema, genauso wie der Inputlag.
 
Vsync syncronisiert die Bildausgabezeiten mit der Bildwiederholfrequenz des Monitors um Tearing zu verhindern. Liefert die Graka nicht genug Bilder, wird auf die Hälfte gedrosselt

Inputlag und Reaktionszeit sollten damit nichts zu tun haben.

Mikrorucker sind bei einer einzigen Karte übrigens eh nicht wirklich vorhanden
 
Vsynch Synchronisiert einfach die Bildrate deiner Grafikkarte mti der deines Monitors, praktishc heißt das, dass nur 60/30/30/15/12/usw FPS möglich sind. Wenn deine Grafikkarte keine 60 FPS schafft werden eben nur 30 angezeigt usw.
Vsynch kann dir keine 60FPS herbeizaubern.

Die Frametime heißt lediglich, wielange die Grafikkarte benötigt, um ein Frame zu berechnen.
Bei 60 FPS darf die Frametime also maximal bei 1/60=16,66ms liegen. Ist die Frametime höher, bekommst du nur 30 FPS angezeigt.

Wenn die Frametime wie in deinem Fall allerdings höher als 33,33ms liegt, dann bekommst du nicht einmal diese 30 FPS.
Soweit ich weiß wird Vsynch ab einer bestimmten Framerate dann einfach abgeschaltet, um die FPS nicht unnötig stark nach unten zu drücken.
 
Herkömmliches VSync wäre optimal wenn Spiele auch den "Dreifachbuffer" verwenden/Unterstützung würden.
Tun viele aber nicht und deswegen brechen die "Frames" ein.

VSYNC & Dreifachbuffer (Treiber + !! Game Engine !! )
Optimal - Keine Frame-Drops. Kein Tearing.
Nachteil - Leicht höherer Input Lag (Zusätzlicher Buffer).

VSYNC & Dreifachbuffer (Treiber ... jedoch nicht von der Game Engine verwendet/Unterstützt).
Die schlechteste Lösung - Massive Frame Drops. Kein Tearing.

Frame Limiter (Treiber)
Geht so. Tearing. Keine Frame Drops. Geringerer Input Lag (Double-Buffer).

Workaround/Kompromiss
Adaptiv VSync (Nvidia) oder Dynamic VSync (AMD)
Bei 60 FPS kein Tearing da VSYNC aktiv ist.
Double-Buffer (Geringerer Input Lag).
Sobald die 60 FPS Marke nicht erreicht werden kann ist VSync deaktiviert und statt Frame Drops gibt es eben Tearing.
Adaptiv VSync und Dynamic VSync sind somit die beste "Notlösung".
 
Zuletzt bearbeitet:
DIe beste Lösung ist wäre allerdings eine neue Grafikkarte, die dir konstant 60FPS+ bietet.
Keine Framedrops, kein Tearing ;-) Eine GTX 275 gehört halt schon zum alten Eisen.
 
Framedrops gibts natürlich auch bei Vsync mit Triplebuffering, wenn die Bildrate nicht gehalten werden kann - allerdings dann erstmal nur um ein Drittel und nicht gleich die Hälfte.

Das mit dem Inputlag ist so eine Sache:
AnandTech - Triple Buffering: Why we love it! schrieb:
In other words, with triple buffering we get the same high actual performance and similar decreased input lag of a vsync disabled setup while achieving the visual quality and smoothness of leaving vsync enabled.
Gepuffert wird eigentlich immer - auch ohne Vsync. Das ist aber der flip queue oder render queue, wenn man den auf 3, 4 oder 5 Frames einstellt, dann hat man wirklich spürbaren Lag.
Scheint vom Spiel abzuhängen, welche Art von Puffer beim Vsync genutzt wird - Im Idealfall gibts kaum Lag bei Triple oder eben einen recht deutlichen.
Mit Multi-GPU wirds erst recht schwierig. :)

DIe beste Lösung ist wäre allerdings eine neue Grafikkarte, die dir konstant 60FPS+ bietet.
Keine Framedrops, kein Tearing ;-) Eine GTX 275 gehört halt schon zum alten Eisen.

Dummerweise kann einem das keine bis jetzt real existierende Einzelgrafikkarte garantieren, ab 1680x1050 mit 4xMSAA/16xAF noch nicht einmal eine Titan und das auch nicht bei DX9-Titeln, die schon Jahre auf dem Buckel haben.
 
Zuletzt bearbeitet:
OK, danke schonmal für Eure Antworten. Ich habe im Nvidia Trieber mal die "Anzahl der vorgerenderten Bilder" auf 1 runtergesetzt und jetzt sehe ich die Framesprünge von ca. 33 auf 16 (bei rund 40FPS). Vorher war die "Anzahl der vorgerenderten Bilder" auf 3 eingestellt. Ist das so eine Art Dreifachbuffer? Ich dachte Dreifachbuffer funktioniert nur mit OpenGL und nicht mit Direct3D - oder liege ich da falsch?
Wie dem auch sei, mich hat gewundert bzw. wundert immer noch bisschen, dass ich mit einem 60Hz Monitor andere Frametimes als 16,66 (60FPS), 33,33 (30 FPS), 50 (20 FPS), 66,66 (15 FPS) usw. gemessen bekomme. Oder bedeuten die anderen Frametime-Werte wie lange die GPU zum rendern braucht (diese aber nicht unbedingt in dem Moment anzeigt!?!) ?
In der aktuellen PCGH 06/13 auf S. 43 springen die Frametimes von exakt 33,3 auf 16,6 hin und her. Hätte halt so einen klaren Effekt erwartet...
 
Im Nvidia Treiber
Dreifachbuffer: (Aus)
VSync: (Adaptiv)

In allen Spielen VSync deaktivieren bzw. den "Double Buffer" aktivieren sofern auswählbar - VSync (In dem Fall Adaptiv VSync) wird vom Treiber forciert.

Vorgerenderte Bilder bedeuten die maximale Anzahl der vorgerenderten/bereitgestellten Bilder der CPU für die GPU für das "finale" Rendering.
Den Wert sollte man auf (2) stellen.
Bei (3) gibt es bereits einen erhöhten Lag.
Der Sinn dahinter ist es stärkere/schwächere CPUs auf stärkere/schwächere GPUs anzupassen bezüglich Frame Drops.
Theoretisch eine gute Idee, praktisch nicht/kaum sinnvoll. CPU & GPU müssen zusammen passen und dürfen sich gegenseitig nicht ausbremsen. Wobei man bei der GPU jedoch mehr Einstellungsmöglichkeiten hat bezüglich der Auslastung in Spielen (Mittel/Hoch/Ultra - AA, Tessellation usw. usf.).
Die CPU kann man wenn überhaupt nur durch Schatteneinstellungen und Partikel bzw. Renderdistanzen etc. entlasten.

FPS vs. Frametime
http://www.mvps.org/directx/articles/fps_versus_frame_time.htm
 
Zuletzt bearbeitet:
Zurück