gather4 (sm5 - asm)

Rassemble les quatre texels qui seraient utilisés dans une opération de filtrage bi-linéaire et les empaquete dans un registre unique. Cette instruction fonctionne uniquement avec les textures 2D ou CubeMap, y compris les tableaux. Seuls les modes d’adressage de l’échantillonneur sont utilisés et le niveau supérieur d’une pyramide mip est utilisé.

collect4[_aoffimmi(u,v)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], srcSampler[.select_component]
Élément Description
Dest
[in] Adresse des résultats de l’opération.
srcAddress
[in] Ensemble de coordonnées de texture.
srcResource
[in] Registre de textures.
srcSampler
[in] Un registre d’échantillonneur.

Notes

Cette instruction se comporte comme l’exemple d’instruction, mais aucun exemple filtré n’est généré. Les quatre exemples qui contribueraient au filtrage sont placés dans xyzw dans un ordre inverse dans le sens des aiguilles d’une montre en commençant par l’exemple en bas à gauche de l’emplacement interrogé. Il s’agit de l’échantillonnage de points avec des deltas de coordonnées de texture (u,v) aux emplacements suivants : (-,+),(+,+),(+,-),(-,-), où la magnitude des deltas est toujours la moitié d’un texel.

Pour les textures CubeMap, lorsqu’une empreinte bi-linéaire s’étend sur un bord, des texels du visage voisin sont utilisés. Les coins utilisent les mêmes règles que l’exemple d’instruction ; autrement dit, le coin inconnu est considéré comme la moyenne des trois coins du visage d’empinging.

Il existe des restrictions de format de texture qui s’appliquent à collect4 qui sont exprimées dans la liste de formats.

Le swizzle sur srcResource permet aux valeurs retournées d’être swizzled arbitrairement avant d’être écrites dans la destination.

Le .select_component sur srcSampler choisit le composant de la texture source (r/g/b/a) à partir duquel lire 4 texels.

Pour les formats avec des composants float32, si la valeur en cours d’extraction est normalisée, dénormalisée, +-0 ou +-INF, elle est retournée au nuanceur sans avoir été mise à jour. NaN est retourné en tant que NaN, mais la représentation de bits exacte du Nom de domaine peut être modifiée. Pour TextureCubes, une certaine synthèse du 4e texel manquant doit se produire aux coins, de sorte que le retour des bits inchangés pour le texel synthétisé ne s’applique pas et les dénormes peuvent être vidés.

Pour les implémentations matérielles, les optimisations du filtrage biligne traditionnel qui détectent des échantillons directement sur les texels et ignorent la lecture des texels qui auraient un poids 0 ne peuvent pas être exploitées avec cette instruction. collect4 retourne toujours tous les texels demandés.

Cette instruction s’applique aux étapes de nuanceur suivantes :

Sommet Coque Domain Géométrie Pixel Compute
X X X X X X

Modèle de nuanceur minimal

Cette instruction est prise en charge dans les modèles de nuanceur suivants :

Modèle de nuanceur Prise en charge
Modèle de nuanceur 5 Oui
Modèle de nuanceur 4.1 non
Modèle de nuanceur 4 non
Nuanceur modèle 3 (DirectX HLSL) non
Nuanceur modèle 2 (DirectX HLSL) non
Nuanceur Modèle 1 (DirectX HLSL) non

Assembly de modèle de nuanceur 5 (DirectX HLSL)