@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
29 lines (23 loc) • 1.2 kB
Markdown
# Tools for working with spherical harmonics.
Mostly intended for shading and global illumination.
## De-ringing
There are basically 3 approaches,
* one is filtering using some kind of a smoothing function such as Lanczos
* Optimization of the polynomial (generally to remove negative values)
* Piece-wise reconstruction
## Coefficients of SH basis
see [3] (Stupid Spherical Harmonics)
1.0 / (2.0 * M_SQRT_PI), // 0: 0 0
-M_SQRT_3 / (2.0 * M_SQRT_PI), // 1: 1 -1
M_SQRT_3 / (2.0 * M_SQRT_PI), // 2: 1 0
-M_SQRT_3 / (2.0 * M_SQRT_PI), // 3: 1 1
M_SQRT_15 / (2.0 * M_SQRT_PI), // 4: 2 -2
-M_SQRT_15 / (2.0 * M_SQRT_PI), // 5: 2 -1
M_SQRT_5 / (4.0 * M_SQRT_PI), // 6: 2 0
-M_SQRT_15 / (2.0 * M_SQRT_PI), // 7: 2 1
M_SQRT_15 / (4.0 * M_SQRT_PI) // 8: 2 2
### References:
* [1] 2008 - GDC - Stupid Spherical Harmonics (SH) Tricks by Peter-Pike Sloan
* [2] [Computing product of 2 sphecial harmonics](https://github.com/ruba/cortex-vfx/blob/c256b7274516a02fa64a0260351b86f1d6ebe8c2/include/IECore/SphericalHarmonicsAlgo.inl)
* [3] Stupid Spherical Harmonics