HurleyBird
Platinum Member
- Apr 22, 2003
- 2,812
- 1,550
- 136
Fake frames don't respond to user input.
Depends on implementation (and also how you define "respond," but that's out of scope)
If your game loop is 30 FPS, your render loop is 30 FPS, and you're using frame insertion to boost the apparent visual framerate to 60 FPS (eg. the way DLSS 3 works), then your statement is true.
If the game loop is 60 FPS, your render loop is 30 FPS, and you're using frame insertion to boost the apparent visual framerate to 60 FPS, then things diverge based on implementation specifics and context:
- If you purely forward project (eg. no interpolation. Frame construction is based on previous frames only), input latency will be superior to 30 FPS native, but inferior to 60 FPS native (native meaning both render and game loops running at the same rate with no virtual frame insertion), purely based on the game loop running at twice the speed.
- If you interpolate (not necessarily the literal definition, but meaning that you are using some form of data from the next frame), then yes, you could say that the "fake" frames are "responding" to your input. The game loop is still running at 60 FPS, and any actions that start between base frames will be captured by the interpolation. But here we diverge again:
- Ostensibly, you will still suffer a flat(ish) latency penalty since you need to prerender the next frame, or at least, have the next frame ready by the time the virtual frame needs to be inserted. This will add between half a base frame to a full base frame worth of latency.
- However, it's possible you are already doing such prerendering for other reasons, in which case virtual frame insertion could be a free lunch with no appreciable difference from "native" input latency.
- It may also be possible that you don't need to complete the next frame in its entirety to interpolate. You may be able to retrieve the information you need earlier on in the rendering loop. This could be used to either:
- Push the flat latency penalty much closer to 1/2 of a base frame instead of the full base frame penalty, or
- Not be used to render the next "base" frame at all, but to provide a "skeleton" for the next virtual frame which it is then built on top of. No interpolation, no latency hit.
- Ostensibly, you will still suffer a flat(ish) latency penalty since you need to prerender the next frame, or at least, have the next frame ready by the time the virtual frame needs to be inserted. This will add between half a base frame to a full base frame worth of latency.
- I can think of a few more esoteric scenarios, and there are surely others I haven't thought of, but I'm not going to bother going over every permutation.
Last edited:


