Help me with a technical problem.
My main hero is widowmaker, but my aiming isn’t consistent. I think I’ve found a problem, but it caused another one…
-
The Overwatch runs on stable 69-70 FPS but my monitor is only capable to show 60hz maximum.
-
I’ve limited FPS to 60 on Overwatch settings. Which caused annoying screen tearing.
-
I was watching youtube “solutions” and one man suggested to open Nvidia settings, pick Overwatch and make “V-synch = fast”. I did it and it helps a lot. My widow-aiming is now consistent and tearing has gone.
…
-
Now I’m playing much better, but the game is lagging a little when I shoot.
-
I’ve changed the setting to low and lowered the resolution, it kind of helps, but the game looks ugly and not smooth.
-
My PC is pretty good and I was playing Overwatch on max settings 69-70 FPS. “V-Synch” helps with a tearing screen issue and aiming consistency, but causing a little lag problem. What should I do???
V-Sync can cause serious stutter when you have a GPU peak that causes the rendering time of a frame to exceed the monitor refresh time of a frame.
With 60Hz your monitor might use up to 1000/60=16.6ms to refresh the whole screen from the current/active video buffer that holds the most recent frame. If you have a very good monitor that you operate only at 60Hz then the refresh cycle might be much shorter but there will still be 16.6ms between the start of two refresh cycles. While the monitor is refreshing from the active video buffer: meanwhile overwatch is drawing the next frame into a second video buffer (not the one the monitor is refreshing from). With v-sync, when overwatch is done drawing the next frame it waits for the beginning of the next monitor refresh cycle to avoid tearing (and then it marks the recently drawn buffer as active for the monitor to refresh from and starts drawing the next frame into another buffer). However, if drawing the frame took more than 16.6ms (the time used by the monitor to refresh the whole screen) for overwatch - lets say 20ms - then the monitor has already started its next refresh cycle from the buffer that contains the previous frame and the next monitor refresh cycle will start ~13ms later which is ~32ms later than the time the previous frame started to be drawn to your monitor the first time and overwatch has to wait for that with v-sync before swapping the buffers and starting to draw the next frame.
Putting it simply: if overwatch frame drawing exceeds the time the monitor uses to draw/refresh a single frame then that very same frame will be displayed for 2 whole monitor refresh cycles if v-sync is on. This causes very noticeable stutter with v-sync if the exceeded time is small and happens rarely because in that case most frames will display only for 16.6ms (1 monitor refresh cycle) but some frames (during GPU usage peak) will be displayed for 33.2ms (2 monitor refresh cycles). If all frames exceed the 16.6ms monitor refresh cycle then all frames are displayed for 2 monitor refresh cycles with v-sync that eliminates the stutter but reduces the effective FPS to 30.
The scenario is different without v-sync because then the game doesn’t wait for the beginning of the next monitor refresh cycle, it swaps buffers immediately and starts to draw the next frame. However this causes a tearing if the buffers are swapped while the monitor is in the middle of drawing out the previous frame because it finishes the refreshing the screen from the next frame/buffer.
If you insist using v-sync then you need dumb enough video settings so that drawing one frame never takes more than 16.6ms (assuming 60Hz) to draw (not even in GPU intensive fighting scenarios that matter the mosst). If you experience a drop in FPS with v-sync then its a good indicator that something is wrong and expect bad stutter during fights. Another solution is using hardware sync (like G-Sync). AFAIK, this technology can ask the monitor to wait for the drawing of the next frame to finish before starting the next monitor refresh cycle. There can be variable/custom length gaps between monitor refresh cycles. This way if overwatch frame drawing takes a bit more than the normal monitor refresh cycle (lets say it takes 20ms instead of 16.6ms with 60Hz) then the monitor waits a few milliseconds (~3.4ms) for the next frame instead of starting a monitor refresh cycle immediately by drawing out the previous frame. If a frame takes a bit more than 16.6ms with G-Sync - lets say 20ms - then it’s a much less noticeable stutter (~3.4ms) than the 2 x 16.6ms frame (~13.2ms) stutter caused by software v-sync. G-Sync or similar hardware sync technologies still can’t help much if some of your frame times are much longer than others. Note: adaptive hardware sync requires both a monitor and a graphic card that supports the given technology.
Another technique that can smoothen out things a bit is triple buffering. When v-sync is on and there is a lot of time to wait for the next monitor refresh cycle (before swapping buffers) that wait time can be used to start drawing into a 3rd video frame buffer. This makes the GPU more utilised, can eliminate some stuttered frames but only at the cost of introducing some input lag. How much stutter it can eliminate and how much input lag is introduced depends on the time by which rendering exceeds the length of the monitor refresh cycle and might also depends on how the actual implementation of the game deals with these issues. I personally never use triple buffering and don’t recommend it. Even if I used it, I’d do it in games where stutter and variable framerate aren’t as noticeable as in fast paced FPS games.
E.g.: with v-sync and simple double buffer if monitor refresh cycle takes 16.6ms and the frame is rendered in 20ms then it is displayed for 2 refresh cycles (2 x 16.6ms) and there is 13.2ms wait time during which the GPU is idle. Then after swapping the buffers there might be another frame that takes 20ms to draw and the same thing happens. With triple buffering the next 20ms frame drawing starts immediately after the previous 20ms drawing so it can also utilise the 13.2ms wait time. GPU peeks usually come in consecutive frames (while effects are displayed during a fight) that helps this technique. But it can’t eliminate all stuttered frames and the effectiveness also depends on the length of the wait times. If your video settings and GPU performance result in frame draw times that take up almost the whole 2 monitor refresh cycles then you have basically zero wait time to utilise with triple buffering.
Regardless if you are using v-sync or g-sync ore something else, it’s better to use a framerate cap (v-sync automatically caps it to your monitors refresh rate in the actual video mode) and video settings the result in below 100% GPU usage (lets say 60-80%) most of the time (when you aren’t in battle) so you have headroom from GPU usage peaks during battle. The GPU usage of games is never constant so the frame rate cap and video settings should be set based on the most demanding situations (so that your frame drawing time during battle isn’t more than 16.6ms for 60Hz). To simulate these demanding scenarios I recommend creating a custom game with 11 easy bots that fight like crazy in one small location without being able to kill each other. If you try to drive the s*it out of your card even outside of battles for better visuals then the experience (framerate, input, etc…) will always be worse during most intensive parts (fights) when it matters the most.