Just seems odd that when a player in a game stops moving the game engine keeps rendering the whole same image over and over again?
Are variable rate shaders only variable over texture resolution, when they could be variable over time/movement?
Just seems odd that when a player in a game stops moving the game engine keeps rendering the whole same image over and over again?
Are variable rate shaders only variable over texture resolution, when they could be variable over time/movement?
In practice, it’s not even close to the same image. In most games there’s loads of things moving and animating, even if a lot of it is just subtle movement like clouds scrolling and grass swaying. And there may well be slight camera movement while the player is idle.
If you really want to stop rendering at certain points (e.g. to save mobile battery life, or help with performance when rendering loads of UI on top of a paused game), there’s always the option of rendering it to a texture once, and just displaying that.
You could probably get animated imposter sprites to cover the grass and the clouds and use a larger than screen image to allow for player idle sway.
Have you seen the Spiderman skyscraper room system that uses shaders and sprites to give each room a 3D look (video below).
There was an entire GPU architecture named Talisman designed around this very idea back in the early mid to late 1990s.
It died before it got out of prototypes, in part because the problem they were trying to solve ceased to be an issue by the time they had a working prototype. And because they realized in general use it didn’t work. Because in a real 3D game it is common for large parts of the screen to constantly change, so optimizing a GPU architecture to prefer very little changing between frames was counter productive.
The fallout of Talisman is actually the very concept of impostors you mentioned above, but done in software so they’re more flexible. Many games already make heavy use of them for the very reason you’re thinking, to reduce the cost of rendering objects that aren’t changing much or at all between frames. Especially when you need to render a lot of them, or they’re relatively small on screen.
And if you think about it more. If you stop moving in most games, the screen isn’t static. Lots of stuff is still moving, and usually in ways that aren’t trivial to reproduce just by wiggling some 2D texture.