lit - vs
Fournit une prise en charge partielle de l’éclairage en calculant les coefficients d’éclairage à partir de deux produits à points et d’un exposant.
Syntaxe
lit dst, src |
---|
where
- dst est le registre de destination.
- src est un registre source.
Notes
Versions du nuanceur de vertex | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
Allumé | x | x | x | x | x | x |
Le vecteur source est supposé contenir les valeurs indiquées dans le pseudocode suivant.
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
Le fragment de code suivant montre les opérations effectuées.
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’arithmétique de précision réduite est acceptable dans l’évaluation du composant y de destination (dest.y). Une implémentation doit prendre en charge au moins huit bits de fraction dans l’argument power. Les produits dot sont calculés avec des vecteurs normalisés, et les limites de pince sont de -128 à 128.
L’erreur doit correspondre à une combinaison logp - vs et exp - vs , ou pas plus d’un bit significatif pour un composant de couleur 8 bits.
Rubriques connexes