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 affected by a blue skylight, and a purple point light with a soft falloff, evaluated using spherical harmonics lightmaps.
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.