Freigeben über


Nebel (Direct3D 9)

Das Hinzufügen von Nebel zu einer 3D-Szene kann Realismus verbessern, Ambiente bieten oder eine Stimmung festlegen, und obskure Artefakte manchmal verursacht werden, wenn entfernte Geometrie in Sicht kommt. Direct3D unterstützt zwei Nebelmodelle, Pixelnebel und Vertex-Nebel mit jeweils eigenen Features und Programmierschnittstellen.

Im Wesentlichen wird Nebel implementiert, indem die Farbe von Objekten in einer Szene mit einer ausgewählten Nebelfarbe basierend auf der Tiefe eines Objekts in einer Szene oder seinem Abstand vom Standpunkt kombiniert wird. Wenn Objekte weiter entfernt werden, vermischt sich ihre ursprüngliche Farbe immer mehr mit der gewählten Nebelfarbe, wodurch die Illusion entsteht, dass das Objekt zunehmend von winzigen Partikeln verdeckt wird, die in der Szene schweben. Die folgende Abbildung zeigt eine Szene, die ohne Nebel gerendert wird, und eine ähnliche Szene, die mit aktiviertem Nebel gerendert wird.

Abbildung der gleichen Szene mit und ohne Nebel

In dieser Abbildung hat die Szene auf der linken Seite einen klaren Horizont, über den keine Landschaft sichtbar ist, obwohl sie in der realen Welt sichtbar wäre. Die Szene auf der rechten Seite verdeckt den Horizont, indem eine Nebelfarbe verwendet wird, die mit der Hintergrundfarbe identisch ist, sodass Polygone in den Abstand eingeblendet werden. Durch die Kombination von diskreten Nebeleffekten mit kreativem Szenendesign können Sie Stimmung hinzufügen und die Farbe von Objekten in einer Szene weichmachen.

Direct3D bietet zwei Möglichkeiten zum Hinzufügen von Nebel zu einer Szene: Pixelnebel und Vertex-Nebel, der nach der Anwendung der Nebeleffekte benannt wird. Weitere Informationen finden Sie unter Pixel Fog (Direct3D 9) und Vertex Fog (Direct3D 9). Kurz gesagt, pixel fog - auch als Tischnebel bezeichnet - wird im Gerätetreiber implementiert und Vertex-Nebel wird in der Direct3D-Beleuchtungsmaschine implementiert. Eine Anwendung kann Nebel mit einem Vertex-Shader implementieren und bei Bedarf gleichzeitig Pixelnebel verwenden.

Anmerkung

Unabhängig davon, ob Sie Pixel- oder Vertex-Nebel verwenden, muss Ihre Anwendung eine kompatible Projektionsmatrix bereitstellen, um sicherzustellen, dass Nebeleffekte ordnungsgemäß angewendet werden. Diese Einschränkung gilt auch für Anwendungen, die keine Direct3D-Transformation und Beleuchtungsmaschine verwenden. Weitere Informationen dazu, wie Sie eine entsprechende Matrix bereitstellen können, finden Sie unter Projektionstransformation (Direct3D 9).

 

In den folgenden Themen werden Nebel vorgestellt und Informationen zur Verwendung verschiedener Nebelfeatures in Direct3D-Anwendungen vorgestellt.

Die Nebelmischung wird durch Renderzustände gesteuert; sie ist nicht Teil der programmierbaren Pixelpipeline.

Direct3D-Rendering-