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.
|
||||||||
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.
|
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 |
- TextureCubeArray ist im Shadermodell 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(f6);
}