SampleCmp (объект текстуры DirectX HLSL)
Выполняет выборку текстуры и сравнивает один компонент с указанным значением сравнения.
float Object.SampleCmp(
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¹ | x |
- Texture2DArray и TextureCubeArray доступны в модели шейдера 4.1 или более поздней версии.
- Модель шейдера 4.1 доступна в Direct3D 10.1 или более поздней версии.
Примечание
SampleCmp также доступен в ps 4_0_level_9_1 и 4_0_level_9_3 при использовании методов, описанных в разделе "Реализация теневых буферов для уровня компонентов Direct3D 9".