I want to blur a 2D line so I'm trying to translate the algorythm found on Wikipedia.
This totally naive translation doesn't work, the 2DNode is just colored in full white.
shader_type canvas_item;
void fragment() {
float kernel_size = 3.0;
vec4 upperRow = texture(TEXTURE, UV + vec2(- kernel_size, kernel_size)) +
texture(TEXTURE, UV + vec2(0, kernel_size)) +
texture(TEXTURE, UV + vec2(kernel_size, kernel_size));
vec4 centerRow = texture(TEXTURE, UV + vec2(- kernel_size, 0)) +
texture(TEXTURE, UV ) +
texture(TEXTURE, UV + vec2(kernel_size, 0));
vec4 bottomRow = texture(TEXTURE, UV + vec2(- kernel_size, - kernel_size)) +
texture(TEXTURE, UV + vec2(0, - kernel_size)) +
texture(TEXTURE, UV + vec2(kernel_size, - kernel_size));
COLOR = (upperRow + centerRow + bottomRow) / 9.0;
}
Here's the 2D node script who draw the lines.
tool
extends Node2D
export (Color) var linecenter
export (Color) var backline
#
func _draw():
draw_line(position, Vector2(get_viewport_rect().size.x/2, get_viewport_rect().size.y/2),
backline, 10)
draw_line(position, Vector2(get_viewport_rect().size.x/2, get_viewport_rect().size.y/2),
linecenter, 2)
func _ready():
pass
Sorry if my misunderstanding is stupid, I'm new on shaders.