Nebelformeln (Direct3D 9)
C++-Anwendungen können steuern, wie Nebel sich auf die Farbe von Objekten in einer Szene auswirkt, indem sie ändern, wie Microsoft Direct3D Nebeleffekte über die Entfernung berechnet. Der aufgezählte D3DFOGMODE-Typ enthält Member, die die drei Nebelformeln identifizieren. Alle Formeln berechnen einen Nebelfaktor in Abhängigkeit von der Entfernung, sofern dies von Der Anwendung festgelegt wird.
Linearer Nebel
Dies wird mit der folgenden D3DFOG_LINEAR Gleichung festgelegt.
where
- start ist die Entfernung, ab der Nebeleffekte beginnen.
- End ist die Entfernung, ab der die Nebeleffekte nicht mehr zunehmen.
- d stellt die Tiefe oder die Entfernung vom Standpunkt dar. Bei bereichsbasiertem Nebel ist der Wert für d der Abstand zwischen der Kameraposition und einem Scheitelpunkt. Bei nicht bereichsbasiertem Nebel ist der Wert für d der absolute Wert der Z-Koordinate im Kamerabereich.
Exponentieller Nebel
Lineare und exponentielle Formeln werden sowohl für Pixelnebel als auch für Vertexnebel unterstützt.
Dies wird mit der folgenden D3DFOG_EXP Gleichung festgelegt.
where
- e ist die Basis der natürlichen Logarithmen (ca. 2,71828).
- Density ist eine beliebige Nebeldichte, die zwischen 0,0 und 1,0 liegen kann.
- d stellt die Tiefe oder den Abstand vom Standpunkt dar, wie bereits erwähnt.
Dies wird mit der folgenden D3DFOG_EXP2 Gleichung festgelegt.
where
- e ist die Basis natürlicher Logarithmen, wie oben angegeben.
- Density ist eine beliebige Nebeldichte, die wie oben angegeben zwischen 0,0 und 1,0 liegen kann.
- d stellt die Tiefe oder die Entfernung vom Standpunkt dar, wie oben angegeben.
Hinweis
Das System speichert den Nebelfaktor in der Alphakomponente der Glanzfarbe für einen Scheitelpunkt. Wenn Ihre Anwendung eine eigene Transformation und Beleuchtung ausführt, können Sie Nebelfaktorwerte manuell einfügen, die vom System während des Renderings angewendet werden.
Das folgende Diagramm zeigt diese Formeln mit allgemeinen Werten wie in den Formelparametern.
D3DFOG_LINEAR ist am Anfang 1.0 und am Ende 0.0. Es wird nicht relativ zu den nahen oder fernen Ebenen gemessen.
Wenn Direct3D Nebeleffekte berechnet, wird der Nebelfaktor aus einer der vorherigen Formeln in der folgenden Mischgleichung verwendet.
Diese Formel skaliert effektiv die Farbe des aktuellen Polygons C um den Nebelfaktor f und fügt das Produkt der Nebelfarbe C hinzu, skaliert durch die bitweise Umkehrung des Nebelfaktors. Der resultierende Farbwert ist eine Mischung aus der Nebelfarbe und der originalen Farbe als Abstandsfaktor. Die Formel gilt für alle Geräte, die in Microsoft DirectX 7.0 und höher unterstützt werden. Bei der älteren Rampenvorrichtung skaliert der Nebelfaktor die diffusen und glanzförmigen Farbkomponenten, die auf den Bereich von 0,0 und 1,0 (einschließlich) eingespannt sind. Der Nebelfaktor beginnt in der Regel bei 1,0 für die nahe Ebene und nimmt auf der fernen Ebene auf 0,0 ab.
Zugehörige Themen