From f1e0d57db778a4ed10d38d2e6a1802e573084bf0 Mon Sep 17 00:00:00 2001 From: Simon Schneegans Date: Sat, 27 Aug 2022 20:56:55 +0200 Subject: [PATCH] :wrench: Fade melting window at outer boundaries --- resources/shaders/doom.frag | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/resources/shaders/doom.frag b/resources/shaders/doom.frag index 4672c94..b8b609a 100644 --- a/resources/shaders/doom.frag +++ b/resources/shaders/doom.frag @@ -18,6 +18,15 @@ uniform float uHorizontalScale; uniform float uVerticalScale; uniform float uPixelSize; +// This method returns a mask which smoothly transitions towards zero when approaching +// the window's top or bottom border. +float getEdgeMask(vec2 uv, float fadeWidth) { + float mask = 1.0; + mask *= smoothstep(0.0, 1.0, clamp(uv.y / fadeWidth, 0.0, 1.0)); + mask *= smoothstep(0.0, 1.0, clamp((1.0 - uv.y) / fadeWidth, 0.0, 1.0)); + return mask; +} + void main() { // We simply inverse the progress for opening windows. float pixelateProgress = uForOpening ? 0.9 - uProgress : uProgress; @@ -47,5 +56,7 @@ void main() { vec4 oColor = getInputColor(texcoord); + oColor.a *= getEdgeMask(iTexCoord.st, 0.1); + setOutputColor(oColor); } \ No newline at end of file