Post
by RLBURNSIDE » 17 Mar 2017, 12:41
Enthusiasts' ideas are often incorporated (without credit let alone renumeration) into companies' product lines, surreptitiously. Although I do think VRR has been supported by eDP for laptops for many years, only for saving power instead of gaming.
VRR both makes sense and doesn't.
I write games VR now? And guess what, you need a stable 90+ fps, with low persistence for a smooth experience. In a headset you would notice saccaded rendering rhythm such as Freesync. It came up many times, the question :"why no VRR in Rift?"
In VR, they use frame compositors to "just-in-time" reproject or synthesize a new frame to maintain solid 90fps or 120fps (Morpheus renders at 60 fps all the time AFAIK and so this reprojection is always on, which also makes perfect sense given the GPU requirements).
What this begs is: Why don't 30 fps games use reprojection to hit 60fps, similar to morpheus 60 -> 120, and Rift/ Vive's 45 -> 90. Remember, if your frame takes over 11ms (1/90), your framerate is cut in half to 45 for that frame, resulting in stutter. Oscillating between 45 and 90, randomly, is extremely irritating, and even real frames vs reprojected ones don't look the same, obviously, so what you really want to do is render at a stable 45 fps + reproject to 90, or render at a stable 90 fps (and lose image quality probably, due to tradeoffs). So reprojection is like a safety net, and not something that is meant to be used, if targetting 90 fps your engine needs to try to do that on its own. And if you can't hit stable 90fps, you should instead pack as much detail into 45 fps frames as possible, and use reprojection on all the time. This will give a consistent look. This is the reason why Morpheus games are rendered at 60 fps instead of 120. It's hard enough for PS4 games to hit 60 most of the time, especially in stereo.
What I'm saying is: VRR is a neat trick, but ideally, you don't want variable frame duration, but reprojected frames to reduce temporal aliasing and input lag variance. If some frames naturally take 20 ms and others take 13ms, then you're going all over the place between 30 and 60 fps (typical gaming scenario pre-optimisation), and that variance will show itself to your eye. I like G-sync and so on, but I really think framerates should be unbounded, and the only frames the player ever sees should be of the reprojected and temporally re-sampled variety.
There is tech out there now for phase-space frame interpolation, acceleration and deceleration to do this in screen space, although in VR it's harder because screen space techniques don't work all that well (eye misconvergence). So VR reprojection needs the depth buffer. Which is fine because the frame compositor has the entire swap chain + depth to play with.
I really think the future of smooth gaming lies in innovations from VR tech being brought back into traditional TV / monitor 2D games. Time will tell.