Created
August 20, 2022 07:11
-
-
Save CIOSAI/39ae5866c047a17020753be4eae2c497 to your computer and use it in GitHub Desktop.
Edge Tracing Shader in Godot
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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