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.

Ambiente e post-elaborazione

Godot 4 offre una risorsa Environment riprogettata, oltre a un nuovo sistema di post-elaborazione con numerosi effetti disponibili pronti all'uso.

Nota

A partire da Godot 4, le impostazioni di prestazioni/qualità dell'ambiente sono definite nelle impostazioni del progetto anziché nella risorsa Environment. Ciò rende più facile fare ritocchi globali, poiché non è più necessario ritoccare singolarmente le risorse Environment per adattarle alle diverse configurazioni hardware.

Tieni presente che la maggior parte delle impostazioni relative alle prestazioni/qualità di Environment sono visibili solo dopo aver attivato l'opzione Avanzate nelle Impostazioni del progetto.

Ambiente

La risorsa Environment memorizza tutte le informazioni necessarie per controllare l'ambiente di rendering 2D e 3D. Include il cielo, l'illuminazione ambientale, la mappatura dei toni, gli effetti e i ritocchi. Di per sé non fa nulla, ma è possibile abilitarla utilizzandola in una delle seguenti posizioni, in ordine di priorità:

Nodo Camera3D (massima priorità)

È possibile impostare un Environment su un nodo Camera3D. Avrà la priorità su qualsiasi altra impostazione.

../../_images/environment_camera.webp

È utile soprattutto quando si desidera sovrascrivere un ambiente esistente, ma in generale è preferibile utilizzare l'opzione seguente.

Ambiente e sole in anteprima (minima priorità)

Nota

A partire da Godot 4, il sistema dell'anteprima per l'ambiente e sole sostituiscono il file default_env.tres utilizzato nei progetti Godot 3.

Se nessun nodo WorldEnvironment o DirectionalLight3D è presente nella scena attuale, l'editor visualizzerà un'anteprima dell'ambiente e del sole. Si può disabilitare tramite i pulsanti in cima l'editor 3D:

../../_images/environment_preview_sun_sky_toggle.webp

Cliccando sui 3 puntini verticali a destra apparirà una finestra di dialogo che consente di personalizzare l'aspetto dell'ambiente di anteprima:

../../_images/environment_preview_sun_sky_dialog.webp

L'anteprima del sole e del cielo è visibile solo nell'editor, non nel progetto in esecuzione. Attraverso i pulsanti in fondo la finestra di dialogo, è possibile aggiungere l'anteprima del sole e del cielo nella scena come nodi.

Suggerimento

Tenendo premuto Shift mentre si clicca su Aggiungi sole alla scena o Aggiungi ambiente alla scena nell'editor dell'anteprima dell'ambiente, verranno aggiunti entrambi il sole e l'ambiente di anteprima alla scena attuale (come se avessi cliccato su entrambi i pulsanti separatamente). Usa questa funzione per velocizzare la configurazione e la prototipazione del progetto.

Attributi di telecamera

Nota

In Godot 4, le informazioni sull'esposizione e sulla profondità di campo sono state separate dalla risorsa Environment e inserite in una propria risorsa CameraAttributes. Ciò consente di regolare più facilmente tali proprietà indipendentemente dalle altre impostazioni di Environment.

La risorsa CameraAttributes memorizza le informazioni sull'esposizione e sulla profondità di campo. Consente inoltre di abilitare la regolazione automatica dell'esposizione in base alla luminosità della scena.

Sono disponibili due tipi di risorse CameraAttribute:

  • CameraAttributesPractical: le funzionalità sono esposte usando unità arbitrarie, che sono più facili da interpretare in gran parte dei casi nei giochi.

  • CameraAttributesPhysical: le funzionalità sono esposte usando unità di misura reali, in modo simile a una telecamera digitale. Ad esempio, il campo visivo viene impostato usando una lunghezza focale in millimetri anziché un valore in gradi. Consigliato quando la precisione fisica è importante, ad esempio per un rendering fotorealistico.

Entrambi i tipi di risorsa CameraAttribute consentono di utilizzare le stesse funzionalità, ma sono configurati diversamente. Se non sai quale scegliere, usa CameraAttributesPractical.

Nota

Utilizzare un CameraAttributesPhysical su un nodo Camera3D bloccherà le regolazioni del campo visivo e dell'aspetto in quella Camera3D, poiché il campo visivo viene regolato nella risorsa CameraAttributesPhysical. Se utilizzato in un WorldEnvironment, CameraAttributesPhysical non sovrascriverà alcuna Camera3D nella scena.

È possibile aggiungere una risorsa CameraAttributes a un nodo Camera3D o WorldEnvironment. Quando la telecamera attuale ha un CameraAttributes impostato, questo sovrascriverà quello impostato in WorldEnvironment (se presente).

Perlopiù delle volte, si consiglia di impostare la risorsa CameraAttributes sul nodo Camera3D anziché su WorldEnvironment. A differenza di WorldEnvironment, assegnare la risorsa CameraAttributes al nodo Camera3D impedisce di mostrare la profondità di campo nella viewport dell'editor 3D, a meno che la telecamera non sia in anteprima.

Opzioni di ambiente

Di seguito è fornita una descrizione dettagliata di tutte le opzioni dell'ambiente e come utilizzarle.

Sfondo

La sezione Background contiene le impostazioni su come riempire lo sfondo (le parti dello schermo in cui non sono stati disegnati oggetti). Lo sfondo non serve solo a visualizzare un'immagine o un colore. Normalmente, influisce anche sul modo in cui gli oggetti sono influenzati dalla luce ambientale e riflessa. Ciò è detto image-based lighting (IBL).

Pertanto, lo sfondo del cielo può influenzare molto l'aspetto generale della scena, anche se non è mai direttamente visibile sullo schermo. Va tenuto in considerazione quando si regola l'illuminazione della scena.

../../_images/environment_background1.webp

Sono disponibili diverse modalità di sfondo:

  • Clear Color utilizza il colore di cancellazione predefinito, definito nelle impostazioni del progetto. Lo sfondo avrà un colore costante.

  • Custom Color è simile a Clear Color, ma con un valore di colore personalizzato.

  • Sky consente di definire un materiale per il cielo di sfondo (vedi sotto). Normalmente, gli oggetti nella scena rifletteranno questo materiale e assorbiranno la luce ambientale da esso.

  • Canvas visualizza la scena 2D come sfondo della scena 3D. Questo può servire per rendere visibili gli effetti ambientali nel rendering 2D, come ad esempio il bagliore in 2D.

  • Keep non disegna il cielo, mantenendo invece il contenuto presente nei frame precedenti. Questo migliora le prestazioni nelle scene ambientate esclusivamente in interni, ma crea un glitch visivo, in stile "sala degli specchi", se il cielo è visibile in qualsiasi momento.

  • Camera Feed visualizza un CameraFeed proveniente da una fotocamera fisica come sfondo, utile per i giochi AR sui dispositivi mobili.

Materiali di cielo

Quando si utilizza la modalità di sfondo Sky (o quando la modalità luce ambientale/riflessa è impostata su Sky), una sotto-risorsa Sky diventa disponibile per la modifica nella risorsa Environment. Modificare questa sotto-risorsa consente di creare una risorsa SkyMaterial all'interno dello Sky.

Esistono 3 materiali integrati per il cielo tra cui scegliere:

  • PanoramaSkyMaterial: utilizza un'immagine panoramica di cielo a 360 gradi (rapporto d'aspetto 2:1 consigliato). Per sfruttare al meglio l'ampia gamma dinamica, l'immagine panoramica deve essere in un formato compatibile con HDR come .hdr o .exr anziché in un formato standard a gamma dinamica come .png o .jpg.

  • ProceduralSkyMaterial: utilizza un cielo generato proceduralmente con colori di terreno, sole, cielo e orizzonte regolabili. Questo è il tipo di cielo utilizzato nell'anteprima dell'editor. La posizione del sole viene derivata automaticamente dai primi 4 nodi DirectionalLight3D presenti nella scena. Possono esserci fino a 4 soli alla volta.

  • PhysicalSkyMaterial: utilizza un cielo procedurale basato sulla fisica con parametri di scattering regolabili. La posizione del sole viene derivata automaticamente dal primo nodo DirectionalLight3D presente nella scena. Renderizzare un PhysicalSkyMaterial è leggermente più costoso rispetto a ProceduralSkyMaterial. Può esserci fino a 1 sole alla volta.

Le immagini panoramiche di cielo sono talvolta chiamate HDRI (High Dynamic Range Images). Puoi trovare immagini HDRI con licenza gratuita su Poly Haven.

Nota

HDR PanoramaSkyMaterial textures with very bright spots (such as real life photos with the sun visible) may result in visible sparkles on ambient and specular reflections. This is caused by the texture's peak exposure being too high.

Per risolvere il problema, seleziona la texture panoramica nel pannello Filesystem, vai al pannello Importazione, abilita HDR Clamp Exposure e poi clicca su Reimporta.

Se hai bisogno di un materiale personalizzato per il cielo (ad esempio per nuvole procedurali), puoi creare uno shader personalizzato per il cielo.

Luce ambientale

Ambient light (as defined here) is a type of light that affects every piece of geometry with the same intensity. It is global and independent of lights that might be added to the scene. Ambient light is one of the two components of image-based lighting. Unlike reflected light, ambient light does not vary depending on the camera's position and viewing angle.

Esistono diversi tipi di luce ambientale tra cui scegliere:

  • Background: deriva la luce ambientale dallo sfondo, come il cielo, un colore personalizzato o il colore di cancellazione (predefinito). L'intensità della luce ambientale varierà a seconda del contenuto dell'immagine del cielo, il che può produrre un'illuminazione ambientale visivamente più gradevole. Affinché questa modalità funzioni bisogna impostare un cielo come sfondo.

  • Disabled: non utilizzare alcuna luce ambientale. Utile per scene esclusivamente in interni.

  • Colore: utilizza un colore costante per la luce ambientale, ignorando il cielo di sfondo. L'intensità della luce ambientale sarà la stessa su tutti i lati, il che potrebbe rendere l'illuminazione della scena più piatta. Utile per scene interne in cui le ombre completamente nere potrebbero apparire troppo scure, o per massimizzare le prestazioni sui dispositivi di fascia bassa.

  • Sky: Deriva la luce ambientale dal cielo specificato, anche se lo sfondo è impostato su una modalità diversa da Sky. Se la modalità di sfondo è già Sky, questa modalità si comporta in modo identico a Background.

Quando la modalità di luce ambientale è impostata su Sky o Background (e lo sfondo è impostato su Sky), è possibile fondere il colore ambientale e il cielo attraverso la proprietà Sky Contribution. Questo valore è impostato su 1.0 normalmente, il che significa che solo il cielo ambientale viene utilizzato. Il colore ambientale è ignorato a meno che Sky Contribution non sia minore di 1.0.

Ecco un confronto di come diverse luci ambientali influenzano una scena:

../../_images/environment_ambient2.webp

Infine, c'è l'impostazione Energia, che è un moltiplicatore. È utile quando si lavora con l'HDR.

In generale, dovresti affidarti esclusivamente alla luce ambientale per scene semplici o ampi esterni. Puoi fare così anche per migliorare le prestazioni. La luce ambientale è veloce da renderizzare, ma non offre la migliore qualità di illuminazione. È meglio generare la luce ambientale da ReflectionProbe, VoxelGI o SDFGI, poiché questi simulano con maggiore precisione il modo in cui la luce indiretta si propaga. Di seguito è riportato un confronto, in termini di qualità, tra l'uso di un colore ambientale piatto e di un VoxelGI:

../../_images/environment_ambient_comparison.webp

Utilizzando uno dei metodi descritti sopra, l'illuminazione ambientale costante sarà sostituita dall'illuminazione ambientale delle sonde.

Luce riflessa

La luce riflessa (detta anche luce speculare) è l'altro dei due componenti dell'illuminazione basata sulle immagini.

È possibile impostare la luce riflessa su una tra 3 modalità:

  • Background: rifletti dallo sfondo, come il cielo, un colore personalizzato o il colore di cancellazione (predefinito).

  • Disabled: non riflette proprio la luce dall'ambiente. Utile per scene esclusivamente in interni o per massimizzare le prestazioni sui dispositivi di fascia bassa.

  • Sky: riflette lo sfondo del cielo, anche se lo sfondo è impostato su una modalità diversa da Sky. Se la modalità di sfondo è già Sky, questa modalità si comporta in modo identico a Background.

Mappa dei toni

Tonemap sceglie l'algoritmo di mappatura dei toni da applicare alla scena, scegliendolo da un elenco di algoritmi standard utilizzati nell'industria cinematografica e dei videogiochi. Le modalità di mappatura diverse da Linear servono per rendere più omogenee le aree chiare e scure, evitando al contempo il clipping delle alte luci. Ogni algoritmo ha diverse caratteristiche prestazionali da considerare per scegliere appropriatamente.

Le opzioni di mappatura dei toni sono:

  • Mode: La modalità di mappatura dei toni da utilizzare.

    • Lineare: mon modifica i dati di colore, risultando in una curva lineare di mappatura dei toni che satura innaturalmente i valori luminosi, rendendo le luci luminose molto sovraesposte. La mappatura dei toni più semplice e veloce.

    • Reinhard: Una semplice curva di mappatura dei toni che attenua i valori luminosi per evitare il clipping. Il risultato è un'immagine che può apparire opaca e a basso contrasto. Più lento di Linear. Quando White è lasciato al valore predefinito di 1.0, Reinhard produce un'immagine identica a Linear.

    • Filmic: utilizza una curva di mappatura dei toni simile a quella di una pellicola per impedire il clipping dei valori luminosi e fornire un contrasto migliore rispetto a Reinhard. Leggermente più lento di Reinhard.

    • ACES: utilizza una curva di mappatura dei toni ad alto contrasto simile a quella di un film e desatura i valori luminosi per un aspetto più realistico. Leggermente più lento di Filmic.

    • AgX: utilizza una curva di mappatura dei toni simile a quella di una pellicola e desatura i valori brillanti per un aspetto più realistico. Meglio di altri mappatori dei toni nel mantenere la tonalità dei colori mentre diventano più brillanti. L'opzione di mappatura dei toni più lenta.

  • Exposure: Regola la luminosità dei valori prima che vengano forniti al mappatore dei toni. Valori di Exposure più alti producono un'immagine più luminosa. I valori forniti al mappatore saranno inoltre moltiplicati per 2.0 e 1.8 rispettivamente per Film e ACES per produrre una luminosità apparente simile a Linear.

  • White: Il valore di riferimento bianco per la mappatura dei toni (detto anche "punto di bianco"), che indica dove si trova il bianco brillante nella scala di valori forniti al mappatore dei toni. Per l'illuminazione fotorealistica, i valori consigliati sono compresi tra 6.0 e 8.0. Valori più alti rendono i valori chiari più spenti, ma potrebbero far apparire la scena meno contrastata. White non è disponibile quando si utilizza Linear. Se si utilizza AgX, il renderer mobile, e HDR 2D è disabilitato, il valore impostato qui verrà ignorato e verrà utilizzato un valore di 2.0 al suo posto.

  • AGX Contrast: disponibile solo quando si utilizza AgX. Aumentandolo renderà i valori scuri più scuri, e i valori chiari più chiari. Porta migliori risultati rispetto all'opzione di contrasto nella sezione di regolazione, senza alcun impatto in più sulle prestazioni.

Effetti di media e post-elaborazione

La risorsa Environment supporta molti effetti di media e post-elaborazione conosciuti.

Nota

Gli effetti nello spazio dello schermo come SSR, SSAO, SSIL e il bagliore non agiscono sulla geometria che si trova fuori dal campo visivo della telecamera o che è occlusa da altra geometria opaca. Tienilo a mente quando regoli le loro impostazioni per evitare cambiamenti fastidiosi durante il gioco.

Riflessi nello spazio dello schermo (SSR)

Questa funzionalità è disponibile solo quando si utilizza il renderer Forward+, non Mobile o Compatibilità.

Sebbene Godot supporti diverse sorgenti dati per i riflessi, come ad esempio Sonde di riflessi, queste potrebbero non fornire abbastanza dettagli per tutte le situazioni. Gli scenari in cui i riflessi nello spazio dello schermo risultano più appropriati sono quelli in cui gli oggetti sono a contatto tra loro (oggetto sopra il pavimento, sopra un tavolo, galleggiante sull'acqua, ecc.).

../../_images/environment_ssr.webp

Oltre a fornire maggiori dettagli, i riflessi nello spazio dello schermo funzionano anche in tempo reale (mentre altri tipi di riflessi sono solitamente precalcolati). Questo può servire per far riflettere personaggi, automobili, ecc. sulle superfici circostanti mentre si muovono.

I riflessi nello spazio dello schermo si possono usare allo stesso tempo di altre sorgenti di riflessi, per avere riflessi dettagliati quando possibile, e avendo anche un'alternativa quando i riflessi nello spazio dello schermo non si possono usare (ad esempio, per riflettere oggetti fuori dallo schermo).

Sono disponibili alcuni parametri controllabili dall'utente per aggiustare meglio la tecnica:

  • Max Steps: determina la lunghezza massima della riflessione. Maggiore è questo numero, più costoso sarà da calcolare.

  • *Fade In: consente di regolare la curva di dissolvenza in entrata, utile per rendere più sfumata l'area di contatto.

  • Fade Out: consente di regolare la curva di dissolvenza in uscita, in modo che il limite di passaggi si attenui gradualmente.

  • Depth Tolerance: può servire per consentire ai raggi nello spazio dello schermo di passare dietro gli oggetti. I raggi tratteranno ciascun oggetto come se avesse questa profondità per determinare se possono passare dietro di esso. Valori più alti faranno apparire i riflessi nello spazio dello schermo con meno "interruzioni", a scapito di creare riflessi fisicamente sbagliati per alcuni oggetti.

Inoltre, è possibile regolare la qualità dell'SSR nelle impostazioni del progetto con Rendering > Environment > Screen Space Reflection > Half Size. Come predefinito, i riflessi nello spazio dello schermo sono renderizzati a metà risoluzione per motivi di prestazioni. Disabilitando questa impostazione, l'effetto sarà renderizzato a piena risoluzione, migliorando la qualità a scapito di un maggiore utilizzo della GPU.

Nota

Ricorda che i riflessi nello spazio dello schermo funzionano solo per riflettere le geometrie opache. I materiali trasparenti non saranno riflessi, poiché non scrivono nel buffer di profondità. Questo vale anche per gli shader che utilizzano le uniformi hint_screen_texture o hint_depth_texture.

Occlusione ambientale nello spazio dello schermo (SSAO)

Questa funzionalità è disponibile solo se si utilizzano i renderer Forward+ e Compatibilità, non Mobile.

Come accennato nella sezione Ambient, le aree non illuminate dai nodi luce (perché fuori dalla loro portata o in ombra) sono illuminate con una luce ambientale. Godot la può simulare tramite VoxelGI, ReflectionProbe, Sky o un colore ambientale costante. Il problema, però, è che tutti i metodi proposti in precedenza agiscono più su larga scala (grandi regioni) che a livello di geometria più piccola.

Il colore ambientale costante e il cielo sono gli stessi ovunque, mentre le sonde GI e Reflection hanno maggiori dettagli locali, ma non abbastanza per simulare situazioni in cui la luce non riesce a riempire gli elementi vuoti o concavi.

Questo si può simulare con l'occlusione ambientale nello spazio dello schermo. Come puoi vedere nell'immagine sottostante, il suo scopo è quello di rendere le aree concave più scure, simulando un percorso più stretto in cui passa la luce:

../../_images/environment_ssao.webp

È un errore comune abilitare questo effetto, accendere una luce e poi non riuscire ad apprezzarlo. Questo perché l'SSAO agisce solo sulla luce ambientale. Non influisce sulla luce diretta.

Ecco perché, nell'immagine qui sopra, l'effetto è meno evidente sotto la luce diretta (a sinistra). Se vuoi forzare l'SSAO a funzionare anche con la luce diretta, usa il parametro Light Affect. Sebbene non sia fisicamente corretto, ad alcuni artisti piace questo aspetto.

SSAO appare al meglio se combinato con una vera fonte di luce indiretta, come VoxelGI:

../../_images/environment_ssao2.webp

È possibile regolare l'SSAO tramite diversi parametri:

../../_images/environment_ssao_parameters.webp
  • Raggio: la distanza alla quale gli oggetti possono occludersi a vicenda durante il calcolo dell'occlusione ambientale nello spazio dello schermo. Valori più elevati risulteranno in un'occlusione su una distanza maggiore, a scapito delle prestazioni e della qualità.

  • Intensitày l'intensità primaria dell'occlusione ambientale nello spazio dello schermo. Agisce come un moltiplicatore per questo effetto. Un valore più alto risulta in un'occlusione più scura. Poiché l'SSAO è un effetto nello spazio dello schermo, si consiglia di essere prudenti con questo valore. Un SSAO troppo intenso può essere fastidioso durante il gioco.

  • Power: la distribuzione dell'occlusione. Un valore più alto risulta in un'occlusione più scura, simile a 'Intensity, ma con una sfumatura più netta.

  • Detail: imposta l'intensità del livello di dettaglio aggiuntivo per l'effetto di occlusione ambientale nello spazio dello schermo. Un valore alto rende il passaggio di dettaglio più evidente, ma potrebbe contribuire all'aliasing nell'immagine finale.

  • Horizon: la soglia per considerare se un determinato punto su una superficie è occluso o no, rappresentato come un angolo dall'orizzonte mappato nell'intervallo 0,0-1,0. Un valore di 1,0 risulta in nessuna occlusione.

  • Sharpness: la quantità di sfocatura sui bordi degli oggetti per l'effetto di occlusione ambientale nello spazio dello schermo. Un valore troppo alto farà comparire aliasing attorno ai bordi degli oggetti. Un valore troppo basso renderà i bordi degli oggetti sfocati.

  • Light Affect: l'intensità dell'occlusione ambientale nello spazio dello schermo, sotto la luce diretta. Nella vita reale, l'occlusione ambientale si applica solo alla luce indiretta, il che significa che i suoi effetti non si possono vedere sotto la luce diretta. Valori più alti di 0 renderanno visibile l'effetto SSAO sotto la luce diretta. Valori più alti di 0.0 non sono fisicamente accurati, ma alcuni artisti lo preferiscono così.

  • AO Channel Affect l'intensità dell'occlusione ambientale nello spazio dello schermo sui materiali che hanno una texture di AO definita. Valori superiori a 0.0 renderanno visibile l'effetto SSAO nelle aree oscurate dalle texture di AO.

Inoltre, è possibile regolare la qualità dell'SSAO nella sezione Rendering > Environment > SSAO delle impostazioni del progetto:

  • Quality: Sets the quality of the screen-space ambient occlusion effect. Higher values take more samples and so will result in better quality, at the cost of performance. Setting this to Ultra will use the Adaptive Target setting (see below).

  • Half Size: se true, l'occlusione ambientale nello spazio dello schermo sarà renderizzata a metà dimensioni e poi ingrandita prima di essere aggiunta alla scena. Questo è significativamente più veloce, ma potrebbe non includere piccoli dettagli. Se false, l'occlusione ambientale nello spazio dello schermo sarà renderizzata a piene dimensioni.

  • Adaptive Target: obiettivo di qualità da usare quando Quality è impostato su Ultra. Un valore di 0.0 offre una qualità e una velocità simili a quelle di Medium, mentre un valore di 1.0 offre una qualità molto più elevata rispetto a qualsiasi altra impostazione, a scapito delle prestazioni.

  • Blur Passes: il numero di passaggi di sfocatura da usare per calcolare l'occlusione ambientale nello spazio dello schermo. Un numero più alto produrrà un aspetto più fluido, ma sarà più lento da calcolare e avrà meno dettagli ad alta frequenza.

  • Fadeout From: distanza alla quale l'effetto di occlusione ambientale nello spazio dello schermo inizia a svanire. Usa questa per nascondere l'occlusione ambientale da lontano.

  • Fadeout To: distanza alla quale l'occlusione ambientale nello spazio sullo schermo svanisce totalmente. Usa questa per nascondere l'occlusione ambientale da lontano.

Nota

A partire da Godot 4.6, è disponibile una versione semplificata dell'SSAO nel renderer Compatibilità. Questa implementazione ha un aspetto diverso, ma dovrebbe offrire prestazioni significativamente migliori sui dispositivi di fascia bassa rispetto all'SSAO in Forward+.

Quando si utilizza il renderer Compatibilità, solo i parametri Radius e Intensity si possono regolare.

Illuminazione indiretta nello spazio dello schermo (SSIL)

Questa funzionalità è disponibile solo quando si utilizza il renderer Forward+, non Mobile o Compatibilità.

L'SSIL fornisce un'illuminazione indiretta per piccoli dettagli o geometrie dinamiche che altre tecniche di illuminazione globale non possono coprire. Questo vale sia per l'illuminazione diffusa riflessa, sia per i materiali emissivi. Quando l'SSIL è abilitato da solo, l'effetto potrebbe non essere molto evidente, il che è intenzionale.

Piuttosto, l'SSIL dovrebbe fungere da complemento ad altre tecniche di illuminazione globale come VoxelGI, SDFGI e LightmapGI. L'SSIL fornisce anche un lieve effetto di occlusione ambientale, simile all'SSAO, ma con meno dettagli.

Questa funzionalità fornisce solo illuminazione indiretta. Non si tratta di una soluzione completa di illuminazione globale. Ciò la rende diversa dall'illuminazione globale nello spazio dello schermo (SSGI) offerta da altri motori 3D. È possibile combinare l'SSIL con l'SSR e/o l'SSAO per migliorare la qualità visiva (a scapito delle prestazioni).

È possibile regolare l'SSIL tramite diversi parametri:

  • Radius: la distanza che la luce rimbalzata può percorrere usando l'effetto di illuminazione indiretta dello spazio dello schermo. Un valore più alto farà rimbalzare la luce più lontano in una scena, ma potrebbe causare artefatti di sottocampionamento, che assomigliano a lunghe punte attorno alle sorgenti luminose.

  • Intensity: il moltiplicatore di luminosità per l'effetto di illuminazione indiretta dello spazio dello schermo. Un valore più alto produrrà una luce più brillante.

  • Sharpness: la quantità di sfocatura sui bordi degli oggetti per l'effetto di illuminazione indiretta nello spazio dello schermo. Un valore troppo alto farà comparire aliasing attorno ai bordi degli oggetti. Un valore troppo basso renderà i bordi degli oggetti sfocati.

  • Normal Rejection: quantità di rifiuto delle normali usata per calcolare l'illuminazione indiretta nello spazio dello schermo. Il rifiuto delle normali utilizza la normale di un certo punto campione per rifiutare i campioni rivolti lontano dal pixel attuale. Ciò serve per evitare le infiltrazioni di luce quando è illuminato un solo lato di un oggetto. Tuttavia, è possibile disabilitarlo se le infiltrazioni di luce sono desiderabili, ad esempio quando la scena contiene principalmente oggetti emissivi che emettono luce da facce non visibili dalla telecamera.

Inoltre, è possibile regolare la qualità dell'SSIL nelle impostazioni del progetto, nella sezione Rendering > Environment > SSIL:

  • Quality: Sets the quality of the screen-space indirect lighting effect. Higher values take more samples and so will result in better quality, at the cost of performance. Setting this to Ultra will use the Adaptive Target setting (see below).

  • Half Size: If true, screen-space indirect lighting will be rendered at half size and then upscaled before being added to the scene. This is significantly faster but may miss small details. If false, screen-space indirect lighting will be rendered at full size.

  • Adaptive Target: obiettivo di qualità da usare quando Quality è impostato su Ultra. Un valore di 0.0 offre una qualità e una velocità simili a quelle di Medium, mentre un valore di 1.0 offre una qualità molto più elevata rispetto a qualsiasi altra impostazione, a scapito delle prestazioni. Quando si usa l'obiettivo adattivo, l'impatto sulle prestazioni aumenta con la complessità della scena.

  • Blur Passes: il numero di passaggi di sfocatura da usare per calcolare l'illuminazione indiretta nello spazio dello schermo. Un numero più alto produrrà un aspetto più fluido, ma sarà più lento da calcolare e avrà meno dettagli ad alta frequenza.

  • Fadeout From: distanza alla quale l'effetto di illuminazione indiretta nello spazio dello schermo inizia a svanire. Usa questa per nascondere l'illuminazione indiretta nello spazio dello schermo da lontano.

  • Fadeout To: distanza alla quale l'effetto di illuminazione indiretta nello spazio dello schermo svanisce totalmente. Usa questa per nascondere l'illuminazione indiretta nello spazio dello schermo da lontano.

../../_images/environment_ssil.webp

Illuminazione globale con signed distance field (SDFGI)

Questa funzionalità è disponibile solo quando si utilizza il renderer Forward+, non Mobile o Compatibilità.

L'illuminazione globale con signed distance field (SDFGI) è una forma di illuminazione globale in tempo reale. Non si tratta di un effetto spazio schermo, il che significa che può fornire illuminazione globale anche per elementi fuori dallo schermo (a differenza dell'SSIL).

Vedi anche

Consultare Illuminazione globale con signed distance field (SDFGI) per le istruzioni su come configurare questa tecnica di illuminazione globale.

../../_images/environment_sdfgi.webp

Bagliore

Nota

Quando si usa il metodo di rendering Compatibilità, il bagliore utilizza un'implementazione diversa, con alcune proprietà non disponibili e nascoste nell'ispettore: Levels, Normalized, Strength, Blend Mode, Mix, Map e Map Strength.

Questa implementazione è ottimizzata per funzionare sui dispositivi di fascia bassa e pertanto risulta meno flessibile.

In fotografia e filmografia, quando la quantità di luce supera la massima luminanza (luminosità) supportata dal supporto, generalmente si diffonde esternamente, nelle zone più scure dell'immagine. Questo effetto è simulato in Godot con l'effetto Bagliore.

../../_images/environment_glow1.webp

By default, even if the effect is enabled, it will be weak or invisible. One of two conditions need to happen for it to actually show:

    1. The light in a pixel surpasses the HDR Threshold (where 0 is all light surpasses it, and 1.0 is light over the tonemapper White value). Normally, this value is expected to be at 1.0, but it can be lowered to allow more light to bleed. There is also an extra parameter, HDR Scale, that allows scaling (making brighter or darker) the light surpassing the threshold.

../../_images/environment_glow_threshold.webp
    1. The Bloom property has a value greater than 0.0. As it increases, it sends the whole screen to the glow processor at higher amounts.

../../_images/environment_glow_bloom.webp

Both will cause the light to start bleeding out of the brighter areas.

Una volta che il bagliore è visibile, lo si può controllare con alcuni parametri in più:

  • Intensity è una scala generale per l'effetto, che può essere reso più forte o più debole (0.0 lo rimuove completamente).

  • Strength indica quanto intensamente viene elaborato il kernel del filtro gaussiano. Valori più elevati saturano il filtro e lo espandono verso l'esterno. In generale, non è necessario modificarlo, poiché le dimensioni si possono regolare più efficientemente tramite Levels.

È possibile anche cambiare la Modalità di fusione dell'effetto:

  • Additive è la più intensa, poiché aggiunge l'effetto bagliore all'immagine senza alcuna fusione. In generale, è troppo intenso per essere utilizzato, ma può avere un buon aspetto se abbinato a un Bloom a bassa intensità (il che produce un effetto onirico).

  • Screen garantisce che il bagliore non sia mai più luminoso di se stesso e funziona discretamente in ogni situazione.

  • Softlight è la modalità predefinita e più debole, che produce solo una leggera distorsione del colore attorno agli oggetti. Questa modalità funziona al meglio nelle scene scure.

  • Replace può servire per sfocare l'intero schermo o per eseguire il debug dell'effetto. Mostra solo l'effetto bagliore senza l'immagine sottostante.

  • Mix miscela l'effetto bagliore con l'immagine principale. Permette un maggiore controllo artistico. Il fattore di miscelazione è controllato dalla proprietà Mix che appare sopra la modalità di fusione (solo quando la modalità di fusione è impostata su Mix). Valori alti del fattore di miscelazione tenderanno a scurire l'immagine, a meno che non si aumenti il valore di Bloom.

Per cambiare le dimensioni e la forma dell'effetto bagliore, Godot offre Levels. I livelli più piccoli producono un bagliore intenso che appare intorno agli oggetti, mentre i livelli più grandi producono un bagliore nebbioso che copre l'intero schermo:

../../_images/environment_glow_layers.webp

The real strength of this system, though, is to combine levels to create more interesting glow patterns:

../../_images/environment_glow_layers2.webp

Infine, l'effetto bagliore può essere controllato tramite una mappa di bagliore, ovvero una texture che determina l'intensità del bagliore in ogni parte dello schermo. Questa texture può essere facoltativamente colorata per tingere l'effetto bagliore al colore della mappa di bagliore. La texture è stirata per adattarsi alla voewèprt, quindi si consiglia di utilizzare un rapporto d'aspetto che corrisponda al rapporto d'aspetto più comune della propria viewport (come 16:9) per evitare distorsioni evidenti.

Esistono 2 casi d'uso principali per una texture di mappa di bagliore:

  • Creare un effetto "sporco sull'obiettivo" tramite una texture contenente un motivo sporco.

  • Attenuare l'intensità del bagliore in specifiche aree dello schermo tramite una texture contenente un gradiente.

../../_images/environment_glow_map.webp

Normalmente, il bagliore usa un filtro di ridimensionamento bicubico sulle piattaforme desktop e uno bilineare sulle piattaforme mobile. Il filtro bicubico offre una qualità superiore con un aspetto meno pixellato, ma ha un impatto sulle prestazioni della GPU che può essere significativo sulle schede grafiche integrate. È possibile controllare la modalità di ridimensionamento tramite l'impostazione del progetto Rendering > Ambiente > Bagliore > Modalità upscale. Questa impostazione è efficace solo quando si utilizzano i renderer Forward+ o Mobile, poiché Compatibilità utilizza un'implementazione diversa per il bagliore.

../../_images/environment_and_post_processing_glow_scale_mode.webp

Utilizzo di bagliore in 2D

Esistono due modi per utilizzare il bagliore in 2D:

  • A partire da Godot 4.2, è possibile abilitare l'HDR per il rendering 2D quando si utilizzano i metodi di rendering Forward+ e Mobile. Ciò ha un impatto sulle prestazioni, ma consente una maggiore gamma dinamica. Permette inoltre di controllare quali oggetti si illuminano tramite le loro proprietà Modulate o Self Modulate individuali (usando lo slider dell'intensità nel selettore di colore). Abilitare l'HDR può anche ridurre il banding nell'output di rendering 2D.

  • If you want to maximize performance, you can leave HDR disabled for 2D rendering. However, you will have less control on which objects glow.

    • Abilita il bagliore, imposta la modalità di sfondo dell'ambiente su Canvas e poi diminuisci la Glow HDR Threshold così che i pixel non sovra-luminosi continuino a brillare. Per impedire agli elementi dell'interfaccia utente di brillare, rendili figli di un nodo CanvasLayer. Puoi controllare quali livelli sono influenzati dall'effetto bagliore tramite la proprietà Background > Canvas Max Layer della risorsa Environment.

Esempio di utilizzo dell'effetto bagliore in una scena 2D

Esempio di utilizzo dell'effetto bagliore in una scena 2D. L'HDR 2D è abilitato, mentre le monete e il proiettile hanno la proprietà Modulate aumentata a valori sovra-luminosi tramite lo slider dell'intensità nel selettore di colore.

Avvertimento

Il renderer 2D renderizza nello spazio colore lineare se l'impostazione del progetto Rendering > Viewport > HDR 2D è abilitata, quindi il suggerimento source_color si deve utilizzare anche per i campionatori uniformi che fungono da input di colori negli shader canvas_item. Se non viene fatto, la texture apparirà sbiadita.

If 2D HDR is disabled, source_color will keep working correctly in canvas_item shaders, so it's recommend to use it when relevant either way.

Usare lo spazio colore lineare significa anche che la fusione alfa cambierà. Gli sprite con valori bassi di opacità generalmente diventeranno più visibili, e il rendering dei font apparirà più incisivo perché i pixel a bassa opacità, derivanti dall'antialiasing dei font, diventeranno più visibili. Ciò influisce anche sul rendering dell'editor stesso.

Usare il bagliore per sfocare lo schermo

L'effetto bagliore può servire per sfocare l'intera viewport, il che è utile per sfocare uno sfondo quando un menu è aperto. Solo il rendering 3D sarà influenzato, a meno che la modalità di sfondo dell'ambiente non sia impostata su Canvas. Per evitare che gli elementi dell'interfaccia utente siano sfocati mentre si usa la modalità di sfondo Canvas, bisogna renderli figli di un nodo CanvasLayer. È possibile controllare quali livelli sono influenzati da questo effetto di sfocatura tramite la proprietà Background > Canvas Max Layer della risorsa Environment.

Per utilizzare il bagliore come soluzione di sfocatura:

  • Abilita Normalized e regola i livelli a piacere. Aumentando gli indici dei livelli più alti, l'immagine risulterà più sfocata. Si consiglia di lasciare un singolo livello di bagliore a 1.0 e tutti gli altri a 0.0, ma non è necessario. Tieni presente che l'aspetto finale varierà a seconda della risoluzione della viewport.

  • Imposta Intensity su 1.0 e Bloom su 1.0.

  • Imposta la modalità di fusione su Replace e HDR Luminance Cap su 1.0.

Esempio di utilizzo dell'effetto bagliore per sfocare il rendering 2D nello sfondo del menu

Esempio di utilizzo dell'effetto bagliore per sfocare il rendering 2D nello sfondo del menu

Nebbia

Nota

Questa sezione si riferisce esclusivamente alla nebbia non volumetrica. È possibile utilizzare sia la nebbia non volumetrica sia Nebbia volumetrica e volumi di nebbia allo stesso tempo.

Fog, as in real life, makes distant objects fade away into a uniform color. There are two kinds of fog in Godot:

  • Nebbia di profondità: questa è applicata in base alla distanza dalla telecamera.

  • Nebbia di altezza: questa è applicata a qualsiasi oggetto sotto (o sopra) una certa altezza, a prescindere dalla distanza dalla telecamera.

../../_images/environment_fog_depth_height.webp

Entrambi questi tipi di nebbia possono avere loro curve regolate, rendendo la loro transizione più o meno netta.

È possibile regolare due proprietà per rendere l'effetto nebbia più interessante:

La prima è Sun Scatter, che utilizza il colore e l'energia della DirectionalLight3D nella scena attuale. Quando si guarda verso la luce direzionale (di solito un sole), la nebbia sarà colorata in base al colore della luce per simulare la luce solare che la attraversa.

La seconda è Aerial Perspective, che colora la nebbia in base al colore del cielo per fondere meglio il cielo con lo sfondo. Valori più alti risultano in una colorazione più intensa, con 1.0 che sostituisce completamente il colore normale della nebbia con la prospettiva aerea. Può servire in livelli open world grandi per fornire un maggiore senso di profondità o per evitare discontinuità di colore tra il cielo e la nebbia.

If both Sun Scatter and Aerial Perspective are greater than 0.0, sun scattering is applied on top of aerial perspective.

Nota

La nebbia può causare la comparsa di bande nella viewport, soprattutto a livelli di densità più elevati. Consulta Color banding per indicazioni su come ridurre le bande.

Nebbia volumetrica

La nebbia volumetrica offre un effetto nebbia realistico alla scena, con il colore della nebbia influenzato dalle luci che la attraversano.

Vedi anche

Consulta Nebbia volumetrica e volumi di nebbia per la documentazione sulla configurazione della nebbia volumetrica.

Aggiustamenti

Al termine dell'elaborazione, Godot offre la possibilità di effettuare alcune regolazioni standard sull'immagine.

../../_images/environment_adjustments.webp

Aggiustamenti BCS basilari

The first adjustment is being able to change the typical Brightness, Contrast, and Saturation properties:

../../_images/environment_adjustments_bcs.webp

Correzione del colore tramite una gradiente unidimensionale

La seconda regolazione è applicare un gradiente di correzione del colore. Lo si può fare assegnando una risorsa GradientTexture1D alla proprietà Color Correction oppure caricando una texture contenente un gradiente orizzontale. La parte più a sinistra del gradiente rappresenta il nero nell'immagine sorgente, mentre la parte più a destra rappresenta il bianco nell'immagine sorgente.

Un gradiente lineare dal nero al bianco come quello seguente non produrrà alcun effetto:

../../_images/environment_adjustments_default_gradient.webp

But creating custom ones will allow to map each channel to a different color:

../../_images/environment_adjustments_custom_gradient.webp

Correzione del colore tramite un LUT 3D

Per la correzione del colore è possibile utilizzare anche una look-up-texture 3D (LUT). Questa è una texture speciale che serve a modificare ciascun canale di colore separatamente dagli altri (rosso, verde, blu). Questa immagine può avere qualsiasi risoluzione, ma poiché la correzione del colore si basa su dati a bassa frequenza, si consiglia di usare risoluzioni basse per motivi di prestazioni. La risoluzione di una texture LUT è tipicamente 17×17×17, 33×33×33, 51×51×51 o 65×65×65 (le dimensioni dispari permettono una migliore interpolazione).

Affinché ciò funzioni, la modalità di importazione della look-up-texture deve essere impostata su Texture3D nel pannello Importazione (anziché essere importata come una solita Texture2D):

../../_images/environment_adjustments_3d_lut_import.webp

Assicurati di configurare anche il numero di sezioni orizzontali e verticali da importare. Se non lo fai, la texture LUT non influirà correttamente sulla viewport. Puoi vedere in anteprima come la texture 3D è stata importata facendo doppio clic su di essa, nel pannello Filesystem, e poi andando sull'ispettore per scorrere tra i livelli della texture.

Puoi usare questo modello LUT neutro 33×33×33 come base (fai clic destro e scegli Salva come…):

../../_images/environment_adjustments_3d_lut_template.webp

Con il modello LUT riportato sopra, dopo aver cambiando la modalità di importazione in Texture3D, imposta il numero di sezioni orizzontali a 33 nel pannello Importazione e poi clicca su Reimporta. Se carichi questa LUT nella proprietà Color Correction, per ora non vedrai alcuna differenza visibile poiché questa texture è progettata per essere un punto di partenza neutro.

Questo modello LUT si può modificare in un editor di immagini per conferire un'atmosfera diversa all'immagine. Un flusso di lavoro comune consiste nel posizionare l'immagine LUT accanto a uno screenshot della viewport 3D del progetto, poi usare un editor di immagini per modificare entrambi l'immagine LUT e lo screenshot allo stesso tempo. La LUT si può quindi salvare e applicare al motore di gioco per effettuare la stessa correzione dei colori in tempo reale.

Ad esempio, modificando il modello LUT in un editor di immagini per dargli un aspetto "seppia" produce l'immagine a destra:

../../_images/environment_adjustments_3d_lut_comparison.webp

Nota

Le regolazioni e la correzione del colore sono applicate dopo la mappatura dei toni. Significa che le proprietà di mappatura dei toni definite prima continuano ad avere effetto anche quando le regolazioni sono abilitate.

Opzioni di attributi della telecamera

Godot offre due tipi di attributi di telecamera: fisico e pratico. Quando si usa CameraAttributesPhysical anziché CameraAttributesPractical, la profondità di campo è calcolata automaticamente in base alla distanza della messa a fuoco, alla lunghezza focale e all'apertura specificate dagli attributi di telecamera. Sono inoltre disponibili opzioni relative al frustum.

Profondità di campo / Sfocatura lontana

Questo effetto simula la distanza focale delle telecamere. Sfoca gli oggetti dietro una determinata distanza. Ha una distanza (Distance) iniziale con una regione di transizione (Transition) (in unità del mondo):

../../_images/environment_dof_far.webp

Il parametro Amount controlla l'intensità della sfocatura. Per sfocature più grandi, potrebbe essere necessario regolare la qualità della profondità di campo nelle impostazioni avanzate del progetto per evitare artefatti.

Profondità di campo / Sfocatura vicina

Questo effetto simula la distanza focale delle telecamere. Sfoca gli oggetti vicini alla telecamera (agisce in direzione opposta rispetto alla sfocatura lontana). Ha una distanza (Distance) iniziale con una regione di transizione (Transition) (in unità del mondo):

../../_images/environment_dof_near.webp

Il parametro Amount controlla l'intensità della sfocatura. Per sfocature più grandi, potrebbe essere necessario regolare la qualità della profondità di campo nelle impostazioni avanzate del progetto per evitare artefatti.

È comune utilizzare entrambe le sfocature insieme per focalizzare l'attenzione dello spettatore su un determinato oggetto, o per creare il cosiddetto effetto "tilt shift" <https://en.wikipedia.org/wiki/Miniature_faking>`__.

../../_images/environment_mixed_blur.webp

Esposizione

Questo moltiplica la luminosità generale della scena visibile dalla telecamera. Valori più alti risultano in una scena visivamente più luminosa.

Esposizione automatica

Questa funzionalità è disponibile solo quando si utilizza il renderer Forward+, non Mobile o Compatibilità.

Sebbene, perlopiù delle volte, l'illuminazione e le texture siano fortemente controllate dagli artisti, Godot supporta un'implementazione basilare dell'ampia gamma dinamica tramite il meccanismo di esposizione automatica. Serve generalmente per aggiungere realismo quando si combinano aree interne con poca luce e aree esterne luminose. L'esposizione automatica simula la fotocamera (o l'occhio) che tenta di adattarsi tra ambienti chiari e scuri e le loro diverse quantità di luce.

Nota

L'esposizione automatica richiede di valutare la luminosità della scena a ogni frame, il che ha un moderato impatto sulle prestazioni. Pertanto, si consiglia di lasciare l'esposizione automatica disabilitata se non fa molta differenza nella scena.

../../_images/environment_hdr_autoexp.webp

Il modo più semplice per utilizzare l'esposizione automatica è assicurarsi che le luci esterne (o altre luci intense) abbiano un'energia superiore a 1.0. Lo si ottiene regolando il moltiplicatore dell'energia (Energy) (sulla luce stessa). Per renderlo coerente, anche il cielo (Sky) di solito deve utilizzare il moltiplicatore dell'energia, per corrispondere alla luce direzionale. Normalmente, valori compresi tra 3.0 e 6.0 bastano per simulare le condizioni interne-esterne.

Combinando l'esposizione automatica con la post-elaborazione Bagliore, i pixel che superano il bianco della mappa dei toni si diffonderanno nel buffer di bagliore, creando il tipico effetto bloom in fotografia.

../../_images/environment_hdr_bloom.webp

I valori regolabili dall'utente nella sezione Auto Exposure sono preimpostati con valori ragionevoli, ma è comunque possibile modificarli:

../../_images/environment_hdr.webp
  • Scale: valore per scalare l'illuminazione. Valori più alti producono immagini più luminose, mentre valori più bassi producono immagini più scure.

  • Min Sensitivity / Min Exposure Value: luminanza minima a cui l'esposizione automatica tenterà di adattarsi (in ISO quando si utilizza CameraAttributesPractical, o in EV100 quando si utilizza CameraAttributesPhysical). La luminanza è la media della luce in tutti i pixel dello schermo.

  • Max Sensitivity / Max Exposure Value: luminanza massima a cui l'esposizione automatica tenterà di adattarsi (in ISO quando si utilizza CameraAttributesPractical, o in EV100 quando si utilizza CameraAttributesPhysical).

  • Speed: Speed at which luminance corrects itself. The higher the value, the faster luminance correction happens. High values may be more suited to fast-paced games, but can be distracting in some scenarios.

Quando si utilizza CameraAttributesPractical, l'esposizione viene impostata utilizzando la sensibilità definita in ISO anziché un valore di esposizione in EV100. I valori ISO tipici sono compresi tra 50 e 3200, con valori più alti che risultano in un'esposizione finale maggiore. Nella vita reale, la fotografia diurna utilizza generalmente valori ISO compresi tra 100 e 800.

Vedi anche

Consultare Unità fisiche di luce e telecamera se si desidera utilizzare unità di misura reali per configurare l'esposizione, il campo visivo e la profondità di campo della telecamera.