Harmoniques sphériques
f(x)f(θ,ϕ)
Si vous ne savez pas ce qu'est une transformée de Fourier, vous devez savoir avant de comprendre les harmoniques sphériques. La transformée de Fourier vous permet de représenter un signal sous la forme d'une série d'ondes sinus et cosinus, chacune ayant deux fois la fréquence de la dernière. Autrement dit, vous pouvez représenter le signal comme sa moyenne, plus une onde sinusoïdale dont la longueur d'onde est la même que la longueur du signal, plus une onde sinusoïdale deux fois cette longueur d'onde, et ainsi de suite. Parce que la transformée de Fourier vous fixe à ces longueurs d'onde particulières, il vous suffit d'enregistrer l'amplitude de chacune.
Nous utilisons couramment des transformées de Fourier pour représenter des images, qui ne sont que des signaux numériques 2D. C'est utile parce que vous pouvez jeter certaines des ondes sinusoïdales (ou réduire la précision avec laquelle vous stockez leur amplitude) sans changer de manière significative à quoi ressemble l'image aux yeux humains. OTOH, jeter les pixels change beaucoup l'apparence de l'image.
Dans un signal échantillonné comme une image, si vous utilisez le même nombre d'ondes sinusoïdales qu'il y avait d'échantillons (pixels) dans l'image d'origine, vous pouvez reconstruire l'image exactement, donc une fois que vous commencez à éliminer les fréquences, vous faites le l'image prend moins de stockage.
Les harmoniques sphériques sont exactement comme les transformées de Fourier, mais au lieu des ondes sinusoïdales, elles utilisent une fonction sphérique, donc au lieu de fonctions linéaires (telles que les images), elles peuvent représenter des fonctions définies sur la sphère (telles que les cartes d'environnement).
Sondes lumineuses
Tout comme la façon dont une image standard enregistre toute la lumière atteignant un certain point à travers le plan de l'image, une sonde lumineuse enregistre toute la lumière atteignant un certain point de toutes les directions. Ils sont d'abord sortis des effets de film. Si vous souhaitez ajouter un objet généré par ordinateur à une scène du monde réel, vous devez être en mesure d'éclairer l'objet synthétique avec l'éclairage du monde réel. Pour ce faire, vous devez savoir quelle lumière atteint le point de la scène où sera l'objet synthétique. (NB Bien que je dis "éclairage", vous enregistrez une image de toute la lumière, donc elle peut également être utilisée pour les reflets.)
Parce que vous ne pouvez pas avoir un appareil photo avec un objectif sphérique qui enregistre toute la lumière atteignant un seul point de toutes les directions, vous enregistrez cela en prenant des photographies normales d'un miroir sphérique, puis en reprojetant les images sur une sphère.
En dehors des effets de film, il est plus courant d'utiliser des sondes lumineuses générées à partir d'une scène artificielle. Imaginez que vous ayez un algorithme coûteux pour calculer l'illumination globale (GI) dans une scène, et que vous avez également des objets plus petits qui se déplacent dans cette scène (comme un niveau de jeu avec des joueurs). Vous ne pouvez pas exécuter l'intégralité de l'algorithme GI chaque fois qu'un objet se déplace, vous l'exécutez donc une fois avec la scène statique et enregistrez les sondes de lumière prises à différents points du niveau. Ensuite, vous pouvez obtenir une bonne approximation de l'IG en allumant le lecteur avec la sonde de lumière dont il est le plus proche.
Les utiliser ensemble
En règle générale, vous souhaitez filtrer les arêtes vives dans votre éclairage global de toute façon, vous voulez donc un moyen de les représenter qui est compact et vous permet de jeter facilement les hautes fréquences. C'est à cela que les harmoniques sphériques sont vraiment bonnes! C'est pourquoi vous entendrez souvent ces deux termes ensemble.
Vous calculez des sondes lumineuses avec votre algorithme GI coûteux - généralement dans l'outil de conception de niveau, ou peut-être une fois par seconde (au lieu d'une fois par image) si vous souhaitez inclure vos objets dynamiques dans. Vous les stockez à moindre coût avec des harmoniques sphériques - 16 flotteurs suffisent pour un éclairage de assez haute qualité, mais pas de reflets. Ensuite, pour chaque objet dynamique que vous souhaitez éclairer, vous choisissez la sonde de lumière la plus proche (ou interpolez plusieurs linéairement ensemble) et l'utilisez comme entrée uniforme ou constante dans votre shader. Il est également courant d'utiliser des harmoniques sphériques pour représenter les données d'occlusion ambiante, et il est très bon marché de le faire avec la sonde de lumière, bien qu'il y ait une certaine complexité autour des fonctions harmoniques sphériques rotatives.