I was testing out some fresh code concepts and noticed that with a fixed update step, variable render step with interpolation, I believe the frames end up not having a perfectly consistent time between each other.
This is because whatever time the update takes, is not spent rendering, meaning there is a larger gap between those frames. e.g. picking a 25Hz update rate and assuming both update and render take 10ms, for some nice easy numbers.
When the update happens it causes extra time between two frames completing. This can also be seen in the delta time fractions for interpolation, if the update is said to happen at “0%”, then the first render starts at 25% (at 10ms since the start of the update in the example), then 50% (20ms), 75% (30ms), but then 100% (40ms) never happens, that is the next update and will be 25% (50ms), so a 50% or 20ms “jump”.
Now visually I never noticed any lack of smoothness (at least at a high enough FPS it should be smooth), but then I never really noticed a difference in ultra-high framerates and monitor refresh for FPS, so I wonder if that is just me?
Or did I screw up my understanding of the loop (based on https://gafferongames.com/post/fix_your_timestep/)? Or is this just expected and really no one can notice this?
With multi-threading I believe this is a non-issue as the render loop won;t be getting interrupted (although probably something different), but plenty of games are single threaded.