Gather (DirectX HLSL-Texturobjekt)

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

<Vorlagentyp > 4 Object.Gather( _ Samplerzustand 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 Objekt, das in einer Effektdatei deklariert ist, die 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 am wenigsten signifikanten Bits jedes Offsetwerts als Wert mit Vorsignierung verwendet, was einen Bereich von [-32...31] ergibt. Bei vorherigen Shadermodell-Shadern 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 roter Daten, dessen 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 in Shader Model 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(i6);
}
  

Texture-Object