Fix incorrect advice on VRR framerate capping in Fixing jitter and stutter#12066
Conversation
| +--------------+---------------+ | ||
| | Refresh rate | Framerate cap | | ||
| +==============+===============+ | ||
| | 60 Hz | 58 FPS | | ||
| +--------------+---------------+ | ||
| | 75 Hz | 73 FPS | | ||
| +--------------+---------------+ | ||
| | 120 Hz | 115 FPS | | ||
| +--------------+---------------+ | ||
| | 144 Hz | 138 FPS | | ||
| +--------------+---------------+ | ||
| | 165 Hz | 157 FPS | | ||
| +--------------+---------------+ | ||
| | 240 Hz | 224 FPS | | ||
| +--------------+---------------+ | ||
| | 360 Hz | 324 FPS | | ||
| +--------------+---------------+ | ||
| | 480 Hz | 416 FPS | | ||
| +--------------+---------------+ |
There was a problem hiding this comment.
The table sounds useful, but in practice it discourages using the formula described above, in favour of hardcoding the framerate cap to one of these values. I'm not sure it's necessary, unless I'm missing the goal here
There was a problem hiding this comment.
The table is here to give common examples for people not willing to whip out a calculator 🙂
To clarify, it's (unfortunately) rare for games to propose setting VRR-friendly framerate caps out of the box. Users are generally expected to do this on their own, with an exposed FPS cap slider or an external application.
That said, godotengine/godot#66367 adds automatic FPS limiting options (with one of them targeting VRR).
|
Needs a CI fix / rebase :) |
…utter The common "cap 3 frames below the refresh rate" is wrong, as it will frequently trigger V-Sync at higher refresh rates (negating the input lag reduction of being within VRR range). Instead, the formula `refresh - (refresh * refresh / 3600.0)` should be followed instead, as done by NVIDIA Reflex for its own framerate cap when V-Sync is enabled and a VRR display is used.
3c0793b to
a192e21
Compare
|
Thank you! 🙏 |
The common "cap 3 frames below the refresh rate" originally added in #6186 is wrong, as it will frequently trigger V-Sync at higher refresh rates (negating the input lag reduction of being within VRR range).
Instead, the formula
refresh - (refresh * refresh / 3600.0)should be followed instead, as done by NVIDIA Reflex for its own framerate cap when V-Sync is enabled and a VRR display is used.