shader_type spatial; render_mode blend_mix, depth_draw_opaque; global uniform float global_snow_amount; uniform vec4 snow_color : source_color = vec4(0.95, 0.98, 1.0, 1.0); void fragment() { vec3 world_normal = (INV_VIEW_MATRIX * vec4(NORMAL, 0.0)).xyz; float up_dot = dot(world_normal, vec3(0.0, 1.0, 0.0)); float snow_mask = smoothstep(1.0 - global_snow_amount, 1.1 - global_snow_amount, up_dot); snow_mask *= step(0.01, global_snow_amount); ALBEDO = snow_color.rgb; ALPHA = snow_mask; ROUGHNESS = 0.3; SPECULAR = 0.5; }