Dämpfung und Spotlight-Faktor (Direct3D 9)
Die diffusen und glanzförmigen Beleuchtungskomponenten der globalen Beleuchtungsgleichung enthalten Begriffe, die die Lichtdämpfung und den Spotlight-Kegel beschreiben. Diese Begriffe werden unten beschrieben.
Dämpfung
Die Dämpfung eines Lichts hängt vom Lichttyp und dem Abstand zwischen Licht und Vertexposition ab. Verwenden Sie zum Berechnen der Dämpfung eine der folgenden Formeln.
Atten = 1/( att0i + att1i * d + att2i * d²)
Wo:
Parameter | Standardwert | Art | Beschreibung | Bereich |
---|---|---|---|---|
att0i | 0.0 | SCHWEBEN | Konstanter Dämpfungsfaktor | 0 bis +unendlich |
att1i | 0.0 | SCHWEBEN | Linearer Dämpfungsfaktor | 0 bis +unendlich |
att2i | 0.0 | SCHWEBEN | Quadratischer Dämpfungsfaktor | 0 bis +unendlich |
d | N/A | SCHWEBEN | Abstand von Vertexposition zu Lichtposition | N/A |
- Atten = 1, wenn das Licht ein direktionales Licht ist.
- Atten = 0, wenn der Abstand zwischen Licht und Vertex den Bereich des Lichts überschreitet.
Die Att0-, att1-, att2-Werte werden durch die Elemente "Attenuation0", "Attenuation1" und "Attenuation2" von D3DLIGHT9angegeben.
Der Abstand zwischen Licht und Vertexposition ist immer positiv.
d = | Ldir |
Wo:
Parameter | Standardwert | Art | Beschreibung |
---|---|---|---|
Ldir | N/A | D3DVECTOR | Richtungsvektor von vertexposition zur Lichtposition |
Wenn d größer als der Lichtbereich ist, d. h. das Bereichselement einer D3DLIGHT9 Struktur, führt Direct3D keine weiteren Dämpfungsberechnungen durch und wendet keine Effekte vom Licht auf den Scheitelpunkt an.
Die Dämpfungskonstanten dienen als Koeffizienten in der Formel – Sie können eine Vielzahl von Dämpfungskurven erzeugen, indem Sie einfache Anpassungen an ihnen vornehmen. Sie können die Dämpfung1 auf 1,0 festlegen, um ein Licht zu erstellen, das nicht Dämpfung, aber dennoch nach Bereich begrenzt ist, oder Sie können mit verschiedenen Werten experimentieren, um verschiedene Dämpfungseffekte zu erzielen.
Die Dämpfung im maximalen Bereich des Lichts beträgt nicht 0,0. Um zu verhindern, dass Licht plötzlich angezeigt wird, wenn sie sich im Lichtbereich befinden, kann eine Anwendung den Lichtbereich erhöhen. Oder die Anwendung kann Dämpfungskonstanten so einrichten, dass der Dämpfungsfaktor nahe 0,0 im Lichtbereich liegt. Der Dämpfungswert wird mit den roten, grünen und blauen Komponenten der Farbe des Lichts multipliziert, um die Intensität des Lichts zu skalieren, da der Abstandsfaktor des Lichts zu einem Scheitelpunkt bewegt wird.
Blickpunktfaktor
Die folgende Formel gibt den Blickpunktfaktor an.
Parameter | Standardwert | Art | Beschreibung | Bereich |
---|---|---|---|---|
rhoi | N/A | SCHWEBEN | Kosinus(Winkel) für Spotlight i | N/A |
phii | 0.0 | SCHWEBEN | Penumbra-Winkel des Spotlight i in Bogenmaß | [thetai, pi) |
thetai | 0.0 | SCHWEBEN | Umbra-Winkel des Blickpunkts i in Bogenmaß | [0, pi) |
Abfall | 0.0 | SCHWEBEN | Fallofffaktor | (-unendlich, +unendlich) |
Wo:
rho = norm(Ldcs).Norm(Ldir)
und:
Parameter | Standardwert | Art | Beschreibung |
---|---|---|---|
Ldcs | N/A | D3DVECTOR | Das Negative der Lichtrichtung im Kameraraum |
Ldir | N/A | D3DVECTOR | Richtungsvektor von vertexposition zur Lichtposition |
Nach dem Berechnen der Lichtdämpfung berücksichtigt Direct3D auch Spotlight-Effekte, den Winkel, den das Licht von einer Oberfläche reflektiert, und die Reflektion des aktuellen Materials, um die diffusen und glanzförmigen Komponenten für diesen Scheitelpunkt zu berechnen. Weitere Informationen finden Sie unter SpotLight-.
Verwandte Themen