Collect (objet de texture HLSL DirectX)

Obtient les quatre exemples (composant rouge uniquement) qui seraient utilisés pour l’interpolation bilinéaire lors de l’échantillonnage d’une texture.

<Template Type>4 Object.Gather( sampler_state S, float2|3|4 Location [, int2 Offset] );

Paramètres

Élément Description
Objet
Les types d’objets de texture suivants sont pris en charge : Texture2D, Texture2DArray, TextureCube, TextureCubeArray.
S
[in] État Sampler. Il s’agit d’un objet déclaré dans un fichier d’effet qui contient des attributions d’état.
Emplacement
[in] Coordonnées de texture. Le type d’argument dépend du type texture-objet.
type Texture-Object Type de paramètre
Texture2D float2
Texture2DArray, TextureCube float3
TextureCubeArray float4

Compenser

[in] Décalage de coordonnées de texture facultatif, qui peut être utilisé pour n’importe quel type d’objet de texture ; le décalage est appliqué à l’emplacement avant l’échantillonnage. Le type d’argument dépend du type texture-objet. Pour les nuanceurs ciblant le modèle de nuanceur 5.0 et les versions ultérieures, les 6 bits les moins significatifs de chaque valeur de décalage sont respectés en tant que valeur signée, ce qui génère [-32..31] plage. Pour les nuanceurs de modèles de nuanceur précédents, les décalages doivent être des entiers immédiats compris entre -8 et 7.

type Texture-Object Type de paramètre
Texture2D, Texture2DArray int2
TextureCube, TextureCubeArray non pris en charge

Valeur renvoyée

Vecteur à quatre composants, avec quatre composants de données rouges, dont le type est identique au type de modèle de la texture.

Modèle de nuanceur minimal

Cette fonction est prise en charge dans les modèles de nuanceur suivants.

vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
x x x
  1. TextureCubeArray est disponible dans le modèle de nuanceur 4.1 ou version ultérieure.
  2. Le modèle de nuanceur 4.1 est disponible dans Direct3D 10.1 ou version ultérieure.

Exemple

Texture2D<int1> Tex2d;
Texture2DArray<int2> Tex2dArray;
TextureCube<int3> TexCube;
TextureCubeArray<float2> TexCubeArray;

SamplerState s;

int4 main (float4 f : SV_Position) : SV_Target
{
    int2 iOffset = int2(2,3);

    int4 i1 = Tex2d.Gather(s, f.xy);
    int4 i2 = Tex2d.Gather(s, f.xy, iOffset);

    int4 i3 = Tex2dArray.Gather(s, f.xyz);
    int4 i4 = Tex2dArray.Gather(s, f.xyz, iOffset);

    int4 i5 = TexCube.Gather(s, f.xyzw);

    float4 f6 = TexCubeArray.Gather(s, f.xyzw);

    return i1+i2+i3+i4+i5+int4(f6);
}
  

Texture-Objet