I decided to have a crack at approximating (crudely) global illumination in a scene - i.e. more specifically, indirect lighting contributions. I did this using a technique call ambient occlusion.
Ambient occlusion effectively represents how visible, or exposed, a given point is within a scene with respect to ambient lighting (i.e. lighting that does NOT come directly from a source such as a lamp or the sun). Simply, the more enclosed an area is within a scene, the darker it appears. Through ambient occlusion calculations we can approximate how indirect light would radiate through a scene and this results in a somewhat diffuse (non-directional) lighting throughout and soft/fuzzy undefined shadows. As mentioned, enclosed areas appear darker whilst 'open' areas are affected less. This can be seen in the third image in the sequence shown below.
Ambient occlusion is often used in modern games, although they use a screen-space method based on pixel depth to allow performance to remain optimal. Here, proper ambient occlusion is being used; whereby the illumination at a point is a function of actual geometry in the scene. This produces much better results in terms of the final rendered image, but the computational costs are staggering and simply not possible in real time.
In the example renders below I produced 4 images of a Predator model, with different settings enabled, to show how the ambient occlusion contributions can visibly affect the final rendered image.
The third image shows the results of the ambient occlusion pass and the last image shows the final rendered image with direct and indirect lighting applied, along with hard-edged shadows.
Ambient Occlusion Test by
SharkyUK, on Flickr