Jump to content

28 posts in this topic

Posted

Probably as far as concerning FPS but increases quality. What I noticed with VSync is that it usually caps FPS at ~60

Share this post


Link to post
Share on other sites

Posted

The problem is that vsync can be implemented in various ways and so when people say "vsync does this" and "vsync causes this problem" they never achieve any consensus because they're all talking about different things.

 

I only disable vsync when it's implemented using double buffering and my video card cannot keep a steady 60fps. This causes your framerate to jump to whole dividers of your monitor's refresh rate, so if it's 60, it'll jump between 60, 30, 20, 15, etc. Software like Fraps will still report intermediate framerates like 45 because it averages over several frames, but the game feels jerky and unresponsive. It's worse than playing at a consistently low framerate. Game developers who still use double buffered vertical synchronisation should be fired. Nvidia's Adaptive Vsync is a hack around the issue but doesn't really solve the problem.

 

Tearing is not a "CRT problem". Tearing can and does happen on any monitor when your video card is outputting frames at an interval that is not your monitor's refresh rate. Tearing is completely intolerable in this day and age. It's better than enduring double-buffered vsync, granted, but that's like saying it's better to watch a stream at 240p than having it lag constantly. Both are terrible experiences.

 

There is a proper way to implement vsync and that is triple-buffered vsync. Unfortunately, most game developers use a render ahead queue instead and call that "triple-buffered vsync", which leads to gamers thinking that triple-buffered vsync sucks and introduces tons of input lag. Render ahead queues suck. From what I understand, it's what Direct3D does by default so it's pretty much what most game engines do, but I'm not an expert and it's hard to get a clear answer from game developers. I'm not sure many of them know the intricacies of this, which is a shame because it's such a fundamental issue.

 

In any case, "triple-buffered vsync" solves the jerkiness of double-buffered vsync, so it leads to smooth framerates that are synced to monitor refreshes. In the proper "ping-pong" implementation, it doesn't cause any additional input latency than the theoretical minimum required to sync frames with monitor refreshes; in the suckass "render ahead queue" implementation, every additional buffer adds a frame of latency. This is the setting you see in the Nvidia control panel as "maximum pre-rendered frames". Try to keep that low. I believe the "enable triple-buffering" setting enables proper ping-pong TBVsync on OpenGL games; I tried it with Doom 3 and I felt it didn't introduce any latency. I'd love confirmation on this.

 

I can see competitive gamers, especially in first-person shooters, disabling "render ahead queue" vsync because they cannot afford a few frames of latency and are ready to pay the price of tearing. This is a shame because vsync doesn't have to introduce latency, it only does so because it's usually implemented poorly.

So do you think windows aero/dwm may be using "proper" triple buffered vsync? because I've noticed when playing in borderless windowed mode I usually get no additional input lag, but when using the in game vsync (double or "triple") I usually get a noticeable jump in input lag.

Share this post


Link to post
Share on other sites

Posted

So do you think windows aero/dwm may be using "proper" triple buffered vsync? because I've noticed when playing in borderless windowed mode I usually get no additional input lag, but when using the in game vsync (double or "triple") I usually get a noticeable jump in input lag.

That's a good question, I don't know. I would assume DWM just uses a DXGI swap chain which is a render ahead queue, but it might be that it's doing something smarter. In theory implementing proper triple buffering on top of a double-buffered scheme shouldn't be hard, I'll try to code a demo myself because it seems no one on the internet knows about it. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.