Triple Buffering

craecrae Join Date: 2005-01-30 Member: 39035Members
<div class="IPBDescription">Why We Love It</div>We often neglect to get too involved in the discussion of what options people should always enable when they play games. Rather, we tend to focus on what we test with. Honestly, our recommended settings for playing the games we test would be very similar to the settings we use to benchmark with one very important exception: we would enable triple buffering (which implies vsync) whenever possible. While it's not an available option in all games, it really needs to be, and we are here to make the case for why gamers should use triple buffering and why developers need to support it.

Most often gamers, when it comes to anything regarding vsync, swear by forcing vsync off in the driver or disabling it in the game. In fact, this is what we do when benchmarking because it allows us to see more clearly what is going on under the hood. Those who do enable vsync typically do so to avoid the visual "tearing" that can occur in some cases despite the negative side effects.

Read on...


<a href="http://www.anandtech.com/video/showdoc.aspx?i=3591&p=1" target="_blank">http://www.anandtech.com/video/showdoc.aspx?i=3591&p=1</a>

Comments

  • HawkeyeHawkeye Join Date: 2002-10-31 Member: 1855Members
    I personally never play without quadruple buffering myself. That triple buffering stuff is about as sophisticated as caveman drawings.

    Just messing with you a bit. I don't see triple buffering as that big of a deal, though I see no harm in making it available for others. It all boils down to whether or not you think that 15MB or 25MB of used video card memory is worth removing the possibility of 'tearing'. If it doesn't happen to you, it's not worth it. :P
  • WhiteZeroWhiteZero That Guy Join Date: 2004-06-24 Member: 29511Members, Constellation
    edited June 2009
    I got you all beat with my octo-buffer! ha!
  • duxdux Tea Lady Join Date: 2003-12-14 Member: 24371Members, NS2 Developer
    I always play with v sync and buffering off.
  • UnderwhelmedUnderwhelmed DemoDetective #?&#33; Join Date: 2006-09-19 Member: 58026Members, Constellation
    I don't play with vsync because it adds a very noticeable amount of mouse lag. Also, the physics are different at 60 FPS than at 111.
  • SkydancerSkydancer Join Date: 2003-03-28 Member: 14959Members, Constellation
    ^ Yes, on goldsrc only though...
  • badtripbadtrip Join Date: 2008-07-24 Member: 64689Members
    I always expected that kind of options to be there with sound options like master volume and so on.
  • 2_of_Eight2_of_Eight Join Date: 2003-08-20 Member: 20016Members
    <!--quoteo(post=1714699:date=Jun 29 2009, 10:25 AM:name=Underwhelmed)--><div class='quotetop'>QUOTE (Underwhelmed @ Jun 29 2009, 10:25 AM) <a href="index.php?act=findpost&pid=1714699"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->I don't play with vsync because it adds a very noticeable amount of mouse lag. Also, the physics are different at 60 FPS than at 111.<!--QuoteEnd--></div><!--QuoteEEnd-->Agreed. In the past, after reinstalling XP and NS and everything, and then forgetting to turn off vertical sync, I would think.. what in the world did I do with my settings? Everything is so delayed! Yeah, vsync. I could never imagine playing well with it.
  • ScytheScythe Join Date: 2002-01-25 Member: 46NS1 Playtester, Forum Moderators, Constellation, Reinforced - Silver
    I'm a member of the no-vsync crowd. Adds far too much slop to mouse movement to justify the slight increase in prettiness.

    --Scythe--
  • sherpasherpa stopcommandermode Join Date: 2006-11-04 Member: 58338Members
    Like many have said, the benefit of removing tearing by having vsync + triple buffering is offset by mouse lag and capped frame-rate in games where frames are linked to commands.
  • PseudoKnightPseudoKnight Join Date: 2002-06-18 Member: 791Members
    edited June 2009
    Too much talk about Vsync -- what about Triple Buffering? I think it depends on your preference, computer setup, and game. I'd love to see the option in NS2 if it's not a hassle, though. You currently can't force it through the Nvidia control panel. (the option only applies to OpenGL)

    I play my FPS games double buffered with vsync off, even when triple buffering is available. For singleplayer non-FPS games I'd probably choose triple buffering if I could spare the extra GDDR.
  • blackpiranhablackpiranha Germany Join Date: 2003-03-11 Member: 14375Members, Constellation
    Triple Buffering should only be enabled with Vsync on, else it just wastes memory.

    And I think VSync is not that important as most modern TFTs don't suffer from tearing anymore.

    Wait... this ain't ns2 related !11
  • SkydancerSkydancer Join Date: 2003-03-28 Member: 14959Members, Constellation
    <!--quoteo(post=1714876:date=Jun 30 2009, 11:49 AM:name=blackpiranha)--><div class='quotetop'>QUOTE (blackpiranha @ Jun 30 2009, 11:49 AM) <a href="index.php?act=findpost&pid=1714876"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->And I think VSync is not that important as most modern TFTs don't suffer from tearing anymore.<!--QuoteEnd--></div><!--QuoteEEnd-->

    Tearing is not monitor related, it's video card related, so you will still get tearing on modern tft panels
  • lwflwf Join Date: 2006-11-03 Member: 58311Members, Constellation
    edited June 2009
    Personally I always use vsync and triple buffering when possible and it does not cause problems.
    I don't need more FPS than my monitor can handle anyway, in fact I don't even want that, why would I?
  • ThaldarinThaldarin Alonzi&#33; Join Date: 2003-07-15 Member: 18173Members, Constellation
    V-sync off, triple buffering off.
  • craecrae Join Date: 2005-01-30 Member: 39035Members
    >Wait... this ain't ns2 related !11

    No, but I thought it was a really good read (it clarified the issue for me) and allot of other people would benefit by knowing this.
  • JerkstoreJerkstore Join Date: 2009-06-20 Member: 67880Members
    This article swayed me. I was a v-sync off member for the longest time, but never fully understood the differences. Triple buffering is clearly the best option if it's implemented correctly.
  • DelphicDelphic Join Date: 2006-11-02 Member: 58262Members
    edited July 2009
    As has been said already Triple buffering is completely wasted unless you have v-sync on, and having v-sync on give you a noticeable amount of mouse lag (well maybe not if you're not used to playing with it off) which in an FPS is completely unacceptable (I swear this happens in almost all games, not just goldsrc). Pretty much seals my choices.
  • NurEinMenschNurEinMensch Join Date: 2003-02-26 Member: 14056Members, Constellation
    Judging by your comments I think many of you didn't actually read the article. What it shows is that turning on triple buffering with vsync enabled gets you the best of both worlds. Optimal performance with no mouse lag and no tearing. The cost is 15-25 megabytes of video ram, negligible if you have a modern video card.
  • PseudoKnightPseudoKnight Join Date: 2002-06-18 Member: 791Members
    edited July 2009
    Actually, there is an added display lag with triple buffering (back buffer switching) -- from 0 to 16.7ms on a 60hz monitor, depending on your FPS. (ie. if you were getting ~110FPS, you'd get near 16ms of display lag on a 60hz monitor) The benefit, of course, is that that's HALF as much possible display lag as double buffering with vsync (33ms). However, for a fast-paced FPS game where every frame counts, that's significant. Many gamers notice the difference of that single frame input lag, including myself. This is additional input lag on top of other latencies like the LCD display itself. (up to 60ms; about 10ms avg for TN displays, much higher for other panels)

    There isn't one perfect answer for every situation. Double buffering with vsync is best when you don't want to render frames you won't see, you don't need frame by frame syncing with mouse input, and you're consistently getting more than 60FPS. Vsync off is best when you need as little input lag as possible, and image quality is of lesser importance -- turn vsync off if you consistently get lower than 60FPS. Triple buffering is best when you don't want tearing, input lag is of somewhat importance, and it's an option in the game -- especially helpful over double buffering w/ vsync when you're jumping between 50FPS and 70FPS, for example.

    With CRT displays that can get well over 60hz, the drawback of triple buffering is reduced as the maximum possible added display lag is reduced. However, this makes tearing less noticeable as well. Essentially, CRTs are more flexible for gaming.
  • UnderwhelmedUnderwhelmed DemoDetective #?&#33; Join Date: 2006-09-19 Member: 58026Members, Constellation
    <!--quoteo(post=1715364:date=Jul 2 2009, 03:40 PM:name=NurEinMensch)--><div class='quotetop'>QUOTE (NurEinMensch @ Jul 2 2009, 03:40 PM) <a href="index.php?act=findpost&pid=1715364"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Judging by your comments I think many of you didn't actually read the article. What it shows is that turning on triple buffering with vsync enabled gets you the best of both worlds. Optimal performance with no mouse lag and no tearing. The cost is 15-25 megabytes of video ram, negligible if you have a modern video card.<!--QuoteEnd--></div><!--QuoteEEnd-->
    The article can claim whatever it wants - fact of the matter is that vsync adds a perceptible amount of mouse lag. This is not a placebo. Try it yourself. Moreover, even if it didn't add any mouse lag, I'd still keep it off because the FPS at which HL runs affects the physics of the game. Bhopping is significantly slower at 60 FPS, unless you're ccnccc99.
  • HairyPomegranateHairyPomegranate Join Date: 2007-01-18 Member: 59673Members
    screen tearing is so easy to ignore for the major FPS boost you get (depending on your video card) by disabling VSYNC
  • Mr. EpicMr. Epic Join Date: 2003-08-01 Member: 18660Members, Constellation
    edited July 2009
    huh? Triple buffering is only useful when used with vsync. When vsync is on ( and you are using only double buffering), if your framerate is above the refresh rate it will display the 60 or 75 or 85 or 120 properly, but if it ever dips below the target locked rate (eg: 60) then the target is automatically lowered to half of the previous value. So in that case if you only get 50 and the target is 60, the cut is automatically to 30. Next, if it dip to 29 then it auto cuts the previous value of 30 down to 15. So, it jumps around and is awful.

    Triple buffering solves the halving problem by buffering an extra frame and providing the machine a little breathing room to keep rendering while the other frame buffers are accessed/purged/filled.

    Basically, any competent 3d engine should afford triple buffering and its the only way to use vsync properly.

    Triple bufering can add a delay of 1 frame but generally it isn't laggy. What you may notice though are the excess buffered frames that the video card does anyway. You can set the pre-render value on nvidia and ati cards, sometimes they are set as high as 5 framess, so generally set it to 1 or 2 to be safe in case of a badly programmed engine, and 0 if the engine is properly made (usually this is pretty rare, a setting of 0 only makes sense for highly CPU dependent games and was more useful in the past).
  • rebirthrebirth Join Date: 2007-09-23 Member: 62416Members, Reinforced - Supporter, Reinforced - Silver, Reinforced - Shadow
    If i notice screen tearing i enable it..
    If i don't i don't... which is most of the time.

    I win this thread with 3 lines of text!
  • Mr. EpicMr. Epic Join Date: 2003-08-01 Member: 18660Members, Constellation
    <!--quoteo(post=1715564:date=Jul 3 2009, 05:46 PM:name=rebirth)--><div class='quotetop'>QUOTE (rebirth @ Jul 3 2009, 05:46 PM) <a href="index.php?act=findpost&pid=1715564"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->If i notice screen tearing i enable it..
    If i don't i don't... which is most of the time.

    I win this thread with 3 lines of text!<!--QuoteEnd--></div><!--QuoteEEnd-->
    no, I'll win the thread for you: If I notice screen tearing, I want to be able to use vsync properly so please include the ability to triple buffer k thx bye.
  • HarimauHarimau Join Date: 2007-12-24 Member: 63250Members
    everyone's saying different things, it's confusing.
    from what i could tell from the article:
    single buffering < double buffering < double buffering with vsync < triple buffering
    no mention of triple buffering with vsync, in fact the article was saying that triple buffering is the best choice *because* you don't need vsync
  • Mr. EpicMr. Epic Join Date: 2003-08-01 Member: 18660Members, Constellation
    <!--quoteo(post=1715614:date=Jul 3 2009, 11:10 PM:name=Harimau)--><div class='quotetop'>QUOTE (Harimau @ Jul 3 2009, 11:10 PM) <a href="index.php?act=findpost&pid=1715614"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->everyone's saying different things, it's confusing.
    from what i could tell from the article:
    single buffering < double buffering < double buffering with vsync < triple buffering
    no mention of triple buffering with vsync, in fact the article was saying that triple buffering is the best choice *because* you don't need vsync<!--QuoteEnd--></div><!--QuoteEEnd-->
    Its more like this:
    double buffering with vsync< triple buffering < double buffering < triple buffering with vsync

    Triple buffering alone just wastes memory and adds latency to the feedback equation.
    Double buffering alone is better than triple buffering alone because it is 1 frame less so latency is lower.
    Typical Vsync (with only a 2 frame buffer) is good for removing tearing but its really bad because it can kill performance.
    Useful Vsync (with a 3 frame buffer) is the best implementation of vsync because it prevents the performance problems.

    Triple, double, single, and more buffering don't just apply to the implementation of vsync, video cards have frame queues of variable size anyway. Whats important is that if you must use vsync, you don't want to do it the improper way.
Sign In or Register to comment.