Modificatori per ps_1_X
I modificatori di istruzioni influiscono sul risultato dell'istruzione prima che venga scritto nel registro di destinazione. Ad esempio, usarli per moltiplicare o dividere il risultato per un fattore di due o per bloccare il risultato tra zero e uno. I modificatori di istruzioni vengono applicati dopo l'esecuzione dell'istruzione, ma prima di scrivere il risultato nel registro di destinazione.
Di seguito è riportato un elenco dei modificatori.
Modificatore | Descrizione | Sintassi | Versione 1_1 | Versione 1_2 | Versione 1_3 | Versione 1_4 |
---|---|---|---|---|---|---|
_x2 | Moltiplicare per 2 | instruction_x2 | X | X | X | X |
_x4 | Moltiplicare per 4 | instruction_x4 | X | X | X | X |
_x8 | Moltiplicare per 8 | instruction_x8 | X | |||
_d2 | Dividere per 2 | instruction_d2 | X | X | X | X |
_d4 | Dividere per 4 | instruction_d4 | X | |||
_d8 | Dividere per 8 | instruction_d8 | X | |||
_Sab | Saturazione (bloccante da 0 e 1) | instruction_sat | X | X | X | X |
- Il modificatore di moltiplicazione moltiplica i dati del registro per una potenza di due dopo la lettura. Equivale a uno spostamento a sinistra.
- Il modificatore di divisione divide i dati del registro in base a una potenza di due dopo la lettura. Questo è lo stesso di uno spostamento a destra.
- Il modificatore saturazione blocca l'intervallo di valori del registro da zero a uno.
I modificatori di istruzioni possono essere usati nelle istruzioni aritmetiche. Non possono essere usate nelle istruzioni relative all'indirizzo della trama.
Modificatore di moltiplicazione
Questo esempio carica il registro di destinazione (dest) con la somma dei due colori negli operandi di origine (src0 e src1) e moltiplica il risultato per due.
add_x2 dest, src0, src1
In questo esempio vengono combinati due modificatori di istruzione. Vengono innanzitutto aggiunti due colori negli operandi di origine (src0 e src1). Il risultato viene quindi moltiplicato per due e bloccato tra 0,0 e 1,0 per ogni componente. Il risultato viene salvato nel registro di destinazione.
add_x2_sat dest, src0, src1
Modificatore di divisione
Questo esempio carica il registro di destinazione (dest) con la somma dei due colori negli operandi di origine (src0 e src1) e divide il risultato per due.
add_d2 dest, src0, src1
Modificatore saturazione
Per istruzioni aritmetiche, il modificatore di saturazione blocca il risultato di questa istruzione nell'intervallo da 0,0 a 1,0 per ogni componente. Nell'esempio seguente viene illustrato come usare questo modificatore di istruzioni.
dp3_sat r0, t0_bx2, v0_bx2 ; t0 is bump, v0 is light direction
Questa operazione si verifica dopo qualsiasi modificatore di istruzioni di moltiplicazione o divisione. _sat viene spesso usato per bloccare i risultati del prodotto. Tuttavia, consente anche l'emulazione coerente dei metodi multipass in cui il buffer dei fotogrammi è sempre compreso nell'intervallo compreso tra 0 e 1 e della sintassi multitextura DirectX 6 e 7.0, in cui viene definita la saturazione in ogni fase.
Questo esempio carica il registro di destinazione (dest) con la somma dei due colori negli operandi di origine (src0 e src1) e blocca il risultato nell'intervallo da 0,0 a 1,0 per ogni componente.
add_sat dest, src0, src1
In questo esempio vengono combinati due modificatori di istruzione. Vengono innanzitutto aggiunti due colori negli operandi di origine (src0 e src1). Il risultato viene moltiplicato per due e bloccato tra 0,0 e 1,0 per ogni componente. Il risultato viene salvato nel registro di destinazione.
add_x2_sat dest, src0, src1
Argomenti correlati