ld2dms (sm4.1 - asm)
Lit des échantillons individuels à partir de textures multi-échantillons 2 dimensions.
ld2dms[_aoffimmi(u,v)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], sampleIndex |
---|
Élément | Description |
---|---|
Dest |
[in] Adresse du résultat de l’opération. |
srcAddress |
[in] Coordonnées de texture nécessaires à l’exécution de l’exemple. |
srcResource |
[in] Un registre de textures (t#) qui doit avoir été déclaré identifiant la texture ou la mémoire tampon à partir de laquelle extraire |
sampleIndex |
[in] Idendifie les exemples à lire à partir de srcResource (opérande scalaire). |
Remarques
Cette instruction est une alternative simplifiée à l’exemple d’instruction . Il extrait les données de la texture spécifiée sans filtrage (par exemple, échantillonnage de points) à l’aide de l’entier srcAddress et sampleIndex fournis.
srcAddress fournit l’ensemble des coordonnées de texture nécessaires pour effectuer l’exemple sous la forme d’entiers non signés. Si srcAddress est hors de la plage[0...( #texels dans la dimension -1)], ld2dms retourne toujours 0 dans tous les composants présents au format de la ressource, et les valeurs par défaut (0,0,0,1.0f/0x00000001) pour les composants manquants.
sampleIndex ne doit pas être un littéral. Le nombre d’échantillons multiples n’a pas besoin d’être spécifié sur la ressource de texture et fonctionne avec des vues de profondeur ou de gabarit.
Une application souhaitant un contrôle plus flexible sur le comportement d’adresse hors plage doit utiliser l’exemple d’instruction à la place, car elle respecte le comportement d’enveloppement d’adresse, de miroir, de serrage et de bordure défini comme état de l’échantillonneur.
srcAddress.b (post-swizzle) est ignoré pour Texture2Ds. Si la valeur est hors de la plage des index tableaux disponibles [0...( array size-1)], puis ld2dms retourne toujours 0 dans tous les composants présents dans le format de la ressource, et les valeurs par défaut (0,0,0,1.0f/0x00000001) pour les composants manquants.
Pour les tableaux Texture2D, srcAddress.b (post-swizzle) fournit l’index du tableau. Oherwise a le même comportement que Texture2D.
srcAddress.a (post-swizzle) est toujours ignoré. Le compilateur HLSL ne génère jamais quoi que ce soit.
srcResource est un registre de textures (t#) qui doit avoir été déclaré(22.3.11), identifiant la texture à partir de laquelle extraire.
L’extraction à partir de t# qui n’a rien de lié retourne 0 pour tous les composants.
Décalage d’adresse
Le suffixe facultatif [_aoffimmi(u,v,w)] (décalage d’adresse par entier immédiat) indique que les coordonnées de texture de ld2dms doivent être décalées par un ensemble de valeurs de constantes d’espace texel immédiates fournies. Les valeurs littérales sont un ensemble de nombres complémentaires de 4 bits 2, ayant une plage d’entiers [-8,7].
Les décalages sont ajoutés aux coordonnées de texture, dans l’espace texel.
Les décalages d’adresse ne sont pas appliqués le long de l’axe des tableaux Texture1D/2D.
Les composants _aoffimmi v,w sont ignorés pour Texture1Ds.
Le composant _aoffimmi w est ignoré pour Texture2Ds.
Étant donné que les coordonnées de texture pour ld2dms sont des entiers non signés, si le décalage fait passer l’adresse en dessous de zéro, il encapsule à une adresse volumineuse et entraîne un accès hors limites, qui, comme ld , retourne 0 dans tous les composants présents dans le format de la ressource, et les valeurs par défaut (0,0,0,1.0f/0x00000001) pour les composants manquants.
Numéro d’exemple
ld2dms peut être utilisé sur n’importe quelle ressource. ld2dms fonctionne de manière identique à ld , sauf sur les ressources 2D multsample, en utilisant l’opérande sampleIndex supplémentaire (basé sur 0) pour identifier l’exemple à lire à partir de la ressource.
Le résultat de la spécification d’un sampleIndex qui dépasse le nombre d’exemples dans la ressource n’est pas défini, mais ne peut pas retourner des données en dehors de l’espace d’adressage du contexte de l’appareil.
Contrôle de type de retour
Le format de données retourné par ld2dms au registre de destination est déterminé de la même manière que celle décrite pour l’exemple d’instruction . Il est basé sur le format lié au paramètre srcResource (t#).
Comme avec l’exemple d’instruction , les valeurs retournées pour ld2dms sont des vecteurs 4 avec des valeurs par défaut spécifiques au format pour les composants non présents dans le format. Le swizzle sur srcResource détermine comment swizzle le résultat à 4 composants qui revient de la charge de texture, après quoi .mask on dest détermine quels composants dans dest sont mis à jour.
Lorsqu’une valeur float 32 bits est lue par ld2dms dans un registre 32 bits, les bits ne sont pas modifiés ; autrement dit, les valeurs dénormales restent dénormales. Cela est différent de l’exemple d’instruction .
Détails divers
Étant donné qu’aucun filtrage n’est associé à cette instruction, les concepts tels que le biais LOD ne s’appliquent pas. Par conséquent, il n’existe aucun paramètre s# de l’échantillonneur .
Restrictions
- srcResource doit être un registre t#, et non un TextureCube, Texture1D ou Texture1DArray. srcResource ne peut pas être un ConstantBuffer, qui ne peut pas être lié à des registres t#.
- L’adressage relatif sur srcResource n’est pas autorisé.
- srcAddress et sampleIndex doivent être un registre temporaire (r#/x#), constant (cb#) ou input (v#).
- dest doit être un registre temporaire (r#/x#) ou de sortie (o*#).
Cette instruction s’applique aux étapes suivantes du nuanceur :
Nuanceur de sommets | Nuanceur de géométrie | Nuanceur de pixels |
---|---|---|
x | x | x |
Modèle de nuanceur minimal
Cette fonction est prise en charge dans les modèles de nuanceur suivants.
Modèle de nuanceur | Pris en charge |
---|---|
Modèle de nuanceur 5 | Oui |
Modèle de nuanceur 4.1 | Oui |
Modèle de nuanceur 4 | non |
Modèle de nuanceur 3 (DirectX HLSL) | non |
Shader Model 2 (DirectX HLSL) | non |
Modèle de nuanceur 1 (DirectX HLSL) | non |