Spherical harmonic lighting

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Lua error in package.lua at line 80: module 'strict' not found. Spherical harmonic (SH) lighting is a family of real-time rendering techniques that can produce highly realistic shading and shadowing with comparatively little overhead. All SH lighting techniques involve replacing parts of standard lighting equations with spherical functions that have been projected into frequency space using the spherical harmonics as a basis. To take a simple example, a cube map used for environment mapping might be reduced to just nine SH coefficients if preserving high-frequency detail is not a concern.[1]

More intriguing techniques use SH to encode multiple functions—usually the global lighting environment and a per-vertex radiance transfer function. The generalized lighting equation involves, among other things, integrating the product of the incoming radiance and the BRDF over a sphere—something that is far too expensive for real-time rendering. But if the two functions are projected into SH coefficients, the integral of their product over the sphere is just the dot product of the two SH coefficient vectors. Generating the per-vertex transfer functions and projecting them to SH space is still an expensive process, but evaluating them is almost trivial. More to the point, they can be evaluated correctly even if the lighting environment changes in intensity or orientation. Even the most complex ray-traced radiosity algorithm can be rendered in real-time with dynamically changing lighting.

SH lighting using preprocessed coefficients produces results that are beautiful but limited. Typically the lighting can change, or the lit mesh can be rotated, but the mesh can't be translated or deformed without requiring a new set of per-vertex coefficients. More recent techniques split the lighting equation into more parts and introduce techniques for updating SH components in real time.

See also

References


<templatestyles src="Asbox/styles.css"></templatestyles>