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

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

float Object.SampleCmp(
SamplerComparisonState S,
Float Location,
float CompareValue,
[смещение int]
);
 

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

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

Параметры

Объекта

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

S

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

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

[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] шейдеру.

Комментарии

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

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

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

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

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

vs_4_0 vs_4_1² ps_4_0 ps_4_1² gs_4_0 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.

Объект текстуры