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...
Shader Spatial
Spatial shaders are used for shading 3D objects. They are the most complex type of shader Godot offers. Spatial shaders are highly configurable with different render modes and different rendering options (e.g. Subsurface Scattering, Transmission, Ambient Occlusion, Rim lighting, etc.). Users can optionally write vertex, fragment, and light processor functions to affect how objects are drawn.
Modalità di rendering
Per esempi visivi di queste modalità di rendering, consultare Standard Material 3D e ORM Material 3D.
Modalità di rendering |
Descrizione |
|---|---|
blend_mix |
Modalità di fusione mista (alfa è la trasparenza), predefinita. |
blend_add |
Modalità di fusione additiva. |
blend_sub |
Modalità di fusione sottrattiva. |
blend_mul |
Modalità di fusione moltiplicativa. |
blend_premul_alpha |
Modalità di fusione alfa premoltiplicato (completamente trasparente = aggiungi, completamente opaco = mescola). |
depth_draw_opaque |
Disegna la profondità soltanto per geometria opaca (non trasparente). |
depth_draw_always |
Disegna sempre la profondità (opaco e trasparente). |
depth_draw_never |
Non disegnare mai la profondità. |
depth_prepass_alpha |
Effettua un pre-passaggio opaco di profondità per la geometria trasparente. |
depth_test_disabled |
Disabilita il test di profondità. |
depth_test_default |
Il test di profondità scarta il pixel se si trova dietro ad altri pixel. Solo in Forward+, il pixel viene scartato anche se si trova esattamente alla stessa profondità di un altro pixel. |
depth_test_inverted |
Il test di profondità scarta il pixel se si trova davanti ad altri pixel. Utile per gli effetti stencil. |
sss_mode_skin |
Modalità di subsurface scattering per la pelle (ottimizza gli effetti visivi per la pelle umana, ad esempio aumentando il canale rosso). |
cull_back |
Cull back-faces (default). |
cull_front |
Cull front-faces. |
cull_disabled |
Culling disabled (double sided). |
unshaded |
Il risultato è solo albedo. Non c'è alcuna illuminazione/ombreggiatura nel materiale, il che lo renderizza più velocemente. |
wireframe |
La geometria è disegnata usando linee (utile per risolvere problemi). Quando si utilizza il renderer Compatibilità, è necessario chiamare |
debug_shadow_splits |
Le ombre direzionali vengono disegnate utilizzando colori diversi per ogni divisione (utile per risolvere problemi). |
diffuse_burley |
Burley (Disney PBS) per la diffusione (predefinita). |
diffuse_lambert |
Ombreggiatura Lambert per la diffusione. |
diffuse_lambert_wrap |
Ombreggiatura Lambert-wrap (dipendente dalla rugosità) per la diffusione. |
diffuse_toon |
Ombreggiatura toon per la diffusione. |
specular_schlick_ggx |
Schlick-GGX per lobi speculari a luce diretta (predefinito). |
specular_toon |
Toon per lobi speculari a luce diretta. |
specular_disabled |
Disabilita i lobi speculari a luce diretta. Non influisce sulla luce riflessa (usa invece |
skip_vertex_transform |
|
world_vertex_coords |
|
ensure_correct_normals |
Da utilizzare quando alla mesh è applicata una scala non uniforme (nota: attualmente non implementato). |
shadows_disabled |
Disabilita il calcolo delle ombre nello shader. Lo shader non riceverà ombre, ma potrà comunque proiettarle. |
ambient_light_disabled |
Disabilita la contribuzione della luce ambientale e della mappa di radianza. |
shadow_to_opacity |
L'illuminazione modifica il canale alfa, rendendo le zone ombreggiate opache e quelle non ombreggiate trasparenti. Utile per sovrapporre le ombre al feed fornito da una telecamera in AR. |
vertex_lighting |
Utilizza l'illuminazione basata sui vertici anziché quella per pixel. |
particle_trails |
Abilita le scie quando utilizzato sulla geometria di particelle. |
alpha_to_coverage |
Modalità di antialiasing per la trasparenza, consulta qui saperne di più. |
alpha_to_coverage_and_one |
Modalità di antialiasing per la trasparenza, consulta qui saperne di più. |
fog_disabled |
Disabilita la ricezione di nebbia volumetrica o basata sulla profondità. Utile per i materiali con |
Modalità di stencil
Nota
Il supporto per lo stencil è sperimentale, utilizzalo al tuo rischio. Cercheremo di non compromettere la compatibilità il più possibile, ma se dovessero emergere difetti significativi nell'API, potrebbero essere apportate modifiche nella prossima versione minore.
Stencil operations are a set of operations that allow writing to an efficient buffer in an hardware-accelerated manner. This is generally used to mask in or out parts of the scene.
Alcuni degli usi più noti sono:
Contorni: mascherare la mesh interna che viene contornata per evitare contorni interni.
Raggi X: visualizza una mesh dietro altri oggetti.
Portali: disegnare geometrie normalmente "impossibili" (non euclidee) mascherando gli oggetti.
Nota
È possibile leggere dal buffer stencil solo nel passaggio trasparente. Qualsiasi tentativo di lettura nel passaggio opaco fallirà, poiché al momento non è un comportamento supportato.
Si noti che, per gli effetti compositore, il buffer stencil del renderer principale non può essere copiato in una texture personalizzata.
Modalità di stencil |
Descrizione |
|---|---|
read |
Leggi dal buffer stencil. |
write |
Scrivi il valore di riferimento nel buffer stencil. |
write_if_depth_fail |
Scrivi il valore di riferimento nel buffer stencil se il test di profondità non viene superato. |
compare_always |
Supera sempre il test dello stencil. |
compare_equal |
Supera il test dello stencil se il valore di riferimento è uguale al valore nel buffer stencil. |
compare_not_equal |
Supera il test dello stencil se il valore di riferimento non è uguale al valore nel buffer stencil. |
compare_less |
Supera il test dello stencil se il valore di riferimento è minore del valore nel buffer stencil. |
compare_less_or_equal |
Supera il test dello stencil se il valore di riferimento è minore o uguale al valore nel buffer stencil. |
compare_greater |
Supera il test dello stencil se il valore di riferimento è maggiore del valore nel buffer stencil. |
compare_greater_or_equal |
Supera il test dello stencil se il valore di riferimento è maggiore o uguale al valore nel buffer stencil. |
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 valori marcati come inout forniscono un valore predefinito sensato e sono scrivibili facoltativamente. I campionatori non sono scrivibili, quindi non sono marcati.
Non tutte le variabili integrate sono disponibili in tutte le funzioni di elaborazione. Per accedere a una variabile integrata di vertice dalla funzione fragment(), è possibile utilizzare un varying. Lo stesso vale per accedere alle variabili integrate di frammento dalla funzione light().
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 |
in bool OUTPUT_IS_SRGB |
|
in float CLIP_SPACE_FAR |
Spazio di ritaglio per il valore |
in bool IS_MULTIVIEW |
|
in bool IN_SHADOW_PASS |
|
Variabili integrate di vertice
I dati dei vertici (VERTEX, NORMAL, TANGENT e BITANGENT) sono presentati nello spazio modello (detto anche spazio locale). Se non vengono scritti, questi valori non saranno modificati e saranno trasmessi così come sono arrivati, poi trasformati nello spazio visivo per essere utilizzati in fragment().
Facoltativamente, si possono presentare nello spazio mondiale tramite la modalità di rendering world_vertex_coords.
Gli utenti possono disattivare la trasformazione integrata modello-vista (la proiezione avverrà comunque in seguito) e farlo manualmente con il seguente codice:
shader_type spatial;
render_mode skip_vertex_transform;
void vertex() {
VERTEX = (MODELVIEW_MATRIX * vec4(VERTEX, 1.0)).xyz;
NORMAL = normalize((MODELVIEW_MATRIX * vec4(NORMAL, 0.0)).xyz);
BINORMAL = normalize((MODELVIEW_MATRIX * vec4(BINORMAL, 0.0)).xyz);
TANGENT = normalize((MODELVIEW_MATRIX * vec4(TANGENT, 0.0)).xyz);
}
Anche altre variabili integrate, come UV, UV2 e COLOR, vengono passate alla funzione fragment() se non vengono modificate.
Gli utenti possono sovrascrivere le trasformazioni modello-vista e proiezione attraverso la variabile integrata POSITION. Se POSITION viene scritto in qualsiasi punto dello shader, sarà sempre utilizzato, quindi l'utente è responsabile di garantire che abbia sempre un valore accettabile. Quando si utilizza POSITION, il valore di VERTEX è ignorato e la proiezione non avviene. Tuttavia, il valore passato allo shader di frammento proviene comunque da VERTEX.
Per l'istanzazione, la variabile INSTANCE_CUSTOM contiene i dati personalizzati dell'istanza. Quando si utilizzano particelle, queste informazioni sono solitamente:
x: Angolo di rotazione in radianti.
y: Fase durante il ciclo di vita (da
0.0a1.0).z: Fotogramma di animazione.
Ciò permette di adattare facilmente lo shader a un sistema di particelle utilizzando il materiale di particelle predefinito. Quando si crea uno shader di particelle personalizzato, questo valore si può usare a piacere.
Integrato |
Descrizione |
|---|---|
in vec2 VIEWPORT_SIZE |
Dimensioni della viewport (in pixel). |
in mat4 VIEW_MATRIX |
Trasformazione dallo spazio mondiale allo spazio visivo. |
in mat4 INV_VIEW_MATRIX |
Trasformazione dallo spazio visivo allo spazio mondiale. |
in mat4 MAIN_CAM_INV_VIEW_MATRIX |
Trasformazione dallo spazio visivo allo spazio mondiale della telecamera utilizzata per disegnare la viewport attuale. |
in mat4 INV_PROJECTION_MATRIX |
Trasformazione dallo spazio di ritaglio allo spazio visivo. |
in vec3 NODE_POSITION_WORLD |
Posizione del nodo, nello spazio mondiale. |
in vec3 NODE_POSITION_VIEW |
Posizione del nodo, nello spazio visivo. |
in vec3 CAMERA_POSITION_WORLD |
Posizione della telecamera, nello spazio mondiale. Rappresenta il punto medio tra i due occhi in modalità multivista/rendering stereoscopico. |
in vec3 CAMERA_DIRECTION_WORLD |
Direzione della telecamera, nello spazio mondiale. |
in uint CAMERA_VISIBLE_LAYERS |
Strati di culling della telecamera che renderizza il passaggio attuale. |
in int INSTANCE_ID |
ID di istanza per l'istanziazione. |
in vec4 INSTANCE_CUSTOM |
Dati personalizzati dell'istanza (per le particelle, principalmente ). |
in int VIEW_INDEX |
La vista che stiamo renderizzando. |
in int VIEW_MONO_LEFT |
Costante per Mono o l'occhio sinistro, sempre |
in int VIEW_RIGHT |
Costante l'occhio destro, sempre |
in vec3 EYE_OFFSET |
Offset di posizione per l'occhio che si sta renderizzando. Applicabile solo per il rendering multivista. |
inout vec3 VERTEX |
Posizione del vertice, nello spazio modello. È nello spazio mondiale se si utilizza |
in int VERTEX_ID |
L'indice del vertice attuale nel buffer dei vertici. |
inout vec3 NORMAL |
Normale, nello spazio modello. È nello spazio mondiale se si utilizza |
inout vec3 TANGENT |
Tangente, nello spazio modello. È nello spazio mondiale se si utilizza |
inout vec3 BINORMAL |
Binormale, nello spazio modello. È nello spazio mondiale se si utilizza |
out vec4 POSITION |
Se scritto, in qualunque ramo, sovrascrive la posizione finale del vertice nello spazio di ritaglio. |
inout vec2 UV |
Canale principale degli UV. |
inout vec2 UV2 |
Canale secondario degli UV. |
inout vec4 COLOR |
Colore dai vertici. Limitato a valori compresi tra |
out float ROUGHNESS |
Rugosità per l'illuminazione del vertice. |
inout float POINT_SIZE |
Dimensione dei punti per il rendering dei punti. |
inout mat4 MODELVIEW_MATRIX |
Trasformazione dallo spazio modello/locale allo spazio visivo (da usare se possibile). |
inout mat3 MODELVIEW_NORMAL_MATRIX |
|
in mat4 MODEL_MATRIX |
Trasformazione dallo spazio modello/locale allo spazio mondiale. |
in mat3 MODEL_NORMAL_MATRIX |
|
inout mat4 PROJECTION_MATRIX |
Trasformazione dallo spazio visivo allo spazio di ritaglio. |
in uvec4 BONE_INDICES |
|
in vec4 BONE_WEIGHTS |
|
in vec4 CUSTOM0 |
Valore personalizzato dalla primitiva del vertice. Quando si utilizzano UV aggiuntivi, |
in vec4 CUSTOM1 |
Valore personalizzato dalla primitiva del vertice. Quando si utilizzano UV aggiuntivi, |
in vec4 CUSTOM2 |
Valore personalizzato dalla primitiva del vertice. Quando si utilizzano UV aggiuntivi, |
in vec4 CUSTOM3 |
Valore personalizzato dalla primitiva del vertice. |
out float Z_CLIP_SCALE |
Se scritto, in qualunque ramo, ridimensiona il vertice verso la telecamera per evitare il clipping in cose come i muri. Luci e ombre continueranno a funzionare correttamente quando questo viene scritto, ma gli effetti nello spazio dello schermo, come SSAO e SSR, potrebbero non funzionare correttamente con valori inferiori. Si consiglia di mantenere questo valore il più vicino possibile a |
Nota
MODELVIEW_MATRIX combina entrambi MODEL_MATRIX e VIEW_MATRIX ed è più adatto quando potrebbero sorgere problemi di virgole mobili. Ad esempio, se l'oggetto è molto lontano dall'origine del mondo, si potrebbero verificare problemi di virgole mobili quando si utilizzano MODEL_MATRIX e VIEW_MATRIX separati.
Nota
INV_VIEW_MATRIX è la matrice utilizzata per renderizzare l'oggetto in quel passaggio, a differenza di MAIN_CAM_INV_VIEW_MATRIX, che è la matrice della telecamera nella scena. Nel passaggio di ombra, la vista di INV_VIEW_MATRIX si basa sulla telecamera che si trova nella posizione della luce.
Variabili integrate di frammento
L'uso predefinito di una funzione processore dei frammenti in Godot consiste nel configurare le proprietà del materiale dell'oggetto e lasciare che il renderer integrato gestisca lo shading finale. Tuttavia, non è obbligatorio utilizzare tutte queste proprietà e, se non le si scrive, Godot ottimizzerà la funzionalità corrispondente.
Integrato |
Descrizione |
|---|---|
in vec2 VIEWPORT_SIZE |
Dimensioni della viewport (in pixel). |
in vec4 FRAGCOORD |
Coordinate del centro pixel nello spazio dello schermo. |
in bool FRONT_FACING |
|
in vec3 VIEW |
Vettore normalizzato dalla posizione del frammento alla telecamera (nello spazio visivo). Questo è lo stesso sia per le telecamere prospettiche sia per quelle ortogonali. |
in vec2 UV |
UV che deriva dalla funzione |
in vec2 UV2 |
UV2 che deriva dalla funzione |
in vec4 COLOR |
COLOR che deriva dalla funzione |
in vec2 POINT_COORD |
Coordinata di punto per disegnare punti con |
in mat4 MODEL_MATRIX |
Trasformazione dallo spazio modello/locale allo spazio mondiale. |
in mat3 MODEL_NORMAL_MATRIX |
Trasformazione dallo spazio modello/locale allo spazio mondiale per le normali. Questo valore è solitamente uguale a |
in mat4 VIEW_MATRIX |
Trasformazione dallo spazio mondiale allo spazio visivo. |
in mat4 INV_VIEW_MATRIX |
Trasformazione dallo spazio visivo allo spazio mondiale. |
in mat4 PROJECTION_MATRIX |
Trasformazione dallo spazio visivo allo spazio di ritaglio. |
in mat4 INV_PROJECTION_MATRIX |
Trasformazione dallo spazio di ritaglio allo spazio visivo. |
in vec3 NODE_POSITION_WORLD |
Posizione del nodo, nello spazio mondiale. |
in vec3 NODE_POSITION_VIEW |
Posizione del nodo, nello spazio visivo. |
in vec3 CAMERA_POSITION_WORLD |
Posizione della telecamera, nello spazio mondiale. Rappresenta il punto medio tra i due occhi in modalità multivista/rendering stereoscopico. |
in vec3 CAMERA_DIRECTION_WORLD |
Direzione della telecamera, nello spazio mondiale. |
in uint CAMERA_VISIBLE_LAYERS |
Strati di culling della telecamera che renderizza il passaggio attuale. |
in vec3 VERTEX |
Posizione del frammento (pixel) nello spazio visivo. È il valore |
inout vec3 LIGHT_VERTEX |
Una versione scrivibile di |
in int VIEW_INDEX |
La vista che stiamo renderizzando. Utilizzato per distinguere tra viste nel rendering multivista/stereo. |
in int VIEW_MONO_LEFT |
Costante per Mono o l'occhio sinistro, sempre |
in int VIEW_RIGHT |
Costante l'occhio destro, sempre |
in vec3 EYE_OFFSET |
Offset di posizione per l'occhio che si sta renderizzando. Applicabile solo per il rendering multivista. |
sampler2D SCREEN_TEXTURE |
Rimosso in Godot 4. Utilizzare invece un |
in vec2 SCREEN_UV |
Coordinate UV dello schermo per il pixel attuale. |
sampler2D DEPTH_TEXTURE |
Rimosso in Godot 4. Utilizzare invece un |
out float DEPTH |
Valore di profondità personalizzato (nell'intervallo di |
inout vec3 NORMAL |
Normale che deriva dalla funzione |
inout vec3 TANGENT |
Tangente che deriva dalla funzione |
inout vec3 BINORMAL |
Binormale che deriva dalla funzione |
out vec3 NORMAL_MAP |
Impostare qui la normale nello spazio tangente se si sta leggendo la normale da una texture invece di |
out float NORMAL_MAP_DEPTH |
Profondità da |
out vec3 BENT_NORMAL_MAP |
Impostare qui la mappa di normali piegate nello spazio tangente per abilitare le normali piegate. Questo è utilizzato per migliorare l'occlusione speculare e richiede una mappa di normali piegate creata appositamente. Il canale blu è ignorato, poiché viene ricostruito dal motore. Ciò consente alle mappe di normali piegate con compressione RGTC di funzionare. |
out vec3 ALBEDO |
Albedo (bianco come predefinito). Colore di base. |
out float ALPHA |
Alfa (nell'intervallo di |
out float ALPHA_SCISSOR_THRESHOLD |
Se ci si scrive, in qualunque ramo, i valori inferiori a una certa quantità di alfa vengono scartati. |
out float ALPHA_HASH_SCALE |
Scala dell'hash alfa quando si utilizza la modalità di trasparenza hash alfa. Il valore predefinito è |
out float ALPHA_ANTIALIASING_EDGE |
La soglia al di sotto della quale si dovrebbe usare l'antialiasing alfa a copertura. Il valore predefinito è |
out vec2 ALPHA_TEXTURE_COORDINATE |
Le coordinate della texture da utilizzare per l'antialiasing alfa a copertura. Richiede la modalità di rendering |
out float PREMUL_ALPHA_FACTOR |
Fattore alfa premoltiplicato. Efficace solo se si utilizza |
out float METALLIC |
Metallico (nell'intervallo di |
out float SPECULAR |
Speculare (non fisicamente accurato da cambiare). Il valore predefinito è |
out float ROUGHNESS |
Rugosità (nell'intervallo di |
out float RIM |
Bordo (nell'intervallo di |
out float RIM_TINT |
Tinta del bordo, intervallo da |
out float CLEARCOAT |
Piccola macchia speculare aggiunta sopra quella esistente. Se utilizzata, Godot calcola l'effetto di rivestimento trasparente. |
out float CLEARCOAT_GLOSS |
Lucidità del rivestimento trasparente. Se utilizzato, Godot calcola l'effetto di rivestimento trasparente. |
out float ANISOTROPY |
Per distorcere la macchia speculare in base allo spazio tangente. |
out vec2 ANISOTROPY_FLOW |
Direzione della distorsione, da utilizzare con le flowmap. |
out float SSS_STRENGTH |
Intensità del subsurface scattering. Se utilizzata, il subsurface scattering sarà applicato all'oggetto. |
out vec4 SSS_TRANSMITTANCE_COLOR |
Colore della trasmittanza del subsurface scattering. Se utilizzata, la trasmittanza del subsurface scattering sarà applicata all'oggetto. |
out float SSS_TRANSMITTANCE_DEPTH |
Profondità della trasmittanza del subsurface scattering. Valori più elevati permettono all'effetto di raggiungere più in profondità nell'oggetto. |
out float SSS_TRANSMITTANCE_BOOST |
Aumenta la trasmittanza del subsurface scattering se impostato su un valore superiore a |
inout vec3 BACKLIGHT |
Colore della retroilluminazione (funziona come la luce diretta, ma è ricevuta anche se la normale è leggermente rivolta nella direzione opposta alla luce). Se utilizzata, la retroilluminazione sarà applicata all'oggetto. Si può utilizzare come approssimazione più performante del subsurface scattering. |
out float AO |
Intensità dell'occlusione ambientale. Da utilizzare con AO precalcolato. |
out float AO_LIGHT_AFFECT |
Quanto l'occlusione ambientale influisce sulla luce diretta (nell'intervallo di |
out vec3 EMISSION |
Colore di emissione (può superare |
out vec4 FOG |
Se ci si scrive, in qualunque ramo, fonde il colore finale del pixel con |
out vec4 RADIANCE |
Se ci si scrive, in qualunque ramo, fonde la radianza della mappa ambientale con |
out vec4 IRRADIANCE |
Se ci si scrive, in qualunque ramo, fonde l'irradianza della mappa ambientale con |
Nota
Gli shader che passano per la pipeline trasparente quando si scrive su ALPHA potrebbero presentare problemi di ordinamento per trasparenza. Consultare la sezione sull'ordinamento per trasparenza nella pagina sulle limitazioni del rendering 3D per ulteriori informazioni e modi per evitare problemi.
Variabili integrate di luce
Scrivere funzioni processori di luce è completamente facoltativo. È possibile ignorare la funzione light() utilizzando la modalità di rendering unshaded. Se nessuna funzione di luce viene scritta, Godot userà le proprietà del materiale scritte nella funzione fragment() per calcolare l'illuminazione (a seconda della modalità di rendering).
La funzione light() viene chiamata per ogni luce in ogni pixel. Viene chiamata all'interno di un ciclo per ogni tipo di luce.
Di seguito è riportato un esempio di una funzione light() personalizzata che utilizza un modello di illuminazione lambertiano:
void light() {
if (LIGHT_IS_AREA) {
// Area light GGX shading.
DIFFUSE_LIGHT += LIGHT_AREA_DIFFUSE_MULTIPLIER * ATTENUATION * LIGHT_COLOR;
SPECULAR_LIGHT += LIGHT_AREA_SPECULAR_MULTIPLIER * ATTENUATION * LIGHT_COLOR * SPECULAR_AMOUNT;
} else {
// Used for all other light types (directional, omni, spot).
DIFFUSE_LIGHT += clamp(dot(NORMAL, LIGHT), 0.0, 1.0) * ATTENUATION * LIGHT_COLOR / PI;
}
}
Se si desidera che le luci si sommino, aggiungere il contributo della luce a DIFFUSE_LIGHT tramite +=, anziché sovrascriverlo.
Avvertimento
La funzione light() non sarà eseguita se la modalità di rendering vertex_lighting è abilitata o se Rendering > Qualità > Shading > Forza l'ombreggiatura per vertice è abilitato nelle Impostazioni del progetto. (È abilitato come predefinito sulle piattaforme mobili.)
Integrato |
Descrizione |
|---|---|
in vec2 VIEWPORT_SIZE |
Dimensioni della viewport (in pixel). |
in vec4 FRAGCOORD |
Coordinate del centro pixel nello spazio dello schermo. |
in mat4 MODEL_MATRIX |
Trasformazione dallo spazio modello/locale allo spazio mondiale. |
in mat4 INV_VIEW_MATRIX |
Trasformazione dallo spazio visivo allo spazio mondiale. |
in mat4 VIEW_MATRIX |
Trasformazione dallo spazio mondiale allo spazio visivo. |
in mat4 PROJECTION_MATRIX |
Trasformazione dallo spazio visivo allo spazio di ritaglio. |
in mat4 INV_PROJECTION_MATRIX |
Trasformazione dallo spazio di ritaglio allo spazio visivo. |
in vec3 NORMAL |
Vettore normale, nello spazio visivo. |
in vec2 SCREEN_UV |
Coordinate UV dello schermo per il pixel attuale. |
in vec2 UV |
UV che deriva dalla funzione |
in vec2 UV2 |
UV2 che deriva dalla funzione |
in vec3 VIEW |
Vettore di vista, nello spazio visivo. |
in vec3 LIGHT |
Vettore di luce, nello spazio visivo. |
in vec3 LIGHT_COLOR |
Colore della luce moltiplicato per energia della luce moltiplicato per |
in float SPECULAR_AMOUNT |
Per OmniLight3D e SpotLight3D, |
in bool LIGHT_IS_DIRECTIONAL |
|
in float ATTENUATION |
Attenuazione basata sulla distanza o sull'ombra. |
in vec3 ALBEDO |
Albedo di base. |
in vec3 BACKLIGHT |
|
in float METALLIC |
Metallico. |
in float ROUGHNESS |
Rugosità. |
out vec3 DIFFUSE_LIGHT |
Risultato della luce diffusa. |
out vec3 SPECULAR_LIGHT |
Risultato della luce speculare. |
out float ALPHA |
Alfa (nell'intervallo di |
Nota
Gli shader che passano per la pipeline trasparente quando si scrive su ALPHA potrebbero presentare problemi di ordinamento per trasparenza. Consultare la sezione sull'ordinamento per trasparenza nella pagina sulle limitazioni del rendering 3D per ulteriori informazioni e modi per evitare problemi.
Inoltre, i materiali trasparenti non possono proiettare ombre o apparire nelle uniformi hint_screen_texture e hint_depth_texture. Ciò a sua volta impedisce che tali materiali appaiano in riflessi o rifrazioni nello spazio dello schermo. i riflessi netti SDFGI non sono visibili sui materiali trasparenti (per essi sono visibili solo riflessi approssimativi).