// From https://www.reddit.com/r/godot/comments/12cb1t2/comment/jf1y66f/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button
shader_type canvas_item;
render_mode blend_mix;

uniform float radius = 4.0;
uniform int steps = 32;
uniform float vertex_expand = 1.0;

mat2 rotationMatrix(float angle){
	angle *= PI / 180.0;
	float s = sin(angle);
	float c = cos(angle);
	return mat2( vec2(c, -s), vec2( s, c) );
}

void vertex() {
	VERTEX.x *= vertex_expand;
	VERTEX.y *= vertex_expand;
}

void fragment() {
	float uvx = UV.x * vertex_expand - vertex_expand/2.0 + 0.5;
	float uvy = UV.y * vertex_expand - vertex_expand/2.0 + 0.5;
	vec2 new_uv = vec2(uvx,uvy);
	vec4 col = texture(TEXTURE, new_uv);
	float angle = 360.0 / float(steps);
	for (int i = 0; i < steps; i++){
		col += texture(TEXTURE, new_uv + vec2(radius, 0.0) * rotationMatrix(angle*float(i)) * TEXTURE_PIXEL_SIZE);
	}
	col /= float(steps) + 1.0;
	COLOR = col;
}