Shader di nebbia
Gli shader di nebbia sono utilizzati per definire come la nebbia è aggiunta (o sottratta) da una scena in una determinata area. Gli shader di nebbia sono sempre utilizzati insieme a FogVolumes e alla nebbia volumetrica. Gli shader di nebbia hanno una sola funzione di elaborazione, la funzione fog().
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.
Gli shader di nebbia sono una forma speciale di shader di calcolo che vengono chiamati una volta per ogni froxel in contatto con un AABB del FogVolume associato. Questo significa che i froxel che a malapena sono in contatto con un determinato FogVolume saranno comunque utilizzati.
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 |
in float PI |
Una costante |
in float TAU |
Una costante |
in float E |
Una costante |
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. |