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.

VoxelGI

Eredita: VisualInstance3D < Node3D < Node < Object

Sonda di illuminazione globale (GI) in tempo reale.

Descrizione

I VoxelGI servono per fornire alle scene una luce indiretta e riflessi, in tempo reale e in alta qualità. Essi precalcolano l'effetto degli oggetti che emettono luce e l'effetto della geometria statica per simulare il comportamento di luce complessa in tempo reale. I VoxelGI devono essere precalcolati prima di avere un effetto visibile. Tuttavia, una volta precalcolati, gli oggetti dinamici riceveranno luce da essi. Inoltre, le luci possono essere completamente dinamiche o precalcolate.

Nota: VoxelGI è supportato solo nel metodo di rendering Forward+, non Mobile o Compatibilità.

Generazione procedurale: Un VoxelGI può essere precalcolato in un progetto esportato, il che lo rende adatto per i livelli generati proceduralmente o creati dall'utente, purché tutta la geometria sia generata in anticipo. Per i giochi in cui la geometria potrebbe essere generata in qualsiasi momento durante il gioco, SDFGI è più adatto (vedi Environment.sdfgi_enabled).

Prestazioni: VoxelGI è relativamente faticoso sulla GPU e non è adatto ad hardware di fascia bassa come la grafica integrata (considera invece LightmapGI). Per migliorare le prestazioni, regola ProjectSettings.rendering/global_illumination/voxel_gi/quality e abilita ProjectSettings.rendering/global_illumination/gi/use_half_resolution nelle Impostazioni del progetto. Per fornire alternative per hardware di fascia bassa, considera di aggiungere un'opzione per disabilitare i VoxelGI nei menù delle opzioni del tuo progetto. Un nodo VoxelGI può essere disabilitato nascondendolo.

Nota: Le mesh dovrebbero avere pareti abbastanza spesse per evitare perdite di luce (evita pareti unilaterali). Per i livelli interni, racchiudi la geometria del tuo livello in un riquadro abbastanza grande e collega le estremità per chiudere la mesh. Per evitare ulteriori perdite di luce, è inoltre possibile posizionare strategicamente dei nodi MeshInstance3D temporanei con i loro GeometryInstance3D.gi_mode impostati su GeometryInstance3D.GI_MODE_STATIC. È possibile poi nascondere questi nodi temporanei dopo aver precalcolato il nodo VoxelGI.

Tutorial

Proprietà

CameraAttributes

camera_attributes

VoxelGIData

data

Vector3

size

Vector3(20, 20, 20)

Subdiv

subdiv

1

Metodi

void

bake(from_node: Node = null, create_visual_debug: bool = false)

void

debug_bake()


Enumerazioni

enum Subdiv: 🔗

Subdiv SUBDIV_64 = 0

Utilizza 64 suddivisioni. Questa è l'impostazione di qualità più bassa, ma la più veloce. Utilizzala se è possibile, ma soprattutto utilizzarla su hardware di fascia bassa.

Subdiv SUBDIV_128 = 1

Utilizza 128 suddivisioni. Questa è l'impostazione di qualità predefinita.

Subdiv SUBDIV_256 = 2

Utilizza 256 suddivisioni.

Subdiv SUBDIV_512 = 3

Utilizza 512 suddivisioni. Questo è l'impostazione di qualità più alta, ma la più lenta. La GPU potrebbe rallentare su hardware di fascia bassa.

Subdiv SUBDIV_MAX = 4

Rappresenta la dimensione dell'enumerazione Subdiv.


Descrizioni delle proprietà

CameraAttributes camera_attributes 🔗

La risorsa CameraAttributes che specifica i livelli di esposizione per il precalcolo. Le proprietà per l'esposizione automatica e le altre proprietà non riguardanti l'esposizione saranno ignorate. Le impostazioni di esposizione dovrebbero essere usate per ridurre la gamma dinamica presente durante il precalcolo. Se l'esposizione è troppo alta, il VoxelGI avrà artefatti di fasciatura o potrebbe avere artefatti di sovraesposizione.


VoxelGIData data 🔗

La risorsa VoxelGIData che contiene i dati per questo VoxelGI.


Vector3 size = Vector3(20, 20, 20) 🔗

Le dimensioni della zona coperta dal VoxelGI. Deve essere 1.0 o più su ogni asse.

Nota: Se si aumentano le dimensioni senza anche aumentare le suddivisioni con subdiv, la dimensione di ogni cella aumenterà e risulterà in illuminazione meno dettagliata.


Subdiv subdiv = 1 🔗

Numero di volte per suddividere la griglia su cui opera il VoxelGI. Un numero elevato risulterà in dettagli più precisi e quindi una maggiore qualità visiva, mentre i numeri più bassi risulteranno in prestazioni migliori.


Descrizioni dei metodi

void bake(from_node: Node = null, create_visual_debug: bool = false) 🔗

Precalcola l'effetto da tutti i GeometryInstance3D segnati con GeometryInstance3D.GI_MODE_STATIC e i Light3D segnati con Light3D.BAKE_STATIC o Light3D.BAKE_DYNAMIC. Se create_visual_debug è true, dopo aver precalcolato la luce, questo metodo genererà un MultiMesh contenete un cubo che rappresenta ogni cella solida, con ogni cubo colorato con il colore albedo della cella. Ciò può essere utilizzato per visualizzare i dati del VoxelGI e fare il debug sugli eventuali problemi che potrebbero verificarsi.

Nota: bake() funziona dall'editor e nei progetti esportati. Questo lo rende adatto ai livelli generati proceduralmente o creati dall'utente. Per precalcolare un nodo VoxelGI generalmente ci vogliono dai 5 ai 20 secondi nella maggior parte delle scene. Ridurre subdiv può velocizzare la preparazione.

Nota: I nodi GeometryInstance3D e Light3D devono essere completamente pronti prima che bake() viene chiamato. Se questi nodi sono creati proceduralmente e mancano alcune mesh o luci dal VoxelGI precalcolato, usa call_deferred("bake") invece di chiamare bake() direttamente.


void debug_bake() 🔗

Chiama bake() con create_visual_debug abilitato.