33 lines
955 B
Text
33 lines
955 B
Text
|
// 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;
|
||
|
}
|