gourimoko
Fighting the good fight!
- Joined
- Aug 13, 2008
- Messages
- 39,845
- Reaction score
- 53,645
- Points
- 148
Blur busters is going to do an in-depth vsync guide later this year. For now there still has been al ot of testing from users. What we know for now is the best way to ensure minimal input lag and smooth gameplay you want to use rtss to cap your framerate .007 fps below your monitors refresh rate at minimum. You can actually set decimal values on the newest rtss:
"
Vsync does not actually cap the frame rate. This is a popular misconception about vsync. What it does is syncing the output of new frames to the monitor's "vblank" signal (the point between the monitor having finished scanning out the current frame and is preparing to scan out the next.) The frame rate not exceeding the refresh rate is just a side effect of that. There's no actual frame capping involved.
Because there is no frame cap, the game is preparing new frames as fast as it can. Once all possible frame buffers and all pre-render queues have been filled, only then will the game stop queuing more frames to be displayed. That means when all these buffered and queued frames are displayed later on, they're based on old input. Meaning input lag.
Setting pre-rendered frames to 1 means less queued work is waiting to be processed. The game stops trying to output more frames sooner. Meaning you get less input lag. However, this doesn't help with queued frames that have already been rendered but have accumulated in the output buffers. You still get more input lag that needed.
You can fix this issue by using a frame cap that's set at almost the exact same value as your refresh rate. Just 0.007FPS below it works fine (RTSS is accurate enough to allow for this.)
(Please note that all this is for vsync. You don't need to do any of this when using G-Sync or FreeSync. For those two sync methods, just cap to 2FPS below max refresh and you're done.)
Step 1: Find out your real refresh rate
Nope, your real refresh rate is in the majority of cases not 60 nor 59. It's usually fractional. Most monitors use 59.94Hz for "60Hz" and 119.982Hz for "120Hz". You can detect your real refresh rate here:https://www.vsynctester.com It's important to use a browser that works (Chrome and Firefox should be OK), and that if you're using Windows 7, Aero must be enabled (the test needs Aero's vsync in order to detect your refresh rate.) It's also recommended to make sure that GPU acceleration is enabled in your browser.
You only need the first three decimals of the detected number.
Step 2: Use RTSS's new fractional frame cap feature
In recent versions of RTSS, you can set a denominator for the frame cap. For a 59.940Hz monitor, you'd cap to 59.933FPS. For a 119.982Hz monitor, you'd cap to 119.975FPS.
(At least RTSS version 6.5.1 is needed. Older versions will not work.)
Do do this, you need to edit the profile file of RTSS (to set this globally, you need to edit the "Global" file inside the "Profiles" folder of your RTSS installation directory.) There's no GUI for this. For a 119.975FPS cap, you would need this in the profile file:
Code:
[Framerate]
Limit=119975
LimitDenominator=1000
For a 59.933FPS cap, you'd use:
Code:
[Framerate]
Limit=59933
LimitDenominator=1000
"
http://forums.guru3d.com/showthread.php?p=5380262#post5380262
@gourimoko
I'm not sure of the context here, but that article is false. V-Sync can and does cap rendered frames in many game engines. Many games use rendering window, that period of time, to do physics and AI processing intra-frame; so it's not accurate to state that V-Sync doesn't cap frames, it does, in many game engines...
In fact, if the graphics engine were to render as many frames as possible as fast as possible, those frames would simply be lost since they'd be out of sync with the input, physics, and other happenings of the game engine; so those frames would inherently be discarded for the latest completed frame. So I don't think that's an accurate characterization of the rendering pipeline for most games; definitely not for Unreal or Unity. In fact, in both of those engines, the graphics engine idles and waits for V-Blank, it does not continue rendering new frames.