Remix.run Logo
Introduction to spherical harmonics for graphics programmers(gpfault.net)
73 points by luu 3 days ago | 7 comments
maho an hour ago | parent | next [-]

+1 for introducing them as real-valued functions over cartesian coordinates!

Typically, spherical harmonics are introduced as a complex function over spherical coordinates, which makes them much easier to derive, but imo hides their beauty.

The real-valued, cartesian form of regular spherical harmonics is also called "solid harmonics" or "harmonic polynomials", in case you want to dig deeper.

hackingonempty 5 hours ago | parent | prev | next [-]

> spherical harmonics can have uses beyond lighting

This math is also used in Ambisonic surround sound though newer techniques use planewave expansion.

For games, the full-sphere encoding of Ambisonic B-format can be decoded for arbitrary speaker locations and the soundfield rotated around any axis. I'm not sure if its ever been used for a game though.

vatsachak 3 hours ago | parent | next [-]

Ambisonics can give one end game audio

analog31 4 hours ago | parent | prev [-]

... also quantum mechanics. The textbook solution for the wavefunction of the hydrogen atom involves spherical harmonics.

hackingonempty 3 hours ago | parent [-]

That fact is betrayed by the the similarity of the shapes of atomic orbitals and the sensitivity patterns of Abisonic B-format channels.

https://en.wikipedia.org/wiki/Ambisonics#Higher-order_ambiso...

https://en.wikipedia.org/wiki/Atomic_orbital#Orbitals_table

...and the same patterns appear on the unit disk with the Zernike polynomials, used to describe optical aberrations and more.

https://en.wikipedia.org/wiki/Zernike_polynomials

vatsachak 2 hours ago | parent | prev [-]

Awesome write up. Is the appeal of spherical harmonics in graphics compression?

Like, if you know the third order harmonics that's only 16 values you have to pass around

djmips 2 hours ago | parent [-]

For sure that's a big reason but it's also a useful basis for doing lighting calculations because of their sphere like nature. They are quite efficient in dynamic scenes and historically used in a lot of precalc to do something akin to real time Global Illumination