Global illumination takes into account light reflecting off all surfaces in the world (indirect illumination) in addition to light coming directly from light sources (direct illumination). The images created using global illumination are more photorealistic and natural-looking than images lit with direct light only. Special effects companies and animation studios have known this for a long time. They have been using techniques to approximate global illumination, like hand placing dozens of area lights, for years. Recently, global illumination has started to replace the approximation techniques in films. For example, Shrek 2 was rendered with one bounce of indirect light, and newer films like Monster House are being rendered with full global illumination.
illumination looks great, but traditional techniques for calculating it
are far too slow for real-time applications. Render times for global
illuminated scenes are often measured in hours per frame. Render times
for a frame in real-time applications are measured in milliseconds.
This situation has lead many to pursue ways of pre-computing global
illumination information and using the results in real-time rendering.
Unfortunately, such techniques do not work satisfactorily with
deformable geometry in dynamic environments. Just as bad, they often
force the user to separate objects being rendered from the environment
that provides the light, which is often impossible.
For simplicity and flexibility we use a new technique in the Fantasy Engine that allows us to compute global illumination on the fly. The system is simple to use since any surface in a scene can be a light source for, reflect light onto, or shadow any surface in the scene, including itself. It avoids the complexity and limitations of having to treat objects and environment separately. The technique does not involve spherical harmonics, ambient occlusion, image-based lighting (including reflection mapping), or pre-computed radiance transfer. Deformable surfaces in dynamic environments are automatically supported. They are not a problematic special case.
The image on the left was rendered with direct illumination only. The one on the right was rendered with indirect illumination too, which makes quite a difference.
Our global illumination technique supports specular material properties for rendering shiny
and glossy surfaces. While the specular
results are not as accurate as those acheived
with ray tracing, they look quite convincing and allow for rendering
all sorts of materials. An approximation to subsurface scattering is
also supported, allowing for translucent materials too.
A very important feature of our global illumination method is that it supports displacement-mapped, subdivision surfaces. It allows us to render complex geometry that deforms correctly when animated. There is more information on displacement mapping of subdivision surfaces here.
These QuickTime video clips were captured from a real-time (> 30 fps at 1280x1024) Fantasy Engine demo. All the direct light in the first clip on the left comes from the glowing sky geometry. Sunlight is added for the second clip. The next clip shows 360° view of the model rendered with and without materials. In the final clip the glowing club supplies most of the light.
An NVIDIA® GeForce™
Go 7900 GTX calculates the global illumination solution (light bouncing
to convergence) for the scene in these clips above in about 3.3
milliseconds (300 frames per second) per frame treating all surfaces as
dynamic. Static geometry can be handled much faster.