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

Values marked as in are read-only. Values marked as out can optionally be written to and will not necessarily contain sensible values. Samplers cannot be written to so they are not marked.

Globale Built-ins

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

Built-in

Beschreibung

in float TIME

Global time since the engine has started, in seconds. It repeats after every 3,600 seconds (which can be changed with the rollover setting). It's affected by time_scale but not by pausing. If you need a TIME variable that is not affected by time scale, add your own global shader uniform and update it each frame.

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-dimensional UV, used to map a 3D texture to the current FogVolume.

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.