Rendu réaliste en synthèse d’images. Lancer de rayons stochastique
Organisation Lancer de rayons stochastique Intégration de Monte Carlo Exemple sur l’éclairage direct Résolution de l’équation de la luminance Optimisation Carte de photons
Lancer de rayon classique Un rayon d’ombre par point Sources lumineuses approximées par un point Ombres dures
Solution exacte Ombres douces Sources étendues != Sources ponctuelles
Plus d’échantillons? Approximer la source par plusieurs points Aliasing sur les ombres (Effet marche d’escalier)
Equation Intégration analytique très difficile Utilisation de techniques numériques : Monte Carlo y qy V(x,y)=? rxy qx x
Intégration numérique Intégration numérique d'intégrale simple a b
Intégration déterministe Intégration déterministe par quadrature : a b Ne marche que sous certains conditions : fonctions dérivables, dimensions du problème pas trop élevé
Intégration de Monte Carlo Estimation de la valeur d’une intégrale Échantillonner N points suivant une densité de probabilité p(x) L’estimateur est une moyenne pondérée des valeurs de la fonction à chaque échantillon
Variable aléatoire continue Variable aléatoire X Fonctions de répartition : probabilité que la variable aléatoire soit inférieure ou égal à x Densité de probabilité
Exemple : taille d’un individu Densité de probabilité 120 160 190 230
Densité de probabilité uniforme Densité uniforme a b a’ b’ P(x) : probabilité que x appartienne à [a’,b’]
Échantillonnage selon une densité Choisir une densité de probabilité p(x) 1 1
Échantillonnage selon une densité Choisir une densité de probabilité p(x). Intégrer pour obtenir une fonction de répartition P(x): 1 1
Échantillonnage selon une densité Choisir une densité de probabilité normalisée p(x). Intégrer pour obtenir une fonction de répartition P(x): Inverser P(x) : x = P-1() échantillonné avec une densité uniforme entre 0 et 1 1 1
Échantillonnage selon une densité Choisir une densité de probabilité normalisée p(x). Intégrer pour obtenir une distribution de probabilité P(x): Inverser P(x) : x = P-1() 1 1 Transforme un échantillonnage uniforme vers échantillonnage non uniforme
Illumination directe Génération de points aléatoires sur la source ’ Évaluation de l'intégrale avec ces points y ’ qy V(x,y)=? rxy qx x
Illumination directe 1 rayon d'ombre 9 rayons d'ombre
Illumination directe 36 rayons d'ombre 100 rayons d'ombre
Échantillonnage stratifié Objectif Réduction de la variance. Principe Découpage du domaine d'intégration 1
Échantillonnage stratifié Objectif Réduction de la variance. Principe Découpage du domaine d'intégration Estimateur 1
Échantillonnage stratifié Application à 2 dimensions N2 échantillons Échantillons arbitrairement proches Problème pour les dimensions supérieures
Échantillonnage stratifié 9 rayons d'ombre uniformes 9 rayons d'ombre stratifiés
Échantillonnage stratifié 36 rayons d'ombre uniformes 36 rayons d'ombre stratifiés
Échantillonnage stratifié 100 rayons d'ombre uniformes 100 rayons d'ombre stratifiés
Echantillonnage stratifié Application aux dimensions supérieures Échantillonnage stratifié en en grille Nd Echantillons Échantillonnage des N reines N Echantillons
9 échantillons Uniforme Stratifié N reines
36 échantillons Uniforme Stratifié N reines
Plusieurs sources lumineuses L’intégrale ne change pas : au lieu d’intégrer sur la surface de la source, on intègre sur les surfaces des sources lumineuses. La densité pour sélectionner les points est modifié : d’abord on sélectionne une source S avec la densité p(S) puis un point sur S avec p(y|S)
Plusieurs sources lumineuses 36 rayons d’ombres par pixels dans les deux images mais densité de probabilité différentes
Application aux pixels Calcul de la luminance au centre du pixel : aliassage Utilisation d'un filtre … … évalué par intégration de Monte Carlo.
Application aux pixels Tout type d'échantillonnage envisageable
Implantation 1 rayon / pixel 10 rayons / pixel 100 rayons / pixel
Implantation Comparaison : 1 rayon centré par pixel 100 rayons d'ombre aléatoires par intersection 100 rayons aléatoires par pixel 1 rayons d'ombre aléatoire par intersection Comparaison :
Équation du rendu Évaluation de l'équation du rendu Comment écrire l'équation du rendu et l'évaluer par intégration de Monte Carlo? Quelle densité de probabilité utiliser pour l'équation du rendu? Algorithmes et résultats
Équation du rendu
Équation du rendu
Calcul de la luminance L=? Comment évaluer L ? Trouver Le(x®Q) Ajouter
Calcul de la luminance Comment évaluer Li ? Intégration de Monte Carlo Générer des directions aléatoires sur Wx, en utilisant la densité de probabilité p(Y)
Calcul de la luminance Échantillonnage de l'hémisphère
Calcul de la luminance Evaluer la brdf Evaluer le cos(…) Générer une direction aléatoire i Evaluer la brdf Evaluer le cos(…) Evaluer L(x¬Yi)
Calcul de la luminance Evaluation de L(x¬Yi) ? La radiance est constante sur la direction de propagation. rc(x, Yi) = premier point visible. L(x¬Yi) = L(rc(x, Yi) ® Yi)
Calcul de la luminance Évaluation récursive Chaque rebond ajoute un niveau d'éclairage indirect.
Arrêt de la récursivité Quand arrêter la récursivité ? Les contributions des ordres de réflexions élevés sont négligeables. Si on les ignore, les estimateurs sont biaisés !
Roulette russe Roulette russe En pratique, définition d'un coefficient d'absorption a Probabilité a que le rayon soit absorbé. La luminance deviens L/(1-a). Exemple : a=0.9 (1.0 - moyenne de la réflectance) Un rayon sur 10 est réfléchit. La luminance estimée sur un rayon réfléchi est multipliée par 10.
Roulette russe Estimateur non biaisé Espérance de l’estimateur est toujours correcte Plus grande variance Mais plus efficace
Tracé de chemins Algorithme Lancer N rayons par pixels A chaque intersection avec une surface, lancer 1 rayon distribués sur l'hémisphère pour évaluer l’équation de la luminance Terminer la récursivité par roulette russe
Tracé de chemins 16 rayons/pixel 256 rayons/pixel 1 rayon/pixel Très bruité : contribution nulle tant que le chemin n’a pas atteint une source lumineuse!!
Tracé de chemins
Tracé de chemins
Tracé de chemins
Tracé de chemins
Tracé de chemins
Tracé de chemins
Tracé de chemins
Tracé de chemins
Tracé de chemins
Tracé de chemins
Tracé de chemins Améliorer l’algorithme en séparant l’intégrale en deux parties
Tracé de chemins
Tracé de chemins Conclusion Évaluer différemment l'éclairage direct et indirect
Algorithme
Algorithme
Algorithme
Algorithme
Algorithme
Algorithme
Comparaison Sans calcul d'éclairage direct Avec calcul d'éclairage direct 16 rayons/pixel
Comparaison 1 rayon/ 4 rayons/ pixel pixel 256 rayons/ 16 rayons/
Limitations Chemins tracés en sens inverse de la lumière Ne prends pas bien en compte tous les effets Bruit sur les caustiques
Limitations Tracé de chemins : 1000 chemins par pixel
Tracé de chemins lumineux Tracer des chemins des sources lumineuse plutôt que de l’œil Permet de bien prendre en compte les caustiques et l’éclairage indirect Mais pas les réflexions!!!
Tracé de chemins lumineux
Tracé de chemins bidirectionnels Trace un chemin des sources lumineuses et un chemin de l’œil Connecte les chemins à chaque sommets Très coûteux mais prend en compte quasiment tous les effets
Tracé de chemins bidirectionnels
Tracé de chemins bidirectionnels Tracé de chemins classique
1L,2E 2L,1E 3L,1E 1L,3E 1L,4E 4L,1E
Carte de photons Algorithme fondé sur l’estimation de densité Approche similaire au tracé de chemins bidirectionnel « cache » des chemins lumineux
Estimation de densité par noyau Méthode statistique Ensemble de données issues d’un processus aléatoire Estimer la densité de probabilité de ce processus
Estimation de densité par noyau Relation entre densité de probabilité et éclairement par définition : Exprimé par rapport au flux :
Estimation de densité par noyau N photons d’énergie lancé dans la scène Le flux s incident sur une surface s’exprime Probabilité qu’un photon Pi heurte une surface A
Estimation de densité par noyau La densité de probabilité des photons est proportionnelle à l’éclairement
Estimation de densité par noyau Ensemble de n données observées Les données ont une seule dimension, elles sont donc répartis le long de l’abscisse, estimer quelle est la densité de probabilité qui a entrainé Cette distribution des données
Estimation de densité par noyau La densité est estimée par la moyenne de n fonctions noyaux centrées sur chaque donnée observée Le paramètre h contrôle la taille du noyau, paramètre de lissage Son intégration sur le domaine est égale à 1 La fonction est nulle en dehors d’une partie restreinte du domaine Fonction noyau K unitaire, symétrique et à support compact
Estimation de densité par noyau La densité est estimée par la moyenne de n fonctions noyaux centrées sur chaque donnée observée Le paramètre h contrôle la taille du noyau, paramètre de lissage Intéger le paramètre h dans la fonction noyau, pour donner une fonction noyau mise à l’échelle Kh Fonction noyau K unitaire, symétrique et à support compact
Estimation de densité par noyau Le paramètre de lissage h contrôle le compromis biais/variance
Estimation de densité par noyau Le paramètre de lissage h contrôle le compromis biais/variance Biais Variance
Application à l’éclairage global Lancer de photons Photons Position Énergie Processus aléatoire = lancer de photons Données observées = photons Chemins lumineux dépose des photons dans la scène
Estimation de l’éclairement Densité des photons proportionnelle à l’éclairement incident Éclairement estimé en un point Approche scène : estimé par sommet ou par texel Approche image : estimé par pixel Éclairement incident : quantité de lumière reçu en un point Au final on en déduit la formule suivante
Mise en oeuvre Jensen (96) Visualisation directe de la carte de photons (6 min)
Mise en oeuvre Walter (98) Éclairage global par estimation de densité linéaire: 8h
Approche classique La fonction noyau est à support local et symétrique : disque en 2D Localiser les k photons qui sont à une distance h du point d’estimation Au lieu de localiser pour chaque point d’estimation, les k données proches,
Approche duale L’éclairement est estimé en un grand nombre de points Pour chaque photon, localiser les points d’estimation à la distance h, et leur ajouter la contribution du photon
Approche duale en pratique Par texture Estimation réalisée dans l’espace texture très efficace Peu évident à généraliser Par maillage triangulaire connecté Plus général Plus coûteux
Performance Résultats équivalents entre approche duale et classique Photons accédés linéairement Permet de gérer plus facilement ce grand volume de donnés
Biais sur les bords Fuite d’énergie sur les bords des surfaces
Biais sur les bords Estimation de densité évalue la fonction à zéro en dehors de la surface Biais vers zéro sur les bords Effectue l’estimation au centre de la surface,
Corriger le biais sur les bords Méthode de réflexion Réfléchir les données sur les bords Utilisation de noyaux frontières Noyaux qui s’adaptent au bord (ne sont plus symétriques) Calculs complexes Prendre ne compte le bord pour modifier la fonction noyau
Triangles fantômes Étendre la surface pour rajouter de l’information
Triangles fantômes Surfaces étendues sur leurs bords Trouver le contour Déplacer le contour Trianguler la bande formée par les deux contours Déplacement proportionnel au paramètre de lissage
Triangles fantômes Lancer de photons modifié pour prendre en compte les triangles fantômes Un photon n’est pas arrêté par un triangle fantôme mais un photon est ajouté
Triangles fantômes Réduit le biais sur les bords Nécessite des calculs géométriques Augmente la complexité géométrique Dépend du paramètre de lissage => Dépend du nombre de photons
Carte de Photons 100000 photons, 50 photons pour l’estimateur
Carte de Photons 500000 photons, 500 photons pour l’estimateur
Carte de Photons Photons stockés dans un Kd-Tree balancé pour accélérer le calcul des N plus proches voisins Photons séparés en deux groupes : caustiques et globales Limité par la mémoire