Dämpfung und Spotlight-Faktor (Direct3D 9)
Die diffusen und glanzförmigen Beleuchtungskomponenten der globalen Beleuchtungsgleichung enthalten Begriffe, die die Lichtdämpfung und den Scheinwerferkegel beschreiben. Diese Begriffe werden unten beschrieben.
Dämpfung
Die Dämpfung eines Lichts hängt von der Art des Lichts und dem Abstand zwischen Licht und Vertexposition ab. Verwenden Sie eine der folgenden Formeln, um die Dämpfung zu berechnen.
Atten = 1/( att0i + att1i * d + att2i * d²)
Hierbei gilt:
Parameter | Standardwert | type | BESCHREIBUNG | Range |
---|---|---|---|---|
att0i | 0.0 | GLEITKOMMAZAHL | Konstanter Dämpfungsfaktor | 0 bis +unendlich |
att1i | 0.0 | GLEITKOMMAZAHL | Linearer Dämpfungsfaktor | 0 bis +unendlich |
att2i | 0.0 | GLEITKOMMAZAHL | Quadratischer Dämpfungsfaktor | 0 bis +unendlich |
T | – | GLEITKOMMAZAHL | Abstand von Vertexposition zu Lichtposition | – |
- Atten = 1, wenn das Licht ein gerichtetes Licht ist.
- Atten = 0, wenn der Abstand zwischen dem Licht und dem Scheitelpunkt den Bereich des Lichts überschreitet.
Die Werte att0, att1, att2 werden durch die Member Attenuation0, Attenuation1 und Attenuation2 von D3DLIGHT9 angegeben.
Der Abstand zwischen Licht und Vertexposition ist immer positiv.
d = | Ldir |
Hierbei gilt:
Parameter | Standardwert | type | BESCHREIBUNG |
---|---|---|---|
Ldir | – | D3DVECTOR | Richtungsvektor von Vertexposition zur Lichtposition |
Wenn d größer als der Lichtbereich ist, d. h. der Bereichsmember einer D3DLIGHT9-Struktur , führt Direct3D keine weiteren Dämpfungsberechnungen durch und wendet keine Effekte vom Licht auf den Scheitelpunkt an.
Die Dämpfungskonstanten fungieren als Koeffizienten in der Formel . Sie können eine Vielzahl von Dämpfungskurven erzeugen, indem Sie sie einfach anpassen. Sie können Dämpfung1 auf 1,0 festlegen, um ein Licht zu erzeugen, das nicht abschwächt, aber immer noch durch den 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 Lichter plötzlich erscheinen, wenn sie sich im Lichtbereich befinden, kann eine Anwendung den Lichtbereich erhöhen. Oder die Anwendung kann Dämpfungskonstanten einrichten, sodass der Dämpfungsfaktor im Lichtbereich nahe bei 0,0 liegt. Der Dämpfungswert wird mit den roten, grünen und blauen Komponenten der Lichtfarbe multipliziert, um die Lichtintensität zu skalieren, da ein Faktor der Entfernung des Lichts zu einem Scheitelpunkt liegt.
Spotlight-Faktor
Die folgende Gleichung gibt den Spotlight-Faktor an.
Parameter | Standardwert | type | BESCHREIBUNG | Range |
---|---|---|---|---|
rhoi | – | GLEITKOMMAZAHL | Kosinus (Winkel) für Spotlight i | – |
phii | 0.0 | GLEITKOMMAZAHL | Penumbra Winkel des Scheinwerfers i im Bogenmaß | [thetai, pi) |
thetai | 0.0 | GLEITKOMMAZAHL | Umbra Winkel des Scheinwerfers i im Bogenmaß | [0, pi) |
Abfall | 0.0 | GLEITKOMMAZAHL | Falloff-Faktor | (-unendlich, +unendlich) |
Hierbei gilt:
rho = norm(Ldcs). norm(Ldir)
und:
Parameter | Standardwert | type | BESCHREIBUNG |
---|---|---|---|
LDCS | – | D3DVECTOR | Das Negative der Lichtrichtung im Kameraraum |
Ldir | – | D3DVECTOR | Richtungsvektor von Vertexposition zur Lichtposition |
Nach dem Berechnen der Lichtdämpfung berücksichtigt Direct3D ggf. auch Strahlereffekte, den Winkel, den das Licht von einer Oberfläche reflektiert, und die Reflektion des aktuellen Materials, um die diffusen und spiegelförmigen Komponenten für diesen Scheitelpunkt zu berechnen. Weitere Informationen finden Sie unter SpotLight.
Zugehörige Themen