The truth about PRE-RENDERING 0?

Discussion in 'Videocards - NVIDIA GeForce Drivers Section' started by Tastic, Jul 16, 2012.

  1. WhiteLightning

    WhiteLightning Don Illuminati Staff Member

    Messages:
    30,735
    Likes Received:
    3,897
    GPU:
    Inno3d RTX4070
    I needed to put it at 1 with Darksiders 2 with my GTX780, otherwise it would lagg like hell or i had to turn down the shadows.
     
  2. RealNC

    RealNC Ancient Guru

    Messages:
    4,894
    Likes Received:
    3,168
    GPU:
    RTX 4070 Ti Super
    In my experience, all games are the same. If I don't use 1, they have input lag.

    The only exceptions are games that already use 1 by default on their own.

    Setting this to 1 globally is recommended. I think AMD even switched to 1 as default in their drivers. Globally.
     
  3. Xtreme512

    Xtreme512 Master Guru

    Messages:
    793
    Likes Received:
    43
    GPU:
    RTX 4080 Super
    but this is not something like MFAA... setting it to 2 or 1 depending on the game will smooth out the game. i guess games on their engine use 3 or 4.
     
  4. GanjaStar

    GanjaStar Guest

    Messages:
    1,146
    Likes Received:
    2
    GPU:
    MSI 4G gtx970 1506/8000
    yeah, the bold part is key for me. The rest we obviously don't agree on. I personally have 0 issues for years now, so I stick to the tried and tested practice of tweaking settings per game profile. Seems like a good habit from my experience.
     

  5. kurtextrem

    kurtextrem Master Guru

    Messages:
    251
    Likes Received:
    40
    GPU:
    NVIDIA GeForce GTX 970
    Rainbow Six Siege for me.
     
  6. RealNC

    RealNC Ancient Guru

    Messages:
    4,894
    Likes Received:
    3,168
    GPU:
    RTX 4070 Ti Super
    Why not set it to something higher than 1 then for this game?

    "1" for global, then override that for the very few cases (none for me, just one for you) where needed?

    Sounds less backwards to me then going to each game's profile and setting "1" dozens and dozens of times.
     
  7. GanjaStar

    GanjaStar Guest

    Messages:
    1,146
    Likes Received:
    2
    GPU:
    MSI 4G gtx970 1506/8000
    likely you are playing it with uncapped fps as it's an online shooter? in that scenario, a lot of games should have higher fps in some way or another with higher prerendered frames because uncapped fps shifts the bottleneck into CPU territory often.


    yeah, if you play every game with the 1 setting, it makes no sense to go around setting it to 1 per profile. i can count with my hands the amount of times I actually had need of this setting at all, so the convenience argument doesn't apply in my case.

    If someone paid me, i'd do a an analysis of the actual impact on FPS in a variety of games, to have actual hard data, but since no one is, i'll have to go by anecdotal experience I have, which is: the usefulness of setting prerendered frames to 1 is very rare.
     
    Last edited: Jan 10, 2017
  8. RealNC

    RealNC Ancient Guru

    Messages:
    4,894
    Likes Received:
    3,168
    GPU:
    RTX 4070 Ti Super
    Just to make one thing clear: I'm always talking about vsync on here. If you use vsync (not fastsync, not gsync, not freesync, just plain old vsync), and there's no frame cap, *then* in my experience, pre-rendered frames 1 does help in the majority of cases.

    Frames that are pre-queued to be sent out for rendering are affected by vsync backpressure (which exists only if there's no frame cap.)
     
  9. tsunami231

    tsunami231 Ancient Guru

    Messages:
    14,702
    Likes Received:
    1,843
    GPU:
    EVGA 1070Ti Black
    I only use 1 if game has stuttering it usual fixes it other then i leave it at defualts
     
    Last edited: Jan 10, 2017
  10. GanjaStar

    GanjaStar Guest

    Messages:
    1,146
    Likes Received:
    2
    GPU:
    MSI 4G gtx970 1506/8000
    I'm confused now. regular vsync for me is the one that caps fps to my refresh rate. what do you mean vsync with no framerate cap? like capping it below the refresh rate? I never do that with regular vsync as that is terrible for input lag for me.
     

  11. RealNC

    RealNC Ancient Guru

    Messages:
    4,894
    Likes Received:
    3,168
    GPU:
    RTX 4070 Ti Super
    (Note: Blur Busters now also has a guide on the low-lag vsync method: https://www.blurbusters.com/howto-low-lag-vsync-on)

    Vsync does not actually cap the frame rate in the same way a frame limiter does. This is a popular misconception about vsync. What it does is sync 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.) However, this is an asynchronous operation in modern systems and that means the game is allowed to go back and work on preparing more frames. The game is only prevented from doing that when it's too late.

    So because there is no real 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 be prevented from queuing more frames to be rendered or displayed. That means when all these buffered and queued frames are displayed later on, they're based on very old input. Old input equals 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 [i[almost[/i] the exact same value as your refresh rate. Something like 0.01FPS below refresh rate works fine (RTSS is accurate enough to allow for this kind of frame limiter accuracy.) Note that "0.01" is just a ballpark number. Anything between 0.007 and 0.015 or so should work fine. Too low and the trick doesn't work anymore, too high and you get repeated frames that result in "hiccups".

    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 3FPS below your refresh rate and you're done! Also note that all this also doesn't apply to vsync off. This guide really, really is just for non-gsync, non-freesync monitors with vsync enabled. (Or if you for some reason disabled gsync/freesync on your monitor and want to use plain vsync.)

    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 on these sites:

    http://www.testufo.com/#test=refreshrate
    https://www.vsynctester.com

    Let the test run for a while (around 2 or 3 minutes should be enough.) Do not run both tests at the same time. Do not have any background tasks running.

    If both sites give you results very close to each other, then you can be confident that the number you got is pretty accurate and very close to your real refresh rate.

    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.) You also need to make sure that GPU acceleration is enabled in your browser, otherwise you'll get wrong results.

    You only need the first three decimals of the detected number. If the result is something like "59.940875" for example, you can consider "59.940" as the important part for simplicity.

    Step 2: Use RTSS's new fractional frame cap feature

    Unless you're using a very old RTSS version (so please make sure you have a recent version) you can set a fractional frame cap. For a 59.940Hz monitor, you'd cap to 59.930FPS (59.940 - 0.01 = 59.930). For a 119.982Hz monitor, you'd cap to 119.972FPS (119.982 - 0.01 = 119.972).

    If you are using double or triple vsync (setting "vsync" in NVidia Profile Inspector to "1/2" or "1/3"), then your cap needs to be 0.01 below half your refresh rate. So for a 119.982Hz monitor, you'd cap to 119.982 / 2 - 0.01 (for 1/2 vsync) or 119.982 / 3 - 0.01 (for 1/3 vsync.)

    As of RTSS 7.2.0 Beta 2, you can directly enter a fractional FPS value in the GUI. So please make sure you use the latest RTSS version.

    Result

    This will keep the pre-render and other frame buffers empty by stopping the game from rendering frames faster than your refresh rate. And empty frame buffers means no added latency due to buffering.

    If you don't do the above, then setting pre-rendered frames higher than 1 will result in more input lag, and can result in bad frame pacing in some games.

    And even if you do the above, setting this value to 1 still helps as a guard against temporary framerate fluctuations (no frame capper is perfect), giving a more consistent input lag value.

    Keep in mind that all this requires a PC that's able to render frames fast enough. Since the above keeps render/frame buffers empty, it means there's no guard against frame rendering time spikes. If your PC can't maintain a solid 60FPS (or whatever your refresh is), then you might be better off not doing any of this.

    If your PC is fast enough though, then this is an excellent way of minimizing vsync input lag and maximizing smoothness by having good frame pacing (meaning frame times that match your refresh rate.)
     
    Last edited: Oct 22, 2018
  12. GanjaStar

    GanjaStar Guest

    Messages:
    1,146
    Likes Received:
    2
    GPU:
    MSI 4G gtx970 1506/8000
    thx, that's useful info. bookmarked the post for future experimentation. never knew vsync didn't actually cap the framerate.
     
  13. billypit

    billypit Guest

    Messages:
    25
    Likes Received:
    1
    GPU:
    MSI
    How to calculate this number for different frequency?
     
  14. Xtreme512

    Xtreme512 Master Guru

    Messages:
    793
    Likes Received:
    43
    GPU:
    RTX 4080 Super
    we've been telling that here and there for a while.

    use pre-render 1 (now 2) + vsync (if double use triple buffer in d3doverrider) + fps cap at refresh rate (use rtss not others).
     
  15. RealNC

    RealNC Ancient Guru

    Messages:
    4,894
    Likes Received:
    3,168
    GPU:
    RTX 4070 Ti Super
    Subtract 0.007 from it.
     
    Last edited: Jun 6, 2017

  16. j0shimi

    j0shimi Guest

    Messages:
    14
    Likes Received:
    0
    GPU:
    GTX 1070
    Interesting stuff here, thanks for all the good work guys.

    Without wanting to drift too far off topic, how do these settings affect a 144hz, G Sync user such as myself.

    I set my FPS via RTSS to 142 or 140 in game as per instuctions and findings at Blur Busters 'G-Sync 101 w/Chart (WIP)' thread.

    I leave V-Sync and pre-rendered frames ahead at default settings in nVidia Inspector and can't see or feel any difference in input lag to having pre-rendered frames ahead to 1 or 2. Whereas if I force V-Sync on in Inspector (off in game), pre rendered frames to 1 or 2 definitely helps.

    Should I reconsider my FPS limit to match the 'Subtract 0.006' settings here or stick with the findings on Blur Busters if there is any benefit to either?
     
  17. RealNC

    RealNC Ancient Guru

    Messages:
    4,894
    Likes Received:
    3,168
    GPU:
    RTX 4070 Ti Super
    No. With gsync, you have to cap well below the max refresh (~6 FPS lower.)

    Pre-rendered doesn't matter, unless you hit the refresh rate (which you can't if you use a capper.)
     
  18. WhiteLightning

    WhiteLightning Don Illuminati Staff Member

    Messages:
    30,735
    Likes Received:
    3,897
    GPU:
    Inno3d RTX4070
    Thanks for sharing this tweak RealNC , its really smooth with this!
     
  19. nixon

    nixon Member

    Messages:
    10
    Likes Received:
    0
    GPU:
    GTX570
    battlefield 3 and 4 run faster for me
     
  20. w0nderz

    w0nderz Member Guru

    Messages:
    154
    Likes Received:
    6
    GPU:
    RX 6900XT
    I guess this isn't exactly what he was asking for. I think what he wants to know is how do you calculate the "effective" frequency at custom frequencies.

    For example, at "60hz" it's 59.94, at "120hz" it's 119.982, if you set a custom frequency in CRU to 70hz, what would be its "effective" rate.
     

Share This Page