gather4 (SM5-ASM)

Rassemble les quatre texels qui seraient utilisés dans une opération de filtrage bilinéaire et les regroupe dans un seul registre. Cette instruction fonctionne uniquement avec les textures 2D ou carte cubique, 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é.

gather4 [ _ aoffimmi (u, v) ] dest [ . Mask ] , srcAddress [ . Swizzle ] , srcResource [ . Swizzle ] , srcSampler [ . Select _ composant]
Élément Description
dest
[dans ] l’adresse des résultats de l’opération.
srcAddress
[dans ] un ensemble de coordonnées de texture.
srcResource
[dans ] un registre de texture.
srcSampler
[dans ] un registre d’échantillonneur.

Remarques

Cette instruction se comporte comme l' exemple d’instruction, mais un échantillon filtré n’est pas généré. Les quatre exemples qui contribuent au filtrage sont placés dans XYZW dans le sens inverse des aiguilles d’une montre, en commençant par l’échantillon dans le coin inférieur gauche de l’emplacement interrogé. Cela est identique à l’échantillonnage de point avec les deltas de coordonnée de texture (u, v) aux emplacements suivants : (-, +), (+, +), (+,-), (-,-), où l’amplitude des deltas est toujours la moitié d’un Texel.

Pour les textures carte cubique, quand un encombrement bi-linéaire s’étend sur une arête, les texels de la facette voisine sont utilisés. Les angles utilisent les mêmes règles que l' exemple d’instruction. autrement dit, l’angle inconnu est considéré comme la moyenne des trois angles de face du test.

Des restrictions de format de texture s’appliquent aux gather4 qui sont exprimées dans la liste de formats.

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

Le composant. Select _ 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 extraite est normalisée, dénormalisée, +-0 ou +-INF, elle est retournée au nuanceur non modifié. NaN est retourné en tant que NaN, mais la représentation exacte du bit de NaN peut être modifiée. Pour TextureCubes, une certaine synthèse du 4ème Texel manquant doit se produire au niveau des angles, de sorte que les bits inchangés pour le Texel synthétisé ne s’appliquent pas et les dénormes peuvent être vidées.

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

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

Sommet Forme Domaine Géométrie Pixel Calcul
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 Pris en charge
Shader, modèle 5 oui
Modèle de nuanceur 4,1 non
Nuanceur modèle 4 non
Shader Model 3 (DirectX HLSL) non
Shader Model 2 (DirectX HLSL) non
Shader Model 1 (DirectX HLSL) non

Assembly modèle 5 du nuanceur (DirectX HLSL)