Compartilhar via


Gather (objeto de textura HLSL directx)

Obtém as quatro amostras (somente componente vermelho) que seriam usadas para interpolação bilinear ao amostrar uma textura.

<Objeto tipo>de modelo 4.Gather( sampler_state S, float2|3|4 Local [, deslocamento int2] );

Parâmetros

Item Descrição
Objeto
Há suporte para os seguintes tipos de objeto de textura : Texture2D, Texture2DArray, TextureCube, TextureCubeArray.
S
[in] Um estado sampler. Esse é um objeto declarado em um arquivo de efeito que contém atribuições de estado.
Localização
[in] As coordenadas de textura. O tipo de argumento depende do tipo de objeto de textura.
Tipo de Texture-Object Tipo de parâmetro
Texture2D float2
Texture2DArray, TextureCube float3
TextureCubeArray float4

Deslocamento

[in] Um deslocamento de coordenada de textura opcional, que pode ser usado para qualquer tipo de objeto de textura; o deslocamento é aplicado ao local antes da amostragem. O tipo de argumento depende do tipo de objeto de textura. Para sombreadores direcionados ao Modelo de Sombreador 5.0 e superior, os 6 bits menos significativos de cada valor de deslocamento são respeitados como um valor assinado, gerando o intervalo [-32..31]. Para sombreadores de modelo de sombreador anteriores, os deslocamentos precisam ser inteiros imediatos entre -8 e 7.

Tipo de Texture-Object Tipo de parâmetro
Texture2D, Texture2DArray int2
TextureCube, TextureCubeArray sem suporte

Valor Retornado

Um vetor de quatro componentes, com quatro componentes de dados vermelhos, cujo tipo é o mesmo que o tipo de modelo da textura.

Modelo de sombreador mínimo

Essa função tem suporte nos modelos de sombreador a seguir.

vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
x x x
  1. TextureCubeArray está disponível no Modelo de Sombreador 4.1 ou superior.
  2. O Modelo de Sombreador 4.1 está disponível no Direct3D 10.1 ou superior.

Exemplo

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

Objeto Texture