Water Shader

This commit is contained in:
Matteo Sonaglioni
2026-03-22 19:09:31 +01:00
parent 3d7af76005
commit 1f56b8c5d8
8 changed files with 173 additions and 68 deletions

Binary file not shown.

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://e5pjghlvgxrv"
path="res://.godot/imported/PaloLuce.fbx-306ebc368a6f40d86cb9258235ae324d.scn"
[deps]
source_file="res://Assets/Meshes/Chunk/Prop/PaloLuce.fbx"
dest_files=["res://.godot/imported/PaloLuce.fbx-306ebc368a6f40d86cb9258235ae324d.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -9,7 +9,7 @@ noise = SubResource("FastNoiseLite_oqwsk")
seamless = true seamless = true
[resource] [resource]
render_priority = 0 render_priority = 2
shader = ExtResource("1_340tl") shader = ExtResource("1_340tl")
shader_parameter/fog_noise = SubResource("NoiseTexture2D_8vrnd") shader_parameter/fog_noise = SubResource("NoiseTexture2D_8vrnd")
shader_parameter/use_red_as_alpha = true shader_parameter/use_red_as_alpha = true

View File

@@ -6,14 +6,14 @@
render_priority = 1 render_priority = 1
shader = ExtResource("1_hul6x") shader = ExtResource("1_hul6x")
shader_parameter/deep_water_color = Color(0.22383842, 0.51606375, 0.43509763, 1) shader_parameter/deep_water_color = Color(0.22383842, 0.51606375, 0.43509763, 1)
shader_parameter/shallow_water_color = Color(0.27134022, 0.43638897, 0.337778, 1) shader_parameter/shallow_water_color = Color(0, 0.4, 0.7, 1)
shader_parameter/beer_law_factor = 5.0 shader_parameter/beer_law_factor = 5.0
shader_parameter/reflection_strength = 0.6 shader_parameter/reflection_strength = 0.400000019
shader_parameter/reflection_offset = 0.01100002427250002 shader_parameter/reflection_offset = 2.3749999966682367e-08
shader_parameter/reflection_stretch = 0.05600005015999998 shader_parameter/reflection_stretch = 0.05600005015999998
shader_parameter/max_reflection_distance = 3.0000001392401203 shader_parameter/max_reflection_distance = 3.0000001392401203
shader_parameter/ripple_color = Color(1, 1, 1, 1) shader_parameter/ripple_color = Color(1, 1, 1, 1)
shader_parameter/ripple_density = 0.050000002375 shader_parameter/ripple_density = 0.02000000095
shader_parameter/ripple_scale = 2.00000007125 shader_parameter/ripple_scale = 2.00000007125
shader_parameter/ripple_speed = 0.60000002524012 shader_parameter/ripple_speed = 0.60000002524012
shader_parameter/ripple_thickness = 0.02800000133 shader_parameter/ripple_thickness = 0.06000000285

View File

@@ -0,0 +1,52 @@
[gd_scene format=3 uid="uid://bgb4pfflokl5s"]
[ext_resource type="PackedScene" uid="uid://e5pjghlvgxrv" path="res://Assets/Meshes/Chunk/Prop/PaloLuce.fbx" id="1_jxwpf"]
[ext_resource type="Shader" uid="uid://c0dy1aqj1b4q3" path="res://Shaders/trunk_shader.gdshader" id="2_3fmep"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_wpudh"]
render_priority = 0
shader = ExtResource("2_3fmep")
shader_parameter/albedo_color = Color(0.35906908, 0.35906908, 0.35906908, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_q1sqc"]
render_priority = 0
shader = ExtResource("2_3fmep")
shader_parameter/albedo_color = Color(0.35056442, 0.17908111, 0.051149555, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0
[node name="PaloLuce" unique_id=1542979535 instance=ExtResource("1_jxwpf")]
[node name="Cube" parent="." index="0" unique_id=885327009]
surface_material_override/0 = SubResource("ShaderMaterial_wpudh")
surface_material_override/1 = SubResource("ShaderMaterial_q1sqc")

View File

@@ -795,6 +795,10 @@ grad_bot_pomeriggio = Color(0.24934003, 0.018751867, 0.042065084, 1)
intensita_grad_mattina = 0.1 intensita_grad_mattina = 0.1
intensita_grad_pomeriggio = 0.1 intensita_grad_pomeriggio = 0.1
intensita_grad_notte = 0.5 intensita_grad_notte = 0.5
acqua_deep_mattina = Color(0.3352648, 0.65417206, 0.5294135, 1)
acqua_deep_pomeriggio = Color(0.5794799, 0.5151877, 0.28847608, 1)
acqua_deep_notte = Color(0.4806739, 0.45400572, 0.6938672, 1)
oscuramento_acqua_pioggia = 0.7
colore_nebbia_pomeriggio = Color(0.9627952, 0.5901167, 0.75933033, 1) colore_nebbia_pomeriggio = Color(0.9627952, 0.5901167, 0.75933033, 1)
densita_nebbia_mattina = 0.01 densita_nebbia_mattina = 0.01
densita_nebbia_pomeriggio = 0.02 densita_nebbia_pomeriggio = 0.02
@@ -871,12 +875,12 @@ transform = Transform3D(0.08715579, -0.91147786, 0.4020097, 0, 0.4035453, 0.9149
light_indirect_energy = 0.0 light_indirect_energy = 0.0
light_volumetric_fog_energy = 0.0 light_volumetric_fog_energy = 0.0
shadow_enabled = true shadow_enabled = true
shadow_bias = 0.2 shadow_bias = 0.03
shadow_normal_bias = 0.0 shadow_normal_bias = 0.0
shadow_opacity = 0.97 shadow_opacity = 0.98
shadow_blur = 2.0 shadow_blur = 2.0
directional_shadow_mode = 0 directional_shadow_fade_start = 0.647
directional_shadow_fade_start = 0.9 directional_shadow_max_distance = 200.0
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=395116482] [node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=395116482]
environment = SubResource("Environment_igfsh") environment = SubResource("Environment_igfsh")

View File

@@ -18,12 +18,16 @@ emission_enabled = true
emission = Color(0.59849787, 0.2744873, 0.018916829, 1) emission = Color(0.59849787, 0.2744873, 0.018916829, 1)
emission_energy_multiplier = 14.84 emission_energy_multiplier = 14.84
[sub_resource type="BoxMesh" id="BoxMesh_dbt0l"]
[node name="Train2" unique_id=206892833 instance=ExtResource("1_8k78i")] [node name="Train2" unique_id=206892833 instance=ExtResource("1_8k78i")]
transform = Transform3D(-0.85, 0, -1.2834644e-07, 0, 0.85, 0, 1.2834644e-07, 0, -0.85, 0, 0, 0) transform = Transform3D(-0.85, 0, -1.2834644e-07, 0, 0.85, 0, 1.2834644e-07, 0, -0.85, 0, 0, 0)
[node name="polySurface3708_002" parent="." index="0" unique_id=1525054251] [node name="polySurface3708_002" parent="." index="0" unique_id=1525054251]
transform = Transform3D(99.99998, 0, 0, 0, -4.3711375e-06, 99.99999, 0, -99.99997, -4.3711384e-06, 0, 1.5, 0) transform = Transform3D(99.99998, 0, 0, 0, -4.3711375e-06, 99.99999, 0, -99.99997, -4.3711384e-06, 0, 1.5, 0)
visible = false
material_overlay = SubResource("ShaderMaterial_tvivt") material_overlay = SubResource("ShaderMaterial_tvivt")
cast_shadow = 0
surface_material_override/0 = ExtResource("2_crne2") surface_material_override/0 = ExtResource("2_crne2")
surface_material_override/1 = ExtResource("3_tf27f") surface_material_override/1 = ExtResource("3_tf27f")
surface_material_override/2 = ExtResource("2_crne2") surface_material_override/2 = ExtResource("2_crne2")
@@ -124,13 +128,17 @@ transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0
mesh = SubResource("PlaneMesh_8k78i") mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2") surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="OmniLight3D" type="OmniLight3D" parent="." index="20" unique_id=1693942993] [node name="MeshInstance3D16" type="MeshInstance3D" parent="." index="20" unique_id=378179696]
transform = Transform3D(3.1700006, 0, 0, 0, 3.1700006, 0, 0, 0, 16.415005, -3.5393626e-08, 1.9236344, 0.23440138)
mesh = SubResource("BoxMesh_dbt0l")
[node name="OmniLight3D" type="OmniLight3D" parent="." index="21" unique_id=1693942993]
transform = Transform3D(1, 0, 0, 0, -1.1920932e-07, -1, 0, 1, -1.1920932e-07, -0.9650913, 1.3310676, 8.449412) transform = Transform3D(1, 0, 0, 0, -1.1920932e-07, -1, 0, 1, -1.1920932e-07, -0.9650913, 1.3310676, 8.449412)
light_color = Color(0.9818843, 0.6206694, 0.26694176, 1) light_color = Color(0.9818843, 0.6206694, 0.26694176, 1)
omni_range = 0.437 omni_range = 0.437
omni_attenuation = 0.367 omni_attenuation = 0.367
[node name="OmniLight3D2" type="OmniLight3D" parent="." index="21" unique_id=1965838060] [node name="OmniLight3D2" type="OmniLight3D" parent="." index="22" unique_id=1965838060]
transform = Transform3D(1, 0, 0, 0, -1.1920932e-07, -1, 0, 1, -1.1920932e-07, 0.9597263, 1.3310676, 8.449412) transform = Transform3D(1, 0, 0, 0, -1.1920932e-07, -1, 0, 1, -1.1920932e-07, 0.9597263, 1.3310676, 8.449412)
light_color = Color(0.9818843, 0.6206694, 0.26694176, 1) light_color = Color(0.9818843, 0.6206694, 0.26694176, 1)
omni_range = 0.437 omni_range = 0.437

View File

@@ -5,7 +5,6 @@ extends Node3D
@export var color_pomeriggio: Color = Color(1.0, 0.6, 0.2, 1.0) @export var color_pomeriggio: Color = Color(1.0, 0.6, 0.2, 1.0)
@export var color_notte: Color = Color(0.1, 0.1, 0.3, 1.0) @export var color_notte: Color = Color(0.1, 0.1, 0.3, 1.0)
# --- NUOVO: Rotazione del Sole ---
@export_group("Rotazione Sole (Gradi)") @export_group("Rotazione Sole (Gradi)")
@export var rotazione_sole_mattina: Vector3 = Vector3(-15.0, 45.0, 0.0) @export var rotazione_sole_mattina: Vector3 = Vector3(-15.0, 45.0, 0.0)
@export var rotazione_sole_pomeriggio: Vector3 = Vector3(-75.0, 10.0, 0.0) @export var rotazione_sole_pomeriggio: Vector3 = Vector3(-75.0, 10.0, 0.0)
@@ -26,9 +25,7 @@ extends Node3D
@export var sky_horizon_pomeriggio: Color = Color(0.95, 0.65, 0.35, 1.0) @export var sky_horizon_pomeriggio: Color = Color(0.95, 0.65, 0.35, 1.0)
@export var sky_horizon_notte: Color = Color(0.15, 0.1, 0.25, 1.0) @export var sky_horizon_notte: Color = Color(0.15, 0.1, 0.25, 1.0)
# --- Colori e Intensità Gradiente Shader ---
@export_group("Gradiente Globale Shader") @export_group("Gradiente Globale Shader")
@export_subgroup("Colore Top (Alto)") @export_subgroup("Colore Top (Alto)")
@export var grad_top_mattina: Color = Color(0.8, 0.4, 0.2, 1.0) @export var grad_top_mattina: Color = Color(0.8, 0.4, 0.2, 1.0)
@export var grad_top_pomeriggio: Color = Color(0.2, 0.3, 0.5, 1.0) @export var grad_top_pomeriggio: Color = Color(0.2, 0.3, 0.5, 1.0)
@@ -44,7 +41,12 @@ extends Node3D
@export var intensita_grad_pomeriggio: float = 0.3 @export var intensita_grad_pomeriggio: float = 0.3
@export var intensita_grad_notte: float = 0.8 @export var intensita_grad_notte: float = 0.8
# --- NUOVO: Gestione Nebbia --- @export_group("Colori Acqua (Deep)")
@export var acqua_deep_mattina: Color = Color(0.0, 0.1, 0.2, 1.0)
@export var acqua_deep_pomeriggio: Color = Color(0.0, 0.15, 0.25, 1.0)
@export var acqua_deep_notte: Color = Color(0.0, 0.02, 0.05, 1.0)
@export_range(0.0, 1.0) var oscuramento_acqua_pioggia: float = 0.6 # <--- SLIDER OSCURAMENTO PIOGGIA
@export_group("Nebbia (Fog)") @export_group("Nebbia (Fog)")
@export var colore_nebbia_mattina: Color = Color(0.75, 0.85, 0.95, 1.0) @export var colore_nebbia_mattina: Color = Color(0.75, 0.85, 0.95, 1.0)
@export var colore_nebbia_pomeriggio: Color = Color(0.95, 0.65, 0.35, 1.0) @export var colore_nebbia_pomeriggio: Color = Color(0.95, 0.65, 0.35, 1.0)
@@ -53,7 +55,6 @@ extends Node3D
@export var densita_nebbia_pomeriggio: float = 0.002 @export var densita_nebbia_pomeriggio: float = 0.002
@export var densita_nebbia_notte: float = 0.015 @export var densita_nebbia_notte: float = 0.015
# --- NUOVO: Gestione Bloom (Glow) ---
@export_group("Bloom (Glow)") @export_group("Bloom (Glow)")
@export var bloom_mattina: float = 1.2 @export var bloom_mattina: float = 1.2
@export var bloom_pomeriggio: float = 0.8 @export var bloom_pomeriggio: float = 0.8
@@ -237,8 +238,6 @@ func _process(delta: float) -> void:
_genera_evento_meteo_casuale() _genera_evento_meteo_casuale()
timer_cinematic_env = randf_range(intervallo_eventi_meteo * 0.8, intervallo_eventi_meteo * 1.5) timer_cinematic_env = randf_range(intervallo_eventi_meteo * 0.8, intervallo_eventi_meteo * 1.5)
var base_tint: Color var base_tint: Color
var base_sky_top: Color var base_sky_top: Color
var base_sky_horizon: Color var base_sky_horizon: Color
@@ -249,20 +248,11 @@ func _process(delta: float) -> void:
var base_grad_top: Color var base_grad_top: Color
var base_grad_bot: Color var base_grad_bot: Color
var base_grad_intensity: float var base_grad_intensity: float
var base_rotazione_sole: Vector3 # <--- NUOVA VARIABILE var base_rotazione_sole: Vector3
var base_acqua_deep: Color
var tempesta_attiva = is_raining or is_actively_snowing var tempesta_attiva = is_raining or is_actively_snowing
if materiale_acqua:
# Interpoliamo tra 0.05 (calmo) e 1.0 (pioggia forte)
# intensita_pioggia è già gestita dal tuo script (0.0 -> 1.0)
var target_ripples = lerp(0.05, 1.0, intensita_pioggia)
materiale_acqua.set_shader_parameter("ripple_density", target_ripples)
# Opzionale: aumenta la velocità dei cerchi quando piove
var ripple_speed = lerp(0.8, 1.6, intensita_pioggia)
materiale_acqua.set_shader_parameter("ripple_speed", ripple_speed)
if tempesta_attiva: if tempesta_attiva:
intensita_pioggia = move_toward(intensita_pioggia, 1.0, delta * 0.5) intensita_pioggia = move_toward(intensita_pioggia, 1.0, delta * 0.5)
if is_raining: if is_raining:
@@ -291,7 +281,8 @@ func _process(delta: float) -> void:
base_grad_top = grad_top_mattina.lerp(grad_top_pomeriggio, t) base_grad_top = grad_top_mattina.lerp(grad_top_pomeriggio, t)
base_grad_bot = grad_bot_mattina.lerp(grad_bot_pomeriggio, t) base_grad_bot = grad_bot_mattina.lerp(grad_bot_pomeriggio, t)
base_grad_intensity = lerp(intensita_grad_mattina, intensita_grad_pomeriggio, t) base_grad_intensity = lerp(intensita_grad_mattina, intensita_grad_pomeriggio, t)
base_rotazione_sole = rotazione_sole_mattina.lerp(rotazione_sole_pomeriggio, t) # <--- INTERPOLAZIONE ROTAZIONE base_rotazione_sole = rotazione_sole_mattina.lerp(rotazione_sole_pomeriggio, t)
base_acqua_deep = acqua_deep_mattina.lerp(acqua_deep_pomeriggio, t)
else: else:
var t = tempo_giorno - 2.0 var t = tempo_giorno - 2.0
base_tint = color_pomeriggio.lerp(color_notte, t) base_tint = color_pomeriggio.lerp(color_notte, t)
@@ -304,7 +295,8 @@ func _process(delta: float) -> void:
base_grad_top = grad_top_pomeriggio.lerp(grad_top_notte, t) base_grad_top = grad_top_pomeriggio.lerp(grad_top_notte, t)
base_grad_bot = grad_bot_pomeriggio.lerp(grad_bot_notte, t) base_grad_bot = grad_bot_pomeriggio.lerp(grad_bot_notte, t)
base_grad_intensity = lerp(intensita_grad_pomeriggio, intensita_grad_notte, t) base_grad_intensity = lerp(intensita_grad_pomeriggio, intensita_grad_notte, t)
base_rotazione_sole = rotazione_sole_pomeriggio.lerp(rotazione_sole_notte, t) # <--- INTERPOLAZIONE ROTAZIONE base_rotazione_sole = rotazione_sole_pomeriggio.lerp(rotazione_sole_notte, t)
base_acqua_deep = acqua_deep_pomeriggio.lerp(acqua_deep_notte, t)
var final_tint = base_tint.lerp(base_tint * colore_mood_pioggia, intensita_pioggia) var final_tint = base_tint.lerp(base_tint * colore_mood_pioggia, intensita_pioggia)
var final_sky_top = base_sky_top.lerp(base_sky_top * colore_mood_pioggia, intensita_pioggia) var final_sky_top = base_sky_top.lerp(base_sky_top * colore_mood_pioggia, intensita_pioggia)
@@ -315,19 +307,29 @@ func _process(delta: float) -> void:
var final_grad_top = base_grad_top.lerp(base_grad_top * colore_mood_pioggia, intensita_pioggia) var final_grad_top = base_grad_top.lerp(base_grad_top * colore_mood_pioggia, intensita_pioggia)
var final_grad_bot = base_grad_bot.lerp(base_grad_bot * colore_mood_pioggia, intensita_pioggia) var final_grad_bot = base_grad_bot.lerp(base_grad_bot * colore_mood_pioggia, intensita_pioggia)
# Applico lo scurimento personalizzato all'acqua in base allo slider
var final_acqua_deep = base_acqua_deep.lerp(base_acqua_deep.darkened(oscuramento_acqua_pioggia), intensita_pioggia)
RenderingServer.global_shader_parameter_set("global_gradient_color_top", final_grad_top) RenderingServer.global_shader_parameter_set("global_gradient_color_top", final_grad_top)
RenderingServer.global_shader_parameter_set("global_gradient_color_bot", final_grad_bot) RenderingServer.global_shader_parameter_set("global_gradient_color_bot", final_grad_bot)
RenderingServer.global_shader_parameter_set("global_gradient_intensity", base_grad_intensity) RenderingServer.global_shader_parameter_set("global_gradient_intensity", base_grad_intensity)
# Assegnazione parametri allo shader dell'acqua
if materiale_acqua:
var target_ripples = lerp(0.02, 1.0, intensita_pioggia)
materiale_acqua.set_shader_parameter("ripple_density", target_ripples)
var ripple_speed = lerp(0.8, 1.6, intensita_pioggia)
materiale_acqua.set_shader_parameter("ripple_speed", ripple_speed)
materiale_acqua.set_shader_parameter("deep_water_color", final_acqua_deep)
var night_val = clamp(tempo_giorno - 2.0, 0.0, 1.0) var night_val = clamp(tempo_giorno - 2.0, 0.0, 1.0)
# Compensazione esposizione neve
var attenuazione_luce_neve = lerp(1.0, 0.55, actual_snow_amount * (1.0 - night_val)) var attenuazione_luce_neve = lerp(1.0, 0.55, actual_snow_amount * (1.0 - night_val))
var attenuazione_bloom_neve = lerp(1.0, 0.5, actual_snow_amount) var attenuazione_bloom_neve = lerp(1.0, 0.5, actual_snow_amount)
var final_bloom = lerp(base_bloom, base_bloom * 0.5, intensita_pioggia) * attenuazione_bloom_neve var final_bloom = lerp(base_bloom, base_bloom * 0.5, intensita_pioggia) * attenuazione_bloom_neve
# Calcoliamo l'esposizione finale applicando lo smorzamento della neve direttamente all'esposizione della camera
var final_esposizione = base_esposizione * attenuazione_luce_neve var final_esposizione = base_esposizione * attenuazione_luce_neve
var colore_riflesso = Color(0.4, 0.5, 0.6, 1.0) var colore_riflesso = Color(0.4, 0.5, 0.6, 1.0)
@@ -339,25 +341,20 @@ func _process(delta: float) -> void:
if sole: if sole:
sole.light_color = final_tint sole.light_color = final_tint
sole.rotation_degrees = base_rotazione_sole # <--- APPLICAZIONE DELLA ROTAZIONE sole.rotation_degrees = base_rotazione_sole
var target_energy = lerp(1.0, energia_luce_notte, night_val) var target_energy = lerp(1.0, energia_luce_notte, night_val)
# La luce del sole scala normalmente in base al meteo/notte (l'esposizione globale fa il resto del lavoro)
sole.light_energy = lerp(target_energy, target_energy * 0.4, intensita_pioggia) sole.light_energy = lerp(target_energy, target_energy * 0.4, intensita_pioggia)
if ambiente and ambiente.environment: if ambiente and ambiente.environment:
ambiente.environment.ambient_light_color = final_tint ambiente.environment.ambient_light_color = final_tint
# Applicazione della nebbia
ambiente.environment.fog_enabled = true ambiente.environment.fog_enabled = true
ambiente.environment.fog_light_color = final_fog_color ambiente.environment.fog_light_color = final_fog_color
ambiente.environment.fog_density = final_fog_density ambiente.environment.fog_density = final_fog_density
# Applicazione del Bloom
ambiente.environment.glow_enabled = true ambiente.environment.glow_enabled = true
ambiente.environment.glow_intensity = final_bloom ambiente.environment.glow_intensity = final_bloom
# --- NUOVO: Assegnazione dell'Esposizione (Tonemap) ---
# Assicurati che il Tonemap Mode nell'Environment sia impostato su ACES o Filmic per un risultato migliore!
ambiente.environment.tonemap_exposure = final_esposizione ambiente.environment.tonemap_exposure = final_esposizione
var sky_mat = ambiente.environment.sky.sky_material as ShaderMaterial var sky_mat = ambiente.environment.sky.sky_material as ShaderMaterial