Télécharger la présentation
Publié parMaude Thiery Modifié depuis plus de 10 années
1
GIF-23205 Qualité et performance du rendu en infographie
H13-Les textures (partie 1) Patrick Hébert Session H09 11 février 2009
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 ».
3
Pourquoi la texture? Elle enrichit le réalisme du modèle d’apparence tout en évitant de décomposer la géométrie trop finement pour représenter les sections de couleurs différentes + =
4
Deux exemples Elle peut même compenser pour une géométrie fine non modélisée Tirée du RTR
5
Du pixel au texel La texture peut être une image ou une procédure. L’exemple suivant montre le cas d’une image. (0,0) (1,0) (1,1) (0,1) (u0,v0) (u1,v1) (u2,v2) Image (pixel) (u,v) dans [0,1] Carte de texture (texels) Le triangle n’est pas forcément de la taille (ou forme) de celui de la carte de texture
6
Autre exemple
7
La transformation (mapping) n’est pas toujours simple!
Projections sphériques, cylindriques, planes Nous verrons aussi le cube et le « environment » mappings Le défi: paramétriser un maillage (u,v) L’espace 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
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 l’intervalle [0,1]
Modes Repeat, mirror, clamp, border Le comportement peut être configuré différemment en u vs en v Notons qu’une texture peut être R, V, B, alpha et qu’elle peut aussi encoder d’autres propriétés comme la normale (2,2) (-1,-1)
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 Carte de 256 x 256 texels Forme 80 x 80 Forme 750 x 750
11
Le suréchantillonnage
Rappel: Reconstruire et rééchantillonner sinc(x) n’est pas pratique Le Box filter (voisin le plus proche ”nearest-neighbor”) fournit une qualité discutable
12
Le suréchantillonnage (suite)
L’interpolation linéaire améliore significa- tivement le résultat
13
L’interpolation bilinéaire
Les coordonnées de texture (pu , pv) sont l’intervalle [0,1] La taille de l’image de texture: n*m texels La méthode du plus proche voisin donnerait: ( floor(n*u), floor(m*v) ) L’interpolation 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
15
Le sous-échantillonnage
À l’opposé, 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.
16
Le mipmapping d v u 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 N’occupe que 33% plus d’espace 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 d’une interpolation linéaire entre les niveaux. OpenGL peut produire la pyramide et gérer tout d v u
17
Le mipmapping (suite) (u0,v0,d0) d v u L’interpolation trilinéaire
Requiert l’accès à 8 texels niveau n+1 (u0,v0,d0) d niveau n v u
18
Calcul du niveau d pour le mipmapping
texel pixel projeté dans l’espace des textures Le carré englobant peut être surdimensionné si on prend la plus grande dimension Produit du flou
19
Exemple Voisin le plus proche Mipmapping
20
Une solution: le filtrage anisotropique
d est choisi avec le plus petit côté 16 échantillons
21
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 Tomas Akenine-Mőller © 2002
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();
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);
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);
25
Notion avancée: les champs lumineux
En supposant un milieu transparent, un CL paramétrisé sur n’importe quelle surface fermée permet de produire le rendu de toutes les vues hors de la surface.
26
Produire le rendu d’un champ lumineux
Champ de lumière surfacique: un ensemble multitexture: chaque triangle est couvert par les images des caméras qui le voit Pour un nouveau point de vue, l’image produite est une combi- naison des images (textures) de base
27
Produire le rendu d’un champ lumineux
démo Une question d’interpolation 27
28
Références utiles Real−Time Rendering, par Tomas Akenine−Möller, Eric Haines et Naty Hoffman, A.K. Peters Ltd., 3e édition, 2008 (chap. 6) 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) OpenGL Shading Language, Randi J. Rost et al, Addison Wesley, 2e édition, 2006. Interactive Computer Graphics – A Top-Down Approach Using OpenGL, E. Angel, Addison-Wesley, 5e édition, 2009 (chap. 8)
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.