ld (sm4 - asm)

Recupera i dati dal buffer o dalla trama specificati senza alcun filtro ,ad esempio il campionamento dei punti, usando l'indirizzo integer specificato. I dati di origine possono provenire da qualsiasi tipo di risorsa, diverso da TextureCube.

ld[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle]
Elemento Descrizione
dest
[in] Indirizzo del risultato dell'operazione.
srcAddress
[in] Le coordinate della trama necessarie per eseguire il campione.
srcResource
[in] Registro delle trame (t#) da cui deve essere stato dichiarato l'identificazione della trama o del buffer da cui recuperare il recupero.

Osservazioni:

Questa istruzione è un'alternativa semplificata all'istruzione di esempio . A differenza del campione, ld è anche in grado di recuperare i dati dai buffer. ld è anche in grado di recuperare da risorse multi-campione (solo in pixel shader).

srcAddress fornisce il set di coordinate di trama necessarie per eseguire l'esempio sotto forma di numeri interi senza segno. Se srcAddress non è compreso nell'intervallo[0...( #texels nella dimensione -1)], viene richiamato il comportamento out-of-bounds, dove ld restituisce 0 in tutti i componenti non mancanti del formato di srcResource e il valore predefinito per i componenti mancanti. Un'applicazione che desidera un controllo più flessibile sul comportamento degli indirizzi out-of-range deve usare invece l'istruzione di esempio, in quanto rispetta il comportamento di wrapping dell'indirizzo,mirror/clamp/border definito come stato del campionatore.

srcAddress.a (POS-swizzle) fornisce sempre un livello mipmap intero senza segno. Se il valore non è compreso nell'intervallo [0...( num miplevels in resource-1)]), quindi viene richiamato il comportamento out-of-bounds. Se la risorsa è un buffer, che non può avere mipmap, srcAddress.a viene ignorato

srcAddress.gb (POS-swizzle) viene ignorato per i buffer e texture1D (non Array). srcAddress.b (POS-swizzle) viene ignorato per matrici texture1D e texture2D.

Per le matrici texture1D, srcAddress.g (POS-swizzle) fornisce l'indice di matrice come intero senza segno. Se il valore non è compreso nell'intervallo di indici di matrice disponibili [0...( matrice size-1)], quindi viene richiamato il comportamento out-of-bounds.

Per le matrici texture2D, srcAddress.b (POS-swizzle) fornisce l'indice della matrice, altrimenti con la stessa semantica di texture1D.

Il recupero da t# a cui non è associato alcun valore restituisce 0 per tutti i componenti.

Offset degli indirizzi

Il suffisso facoltativo [_aoffimmi(u,v,w)] (offset dell'indirizzo per intero immediato) indica che le coordinate della trama per ld devono essere sfalsate da un set di valori costanti interi dello spazio texel immediato forniti. I valori letterali sono un set di numeri di complemento a 4 bit 2, con intervallo intero [-8,7]. Questo modificatore viene definito solo per texture1D/2D/3D, incluse le matrici e non per i buffer.

Gli offset vengono aggiunti alle coordinate della trama, nello spazio texel, rispetto al miplevel a cui si accede dall'ld.

Gli offset degli indirizzi non vengono applicati lungo l'asse della matrice di matrici texture1D/2D.

I componenti _aoffimmi v,w vengono ignorati per texture1D.

Il componente _aoffimmi w viene ignorato per texture2Ds.

Poiché le coordinate della trama per ld sono numeri interi senza segno, se l'offset fa sì che l'indirizzo sia inferiore a zero, verrà eseguito il wrapping in un indirizzo di grandi dimensioni e verrà generato un accesso fuori limite.

Controllo tipo restituito

Il formato dei dati restituito da ld al registro di destinazione viene determinato nello stesso modo descritto per l'istruzione di esempio. Si basa sul formato associato al parametro srcResource (t#).

Come per l'istruzione di esempio , i valori restituiti per ld sono 4 vettori con valori predefiniti specifici del formato per i componenti non presenti nel formato. Lo swizzle su srcResource determina come eseguire lo scorrimento del risultato di 4 componenti restituito dal caricamento della trama, dopo il quale .mask su dest determina quali componenti nel dest vengono aggiornati.

Quando un valore float a 32 bit viene letto da ld in un registro a 32 bit, i bit sono invariati, ovvero i valori denormali rimangono denormali. A differenza dell'istruzione di esempio .

Dettagli vari

Poiché non esiste alcun filtro associato all'istruzione ld , i concetti come la distorsione LOD non si applicano a ld. Di conseguenza non esiste alcun parametro s# di sampler.

Limitazioni

  • srcResource deve essere un registro t# e non un TextureCube. srcResource non può essere un constantbuffer, che non può essere associato a registri t#.
  • L'indirizzamento relativo su srcResource non è consentito.
  • srcAddress deve essere un registro temp (r#/x#), costante (cb#) o input (v#).
  • dest deve essere un registro temp (r#/x#) o output (o*#).

Questa istruzione si applica alle fasi seguenti dello shader:

Vertex shader Geometry shader Pixel shader
x x x

Modello di shader minimo

Questa funzione è supportata nei modelli di shader seguenti.

Modello di shader Supportata
Modello shader 5 yes
Modello shader 4.1 yes
Modello shader 4 yes
Modello shader 3 (DirectX HLSL) no
Modello shader 2 (DirectX HLSL) no
Modello shader 1 (DirectX HLSL) no

Assembly del modello shader 4 (DirectX HLSL)