ld (sm4 - asm)

Busca dados do buffer ou textura especificados sem qualquer filtragem (por exemplo, amostragem pontual) usando o endereço inteiro fornecido. Os dados de origem podem vir de qualquer tipo de recurso, diferente de TextureCube.

ld[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle]
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.

Comentários

Esta instrução é uma alternativa simplificada para a instrução de sample. Ao contrário de sample, id também é capaz de buscar dados de buffers. Id também pode buscar recursos de vários exemplos (somente no sombreador de pixel).

srcAddress fornece o conjunto de coordenadas de textura necessárias para executar o exemplo na forma de inteiros não assinados. Se srcAddress estiver fora do intervalo [0...(#texels na dimensão -1)], o comportamento fora dos limites é invocado, onde Id retorna 0 em todos os componentes não ausentes do formato do srcResource e o padrão para componentes ausentes. Um aplicativo que deseje controle mais flexível sobre o comportamento de endereço fora do intervalo deve usar a instrução de sample, pois ela respeita o comportamento de encapsulamento/espelho/grampo/borda do endereço definido como estado de amostra.

srcAddress.a (POS-swizzle) sempre fornece um nível de mipmap inteiro não assinado. Se o valor estiver fora do intervalo [0...(num miplevels no recurso -1)]), o comportamento fora dos limites será invocado. Se o recurso for um buffer que não pode ter nenhum mipmap, srcAddress.a será ignorado

srcAddress.gb (POS-swizzle) é ignorado para buffers e texture1D (que não são uma matriz). srcAddress.b (POS-swizzle) é ignorado para matrizes texture1D e instâncias de texture2D.

Para matrizes texture1D, srcAddress.g (POS-swizzle) fornece o índice de matriz como um inteiro não assinado. Se o valor estiver fora do intervalo de índices de matriz disponíveis [0...(tamanho de matriz -1)], o comportamento fora dos limites será invocado.

Para matrizes texture2D, srcAddress.b (POS-swizzle) fornece o índice de matriz, caso contrário, ele usa a mesma semântica que para texture1D.

A busca de um t# que não tem nada vinculado 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 Id devem ser deslocadas por um conjunto de valores constantes e imediatos inteiros de espaço texel. Os valores literais são um conjunto de números de complemento de 4 bits de 2, com intervalo de inteiros [-8,7]. Esse modificador é definido somente para texture1D/2D/3D, incluindo matrizes e não para buffers.

Os deslocamentos são adicionados às coordenadas de textura, no espaço texel, em relação ao miplevel que está sendo acessado pela Id.

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 instâncias de texture1D.

O componente _aoffimmi w é ignorado para instâncias de texture2D.

Como as coordenadas de textura para Id são inteiros não assinados, se o deslocamento fizer com que o endereço fique abaixo de zero, ele será encapsulado como um endereço grande e resultará em um acesso fora dos limites.

Controle do tipo de retorno

O formato de dados retornado por Id para o registro de destino é determinado da mesma maneira que descrito para a instrução de sample. Ele é baseado no formato vinculado ao parâmetro srcResource (t#).

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

Quando um valor flutuante de 32 bits é lido por Id em um registro de 32 bits, os bits permanecem intocados; ou seja, valores desnormalizados permanecem desnormalizados. Isso é diferente da instrução de sample.

Detalhes diversos

Como não há filtragem associada à instrução de Id, conceitos como LOD bias não se aplicam a Id. Portanto, não há nenhum parâmetro s# de amostra.

Restrições

  • srcResource deve ser um registro t# e não um TextureCube. srcResource também não pode ser um constantbuffer, que não pode ser vinculado a registros t#.
  • O endereçamento relativo em srcResource não é permitido.
  • srcAddress deve ser um registro temporário (r#/x#), constante (cb#) ou de 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 é compatível com os seguintes modelos de sombreador.

Modelo de Sombreador Com suporte
Modelo de Sombreador 5 sim
Modelo de Sombreador 4.1 sim
Modelo de Sombreador 4 sim
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)