32 lines
1 KiB
Text
32 lines
1 KiB
Text
shader_type spatial;
|
|
|
|
uniform vec2 resolution = vec2(600.0, 400.0);
|
|
uniform vec3 line_color: source_color = vec3(0.2, 0.6, 0.2);
|
|
uniform float line_thickness: hint_range(0.01, 1.0, 0.01) = 0.05;
|
|
uniform float speed = 0.5;
|
|
uniform float amp_coef = 0.1;
|
|
uniform float freq_coef = 0.5;
|
|
uniform float iterations: hint_range(1.0, 20.0, 1.0) = 5.0;
|
|
uniform float brightness: hint_range(0.1, 20.0, 0.1) = 0.5;
|
|
|
|
vec3 draw_line(vec2 uv, vec3 color, float shift, float freq) {
|
|
uv.y += (1.0 - smoothstep(0.0, 1.0, abs(uv.x))) * sin(uv.x + shift * freq) * amp_coef * sin(uv.x + shift);
|
|
return (1.0 - smoothstep(0.0, line_thickness * (smoothstep(-0.2, 0.9, abs(uv.x))), abs(uv.y))) * color;
|
|
}
|
|
|
|
void fragment() {
|
|
// Move the center of the uv to the center of the Mesh
|
|
vec2 uv = UV - 0.5;
|
|
|
|
// Apply the aspect ratio
|
|
uv.x *= resolution.x / resolution.y;
|
|
|
|
float shift = TIME * speed;
|
|
|
|
vec3 color = vec3(0.0);
|
|
for (float i = 0.0; i < iterations; i += 1.0) {
|
|
color += draw_line(uv, line_color, shift + i * 0.4, 1.0 + freq_coef);
|
|
}
|
|
|
|
ALBEDO = color * brightness;
|
|
}
|