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 |
in float PI |
Eine |
in float TAU |
Eine |
in float E |
Eine |
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. |