texbeml - ps

Applicare una trasformazione falso della mappa dell'ambiente con la luminanza. Questa operazione viene eseguita modificando i dati dell'indirizzo trama del registro di destinazione, usando i dati di perturbazione dell'indirizzo (du,dv), una matrice di ambiente di urto 2D e la luminanza.

Sintassi

texbeml 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
texbeml x x x

 

I dati di colore rosso e verde nel registro src sono interpretati come dati di perturbazione (du,dv). I dati di colore blu nel registro src sono interpretati come dati di luminanza.

Questa istruzione trasforma i componenti rossi e verdi nel registro di origine usando la matrice di mapping dell'ambiente 2D 2D. Il risultato viene aggiunto al set di coordinate della trama corrispondente al numero di registrazione di destinazione. Viene applicata una correzione della luminanza usando il valore di luminanza e i valori della fase di trama di pregiudizio. Il risultato viene usato per campionire la fase di trama corrente.

Questa operazione può essere usata per una varietà di tecniche basate sulla perturbazione degli indirizzi, ad esempio il mapping di ambienti per pixel falsi.

Questa operazione interpreta sempre du e dv come quantità firmata. Per le versioni 1_0 e 1_1, il modificatore di input di scalabilità con registrazione di origine ( _bx2) non è consentito nell'argomento di input.

Questa istruzione produce risultati definiti quando le trame di input contengono dati di formato misto. Per altre informazioni sui formati di superficie, vedere D3DFORMAT.

// When using this instruction, texture registers must follow 
//   the following sequence:
// The texture assigned to stage tn contains the (du,dv) data
// The texture assigned to stage t(m) is sampled
tex     t(n)                    
texbeml t(m),  t(n)      where m > n

Questo esempio mostra i calcoli eseguiti all'interno dell'istruzione.

// 1. New values for texture addresses (u',v') are calculated
// 2. Sample the texture using (u',v')
// 3. Luminance correction is applied

u' = TextureCoordinates(fase m)u +

D3DTSS_BUMPENVMAT00(fase m)*t(n)R +

D3DTSS_BUMPENVMAT10(fase m)*t(n)G

v' = TextureCoordinates(stage m)v +

D3DTSS_BUMPENVMAT01(fase m)*t(n)R +

D3DTSS_BUMPENVMAT11(fase m)*t(n)G

t(m)RGBA = TextureSample(stage m) usando (u',v') come coordinate

t(m)RGBA = t(m)RGBA *

[(t(n)B * D3DTSS_BUMPENVLSCALE(fase m)) +

D3DTSS_BUMPENVLOFFSET(fase m)]

Non è possibile leggere i dati letti da un'istruzione texbem o texbeml , ad eccezione di un altro texbem o texbeml.

// This example demonstrates the validation error caused by 
//   t0 being reread
ps_1_1
tex t0
texbem t1, t0
add r0, t1, t0

(Instruction Error) (Statement 4) Register data that has been read by 
texbem or texbeml instruction cannot be read by other instructions

Esempio

Ecco un esempio di shader con le mappe di trama identificate e le fasi della trama identificate.

ps_1_1
tex t0              ; Define t0 to get a 2-tuple DuDv
texbeml t1, t0      ; Compute (u',v')
                    ; Apply luminance correction                    
                    ; Sample t1 using (u',v')
mov r0, t1          ; Output result

In questo esempio sono necessarie le trame seguenti nelle fasi di trama seguenti.

  • La fase 0 viene assegnata una mappa d'urto con dati di perturbazione (du, dv).
  • La fase 1 viene assegnata una mappa trama con dati di colore.
  • texbeml imposta i dati della matrice nella fase di trama campionata. Ciò è diverso dalla funzionalità della pipeline di funzione fissa in cui i dati di perturbazione e le matrici occupano la stessa fase di trama.

Istruzioni sul pixel shader