ld2dms (sm4.1 - asm)
Lee muestras individuales de texturas de 2 muestras multidimensionales.
ld2dms[_aoffimmi(u,v)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], sampleIndex |
---|
Elemento | Descripción |
---|---|
Dest |
[in] Dirección del resultado de la operación. |
srcAddress |
[in] Coordenadas de textura necesarias para realizar el ejemplo. |
srcResource |
[in] Registro de textura (t#) que se debe haber declarado para identificar de qué textura o búfer se va a capturar. |
sampleIndex |
[in] Idendifie los ejemplos que se van a leer de srcResource (operando escalar). |
Comentarios
Esta instrucción es una alternativa simplificada a la instrucción de ejemplo . Captura datos de la textura especificada sin ningún filtrado (por ejemplo, muestreo de puntos) mediante el entero proporcionado srcAddress y sampleIndex.
srcAddress proporciona el conjunto de coordenadas de textura necesarias para realizar la muestra en forma de enteros sin signo. Si srcAddress está fuera del intervalo[0...( #texels en la dimensión -1)], ld2dms siempre devuelve 0 en todos los componentes presentes en el formato del recurso y los valores predeterminados (0,0,0,1,0f/0x00000001) para los componentes que faltan.
sampleIndex no tiene que ser un literal. El recuento de varias muestras no tiene que especificarse en el recurso de textura y funciona con vistas de profundidad o galería de símbolos.
Una aplicación que desee cualquier control más flexible sobre el comportamiento de dirección fuera del intervalo debe usar la instrucción de ejemplo en su lugar, ya que respeta el comportamiento de ajuste de direcciones, reflejo, abrazadera o borde definido como estado del muestreador.
srcAddress.b (post-swizzle) se omite para Texture2Ds. Si el valor está fuera del intervalo de índices de matriz disponibles [0...( array size-1)], then ld2dms always returns 0 in all components present in the format of the resource, and defaults (0,0,0,0,1.0f/0x00000001) for missing components.
En el caso de las matrices Texture2D, srcAddress.b (post-swizzle) proporciona el índice de matriz. De lo contrario, tiene el mismo comportamiento que Texture2D.
srcAddress.a (post-swizzle) siempre se omite. El compilador de HLSL nunca generará nada allí.
srcResource es un registro de textura (t#) que debe haberse declarado (22.3.11), identificando de qué textura se va a capturar.
La captura de t# que no tiene nada enlazado a él devuelve 0 para todos los componentes.
Desplazamiento de direcciones
El sufijo opcional [_aoffimmi(u,v,w)] (desplazamiento de dirección por entero inmediato) indica que las coordenadas de textura de los ld2dms se van a desplazar por un conjunto de valores constantes de espacio de textura inmediato proporcionados. Los valores literales son un conjunto de números complementarios de 4 bits 2, con un intervalo entero [-8,7].
Los desplazamientos se agregan a las coordenadas de textura, en el espacio de textura.
Los desplazamientos de dirección no se aplican a lo largo del eje de matriz de Matrices Texture1D/2D.
Los componentes de _aoffimmi v,w se omiten para Texture1Ds.
El componente _aoffimmi w se omite para Texture2Ds.
Dado que las coordenadas de textura de ld2dms 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, que como ld devuelve 0 en todos los componentes presentes en el formato del recurso, y los valores predeterminados (0,0,0,0,1,0f/0x00000001) para los componentes que faltan.
Número de ejemplo
ld2dms está disponible para su uso en cualquier recurso. ld2dms funciona de forma idéntica a ld excepto en los recursos de 2D multsample, mediante el uso del operando sampleIndex adicional (basado en 0) para identificar qué ejemplo leer del recurso.
El resultado de especificar un sampleIndex que supere el número de muestras del recurso no está definido, pero no puede devolver datos fuera del espacio de direcciones del contexto del dispositivo.
Control tipo de valor devuelto
El formato de datos devuelto por ld2dms al registro de destino se determina de la misma manera que se describe para la instrucción de ejemplo . Se basa en el formato enlazado al parámetro srcResource (t#).
Al igual que con la instrucción de ejemplo , los valores devueltos para ld2dms son 4 vectores con valores predeterminados específicos del formato para los componentes que no están presentes en el formato. El swizzle en srcResource determina cómo activar el resultado de 4 componentes que vuelve de la carga de texturas, después de lo cual .mask on dest determina qué componentes dest se actualizan.
Cuando ld2dms lee un valor float de 32 bits en un registro de 32 bits, los bits no se modifican; es decir, los valores desnormales permanecen desnormales. Esto es diferente de la instrucción de ejemplo .
Detalles varios
Como no hay ningún filtrado asociado a esta instrucción, no se aplican conceptos como el sesgo de LOD. En consecuencia, no hay ningún parámetro s# del sampler .
Restricciones
- srcResource debe ser un registro de t# y no un TextureCube, Texture1D o Texture1DArray. srcResource no puede ser constantbuffer, que no se puede enlazar a los registros de t#.
- No se permite el direccionamiento relativo en srcResource .
- srcAddress y sampleIndex deben ser un registro temporal (r#/x#), constante (cb#) o 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 | No |
Modelo de sombreador 3 (DirectX HLSL) | No |
Modelo de sombreador 2 (DirectX HLSL) | No |
Modelo de sombreador 1 (DirectX HLSL) | No |