Objet de texture

Dans Direct3D 10, vous spécifiez les échantillonneurs et les textures indépendamment ; l’échantillonnage de texture est implémenté à l’aide d’un objet de texture avec modèle. Cet objet de texture avec modèle a un format spécifique, retourne un type spécifique et implémente plusieurs méthodes.

Différences entre Direct3D 9 et Direct3D 10 :

  • Dans Direct3D 9, les échantillonneurs sont liés à des textures spécifiques.
  • Dans Direct3D 10, les textures et les échantillonneurs sont des objets indépendants. Chaque objet de texture avec modèle implémente des méthodes d’échantillonnage de texture qui prennent à la fois la texture et l’échantillonneur comme paramètres d’entrée.

Tous les formats ne sont pas pris en charge pour toutes les fonctions. Vous devez donc utiliser CheckFeatureSupport pour vérifier si un format est pris en charge pour une utilisation particulière.

Voici la syntaxe permettant de créer tous les objets de texture (à l’exception des objets multi-échantillonnés).

Object1 [<Type>] Name;

Les objets multi-échantillonnés (Texture2DMS et Texture2DMSArray) nécessitent que la taille de texture soit explicitement indiquée et exprimée sous la forme du nombre d’échantillons.

Object2 [<Type, Samples>] Name;

Paramètres

Item Description
Object
Objet de texture. Doit être l’un des types suivants.
Type du Object1 Description
Buffer Mémoire tampon
Texture1D Texture 1D
Texture1DArray Tableau de textures 1D
Texture2D Texture 2D
Texture2DArray Tableau de textures 2D
Texture3D Texture 3D
TextureCube Texture de cube
TextureCubeArray Tableau de textures de cube
Typoe du Object2 Description
Texture2DMS Texture 2D multi-échantillonnée
Texture2DMSArray Tableau de textures 2D multi-échantillonnées

  1. Le Type de mémoire tampon prend en charge la plupart des méthodes d’objet de texture, à l’exception de GetDimensions.
  2. TextureCubeArray est disponible dans le modèle de nuanceur 4.1 ou ultérieur.
  3. Le modèle de nuanceur 4.1 est disponible dans Direct3D 10.1 ou version ultérieure.

Type

facultatif. Tout type HLSL scalaire ou type HLSL vectoriel, entouré de crochets pointus. Le type par défaut est float4.

Nom

Chaîne ASCII qui spécifie le nom de l’objet de texture.

Exemples

Le nombre d’échantillons (compris entre 1 et 128).

Exemple 1

Voici un exemple de déclaration d’un objet de texture.

Texture2D <float4> MyTex;

Texture2DMS <float4, 128> MyMSTex;

Méthodes d’objet de texture

Chaque objet de texture implémente certaines méthodes ; voici le tableau qui répertorie toutes les méthodes. Consultez la page de référence de chaque méthode pour voir quels objets peuvent utiliser quelle méthode.

Méthode de texture Description vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
CalculateLevelOfDetail Calculer le LOD retourne un résultat limité. x
CalculateLevelOfDetailUnclamped Calculer le LOD retourne un résultat non limité. x
Gather Obtient les quatre échantillons (composant rouge uniquement) qui seraient utilisés pour l’interpolation bilinéaire lors de l’échantillonnage d’une texture. x x x
GetDimensions Obtenez la dimension de texture d’un niveau mipmap spécifié. x x x x x x
GetDimensions (MultiSample) Obtenez la dimension de texture d’un niveau mipmap spécifié. x x x
GetSamplePosition Obtenez la position de l’échantillon spécifié. x x x
Charge Chargez des données sans filtrage ni échantillonnage. x x x x x x
Load (Multisample) Chargez des données sans filtrage ni échantillonnage. x x x x
Exemple Échantillonnez une texture. x x
SampleBias Échantillonnez une texture, après avoir appliqué la valeur de biais au niveau mipmap. x x
SampleCmp Échantillonnez une texture à l’aide d’une valeur de comparaison pour rejeter des échantillons. x x
SampleCmpLevelZero Échantillonnez une texture (niveau mipmap 0 uniquement), à l’aide d’une valeur de comparaison pour rejeter des échantillons. x x x x x x
SampleGrad Échantillonnez une texture à l’aide d’un dégradé pour influencer la façon dont l’emplacement de l’échantillon est calculé. x x x x x x
SampleLevel Échantillonnez une texture au niveau mipmap spécifié. x x x x x x

Type renvoyé

Le type de retour d’une méthode d’objet de texture est float4, sauf indication contraire, à l’exception des objets de texture anti-alias multi-échantillonnés qui ont toujours besoin du type et du nombre d’échantillons spécifiés. Le type de retour est identique au type de ressource de texture (DXGI_FORMAT). En d’autres termes, il peut s’agir de l’un des types suivants.

Type Description
virgule flottante Float 32 bits (voir Règles à virgule flottante pour connaître les différences du float IEEE)
int Entier 32 bits signé
nombre entier non signé Entier non signé 32 bits
snorm Float 32 bits compris entre -1 et 1 (voir Règles à virgule flottante pour connaître les différences du float IEEE)
unorm Flotteur 32 bits compris entre 0 et 1 (voir Règles à virgule flottante pour connaître les différences du float IEEE)
n’importe quel type de texture ou struct Le nombre de composants retournés doit être compris entre un et trois inclus.

En outre, le type de retour peut être n’importe quel type de texture incluant une structure, mais il doit être inférieur à quatre composants, par exemple, un type float1 retourne un composant.

Valeurs par défaut pour les composants manquants dans une texture

La valeur par défaut des composants manquants dans un type de ressource de texture est égale à zéro pour n’importe quel composant, à l’exception du composant alpha (A) ; la valeur par défaut du composant A manquant est une. La façon dont celle-ci apparaît au nuanceur dépend du type de ressource de texture. Il prend la forme du premier composant typé qui est réellement présent dans le type de ressource de texture (à partir de la gauche dans l’ordre RVBA). Si cette forme est UNORM ou FLOAT, la valeur par défaut de la valeur A manquante est 1.0f. Si la forme est SINT ou UINT, la valeur par défaut de la valeur A manquante est 0x1.

Par exemple, lorsqu’un nuanceur lit le type de ressource de texture DXGI_FORMAT_R24_UNORM_X8_TYPELESS, les valeurs par défaut pour G et B sont égales à zéro et la valeur par défaut pour A est 1,0f ; lorsqu’un nuanceur lit le type de ressource de texture DXGI_FORMAT_R16G16_UINT, la valeur par défaut de B est égale à zéro et la valeur par défaut pour A est 0x00000001 ; lorsqu’un nuanceur lit le type de ressource de texture DXGI_FORMAT_R16_SINT, les valeurs par défaut pour G et B sont égales à zéro et la valeur par défaut pour A est 0x00000001.

Exemple 2

Voici un exemple d’échantillonnage de texture à l’aide d’une méthode de texture.

sampler MySamp;
Texture2D <float4> MyTex;
 
float4 main( float2 TexCoords[2] : TEXCOORD ) : SV_Target
{
    return MyTex.Sample( MySamp, TexCoords[0] ));
}

Modèle de nuanceur minimal

Cet objet est pris en charge dans les modèles de nuanceur suivants.

Modèle de nuanceur Pris en charge
Modèle de nuanceur 4 et modèles de nuanceur supérieur oui

Voir aussi

Modèle de nuanceur 4