diff --git a/core/daynight/grass_leaves.gdshader b/core/daynight/grass_leaves.gdshader index 25cb1ba..c29360f 100644 --- a/core/daynight/grass_leaves.gdshader +++ b/core/daynight/grass_leaves.gdshader @@ -13,6 +13,7 @@ global uniform float global_snow_accumulation_speed = 0.005; global uniform float global_snow_melt_time = -1.0; global uniform float global_snow_melt_speed = 0.1; global uniform float global_snow_amount = 0.0; +global uniform vec4 global_snow_color = vec4(0.92, 0.96, 1.0, 1.0); global uniform float global_rain_intensity; // --- PARAMETRI ESTETICI --- @@ -133,7 +134,7 @@ void fragment() { // Applichiamo la variazione al colore finale dell'erba vec3 varied_grass_color = mix(v_final_color, variance_color.rgb, noise_sample * variance_intensity); - float snow_amount = smoothstep(0.0, 1.0, get_snow_progress()); + float snow_amount = pow(get_snow_progress(), 0.55); float top_mask = 1.0 - shifted_uv.y; float snow_start = 1.0 - clamp(snow_coverage, 0.05, 1.0); @@ -141,8 +142,9 @@ void fragment() { snow_mask *= step(0.01, snow_amount); snow_mask = clamp(snow_mask, 0.0, 1.0); - vec3 dark_snow = snow_color.rgb * (1.0 - shadow_intensity); - vec3 shaded_snow = mix(dark_snow, snow_color.rgb, v_shade_factor); + vec3 snow_base_color = max(snow_color.rgb, global_snow_color.rgb); + float snow_light = mix(0.82, 1.0, max(v_shade_factor, 0.35)); + vec3 shaded_snow = clamp(snow_base_color * snow_light, 0.0, 1.0); // Mescoliamo il colore variato con la neve vec3 final_albedo = mix(varied_grass_color, shaded_snow, snow_mask); diff --git a/core/daynight/tree_leaves.gdshader b/core/daynight/tree_leaves.gdshader index b178515..11f777e 100644 --- a/core/daynight/tree_leaves.gdshader +++ b/core/daynight/tree_leaves.gdshader @@ -111,8 +111,8 @@ void fragment() { float snow_mask = smoothstep(1.0 - snow_amount * 1.35, 1.08 - snow_amount * 1.35, top_mask) * snow_visibility; snow_mask *= step(0.01, snow_amount); - vec3 dark_snow = global_snow_color.rgb * (1.0 - shadow_intensity); - vec3 shaded_snow = mix(dark_snow, global_snow_color.rgb, v_shade_factor); + float snow_light = mix(0.82, 1.0, max(v_shade_factor, 0.35)); + vec3 shaded_snow = clamp(global_snow_color.rgb * snow_light, 0.0, 1.0); vec3 final_albedo = mix(v_final_color, shaded_snow, snow_mask); // Rain wetness: darken and make shinier diff --git a/tgcc/chunk/prop/grass/grass_bank.tres b/tgcc/chunk/prop/grass/grass_bank.tres index 7ec77e5..e8d3bd7 100644 --- a/tgcc/chunk/prop/grass/grass_bank.tres +++ b/tgcc/chunk/prop/grass/grass_bank.tres @@ -20,8 +20,8 @@ shader_parameter/variance_scale = 0.1 shader_parameter/variance_color = Color(0.09803922, 0.18039216, 0.05490196, 1) shader_parameter/variance_intensity = 0.90000004275 shader_parameter/snow_color = Color(0.85, 0.9, 0.95, 1) -shader_parameter/snow_visibility = 1.0 -shader_parameter/snow_coverage = 0.35 +shader_parameter/snow_visibility = 1.6 +shader_parameter/snow_coverage = 0.65 shader_parameter/height_min = 0.0 shader_parameter/height_max = 5.0 shader_parameter/shadow_intensity = 0.610000028975 diff --git a/tgcc/chunk/prop/grass/grass_chunk.tres b/tgcc/chunk/prop/grass/grass_chunk.tres index 058b37c..714b9a0 100644 --- a/tgcc/chunk/prop/grass/grass_chunk.tres +++ b/tgcc/chunk/prop/grass/grass_chunk.tres @@ -28,8 +28,8 @@ shader_parameter/variance_scale = 0.06 shader_parameter/variance_color = Color(0.3, 0.5, 0.2, 1) shader_parameter/variance_intensity = 0.350000016625 shader_parameter/snow_color = Color(0.85, 0.9, 0.95, 1) -shader_parameter/snow_visibility = 1.0 -shader_parameter/snow_coverage = 0.35 +shader_parameter/snow_visibility = 1.6 +shader_parameter/snow_coverage = 0.65 shader_parameter/height_min = 0.0 shader_parameter/height_max = 5.0 shader_parameter/shadow_intensity = 0.6000000285