Nebel (Direct3D 9)

Das Hinzufügen von Nebel zu einer 3D-Szene kann den Realismus verbessern, ambienten oder stimmungsbilden, und obskure Artefakte verursachen, die manchmal verursacht werden, wenn entfernte Geometrie ins Blickfeld kommt. Direct3D unterstützt zwei Nebelmodelle, Pixelnebel und Scheitelpunktnebel, jedes mit 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 dessen Entfernung vom Standpunkt gemischt wird. Wenn Objekte immer weiter entfernt werden, verschmilzt ihre ursprüngliche Farbe mehr und mehr mit der gewählten Nebelfarbe und schafft die Illusion, dass das Objekt zunehmend von winzigen Partikeln verdeckt wird, die in der Szene schweben. Die folgende Abbildung zeigt eine Ohne Nebel gerenderte Szene 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 die Ferne zu verschwinden scheinen. Durch die Kombination diskreter Nebeleffekte mit kreativem Szenendesign können Sie Stimmung hinzufügen und die Farbe von Objekten in einer Szene weicher gestalten.

Direct3D bietet zwei Möglichkeiten zum Hinzufügen von Nebel zu einer Szene: Pixelnebel und Scheitelpunktnebel, benannt nach der Art und Weise, wie die Nebeleffekte angewendet werden. Weitere Informationen finden Sie unter Pixel Fog (Direct3D 9) und Vertex Fog (Direct3D 9). Kurz gesagt, Pixelnebel - auch Tabellennebel genannt - wird im Gerätetreiber implementiert, und Vertexnebel wird in der Direct3D-Beleuchtungs-Engine implementiert. Eine Anwendung kann Nebel mit einem Vertex-Shader und bei Bedarf gleichzeitig Pixelnebel implementieren.

Hinweis

Unabhängig davon, ob Sie Pixel- oder Scheitelpunktnebel verwenden, muss Ihre Anwendung eine konforme Projektionsmatrix bereitstellen, um sicherzustellen, dass Nebeleffekte ordnungsgemäß angewendet werden. Diese Einschränkung gilt auch für Anwendungen, die die Direct3D-Transformations- und Beleuchtungs-Engine nicht verwenden. Weitere Informationen dazu, wie Sie eine geeignete 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. es ist nicht Teil der programmierbaren Pixelpipeline.

Direct3D-Rendering