Texture, objet

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 modèle. Cet objet de texture modèle a un format spécifique, retourne un type spécifique et implémente plusieurs méthodes.

Différences entre Direct3D9 et Direct3D10 :

  • 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 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.

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

Nom de l’objet1 [<Type>] ;

Les objets multiamplés (Texture2DMS et Texture2DMSArray) nécessitent que la taille de texture soit explicitement indiquée et exprimée en tant que nombre d’échantillons.

Nom de l’objet2 [<Type, Exemples>] ;

Paramètres

Élément Description
Objet
Objet texture. Doit être l’un des types suivants.
Object1 Type Description
Buffer Buffer
Texture1D Texture 1D
Texture1DArray Tableau de textures 1D
Texture2D Texture 2D
Texture2DArray Tableau de textures 2D
Texture3D Texture 3D
TextureCube Texture du cube
TextureCubeArray Tableau de textures de cube
Object2 Type Description
Texture2DMS Texture multisamplée 2D
Texture2DMSArray Tableau de textures multi-amplées 2D

  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 version ultérieure.
  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 d’angle. Le type par défaut est float4.

Nom

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

Échantillons

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

Exemple 1

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

Texture2D <float4> MyTex;

Texture2DMS <float4, 128> MyMSTex;

Méthodes d’objet Texture

Chaque objet 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 cette méthode.

Texture, méthode Description vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
CalculateLevelOfDetail Calculez le LOD, retournez un résultat serré. x
CalculateLevelOfDetailUnclamped Calculez le LOD, retournez un résultat non défini. x
Recueillir Obtient les quatre exemples (composant rouge uniquement) qui seraient utilisés pour l’interpolation biligne lors de l’échantillonnage d’une texture. x x x
GetDimensions Obtenez la dimension de texture pour un niveau mipmap spécifié. x x x x x x
GetDimensions (MultiSample) Obtenez la dimension de texture pour un niveau mipmap spécifié. x x x
GetSamplePosition Obtenez la position de l’exemple spécifié. x x x
Load Chargez des données sans filtrage ni échantillonnage. x x x x x x
Charger (multisample) Chargez des données sans filtrage ni échantillonnage. x x x x
Exemple Échantillonner une texture. x x
SampleBias Échantillonner une texture, après avoir appliqué la valeur de biais au niveau mipmap. x x
SampleCmp Échantillonner une texture à l’aide d’une valeur de comparaison pour rejeter des échantillons. x x
SampleCmpLevelZero Échantillonner une texture (niveau mipmap 0 uniquement), à l’aide d’une valeur de comparaison pour rejeter les échantillons. x x x x x x
SampleGrad Échantillonner 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 Échantillonner une texture au niveau mipmap spécifié. x x x x x x

Type de retour

Le type de retour d’une méthode d’objet de texture est float4, sauf indication contraire, à l’exception des objets de texture anticrénelés 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
float Float 32 bits (voir Règles à virgule flottante pour connaître les différences par rapport au 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 inclus (voir Règles à virgule flottante pour connaître les différences entre ieee float)
unorm Float 32 bits compris entre 0 et 1 inclus (voir Règles à virgule flottante pour connaître les différences entre ieee float)
n’importe quel type de texture ou struct Le nombre de composants retournés doit être compris entre 1 et 3 inclus.

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

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

La valeur par défaut pour les 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 pour l’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 ce formulaire est UNORM ou FLOAT, la valeur par défaut de l’erreur A manquante est 1,0f. Si le formulaire est SINT ou UINT, la valeur par défaut du A manquant 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 Prise en charge
Modèle de nuanceur 4 et modèles de nuanceur supérieur Oui

Voir aussi

Modèle de nuanceur 4