From ddec91d5154d0fff602cb75a60616eefa8dad68c Mon Sep 17 00:00:00 2001 From: Overside srl Date: Wed, 6 May 2026 23:14:51 +0200 Subject: [PATCH] update cloud density when is rainy or snowy --- core/daynight/environment_shadows.gdshader | 1 - core/daynight/weather_controller.gd | 15 +++++++++++---- core/environment_config.gd | 2 ++ tgcc/chunk/material/water_river.tres | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/core/daynight/environment_shadows.gdshader b/core/daynight/environment_shadows.gdshader index 6beb9a0..4cf5299 100644 --- a/core/daynight/environment_shadows.gdshader +++ b/core/daynight/environment_shadows.gdshader @@ -67,7 +67,6 @@ void fragment() { float is_center = step(center_sharpness, internal_n); ALBEDO = shadow_color; - ALPHA = mix(opacity_edge, opacity_center, is_center) * final_fade; } } diff --git a/core/daynight/weather_controller.gd b/core/daynight/weather_controller.gd index 0805d91..ff058b8 100644 --- a/core/daynight/weather_controller.gd +++ b/core/daynight/weather_controller.gd @@ -34,6 +34,7 @@ var rain_tween: Tween var rain_audio_tween: Tween var puddle_tween: Tween var puddle_amount: float = 0.0 +var clouds_tween: Tween var snow_tween: Tween var snow_particles_tween: Tween @@ -247,11 +248,17 @@ func _process(delta: float) -> void: sky_mat.set_shader_parameter("sun_color", final_tint) sky_mat.set_shader_parameter("night_intensity", night_val) + var cloud_density_amount: float = maxf(clamp(rain_intensity, 0.0, 1.0), clamp(actual_snow_amount, 0.0, 1.0)) + var current_cloud_density: float = lerp(environment_config.base_cloud_density, environment_config.rain_cloud_density, cloud_density_amount) + if environment_config.material_clouds: - var current_density = lerp(0.4, 1.0, rain_intensity) - environment_config.material_clouds.set_shader_parameter("cloud_density", current_density) - var current_sharpness = lerp(0.14, 0.0, rain_intensity) + environment_config.material_clouds.set_shader_parameter("cloud_density", current_cloud_density) + var current_sharpness = lerp(0.14, 0.0, cloud_density_amount) environment_config.material_clouds.set_shader_parameter("center_sharpness", current_sharpness) + + var env_shadow_mat = environment_shadows.get_surface_override_material(0) if environment_shadows else null + if env_shadow_mat: + env_shadow_mat.set_shader_parameter("cloud_density", current_cloud_density) if environment_config.material_fog: environment_config.material_fog.set_shader_parameter("night_intensity", night_val) @@ -666,7 +673,7 @@ func toggle_rain(value: bool): if puddle_tween and puddle_tween.is_valid(): puddle_tween.kill() - + if is_raining: particles_rain.amount_ratio = 0.0 particles_rain.emitting = true diff --git a/core/environment_config.gd b/core/environment_config.gd index f6f4f53..9d3fcaf 100644 --- a/core/environment_config.gd +++ b/core/environment_config.gd @@ -98,6 +98,7 @@ extends Resource @export var material_fog: ShaderMaterial #Fog overlay shader material @export var material_drops: StandardMaterial3D #Rain drops material (albedo tinted by sky) @export var material_clouds: ShaderMaterial #Cloud layer shader material +@export var base_cloud_density: float = 0.4 #default cloud density #Rain weather settings @export_group("Rain") @@ -106,6 +107,7 @@ extends Resource @export var rain_audio_volume_db: float = -10.0 #Target rain loop volume in decibels @export var puddle_form_time: float = 15.0 #Seconds for puddles to fully form @export var puddle_dry_time: float = 20.0 #Seconds for puddles to fully dry after rain stops +@export var rain_cloud_density: float = 1.0 #the cloud density when is rainy #Storm settings (applied on top of rain when storm is active) @export_group("Storm") diff --git a/tgcc/chunk/material/water_river.tres b/tgcc/chunk/material/water_river.tres index e3a8e55..99d57ba 100644 --- a/tgcc/chunk/material/water_river.tres +++ b/tgcc/chunk/material/water_river.tres @@ -1,6 +1,6 @@ [gd_resource type="ShaderMaterial" format=3 uid="uid://d37iugof887py"] -[ext_resource type="Shader" uid="uid://cb12c2j8rfu6a" path="res://core/daynight/water_river.gdshader" id="1_qxgaw"] +[ext_resource type="Shader" path="res://core/daynight/water_river.gdshader" id="1_qxgaw"] [sub_resource type="FastNoiseLite" id="FastNoiseLite_qxgaw"]