Real-time radiosity: Normal-mapped surfaces

Today, I want to show what a difference normal mapping for indirect lighting can make. By using orthonormal basis functions defined on the sphere, incident lighting can be evaluated for different directions depending on the surface’s normal.

In the following screenshots, textures containing 2nd order spherical harmonics coefficients are passed to the pixel shader, which then evaluates the incident lighting based on the normal stored in the normal map. This gives even more depth to the subtle shading achieved via indirect lighting because one can really see where the light is coming from, further adding to the realism of the technique.

All pictures show lighting detail only, without any diffuse/albedo textures. In addition, the upper portion of the screenshots show the settings that were used when taking the images.

Normal-mapped surfaces

Normal-mapped surfaces affected by a blue skylight, and a purple point light with a soft falloff, evaluated using spherical harmonics lightmaps.


Non-directional lighting

In comparison, traditional non-directional indirect lighting using scalar RGB values only.


The radiosity system currently supports two different output modes for lighting data: non-directional RGB lightmaps, and 2nd order spherical harmonics lightmaps. Other bases like the H-basis or the Half-Life 2 basis could be added as well, if there’s a need for them.

2 thoughts on “Real-time radiosity: Normal-mapped surfaces

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.