Chapter 18. Radiosity

Most rendering models, including ray-tracing, assume a simplified spatial model, highly optimised for the light that enters our 'eye' in order to draw the image. You can add reflection and shadows to this model to achieve a more realistic result. Still, there's an important aspect missing! When a surface has a reflective light component, it not only shows up in our image, it also shines light at surfaces in its neighbourhood. And vice-versa. In fact, light bounces around in an environment until all light energy is absorbed (or has escaped!).

Re-irradiated light carries information about the object which has re-irradiated it, notably colour. Hence not only the shadows are 'less black' because of re-irradiated light, but also they tend to show the colour of the nearest, brightly illuminated, object. A phenomenon often referred to as 'colour leaking' (Figure 18-1).

Figure 18-1. Radiosity example

In closed environments, light energy is generated by 'emitters' and is accounted for by reflection or absorption of the surfaces in the environment. The rate at which energy leaves a surface is called the 'radiosity' of a surface. Unlike conventional rendering methods, Radiosity methods first calculate all light interactions in an environment in a view-independent way. Then, different views can be rendered in real-time.

In Blender, since version 2.28, Radiosity is both a rendering and a modelling tool. This means that you can enable Radiosity within a rendering or rather use Radiosity to paint vertex colours and vertex lights of your meshes, for later use.

18.1. The Blender Radiosity method

Relevant to Blender v2.31

First, some theory! You can skip to the next section if you like, and come back here if questions arise.

During the late eighties and early nineties Radiosity was a hot topic in 3D computer graphics. Many different methods were developed, the most successful of these solutions were based on the "progressive refinement" method with an "adaptive subdivision" scheme. And this is what Blender uses.

To be able to get the most out of the Blender Radiosity method, it is important to understand the following principles:

As with everything in Blender, Radiosity settings are stored in a datablock. It is attached to a Scene, and each Scene in Blender can have a different Radiosity 'block'. Use this facility to divide complex environments into Scenes with independent Radiosity solvers.