Nebelformeln (Direct3D 9)
C++-Anwendungen können steuern, wie sich Nebel auf die Farbe von Objekten in einer Szene auswirkt, indem sie ändern, wie Microsoft Direct3D Nebeleffekte über die Entfernung berechnet. Der D3DFOGMODE Aufzählungstyp enthält Elemente, die die drei Nebelformeln identifizieren. Alle Formeln berechnen einen Nebelfaktor als Funktion des Abstands, wobei parameter angegeben werden, die ihre Anwendung festlegt.
Linearer Nebel
Dies wird mit der folgenden D3DFOG_LINEAR Formel festgelegt.
wo
- Start ist der Abstand, in dem Nebeleffekte beginnen.
- end is the distance at which fog effects no longer increase.
- d stellt tiefe oder den Abstand 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 Vertex-Nebel unterstützt.
Dies wird mit der folgenden D3DFOG_EXP Formel festgelegt.
wo
- e ist die Basis natürlicher Logarithme (ca. 2,71828).
- Dichte ist eine beliebige Nebeldichte, die von 0,0 bis 1,0 reichen kann.
- d stellt tiefe oder den Abstand vom Standpunkt dar, wie bereits erwähnt.
Dies wird mit der folgenden D3DFOG_EXP2 Formel festgelegt.
wo
- e ist die Basis natürlicher Logarithme, wie oben angegeben.
- Dichte ist eine beliebige Nebeldichte, die wie oben beschrieben von 0,0 bis 1,0 reichen kann.
- d stellt tiefe oder den Abstand vom Standpunkt dar, wie oben angegeben.
Anmerkung
Das System speichert den Nebelfaktor in der Alphakomponente der Glanzfarbe für einen Scheitelpunkt. Wenn Ihre Anwendung eine eigene Transformation und Beleuchtung durchführt, können Sie Nebelfaktorwerte manuell einfügen, um während des Renderings vom System angewendet zu werden.
Das folgende Diagramm zeigt diese Formeln mit allgemeinen Werten wie in den Formelparametern.
D3DFOG_LINEAR ist 1,0 am Anfang und 0,0 am Ende. Es wird nicht relativ zu den nahe oder weit gelegenen Flugzeugen gemessen.
Wenn Direct3D Nebeleffekte berechnet, wird der Nebelfaktor aus einer der vorherigen Formeln in der folgenden Vermischungsgleichung verwendet.
Diese Formel skaliert effektiv die Farbe des aktuellen Polygons C um den Nebelfaktor f und fügt das Produkt zur Nebelfarbe C hinzu, skaliert um den bitweisen Umkehrungsfaktor 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. Für das Legacy-Rampengerät skaliert der Nebelfaktor die diffusen und glanzförmigen Farbkomponenten, die auf den Bereich von 0,0 und 1,0 (einschließlich) geklemmt sind. Der Nebelfaktor beginnt in der Regel bei 1,0 für die nahe Ebene und verringert sich auf 0,0 bei der weit entfernten Ebene.
Verwandte Themen