Le plaquage de textures fait partie des techniques utilisées pour améliorer le rendu d’une image en trois dimensions (3D). Lorsque vous voyez une porte en bois à l’écran, elle est le résultat de deux traitements successifs. Le premier consiste à décrire la porte comme une forme, un rectangle, un trapèze ou un autre quadrilatère selon la perspective choisie, c’est la création de la primitive. Le second remplit l’espace ainsi défini avec la texture choisie, en l’occurrence le bois. Cette opération – appliquer une image sur une primitive – se nomme le plaquage de textures (texture mapping en anglais). Elle améliore le réalisme de l’objet affiché à l’écran, sans pour autant augmenter la quantité de calculs géométriques nécessaires au modelage de l’objet, car le traitement de la forme est dissocié du traitement de l’apparence (couleur, matière, grain…).Les systèmes graphiques utilisent des points, des segments de droites et des polygones pour représenter les formes géométriques de base qui, assemblées, formeront un objet ou une scène 3D. En utilisant de nombreux triangles de petite taille (15 à 50 pixels de côté), on parvient à représenter à peu près n’importe quelle forme avec un niveau de réalisme satisfaisant. Ces triangles, ou plus exactement les équations et les coordonnées qui les définissent, sont les primitives et sont générés par le moteur 3D.En revanche, les textures ne sont pas des objets 3D, mais des images bitmap, JPEG ou autres. La première étape du traitement consiste à les transformer en textures. L’image est enregistrée sous la forme d’une grille de valeurs de couleurs divisée en unités de bases dénommées texels. Chaque texel contenu dans la grille est défini par un codage, sur 8 ou 16 bits, des couleurs qui le constituent : rouge, vert, bleu et éventuellement alpha (pour la transparence) et certains paramètres associés tels que la luminosité et l’intensité. Dans les systèmes actuels, les grilles de textures sont toujours des carrés de 2n texels de côté : 1 x 1, 2 x 2, 4 x 4, 16 x 16… jusqu’à 256 x 256 texels pour les matériels les plus puissants.
D’une image 2D à une forme 3D
Le travail de calcul le plus complexe, confié au processeur graphique, est ensuite de définir comment une texture se plaque sur une primitive. Celle-ci est une forme 3D alors que la texture est une image 2D. Il faut donc spécifier au programme comment il va devoir tordre la texture pour en habiller la primitive. Pour ce faire, le développeur fournit au moteur de textures les coordonnées de la primitive à habiller. Le moteur effectue alors une projection géométrique de chacun des texels de la grille de texture sur chacun des pixels de la forme définie par la primitive. Comme la texture et la primitive ne se superposent pas exactement, certains pixels recevront plusieurs texels, et, au contraire, un même texel pourra s’appliquer à un groupe de pixels (voir schéma). Il faut alors faire intervenir des filtres qui réaliseront, selon les besoins, l’étirement, la condensation ou le mélange (blending) des texels. Ces opérations mathématiques permettent soit de fusionner le contenu de plusieurs texels pour appliquer le résultat à un seul pixel (mélange de couleurs ou condensation), soit d’étendre un texel pour l’appliquer à plusieurs pixels voisins.Pour que ce traitement soit le plus rapide possible, les puces graphiques exploitent des objets textures. Chaque objet texture est composé d’une série des différentes tailles possibles de la même grille de texture : 256 x 256, 128 x 128, 64 x 64, jusqu’à 1 x 1. Pour obtenir ces grilles, il suffit de partir de celle de 256 x 256, de prendre des groupes de 4 texels et de les condenser en un seul, selon des règles prédéterminées de mélange qui visent en particulier à conserver les motifs. Au final, on a ainsi une grille de 128 x 128 sur laquelle la même opération est appliquée, et ainsi de suite. Lorsqu’il devra remplir une primitive, le moteur de rendu n’aura qu’à sélectionner la grille de texture dont le nombre de texels correspond le mieux au nombre de pixels à remplir selon l’échelle de profondeur. Plus un objet 3D sera éloigné, plus la grille utilisée sera de petite taille (voir schéma).Ultime étape, des algorithmes spécifiques interviennent pour préserver la continuité des motifs entre les grilles de différentes tailles. Ils exploitent un mécanisme de calage des éléments qui doivent être posés l’un contre l’autre (comme pour la pose de papier peint à motifs), et un mécanisme de synthèse qui permet de recalculer la valeur d’un ou de plusieurs texels pour conserver une continuité (filtrage des seuils et homogénéisation des rendus).
🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.