Files
zfxaction25/DonkeysAndDroids.Godot/debuffed_area.tscn
2026-04-19 00:43:27 +02:00

68 lines
2.4 KiB
Plaintext

[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")