fix snow for grass

This commit is contained in:
2026-07-01 17:26:59 +02:00
parent 802a7ef7c1
commit d47bc26583
4 changed files with 11 additions and 9 deletions

View File

@@ -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_time = -1.0;
global uniform float global_snow_melt_speed = 0.1; global uniform float global_snow_melt_speed = 0.1;
global uniform float global_snow_amount = 0.0; 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; global uniform float global_rain_intensity;
// --- PARAMETRI ESTETICI --- // --- PARAMETRI ESTETICI ---
@@ -133,7 +134,7 @@ void fragment() {
// Applichiamo la variazione al colore finale dell'erba // Applichiamo la variazione al colore finale dell'erba
vec3 varied_grass_color = mix(v_final_color, variance_color.rgb, noise_sample * variance_intensity); 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 top_mask = 1.0 - shifted_uv.y;
float snow_start = 1.0 - clamp(snow_coverage, 0.05, 1.0); 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 *= step(0.01, snow_amount);
snow_mask = clamp(snow_mask, 0.0, 1.0); snow_mask = clamp(snow_mask, 0.0, 1.0);
vec3 dark_snow = snow_color.rgb * (1.0 - shadow_intensity); vec3 snow_base_color = max(snow_color.rgb, global_snow_color.rgb);
vec3 shaded_snow = mix(dark_snow, snow_color.rgb, v_shade_factor); 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 // Mescoliamo il colore variato con la neve
vec3 final_albedo = mix(varied_grass_color, shaded_snow, snow_mask); vec3 final_albedo = mix(varied_grass_color, shaded_snow, snow_mask);

View File

@@ -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; 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); snow_mask *= step(0.01, snow_amount);
vec3 dark_snow = global_snow_color.rgb * (1.0 - shadow_intensity); float snow_light = mix(0.82, 1.0, max(v_shade_factor, 0.35));
vec3 shaded_snow = mix(dark_snow, global_snow_color.rgb, v_shade_factor); 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); vec3 final_albedo = mix(v_final_color, shaded_snow, snow_mask);
// Rain wetness: darken and make shinier // Rain wetness: darken and make shinier

View File

@@ -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_color = Color(0.09803922, 0.18039216, 0.05490196, 1)
shader_parameter/variance_intensity = 0.90000004275 shader_parameter/variance_intensity = 0.90000004275
shader_parameter/snow_color = Color(0.85, 0.9, 0.95, 1) shader_parameter/snow_color = Color(0.85, 0.9, 0.95, 1)
shader_parameter/snow_visibility = 1.0 shader_parameter/snow_visibility = 1.6
shader_parameter/snow_coverage = 0.35 shader_parameter/snow_coverage = 0.65
shader_parameter/height_min = 0.0 shader_parameter/height_min = 0.0
shader_parameter/height_max = 5.0 shader_parameter/height_max = 5.0
shader_parameter/shadow_intensity = 0.610000028975 shader_parameter/shadow_intensity = 0.610000028975

View File

@@ -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_color = Color(0.3, 0.5, 0.2, 1)
shader_parameter/variance_intensity = 0.350000016625 shader_parameter/variance_intensity = 0.350000016625
shader_parameter/snow_color = Color(0.85, 0.9, 0.95, 1) shader_parameter/snow_color = Color(0.85, 0.9, 0.95, 1)
shader_parameter/snow_visibility = 1.0 shader_parameter/snow_visibility = 1.6
shader_parameter/snow_coverage = 0.35 shader_parameter/snow_coverage = 0.65
shader_parameter/height_min = 0.0 shader_parameter/height_min = 0.0
shader_parameter/height_max = 5.0 shader_parameter/height_max = 5.0
shader_parameter/shadow_intensity = 0.6000000285 shader_parameter/shadow_intensity = 0.6000000285