From 10b437d236910def80467efc2fb9b147c3993864 Mon Sep 17 00:00:00 2001 From: Overside srl Date: Sun, 10 May 2026 11:09:27 +0200 Subject: [PATCH] add fog update based on day --- core/daynight/environment_management.tscn | 2 ++ core/daynight/fog.gdshader | 5 +++-- core/daynight/weather_controller.gd | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/core/daynight/environment_management.tscn b/core/daynight/environment_management.tscn index 223b1f0..0c4fef4 100644 --- a/core/daynight/environment_management.tscn +++ b/core/daynight/environment_management.tscn @@ -32,6 +32,7 @@ render_priority = 0 shader = ExtResource("2_r4tfj") shader_parameter/use_red_as_alpha = true shader_parameter/fog_color = Color(0.8, 0.85, 0.9, 0.5) +shader_parameter/fog_density = 0.25 shader_parameter/scroll_speed = Vector2(0.05, 0.01) shader_parameter/texture_scale = Vector2(1, 1) shader_parameter/edge_softness_y = 0.2 @@ -261,6 +262,7 @@ shader = ExtResource("2_r4tfj") shader_parameter/fog_noise = ExtResource("11_tuauy") shader_parameter/use_red_as_alpha = true shader_parameter/fog_color = Color(0.8, 0.8509804, 0.9019608, 0.2509804) +shader_parameter/fog_density = 0.25 shader_parameter/scroll_speed = Vector2(0, 0.01) shader_parameter/texture_scale = Vector2(1, 1) shader_parameter/edge_softness_y = 0.16400000779 diff --git a/core/daynight/fog.gdshader b/core/daynight/fog.gdshader index 5207253..411c95c 100644 --- a/core/daynight/fog.gdshader +++ b/core/daynight/fog.gdshader @@ -7,6 +7,7 @@ uniform bool use_red_as_alpha = true; group_uniforms Settings; uniform vec4 fog_color : source_color = vec4(0.8, 0.85, 0.9, 0.5); +uniform float fog_density : hint_range(0.0, 1.0) = 0.25; uniform vec2 scroll_speed = vec2(0.05, 0.01); uniform vec2 texture_scale = vec2(1.0, 1.0); @@ -36,5 +37,5 @@ void fragment() { vec3 dark_fog = tinted_fog * 0.5; ALBEDO = mix(tinted_fog, dark_fog, night_intensity); - ALPHA = fog_color.a * noise_alpha * edge_mask; -} \ No newline at end of file + ALPHA = fog_color.a * fog_density * noise_alpha * edge_mask; +} diff --git a/core/daynight/weather_controller.gd b/core/daynight/weather_controller.gd index 0805d91..791be44 100644 --- a/core/daynight/weather_controller.gd +++ b/core/daynight/weather_controller.gd @@ -254,8 +254,23 @@ func _process(delta: float) -> void: environment_config.material_clouds.set_shader_parameter("center_sharpness", current_sharpness) if environment_config.material_fog: + environment_config.material_fog.set_shader_parameter("fog_color", final_fog_color) + environment_config.material_fog.set_shader_parameter("fog_density", clamp(final_fog_density * 25.0, 0.0, 1.0)) environment_config.material_fog.set_shader_parameter("night_intensity", night_val) environment_config.material_fog.set_shader_parameter("sun_color", final_tint) + + if fog: + for child in fog.get_children(): + var fog_mesh := child as MeshInstance3D + if fog_mesh == null: + continue + var fog_material := fog_mesh.get_surface_override_material(0) as ShaderMaterial + if fog_material == null: + continue + fog_material.set_shader_parameter("fog_color", final_fog_color) + fog_material.set_shader_parameter("fog_density", clamp(final_fog_density * 25.0, 0.0, 1.0)) + fog_material.set_shader_parameter("night_intensity", night_val) + fog_material.set_shader_parameter("sun_color", final_tint) func create_sound_players(): rain_audio_player = AudioStreamPlayer.new()