# 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