Bagikan melalui


Kumpulkan (Objek Tekstur HLSL DirectX)

Mendapatkan empat sampel (hanya komponen merah) yang akan digunakan untuk interpolasi bilinear saat mengambil sampel tekstur.

<Tipe>Templat 4 Object.Gather( sampler_state S, float2|3|4 Lokasi [, int2 Offset] );

Parameter

Item Deskripsi
Objek
Jenis objek tekstur berikut didukung: Texture2D, Texture2DArray, TextureCube, TextureCubeArray.
S
[in] Status Sampler. Ini adalah objek yang dideklarasikan dalam file efek yang berisi penetapan status.
Lokasi
[in] Koordinat tekstur. Jenis argumen tergantung pada jenis objek tekstur.
Jenis Texture-Object Jenis Parameter
Texture2D float2
Texture2DArray, TextureCube float3
TextureCubeArray float4

Offset

[in] Offset koordinat tekstur opsional, yang dapat digunakan untuk jenis objek tekstur apa pun; offset diterapkan ke lokasi sebelum pengambilan sampel. Jenis argumen tergantung pada jenis objek tekstur. Untuk shader yang menargetkan Model Shader 5.0 ke atas, 6 bit paling tidak signifikan dari setiap nilai offset dihormati sebagai nilai yang ditandatangani, menghasilkan rentang [-32..31]. Untuk shader model shader sebelumnya, offset harus berupa bilangan bulat langsung antara -8 dan 7.

Jenis Texture-Object Jenis Parameter
Texture2D, Texture2DArray int2
TextureCube, TextureCubeArray tidak didukung

Tampilkan Nilai

Vektor empat komponen, dengan empat komponen data merah, yang jenisnya sama dengan jenis templat tekstur.

Minimum Shader Model

Fungsi ini didukung dalam model shader berikut.

vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
x x x
  1. TextureCubeArray tersedia dalam Shader Model 4.1 atau yang lebih tinggi.
  2. Shader Model 4.1 tersedia di Direct3D 10.1 atau yang lebih tinggi.

Contoh

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

Objek Tekstur