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...
LightmapGI
Eredita: VisualInstance3D < Node3D < Node < Object
Calcola e memorizza lightmap elaborate per un'illuminazione globale rapida.
Descrizione
Il nodo LightmapGI serve per elaborare e memorizzare lightmap precalcolate. Le lightmap servono per fornire un'illuminazione indiretta di alta qualità con una minima perdita di luce. LightmapGI può anche fornire riflessi approssimativi attraverso armoniche sferiche se directional è abilitato. Gli oggetti dinamici possono ricevere illuminazione indiretta grazie alle sonde luminose, che si possono posizionare automaticamente impostando generate_probes_subdiv su un valore diverso da GENERATE_PROBES_DISABLED. È inoltre possibile aggiungere ulteriori sonde lightmap creando nodi LightmapProbe. Lo svantaggio è che le lightmap sono completamente statiche e non si possono precalcolare in un progetto esportato. Precalcolare un nodo LightmapGI è inoltre più lento rispetto a VoxelGI.
Generazione procedurale: La funzionalità di precalcolo di Lightmap è disponibile solo nell'editor. Ciò significa che LightmapGI non è adatto a livelli generati proceduralmente o creati dall'utente. Per livelli generati proceduralmente o creati dall'utente, utilizza invece VoxelGI o SDFGI (vedi Environment.sdfgi_enabled).
Prestazioni: LightmapGI fornisce le migliori prestazioni possibili in fase di esecuzione per l'illuminazione globale. È adatto per hardware di fascia bassa, tra cui schede grafiche integrate e dispositivi mobili.
Nota: A causa di come funzionano le lightmap, la maggior parte delle proprietà ha un effetto visibile solo una volta che le lightmap vengono nuovamente precalcolate.
Nota: Il precalcolo delle lightmap sui CSGShape3D e i PrimitiveMesh non è supportato, poiché non possono memorizzare i dati UV2 richiesti per il precalcolo.
Nota: Se non sono installati lightmapper personalizzati, LightmapGI può essere precalcolato solo da dispositivi che supportano i backend di rendering Forward+ o Mobile.
Nota: Il nodo LightmapGI precalcola solo i dati di luce per i nodi figlio del suo genitore. I nodi più in alto nella gerarchia della scena non verranno preparati.
Tutorial
Proprietà
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Enumerazioni
enum BakeQuality: 🔗
BakeQuality BAKE_QUALITY_LOW = 0
Qualità bassa di precalcolo (tempi più rapidi). La qualità di questo preset può essere regolata modificando ProjectSettings.rendering/lightmapping/bake_quality/low_quality_ray_count e ProjectSettings.rendering/lightmapping/bake_quality/low_quality_probe_ray_count.
BakeQuality BAKE_QUALITY_MEDIUM = 1
Qualità media di precalcolo (tempi rapidi). La qualità di questo preset può essere regolata modificando ProjectSettings.rendering/lightmapping/bake_quality/medium_quality_ray_count e ProjectSettings.rendering/lightmapping/bake_quality/medium_quality_probe_ray_count.
BakeQuality BAKE_QUALITY_HIGH = 2
Qualità alta di precalcolo (tempi lenti). La qualità di questo preset può essere regolata modificando ProjectSettings.rendering/lightmapping/bake_quality/high_quality_ray_count e ProjectSettings.rendering/lightmapping/bake_quality/high_quality_probe_ray_count.
BakeQuality BAKE_QUALITY_ULTRA = 3
Qualità più alta di precalcolo (tempi più lenti). La qualità di questo preset può essere regolata modificando ProjectSettings.rendering/lightmapping/bake_quality/ultra_quality_ray_count e ProjectSettings.rendering/lightmapping/bake_quality/ultra_quality_probe_ray_count.
enum GenerateProbes: 🔗
GenerateProbes GENERATE_PROBES_DISABLED = 0
Non generare sonde di lightmap per l'illuminazione di oggetti dinamici.
GenerateProbes GENERATE_PROBES_SUBDIV_4 = 1
Livello più basso di suddivisione (tempi di precalcolo più rapidi, dimensioni dei file più piccole).
GenerateProbes GENERATE_PROBES_SUBDIV_8 = 2
Livello basso di suddivisione (tempi di precalcolo rapidi, dimensioni dei file piccole).
GenerateProbes GENERATE_PROBES_SUBDIV_16 = 3
Livello alto di suddivisione (tempi di precalcolo lenti, dimensioni dei file grandi).
GenerateProbes GENERATE_PROBES_SUBDIV_32 = 4
Livello più alto di suddivisione (tempi di precalcolo più lenti, dimensioni dei file più grandi).
enum BakeError: 🔗
BakeError BAKE_ERROR_OK = 0
La preparazione della Lightmap è avvenuta con successo.
BakeError BAKE_ERROR_NO_SCENE_ROOT = 1
La preparazione della lightmap non è riuscita perché non è stato possibile accedere al nodo radice della scena modificata.
BakeError BAKE_ERROR_FOREIGN_DATA = 2
La preparazione della lightmap non è riuscita perché la risorsa dati della lightmap è incorporata in una risorsa esterna.
BakeError BAKE_ERROR_NO_LIGHTMAPPER = 3
La preparazione della lightmap non è riuscita perché nessun lightmapper è disponibile in questa build di Godot.
BakeError BAKE_ERROR_NO_SAVE_PATH = 4
La preparazione della Lightmap non è riuscita perché il percorso di salvataggio del LightmapGIData non è configurato nella risorsa.
BakeError BAKE_ERROR_NO_MESHES = 5
La preparazione della lightmap non è riuscita perché non ci sono mesh il cui GeometryInstance3D.gi_mode è GeometryInstance3D.GI_MODE_STATIC e con una valida mappatura UV2 nella scena attuale. Potrebbe essere necessario selezionare scene 3D nel pannello di importazione e modificare dunque la loro modalità di illuminazione globale.
BakeError BAKE_ERROR_MESHES_INVALID = 6
La preparazione della lightmap non è riuscita perché il lightmapper non è riuscito ad analizzare alcune delle mesh contrassegnate come statiche per la preparazione.
BakeError BAKE_ERROR_CANT_CREATE_IMAGE = 7
La preparazione della lightmap non è riuscita perché l'immagine risultante non poteva essere salvata o importata da Godot dopo il salvataggio.
BakeError BAKE_ERROR_USER_ABORTED = 8
L'utente ha interrotto l'operazione di preparazione della lightmap (in genere cliccando sul pulsante Annulla nella finestra di dialogo del progresso).
BakeError BAKE_ERROR_TEXTURE_SIZE_TOO_SMALL = 9
La preparazione della lightmap non è riuscita perché le dimensioni massime della texture sono troppo piccole per adattarsi ad alcune delle mesh contrassegnate per la preparazione.
BakeError BAKE_ERROR_LIGHTMAP_TOO_SMALL = 10
La preparazione della lightmap non è riuscita perché la lightmap è troppo piccola.
BakeError BAKE_ERROR_ATLAS_TOO_SMALL = 11
La preparazione della lightmap non è riuscita perché non è stato possibile inserire la lightmap in un atlante.
enum EnvironmentMode: 🔗
EnvironmentMode ENVIRONMENT_MODE_DISABLED = 0
Ignora l'illuminazione ambientale durante la preparazione delle lightmap.
EnvironmentMode ENVIRONMENT_MODE_SCENE = 1
Usa l'illuminazione ambientale della scena durante la preparazione delle lightmap.
Nota: Se le lightmap sono calcolate in una scena senza nodo WorldEnvironment, questo agirà come ENVIRONMENT_MODE_DISABLED. Il cielo e il sole di anteprima dell'editor non sono considerati da LightmapGI durante la preparazione delle lightmap.
EnvironmentMode ENVIRONMENT_MODE_CUSTOM_SKY = 2
Utilizza environment_custom_sky come sorgente di illuminazione ambientale durante la preparazione delle lightmap.
EnvironmentMode ENVIRONMENT_MODE_CUSTOM_COLOR = 3
Utilizza environment_custom_color moltiplicato per environment_custom_energy come sorgente costante di illuminazione ambientale durante la preparazione delle lightmap.
Descrizioni delle proprietà
Il bias da usare quando si calcolano le ombre. Aumentare bias può correggere l'acne delle ombre sulla lightmap precalcolata risultante, ma può introdurre peter-panning (ombre che non si collegano alle loro sorgenti). Le ombre Light3D in tempo reale non sono influenzate dal bias.
float bounce_indirect_energy = 1.0 🔗
Il moltiplicatore di energia per ogni rimbalzo. Valori più alti renderanno l'illuminazione indiretta più luminosa. Un valore di 1.0 rappresenta un comportamento fisicamente accurato, ma aumentando questo valore assicura che l'illuminazione indiretta si propaghi più visibilmente quando si utilizza un basso numero di rimbalzi. Ciò può essere utilizzato per velocizzare i tempi di precalcolo riducendo il numero di bounces e aumentando bounce_indirect_energy.
Nota: bounce_indirect_energy ha effetto solo se bounces è impostato su un valore maggiore o uguale a 1.
Numero di rimbalzi di luce presi in considerazione durante il precalcolo. Valori più alti risultano in un'illuminazione più luminosa e realistica, a scapito di tempi di precalcolo più lunghi. Se impostato su 0, sono precalcolate solo l'illuminazione ambientale, la luce diretta e l'illuminazione emissiva.
CameraAttributes camera_attributes 🔗
void set_camera_attributes(value: CameraAttributes)
CameraAttributes get_camera_attributes()
La risorsa CameraAttributes che specifica i livelli di esposizione a cui precalcolare. Saranno ignorate le proprietà che non riguardano l'esposizione e l'esposizione automatica. Le impostazioni di esposizione dovrebbero essere utilizzate per ridurre la gamma dinamica presente durante il precalcolo. Se l'esposizione è troppo alta, LightmapGI avrà artefatti di banding o potrebbe avere artefatti di sovraesposizione.
La distanza in pixel da cui il denoiser effettua il campionamento. Valori più bassi preservano più dettagli, ma possono dare risultati macchiati se la qualità della lightmap non è abbastanza alta. Efficace solo se use_denoiser è true e ProjectSettings.rendering/lightmapping/denoising/denoiser è impostato su JNLM.
float denoiser_strength = 0.1 🔗
L'intensità del passaggio di rimozione del rumore applicato alle lightmap generate. Efficace solo se use_denoiser è true e ProjectSettings.rendering/lightmapping/denoising/denoiser è impostato su JNLM.
Se true, precalcola le lightmap per contenere informazioni direzionali come armoniche sferiche. Ciò si traduce in un aspetto di illuminazione più realistico, specialmente con materiali mappati con normali e per luci che hanno la loro luce diretta precalcolata (Light3D.light_bake_mode impostato su Light3D.BAKE_STATIC e con Light3D.editor_only impostato su false). Le informazioni direzionali sono anche utilizzate per fornire riflessi approssimativi per oggetti statici e dinamici. Ciò ha un piccolo costo sulle prestazioni in fase di esecuzione poiché lo shader deve eseguire più lavoro per interpretare le informazioni di direzione dalla lightmap. Le lightmap direzionali richiedono anche più tempo per essere precalcolate e risultano in file più grandi.
Nota: Il nome della proprietà non ha alcuna relazione con DirectionalLight3D. directional funziona con tutti i tipi di luce.
Color environment_custom_color = Color(1, 1, 1, 1) 🔗
Il colore da usare per l'illuminazione ambientale. Efficace solo se environment_mode è ENVIRONMENT_MODE_CUSTOM_COLOR.
float environment_custom_energy = 1.0 🔗
Il moltiplicatore per il colore da usare per l'illuminazione ambientale. Efficace solo se environment_mode è ENVIRONMENT_MODE_CUSTOM_COLOR.
Il cielo da usare come sorgente dell'illuminazione ambientale. Efficace solo se environment_mode è ENVIRONMENT_MODE_CUSTOM_COLOR.
EnvironmentMode environment_mode = 1 🔗
void set_environment_mode(value: EnvironmentMode)
EnvironmentMode get_environment_mode()
La modalità ambientale da utilizzare durante la preparazione delle lightmap.
GenerateProbes generate_probes_subdiv = 2 🔗
void set_generate_probes(value: GenerateProbes)
GenerateProbes get_generate_probes()
Livello di suddivisione da utilizzare quando si generano automaticamente i LightmapProbe per l'illuminazione dinamica degli oggetti. Valori più alti risultano in un'illuminazione indiretta più accurata sugli oggetti dinamici, a costo di tempi di precalcolo più lunghi e file più grandi.
Nota: I LightmapProbe generati automaticamente non sono visibili come nodi nel pannello dell'albero di scene e non possono essere modificati in questo modo dopo essere stati generati.
Nota: A prescindere da generate_probes_subdiv, l'illuminazione diretta sugli oggetti dinamici è sempre applicata attraverso i nodi Light3D in tempo reale.
Se true, ignora l'illuminazione dell'ambiente durante l'elaborazione delle lightmap.
LightmapGIData light_data 🔗
void set_light_data(value: LightmapGIData)
LightmapGIData get_light_data()
Il LightmapGIData associato a questo nodo LightmapGI. Questa risorsa viene creata automaticamente dopo il precalcolo e non si dovrebbe creare manualmente.
int max_texture_size = 16384 🔗
Le dimensioni massime della texture per l'atlante generato per le texture. Valori più alti risultano in meno sezioni generate, ma potrebbero non funzionare su tutti gli hardware a causa delle limitazioni hardware sulle dimensioni delle texture. Lascia max_texture_size al suo valore predefinito di 16384 se non sei sicuro.
BakeQuality quality = 1 🔗
void set_bake_quality(value: BakeQuality)
BakeQuality get_bake_quality()
Il modello di qualità da usare quando si precalcolano le lightmap. Ciò influisce sui tempi di preparazione, ma le dimensioni dei file risultanti rimangono per lo più identiche tra i vari livelli di qualità.
Per velocizzare ulteriormente i tempi di preparazione, diminuisci bounces, disattiva use_denoiser e aumenta le dimensioni dei texel della lightmap nelle scene 3D nel pannello d'Importazione.
Per aumentare ulteriormente la qualità, abilita supersampling e/o aumenta texel_scale.
ShadowmaskMode shadowmask_mode = 0 🔗
void set_shadowmask_mode(value: ShadowmaskMode)
ShadowmaskMode get_shadowmask_mode()
Sperimentale: Questa proprietà potrebbe essere cambiata o rimossa in versioni future.
Il criterio di shadowmasking da usare per le ombre direzionali sugli oggetti statici che sono calcolati con questa istanza di LightmapGI.
La shadowmasking consente ai nodi DirectionalLight3D di proiettare ombre anche al di fuori del campo definito dalla loro proprietà DirectionalLight3D.directional_shadow_max_distance. Ciò viene effettuato calcolando una texture che contiene una shadowmap per la luce direzionale, quindi utilizzando questa texture in base alla modalità di shadowmasking attuale.
Nota: La texture di shadowmask viene creata solo se shadowmask_mode non è LightmapGIData.SHADOWMASK_MODE_NONE. Per notare la differenza, è necessario elaborare nuovamente le lightmap dopo essere passati da LightmapGIData.SHADOWMASK_MODE_NONE a qualsiasi altra modalità.
Se true, le lightmap vengono preparate con la loro scala dei texel moltiplicata per supersampling_factor e sottocampionate prima di salvare la lightmap (quindi la densità effettiva dei texel è identica a quella ottenuta con il sovracampionamento disabilitato).
Il sovracampionamento migliora la qualità della lightmap con meno rumore, rende le ombre più uniformi e migliora l'ombreggiatura per i piccoli dettagli negli oggetti. Tuttavia, potrebbe comportare un aumento significativo dei tempi di preparazione e dell'utilizzo di memoria durante la preparazione delle lightmap. Il padding è regolato automaticamente per evitare di aumentare le perdite di luce.
float supersampling_factor = 2.0 🔗
Il fattore per cui la densità dei texel viene moltiplicata per il sovracampionamento. Per risultati ottimali, utilizza un valore intero. Sebbene siano consentiti valori frazionari, questi possono aumentare le perdite di luce e sfocare la lightmap.
Valori più elevati potrebbero risultare in una migliore qualità, ma potrebbero anche aumentare i tempi di preparazione e l'utilizzo di memoria durante la preparazione.
Vedi supersampling per ulteriori informazioni.
Scala la densità dei texel della lightmap di tutte le mesh per il precalcolo attuale. Questo è un moltiplicatore che si basa sulle dimensioni dei texel della lightmap esistente definita in ogni scena 3D importata, insieme al moltiplicatore di densità per mesh (che è progettato per quando la stessa mesh viene utilizzata a scale diverse). Valori più bassi risulteranno in tempi di precalcolo più rapidi.
Ad esempio, raddoppiando texel_scale si raddoppia la risoluzione della texture lightmap per tutti gli oggetti su ciascun asse, quindi quadruplicherà il conteggio dei texel.
Se true, utilizza un algoritmo di rimozione del rumore basato su GPU sulla lightmap generata. Questo elimina la maggior parte del rumore all'interno della lightmap generata al costo di tempi di precalcolo più lunghi. Le dimensioni dei file in genere non sono influenzate in modo notevole dall'uso di un denoiser, tuttavia la compressione senza perdita di dati potrebbe comprimere meglio un'immagine con il rumore rimosso.
bool use_texture_for_bounces = true 🔗
Se true, sarà generata una texture con le informazioni di illuminazione per velocizzare la generazione dell'illuminazione indiretta a scapito di accuratezza. La geometria potrebbe presentare ulteriori artefatti di perdita di luce quando si usano lightmap a bassa risoluzione o UV che allungano notevolmente la lightmap sulle superfici. Lascia use_texture_for_bounces al suo valore predefinito di true se non sei sicuro.
Nota: use_texture_for_bounces ha effetto solo se bounces è impostato su un valore maggiore o uguale a 1.