texcrd - ps

Copia i dati delle coordinate della trama dal registro delle coordinate della trama di origine come dati dei colori nel registro di destinazione.

Sintassi

texcrd dst, src

 

dove

  • dst è il registro di destinazione.
  • src è un registro di origine.

Commenti

Versioni di Pixel shader 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texcrd x

 

Questa istruzione interpreta i dati delle coordinate come dati di colore (RGBA).

Nessuna trama viene campionata da questa istruzione. Solo le coordinate della trama impostate su questa fase di trama sono rilevanti.

Quando si usa texcrd, tenere presente quanto segue per informazioni dettagliate su come i dati vengano copiati dal registro di origine al registro di destinazione. Il registro delle coordinate della trama di origine (t#) contiene dati nell'intervallo [-D3DCAPS9. MaxTextureRepeat, D3DCAPS9. MaxTextureRepeat], mentre il registro di destinazione (r#) può contenere dati solo nell'intervallo (probabilmente più piccolo) [-D3DCAPS9. PixelShader1xMaxValue, D3DCAPS9. PixelShader1xMaxValue]. Si noti che per pixel shader versione 1_4, D3DCAPS9. PixelShader1xMaxValue deve essere un minimo di otto. L'istruzione texcrd, nel processo di blocco dei dati di origine che non è compreso nell'intervallo del registro di destinazione, probabilmente si comporta in modo diverso su hardware diverso. Il primo hardware pixel shader versione 1_4 sul mercato eseguirà un blocco speciale per i valori esterni all'intervallo. Questo blocco è progettato per produrre un numero che può adattarsi al registro di destinazione, ma anche per mantenere il comportamento di indirizzamento della trama per i dati out-of-range (vedere D3DTEXTUREADDRESS) se i dati devono essere successivamente usati per il campionamento della trama. Tuttavia, il nuovo hardware di diversi produttori potrebbe non presentare questo comportamento e potrebbe solo tagliare i dati per adattare l'intervallo di registrazione di destinazione. Pertanto, il corso più sicuro dell'azione quando si usa pixel shader versione 1_4 texcrd consiste nell'fornire dati di coordinate di trama solo nel pixel shader già all'interno dell'intervallo [-8,8] in modo da non basarsi sul modo in cui i bloccanti hardware.

A differenza di texcoord_, texcrd non blocca i valori tra 0 e 1.

Regole per l'uso di texcrd :

  1. Lo stesso modificatore .xyz o .xyw deve essere applicato a ogni lettura di un singolo registro t(n) all'interno di un'istruzione texcrd o texld.
  2. Il quarto risultato del canale di texcrd è unset/undefined in tutti i casi.
  3. Il terzo canale è unset/undefined per il caso xyw_dw.

Esempio

Il set completo di sintassi consentite per texcrd, tenendo conto di tutte le combinazioni valide di maschera di modifica/selettore di origine e maschera di scrittura di destinazione, è riportato di seguito. Si noti che la notazione .rgba e .xyzw può essere usata in modo intercambiabile.

Copia i primi tre canali del registro iteratore coordinata trama, t(n), in r(m). Il quarto canale di r(m) non è inizializzato.

texcrd  r(m).rgb, t(n).xyz  

// Produces the same result as the previous instruction
texcrd  r(m).rgb, t(n)

Inserisce prima, secondo e quarto componenti di t(n) in primi tre canali di r(m). Il quarto canale di r(m) non è inizializzato.

texcrd  r(m).rgb, t(n).xyw

Ecco un esempio di divisione proiettato usando il modificatore _dw.

In questo esempio viene copiato x/w e y/w da t(n) nei primi due canali di r(m). Il terzo e quarto canali di r(m) non sono inizializzati. Tutti i dati scritti in precedenza nel terzo canale di r(m) verranno persi. I dati nel quarto canale di r(m) si perdono a causa del marcatore di fase. Per la versione 1_4, il flag di D3DTTFF_PROJECTED viene ignorato.

texcrd  r(m).rg,  t(n)_dw.xyw

Istruzioni sul pixel shader