Сбор (объект текстуры DirectX HLSL)

Возвращает четыре выборки (только красный компонент), которые будут использоваться для двулинейной интерполяции при выборке текстуры.

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

Параметры

Элемент Описание
Объекта
Поддерживаются следующие типы объектов текстуры : Texture2D, Texture2DArray, TextureCube, TextureCubeArray.
S
[in] Состояние Sampler. Это объект, объявленный в файле эффекта, который содержит назначения состояний.
Расположение
[in] Координаты текстуры. Тип аргумента зависит от типа объекта текстуры.
Тип Texture-Object Тип параметра
Texture2D float2
Texture2DArray, TextureCube float3
TextureCubeArray float4

Смещение

[in] Необязательное смещение координат текстуры, которое можно использовать для любого типа объекта текстуры; смещение применяется к расположению перед выборкой. Тип аргумента зависит от типа объекта текстуры. Для шейдеров, предназначенных для модели шейдера 5.0 и выше, 6 наименее значимых битов каждого значения смещения учитываются как подписанное значение, что дает диапазон [-32..31]. Для предыдущих шейдеров модели шейдеров смещения должны быть непосредственными целыми числами от -8 до 7.

Тип Texture-Object Тип параметра
Texture2D, Texture2DArray int2
TextureCube, TextureCubeArray не поддерживается

Возвращаемое значение

Четырехкомпонентный вектор с четырьмя компонентами красных данных, тип которого совпадает с типом шаблона текстуры.

Минимальная модель шейдера

Эта функция поддерживается в следующих моделях шейдера.

vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
x x x
  1. TextureCubeArray доступен в модели шейдера 4.1 или более поздней версии.
  2. Модель шейдера 4.1 доступна в Direct3D 10.1 или более поздней версии.

Пример

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