From e430bebd90992dfb40900c33252117f9a75c45d7 Mon Sep 17 00:00:00 2001 From: Even Oscar Andersen Date: Wed, 18 Sep 2024 13:18:36 +0200 Subject: [PATCH] wasm: Fix for loops in gaussianBlur fragment shader The for loops must have constants like: for(int i = 0; i < 100; i += 1) and not dynamics like: for(float i = mini; i <= maxi; i += di) Fixes: QDS-13685 --- src/imports/designeffects/shaders/gaussianBlur.frag | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/imports/designeffects/shaders/gaussianBlur.frag b/src/imports/designeffects/shaders/gaussianBlur.frag index 0926676..0e877d9 100644 --- a/src/imports/designeffects/shaders/gaussianBlur.frag +++ b/src/imports/designeffects/shaders/gaussianBlur.frag @@ -24,11 +24,19 @@ vec4 gaussianBlur(sampler2D tex, int miplevel) { float k = ceil(blurKernel); // Normalize kernel weights - for (float i = -k; i <= k; ++i) { + float i = -k; + for(int ii = 0; ii < 10000; ++ii) { + if (i > k) + break; sum += exp(-0.5 * pow(i / sigma, 2.0)) / (sqrtDoublePI * sigma); + ++i; } - for (float i = -k; i <= k; ++i) { + i = -k; + for(int ii = 0; ii < 10000; ++ii) { + if (i > k) + break; + vec2 coord = qt_TexCoord0 + (pixelSize * float(i)); float weight = exp(-0.5 * pow(i / sigma, 2.0)) / (sqrtDoublePI * sigma); @@ -39,6 +47,7 @@ vec4 gaussianBlur(sampler2D tex, int miplevel) { } else { col += texture(tex, coord) * weight / sum; } + ++i; } return col;