[gd_scene load_steps=6 format=3 uid="uid://bv7h6vofl5nw3"] [ext_resource type="Script" uid="uid://gdp1jvwnkerk" path="res://CorruptionArea.cs" id="1_kmgf5"] [ext_resource type="Texture2D" uid="uid://coqmy50cy4vdu" path="res://images/noise.png" id="2_lq7ir"] [sub_resource type="Shader" id="Shader_corruption"] code = "shader_type spatial; render_mode blend_mix, cull_back, unshaded; render_mode depth_draw_never; uniform vec4 base_color : source_color = vec4(0.6, 0.1, 0.8, 0.45); uniform sampler2D noise_texture : hint_default_black; uniform float edge_softness = 0.35; uniform float noise_strength = 0.35; uniform float noise_scale = 3.0; uniform float noise_speed = 0.6; // Driven from C# to make the effect pulse slightly. uniform float u_pulse = 1.0; void fragment() { // PlaneMesh UV is 0..1. Remap to -1..1 so radius=1 matches the mesh edge. vec2 centered_uv = UV * 2.0 - vec2(1.0); float r = length(centered_uv); // Circular mask that is 1.0 in the center and fades out to 0.0 near radius 1.0. float circle_mask = 1.0 - smoothstep(1.0 - edge_softness, 1.0, r); // Animated noise used to break up the edge and interior. float t = TIME * noise_speed; vec2 noise_uv = UV * noise_scale + vec2(t, -t); float n = texture(noise_texture, noise_uv).r * 2.0 - 1.0; float wobble = 1.0 + n * noise_strength * u_pulse; float alpha = base_color.a * circle_mask * wobble; alpha = clamp(alpha, 0.0, base_color.a); ALBEDO = base_color.rgb; ALPHA = alpha; }" [sub_resource type="ShaderMaterial" id="ShaderMaterial_corruption"] render_priority = 0 shader = SubResource("Shader_corruption") shader_parameter/base_color = Color(0.09600001, 0.1664001, 0.8, 0.4509804) shader_parameter/noise_texture = ExtResource("2_lq7ir") shader_parameter/edge_softness = 0.25 shader_parameter/noise_strength = 1.0 shader_parameter/noise_scale = 1.0 shader_parameter/noise_speed = 0.1 shader_parameter/u_pulse = 1.0 [sub_resource type="PlaneMesh" id="PlaneMesh_corruption"] subdivide_width = 4 subdivide_depth = 4 [node name="DebuffedArea" type="Node3D"] script = ExtResource("1_kmgf5") Color = Color(0.26999998, 1, 0.4281667, 0.6745098) [node name="Disc" type="MeshInstance3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.02, 0) material_override = SubResource("ShaderMaterial_corruption") cast_shadow = 0 mesh = SubResource("PlaneMesh_corruption")