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