ld2dms (sm4.1 - asm)

Lê amostras individuais de texturas multidimensionais bidimensionais.

ld2dms[_aoffimmi(u,v)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], sampleIndex
Item Descrição
Dest
[in] O endereço do resultado da operação.
srcAddress
[in] As coordenadas de textura necessárias para executar o exemplo.
srcResource
[in] Um registro de textura (t#) que deve ter sido declarado identificando de qual textura ou buffer buscar
sampleIndex
[in] Idendifica os exemplos a serem lidos de srcResource (operando escalar).

Comentários

Esta instrução é uma alternativa simplificada para a instrução de exemplo . Ele busca dados da Textura especificada sem nenhuma filtragem (por exemplo, amostragem de ponto) usando o inteiro fornecido srcAddress e sampleIndex.

srcAddress fornece o conjunto de coordenadas de textura necessárias para executar a amostra na forma de inteiros sem sinal. Se srcAddress estiver fora do intervalo[0...( #texels na dimensão -1)], ld2dms sempre retorna 0 em todos os componentes presentes no formato do recurso e padrões (0,0,0,1,0f/0x00000001) para componentes ausentes.

sampleIndex não precisa ser um literal. A contagem de vários exemplos não precisa ser especificada no recurso de textura e funciona com exibições de profundidade ou estêncil.

Um aplicativo que deseja ter um controle mais flexível sobre o comportamento de endereço fora do intervalo deve usar a instrução de exemplo , pois ele respeita o comportamento de encapsulamento/espelho/fixação/borda de endereço definido como estado do sampler.

srcAddress.b (post-swizzle) é ignorado para Texture2Ds. Se o valor estiver fora do intervalo de índices de matriz disponíveis [0...( array size-1)], ld2dms sempre retorna 0 em todos os componentes presentes no formato do recurso e padrões (0,0,0,1,0f/0x00000001) para componentes ausentes.

Para Matrizes Texture2D, srcAddress.b (post-swizzle) fornece o índice da matriz. Oherwise tem o mesmo comportamento que Texture2D.

srcAddress.a (post-swizzle) é sempre ignorado. O compilador HLSL nunca produzirá nada lá.

srcResource é um registro de textura (t#) que deve ter sido declarado(22.3.11), identificando de qual textura buscar.

Buscar de t# que não tem nada associado a ele retorna 0 para todos os componentes.

Deslocamento de endereço

O sufixo opcional [_aoffimmi(u,v,w)] (deslocamento de endereço por inteiro imediato) indica que as coordenadas de textura para os ld2dms devem ser deslocadas por um conjunto de valores constantes inteiros de espaço texel imediatos fornecidos. Os valores literais são um conjunto de números complementares de 4 bits 2, com intervalo inteiro [-8,7].

Os deslocamentos são adicionados às coordenadas de textura, no espaço texel.

Os deslocamentos de endereço não são aplicados ao longo do eixo da matriz de Matrizes Texture1D/2D.

Os componentes _aoffimmi v,w são ignorados para Texture1Ds.

O componente _aoffimmi w é ignorado para Texture2Ds.

Como as coordenadas de textura para ld2dms são inteiros sem sinal, se o deslocamento fizer com que o endereço fique abaixo de zero, ele será encapsulado em um endereço grande e resultará em um acesso fora dos limites, que, como ld , retorna 0 em todos os componentes presentes no formato do recurso e os padrões (0,0,0,1,0f/0x00000001) para componentes ausentes.

Número de exemplo

ld2dms está disponível para uso em qualquer recurso. O ld2dms opera de forma idêntica a ld , exceto em recursos 2D multsample, usando o operando sampleIndex adicional (baseado em 0) para identificar qual exemplo ler do recurso.

O resultado da especificação de um sampleIndex que excede o número de amostras no recurso é indefinido, mas não pode retornar dados fora do espaço de endereço do contexto do dispositivo.

Controle de tipo de retorno

O formato de dados retornado por ld2dms para o registro de destino é determinado da mesma forma que descrito para a instrução de exemplo . Ele se baseia no formato associado ao parâmetro srcResource (t#).

Assim como na instrução de exemplo , os valores retornados para ld2dms são 4 vetores com padrões específicos de formato para componentes não presentes no formato. O swizzle em srcResource determina como girar o resultado de 4 componentes proveniente da carga de textura, após o qual .mask no dest determina quais componentes no dest são atualizados.

Quando um valor float de 32 bits é lido por ld2dms em um registro de 32 bits, os bits ficam intocados; ou seja, os valores desnormal permanecem desnormal. Isso é diferente da instrução de exemplo .

Detalhes diversos

Como não há nenhuma filtragem associada a essa instrução, conceitos como viés LOD não se aplicam. Assim, não há nenhum parâmetro s# do sampler .

Restrições

  • srcResource deve ser um registro t# e não um TextureCube, Texture1D ou Texture1DArray. srcResource não pode ser um ConstantBuffer, que não pode ser associado a registros t#.
  • O endereçamento relativo em srcResource não é permitido.
  • srcAddress e sampleIndex devem ser um registro temporário (r#/x#), constante (cb#) ou entrada (v#).
  • dest deve ser um registro temporário (r#/x#) ou de saída (o*#).

Esta instrução se aplica aos seguintes estágios de sombreador:

Sombreador de vértice Sombreador de geometria Sombreador de pixel
x x x

Modelo de sombreador mínimo

Essa função tem suporte nos modelos de sombreador a seguir.

Modelo de Sombreador Com suporte
Modelo de sombreador 5 sim
Modelo de sombreador 4.1 sim
Modelo de sombreador 4 não
Modelo de sombreador 3 (DirectX HLSL) não
Modelo de sombreador 2 (DirectX HLSL) não
Modelo de sombreador 1 (DirectX HLSL) não

Assembly do Modelo de Sombreador 4 (DirectX HLSL)