From 1f56b8c5d8480f351a75b28863fafaa46fb0a0de Mon Sep 17 00:00:00 2001 From: Matteo Sonaglioni Date: Sun, 22 Mar 2026 19:09:31 +0100 Subject: [PATCH] Water Shader --- Assets/Meshes/Chunk/Prop/PaloLuce.fbx | Bin 0 -> 24284 bytes Assets/Meshes/Chunk/Prop/PaloLuce.fbx.import | 44 ++++++++ Materials/Fog.tres | 2 +- Materials/Water_Toon.tres | 10 +- Scenes/Chunk_Scene/Prop/palo_luce.tscn | 52 +++++++++ Scenes/Gameplay.tscn | 12 +- Scenes/Test/Main_Train.tscn | 12 +- Scripts/Day_night_Cycle.gd | 109 +++++++++---------- 8 files changed, 173 insertions(+), 68 deletions(-) create mode 100644 Assets/Meshes/Chunk/Prop/PaloLuce.fbx create mode 100644 Assets/Meshes/Chunk/Prop/PaloLuce.fbx.import create mode 100644 Scenes/Chunk_Scene/Prop/palo_luce.tscn diff --git a/Assets/Meshes/Chunk/Prop/PaloLuce.fbx b/Assets/Meshes/Chunk/Prop/PaloLuce.fbx new file mode 100644 index 0000000000000000000000000000000000000000..231609d1a8afa0bd664f3f2fbf84366c568cd198 GIT binary patch literal 24284 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 void: if event.keycode == KEY_C: is_cinematic_mode = !is_cinematic_mode if is_cinematic_mode: - timer_cinematic_env = intervallo_eventi_meteo + timer_cinematic_env = intervallo_eventi_meteo print("Ambiente Cinematic: ATTIVATA") else: print("Ambiente Cinematic: DISATTIVATA") @@ -222,7 +223,7 @@ func _on_pioggia_toggled(toggled_on: bool) -> void: is_cinematic_mode = false print("Ambiente Cinematic: DISATTIVATA (Pioggia cambiata manualmente)") - var stava_piovendo = is_raining + var stava_piovendo = is_raining is_raining = toggled_on if particelle_pioggia: particelle_pioggia.emitting = is_raining @@ -237,8 +238,6 @@ func _process(delta: float) -> void: _genera_evento_meteo_casuale() timer_cinematic_env = randf_range(intervallo_eventi_meteo * 0.8, intervallo_eventi_meteo * 1.5) - - var base_tint: Color var base_sky_top: Color var base_sky_horizon: Color @@ -249,20 +248,11 @@ func _process(delta: float) -> void: var base_grad_top: Color var base_grad_bot: Color 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 - 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: intensita_pioggia = move_toward(intensita_pioggia, 1.0, delta * 0.5) if is_raining: @@ -287,11 +277,12 @@ func _process(delta: float) -> void: base_fog_color = colore_nebbia_mattina.lerp(colore_nebbia_pomeriggio, t) base_fog_density = lerp(densita_nebbia_mattina, densita_nebbia_pomeriggio, t) base_bloom = lerp(bloom_mattina, bloom_pomeriggio, t) - base_esposizione = lerp(esposizione_mattina, esposizione_pomeriggio, t) + base_esposizione = lerp(esposizione_mattina, esposizione_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_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: var t = tempo_giorno - 2.0 base_tint = color_pomeriggio.lerp(color_notte, t) @@ -300,34 +291,45 @@ func _process(delta: float) -> void: base_fog_color = colore_nebbia_pomeriggio.lerp(colore_nebbia_notte, t) base_fog_density = lerp(densita_nebbia_pomeriggio, densita_nebbia_notte, t) base_bloom = lerp(bloom_pomeriggio, bloom_notte, t) - base_esposizione = lerp(esposizione_pomeriggio, esposizione_notte, t) + base_esposizione = lerp(esposizione_pomeriggio, esposizione_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_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_sky_top = base_sky_top.lerp(base_sky_top * colore_mood_pioggia, intensita_pioggia) var final_sky_horizon = base_sky_horizon.lerp(base_sky_horizon * colore_mood_pioggia, intensita_pioggia) var final_fog_color = base_fog_color.lerp(base_fog_color * colore_mood_pioggia, intensita_pioggia) - var final_fog_density = lerp(base_fog_density, base_fog_density * 4.0, intensita_pioggia) + var final_fog_density = lerp(base_fog_density, base_fog_density * 4.0, 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) + # 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_bot", final_grad_bot) 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) - # Compensazione esposizione neve 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 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 colore_riflesso = Color(0.4, 0.5, 0.6, 1.0) @@ -339,25 +341,20 @@ func _process(delta: float) -> void: if sole: 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) - # 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) if ambiente and ambiente.environment: ambiente.environment.ambient_light_color = final_tint - # Applicazione della nebbia ambiente.environment.fog_enabled = true ambiente.environment.fog_light_color = final_fog_color ambiente.environment.fog_density = final_fog_density - # Applicazione del Bloom ambiente.environment.glow_enabled = true 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 var sky_mat = ambiente.environment.sky.sky_material as ShaderMaterial @@ -383,7 +380,7 @@ func _process(delta: float) -> void: particelle_vento.emitting = (not tempesta_attiva and not e_notte) func _genera_evento_meteo_casuale() -> void: - sto_cambiando_in_cinematic = true + sto_cambiando_in_cinematic = true var scelta = randi() % 3 @@ -408,7 +405,7 @@ func _genera_evento_meteo_casuale() -> void: _on_pioggia_toggled(true) _scatena_fulmine() - sto_cambiando_in_cinematic = false + sto_cambiando_in_cinematic = false func _resetta_timer_fulmine() -> void: timer_prossimo_fulmine = randf_range(tempo_min_fulmine, tempo_max_fulmine) @@ -428,19 +425,19 @@ func _scatena_fulmine() -> void: for i in numero_scariche: if sprite_fulmine: - var angolo_casuale = randf() * TAU - var distanza = randf_range(10.0, 40.0) + var angolo_casuale = randf() * TAU + var distanza = randf_range(10.0, 40.0) sprite_fulmine.position = Vector3(cos(angolo_casuale) * distanza, 10.0, sin(angolo_casuale) * distanza) sprite_fulmine.modulate = colore_fulmine - sprite_fulmine.modulate.a = 1.0 + sprite_fulmine.modulate.a = 1.0 var s = randf_range(scala_min_fulmine, scala_max_fulmine) sprite_fulmine.scale = Vector3(s, s, s) var tween_sprite = create_tween() - tween_sprite.tween_interval(0.2) + tween_sprite.tween_interval(0.2) tween_sprite.tween_property(sprite_fulmine, "modulate:a", 0.0, 0.4) if numero_scariche > 1: @@ -465,7 +462,7 @@ func spawn_single_godray() -> void: var ray = godray_scene.instantiate() var nodo_mondo = nodo_camere.get_parent() - nodo_mondo.add_child(ray) + nodo_mondo.add_child(ray) var random_x = randf_range(-godray_spawn_radius, godray_spawn_radius) var random_z = randf_range(-godray_spawn_radius, godray_spawn_radius) @@ -517,10 +514,10 @@ func _on_nevicata_button_pressed(): cold_tween = create_tween() cold_tween.set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) - cold_tween.set_parallel(true) + cold_tween.set_parallel(true) cold_tween.tween_property(overlay_nebbia_schermo.material, "shader_parameter/max_opacity", target_opacity, 4.0) cold_tween.tween_property(overlay_nebbia_schermo.material, "shader_parameter/clear_center_radius", target_radius, 4.0) func set_snow_amount(value: float): - actual_snow_amount = value + actual_snow_amount = value RenderingServer.global_shader_parameter_set("global_snow_amount", value)