When Serious Sam was first announced it sported large open environments, many enemies onscreen, incredibly rich visuals and highly advanced rendering features. Now that FarCry, DOOM 3 and Half-life 2, the big names where graphics are concerned, have shipped can you tell us Serious Sam 2's renderer highlights?
Mainly, we focused on optimizing the shader usage, so even with that many enemies on screen at once, our Serious Engine 2 can pull all the advance shader effects like normal-map bump-mapping, Parallax (offset) mapping, refractions and such. Not to mention our Terrain shader which can blend up to 8 textures in one pass (and make even the latest GPUs sweat).
And when you have all that open and bright environments like Sam has, next logical step would be true HDR, right? Along with a nifty bloom post-processing effect over it, of course.
Although DOOM 3 went with all dynamic stencil shadows, Half-Life 2 and FarCry employed various techniques like the familiar lightmaps, shadowmaps and even some stencils in FarCry. What is SS2's shadowing solution?
I prefer the shadow buffer approach, which makes me pretty much a "consistent" guy. :) However, life's not that simple and having shadow buffers all around can be real pain, even for high-end GPUs.
Personally, I would just like to jump over shadows altogether, and land directly on top of real-time radiosity rendering, but we still have to wait some time for that to happen. When I say "happen", I mean "GPU fast enough to make it usable in a real game, with lots of action and model on screen and not just in room with couple of boxes"! Good thing is that there are already lots of algorithms available that can simulate radiosity really good and render the scene noticeably faster (like ambient occlusion mapping combined with global illumination, for example).
OK, back to reality. Having only one way to implement shadows would be nice, but there's a great chance that performance would suffer. So, I think pre-calculated lightmaps could stick around for some time, even it's really hard for them to make peace with dynamic shadows (no matter what approach is used).
So, for the performance reasons, we opted for mixing shadowing techniques. For the environment, we mostly use lightmaps, and for dynamic objects we have projective shadows (with shadow buffer if necessary). We found out that today’s GPUs are still not just there yet when it comes to handling dynamic shadows of large open environments with lots of detailed geometry and tons of enemies on screen at once.