Skip to content

Instantly share code, notes, and snippets.

@CIOSAI
Created August 20, 2022 07:11
Show Gist options
  • Save CIOSAI/39ae5866c047a17020753be4eae2c497 to your computer and use it in GitHub Desktop.
Save CIOSAI/39ae5866c047a17020753be4eae2c497 to your computer and use it in GitHub Desktop.
Edge Tracing Shader in Godot
shader_type canvas_item;
uniform sampler2D tex;
uniform float intensity;
uniform vec4 color : hint_color;
uniform float speed;
float sample(in vec2 st){
return texture(tex, st).a;
}
void fragment(){
float t = TIME*speed;
vec2 px = vec2(1.)/vec2(textureSize(tex, 0));
float neighbor =
sample(UV+px*vec2( 1., 0.))+
sample(UV+px*vec2( 0., 1.))+
sample(UV+px*vec2(-1., 0.))+
sample(UV+px*vec2( 0., -1.));
float center = sample(UV)*4.;
float edge = clamp(neighbor-center, 0., 1.);
float lit = dot(UV-vec2(.5), vec2(cos(t), sin(t)))-t;
lit = mod(lit, 1.);
lit = pow(lit, 12.);
COLOR = vec4(color.rgb*vec3(intensity), edge*lit);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment