Solution to Tearing, Microstutters and Input lag (VSync)
Posted: 27 Aug 2016, 00:04
Edit: Fast Sync (nvidia only), or G-Sync / FreeSync (perhaps with a capped framerate?) is a much better option, if it works for the specific game you want to play (Fast Sync doesn't seem to work for all games).
I play old twitch shooters a lot (competitively at one point). I've identified 3 main problems, aside from bad hardware / peripherals that affect my aim in a negative way.
1) Input lag (for the sake of this thread, usually fixed by turning VSync OFF)
2) Screen tearing (fixed by turning VSync ON)
3) Microstutters (fixed by having stable locked framerate)
I've found a way, I believe, to get rid of those 3 problems. It is required that your rig is able to handle framerate above your refresh rate persistently.
VSync
I've never bothered with VSync until recently. I've found it added too much input lag while playing Quake Live, CS:GO or Left 4 Dead 2 (or any other games for that matter). Over the years I've acquired a beastly machine, great mouse, 144hz monitor etc. I have always played games with uncapped 300+ framerate playing on low settings for maximum performance.
I was recently made aware of how much screen tearing negatively affects aiming.
Also, as I understand it now, the reason why VSync adds input lag when your game can handle framerate above your refresh rate is because the game renders ahead, puts the frames in a "buffer" and then waits for the monitor's refresh cycles.
So how do you get rid of VSync's input lag? By locking your fps.
In-game FPS Limiters
According to different sources, the input lag caused by VSync can be significantly reduced by manually locking your framerate "at least 2 fps below" your refresh rate. (Example: In CSGO with a 144hz monitor, you would use fps_max 142 while using VSync ON)
It effectively makes the monitor wait for the game, not the opposite, which indeed reduces the input lag greatly. However this method introduces another inherent problem since you will see repeated frames: Microstutters.
The reason why you lock your FPS "at least 2 fps below" is because the in-game FPS limiter isn't precise enough, and the FPS would otherwise, every now and then, fluctuate and render over the 144 FPS mark introducing a great amount of input lag in the process.
The ultimate solution to this is to use a rock solid FPS capping utility called RivaTuner Statistics Server.
RivaTuner Statistics Server
This application uses a "proper framerate limiting approach for SMOOTH framerate [...] a simple wait loop executed on CPU to provide expected target frame timing"1. Basically, the FPS cap is very precise and butter smooth.
That means you can set the cap to exactly match your refresh rate (in my case 144) without fear of your FPS fluctuating and going above your maximum refresh rate. It will prevent the game from rendering ahead, effectively reducing VSync's input lag.
----------------
Input lag is greatly reduced, screen tearing is non-existent and there is absolutely zero microstutters.
I have no measurement tools to back up my findings. I believe it potentially gives the best solution for butter smooth gameplay with minimum input lag. Try it out! If you've played with screen tearing all your life, you miss out big time on fluidity.
Also, let me know if works for you please! I am really enjoying the VSync experience now. Cheers.
-> Forcing VSync "ON" through nvidia control pannel
1http://forums.guru3d.com/showthread.php?p=4443926
I play old twitch shooters a lot (competitively at one point). I've identified 3 main problems, aside from bad hardware / peripherals that affect my aim in a negative way.
1) Input lag (for the sake of this thread, usually fixed by turning VSync OFF)
2) Screen tearing (fixed by turning VSync ON)
3) Microstutters (fixed by having stable locked framerate)
I've found a way, I believe, to get rid of those 3 problems. It is required that your rig is able to handle framerate above your refresh rate persistently.
VSync
I've never bothered with VSync until recently. I've found it added too much input lag while playing Quake Live, CS:GO or Left 4 Dead 2 (or any other games for that matter). Over the years I've acquired a beastly machine, great mouse, 144hz monitor etc. I have always played games with uncapped 300+ framerate playing on low settings for maximum performance.
I was recently made aware of how much screen tearing negatively affects aiming.
Also, as I understand it now, the reason why VSync adds input lag when your game can handle framerate above your refresh rate is because the game renders ahead, puts the frames in a "buffer" and then waits for the monitor's refresh cycles.
So how do you get rid of VSync's input lag? By locking your fps.
In-game FPS Limiters
According to different sources, the input lag caused by VSync can be significantly reduced by manually locking your framerate "at least 2 fps below" your refresh rate. (Example: In CSGO with a 144hz monitor, you would use fps_max 142 while using VSync ON)
It effectively makes the monitor wait for the game, not the opposite, which indeed reduces the input lag greatly. However this method introduces another inherent problem since you will see repeated frames: Microstutters.
The reason why you lock your FPS "at least 2 fps below" is because the in-game FPS limiter isn't precise enough, and the FPS would otherwise, every now and then, fluctuate and render over the 144 FPS mark introducing a great amount of input lag in the process.
The ultimate solution to this is to use a rock solid FPS capping utility called RivaTuner Statistics Server.
RivaTuner Statistics Server
This application uses a "proper framerate limiting approach for SMOOTH framerate [...] a simple wait loop executed on CPU to provide expected target frame timing"1. Basically, the FPS cap is very precise and butter smooth.
That means you can set the cap to exactly match your refresh rate (in my case 144) without fear of your FPS fluctuating and going above your maximum refresh rate. It will prevent the game from rendering ahead, effectively reducing VSync's input lag.
----------------
Input lag is greatly reduced, screen tearing is non-existent and there is absolutely zero microstutters.
I have no measurement tools to back up my findings. I believe it potentially gives the best solution for butter smooth gameplay with minimum input lag. Try it out! If you've played with screen tearing all your life, you miss out big time on fluidity.
Also, let me know if works for you please! I am really enjoying the VSync experience now. Cheers.
-> Forcing VSync "ON" through nvidia control pannel
1http://forums.guru3d.com/showthread.php?p=4443926