gather4 (sm5 - asm)
Recopila los cuatro elementos de textura que se usarían en una operación de filtrado bi lineal y los empaqueta en un único registro. Esta instrucción solo funciona con texturas 2D o CubeMap, incluidas las matrices. Solo se usan los modos de direccionamiento del muestreador y se usa el nivel superior de cualquier pirámide mip.
gather4[_aoffimmi(u,v)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], srcSampler[.select_component] |
---|
Elemento | Descripción |
---|---|
Dest |
[in] Dirección de los resultados de la operación. |
srcAddress |
[in] Un conjunto de coordenadas de textura. |
srcResource |
[in] Registro de texturas. |
srcSampler |
[in] Un registro de sampler. |
Observaciones
Esta instrucción se comporta como la instrucción de ejemplo , pero no se genera un ejemplo filtrado. Las cuatro muestras que contribuirían al filtrado se colocan en xyzw en orden en sentido contrario a las agujas del reloj, empezando por la muestra a la parte inferior izquierda de la ubicación consultada. Esto es lo mismo que el muestreo de puntos con las diferencias de coordenadas de textura (u,v) en las siguientes ubicaciones: (-,+),(+,+),(+,-),(-,-), donde la magnitud de los deltas siempre es la mitad de un elemento de textura.
En el caso de las texturas CubeMap, cuando una superficie bi lineal abarca un borde, se usan elementos de textura de la cara vecina. Las esquinas usan las mismas reglas que la instrucción de ejemplo ; es decir, la esquina desconocida se considera el promedio de las tres esquinas de la cara que impedía.
Hay restricciones de formato de textura que se aplican a gather4 que se expresan en la lista de formato.
El swizzle en srcResource permite que los valores devueltos se desenreden arbitrariamente antes de que se escriban en el destino.
El .select_component en srcSampler elige el componente de la textura de origen (r/g/b/a) del que leer 4 elementos de textura.
En el caso de los formatos con componentes float32, si el valor que se está capturando está normalizado, desnormalizado, +-0 o +-INF, se devuelve al sombreador sin modificar. NaN se devuelve como NaN, pero se puede cambiar la representación de bits exacta de NaN. Para TextureCubes, se debe producir alguna síntesis del elemento de textura 4º que falta en las esquinas, por lo que no se aplican los bits devueltos para el elemento de textura sintetizado y se podrían vaciar los desnorms.
En el caso de las implementaciones de hardware, las optimizaciones en el filtrado bilineal tradicional que detectan muestras directamente en elementos de textura y omiten la lectura de elementos de textura que tendrían peso 0 no se pueden aprovechar con esta instrucción. gather4 siempre devuelve todos los elementos de textura solicitados.
Esta instrucción se aplica a las siguientes fases del sombreador:
Vértice | Casco | Domain | Geometría | Píxel | Compute |
---|---|---|---|---|---|
x | x | x | x | x | x |
Modelo de sombreador mínimo
Esta instrucción se admite en los siguientes modelos de sombreador:
Modelo de sombreador | Compatible |
---|---|
Modelo de sombreador 5 | sí |
Modelo de sombreador 4.1 | no |
Modelo de sombreador 4 | no |
Modelo de sombreador 3 (DirectX HLSL) | no |
Modelo de sombreador 2 (DirectX HLSL) | no |
Modelo de sombreador 1 (DirectX HLSL) | no |