shader_type spatial; render_mode blend_mix, cull_back, unshaded; uniform vec4 shadowTopColor : source_color; uniform vec4 shadowBottomColor: source_color; uniform float opacity: hint_range(0, 5) = 1; uniform float scaling: hint_range(0, 5) = 1; void vertex() { VERTEX += NORMAL * 0.001; } void fragment() { vec4 mixedColor = mix( shadowTopColor, shadowBottomColor, UV.y ); ALBEDO = mixedColor.rgb; float d = scaling * length ( UV - vec2( 0.5, 0.5 ) ) / length( vec2( 0.5, 0.5 )); ALPHA *= min( 1.0, mixedColor.a * opacity * d ); }