Dämpfung und Spotlight-Faktor (Direct3D 9)
Die diffusen und glanzlichtförmigen Beleuchtungskomponenten der globalen Gleichung enthalten Begriffe, die die Lichtdämpfung und den Blickpunktkegel beschreiben. Diese Begriffe werden unten beschrieben.
Dämpfung
Die Dämpfung eines Lichts hängt vom Typ des Lichts und dem Abstand zwischen dem Licht und der Scheitelpunktposition ab. Verwenden Sie eine der folgenden Gleichungen, um die Dämpfung zu berechnen.
Atten = 1/( att0i + att1i d + * att2i * dsstelle)
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 zwischen Scheitelpunktposition und lichter Position | – |
- 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 D3DLIGHT9angegeben.
Der Abstand zwischen dem Licht und der Scheitelpunktposition ist immer positiv.
d = | Ldir|
Hierbei gilt:
| Parameter | Standardwert | type | Beschreibung |
|---|---|---|---|
| Ldir | – | D3DVECTOR | Richtungsvektor von der Scheitelpunktposition zur Lichtposition |
Wenn d größer als der Bereich des Lichts 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 einfache Anpassungen vornehmen. Sie können Attenuation1 auf 1.0 festlegen, um ein Licht zu erstellen, das nicht bereinigt wird, 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 ist nicht 0,0. Eine Anwendung kann den Lichtbereich erhöhen, um zu verhindern, dass Plötzliche Lichtlichter angezeigt werden, wenn sie sich im Lichtbereich befinden. Alternativ kann die Anwendung 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 Farbe des Lichts multipliziert, um die Intensität des Lichts als Faktor zu skalieren, durch den das Entfernungslicht zu einem Scheitelpunkt bewegt wird.
Spotlight-Faktor
Die folgende Gleichung gibt den Spotlight-Faktor an.

| Parameter | Standardwert | type | BESCHREIBUNG | Range |
|---|---|---|---|---|
| rhoi | – | GLEITKOMMAZAHL | cosine(angle) for spotlight i | – |
| phii | 0,0 | GLEITKOMMAZAHL | Penumbra-Winkel des Blickpunkts i im Bogenmaß | [thetai, pi) |
| thetai | 0,0 | GLEITKOMMAZAHL | Umbra-Winkel des Blickpunkts i im Bogenmaß | [0, Pi) |
| Abfall | 0,0 | GLEITKOMMAZAHL | Fallofffaktor | (-infinity, +infinity) |
Hierbei gilt:
rho = norm(Ldcs). norm(Ldir)
und:
| Parameter | Standardwert | type | Beschreibung |
|---|---|---|---|
| Ldcs | – | D3DVECTOR | Das Negative der Lichtrichtung im Kameraraum |
| Ldir | – | D3DVECTOR | Richtungsvektor von der Scheitelpunktposition zur Lichtposition |
Nach dem Berechnen der Lichtdämpfung berücksichtigt Direct3D ggf. auch Spotlighteffekte, den Winkel, den das Licht von einer Oberfläche reflektiert, und die Reflexion des aktuellen Materials, um die diffusen und specularen Komponenten für diesen Scheitelpunkt zu berechnen. Weitere Informationen finden Sie unter SpotLight.