Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Fog-Shader

Fog-Shader werden verwendet, um zu definieren, wie Nebel in einem bestimmten Bereich einer Szene hinzugefügt (oder abgezogen) wird. Fog-Shader werden immer zusammen mit FogVolumes und volumetrischem Nebel verwendet. Fog-Shader haben nur eine Verarbeitungsfunktion, die fog() Funktion.

Die Auflösung der Fog-Shader hängt von der Auflösung des volumetrischen Nebel-Froxel-Rasters ab. Dementsprechend hängt der Detailgrad, den ein Fog-Shader hinzufügen kann, davon ab, wie nah das FogVolume an der Kamera ist.

Fog-Shader sind eine spezielle Form von Compute-Shadern, die für jedes Froxel, das von einer achsparallelen Bounding-Box des zugehörigen FogVolume berührt wird, einmal aufgerufen wird. Das bedeutet, dass Froxel, die ein bestimmtes FogVolume nur knapp berühren, trotzdem verwendet werden.

Built-ins

Die als "in" gekennzeichneten Werte sind schreibgeschützt. Mit "out" gekennzeichnete Werte sind zum optionalen Schreiben vorgesehen und enthalten nicht unbedingt sinnvolle Werte. Sampler können nicht beschrieben werden, daher sind sie nicht markiert.

Globale Built-ins

Globale Built-ins sind überall verfügbar, auch in benutzerdefinierten Funktionen.

Built-in

Beschreibung

in float TIME

Globale Zeit in Sekunden.

in float PI

Eine PI-Konstante (3,141592). Das Verhältnis des Umfangs eines Kreises zu seinem Durchmesser und die Anzahl der Bogenmaßeinheiten in einer halben Umdrehung.

in float TAU

Eine TAU-Konstante (6.283185). Ein Äquivalent von PI * 2 und die Anzahl der Bogenmaßeinheiten in einer vollen Umdrehung.

in float E

Eine E-Konstante (2,718281). Eulersche Zahl und eine Basis des natürlichen Logarithmus.

Fog-Built-ins

Alle Ausgabewerte von Nebelvolumina überlagern sich gegenseitig. Dadurch können FogVolumes effizient gerendert werden, da sie alle auf einmal gezeichnet werden können.

Built-in

Beschreibung

in vec3 WORLD_POSITION

Position der aktuellen Froxel-Zelle im World-Space.

in vec3 OBJECT_POSITION

Position des Zentrums des aktuellen FogVolume im World-Space.

in vec3 UVW

3-dimensionale UV, die verwendet wird, um eine 3D-Textur auf das aktuelle FogVolume abzubilden.

in vec3 SIZE

Größe des aktuellen FogVolume, wenn sein shape eine Größe hat.

in vec3 SDF

Signed Distance Field zur Oberfläche des FogVolume. Negativ, wenn innerhalb des Volumens, sonst positiv.

out vec3 ALBEDO

Ausgabe-Basisfarbwert, interagiert mit dem Licht, um die endgültige Farbe zu erzeugen. Wird nur in das Fog Volume geschrieben, wenn es verwendet wird.

out float DENSITY

Ausgabe-Dichtewert. Kann negativ sein, damit ein Volumen von einem anderen subtrahiert werden kann. Die Dichte muss verwendet werden, damit der Fog-Shader überhaupt etwas schreiben kann.

out vec3 EMISSION

Ausgabe -Emissionsfarbwert, der während des Lichtdurchlaufs zur Farbe addiert wird, um die endgültige Farbe zu erzeugen. Wird nur in das Nebelvolumen geschrieben, wenn es verwendet wird.