Abstract
Normal mapping is a common technique used in video games, decoupling surface details stored at high spatial frequencies, which are often tiled or repeated, from lighting information that is both unique and stored at a lower sampling rate. This paper presents two techniques that couple normal maps on static geometry with soft shadows from smooth distant lighting in a more efficient manner compared with previous work. In the first technique, the visibility function is represented using low-order spherical harmonics, and the product of the Lambertian-clamped cosine function and the lighting environment is tabulated in textures. The second technique uses principal component analysis to compress the visibility function, decreasing the data size and increasing the performance. Finally, we also examine the efficiency of four common parameterizations for spherical harmonics.
Acknowledgments
Thanks to Paul Debevec and Brian James for the lightprobes used to light the models, Stephen Hill and Derek Nowrouzezahrai for comments. The house model is courtesy of Michal Buczkowski and Tomasz Polit, CD Projekt RED.
Notes
1One large texture could be used if an atlas is built, but that would generate spurious dependent texture operations.
2The Lambertian clamped cosine lobe is simple enough to be generated analytically in the shader, where this convolution boils down to a dot product in SH
3The DX9 cube maps do not have this property, do not work well for low resolution textures, and are used only for comparison purposes.