sample_c (sm4 - asm)

Выполняет фильтр сравнения.

sample_c[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource.r, srcSampler, srcReferenceValue
Элемент Description
dest
[in] Адрес результатов операции.
srcAddress
[in] Набор координат текстуры. Дополнительные сведения см. в примере инструкции.
srcResource
[in] Регистр текстуры. Дополнительные сведения см. в примере инструкции. Должен быть .r swizzle.
srcSampler
[in] Регистр примера. Дополнительные сведения см. в примере инструкции.
srcReferenceValue
[in] Регистр с выбранным одним компонентом, который используется в сравнении.

Замечания

Основная цель этой инструкции — предоставить стандартный блок для фильтрации глубины в процентах. Значение "c" в sample_c обозначает сравнение.

Операнды для sample_c идентичны примеру инструкции, за исключением того, что существует дополнительный операнд источника float32, srcReferenceValue, который должен быть регистром с выбранным одним компонентом или скалярным литералом.

Параметр srcResource должен иметь swizzle R (red). sample_c работает исключительно с красным компонентом и возвращает одно значение. Swizzle r в srcResource указывает, что скалярный результат реплика для всех компонентов.

Порядок операций — srcReferenceValue {ComparisonFunction} texel.Rэто .

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

Если эта инструкция используется с ресурсом, который не является текстурой1D/2D/2DArray/CubeArray, он создает неопределенные результаты.

При выполнении этой инструкции оборудование выборки использует текущую функцию comparer's CompareFunction для сравнения srcReferenceValue со значением компонента Red для исходного ресурса на каждом фильтре "tap" location (texel), которое охватывает текущий настроенный фильтр текстур на основе предоставленных координат в srcAddress.

Сравнение происходит после того, как значение srcReferenceValue было квантизовано до точности формата текстуры, точно так же, как z кванантизовано до точности буфера глубины перед сравнением глубины в тесте видимости слияния выходных данных. Это включает в себя зацеп в диапазон формата (например, [0..1] для формата UNORM).

Красный компонент исходного текселя сравнивается с квантизованным srcReferenceValue. Для текселей, которые отпадают от ресурса, значение компонента Red определяется путем применения режимов адресов (и BorderColorR, если в режиме границы) из Sampler. Сравнение учитывает все правила сравнения с плавающей запятой D3D11, в том случае, если формат текстуры является плавающей запятой.

Каждое сравнение, которое передает возвращает значение 1.0f в качестве значения красного компонента для текселя, и каждое сравнение, которое завершается ошибкой, возвращает значение 0,0f в качестве красного значения текстуры. Затем фильтрация выполняется точно так же, как указано состояния sampler, работая только в компоненте Red, и возвращая один скалярный результат фильтра обратно в шейдер, реплика добавлен ко всем маскированным компонентам dest.

Использование sample_c является ортогональным для всех других элементов управления фильтрацией общего назначения. sample_c легко работает с другими режимами фильтрации общего назначения. sample_c изменяет поведение фильтров общего назначения, таким образом, что значения, отфильтрованные все, становятся 1.0f или 0,0f из-за результатов сравнения.

Извлечение из входного слота, не привязанного к нему, возвращает значение 0 для всех компонентов.

Дополнительные сведения см. в примере инструкции.

Эта инструкция применяется к следующим этапам шейдера:

Шейдер вершин Шейдер геометрии Построитель текстуры
x

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

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

Модель шейдера Поддерживается
Модель шейдера 5 yes
Модель шейдера 4.1 yes
Модель шейдера 4 yes
Модель шейдера 3 (DirectX HLSL) no
Модель шейдера 2 (DirectX HLSL) no
Модель шейдера 1 (DirectX HLSL) no

Модель 4 шейдера (DirectX HLSL)