La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert Session H09 11 février 2009 H13-Les textures (partie 1)

Présentations similaires


Présentation au sujet: "GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert Session H09 11 février 2009 H13-Les textures (partie 1)"— Transcription de la présentation:

1 GIF Qualité et performance du rendu en infographie Patrick Hébert Session H09 11 février 2009 H13-Les textures (partie 1)

2 Liste des notions importantes La paramétrisation des textures Léchantillonnage Le filtrage La partie 2 traitera notamment du « bump mapping » et du « environment mapping ». 2

3 Pourquoi la texture? Elle enrichit le réalisme du modèle dapparence tout en évitant de décomposer la géométrie trop finement pour représenter les sections de couleurs différentes 3 + =

4 Deux exemples Elle peut même compenser pour une géométrie fine non modélisée 4 Tirée du RTR

5 Du pixel au texel 5 (0,0)(1,0) (1,1)(0,1) (u,v) dans [0,1] (u0,v0) (u1,v1) (u2,v2) Carte de texture (texels) La texture peut être une image ou une procédure. Lexemple suivant montre le cas dune image. Le triangle nest pas forcément de la taille (ou forme) de celui de la carte de texture Image (pixel)

6 Autre exemple 6

7 La transformation (mapping) nest pas toujours simple! 7 Projections sphériques, cylindriques, planes Nous verrons aussi le cube et le « environment » mappings Le défi: paramétriser un maillage (u,v) Lespace des paramètres peut aussi être représenté avec 1, 3 ou même 4 paramètres Oui, on peut définir la texture sur un droite!

8 Principe de la projection sur une surface intermédiaire 8 Principe important: 1- on applique la texture sur une surface simple 2- on passe de la surface simple à la surface réelle

9 Extension de lintervalle [0,1] Modes Repeat, mirror, clamp, border Le comportement peut être configuré différemment en u vs en v Notons quune texture peut être R, V, B, alpha et quelle peut aussi encoder dautres propriétés comme la normale 9 (-1,-1) (2,2)

10 Léchantillonnage de la texture Traditionnellement, les cartes de textures devaient être de dimensions égales à une puissance de 2. Des valeurs arbitraires sont maintenant possibles. On doit considérer le sur et le sous échantillonnages du tampon de couleur vs la carte de textures 10 Carte de 256 x 256 texels Forme 750 x 750 Forme 80 x 80

11 Le suréchantillonnage Rappel: Reconstruire et rééchantillonner 11 sinc(x) nest pas pratique Le Box filter (voisin le plus proche nearest-neighbor) fournit une qualité discutable

12 Le suréchantillonnage (suite) Linterpolation linéaire améliore significa- tivement le résultat 12

13 Linterpolation bilinéaire Les coordonnées de texture (p u, p v ) sont lintervalle [0,1] La taille de limage de texture: n*m texels La méthode du plus proche voisin donnerait: ( floor(n*u), floor(m*v) ) Linterpolation bilinéaire peut être vue comme une combinaison de 3 interpolations linéaires

14 La formule équivalente On pourrait aussi pousser davantage avec une interpolation bicubique (sur une zone 4 x 4) qui serait implantée dans un shader 14

15 Le sous-échantillonnage À lopposé, pour le sous-échantillonnage, il faudrait filtrer avant de reconstruire et déchantillonner car un pixel couvre plusieurs texels. Il faut considérer la performance et trouver une méthode efficace. 15

16 Le mipmapping u v d Une pyramide précalculée Un rapport de 2 par étage selon chaque axe Une moyenne sur les 4 texels du niveau inférieur ou mieux, vous pouvez construire votre propre pyramide Noccupe que 33% plus despace 1 + ¼ + 1/16 + 1/64 + 1/ (une série géométrique: 1/(1-r) avec r= ¼) Il faut calculer le niveau d qui donne un rapport près de 1:1 Le calcul de d (valeur réelle) indique deux images On peut ensuite appliquer une interpolation bilinéaire dans les deux images, suivie dune interpolation linéaire entre les niveaux. OpenGL peut produire la pyramide et gérer tout

17 Le mipmapping (suite) Linterpolation trilinéaire Requiert laccès à 8 texels v u d niveau n+1 niveau n (u0,v0,d0)(u0,v0,d0)

18 Calcul du niveau d pour le mipmapping Le carré englobant peut être surdimensionné si on prend la plus grande dimension Produit du flou pixel projeté dans lespace des textures texel

19 Exemple 19 Voisin le plus proche Mipmapping

20 Une solution: le filtrage anisotropique 16 échantillons d est choisi avec le plus petit côté

21 Tomas Akenine- Mőller © 2002 Application des textures Modulation (multiplier la valeur de la texture par la valeur du rendu de base avec éclairage) Remplacement de la couleur par la valeur de la texture Combinaison avec la transparence (alpha) Autres combinaisons possibles

22 Considérations pratiques en OpenGL Étape 1 Glubyte image_texture[512][512][3]; glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 512, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, image_texture); /* le premier 0 est le niveau du mipmapping car on peut charger manuellement et le second est la bordure */ glEnable(GL_TEXTURE_2D); // activer le texture mapping Étape 2 glBegin(GL_QUAD); glTexCoord2f(0.0, 0.0); glvertex3f(x1, y1, z1); glTexCoord2f(1.0, 0.0); … // on pourrait aussi ajouter une normale et même une couleur glEnd(); 22

23 Considérations pratiques en OpenGL (suite) Répétition de la texture glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); Échantillonnage glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); MipMap gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, 64, 64, GL_RGB, GL_UNSIGNED_BYTE, image_texture2); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR); 23

24 Considérations pratiques en OpenGL (suite) Fusion de la texture avec la couleur de base glTexEnvi(GL_TEX_ENV, GL_TEX_ENV_MODE, GL_MODULATE); // il y a aussi GL_DECAL Interpolation plus précise qui tient compte de la perspective glHint(GL_PERSPECTIVE_CORRECTION, GL_NICEST); Autres fonctions à explorer glTexGen(); // génère les coordonnées de texture automatiquement Le multitexturing glMultiTexCoord2f(GL_TEXTURE0, s, t); 24

25 Notion avancée: les champs lumineux En supposant un milieu transparent, un CL paramétrisé sur nimporte quelle surface fermée permet de produire le rendu de toutes les vues hors de la surface.

26 Produire le rendu dun champ lumineux Champ de lumière surfacique: un ensemble multitexture: chaque triangle est couvert par les images des caméras qui le voit 26 Pour un nouveau point de vue, limage produite est une combi- naison des images (textures) de base

27 Produire le rendu dun champ lumineux Une question dinterpolation 27 démo

28 Références utiles 1.RealTime Rendering, par Tomas AkenineMöller, Eric Haines et Naty Hoffman, A.K. Peters Ltd., 3e édition, 2008 (chap. 6) 2.OpenGL(R) Programming Guide: The Official Guide to Learning OpenGL(R), Version 2.1, Dave Shreiner, Mason Woo, Jackie Neider, Tom Davis, Addison Wesley, 6ième édition, 2007 (chap. 9) 3.OpenGL Shading Language, Randi J. Rost et al, Addison Wesley, 2 e édition, Interactive Computer Graphics – A Top-Down Approach Using OpenGL, E. Angel, Addison-Wesley, 5 e édition, 2009 (chap. 8)


Télécharger ppt "GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert Session H09 11 février 2009 H13-Les textures (partie 1)"

Présentations similaires


Annonces Google