Condividi tramite


Gather (oggetto Texture DirectX HLSL)

Ottiene i quattro esempi (solo componente rosso) che verranno usati per l'interpolazione bilineare durante il campionamento di una trama.

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

Parametri

Elemento Descrizione
Oggetto
I tipi di oggetto trama seguenti sono supportati: Texture2D, Texture2DArray, TextureCube, TextureCubeArray.
S
[in] Stato di Sampler. Si tratta di un oggetto dichiarato in un file di effetto che contiene assegnazioni di stato.
Posizione
[in] Coordinate della trama. Il tipo di argomento dipende dal tipo di oggetto trama.
Texture-Object tipo Tipo di parametro
Texture2D float2
Texture2DArray, TextureCube float3
TextureCubeArray float4

Compensare

[in] Offset di coordinate di trama facoltativo, che può essere usato per qualsiasi tipo di oggetto trama; l'offset viene applicato alla posizione prima del campionamento. Il tipo di argomento dipende dal tipo di oggetto trama. Per gli shader destinati a Shader Model 5.0 e versioni successive, i 6 bit meno significativi di ogni valore di offset vengono onorati come valore firmato, che restituisce l'intervallo [-32..31]. Per gli shader del modello shader precedenti, gli offset devono essere interi immediati tra -8 e 7.

Texture-Object tipo Tipo di parametro
Texture2D, Texture2DArray int2
TextureCube, TextureCubeArray non supportato

Valore restituito

Vettore a quattro componenti, con quattro componenti di dati rossi, il cui tipo è uguale al tipo di modello della trama.

Modello di shader minimo

Questa funzione è supportata nei modelli shader seguenti.

vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
x x x
  1. TextureCubeArray è disponibile in Shader Model 4.1 o versione successiva.
  2. Shader Model 4.1 è disponibile in Direct3D 10.1 o versione successiva.

Esempio

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-Object