Verständnisfrage zum Thema Vsync

Skidrow

Lt. Commander
Registriert
Aug. 2006
Beiträge
1.191
Hi Leute,

habe gerade mal ein bisschen in The Witcher mit den Grafikeinstellungen rumgespielt. Dabei wundert mich eine Sache, aber wahrscheinlich gibt es eine ganz einfache Erklärung dafür.

Wenn ich Vsync einschalte und die FPS-Begrenzung deaktiviere, habe ich FPS so zwischen 30 und 50, bei 60 Hz. Das wundert mich ein bisschen, da ja eigentlich die FPS durch Vsync 60 oder einen Teiler von 60 haben müsste, also in meinem Fall 30 FPS. Wie kommt es, dass die FPS trotzdem schwanken, zumal ich kein Tearing habe, also muss ja Bildwiederholfrequenz=Framerate sein?!

Das gleiche ist, wenn ich in der ini die FPS auf zb 50 festlege. Dann habe ich 50 FPS im Spiel, kein Tearing und das trotz 60 Hz.

Danke schon mal :)
 
Unwahrscheinlich. Denn in der Nvidia Systemsteuerung hab ich nix verändert und dort steht alles auf "An". Außer Witcher 3 schaltet das automatisch an. Aber selbst wenn, müsste ich ja Tearing sehen, wenn die 60 Hz nicht erreicht werden. Adaptiv heißt doch nur, dass Vsync je nach FPS aktiviert bzw deaktiviert wird.
 
1. Tearing wenn FPS > Hz
2. Die 60 / x Regel gilt für jedes Frame. Heißt, ein Frame dauert bei VSync immer 16,66 ms; 33,33 ms; 66,66 ms etc. lang. Schwankst du immer knapp um 16,66 ms, also ein Frame 16,66 ms der nächste 33,33, der nächste wieder 16,66 ms, dann ist die Regel erfüllt, im Schnitt hast du aber unter 60, auber über 30 FPS. -> Führt zu Mikrorucklern.
Andere Erklärung wäre Tripple Buffering, aber ka ob das TW kann/nutzt.
 
V-Sync heisst nur dass erst wenn das komplette Bild berechnet wird es auch ausgegeben wird, die Folgen:

- Du kannst maximal soviel fps wie Hz haben (auf TFT in der Regel 60)
- Du hast definitv kein Tearing wie ohne V-Sync
- Du kannst trotzdem sämtliche Frameraten zwischen 1 und 60 haben

Dass mit aktiviertem V-Sync gerne mal zwischen 30 und 60 fps gesprungen wird kann man sich so erklären.

Für 60 fps darf der PC pro Bild maximal 1/60 = 0,166s = 166ms benötigen

Benötigt er für jedes Bild immer ca. 180s taktet zeigt der Monitor 1 mal das Bild, bekommt kein neues Signal also nochmal das gleiche und dann ein frisches Bild, dann wieder das gleiche, dann eine neues

-> 1 1 2 2 3 3 4 4 ...

Dadurch ergeben sich exakt 30 fps

Hat ein Spiel aber sehr schwankende Berechnungszeiten von 100ms bis hoch zu 250 ms kann je nach Bildschwankung un Szene ein Bild 2 mal, 3 mal oder eben nur 1 mal angezeigt werden z.B.

-> 1 2 3 4 4 5 5 6 7 7 8 9 10 ...

Dadurch ergeben sich fps zwischen 1 und 60
 
Zuletzt bearbeitet:
Tripple-Buffer wird sein Nvidia-G80 etwa (wie lange ist das her) durch den Treiber in DX-Games forciert.
Das 60/30 hast Du nur wenn Tripple-Buffer deaktiviert ist. Dazu braucht es aber explizit einen Schalter im Game.
 
Ich hab ja wie gesagt auch kein Tearing, wenn ich die FPS flexibel lasse, daher kommt doch eigentlich tatsächlich nur Buffering in Frage?

@derin
Warum kann ich trotzdem sämtliche Frameraten haben? Wenn das Frame erst ausgegeben wird, wen es komplett fertig ist, muss es doch zwangsläufig entweder Tearing geben oder sich auf 30 reduzieren? Das war doch auch immer der Grund, warum es hieß, man solle Vsync deaktivieren, damit die Framerate nicht einbricht.

@HisN

Das würde es erklären.
 
Wie gesagt, auf die Frametimes kommt es drauf an.

Bei 60 FPS ist ein Frame 16,66 ms "lang"
Bei 30 FPS ist ein Frame 33,33 ms "lang"
Bei 15 FPS ist ein Frame 66,66 ms "lang"

Ohne Vsync wird ein Frame immer sofort ausgegeben, wenn es fertig ist.
Mit VSync wir immer bis zum nächtens "Sync" gewartet.
Ist das Frame in unter 16,66 ms fertig, wird es zur 16,66 ms Marke ausgegeben. Dauert es länger wie 16,66 ms, aber kürzer wie 33,33 ms, wird es zur 33,33 ms Marke ausgegeben. etc.

Nun sind die Frametimes nie konstant. Sie ändern sich von Frame zu Frame

Nun gibt es zwei Fälle:

a) sie Schwanken relativ stark und/oder sind nah einer Marke und "hüpfen" deshalb um eine der Marken (z.B. die 16,66 Marke).

-> Du hast mal 16,66 ms, mal 33,33 ms. -> FPS unter 60, aber über 30.

b) sie schwanken relativ schwach und bleiben dabei immer zwischen zwei Marken.
Hättest du z.B. konstant 45 FPS würde das eine Frametime von 22,22 ms. Das ist größer 16,66, aber kleiner 33,33. Deshalb wir immer bis zur 33,33 ms Marke gewartet -> konstant 30 Hz.

Was also genau passiert, hängt vom Spiel ab und wie viel FPS du ohne VSync hättest (nur knapp unter 60 und ab und zu über -> Fall a; Weit unter 60 und das recht konstant -> Fall b).
 
Zuletzt bearbeitet:
Danke für den Link. Allerdings erklärt er das oben geschilderte Phänomen nicht.
 
Zurück
Oben