Recopilación (objeto de textura HLSL de DirectX)

Obtiene los cuatro ejemplos (solo componente rojo) que se usarían para la interpolación bilineal al realizar un muestreo de una textura.

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

Parámetros

Elemento Descripción
Objeto
Se admiten los siguientes tipos de objetos de textura : Texture2D, Texture2DArray, TextureCube, TextureCubeArray.
S
[in] Un estado sampler. Se trata de un objeto declarado en un archivo de efectos que contiene asignaciones de estado.
Ubicación
[in] Coordenadas de textura. El tipo de argumento depende del tipo de objeto de textura.
tipo de Texture-Object Tipo de parámetro
Texture2D float2
Texture2DArray, TextureCube float3
TextureCubeArray float4

Compensar

[in] Un desplazamiento de coordenadas de textura opcional, que se puede usar para cualquier tipo de objeto de textura; el desplazamiento se aplica a la ubicación antes del muestreo. El tipo de argumento depende del tipo de objeto de textura. En el caso de los sombreadores destinados al modelo de sombreador 5.0 y versiones posteriores, se respetan los 6 bits menos significativos de cada valor de desplazamiento como un valor con signo, lo que produce el intervalo [-32..31]. Para los sombreadores de modelos de sombreadores anteriores, los desplazamientos deben ser enteros inmediatos entre -8 y 7.

tipo de Texture-Object Tipo de parámetro
Texture2D, Texture2DArray int2
TextureCube, TextureCubeArray no admitido

Valor devuelto

Vector de cuatro componentes, con cuatro componentes de datos rojos, cuyo tipo es el mismo que el tipo de plantilla de la textura.

Modelo de sombreador mínimo

Esta función se admite en los siguientes modelos de sombreador.

vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
x x x
  1. TextureCubeArray está disponible en Shader Model 4.1 o superior.
  2. El modelo de sombreador 4.1 está disponible en Direct3D 10.1 o superior.

Ejemplo

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