Partager via


Habillage de texture

L’encapsulage de texture change la façon de base dont Direct3D rastérise les polygones texturés à l’aide des coordonnées de texture spécifiées pour chaque sommet. Lors de la rastérisation d’un polygone, le système interpole entre les coordonnées de texture à chacun des sommets du polygone pour déterminer les texels qui doivent être utilisés pour chaque pixel du polygone. Normalement, le système traite la texture comme un plan 2D, interpolant de nouveaux texels en prenant la route la plus courte du point A dans une texture au point B. Si le point A représente la position u, v (0,8, 0,1) et que le point B est à (0,1,0.1), la ligne d’interpolation ressemble au diagramme suivant.

diagramme d’une ligne d’interpolation entre deux points

Notez que la distance la plus courte entre A et B dans cette illustration s’exécute approximativement au milieu de la texture. L’activation de l’habillage de coordonnées u-texture ou v-texture change la façon dont Direct3D perçoit l’itinéraire le plus court entre les coordonnées de texture dans la direction u et dans la direction V. Par définition, l’habillage de texture fait que le rastériseur prend la route la plus courte entre les jeux de coordonnées de texture, en supposant que 0.0 et 1.0 sont une coïncidence. Le dernier bit est la partie délicate : vous pouvez imaginer que l’activation de l’encapsulation de texture dans une direction entraîne le système à traiter une texture comme si elle était enroulée autour d’un cylindre. Par exemple, considérons le diagramme ci-dessous.

diagramme d’une texture et de deux points encapsulés autour d’un cylindre

L’illustration précédente montre comment l’encapsulation dans la direction u - affecte la façon dont le système interpole les coordonnées de texture. En utilisant les mêmes points que dans l’exemple pour les textures normales ou non, vous pouvez voir que l’itinéraire le plus court entre les points A et B n’est plus au milieu de la texture ; il est maintenant de l’autre côté de la frontière où 0.0 et 1.0 existent ensemble. L’enroulage en V est similaire, sauf qu’il enroule la texture autour d’un cylindre qui se trouve sur le côté. L’encapsulation dans le sens u et dans la direction V est plus complexe. Dans ce cas, vous pouvez envisager la texture comme un tore ou un beignet.

L’application pratique la plus courante pour le wrapping de texture consiste à effectuer un mappage d’environnement. Généralement, un objet texturé avec une carte d’environnement apparaît très réfléchissant, montrant une image miroir de l’environnement de l’objet dans la scène. Pour le bien de cette discussion, imaginez une salle avec quatre murs, chacun peint avec une lettre R, G, B, Y et les couleurs correspondantes: rouge, vert, bleu et jaune. La carte d’environnement d’une salle aussi simple peut ressembler à l’illustration suivante.

illustration de bandes verticales de rouge, vert, bleu et jaune

Imaginez que le plafond de la pièce est maintenu par un pilier parfaitement réfléchissant, à quatre côtés. Le mappage de la texture de la carte d’environnement au pilier est simple ; rendre le pilier comme s’il reflète les lettres et les couleurs n’est pas aussi facile. Le diagramme suivant montre un cadre filaire du pilier avec les coordonnées de texture applicables répertoriées près des sommets supérieurs. La couture où l’encapsulage traversera les bords de la texture s’affiche avec une ligne en pointillés.

diagramme d’un rectangle avec une ligne en pointillés bisecting

Avec l’habillage activé dans la direction U, le pilier texturé affiche correctement les couleurs et les symboles de la carte d’environnement et, au niveau de la couture à l’avant de la texture, le rastériseur choisit correctement l’itinéraire le plus court entre les coordonnées de texture, en supposant que les coordonnées u 0.0 et 1.0 partagent le même emplacement. Le pilier texturé ressemble à l’illustration suivante.

illustration d’un pilier composé de quadrants rouges, verts, bleus et jaunes

Si l’habillage de texture n’est pas activé, le rastériseur n’interpole pas dans le sens nécessaire pour générer une image réfléchie crédible. Au lieu de cela, la zone à l’avant du pilier contient une version compressée horizontalement des texels entre les coordonnées u 0,175 et 0,875, car ils passent par le centre de la texture. L’effet wrap est ruiné.

Ne confondez pas l’habillage de texture avec les modes d’adressage de texture nommés de la même façon. L’habillage de texture est effectué avant l’adressage de texture. Assurez-vous que les données d’habillage de texture ne contiennent pas de coordonnées de texture en dehors de la plage de [0.0, 1.0], car cela produira des résultats non définis. Pour plus d’informations sur l’adressage de texture, consultez Modes d’adressage de texture.

Encapsulage de carte de déplacement

Les cartes de déplacement sont interpolées par le moteur de tesselation. Étant donné que le mode d’habillage ne peut pas être spécifié pour le moteur de pavage, l’habillage de texture ne peut pas être effectué avec des mappages de déplacement. Une application peut utiliser un ensemble de sommets qui force l’interpolation à s’encapsuler dans n’importe quelle direction. L’application peut également spécifier l’interpolation à effectuer en tant qu’interpolation linéaire simple.

Textures