Nolag schrieb:Blur Busters erklärt genau, warum in der Sync Range kein VSync nötig ist. Dein 100 fps Beispiel ergibt daher keinen Sinn.
https://blurbusters.com/gsync/gsync101-input-lag-tests-and-settings/15/
Die Aussagen von Blur Busters, dass ein Limiter nicht dazu geeignet sei, die Bildrate in der Sync-Range zu halten sind rein akademischer Natur. In eigenen Experimenten hat Blur Busters selbst wiederholt nachgewiesen, dass Limiter auf 1ms genau sind. Setzt man also den Limiter so, dass man 1ms oberhalb der Zeit für den Scanout liegt, ist Tearing praktisch ausgeschlossen.
Wie oft denn noch?
https://blurbusters.com/gsync/gsync101-input-lag-tests-and-settings/15/
Wait, why should I enable V-SYNC with G-SYNC again? And why am I still seeing tearing with G-SYNC enabled and V-SYNC disabled? Isn’t G-SYNC suppose to fix that?
The answer is frametime variances.
“Frametime” denotes how long a single frame takes to render. “Framerate” is the totaled average of each frame’s render time within a one second period.
At 144Hz, a single frame takes 6.9ms to display (the number of which depends on the max refresh rate of the display, see here), so if the framerate is 144 per second, then the average frametime of 144 FPS is 6.9ms per frame.
In reality, however, frametime from frame to frame varies, so just because an average framerate of 144 per second has an average frametime of 6.9ms per frame, doesn’t mean all 144 of those frames in each second amount to an exact 6.9ms per; one frame could render in 10ms, the next could render in 6ms, but at the end of each second, enough will hit the 6.9ms render target to average 144 FPS per.
So what happens when just one of those 144 frames renders in, say, 6.8ms (146 FPS average) instead of 6.9ms (144 FPS average) at 144Hz? The affected frame becomes ready too early, and begins to scan itself into the current “scanout” cycle (the process that physically draws each frame, pixel by pixel, left to right, top to bottom on-screen) before the previous frame has a chance to fully display (a.k.a. tearing).
G-SYNC + V-SYNC “Off” allows these instances to occur, even within the G-SYNC range, whereas G-SYNC + V-SYNC “On” (what I call “frametime compensation” in this article) allows the module (with average framerates within the G-SYNC range) to time delivery of the affected frames to the start of the next scanout cycle, which lets the previous frame finish in the existing cycle, and thus prevents tearing in all instances.
And since G-SYNC + V-SYNC “On” only holds onto the affected frames for whatever time it takes the previous frame to complete its display, virtually no input lag is added; the only input lag advantage G-SYNC + V-SYNC “Off” has over G-SYNC + V-SYNC “On” is literally the tearing seen, nothing more.
I still don’t get it, then why do I need an FPS limit with G-SYNC, and why does the limit have to be below the refresh rate? Why not “at” it?
G-SYNC adjusts the refresh rate to the framerate. If the framerate reaches or exceeds the max refresh rate at any point, G-SYNC no longer has anything to adjust, at which point it reverts to V-SYNC behavior (G-SYNC + V-SYNC “On”) or screen-wide tearing (G-SYNC + V-SYNC “Off”).
As for why a minimum of 2 FPS (and a recommendation of at least 3 FPS) below the max refresh rate is required to stay within the G-SYNC range, it’s because frametime variances output by the system can cause FPS limiters (both in-game and external) to occasionally “overshoot” the set limit (the same reason tearing is caused in the upper FPS range with G-SYNC + V-SYNC “Off”), which is why an “at” max refresh rate FPS limit (see part 5 “G-SYNC Ceiling vs. FPS Limit” for input lag test numbers) typically isn’t sufficient in keeping the framerate within the G-SYNC range at all times.
Alright, I now understand why the V-SYNC option and a framerate limiter is recommended with G-SYNC enabled, but why use both?
Because, with G-SYNC enabled, each performs a role the other cannot:
- Enabling the V-SYNC option is recommended to 100% prevent tearing in both the very upper (frametime variances) and very lower (frametime spikes) G-SYNC range. However, unlike framerate limiters, enabling the V-SYNC option will not keep the framerate within the G-SYNC range at all time.
- Setting a minimum -3 FPS limit below the max refresh rate is recommended to keep the framerate within the G-SYNC range at all times, preventing double buffer V-SYNC behavior (and adjoining input lag) with G-SYNC + V-SYNC “On,” or screen-wide tearing (and complete disengagement of G-SYNC) with G-SYNC + V-SYNC “Off” whenever the framerate reaches or exceeds the max refresh rate. However, UNLIKE THE V-SYNC OPTION, FRAMERATE LIMITERS WILL NOT PREVENT TEARING.
Ein FPS limiter kann kein Tearing verhindern, weil er nicht an den Scanout des Displays gekoppelt ist. Es reicht jede noch so kleine Unregelmäßigkeit, eine simple Änderung der Framerate bzw. Frametime und schon übersteuerst du die Bildwechselzeit deines Displays, bist dadurch ausserhalb der Gsync Range und bekommst tearing. Ein Limiter ist kein Ersatz für den Sync. Und nochmal, gsync greift für diese Frames nicht.
Gsync macht das was es soll, der limiter macht das was er soll und vsync macht das was es soll.
Dass leute glauben, man kann irgendwas davon weglassen liegt einfach im fehlenden Detailverständnis der Leute. Hier eben, dass man glaubt, mit einem FPS limiter sein kein Sync mehr notwendig, weil die Frametimes in der Gsync range bleiben würde. Genau das ist aber nicht der Fall.
Du könntest in der praxis auf Vsync verzichten, wenn du den FPS limiter sehr niedrig ansetzt. Meinetwegen 100 FPS limit bei einem 144 Hz Display. Nur stell ich dann die Frage, was man sich davon erhofft. Vsync erzeugt mit der Config Gsync + Vsync + FPS Limiter eh keinen Inputlag und erlaubt es dir, die Framerate nahe der maximalfrequenz zu halten und dabei tearing zu vermeiden.
Daher frag ich mich auch, wozu die Diskussion, dass man gerne Vsync off nutzen würde.
Scheinbar gibts hier zwei Punkte, die nicht verstanden wurden.
Zum einen scheint nicht verstanden worden zu sein, warum man bei Gsync + FPS Limit zusätzlich Vsync braucht.
Zum anderen scheint auch nicht verstanden zu sein, warum Gsync + Vsync + FPS Limit keinen Vsync lag erzeugen kann.
Zuletzt bearbeitet: