shader_type spatial; // "unshaded" rende il materiale immune alle altre luci della scena render_mode unshaded, depth_draw_opaque; uniform vec4 shadow_color : source_color = vec4(0.0, 0.0, 0.0, 0.6); uniform float radius : hint_range(0.0, 1.0) = 0.45; uniform float softness : hint_range(0.0, 1.0) = 0.1; void fragment() { // Calcola la distanza del pixel dal centro del piano (UV 0.5, 0.5) float dist = distance(UV, vec2(0.5, 0.5)); // smoothstep crea una transizione morbida per i bordi dell'ombra float mask = smoothstep(radius, radius - softness, dist); // Applica il colore e gestisce la trasparenza usando la maschera ALBEDO = shadow_color.rgb; ALPHA = mask * shadow_color.a; }