Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Shader di nebbia

Fog shaders are used to define how fog is added to (or subtracted from) a scene in a given area. Fog shaders are always used together with FogVolumes and volumetric fog. Fog shaders only have one processing function, the fog() function.

La risoluzione degli shader di nebbia dipende dalla risoluzione della griglia volumetrica di froxel. Pertanto, il livello di dettaglio che uno shader di nebbia può aggiungere dipende da quanto vicino il FogVolume è dalla telecamera.

Fog shaders are a special form of compute shader that is called once for every froxel that is touched by an axis-aligned bounding box of the associated FogVolume. This means that froxels that just barely touch a given FogVolume will still be used.

Variabili integrate

I valori marcati come in sono di sola lettura. I valori marcati come out sono scrivibili facoltativamente e non contengono necessariamente valori sensati. I campionatori non sono scrivibili, quindi non sono marcati.

Variabili integrate globali

Le variabili integrate globali sono disponibili ovunque, comprese le funzioni personalizzate.

Integrato

Descrizione

in float TIME

Tempo globale dall'avvio del motore, in secondi. Si ripete ogni 3.600 secondi (che si può cambiare con l'impostazione rollover). È influenzato da time_scale ma non dalla pausa. Se è necessaria una variabile TIME che non sia influenzata dalla scala temporale, aggiungere il proprio uniforme di shader globale e aggiornarlo a ogni frame.

in float PI

Una costante PI (3.141592). Il rapporto tra la circonferenza di un cerchio e il suo diametro, e il numero di radianti in mezzo giro.

in float TAU

Una costante TAU (6.283185). Equivalente a PI * 2 e al numero di radianti in un giro completo.

in float E

Una costante E (2.718281). Numero di Eulero, la base del logaritmo naturale.

Variabili integrate di nebbia

Tutti i valori di output dei volumi di nebbia si sovrappongono. Ciò permette di renderizzare in modo efficiente i FogVolumes, poiché si possono tutti disegnare contemporaneamente.

Integrato

Descrizione

in vec3 WORLD_POSITION

Posizione della cella del froxel attuale nello spazio mondiale.

in vec3 OBJECT_POSITION

Posizione del centro del FogVolume attuale nello spazio mondiale.

in vec3 UVW

UV tridimensionale, utilizzato per mappare una texture 3D sul FogVolume attuale.

in vec3 SIZE

Dimensioni del FogVolume attuale quando la sua forma ha almeno una dimensione.

in vec3 SDF

Signed distance field dalla superficie del FogVolume. Negativo se interno al volume, positivo altrimenti.

out vec3 ALBEDO

Valore del colore di base in output, interagisce con la luce per produrre il colore finale. Viene solo scritto sul volume di nebbia se utilizzato.

out float DENSITY

Valore di densità in output. Può essere negativo per permettere di sottrarre un volume da un altro. La densità deve essere utilizzata affinché lo shader di nebbia possa scrivere qualsiasi cosa.

out vec3 EMISSION

Valore del colore di emissione in output, aggiunto al colore durante il passaggio di luce per produrre il colore finale. Viene solo scritto nel volume di nebbia se utilizzato.