shader_type canvas_item; uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest; uniform float kernelOffset = 1; void fragment() { vec2 pixelSize = SCREEN_PIXEL_SIZE * kernelOffset; vec4 blurred = vec4( 0, 0, 0, 0 ); int kernel = 2; for ( int x = -kernel; x<= kernel; ++x ) { for ( int y = -kernel; y<= kernel; ++y ) { vec2 sampledUV = SCREEN_UV + pixelSize * vec2( float(x), float( y ) ); vec4 value = textureLod( screen_texture, sampledUV, 0 ); if ( ( value.r + value.g + value.b ) * 255.0 < 10.0 ) { value.a = 0.0; } blurred += value; } } blurred /= float( kernel * kernel ); COLOR = blurred; ; }