Yesterday, I found a very interesting website with publications and articles from Bungie, the creators of Halo. You can find them here.
One of them talks about lighting and rendering and there is a specially interesting slide that will explain a lot of people how they achieve such a wonderful visuals. It shows, step by step, the rendering stages they process (which doesn't necessarily have to be done in different passes). Starting from the transformed geometry:
1.- Draw geometry with shaders using the following information:
- Albedo (on the right): This includes normal textures, taken form pictures and processed to be seamless, normalized lighting, etc.
- Normal Maps (on the left): Special textures storing surface information, instead of visual appearance or color.
One thing to note: Watching the albedo, they don´t use HDR textures. This is something logical, as it frees content creators form processing every single texture to adapt it to scene lighting conditions. This ifnormation is applied in the next step.
2.- Static Lighting
Applies lighting calculations from static lights. This process is probably the responsible to add the HDR information to the result of the previous stage. You can clearly appreciate it in the following picure (the level of contrast between the outside and inside parts is huge).
3.- Dynamic Lights
This stage adds the lighting information coming from lights that may change each frame (moving or changing lights, etc). In the picture, you can clearly see the new light that will simulate an explosion later. Of course, this light needs to be dynamic, as it´s intensity will vary to simulate the explosion effect.
4.- Transparents
To achieve some visual effects, like lens flares, explosions, fire, etc, using 2D impostors is still the way to go. You can appreciate the ray or explosion effect in the picture.
5.- Post-processing
And finally, with some 2d post processing (some bloom, tone mapping, etc), and the final result.
Microsoft Research and Bungie… talented people, for sure…