Présentation des textures dans Direct3D 11

Une ressource de texture est une collection structurée de données conçue pour stocker des texels. Un Texel représente la plus petite unité d’une texture qui peut être lue ou écrite par le pipeline. Contrairement aux mémoires tampons, les textures peuvent être filtrées par des échantillonneurs de texture, car elles sont lues par des unités de nuanceur. Le type de texture affecte la manière dont la texture est filtrée. Chaque Texel contient des composants de 1 à 4, organisés dans l’un des formats DXGI définis par l' _ énumération de format DXGI.

Les textures sont créées en tant que ressource structurée avec une taille connue. Toutefois, chaque texture peut être typée ou sans type lorsque la ressource est créée, à condition que le type soit entièrement spécifié à l’aide d’une vue lorsque la texture est liée au pipeline.

Types de texture

Il existe plusieurs types de textures : 1D, 2D, 3D, qui peuvent être créées avec ou sans des mipmaps. Direct3D 11 prend également en charge les tableaux de texture et les textures à échantillonnages.

Textures 1D

Une texture 1D dans sa forme la plus simple contient des données de texture qui peuvent être traitées par une coordonnée de texture unique. Il peut être visualisé sous la forme d’un tableau de texels, comme indiqué dans l’illustration suivante. les textures 1D sont représentées par l’interface ID3D11Texture1D .

illustration d’une texture 1D

Chaque Texel contient un certain nombre de composants de couleur en fonction du format des données stockées. Pour augmenter la complexité, vous pouvez créer une texture 1D avec des niveaux de mipmap, comme indiqué dans l’illustration suivante.

illustration d’une texture 1D avec des niveaux de mipmap

Un niveau de mipmap est une texture qui est une puissance de deux plus petite que le niveau supérieur. Le niveau le plus élevé contient le plus de détails, chaque niveau suivant étant plus petit. Pour un mipmap 1D, le plus petit niveau contient un Texel. En outre, les niveaux MIP diminuent toujours jusqu’à 1:1. Quand des des mipmaps sont générés pour une texture de taille impaire, le niveau inférieur suivant est toujours égal à la taille (sauf si le niveau le plus bas atteint 1). Par exemple, le diagramme illustre une texture 5x1 dont le niveau le plus bas suivant est une texture 2x1, dont le niveau MIP suivant (et le dernier) est une texture de taille de 1x1. Les niveaux sont identifiés par un index appelé LOD (niveau de détail) qui est utilisé pour accéder à la plus petite texture lors du rendu de la géométrie qui n’est pas aussi proche de l’appareil photo.

Tableaux de texture 1D

Direct3D 11 prend également en charge les tableaux de textures. Un tableau de texture 1D est également représenté par l’interface ID3D11Texture1D . Un tableau de textures 1D se présente conceptuellement comme dans l’illustration suivante.

illustration d’un tableau de textures 1D

Ce tableau de texture contient trois textures. Chacune des trois textures a une largeur de texture de 5 (qui est le nombre d’éléments dans la première couche). Chaque texture contient également un mipmap de couche 3.

Tous les tableaux de texture dans Direct3D sont un tableau homogène de textures. Cela signifie que chaque texture d’un tableau de texture doit avoir le même format de données et la même taille (y compris la largeur de texture et le nombre de niveaux de mipmap). Vous pouvez créer des tableaux de texture de différentes tailles, à condition que toutes les textures dans chaque tableau correspondent à la taille.

Textures 2D et tableaux de texture 2D

Une ressource Texture2D contient une grille 2D de texels. Chaque Texel est adressable par un vecteur u, v. Étant donné qu’il s’agit d’une ressource de texture, elle peut contenir des niveaux de mipmap et des sous-ressources. les textures 2D sont représentées par l’interface ID3D11Texture2D . Une ressource de texture 2D entièrement remplie ressemble à l’illustration suivante.

illustration d’une ressource de texture 2D

Cette ressource de texture contient une seule texture 3x5 avec trois niveaux de mipmap.

Une ressource de tableau de texture 2D est un tableau homogène de textures 2D ; autrement dit, chaque texture a le même format de données et les mêmes dimensions (y compris les niveaux de mipmap). Un tableau de textures 2D est également représenté par l’interface ID3D11Texture2D . Elle présente une disposition similaire à celle du tableau de texture 1D, à ceci près que les textures contiennent maintenant des données 2D, comme indiqué dans l’illustration suivante.

illustration d’un tableau de textures 2D

Ce tableau de texture contient trois textures ; chaque texture est 3x5 avec deux niveaux de mipmap.

Utilisation d’un tableau de texture 2D comme cube de texture

Un cube de texture est un tableau de textures 2D qui contient 6 textures, une pour chaque visage du cube. Un cube de texture entièrement rempli ressemble à l’illustration suivante.

illustration d’un tableau de textures 2D représentant un cube de texture

Un tableau de textures 2D qui contient 6 textures peut être lu dans les nuanceurs avec les fonctions intrinsèques de mappage de cube, une fois qu’elles sont liées au pipeline avec une vue de texture de cube. Les cubes de texture sont adressés à partir du nuanceur avec un vecteur 3D qui pointe vers le centre du cube de texture.

Notes

Les appareils que vous créez avec le _ niveau de fonctionnalité 10 1 et versions ultérieures peuvent prendre en charge des tableaux de cubes de texture dans lesquels le nombre de textures est égal au nombre de cubes de texture dans un tableau multiplié par six. Les appareils que vous créez avec le _ niveau de fonctionnalité 10 0 ne prennent en charge qu’un seul cube de texture de six visages. En outre, Direct3D 11 ne prend pas en charge les cubemaps partiels.

Textures 3D

Une ressource de texture 3D (également appelée texture de volume) contient un volume 3D de texels. Comme il s’agit d’une ressource de texture, elle peut contenir des niveaux de mipmap. les textures 3D sont représentées par l’interface ID3D11Texture3D . Une texture 3D entièrement remplie ressemble à l’illustration suivante.

illustration d’une ressource de texture 3D

Quand une tranche mipmap 3D est liée en tant que sortie de la cible de rendu (avec une vue de cible de rendu), la texture 3D se comporte de la même manière qu’un tableau de texture 2D avec n tranches. La tranche de rendu particulière est choisie à partir de l’étape Geometry-Shader, en déclarant un composant scalaire des données de sortie comme la _ valeur système SV RenderTargetArrayIndex.

Il n’existe aucun concept de tableau de texture 3D ; par conséquent, une sous-ressource de texture 3D est un niveau mipmap unique.

Textures