Los Spherical Harmonic te permiten codificar ciertas componentes de la iluminación en cada vértice de la geometría. Por ejemplo, la componente difusa de la iluminación, la visibilidad (si el punto está en sombra o no) e incluso la luz indirecta para conseguir iluminación global (puedes poner el número de rebotes que quieras. Como es de esperar, a más rebotes, más tardará en calcularse).¿Para qué se utiliza los Spherical harmonics, half?
Evidentemente todo eso no se calcula en tiempo real. Se trataría de una aplicación que se encargaría de generar toda esta información antes de ejecutar la aplicación de render. Ni siquiera se debería calcular al iniciar la aplicación ya que el proceso puede tardar muchos minutos/horas. Al fin y al cabo el proceso que se sigue es muy similar al de un renderer of-line.
Así que, una vez que hemos precalculado esos datos por cada vértice de nuestra escena, ya podemos hacer uso de ellos en un Shader para resolver la ecuación final de la iluminación. Como lo más costos o esta precalculado, podemos tener en tiempo real, con unas pocas operación, sombras generadas a partir de luces de área, Ambient Occlusion, indirect illumination, sub-surface Scattering, image-based lighting, etc.
De todas formas, la cosa sí está para ser optimista. Y teniendo en cuenta la velocidad con la que evolucionan las aceleradoras.
Como he dicho ya hay técnicas para calcular Ambient Occlusion o iluminación global en tiempo real, pero eso sí, por ahora sin pasarse con los samples. aquí tenéis un paper de Nvidia que describe el proceso y también podéis ver unas imagencillas con el resultado. Saludos.