lit - vs
Fornisce supporto parziale per l'illuminazione calcolando i coefficienti di illuminazione da due prodotti punti e un esponente.
Sintassi
lit dst, src |
---|
dove
- dst è il registro di destinazione.
- src è un registro di origine.
Commenti
Versioni del vertex shader | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
Illuminato | x | x | x | x | x | x |
Si presuppone che il vettore di origine contenga i valori illustrati nello pseudocodice seguente.
src.x = N*L ; The dot product between normal and direction to light
src.y = N*H ; The dot product between normal and half vector
src.z = ignored ; This value is ignored
src.w = exponent ; The value must be between -128.0 and 128.0
Il frammento di codice seguente mostra le operazioni eseguite.
dest.x = 1;
dest.y = 0;
dest.z = 0;
dest.w = 1;
float power = src.w;
const float MAXPOWER = 127.9961f;
if (power < -MAXPOWER)
power = -MAXPOWER; // Fits into 8.8 fixed point format
else if (power > MAXPOWER)
power = MAXPOWER; // Fits into 8.8 fixed point format
if (src.x > 0)
{
dest.y = src.x;
if (src.y > 0)
{
// Allowed approximation is EXP(power * LOG(src.y))
dest.z = (float)(pow(src.y, power));
}
}
L'aritmetica di precisione ridotta è accettabile nella valutazione del componente y di destinazione (dest.y). Un'implementazione deve supportare almeno otto bit frazionari nell'argomento di alimentazione. I prodotti a punti vengono calcolati con vettori normalizzati e i limiti di blocco sono da -128 a 128.
L'errore deve corrispondere a un logp - vs e exp - vs combinazione oppure non più di un bit significativo per un componente di colore a 8 bit.
Argomenti correlati