Verständnisfrage: Warum verbessert ein FPS-Limit das VSync-Ruckeln unterhalb 60 Fps?

compujack

Lt. Junior Grade
Registriert
März 2011
Beiträge
333
Hallo,

ich spiele nun auf meiner GTX 970 Elder Scrolls Online und mangels effizienter Kantenglättung und störrischer Treiber aktivierte ich die UHD Dynamic Super Resolution. Hier spielt es sich immer noch akzeptabel flüssig. In offenem Gebiet oftmals mit ca. 45 FPS. Doch leider kommt hier sehr störendes VSYNC-Ruckeln ins Spiel, da eben die vollen 60FPS nicht gehalten werden und der Monitor ständig zwischen 30Hz und 60Hz hin und herspringt, um synchron zu bleiben. Die 45 FPS sind also quasi nur der Durchschnittswert und real setzt sich die Szene pro Sekunde immer aus einem bunten Mix von Frames mit 16ms bzw. 33ms Haltezeiten zusammen.


Zur Übersicht:

Ich habe einen 60Hz-Monitor.

Für die Berechnung von 60 FPS braucht der Monitor pro Frame 16,66ms
Für die Berechnung von 30 FPS braucht der Monitor pro Frame 33,32 ms



Man kann also sagen, jedes Berechnungszeitfenster für ein Bild bei 60Hz-Betrieb in VSync (oder ich nenne sie auch 1 von 60 Containern) in den vorgegebenen Limits (16,66ms) gefüllt werden muss. Wird das überschritten, wird das identische Frame nochmal gezeigt - der zeitlich direkt nachfolgende Container wird mit dem selben Bild befüllt.

Beispiel optimal (60 FPS werden gehalten)

Container 1: Berechnungszeit <16,66ms -> Frame 1
Container 2: Berechnungszeit <16,66ms -> Frame 2
Container 3: Berechnung abgeschlossen -> Frame 3
Container 4: Berechnungszeit <16,66ms -> Frame 4

Schwankende FPS

Container 1: Berechnungszeit <16,66ms -> Frame 1
Container 2: Berechnungszeit >16,66ms -> Frame 1 wird gehalten
Container 3: Berechnungszeit <16,66ms -> Frame 2
Container 4: Berechnungszeit <16,66ms -> Frame 3

Hier kommt bei Zeitfenster/Container 2 die Berechnung hinterher und wird nicht im vorgegeben Zeitrahmen fertig - daher wird Frame 1 einfach nochmal angezeigt. Passiert das zu dicht hintereinander oder zu häufig, nimmt man diesen Effekt als unschönen, ruckelnden Schluckauf bei Bewegungsabläufen war. Man hat also folgende Wahl in so einer Situation, um dieses ekelhafte Stocken zu vermeiden:

1.30Hz-VSync (da 30FPS konstant gehalten werden können)
2.Vsync deaktivieren, dafür aber Tearing (zerrissene Bilder) in Kauf nehmen



Soweit hoffe ich, dass dies richtig von mir ist. Nun habe ich festgestellt, das dieses VSync-Ruckeln definitiv und spürbar abnimmt, wenn ich die maximale FPS per MSI Afterburner/RivaTuner Statistic Server limitiere, zum Beispiel auf 45 oder 42. Womit ist das zu erklären? Ich dachte zunächst, es würde quasi die "Fallhöhe der Schwankung" von 60 zu 30FPS auf 45 zu 30FPS reduziert und Aussetzer wären dadurch subjektiv schlechter wahrzunehmen. Aber der Monitor kennt doch nur 60Hz oder 30Hz, 20Hz, 15Hz als synchrone Frequenz - 45Hz gehört nicht in sein Repertoire. Er überschreitet doch nach wie vor mit 45FPS das nötige Zeitfenster von 16,66ms (60Hz) und müsste somit immer wieder auf das 30Hz-Fenster mit 33,32ms zurückfallen. Der Wechsel zwischne 60Hz und 30Hz findet also immer noch statt - warum also diese sichtbare Verbesserung ???


Ich bin nun total verwirrt - zwar glücklich, dass es funktioniert, aber nun auch neugierig, wie sich das erklären lässt. Vielleicht hab ich ja auch irgendetwas Essenzielles total falsch verstanden.
 
Zuletzt bearbeitet:
Da Spiel dann noch ein anderer Faktor mit rein. und Zwar das, was das Frame darstellt. Bei 60 FPS liegen zwischen zwei Bildern die 16 ms, dass heißt auch, dass das Spiel um 16 ms fortgeschritten ist. Bei 30 FPS liegen 32 ms dazwischen.
Also ein Sprung von 16 ms im Spielfortschritt. Bei 45 FPS liegen demnach 24 ms zwischen zwei Spielszenen. Die Ausgabe schwankt zwar weiterhin um 16 ms, dass was du aber vom Spiel siehst aber nur um 8 ms.

(Zahlen vereinfacht)

Nehmen wir mal ein extrem Beispiel: ein 1 Hz Monitor. Darauf soll ein Spiel dargestellt werden, bei ein Fahrzeug 1 m/s fährt.
1. Fall: Das spiel wird mit 1 FPS gerendert: Pro Sekunden ist das Fahrzeug 1 Meter weiter
2. Fall: Das spiel wird mit 0,5 FPS gerendert: Pro 2 Sekunden ist das Fahrzeug 2 Meter weiter

Mischt man nun Fall 1 und 2, so springt das Fahrzeug mal 1 Meter, mal 2 Meter nach vorne -> ruckeln.

3. Fall: Das spiel rendert mit 0,5 und 0,75 FPS (limiter). Das Fahrzeug springt mal 2, mal 1,5 Meter nach vorne -> flüssiger

Deshalb stören sich so wenige (Konsolenspieler) an 30 FPS, da wird immer 2 Meter gesprungen, und dass ist dann wieder recht flüssig.
 
Zuletzt bearbeitet:
Ich würde mal vemuten, dass es abwechselnd 17 und dann 33ms braucht, und das zwar unregelmäßig, es aber nicht wahrnehmbar ist, solange es wirklich immer nach genau 1 frame wechselt.
 
Da du eine NVIDIA Graka hast, schonmal mit adaptiven VSync versucht? (einzustellen in der NVIDIA Systemsteuerung)

nVidia-Adaptive-VSync.jpg
 
Adaptives V-Sync führt aber bei unter 60FPS auch zu Tearing, da V-Sync abgeschalten wird.

Ein FPS Limiter hat bei V-Sync noch einen speziellen Vorteil: er verhindert den Input-Lag des Tripple-Buffers. Um zu testen ob das schon der Grund ist setz den Limiter mal auf 59FPS.
 
Nilson schrieb:
Da Spiel dann noch ein anderer Faktor mit rein. und Zwar das, was das Frame darstellt. Bei 60 FPS liegen zwischen zwei Bildern die 16 ms, dass heißt auch, dass das Spiel um 16 ms fortgeschritten ist. Bei 30 FPS liegen 32 ms dazwischen.
Also ein Sprung von 16 ms im Spielfortschritt. Bei 45 FPS liegen demnach 24 ms zwischen zwei Spielszenen. Die Ausgabe schwankt zwar weiterhin um 16 ms, dass was du aber vom Spiel siehst aber nur um 8 ms.

(Zahlen vereinfacht)

Nehmen wir mal ein extrem Beispiel: ein 1 Hz Monitor. Darauf soll ein Spiel dargestellt werden, bei ein Fahrzeug 1 m/s fährt.
1. Fall: Das spiel wird mit 1 FPS gerendert: Pro Sekunden ist das Fahrzeug 1 Meter weiter
2. Fall: Das spiel wird mit 0,5 FPS gerendert: Pro 2 Sekunden ist das Fahrzeug 2 Meter weiter

Mischt man nun Fall 1 und 2, so springt das Fahrzeug mal 1 Meter, mal 2 Meter nach vorne -> ruckeln.

3. Fall: Das spiel rendert mit 0,5 und 0,75 FPS (limiter). Das Fahrzeug springt mal 2, mal 1,5 Meter nach vorne -> flüssiger

Deshalb stören sich so wenige (Konsolenspieler) an 30 FPS, da wird immer 2 Meter gesprungen, und dass ist dann wieder recht flüssig.

Ich verstehe dein Beispiel. Aber mich verwundert halt nur die vorhandene Synchronität: 0,5Hz ist ein Teilfaktor deines 1Hz-Monitores im Beispiel und vergleichbar mit dem 30Hz und 60Hz bei meinem Monitor - 0,75Hz (aka 45Hz) passen da aber nicht rein. Da müsste es doch Tearing geben, gibt es aber nicht.




@ Cheesy: Adaptive VSync ist keine interessante Lösung, wenn man unbedingt auf Tearing verzichten möchte. Tearing verschwindet nur im Hz-synchronen Betrieb. Fällt die FPS-Rate bei einem 60Hz-Bildschirm unterhalb von 60Fps, schaltet das Adaptive VSync einfach die Synchronisation aus. Das Resultat: keine Ruckler, konstante Bewegung - aber dafür eben wieder Tearing. Jedenfalls glaube ich, dass es so funktioniert und deckt sich mit meinen Beobachtungen:

Bildrate > 60FPS -> AdaptiveVsync schaltet VSync ein, um Tearing zu verhindern
Bildrate < 60FPS -> Adaptive Vsync schaltet VSync aus, um auf Kosten von Tearing Ruckler zu vermeiden
 
Zuletzt bearbeitet:
Nene, Weiterhin 1 Hz.
z.B.

0 s = 0 m
1 s = 1 m (1 FPS)
2 s = 2 m (1 FPS)
3 s = 3 m (1 FPS)
4 s = 3 m (nur 0,5 FPS)
5 s = 5 m (Sprung -> rucklen)
6 s = 6 m (1 FPS)

Nun aber mit limiter

0 s = 0 m
1 s = 0 m (0,75 FPS)
2 s = 1,5 m (0,75 FPS -> Sprung)
3 s = 3 m (0,75 FPS)
4 s = 3 m (0,75 FPS)
5 s = 4,5 m (0.5 FPS -> Sprung))
6 s = 6 m (0.5 FPS -> Sprung)

-> mehr, Sprünge, aber dann nur 1,5 Mrter Sprünge statt 2 Meer.
 
Zuletzt bearbeitet:
ich versuch mal darüber nachzudenken :)
Schade nur, dass im Grafiktreiber es keine Voreinstellung für so eine Konfiguration (Vsync mit 45fps Limit) gibt. Jedenfalls ist mir das entgangen und sicherlich macht so ein Setup Spieler glücklicher als mit permanenten, gut sichtbaren Sprüngen zu leben oder alternativ mit Tearing bzw. nur 30FPS auszukommen.
Der Dreifachbuffer sollte auf Kosten der Speicherbelegung so ein Stotterproblem doch auch beheben, scheint aber in meinem genannten Spiel keinerlei Auswirkung zu haben.


Muss man alles selbst regeln und als Spieler ohne große Kenntnisse erstmal ergooglen.
 
Zuletzt bearbeitet:
Gibt es. Geht über den NvidiaInspektor

Wenn es dich wirklich nervt, wäre evtl ein G-Sync Monitor was für dich (kostet aber auch was)
 
Zurück
Oben