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

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

Embed Size (px)

Citation preview

Page 1: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

GIF-23205 Qualité et performance du rendu en infographie

Patrick Hé[email protected]

Session H0911 février 2009

H13-Les textures (partie 1)

Page 2: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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

Page 3: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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

3

+ =

Page 4: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

Deux exemples

• Elle peut même compenser pour une géométrie fine non modélisée

4

Tirée du RTR

Page 5: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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.L’exemple suivant montre le cas d’une image.

Le triangle n’est pas forcémentde la taille (ou forme) de celuide la carte de texture

Image(pixel)

Page 6: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

Autre exemple

6

Page 7: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

La transformation (mapping) n’est 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)• L’espace des paramètres peut

aussi être représenté avec1, 3 ou même 4 paramètres• Oui, on peut définir la texture

sur un droite!

Page 8: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

Principe de la projection sur une surface intermédiaire

8

Principe important: 1- on applique la texture sur une surface simple2- on passe de la surface simple à la surface réelle

Page 9: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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’ellepeut aussi encoder d’autres propriétés comme la normale

9

(-1,-1)

(2,2)

Page 10: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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 256texels

Forme 750 x 750

Forme 80 x 80

Page 11: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

Le suréchantillonnage

• Rappel:Reconstruire etrééchantillonner

11

• sinc(x) n’est pas pratique• Le Box filter (voisin le plus proche ”nearest-neighbor”) fournit une

qualité discutable

Page 12: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

Le suréchantillonnage (suite)

• L’interpolation linéaire améliore significa-tivement le résultat

12

Page 13: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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

Page 14: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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

Page 15: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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.

15

Page 16: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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érieurou mieux, vous pouvez construirevotre propre pyramide• N’occupe que 33% plus d’espace

1 + ¼ + 1/16 + 1/64 + 1/256 + ... (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

Page 17: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

Le mipmapping (suite)

• L’interpolation trilinéaire• Requiert l’accès à 8 texels

v

u

d

niveau n+1

niveau n

(u0,v0,d0)

Page 18: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

Calcul du niveau d pour le mipmapping

• Le carré englobant peut être surdimensionné si on prendla plus grande dimension• Produit du flou

pixel projeté dans l’espace des texturestexel

2

surfaceestiméedu quadrilatère

log

A

b A

d b

Page 19: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

Exemple

19

Voisin le plusproche

Mipmapping

Page 20: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

Une solution: le filtrage anisotropique

16 échantillons

d est choisiavec le pluspetit côté

Page 21: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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

Page 22: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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

Page 23: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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

Page 24: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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

Page 25: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

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.

Page 26: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

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

26

Pour un nouveau point de vue,l’image produite est une combi-naison des images (textures) de base

Page 27: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

Produire le rendu d’un champ lumineux

• Une question d’interpolation

27

démo

Page 28: GIF-23205 Qualité et performance du rendu en infographie Patrick Hébert hebert@gel.ulaval.ca Session H09 11 février 2009 H13-Les textures (partie 1)

http://www.gel.ulaval.ca

Références utiles

1. Real−Time Rendering, par Tomas Akenine−Mö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, 2e édition, 2006.

4. Interactive Computer Graphics – A Top-Down Approach Using OpenGL, E. Angel, Addison-Wesley, 5e édition, 2009 (chap. 8)