/// tip:"Ensure colorbuffer is alpha clear before calling this one." uniform int thickness; /// set:2 uniform vec4 border_color; /// set:1,1,0,1 void main() { vec4 texel = texture(iChannel0, uv); float outline = 0.0; if( texel.a == 0.0 ) { for( int x = -thickness; x <= thickness; x++ ) { for( int y = -thickness;y <= thickness; y++ ) { float sample = texture(iChannel0, uv+vec2(float(x)/iWidth, float(y)/iHeight)).a; if( sample > 0.0 ) { outline = 1.0; } } } } if( outline == 0.0 ) discard; FRAGCOLOR = vec4(border_color.rgb, outline * border_color.a); }