Synthèse d'images Apparence, Couleur et Matériaux René Magritte - 1929 On ne fait pas la lumière, on la reproduit. Paul Cézanne Jérôme Baril baril@labri.fr 2 Simulation de l'éclairage Problème complexe Un objet éclairé devient une source lumineuse L'éclairement en un point dépend Des sources lumineuses Éclairage direct Des sources lumineuses secondaires (i.e. les objets de la scène) Éclairage indirect 3 Cornell Box - 1984 Simulation de l'éclairage 4
Simulation de l'éclairage Problème complexe Autres phénomènes 5 6 Éclairage Local L( s, o )=ρa L a + k ρ ( s, o, ik ) G( ik s )L k ( ik ) L( s, o )=ρa L a + k ρ ( s, o, ik ) G( ik s )L k ( ik ) Modèle empirique de la Radiance Quantité d'énergie lumineuse émise en un point Par portion de surface et de direction : W.m-2.s-1 s : point de la surface o : point de vue i : rayon lumineux incident 7 s : point de la surface o : point de vue i : rayon lumineux incident 8
L( s, o )=ρa L a + k ρ ( s, o, ik ) G( ik s )L k ( ik ) L( s, o )=ρa L a + k ρ ( s, o, ik ) G( ik s )L k ( ik ) Énergie lumineuse sortante = radiance Éclairement ambiant Approximation de l'éclairage indirect s : point de la surface o : point de vue i : rayon lumineux incident 9 s : point de la surface o : point de vue i : rayon lumineux incident10 L( s, o )=ρa L a + k ρ ( s, o, ik ) G( ik s )L k ( ik ) L( s, o )=ρa L a + k ρ ( s, o, ik ) G( ik s )L k ( ik ) Réflexions des sources lumineuses Chaque source lumineuse k contribue s : point de la surface o : point de vue i : rayon lumineux incident11 Orientation de la surface en s s : point de la surface o : point de vue i : rayon lumineux incident12
L( s, o )=ρa L a + k ρ ( s, o, ik ) G( ik s )L k ( ik ) L( s, o )=ρa L a + k ρ ( s, o, ik ) G( ik s )L k ( ik ) Énergie entrante du rayon lumineux Matériau ou BRDF Décrit la manière dont la lumière est réfléchie à la surface de l'objet s : point de la surface o : point de vue i : rayon lumineux incident13 s : point de la surface o : point de vue i : rayon lumineux incident14 L(s, o )=ρa L a + k ρ ( s, o, ik ) G( ik s ) L k ( ik ) L(s, o )=ρa L a + k ρ ( s, o, ik ) G( ik s ) L k ( ik )? couleur 15 Modèle le plus simple (albédo) Pas de dépendance Du point de vue De la direction des rayons lumineux 16
Problèmes : Physique : Isaac Newton (1671) Qu'est-ce qu'une couleur? Comment la représenter numériquement? La lumière visible est une onde électro-magnétique 17 18 Physique : Isaac Newton (1671) Physique : Isaac Newton (1671) Phisiologie : Tomas Young (1802) 19 La lumière visible est une onde électro-magnétique La perception colorimétrique est la combinaison linéaire de trois stimulus rétinien (couleurs primaires) 20
Informatique : Modèle tri-chromatique de couleurs Synthèse additive (spots de lumière) Synthèse soustractive (pigments de peinture) Mélange additif/soustractif des trois composantes Rouge, Vert et Bleu (ou RGB) Ou autre? Synthèse additive Synthèse soustractive 21 22 Informatique : Informatique : Modèle tri-chromatique de couleurs Modèle tri-chromatique de couleurs Additif Soustractif Proche du comportement de l'oeil Filtres de projection Sur les imprimantes principalement Différents Espaces : Différents Espaces : XYZ (normalisé par la CIE) Rouge, Vert et Bleu (ou RGB) YIQ (NTSC), YUV (PAL)... 23 CMY (Cyan, Magenta et Jaune) CMYK (+ black)... 24
Informatique : Modèle tri-chromatique de couleurs Mais aussi, Perceptuel Distance entre les couleurs = Différences perçues Différents Espaces : Luv/Lab HSV... Représentation des couleurs (codage) : Représentation entière 1 bit, Binaire 8 bits, Monochrome 0 à 255 niveaux de gris 24 bits, Polychrome (adapté aux écrans) 0 ou 1 triplet de 0 à 255, généralement RGB Mais limitations Intensité lumineuse d'une scène réelle : x10 8 entre le soleil et une étoile Nombre de couleurs limité Pertes de données d'une scène 25 26 Représentation des couleurs (codage) : Représentation entière Représentation en rééls High Dynamic Range (HDR) Quantification adaptée à la scène et pas au périphérique d'affichage Dynamique max = limites du système visuel humain 27 28
L(s, o )=ρa L a + k ρ ( s, o, ik ) G( ik s ) L k ( ik ) L( s, o )=ρa L a + k ρ ( s, o, ik )G( ik s ) L k ( ik ) ρ ( s, i )G ( i s) L( i ) couleur Modèle trop simple! Adapté à la photo mais pas à la SI : scène statique Une lumière dynamique Quels types de lumière? Quel type de réflexion à la surface d'un objet? Pas de points de vue dynamique ni de variations de la lumière dans la scène 29 30 Sources de lumières Sources de lumières p Infinitésimales : Directionnelles Infinitésimales : Pontuelles La lumière vient d'une seule direction Source positionnée dans l'espace Applications : Applications : Source proche de petite taille Sources distantes (ex : soleil) Carte d'environnement (Jeux Vidéo) 1 pixel = 1 source directionnelle G( i s) L( i )= n, i L 31 n, i G( i s) L( i )= 2 L r r = p s i = p s r 32
Sources de lumières Sources de lumières Infinitésimales : Infinitésimales : Diagramme goniométrique Ponctuelle Distribution directionnelle Applications : Source non-uniforme Petite taille ou suffisamment éloignée n, i G( i s) L( i )= 2 L( i ) r Directionnelle, Ponctuelle, Diagramme goniométrique Etendues (Surface/Volume) : Uniforme, ensemble infini de sources ponctuelles Notion de pénombres et d'ombres douces Calculs plus couteux! 33 Sources de lumières 34 Éclairage Local - Réflexions L(s, o )=ρa L a + k ρ (s, o, ik )G( ik s )L k ( ik ) ρ ( s, i )G ( i s) L( i ) Source directionnelle, L = 1 ρ ( s, i ) n, i avec, ρ (s, i )=constante 35 36
L(s, o )=ρa L a + k ρ ( s, o, ik )G( ik s )L k ( ik ) n, i Diffus, Lambertien L(s, o ) ρ ( s, i ) n, i avec, ρ (s, i )=1 i Réflexions diffuses Lambertien Indépendant du point de vue Réflexion omnidirectionnelle ρ (s, i ) 37 Miroirs Dépendant du point de vue Reflète l'environnement 38 Réflexions Miroirs L(s, o ) ρ ( s, o ) o 39 40
Brillant (glossy) Dépendant du point de vue Dépendant de la lumière Reflète une partie de l'environnement Brillant (glossy) i 41 42 Intérêt du lancé de rayon Brillant (glossy) Modèle de Phong ρ (s, o, i )= o,r e Environment Map Ray Tracing 43 44
Brillant (glossy) Modèle de Blinn-Phong ρ (s, o, i )= n, h e 45 46 Modèle de Phong Somme pondérée des différentes réflexions Anisotropie Dépendant de l'orientation de la surface e L(s, o )=I a κa +I d κd o, i +I s κ s o, r Ambient + Diffus + Spéculaire = Phong 47 48
Anisotropie 2 ρ (s, o, i )= o, r η cos (Φ)+ η sin u v 2 (Φ) Diffus, Miroirs, Glossy Dépendant : point de vue et direction de la lumière Modèle de Phong Anisotropie Dépendant de la géométrie Questions??? 49 50 51 Eclairement par face, ou «Flat Shading» Les normals pour chaque sommet d'une face sont identiques La reflectance est la même pour tout fragment du triangle 52
Eclairement par face, ou «Flat Shading» // all parameters «in» & «uniform» // normal & color are the same per face in vec3 fcolor ; out vec3 fcolor ; out vec3 fragcolor ; void main () { // transform vertex position gl_position = ; void main () { FragColor = fcolor ; } Eclairement par point, ou «Gourau Shading» Les normals pour chaque sommet d'une face sont différentes La reflectance est calculée pour chaque sommet, puis rasterizée // compute color fcolor = Ka ; fcolor += Kd*dot(normal,light) ; vec3 r = reflect(light,normal) ; fcolor += Ks*pow(dot(view,r),s) ; } Vertex Shader Fragment Shader 53 54 Eclairement par point, ou «Gourau Shading» // all parameter «in» & «uniform» // normal & color are NOT the same per face in vec3 fcolor ; out vec3 fcolor ; out vec3 fragcolor ; void main () { // transform vertex position gl_position = ; void main () { fragcolor = fcolor ; } Eclairement par point, ou «Gourau Shading» // compute color fcolor = Ka ; fcolor += Kd*dot(normal,light) ; vec3 r = reflect(light,normal) ; fcolor += Ks*pow(dot(view,r),s) ; Problème Interpolation de la couleur sur les fragments Dépendance à la finesse de la géométrie??? } Vertex Shader Fragment Shader 55 56
Eclairement par fragment, ou «Phong Shading» Les normals pour chaque sommet d'une face sont différentes Les normals sont interpolées La reflectance est calculée par fragment Eclairement par fragment, ou «Phong Shading» Interpolation de la normal sur les fragments Calcul de la radiance par fragment // all parameter «in» & «uniform» in vec3 vnormal; out vec3 vnormal; out vec3 fragcolor; void main () { // transform vertex position gl_position = ; // assign normal vnormal = normal; 57 } 58 Vertex Shader void main () { FragColor += Kd*dot(vNormal,light) ; vec3 r = reflect(light,vnormal) ; FragColor += Ks*pow(dot(view,r),s) ; } Fragment Shader Eclairement par fragment, ou «Phong Shading» Interpolation de la normal sur les fragments Nécessité de normaliser la solution 59 60
Autres effets Autres effets Ombres Ambiant Occlusion Portion d'énergie reçue en tenant compte de la visibilité 61 62 Autres effets Ambiant Occlusion 63 Couleur Lambertien Reflexions mirroirs Anisotropie Goureau / Phong Ombre et Ambient Occlusion Spacially Varying 64