II. Lancers de rayons & compagnie LA SYNTHÈSE D'IMAGES Plan du cours I. Techniques d’ombrage II. Lancers de rayons et consort A. L’algorithmique des lancers de rayon B. Suivis de rayons C. Suivis de lumière D. Techniques bi directionnelles E. Comparaisons III. Photon mapping IV. Radiosité V. Simple diffusion & milieux participants VI. Techniques hybrides 2 II. Lancers de rayons & compagnie A. Le lancer de rayons LA SYNTHÈSE D'IMAGES Algorithme Principe On place la caméra virtuellement dans la scène On « muni » la caméra d’un écran (virtuel) On tire des rayons du centre focal de la camera a travers chaque pixel de l’écran On suit ces rayons pour voir ce qu’ils touchent 4 Algorithme Algorithme Image lancer_rayon(Scene s) { pour chaque pixel p { Calcul du rayon r passant par la focale caméra et le pixel p last_inter = +infini pour chaque objet o de la scène s { si (intersection(r,o) < last_inter) { calcul illumination c au point d’intersection } } fixer la couleur c au pixel } renvoie image } Complexité ? 5 Algorithme Plusieurs étapes : 1. Calcul des rayons r 2. Calcul de l’intersection 3. Calcul de l’illumination Amélioration de la complexité : Boucle for orange ! Augmentation de la complexité : Récursivité sur l’instruction en bleue 6 Calcul des rayons Calcul des rayons : rayons centrés Détermination d’un coin de la grille Plus un demi pixel en hauteur et en largeur Pour chaque rayon on avance de la taille d’un pixel Autres techniques : Détermination d’un point de manière stochastique dans le pixel Détermination de n rayons dans un pixel Pixel sampling 7 Intersections Calcul de l’intersection : On utilise des primitives graphiques Sphère, cylindre, plan, carré, triangle, tore, ellipsoïde Chaque primitive définie dans un repère canonique On détermine précisément les conditions d’intersection rayon / objet Chaque primitive est placée dans la scène par transformation Les rayons subiront la transformation afin de les ramener dans le repère canonique des primitives 8 Intersections Stratégie de calcul d’intersection Équation paramétrique du rayon Équation cartésienne de l’objet Donne une condition sur le paramètre du rayon Exemple d’intersections : rayon / plan x Ox t u x y Oy t u y z O t u z z Ou, vectoriellement : a x b y c z d 0 a Ox b Oy c Oz d t (au x bu y cu z ) 0 t a Ox b Oy c Oz d (au x bu y cu z ) equplan (O) t n.u 9 Intersections Exemple d’intersection : plan / rayon Avec objet canonique : plan z = 0 O t z uz Rapidité de calcul … après transformation Exemple d’intersection : sphère / rayon Vectoriellement, c’est plus simple ! 10 Optimisations Optimisation sur boucle orange Objectif : Se libérer de la dépendance à la scène Utilisation de structure de données (scène) accélératrice : BSP Tree Grille uniforme KDTree Octree Hiérarchie de volume englobant Autres variantes (Hierarchie de grille uniforme…) Algorithme de traversée rapide 11 Optimisations Algorithme de traversé rapide d’un rayon Amanatides & Woo (Eurographics 87) Exemple en 2D Otv Équation du rayon : Initialisation : Trouver le voxel X,Y origine de O Si pas dans la grille : trouver le premier point O Initialiser stepX et stepY à +1 ou -1 suivant le signe des coordonnées de v Calcul de tMaxX et tMaxY, mesure du déplacement (en t) avant de croiser la prochaine cellule sur l’axe des x et des y Calcul de tDeltaX, tDeltaY, déplacement (en t) pour se décaler d’un pixel en largeur et hauteur 12 Optimisations Algorithme de traversé rapide d’un rayon loop { if(tMaxX < tMaxY) { tMaxX= tMaxX + tDeltaX; X= X + stepX; } else { tMaxY= tMaxY + tDeltaY; Y= Y + stepY; } NextVoxel(X,Y); } Comportement identique en 3D 13 Optimisations Problème de la traversée rapide : A B 1 2 3 Solution : vérifier la valeur d’intersection de t par rapport au tmax autorisée pour la cellule donnée Optimisation supplémentaire : Chaque objet stocke l’identifiant du dernier rayon à l’avoir intersecté. Ainsi on ne calcule jamais deux fois la même intersection objet / rayon 14 Optimisations Traversée rapide et structure hierarchique Pour BSP Tree / Octree / Hiérarchie de volume englobant / KDTree Tous ont des structures d’arbre Méthode d’intersection récursive Parcours de l’arbre : Test sur le nœud Détermination de l’ordre de test sur les fils Récursivité dans cet ordre sur les fils Explications détaillées (octree) dans Geometric Data Structures for Computer Graphics Gabriel Zachmann & Elmar Langetepe, Course notes 15 Lancer de rayons de Whitted Modélisation de l’illumination : Modèle de Whited (1980) Modèle de Phong Une composante de transparence Non explicité Une composante de réflexion Non explicité L( x, u ) ( x, u ) ( d cos s cos n ) L(s) s Ls (u ' ) t Lt (u ' ' ) s:sources éventuellement n fois 16 Illumination Intervient dans le calcul de l’illumination Éclairage directe de la lumière L’ombre associée Composante de réflexion Composante de transmission Séparation des rayons en 2 groupes : Rayon d’ombre Seul la présence ou non d’occulteur est testée Rayon d’illumination On veut connaître les caractéristiques géométrique des points d’intersection 17 Illumination Réflexion : réflexion spéculaire pure I N R Calculez R ! Transmission pure : Snell-Descartes n1 sin(1) n2 sin(2) 18 Lancer de rayons de Whitted Véritable algorithme du lancer de rayon Direction spéculaire u’ : direction spéculaire pure Direction transmise u’’ : transmission pure loi optique de snell-descartes Arrêt de la récursivité : Sortie de la scène Après n rebonds 19 Lancer de rayons de Whitted OpenRT : http://www.openrt.de/ Bibliothèque de calcul en lancer de rayon Parallélisé & Distribué 20 Des défauts Lent Ne modélise pas : Les matériaux diffus Les caustiques Apparition de crénelage : Épaisseur nulle des rayons 21 II. Lancers de rayons & compagnie B. Techniques de suivi de rayons LA SYNTHÈSE D'IMAGES Suivi de rayons Attention : Terminologie propre Suivi de rayons : Poursuite des rayons lumineux Dans le sens caméra / lumière Deux techniques : Suivi de chemin Distributed ray tracing 23 Suivi de chemins Auteurs : J.T. Kajiya (1986) Philosophie : Suivre un rayon primaire jusqu’au « bout » Choix des directions de réflexion aléatoire On ne collecte la luminance qu’à la fin sources lumineuses / nombre max de réflexions En anglais : PATH TRACING 24 Suivi de chemins Mise en œuvre : Sur une intersection : On calcul l’éclairage direct On choisi une direction de réflexion Guidée par la BRDF de l’objet On fait l’appel récursif sur ce nouveau rayon La luminance sera rajoutée Défauts : Bruit généré sur l’image Deux pixels consécutifs ne vont pas engendrer les mêmes chemins lumineux 25 Distributed ray tracing Auteur : R. L. Cook, T. Porter, and L. Carpenter (1984) Philosophie : Pb : tout n’est pas net dans la vie Solution : on tire plutôt 2 fois (n fois) qu’une ! 26 Distributed ray tracing Suréchantillonage Sur les réflexions : modélise les BRDF Sur les transparences : modélise les BTDF Sur les sources lumineuses : modélisation des ombres douces Sur le temps : motion blur Sur les pixels caméra : profondeur de champs 27 Distributed ray tracing Exemple : réflexion A partir des rayons primaires Touchent une surface Tirs de rayons secondaires Selon la BRDF Qui peuvent devenir primaire Récursivité 28 Distributed ray tracing 29 Distributed ray tracing Défauts : Très très très long Complexité exponentielle sur le nombre de récursion autorisée Problèmes liés au suréchantillonage Apparition de bruit Peut s’atténuer en envoyant beaucoup de rayons 30 II. Lancers de rayons & compagnie C. Techniques de suivi de lumière LA SYNTHÈSE D'IMAGES Suivi de lumière Attention : Terminologie propre Suivi de lumière : Poursuite des rayons lumineux Dans le sens lumière / caméra Deux techniques : Suivi de photons Tracé de lumière : Monte Carlo Light Tracing Méthode des vecteurs lumineux Photon Mapping 32 Suivi de photons Auteurs : J. Arvo « Backward Ray Tracing » (1986) Philosophie : Suivre la lumière A partir de la caméra Sur surface spéculaire : rebond Sur surface diffuse : stockage 33 Suivi de photons Objectif : Obtention des caustiques Contraintes Deux types de surfaces : Parfaitement diffuses Parfaitement spéculaires Limité à une réflexion diffuse Stockage : Dans des textures 34 Caustiques ? Définition : C’est une réflexion diffuse précédée d’une ou plusieurs réflexions spéculaires (pures ou non) Phénomène très local et très global 35 Suivi de photons Mise en œuvre : // Passe 1 Pour chaque source { Choix rayon r send_rayon(Rayon r, Scene s) { if (objet o = intersect(s)) { if (o.speculaire) r.light += send_rayon(r’,s); if (o.diffuse) stockage(r,o.illumination_map); } } } // Passe 2 Rendu en lancer de rayon Surfaces texturées par les illumination_map 36 Suivi de photons Algorithme efficace Limité par ses deux contraintes Défauts : Bonnes textures d’illumination => beaucoup de photons : algorithme lent Une texture par surface : gourmand en mémoire ? 37 Tracé de lumière Auteur : P. Dutré, E. Lafortune, Y.D. Willems, Monte Carlo Light Tracing with Direct Computation of Pixel Intensities (1993) Philosophie : Suivre la lumière A chaque intersection, modifier l’image 38 Tracé de lumière Mise en œuvre : Aux intersections : Absorption du rayon Choix aléatoire de la direction guidé par la BRDF de la surface Projection directe de la luminance vers le centre optique Défauts : Présence de bruit dû au comportement aléatoire Nécessité de tirer beaucoup de particules 39 Vecteurs lumineux Auteurs : J. Zaninetti, J. Serpaggi, B. Péroche, A Vector Approach for Global Illumination in Ray Tracing, Eurographics’98 40 Vecteurs lumineux Philosophie : Séparer le calcul / le comportement de Contribution indirecte Contribution directe Caustiques Stockage de vecteurs d’illumination Dans des kdtree pour chaque surface Calcul différentié des vecteurs lumineux Chaque contribution en un point résulte en 2+n vecteur lumineux n : nombre de source lumineuse 41 Vecteurs lumineux Mise en œuvre : 2 passes Passe 1 Sélection aléatoire de points dans la scène où les vecteurs lumineux sont calculés Différentes méthodes de calcul : Caustiques : tirs focalisés sur les objets spéculaires Direct : échantillonnage de la source Indirecte : échantillonnage de l’hémisphère 42 Vecteur lumineux Mise en œuvre : Passe 2 : lancer de rayon classique En chaque point d’intersection, interpolation des vecteurs lumineux les plus proches Si insuffisant, un calcul complet est réalisé Problèmes : Bruit de haute et basse fréquence Echantillonnage source Echantillonnage 43 II. Lancers de rayons & compagnie D. Techniques bidirectionnelles LA SYNTHÈSE D'IMAGES Lancer de rayons bidirectionnel Auteurs : E.P. Lafortune, Y. Willems, Bi-directional Path Tracing,CompuGraphics 93 Philosophie : Suivre une paire de chemin lumière / caméra Pour chaque point d’intersection, envoyer un rayon d’ombre pour tester l’existence d’un chemin et le conserver 45 Lancer de rayons bidirectionnel Mise en œuvre (simple) Suivre les deux chemins Pour chaque intersection Lancer un rayon d’ombre entre le nouveau point et tout ceux de l’autre chemin Si la visibilité est ok : stockage du chemin Moyenne pondérée des flux sur les chemins déterminé précédemment 46 Lancer de rayons bidirectionnel Exemples : Bruit atténué mais pas éliminé 47 Metropolis Light Transport Auteurs : E. Veach, L.J. Guibas, Metropolis Light Transport, SIGGRAPH’97 Nom issu d’une méthode de physique Metropolis Sampling Idée : A partir d’un ensemble de rayons reliant lumières et caméra Les faire muter Reconsidérer les nouveaux chemins 48 Metropolis Light Transport Mise en œuvre : Trois stratégies de mutation : Mutations bidirectionnelles Perturbations (écran / caustiques) Mutations écrans Chaque chemin ajoute sa contribution à l’écran 49 Metropolis Light Transport Résultats : 450 mutations par rayon 1000 mutations par rayon algorithme optimisé : Coherent Metropolis Light Transport (2007) 50 II. Lancers de rayons & compagnie C. Quelques comparaisons LA SYNTHÈSE D'IMAGES Comparaisons Bidirectional Ray Tracing 1400 s ; 25 rayons / pixel Path Tracing 1510 s ; 100 rayons / pixel 52 Comparaisons Lancer de rayon Bidirectionnel Path tracing 53 Comparaisons Lancer de rayon 10 rayons par pixel 20 échantillons lumière 4 minutes Bidirectional Ray Tracing : 300 rayons/pixel Path Tracing : 5000 rayons par pixel ; 5h; 2h 54 Comparaisons Path Tracing 200 rayons par pixel MLT 55 Comparaisons Bidirectionnal Ray Tracing Metropolis Light Transport Same rendering time 56 Comparaisons 57 Plan du cours I. Techniques d’ombrage II. Lancers de rayons et consort III. Photon mapping IV. Radiosité V. Simple diffusion & milieux participants VI. Techniques hybrides 58 III. Photon mapping LA SYNTHÈSE D'IMAGES Plan du cours I. Techniques d’ombrage II. Lancers de rayons et consort III. Photon mapping A. Description générale B. Lancer de photon et cartes de photon C. Estimation sur les cartes de photon D. Lancer de rayon final & le modèle d’illumination E. Points forts et critiques IV. Radiosité V. Simple diffusion & milieux participants VI. Techniques hybrides 60 III. Photon mapping A. Description générale LA SYNTHÈSE D'IMAGES Photon mapping Article fondateur : H.W. Jensen « Global Illumination using Photon Maps », Rendering Techniques '96 Méthode d’illumination globale Très réaliste Parallélisable Bonne modélisation des différents comportements lumineux Idée phare : Choisir une méthode de traitement différente pour chaque comportement de la lumière 62 Photon mapping Exemple : 63 Photon mapping Photon Mapping & Radiosité : Amélioration de la simulation des échanges diffus dans le photon mapping S. Dumazet, V. Biri 64 Photon mapping Technique générale : Algorithme en 2 passes 1ère passe : lancer de photon dans la scène Avec stockage des photons Dans des directions spécifiques 2nde passe : lancer de rayon « classique » Définition d’un « nouveau » modèle d’illumination Algorithmique distinct pour chaque composant de ce modèle Exploitation des cartes de photons de la première passe 65 III. Photon mapping B. Le lancer de photon et les cartes de photons LA SYNTHÈSE D'IMAGES Lancer de photons 1ère passe : envoyer et stocker dans la scène des photons lumineux Deux tirs distincts Carte de photon globale Utilisation d’une structure de stockage des photons Cartes de photon On tire les photons dans toute la scène A partir des sources lumineuses Permet une rapide et imprécise évaluation du comportement de la lumière 67 Lancer de photons Algorithme : Sélection d’une source lumineuse s pour chaque photon p parmi N partant de s { calculer l’intersection avec la scène enregistrement de p dans la carte de photon globale prolongation de p dans la scene pour chaque surface touchée { stocker un photon d’ombre po à l’intersection } roulette russe sur p pour être réémis en q pondération de q par les propriétés matériaux tant que q energie positive & q non “mort” { faire l’intersection avec la scene pondérer le photon par les propriétés matériaux roulette russe sur q } } 68 Lancer de photons Lancer de photons : détails Cas particulier des photons issus des sources Prolongés pour détecter les zones d’ombre Accélération de la phase de rendu Réflexions Suivant les propriétés de réflexivité et de transmission, faire un tirage de roulette russe Élimination du photon ou poursuite de la trajectoire Trajectoire déterminée aléatoirement en accord avec la BRDF Suivant la nature de la réflexion (diffuse ou spéculaire), le photon est « flagué » diffus dès qu’il subit une réflexion diffuse et spéculaire sinon 69 Lancer de photons Lancer de photons : détails Conservation de l’énergie On donne aux photons une énergie moyenne : p l N photons A chaque réflexion, l’énergie du photon est pondéré par les coefficients de réflexion du matériau Puis il est normalisé afin de conserver son énergie totale Si sa couleur devient noire, alors il est éliminé 70 Lancer de photons 2ème tir de photons : carte caustique Même schéma de tir Dans les directions des surfaces spéculaires 100 fois plus de photons tirés par unité d’énergie Pour modéliser les caustiques, très locales Obtention des directions privilégiés Carte de projection Discrétisation en cellule de l’hémisphère de tir des sources Lancer de rayon sur chaque cellule Flag si interception sur une surface spéculaire Tir uniquement sur cellule valide 71 Lancer de photons Structure de photon importante Taille mémoire critique Structure de Jensen : Compression de l’angle d’incidence Compression des « couleurs » struct photon { float x,y,z; //Position char p[4]; //Power packed as 4 chars char phi, theta; //Compressed incident direction short flag; //Flag used in the Kdtree } 72 Lancer de photons 4 catégories de photons Photons directs Photons d'ombre Photons caustiques ou spéculaires Photons diffus 73 Lancer de photons Structure de stockage des photons Ce sont les fameuses cartes de photon Au choix mais : Nécessiter de les construire « rapidement » Opération courante : trouver les photons voisins d’un point donné Le Kdtree s’impose J. L. Bentley, Multidimentionnal Binary Search Trees Used for Associative Searching, ACM Student Award 1975 Un Kdtree pour la carte de photon globale Un autre pour la carte de photon caustique 74 Lancer de photons Exemples de carte de photon 75 III. Photon mapping C. Estimation sur les cartes de photons LA SYNTHÈSE D'IMAGES Estimations Problème clé : Étant donné un point de l’espace, quelle est son énergie ? Méthode Quérir les n photons les plus proches Représentent l’illumination à partir du point Éclairement énergétique ou luminance pondérés par la BRDF au point considéré Utilisé directement au rendu (caustique) Besoin d’une méthode précise 77 Estimations Recherche des photons proches : Utilisation du kdtree Deux stratégies : Tous les voisins dans une sphère Potentiellement beaucoup de photons Taille de lissage fixe N plus proches voisins Taille de lissage adaptative Attention à ne pas aller trop loin … 78 Estimations Filtrage Saut de luminance à l’ajout / retrait de photons Nécessité de pondérer la contribution des photons Utilisation d’un filtre Exemple : filtre gaussien 2 1 e 2r w 1 1 e d 2p dp : distance au photon r : rayon maximal α,β : constantes 79 Estimations Filtre gaussien Filtre conique 80 III. Photon mapping D. Modèle d’illumination & lancer de rayon final LA SYNTHÈSE D'IMAGES Lancer de rayon Caractéristique du photon mapping : Scinder l’illumination en 4 facteurs Illumination directe des sources Illumination spéculaire Illumination caustique Illumination indirecte diffuse Chaque type a son traitement spécifique Utilisation d’un lancer de rayon traditionnel Utilisant les cartes de photons précédentes 82 Lancer de rayon Illumination directe : L(S|D) Calcul du modèle de Phong (par exemple) directement par le lancer de rayon N L( x, ) F ( x, , li ) Li ( x, li ) n.li i 1 F : BRDF de la surface x : point sur la surface n : normale en x à la surface li : vecteur directeur en provenance de la ième source Li : luminance de la ième source Cohérence énergétique : p l N photons N photons p l ( x). d 83 Lancer de rayon Gestion des ombres On exploite la carte de photon globale Heuristique : Photons voisins : Très large pourcentage de photons directs : point éclairé Très large pourcentage de photons d’ombre : point ombré Sinon, on tire un rayon Visualisation des zones d'ombres : en rouge les zones indéterminées, en blanc les zones éclairées et en noir les zones d'ombres. 84 Lancer de rayon Illumination spéculaire (L|LD)S+ Utilisation du lancer de rayon classique Équation : L( x, ) Fs ( x, , ') ( Lis ( x, ') Lid ( x, ')) n. ' d ' Illumination caustique (LS+D) Équation : L( x, ) Fd ( x, , ') Lis ( x, ') n. ' d ' Utilisation de la carte de photon caustique Photons spéculaires 85 Lancer de rayon Illumination indirecte diffuse (L(S*D)+S*D) Utilisation de la carte de photon globale Photons diffus uniquement Équation : L( x, ) Fd ( x, , ') Lid ( x, ') n. ' d ' 86 III. Photon mapping D. Points forts & critiques LA SYNTHÈSE D'IMAGES Photon mapping Points forts : Segmentation des composantes de la lumière Traitement efficace sur chacun d’eux Souplesse du lancer de rayon Modélisation simple de nouveau modèle : Milieux participants BRDF Autres longueurs d’onde Peu de dépendance à la géométrie des modèles Modélisation & complexité Parallélisable et distribuable 88 Photon mapping Défaut : Méthode essentiellement statique Dès qu’un objet bouge, les cartes de photon sont fausses Problème à l’estimation de l’énergie Aux bords des surfaces Dû au manque d’échantillonnage Mauvaise modélisation des échanges diffus multiples Apparition d’un bruit de basse fréquence 89 Photon mapping Estimation de l’énergie : bords 90 Photon mapping Estimation de l’énergie : sous échantillonnage 91 Photon mapping Bruit de basse fréquence sur l’indirect diffus Rendu mental ray http://www.3dvf.com/ History of rendering Rendu de l’indirect diffus Dmitry Shklyar (3DVF) S.Dumazet, V. Biri V-Ray rendering (tutorial) 92 Photon mapping Solution pour éviter le bruit en diffus indirect : Irradiance Gradiant 93