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.
Checking the stable version of the documentation...
Utilizzare l'illuminazione globale basata su voxel
VoxelGI è una forma di illuminazione globale interamente in tempo reale, concepita per scene 3D di piccole/medie dimensioni. VoxelGI è piuttosto impegnativo per la GPU, quindi è consigliabile utilizzarlo con schede grafiche dedicate.
Importante
VoxelGI è supportato solo quando si utilizza il renderer Forward+, non i renderer Mobile o Compatibilità.
Vedi anche
Non sai se VoxelGI è adatto ai tuoi bisogni? Consulta Quale tecnica di illuminazione globale dovrei utilizzare? per un confronto tra le tecniche di illuminazione globale disponibili in Godot 4.
Confronto visivo
VoxelGI disabilitato.
VoxelGI abilitato.
Setting up VoxelGI
Make sure your static level geometry is imported with the Light Baking option set to Static or Static Lightmaps in the Import dock. For manually added MeshInstance3D nodes, make sure the Global Illumination > Mode property is set to Static in the inspector.
Crea un nodo VoxelGI nel pannello dell'albero di scene.
Move the VoxelGI node to the center of the area you want it to cover by dragging the manipulation gizmo in the 3D viewport. Then adjust the VoxelGI's extents by dragging the red points in the 3D viewport (or enter values in the inspector). Make sure the VoxelGI's extents aren't unnecessarily large, or quality will suffer.
Select the VoxelGI node and click Bake at the top of the 3D editor viewport. This will take at least a few seconds to complete (depending on the number of VoxelGI subdivisions and scene complexity).
If at least one mesh contained within the VoxelGI's extents has its global illumination mode set to Static, you should see indirect lighting appear within the scene.
Nota
To avoid bloating text-based scene files with large amounts of binary data,
make sure the VoxelGIData resource is always saved to an external binary file.
This file must be saved with a .res (binary resource) extension instead of
.tres (text-based resource).
Using an external binary resource for VoxelGIData will keep your text-based
scene small while ensuring it loads and saves quickly.
Proprietà del nodo VoxelGI
Le seguenti proprietà si possono modificare nell'ispettore del nodo VoxelGI prima della preparazione:
Subdiv: Higher values result in more precise indirect lighting, at the cost of lower performance, longer bake times and increased storage requirements.
Extents: Represents the size of the box in which indirect lighting should be baked. Extents are centered around the VoxelGI node's origin.
Le seguenti proprietà si possono regolare nella risorsa VoxelGIData contenuta in un nodo VoxelGI dopo che è stato preparato:
Dynamic Range: la luminosità massima rappresentabile in illuminazione indiretta. Valori più alti consentono di rappresentare una luce indiretta più intensa, a scapito della precisione (che può causare la comparsa di evidenti bande). Se in dubbio, lascia il valore invariato.
Energy: l'energia generale dell'illuminazione indiretta. Influisce anche sull'energia dell'illuminazione diretta emessa dalle mesh con materiali emissivi.
Bias: bias facoltativo aggiunto alle ricerche nel buffer dei voxel in fase di esecuzione. Questo aiuta a evitare artefatti di auto-occlusione.
Normal Bias: simile a Bias, ma scosta la ricerca nel buffer dei voxel per la normale della superficie. Anche questo aiuta a evitare artefatti di auto-occlusione. Valori più alti riducono i riflessi visibili nei materiali non ruvidi, a costo di una maggiore perdita di luce e di un'illuminazione indiretta dall'aspetto più piatto. Per dare priorità alla riduzione dei riflessi rispetto alla qualità dell'illuminazione, imposta Bias su
0.0e Normal Bias su un valore compreso tra1.0e2.0.Propagation: il fattore energetico da utilizzare per l'illuminazione indiretta riflessa. Valori più alti produrranno un'illuminazione più brillante e diffusa (che potrebbe risultare troppo piatta). Quando Use Two Bounces è abilitata, potrebbe essere necessario diminuire Propagation per compensare l'illuminazione indiretta generalmente più brillante.
Use Two Bounces: se abilitata, l'illuminazione rimbalzerà due volte invece di una sola. Ciò produce in un'illuminazione indiretta dall'aspetto più realistico e rende l'illuminazione indiretta visibile anche nei riflessi. Abilitare questa opzione generalmente non ha un impatto evidente sulle prestazioni.
Interior: se abilitata, l'illuminazione ambientale del cielo non sarà presa in considerazione da VoxelGI. Si dovrebbe abilitare nelle scene interne per evitare perdite di luce dall'ambiente circostante.
Interazione di VoxelGI con luci e oggetti
Per garantire una visualizzazione corretta quando si utilizza VoxelGI, è necessario configurare le proprietà di illuminazione globale delle mesh e delle luci in base al loro scopo nella scena (statico o dinamico).
Sono disponibili 3 modalità di illuminazione globale per le mesh:
Disabled: la mesh non sarà presa in considerazione per la preparazione di VoxelGI. La mesh riceverà l'illuminazione indiretta dalla scena, ma non contribuirà all'illuminazione indiretta della scena.
Static (predefinita): la mesh sarà presa in considerazione per la preparazione di VoxelGI. La mesh riceverà e contribuirà all'illuminazione indiretta della scena. Se la mesh cambia in qualsiasi modo dopo la preparazione, il nodo VoxelGI deve essere nuovamente preparato. Altrimenti, l'illuminazione indiretta risulterà errata.
Dynamic: la mesh non sarà presa in considerazione per la preparazione di VoxelGI, ma riceverà e contribuirà comunque all'illuminazione indiretta della scena in tempo reale. Questa opzione è molto più lenta rispetto a Static. Utilizzare la modalità di illuminazione globale Dynamic solo su mesh grandi che cambieranno significativamente durante il gioco.
Nota
Per le mesh con la modalità di preparazione Static, il sistema di preparazione VoxelGI non è in grado di utilizzare shader personalizzati (ShaderMaterial). Queste mesh saranno considerate nero puro, fungendo solamente da blocchi per la luce. È possibile fare in modo che VoxelGI tenga conto degli shader personalizzati utilizzando la modalità di preparazione Dynamic per questi oggetti, ma ciò ha un impatto sulle prestazioni.
Per BaseMaterial3D, alcune proprietà sono attualmente ignorate durante la preparazione. Ciò può influire sull'aspetto visivo se la texture di albedo o di emissione del materiale è stata progettata usando determinate mappature UV:
UV1 > Offset
UV1 > Scale
UV1 > Triplanar
Emission > On UV2
Inoltre, sono disponibili 3 modalità di preparazione per le luci (DirectionalLight3D, OmniLight3D e SpotLight3D):
Disabled: la luce non sarà presa in considerazione per la preparazione di VoxelGI. La luce non contribuirà all'illuminazione indiretta della scena.
Static: la luce sarà presa in considerazione per la preparazione di VoxelGI. La luce contribuirà all'illuminazione indiretta della scena. Se la luce cambia in qualsiasi modo dopo la preparazione, il nodo VoxelGI deve essere nuovamente preparato, altrimenti l'illuminazione indiretta risulterà errata. Nel dubbio, utilizzare questa modalità per l'illuminazione del livello.
Dynamic (predefinita): la luce non sarà presa in considerazione per la preparazione di VoxelGI, ma contribuirà comunque all'illuminazione indiretta della scena in tempo reale. Questa opzione è più lenta rispetto a Static. Utilizzare la modalità di illuminazione globale Dynamic solo su luci che cambieranno significativamente durante il gioco.
Nota
La quantità di energia indiretta emessa da una luce dipende dal suo colore, dalla sua energia e dalle sue proprietà di energia indiretta. Per fare in modo che una luce specifica emetta più o meno energia indiretta, senza influenzare la quantità di luce diretta emessa dalla luce stessa, bisogna regolare la proprietà Indirect Energy nell'ispettore del Light3D.
Vedi anche
Consultare Quale modalità di illuminazione globale si dovrebbe usare su mesh e luci? per le raccomandazioni generali sull'utilizzo.
Regolare le prestazioni e la qualità di VoxelGI
Poiché VoxelGI è relativamente esigente, offre prestazioni migliori su sistemi dotati di GPU dedicate recenti. Su GPU dedicate più datate e schede grafiche integrate, regolare le impostazioni è necessario per ottenere prestazioni accettabili.
Nella sezione Rendering > Illuminazione globale delle Impostazioni del progetto, è possibile regolare la qualità di VoxelGI in due modi:
Voxel GI > Qualità: Se impostato su Low invece di High, il voxel cone tracing utilizzerà solo 4 punti di contatto invece di 6. Ciò velocizza il rendering, a scapito di un'occlusione ambientale meno pronunciata.
GI > Usa risoluzione dimezzata: se abilitata, entrambi VoxelGI e SDFGI renderizzerano i loro buffer di GI a metà risoluzione. Ad esempio, durante il rendering a 3840×2160, il buffer di GI sarà calcolato a una risoluzione di 1920×1080. Abilitare questa opzione risparmia molto tempo della GPU, ma può introdurre un aliasing visibile attorno ai dettagli più fini.
Si noti che l'opzione Avanzate deve essere abilitata nella finestra Impostazioni del progetto affinché le impostazioni indicate siano visibili.
Inoltre, è possibile disabilitare completamente VoxelGI nascondendo il nodo VoxelGI. Questa opzione può essere per fare confronti o per migliorare le prestazioni sui sistemi di fascia bassa.
Ridurre le perdite di luce e gli artefatti in VoxelGI
Dopo aver preparato VoxelGI, si potrebbero nota qualche infiltrazione di luce indiretta in alcuni punti della geometria del livello. Ciò si può rimediare in diversi modi:
Per risolvere sia le perdite di luce sia gli artefatti, prova a spostare o ruotare il nodo VoxelGI e poi preparalo di nuovo.
Per rimediare le perdite di luce in generale, assicurarsi che la geometria del livello sia completamente sigillata. È meglio farlo attraverso il software di modellazione 3D usato per progettare il livello, ma è possibile utilizzare anche nodi primitivi MeshInstance3D con la modalità di illuminazione globale impostata su Static.
Per rimediare le perdite di luce con geometrie sottili, si consiglia di rendere la geometria in questione più spessa. Se non è possibile, aggiungere un nodo primitivo MeshInstance3D con la modalità di illuminazione globale impostata su Static. Riprepara VoxelGI, poi nascondere il nodo primitivo MeshInstance3D (che sarà comunque preso in considerazione da VoxelGI). Per i migliori risultati, il MeshInstance3D dovrebbe avere un materiale il cui colore corrisponda alla geometria sottile originale.
Per contrastare gli artefatti che possono comparire sulle superfici riflettenti, provare ad aumentare Bias e/o Normal Bias nella risorsa VoxelGIData come descritto prima. Non aumentare questi valori troppo, altrimenti le perdite di luce diventeranno più pronunciate.
Se si nota che i nodi VoxelGI compaiono e scompaiono mentre la telecamera si muove, è molto probabile che il motore stia renderizzando troppe istanze di VoxelGI alla volta. Godot può renderizzare fino a 8 nodi VoxelGI alla volta, il che significa che possono esserci fino a 8 istanze nella vista della telecamera prima che alcune di esse inizino a sfarfallare.
Inoltre, per motivi di prestazioni, Godot può fondere solo tra 2 nodi VoxelGI in un qualunque pixel sullo schermo. Se si sovrappongono più di 2 nodi VoxelGI, l'illuminazione globale potrebbe apparire sfarfallante quando la telecamera si muove o ruota.