Freigeben über


Gather (DirectX HLSL-Texturobjekt)

Ruft die vier Beispiele ab (nur rote Komponente), die beim Sampling einer Textur für bilineare Interpolation verwendet werden.

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

Parameter

Element BESCHREIBUNG
Objekt
Die folgenden Texturobjekttypen werden unterstützt: Texture2D, Texture2DArray, TextureCube, TextureCubeArray.
S
[in] Ein Samplerzustand. Dies ist ein In einer Effektdatei deklariertes Objekt, das Zustandszuweisungen enthält.
Lage
[in] Die Texturkoordinaten. Der Argumenttyp ist vom Texturobjekttyp abhängig.
Texture-Object Typ Parametertyp
Texture2D float2
Texture2DArray, TextureCube float3
TextureCubeArray float4

Offset

[in] Ein optionaler Texturkoordinatenoffset, der für jeden Texturobjekttyp verwendet werden kann; der Offset wird vor der Stichprobenentnahme auf die Position angewendet. Der Argumenttyp ist vom Texturobjekttyp abhängig. Bei Shadern, die auf Shadermodell 5.0 und höher abzielen, werden die 6 geringsten Bits jedes Offsetwerts als signierter Wert berücksichtigt, der [-32...31] Bereich ergibt. Für frühere Shadermodell-Shader müssen Offsets direkte ganze Zahlen zwischen -8 und 7 sein.

Texture-Object Typ Parametertyp
Texture2D, Texture2DArray int2
TextureCube, TextureCubeArray Nicht unterstützt

Rückgabewert

Ein Vektor mit vier Komponenten mit vier Komponenten aus roten Daten, deren Typ mit dem Vorlagentyp der Textur identisch ist.

Minimales Shadermodell

Diese Funktion wird in den folgenden Shadermodellen unterstützt.

vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
x x x
  1. TextureCubeArray ist im Shadermodell 4.1 oder höher verfügbar.
  2. Shadermodell 4.1 ist in Direct3D 10.1 oder höher verfügbar.

Beispiel

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);
}
  

Textur-Objekt