Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bietet teilweise Unterstützung für die Beleuchtung durch Berechnung der Beleuchtungskoeffizienten aus zwei Punktprodukten und einem Exponenten.
Syntax
| lit dst, src |
|---|
where
- dst ist das Zielregister.
- src ist ein Quellregister.
Bemerkungen
| Vertex-Shaderversionen | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
|---|---|---|---|---|---|---|
| Beleuchtet | x | x | x | x | x | x |
Es wird davon ausgegangen, dass der Quellvektor die Werte enthält, die im folgenden Pseudocode angezeigt werden.
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
Das folgende Codefragment zeigt die ausgeführten Vorgänge.
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));
}
}
Arithmetik mit reduzierter Genauigkeit ist bei der Bewertung der Ziel-y-Komponente (dest.y) akzeptabel. Eine Implementierung muss mindestens acht Bruchbits im Power-Argument unterstützen. Punktprodukte werden mit normalisierten Vektoren berechnet, und Klammergrenzwerte liegen bei -128 bis 128.
Der Fehler sollte einer Logp- vs. exp-Kombination oder nicht mehr als ungefähr einem signifikanten Bit für eine 8-Bit-Farbkomponente entsprechen.
Zugehörige Themen