68 lines
2.4 KiB
Plaintext
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")
|