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.
|
||||||||
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.
|
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 |
- TextureCubeArray ist in Shader Model 4.1 oder höher verfügbar.
- 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);
}