From e18fd7a14edd4b25a99a336ff644c88c2e100743 Mon Sep 17 00:00:00 2001 From: ChaoticByte Date: Wed, 19 Jun 2024 14:50:43 +0200 Subject: [PATCH] Added filter rgb_uv_distort.gdshader and improved greyscale.gdshader --- src/presets/Presets.gd | 1 + src/presets/shaders/greyscale.gdshader | 8 ++++---- src/presets/shaders/rgb_uv_distort.gdshader | 11 +++++++++++ 3 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 src/presets/shaders/rgb_uv_distort.gdshader diff --git a/src/presets/Presets.gd b/src/presets/Presets.gd index d432d35..4d4cece 100644 --- a/src/presets/Presets.gd +++ b/src/presets/Presets.gd @@ -6,6 +6,7 @@ const dir = "res://src/presets/shaders/" "Empty": load(dir + "empty.gdshader"), "Greyscale": load(dir + "greyscale.gdshader"), "Lowpass": load(dir + "lowpass.gdshader"), + "RGB -> UV Distort": load(dir + "rgb_uv_distort.gdshader"), "Mix": load(dir + "mix.gdshader") } diff --git a/src/presets/shaders/greyscale.gdshader b/src/presets/shaders/greyscale.gdshader index 2c0f19d..cd70a78 100644 --- a/src/presets/shaders/greyscale.gdshader +++ b/src/presets/shaders/greyscale.gdshader @@ -1,10 +1,10 @@ shader_type canvas_item; void fragment() { - // TODO: not only r vec4 tex = texture(TEXTURE , UV); - COLOR.r = tex.r; - COLOR.g = tex.r; - COLOR.b = tex.r; + float b = (COLOR.r + COLOR.g + COLOR.b) / 3.0; + COLOR.r = b; + COLOR.g = b; + COLOR.b = b; COLOR.a = tex.a; } diff --git a/src/presets/shaders/rgb_uv_distort.gdshader b/src/presets/shaders/rgb_uv_distort.gdshader new file mode 100644 index 0000000..c07466b --- /dev/null +++ b/src/presets/shaders/rgb_uv_distort.gdshader @@ -0,0 +1,11 @@ +shader_type canvas_item; + +const float strength = 0.1; + +void fragment() { + vec2 uv = UV; + float b = (COLOR.r + COLOR.g + COLOR.b) / 3.0; + uv.x = mix(uv.x, b, strength); + uv.y = mix(uv.y, b, strength); + COLOR = texture(TEXTURE, uv); +}