sample_c (sm4 - asm)

Realiza un filtro de comparación.

sample_c[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource.r, srcSampler, srcReferenceValue
Elemento Descripción
dest
[in] Dirección de los resultados de la operación.
srcAddress
[in] Conjunto de coordenadas de textura. Para más información, consulte la instrucción sample.
srcResource
[in] Registro de texturas. Para más información, consulte la instrucción sample. Debe ser .r swizzle.
srcSampler
[in] Registro de las muestras. Para más información, consulte la instrucción sample.
srcReferenceValue
[in] Registro con un único componente seleccionado, que se usa en la comparación.

Comentarios

El propósito principal de esta instrucción es proporcionar un bloque de creación para el filtrado de profundidad de porcentaje más cercano. La "c" en sample_c significa Comparación.

Los operandos de sample_c son idénticos a la instrucción sample, salvo que hay un operando de origen float32 adicional, srcReferenceValue, que debe ser un registro con un solo componente seleccionado o un literal escalar.

El parámetro srcResource debe tener un swizzle .r (rojo). sample_c opera exclusivamente en el componente rojo y devuelve un valor único. El swizzle .r en srcResource indica que el resultado escalar se replica en todos los componentes.

El orden de las operaciones es srcReferenceValue {ComparisonFunction} texel.R.

Cuando se establece un búfer de profundidad como textura de entrada, el valor de profundidad se muestra en el componente rojo.

Si esta instrucción se usa con un recurso que no es Texture1D/2D/2DArray/Cube/CubeArray, genera resultados indefinidos.

Cuando se ejecuta esta instrucción, el hardware de muestreo usa comparisonFunction de la muestra actual para comparar srcReferenceValue con el valor del componente rojo del recurso de origen en cada ubicación de "punteo" del filtro (elemento de textura) que cubre el filtro de textura configurado actualmente, en función de las coordenadas proporcionadas en srcAddress.

La comparación se produce después de que srcReferenceValue se haya cuantificado a la precisión del formato de textura, exactamente de la misma manera que z se cuantifica a la precisión del búfer de profundidad antes de la comparación de profundidad en la prueba de visibilidad de fusión de salida. Esto incluye una fijación para el intervalo de formato (por ejemplo, [0..1] para un formato UNORM).

El componente rojo del elemento de textura de origen se compara con el valor de srcReferenceValue cuantificado. En el caso de los elementos de textura que se encuentran fuera del recurso, el valor del componente rojo se determina aplicando los modos de dirección (y BorderColorR si está en modo de borde) de la muestra. La comparación respeta todas las reglas de comparación de punto flotante D3D11, en caso de que el formato de textura sea de punto flotante.

Cada comparación que pasa devuelve 1,0f como valor de componente rojo para el elemento de textura y cada comparación que produce un error devuelve 0,0f como valor rojo para la textura. A continuación, el filtrado se produce exactamente según lo especificado por los estados de la muestra, funcionando solo en el componente rojo y devolviendo un único resultado de filtro escalar al sombreador, replicado en todos los componentes dest enmascarados.

El uso de sample_c es ortogonal para todos los demás controles de filtrado de uso general. sample_c funciona perfectamente con los otros modos de filtro de uso general. sample_c cambia el comportamiento de los filtros de uso general de modo que los valores que se filtran se convierten en 1.0f o 0.0f debido a los resultados de la comparación.

La captura de una ranura de entrada que no tiene nada enlazado a ella devuelve 0 para todos los componentes.

Para más información, consulte la instrucción sample.

Esta instrucción se aplica a las siguientes fases del sombreador:

Sombreador de vértices Sombreador de geometría Sombreador de píxeles
x

Modelo de sombreador mínimo

Esta función se admite en los siguientes modelos de sombreador.

Modelo de sombreador Compatible
Modelo de sombreador 5
Modelo de sombreador 4.1
Modelo de sombreador 4
Modelo de sombreador 3 (DirectX HLSL) no
Modelo de sombreador 2 (DirectX HLSL) no
Modelo de sombreador 1 (DirectX HLSL) no

Ensamblado del modelo de sombreador 4 (DirectX HLSL)