diff --git a/Assets/Meshes/Chunk/Prop/PaloLuce.fbx b/Assets/Meshes/Chunk/Prop/PaloLuce.fbx new file mode 100644 index 0000000..231609d Binary files /dev/null and b/Assets/Meshes/Chunk/Prop/PaloLuce.fbx differ diff --git a/Assets/Meshes/Chunk/Prop/PaloLuce.fbx.import b/Assets/Meshes/Chunk/Prop/PaloLuce.fbx.import new file mode 100644 index 0000000..c7f74ce --- /dev/null +++ b/Assets/Meshes/Chunk/Prop/PaloLuce.fbx.import @@ -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 diff --git a/Materials/Fog.tres b/Materials/Fog.tres index a119f84..033bf69 100644 --- a/Materials/Fog.tres +++ b/Materials/Fog.tres @@ -9,7 +9,7 @@ noise = SubResource("FastNoiseLite_oqwsk") seamless = true [resource] -render_priority = 0 +render_priority = 2 shader = ExtResource("1_340tl") shader_parameter/fog_noise = SubResource("NoiseTexture2D_8vrnd") shader_parameter/use_red_as_alpha = true diff --git a/Materials/Water_Toon.tres b/Materials/Water_Toon.tres index b15185e..1091b38 100644 --- a/Materials/Water_Toon.tres +++ b/Materials/Water_Toon.tres @@ -6,14 +6,14 @@ render_priority = 1 shader = ExtResource("1_hul6x") 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/reflection_strength = 0.6 -shader_parameter/reflection_offset = 0.01100002427250002 +shader_parameter/reflection_strength = 0.400000019 +shader_parameter/reflection_offset = 2.3749999966682367e-08 shader_parameter/reflection_stretch = 0.05600005015999998 shader_parameter/max_reflection_distance = 3.0000001392401203 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_speed = 0.60000002524012 -shader_parameter/ripple_thickness = 0.02800000133 +shader_parameter/ripple_thickness = 0.06000000285 diff --git a/Scenes/Chunk_Scene/Prop/palo_luce.tscn b/Scenes/Chunk_Scene/Prop/palo_luce.tscn new file mode 100644 index 0000000..3a876bc --- /dev/null +++ b/Scenes/Chunk_Scene/Prop/palo_luce.tscn @@ -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") diff --git a/Scenes/Gameplay.tscn b/Scenes/Gameplay.tscn index 50babb8..988f8ec 100644 --- a/Scenes/Gameplay.tscn +++ b/Scenes/Gameplay.tscn @@ -795,6 +795,10 @@ grad_bot_pomeriggio = Color(0.24934003, 0.018751867, 0.042065084, 1) intensita_grad_mattina = 0.1 intensita_grad_pomeriggio = 0.1 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) densita_nebbia_mattina = 0.01 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_volumetric_fog_energy = 0.0 shadow_enabled = true -shadow_bias = 0.2 +shadow_bias = 0.03 shadow_normal_bias = 0.0 -shadow_opacity = 0.97 +shadow_opacity = 0.98 shadow_blur = 2.0 -directional_shadow_mode = 0 -directional_shadow_fade_start = 0.9 +directional_shadow_fade_start = 0.647 +directional_shadow_max_distance = 200.0 [node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=395116482] environment = SubResource("Environment_igfsh") diff --git a/Scenes/Test/Main_Train.tscn b/Scenes/Test/Main_Train.tscn index cd4f626..a3f74fb 100644 --- a/Scenes/Test/Main_Train.tscn +++ b/Scenes/Test/Main_Train.tscn @@ -18,12 +18,16 @@ emission_enabled = true emission = Color(0.59849787, 0.2744873, 0.018916829, 1) emission_energy_multiplier = 14.84 +[sub_resource type="BoxMesh" id="BoxMesh_dbt0l"] + [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) [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) +visible = false material_overlay = SubResource("ShaderMaterial_tvivt") +cast_shadow = 0 surface_material_override/0 = ExtResource("2_crne2") surface_material_override/1 = ExtResource("3_tf27f") 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") 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) light_color = Color(0.9818843, 0.6206694, 0.26694176, 1) omni_range = 0.437 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) light_color = Color(0.9818843, 0.6206694, 0.26694176, 1) omni_range = 0.437 diff --git a/Scripts/Day_night_Cycle.gd b/Scripts/Day_night_Cycle.gd index 9ce1865..d6a2d5f 100644 --- a/Scripts/Day_night_Cycle.gd +++ b/Scripts/Day_night_Cycle.gd @@ -5,7 +5,6 @@ extends Node3D @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) -# --- NUOVO: Rotazione del Sole --- @export_group("Rotazione Sole (Gradi)") @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) @@ -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_notte: Color = Color(0.15, 0.1, 0.25, 1.0) -# --- Colori e Intensità Gradiente Shader --- @export_group("Gradiente Globale Shader") - @export_subgroup("Colore Top (Alto)") @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) @@ -44,7 +41,12 @@ extends Node3D @export var intensita_grad_pomeriggio: float = 0.3 @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 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) @@ -53,7 +55,6 @@ extends Node3D @export var densita_nebbia_pomeriggio: float = 0.002 @export var densita_nebbia_notte: float = 0.015 -# --- NUOVO: Gestione Bloom (Glow) --- @export_group("Bloom (Glow)") @export var bloom_mattina: float = 1.2 @export var bloom_pomeriggio: float = 0.8 @@ -61,19 +62,19 @@ extends Node3D @export_group("Ciclo Temporale") @export_range(1.0, 3.0) var tempo_giorno: float = 1.0 -@export var durata_transizione: float = 3.0 +@export var durata_transizione: float = 3.0 @export_range(0.0, 1.0) var energia_luce_notte: float = 0.3 @export_group("Materiali Extra") @export var materiale_nebbia: ShaderMaterial -@export var materiale_pioggia_gocce: StandardMaterial3D -@export var materiale_nuvole: ShaderMaterial +@export var materiale_pioggia_gocce: StandardMaterial3D +@export var materiale_nuvole: ShaderMaterial @export var nodo_polvere: ColorRect @export var materiale_acqua: ShaderMaterial @export_group("Meteo (Pioggia & Fulmini)") @export var colore_mood_pioggia: Color = Color(0.5, 0.6, 0.7, 1.0) -@export var tempo_min_fulmine: float = 5.0 +@export var tempo_min_fulmine: float = 5.0 @export var tempo_max_fulmine: float = 15.0 @export var colore_fulmine: Color = Color(1.0, 1.0, 0.8, 1.0) @export var fulmini_min: int = 1 @@ -82,22 +83,22 @@ extends Node3D @export var scala_max_fulmine: float = 3.0 @export_group("Cinematic Mode Ambiente") -@export var intervallo_eventi_meteo: float = 8.0 +@export var intervallo_eventi_meteo: float = 8.0 @export_group("God Rays") @export var godray_scene: PackedScene @export var max_rain_godrays: int = 8 @export var godray_spawn_radius: float = 15.0 -@export var godray_spawn_offset: Vector3 = Vector3(15.0, 5.0, -15.0) -@export var godray_rotation_degrees: Vector3 = Vector3(-45.0, 45.0, -30.0) -@export var godray_spawn_height: float = 5.0 +@export var godray_spawn_offset: Vector3 = Vector3(15.0, 5.0, -15.0) +@export var godray_rotation_degrees: Vector3 = Vector3(-45.0, 45.0, -30.0) +@export var godray_spawn_height: float = 5.0 @export var godray_scale: Vector3 = Vector3(2.0, 6.0, 2.0) @export_group("Lucciole") @export var particelle_lucciole: GPUParticles3D @export var quantita_lucciole: int = 60 @export var raggio_spawn_lucciole: float = 20.0 -@export var altezza_spawn_lucciole: float = 3.0 +@export var altezza_spawn_lucciole: float = 3.0 @export_group("Vento") @export var particelle_vento: GPUParticles3D @@ -115,7 +116,7 @@ extends Node3D @onready var sole: DirectionalLight3D = $DirectionalLight3D @onready var ambiente: WorldEnvironment = $WorldEnvironment -@onready var menu_giornata: OptionButton = $CanvasLayer/OptionButton +@onready var menu_giornata: OptionButton = $CanvasLayer/OptionButton @onready var bottone_pioggia: CheckButton = $CanvasLayer/CheckButtonPioggia @onready var particelle_pioggia: GPUParticles3D = $SubViewportContainer/SubViewport/World/Camere/PioggiaCadente @onready var nodo_camere: Node3D = $SubViewportContainer/SubViewport/World/Camere @@ -124,14 +125,14 @@ extends Node3D var tween_giorno: Tween var is_raining: bool = false -var intensita_pioggia: float = 0.0 +var intensita_pioggia: float = 0.0 var timer_prossimo_fulmine: float = 0.0 var is_cinematic_mode: bool = false var timer_cinematic_env: float = 0.0 -var sto_cambiando_in_cinematic: bool = false +var sto_cambiando_in_cinematic: bool = false -var is_snow_accumulated: bool = false +var is_snow_accumulated: bool = false var is_actively_snowing: bool = false var snow_tween: Tween var cold_tween: Tween @@ -186,7 +187,7 @@ func _input(event: InputEvent) -> 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)