i wanted to add a cool background to some game i’m making for a friend, so i had a lil fun with glsl and made this.

i uploaded a short screen recording on all the parameters, but apparently catbox doesn’t work well with that anymore. So I replaced it with this image.

here is the code, use it however u want <3

shader_type canvas_item;

uniform sampler2D gradient : source_color;

uniform vec2 frequency = vec2(10.0, 10.0);

uniform float amplitude = 1.0;

uniform vec2 offset;

// 0.0 = zigzag; 1.0 = sin wave
uniform float smoothness : hint_range(0.0, 1.0) = 0.0;

float zig_zag(float value){
	float is_even = step(0.5, fract(value * 0.5));
	float rising = fract(value);
	float falling = (rising - 1.0) * -1.0;
	
	float result = mix(rising, falling, is_even);
	return result;
}

float smoothzag(float value, float _smoothness){
	float z = zig_zag(value);
	float s = (cos((value + 1.0) * PI)) * 0.5 + 0.5;
	return mix(z, s, _smoothness);
}

void fragment() {
	float sinus = zig_zag(((UV.y*2.0-1.0) + smoothzag((UV.x*2.0-1.0) * frequency.x - offset.x, smoothness) * amplitude * 0.1) * frequency.y - offset.y);
	COLOR = texture(gradient, vec2(sinus, 0.0));
}

if u have any questions, ask right away!