This is just a small idea I had and I would like to know what you think about it:
Think of a “normal” gamelevel (doom3 for example), most lights and surfaces are static.
The lights may vary in color or itensity over time but they don’t change their position.
Most of the shadowsmaps generated every frame would be identical with the maps generated in the previous frames.
Wouldn’t it be possible to change the rendering process to something like this:
Generate a shadowmap for each light that’s visible.
Reuse this map for every frame until the light isn’t visible anymore.
Render a second shadowmap per frame only showing the dynamic entities in the lightcone.
Do the two per fragment shadow tests. The fragment is shadowed when one of the tests fails.
I’m not sure if you can use the same dynamic-shadowmap for
each light you render, but I hope so
I haven’t tested this method yet (still waiting for framebuffer objects) but I’m quite sure that you can save a lot of fillrate and memorybandwidth. Especially when it comes to omnidirectional lights.
(Sorry for my bad english… )