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

Выполняет выборку текстуры и сравнивает один компонент с указанным значением сравнения.

float Object.SampleCmp(
SamplerComparisonState S,
float Location,
float CompareValue,
[int Offset]
);
 

Сравнение — это сравнение с одним компонентом между первым компонентом, хранящимся в текстуре, и значением сравнения, переданным в метод.

Этот метод можно вызывать только из шейдера пикселей; он не поддерживается в вершинном или геометрическом шейдере.

Параметры

Объекта

Любой тип объекта текстуры (кроме Texture2DMS, Texture2DMSArray или Texture3D).

S

[in] Состояние сравнения выборки, которое является состоянием выборки, а также состоянием сравнения (функцией сравнения и фильтром сравнения). Дополнительные сведения и пример см. в типе sampler .

Расположение

[in] Координаты текстуры. Тип аргумента зависит от типа объекта текстуры.

Тип Texture-Object Тип параметра
Texture1D FLOAT
Texture1DArray, Texture2D float2
Texture2DArray¹, TextureCube float3
TextureCubeArray¹ float4

CompareValue

Значение с плавающей запятой, используемое в качестве значения сравнения.

Смещение

[in] Необязательное смещение координат текстуры, которое можно использовать для любого типа объекта текстуры; смещение применяется к расположению перед выборкой. Смещения текстуры должны быть статическими. Тип аргумента зависит от типа объекта текстуры. Дополнительные сведения см. в разделе "Применение смещения координат текстуры".

Тип Texture-Object Тип параметра
Texture1D, Texture1DArray INT
Texture2D, Texture2DArray¹ int2
TextureCube, TextureCubeArray¹ Не поддерживается

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

Возвращает значение с плавающей запятой в диапазоне [0..1].

Для каждого текселя, полученного (на основе конфигурации выборки режима фильтра), SampleCmp выполняет сравнение значения z (3-го компонента входных данных) из шейдера со значением текселя (1, если сравнение проходит; в противном случае 0). Затем SampleCmp объединяет эти 0 и 1 результаты для каждого текселя, как в обычной фильтрации текстур (а не в среднем) и возвращает полученное значение [0..1] в шейдер.

Remarks

Фильтрация сравнения предоставляет базовую операцию фильтрации, которая полезна для фильтрации с более близкой глубиной в процентах.

При использовании этого метода в ресурсе с плавающей запятой (вместо формата с плавающей запятой или без знака) значение сравнения не зажимается автоматически в диапазоне от 0,0 до 1,0. Таким образом, для общих методов теневого тенирования может потребоваться ручная зажимка значения сравнения.

Используйте смещение только в целочисленном miplevel; в противном случае результаты могут отличаться в зависимости от конфигурации оборудования или драйвера.

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

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

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

Примечание

SampleCmp также доступен в ps 4_0_level_9_1 и 4_0_level_9_3 при использовании методов, описанных в разделе "Реализация теневых буферов для уровня компонентов Direct3D 9".

Объект Texture-Object