ld (sm4 - asm)
Captura datos del búfer o textura especificados sin ningún filtrado (por ejemplo, muestreo de puntos) mediante la dirección de entero proporcionada. Los datos de origen pueden provenir de cualquier tipo de recurso, siempre que no sea TextureCube.
ld[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle] |
---|
Elemento | Descripción |
---|---|
dest |
[in] Dirección del resultado de la operación. |
srcAddress |
[in] Coordenadas de textura necesarias para realizar la muestra. |
srcResource |
[in] Registro de textura (t#) que debe haberse declarado mediante la identificación de la textura o el búfer desde la que se captura. |
Comentarios
Esta instrucción es una alternativa simplificada a la instrucción sample. A diferencia de sample, ld también es capaz de capturar datos de búferes. ld también puede capturar de recursos de varias muestras (solo en el sombreador de píxeles).
srcAddress proporciona el conjunto de coordenadas de textura necesarias para realizar la muestra en formato de enteros sin signo. Si srcAddress está fuera del intervalo [0...( #elementos de textura en la dimensión -1)], se invoca el comportamiento fuera de los límites, donde ld devuelve 0 en todos los componentes que no faltan con el formato de srcResource y el valor predeterminado para los componentes que faltan. Una aplicación que quiera control más flexible sobre el comportamiento de las direcciones fuera del intervalo debe usar la instrucción sample en su lugar, ya que respeta el comportamiento de ajuste de direcciones, reflejo, fijación o borde definido como estado de muestreo.
srcAddress.a (POS-swizzle) siempre proporciona un nivel de mipmap entero sin signo. Si el valor está fuera del intervalo [0...(número de miplevel en el recurso -1)]), se invoca el comportamiento fuera de los límites. Si el recurso es un búfer, que no puede tener instancias de mipmap, se omite srcAddress.a
srcAddress.gb (POS-swizzle) se omite para búferes e instancias de texture1D (que no sean una matriz). srcAddress.b (POS-swizzle) se omite para las matrices texture1D y las instancias de texture2D.
En el caso de las matrices texture1D, srcAddress.g (POS-swizzle) proporciona el índice de matriz como un entero sin signo. Si el valor está fuera del intervalo de índices de matriz disponibles [0...( tamaño de matriz-1)], se invoca el comportamiento fuera de los límites.
En el caso de las matrices texture2D, srcAddress.b (POS-swizzle) proporciona el índice de matriz; de lo contrario, se usa la misma semántica que para texture1D.
La captura desde t# sin nada enlazado devuelve 0 para todos los componentes.
Desplazamiento de direcciones
El sufijo opcional [_aoffimmi(u,v,w)] (desplazamiento de direcciones por entero inmediato) indica que las coordenadas de textura para el ld se deben desplazar por un conjunto de valores constantes de espacio enteros de elementos de textura inmediatos. Los valores literales son un conjunto de números complementarios de 4 bits de 2, con un intervalo de enteros [-8,7]. Este modificador solo se define para texture1D/2D/3D, incluidas las matrices, y no para búferes.
Los desplazamientos se agregan a las coordenadas de textura, en el espacio de elementos de textura, en relación con el nivel mip al que accede ld.
Los desplazamientos de dirección no se aplican a lo largo del eje de matriz de matrices texture1D/2D.
Los componentes _aoffimmi v,w se omiten para instancias de texture1D.
El componente _aoffimmi w se omite para instancias de texture2D.
Como las coordenadas de textura de ld son enteros sin signo, si el desplazamiento hace que la dirección vaya por debajo de cero, se ajustará a una dirección grande y dará como resultado un acceso fuera de los límites.
Control de tipo de valor devuelto
El formato de datos devuelto por ld al registro de destino se determina de la misma manera que se describe para la instrucción sample; se basa en el formato enlazado al parámetro srcResource (t#).
Como sucede con la instrucción sample, los valores devueltos para ld son 4 vectores con valores predeterminados específicos de formato para los componentes que no están presentes en el formato. La referencia en srcResource determina cómo se va a activar el resultado de 4 componentes devuelto de la carga de texturas, después de lo cual .mask en dest determina qué componentes dest se actualizan.
Cuando ld lee un valor flotante de 32 bits en un registro de 32 bits, los bits no se modifican; es decir, los valores desnormalizados permanecen desnormalizados. Esto es diferente de lo que sucede con la instrucción sample.
Detalles varios
Como no hay ningún filtrado asociado a la instrucción ld, conceptos como el sesgo de LOD no se aplican a ld. Por tanto, no hay ningún parámetro s# de la muestra.
Restricciones
- srcResource debe ser un registro de t# y no una instancia de TextureCube. srcResource tampoco puede ser un búfer constante, que no se puede enlazar a los registros de t#.
- No se permite el direccionamiento relativo en srcResource.
- srcAddress debe ser un registro temporal (r#/x#), constante (cb#) o de entrada (v#).
- dest debe ser un registro temporal (r#/x#) o de salida (o*#).
Esta instrucción se aplica a las siguientes fases del sombreador:
Sombreador de vértices | Sombreador de geometría | Sombreador de píxeles |
---|---|---|
x | x | 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 | Sí |
Modelo de sombreador 4.1 | Sí |
Modelo de sombreador 4 | Sí |
Modelo de sombreador 3 (DirectX HLSL) | no |
Modelo de sombreador 2 (DirectX HLSL) | no |
Modelo de sombreador 1 (DirectX HLSL) | no |