aboutsummaryrefslogtreecommitdiffstats
path: root/quickmultieffect/shaders
diff options
context:
space:
mode:
Diffstat (limited to 'quickmultieffect/shaders')
-rw-r--r--quickmultieffect/shaders/bluritems.frag21
-rw-r--r--quickmultieffect/shaders/bluritems.frag.qsbbin0 -> 1721 bytes
-rw-r--r--quickmultieffect/shaders/bluritems.vert23
-rw-r--r--quickmultieffect/shaders/bluritems.vert.qsbbin0 -> 2369 bytes
-rw-r--r--quickmultieffect/shaders/compatibility/bluritems.frag12
-rw-r--r--quickmultieffect/shaders/compatibility/bluritems.vert17
-rw-r--r--quickmultieffect/shaders/compile.bat96
-rw-r--r--quickmultieffect/shaders/core/bluritems.frag14
-rw-r--r--quickmultieffect/shaders/core/bluritems.vert18
-rw-r--r--quickmultieffect/shaders/multieffect.frag145
-rw-r--r--quickmultieffect/shaders/multieffect.vert38
-rw-r--r--quickmultieffect/shaders/multieffect_c.vert.qsbbin0 -> 2423 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_c0.frag.qsbbin0 -> 2903 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cb1.frag.qsbbin0 -> 3109 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cb2.frag.qsbbin0 -> 3253 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cb3.frag.qsbbin0 -> 3397 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cb4.frag.qsbbin0 -> 3558 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cb5.frag.qsbbin0 -> 3686 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cbs1.frag.qsbbin0 -> 3587 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cbs2.frag.qsbbin0 -> 3819 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cbs3.frag.qsbbin0 -> 3993 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cbs4.frag.qsbbin0 -> 4221 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cbs5.frag.qsbbin0 -> 4415 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cm0.frag.qsbbin0 -> 3580 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cmb1.frag.qsbbin0 -> 3791 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cmb2.frag.qsbbin0 -> 3939 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cmb3.frag.qsbbin0 -> 4094 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cmb4.frag.qsbbin0 -> 4224 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cmb5.frag.qsbbin0 -> 4344 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cmbs1.frag.qsbbin0 -> 4274 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cmbs2.frag.qsbbin0 -> 4482 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cmbs3.frag.qsbbin0 -> 4664 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cmbs4.frag.qsbbin0 -> 4883 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cmbs5.frag.qsbbin0 -> 5095 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cms0.frag.qsbbin0 -> 3933 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cms1.frag.qsbbin0 -> 4235 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cms2.frag.qsbbin0 -> 4407 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cms3.frag.qsbbin0 -> 4505 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cms4.frag.qsbbin0 -> 4673 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cms5.frag.qsbbin0 -> 4783 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cs.vert.qsbbin0 -> 2640 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cs0.frag.qsbbin0 -> 3229 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cs1.frag.qsbbin0 -> 3523 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cs2.frag.qsbbin0 -> 3705 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cs3.frag.qsbbin0 -> 3845 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cs4.frag.qsbbin0 -> 3979 bytes
-rw-r--r--quickmultieffect/shaders/multieffect_cs5.frag.qsbbin0 -> 4097 bytes
47 files changed, 323 insertions, 61 deletions
diff --git a/quickmultieffect/shaders/bluritems.frag b/quickmultieffect/shaders/bluritems.frag
new file mode 100644
index 0000000..4198e2f
--- /dev/null
+++ b/quickmultieffect/shaders/bluritems.frag
@@ -0,0 +1,21 @@
+#version 440
+
+layout(location = 0) in vec2 texCoord0;
+layout(location = 1) in vec2 texCoord1;
+layout(location = 2) in vec2 texCoord2;
+layout(location = 3) in vec2 texCoord3;
+layout(location = 0) out vec4 fragColor;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 qt_Matrix;
+ float qt_Opacity;
+ vec2 offset;
+};
+
+layout(binding = 1) uniform sampler2D source;
+
+void main() {
+ vec4 sourceColor = (texture(source, texCoord0) + texture(source, texCoord1) +
+ texture(source, texCoord2) + texture(source, texCoord3)) / 4.0;
+ fragColor = sourceColor * qt_Opacity;
+}
diff --git a/quickmultieffect/shaders/bluritems.frag.qsb b/quickmultieffect/shaders/bluritems.frag.qsb
new file mode 100644
index 0000000..e2427ca
--- /dev/null
+++ b/quickmultieffect/shaders/bluritems.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/bluritems.vert b/quickmultieffect/shaders/bluritems.vert
new file mode 100644
index 0000000..83ca332
--- /dev/null
+++ b/quickmultieffect/shaders/bluritems.vert
@@ -0,0 +1,23 @@
+#version 440
+
+layout(location = 0) in vec4 qt_Vertex;
+layout(location = 1) in vec2 qt_MultiTexCoord0;
+layout(location = 0) out vec2 texCoord0;
+layout(location = 1) out vec2 texCoord1;
+layout(location = 2) out vec2 texCoord2;
+layout(location = 3) out vec2 texCoord3;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 qt_Matrix;
+ float qt_Opacity;
+ vec2 offset;
+};
+
+void main() {
+ float dither = 0.33;
+ texCoord0 = vec2(qt_MultiTexCoord0.x + offset.x, qt_MultiTexCoord0.y + offset.y * dither);
+ texCoord1 = vec2(qt_MultiTexCoord0.x + offset.x * dither, qt_MultiTexCoord0.y - offset.y);
+ texCoord2 = vec2(qt_MultiTexCoord0.x - offset.x * dither, qt_MultiTexCoord0.y + offset.y);
+ texCoord3 = vec2(qt_MultiTexCoord0.x - offset.x, qt_MultiTexCoord0.y - offset.y * dither);
+ gl_Position = qt_Matrix * qt_Vertex;
+}
diff --git a/quickmultieffect/shaders/bluritems.vert.qsb b/quickmultieffect/shaders/bluritems.vert.qsb
new file mode 100644
index 0000000..a1c1c98
--- /dev/null
+++ b/quickmultieffect/shaders/bluritems.vert.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/compatibility/bluritems.frag b/quickmultieffect/shaders/compatibility/bluritems.frag
deleted file mode 100644
index 54ce994..0000000
--- a/quickmultieffect/shaders/compatibility/bluritems.frag
+++ /dev/null
@@ -1,12 +0,0 @@
-uniform lowp sampler2D source;
-uniform lowp float qt_Opacity;
-varying highp vec2 texCoord0;
-varying highp vec2 texCoord1;
-varying highp vec2 texCoord2;
-varying highp vec2 texCoord3;
-
-void main() {
- highp vec4 sourceColor = (texture2D(source, texCoord0) + texture2D(source, texCoord1) +
- texture2D(source, texCoord2) + texture2D(source, texCoord3)) / 4.0;
- gl_FragColor = sourceColor * qt_Opacity;
-}
diff --git a/quickmultieffect/shaders/compatibility/bluritems.vert b/quickmultieffect/shaders/compatibility/bluritems.vert
deleted file mode 100644
index ab31be1..0000000
--- a/quickmultieffect/shaders/compatibility/bluritems.vert
+++ /dev/null
@@ -1,17 +0,0 @@
-attribute highp vec4 qt_Vertex;
-attribute highp vec2 qt_MultiTexCoord0;
-uniform highp mat4 qt_Matrix;
-uniform highp vec2 step;
-varying highp vec2 texCoord0;
-varying highp vec2 texCoord1;
-varying highp vec2 texCoord2;
-varying highp vec2 texCoord3;
-
-void main() {
- lowp float dither = 0.33;
- texCoord0 = vec2(qt_MultiTexCoord0.x + step.x, qt_MultiTexCoord0.y + step.y * dither);
- texCoord1 = vec2(qt_MultiTexCoord0.x + step.x * dither, qt_MultiTexCoord0.y - step.y);
- texCoord2 = vec2(qt_MultiTexCoord0.x - step.x * dither, qt_MultiTexCoord0.y + step.y);
- texCoord3 = vec2(qt_MultiTexCoord0.x - step.x, qt_MultiTexCoord0.y - step.y * dither);
- gl_Position = qt_Matrix * qt_Vertex;
-}
diff --git a/quickmultieffect/shaders/compile.bat b/quickmultieffect/shaders/compile.bat
new file mode 100644
index 0000000..132db2f
--- /dev/null
+++ b/quickmultieffect/shaders/compile.bat
@@ -0,0 +1,96 @@
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::
+:: Copyright (C) 2021 The Qt Company Ltd.
+:: Contact: https://www.qt.io/licensing/
+::
+:: This file is part of the Qt Quick MultiEffect module of the Qt Toolkit.
+::
+:: $QT_BEGIN_LICENSE:LGPL$
+:: Commercial License Usage
+:: Licensees holding valid commercial Qt licenses may use this file in
+:: accordance with the commercial license agreement provided with the
+:: Software or, alternatively, in accordance with the terms contained in
+:: a written agreement between you and The Qt Company. For licensing terms
+:: and conditions see https://www.qt.io/terms-conditions. For further
+:: information use the contact form at https://www.qt.io/contact-us.
+::
+:: GNU Lesser General Public License Usage
+:: Alternatively, this file may be used under the terms of the GNU Lesser
+:: General Public License version 3 as published by the Free Software
+:: Foundation and appearing in the file LICENSE.LGPL3 included in the
+:: packaging of this file. Please review the following information to
+:: ensure the GNU Lesser General Public License version 3 requirements
+:: will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+::
+:: GNU General Public License Usage
+:: Alternatively, this file may be used under the terms of the GNU
+:: General Public License version 2.0 or (at your option) the GNU General
+:: Public license version 3 or any later version approved by the KDE Free
+:: Qt Foundation. The licenses are as published by the Free Software
+:: Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+:: included in the packaging of this file. Please review the following
+:: information to ensure the GNU General Public License requirements will
+:: be met: https://www.gnu.org/licenses/gpl-2.0.html and
+:: https://www.gnu.org/licenses/gpl-3.0.html.
+::
+:: $QT_END_LICENSE$
+::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+
+:: Multieffect fragment shaders ::
+:: c = Common color effects
+:: m = Mask
+:: b = Blur
+:: s = Shadow
+:: [n] = Amount of blur items used
+
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_c0.frag.qsb multieffect.frag
+qsb -DMASK --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cm0.frag.qsb multieffect.frag
+
+:: Special shaders for non-blurred shadows
+qsb -DBL0 -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cs0.frag.qsb multieffect.frag
+qsb -DBL0 -DMASK -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cms0.frag.qsb multieffect.frag
+
+:: Shaders for different blur levels
+qsb -DBL1 -DBLUR --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cb1.frag.qsb multieffect.frag
+qsb -DBL1 -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cs1.frag.qsb multieffect.frag
+qsb -DBL1 -DMASK -DBLUR --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cmb1.frag.qsb multieffect.frag
+qsb -DBL1 -DMASK -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cms1.frag.qsb multieffect.frag
+qsb -DBL1 -DBLUR -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cbs1.frag.qsb multieffect.frag
+qsb -DBL1 -DMASK -DBLUR -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cmbs1.frag.qsb multieffect.frag
+
+qsb -DBL1 -DBL2 -DBLUR --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cb2.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cs2.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DMASK -DBLUR --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cmb2.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DMASK -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cms2.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBLUR -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cbs2.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DMASK -DBLUR -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cmbs2.frag.qsb multieffect.frag
+
+qsb -DBL1 -DBL2 -DBL3 -DBLUR --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cb3.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cs3.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DMASK -DBLUR --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cmb3.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DMASK -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cms3.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DBLUR -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cbs3.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DMASK -DBLUR -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cmbs3.frag.qsb multieffect.frag
+
+qsb -DBL1 -DBL2 -DBL3 -DBL4 -DBLUR --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cb4.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DBL4 -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cs4.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DBL4 -DMASK -DBLUR --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cmb4.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DBL4 -DMASK -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cms4.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DBL4 -DBLUR -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cbs4.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DBL4 -DMASK -DBLUR -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cmbs4.frag.qsb multieffect.frag
+
+qsb -DBL1 -DBL2 -DBL3 -DBL4 -DBL5 -DBLUR --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cb5.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DBL4 -DBL5 -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cs5.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DBL4 -DBL5 -DMASK -DBLUR --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cmb5.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DBL4 -DBL5 -DMASK -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cms5.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DBL4 -DBL5 -DBLUR -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cbs5.frag.qsb multieffect.frag
+qsb -DBL1 -DBL2 -DBL3 -DBL4 -DBL5 -DMASK -DBLUR -DSHADOW --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cmbs5.frag.qsb multieffect.frag
+
+:: Multieffect vertex shaders ::
+qsb -b --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_c.vert.qsb multieffect.vert
+qsb -DSHADOW -b --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o multieffect_cs.vert.qsb multieffect.vert
+
+:: Bluritems shaders ::
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o bluritems.frag.qsb bluritems.frag
+qsb -b --glsl "150,120,100 es" --hlsl 50 --msl 12 -O -c -o bluritems.vert.qsb bluritems.vert
diff --git a/quickmultieffect/shaders/core/bluritems.frag b/quickmultieffect/shaders/core/bluritems.frag
deleted file mode 100644
index b2efa7b..0000000
--- a/quickmultieffect/shaders/core/bluritems.frag
+++ /dev/null
@@ -1,14 +0,0 @@
-#version 330 core
-uniform lowp sampler2D source;
-uniform lowp float qt_Opacity;
-in highp vec2 texCoord0;
-in highp vec2 texCoord1;
-in highp vec2 texCoord2;
-in highp vec2 texCoord3;
-out highp vec4 fragColor;
-
-void main() {
- highp vec4 sourceColor = (texture(source, texCoord0) + texture(source, texCoord1) +
- texture(source, texCoord2) + texture(source, texCoord3)) / 4.0;
- fragColor = sourceColor * qt_Opacity;
-}
diff --git a/quickmultieffect/shaders/core/bluritems.vert b/quickmultieffect/shaders/core/bluritems.vert
deleted file mode 100644
index 6c95a76..0000000
--- a/quickmultieffect/shaders/core/bluritems.vert
+++ /dev/null
@@ -1,18 +0,0 @@
-#version 330 core
-in highp vec4 qt_Vertex;
-in highp vec2 qt_MultiTexCoord0;
-uniform highp mat4 qt_Matrix;
-uniform highp vec2 step;
-out highp vec2 texCoord0;
-out highp vec2 texCoord1;
-out highp vec2 texCoord2;
-out highp vec2 texCoord3;
-
-void main() {
- lowp float dither = 0.33;
- texCoord0 = vec2(qt_MultiTexCoord0.x + step.x, qt_MultiTexCoord0.y + step.y * dither);
- texCoord1 = vec2(qt_MultiTexCoord0.x + step.x * dither, qt_MultiTexCoord0.y - step.y);
- texCoord2 = vec2(qt_MultiTexCoord0.x - step.x * dither, qt_MultiTexCoord0.y + step.y);
- texCoord3 = vec2(qt_MultiTexCoord0.x - step.x, qt_MultiTexCoord0.y - step.y * dither);
- gl_Position = qt_Matrix * qt_Vertex;
-}
diff --git a/quickmultieffect/shaders/multieffect.frag b/quickmultieffect/shaders/multieffect.frag
new file mode 100644
index 0000000..92ebe65
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect.frag
@@ -0,0 +1,145 @@
+#version 440
+
+layout(location = 0) in vec2 texCoord;
+layout(location = 1) in vec2 shadowTexCoord;
+layout(location = 0) out vec4 fragColor;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 qt_Matrix;
+ float qt_Opacity;
+
+ float shadowScale;
+ vec2 shadowOffset;
+ vec2 centerOffset;
+
+ float contrast;
+ float brightness;
+ float saturation;
+ vec4 colorizeColor;
+ vec4 blurWeight1;
+ vec2 blurWeight2;
+ vec4 mask;
+ float maskInverted;
+ vec4 shadowColor;
+ vec4 shadowBlurWeight1;
+ vec2 shadowBlurWeight2;
+};
+
+#if defined(BLUR) || defined(SHADOW)
+#if defined(BL1)
+layout(binding = 1) uniform sampler2D blurSrc1;
+layout(binding = 2) uniform sampler2D blurSrc2;
+#endif
+#if defined(BL2)
+layout(binding = 3) uniform sampler2D blurSrc3;
+#endif
+#if defined(BL3)
+layout(binding = 4) uniform sampler2D blurSrc4;
+#endif
+#if defined(BL4)
+layout(binding = 5) uniform sampler2D blurSrc5;
+#endif
+#if defined(BL5)
+layout(binding = 6) uniform sampler2D blurSrc6;
+#endif
+#endif // BLUR || SHADOW
+
+// This is a bit complicated to make sure
+// these have correct binding values
+#if defined(BL5)
+layout(binding = 7) uniform sampler2D src;
+#if defined(MASK)
+layout(binding = 8) uniform sampler2D maskSrc;
+#endif
+#elif defined(BL4)
+layout(binding = 6) uniform sampler2D src;
+#if defined(MASK)
+layout(binding = 7) uniform sampler2D maskSrc;
+#endif
+#elif defined(BL3)
+layout(binding = 5) uniform sampler2D src;
+#if defined(MASK)
+layout(binding = 6) uniform sampler2D maskSrc;
+#endif
+#elif defined(BL2)
+layout(binding = 4) uniform sampler2D src;
+#if defined(MASK)
+layout(binding = 5) uniform sampler2D maskSrc;
+#endif
+#elif defined(BL1)
+layout(binding = 3) uniform sampler2D src;
+#if defined(MASK)
+layout(binding = 4) uniform sampler2D maskSrc;
+#endif
+#else // BL0 or no blur or shadow
+layout(binding = 1) uniform sampler2D src;
+#if defined(MASK)
+layout(binding = 2) uniform sampler2D maskSrc;
+#endif
+
+#endif
+
+void main() {
+
+#if !defined(BLUR)
+ vec4 color = texture(src, texCoord);
+#else // BLUR
+ vec4 color = texture(blurSrc1, texCoord) * blurWeight1[0];
+ color += texture(blurSrc2, texCoord) * blurWeight1[1];
+#if defined(BL2)
+ color += texture(blurSrc3, texCoord) * blurWeight1[2];
+#endif
+#if defined(BL3)
+ color += texture(blurSrc4, texCoord) * blurWeight1[3];
+#endif
+#if defined(BL4)
+ color += texture(blurSrc5, texCoord) * blurWeight2[0];
+#endif
+#if defined(BL5)
+ color += texture(blurSrc6, texCoord) * blurWeight2[1];
+#endif
+#endif // BLUR
+
+ color.rgb = (color.rgb - 0.5 * color.a) * (1.0 + contrast) + 0.5 * color.a;
+ color.rgb += brightness * color.a;
+ float gray = dot(color.rgb, vec3(0.299, 0.587, 0.114));
+ color.rgb = gray * colorizeColor.rgb * colorizeColor.a + color.rgb * (1.0 - colorizeColor.a);
+ color.rgb = mix(vec3(gray), color.rgb, 1.0 + saturation);
+
+#if defined(SHADOW)
+ float shadow = 0.0;
+#if defined(BL0)
+ shadow = texture(src, shadowTexCoord).a;
+#endif
+#if defined(BL1)
+ shadow = texture(blurSrc1, shadowTexCoord).a * shadowBlurWeight1[0];
+ shadow += texture(blurSrc2, shadowTexCoord).a * shadowBlurWeight1[1];
+#endif
+#if defined(BL2)
+ shadow += texture(blurSrc3, shadowTexCoord).a * shadowBlurWeight1[2];
+#endif
+#if defined(BL3)
+ shadow += texture(blurSrc4, shadowTexCoord).a * shadowBlurWeight1[3];
+#endif
+#if defined(BL4)
+ shadow += texture(blurSrc5, shadowTexCoord).a * shadowBlurWeight2[0];
+#endif
+#if defined(BL5)
+ shadow += texture(blurSrc6, shadowTexCoord).a * shadowBlurWeight2[1];
+#endif
+ shadow *= shadowColor.a;
+ float aa = (1.0 - color.a) * (1.0 - shadow);
+ color.rgb = mix(shadowColor.rgb * shadow, color.rgb, color.a + aa);
+ color.a = 1.0 - aa;
+#endif // SHADOW
+
+#if defined(MASK)
+ float alphaMask = texture(maskSrc, texCoord).a;
+ float m1 = smoothstep(mask[0] * mask[1] - (mask[1] - 0.999), mask[0] * mask[1], alphaMask);
+ float m2 = smoothstep((1.0 - mask[2]) * mask[3] - (mask[3] - 0.999), (1.0 - mask[2]) * mask[3], (1.0 - alphaMask));
+ float mm = m1 * m2;
+ color *= (1.0 - maskInverted) * mm + maskInverted * (1.0 - mm);
+#endif // MASK
+
+ fragColor = color * qt_Opacity;
+}
diff --git a/quickmultieffect/shaders/multieffect.vert b/quickmultieffect/shaders/multieffect.vert
new file mode 100644
index 0000000..ceca103
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect.vert
@@ -0,0 +1,38 @@
+#version 440
+
+layout(location = 0) in vec4 qt_Vertex;
+layout(location = 1) in vec2 qt_MultiTexCoord0;
+layout(location = 0) out vec2 texCoord;
+#if defined(SHADOW)
+layout(location = 1) out vec2 shadowTexCoord;
+#endif
+
+layout(std140, binding = 0) uniform buf {
+ mat4 qt_Matrix;
+ float qt_Opacity;
+
+ float shadowScale;
+ vec2 shadowOffset;
+ vec2 centerOffset;
+
+ float contrast;
+ float brightness;
+ float saturation;
+ vec4 colorizeColor;
+ vec4 blurWeight1;
+ vec2 blurWeight2;
+ vec4 mask;
+ float maskInverted;
+ vec4 shadowColor;
+ vec4 shadowBlurWeight1;
+ vec2 shadowBlurWeight2;
+};
+
+void main() {
+ texCoord = qt_MultiTexCoord0;
+#if defined(SHADOW)
+ shadowTexCoord = qt_MultiTexCoord0 - shadowOffset;
+ shadowTexCoord = (shadowTexCoord * shadowScale) + centerOffset;
+#endif
+ gl_Position = qt_Matrix * qt_Vertex;
+}
diff --git a/quickmultieffect/shaders/multieffect_c.vert.qsb b/quickmultieffect/shaders/multieffect_c.vert.qsb
new file mode 100644
index 0000000..d6fa928
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_c.vert.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_c0.frag.qsb b/quickmultieffect/shaders/multieffect_c0.frag.qsb
new file mode 100644
index 0000000..d006dc5
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_c0.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cb1.frag.qsb b/quickmultieffect/shaders/multieffect_cb1.frag.qsb
new file mode 100644
index 0000000..eeb9004
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cb1.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cb2.frag.qsb b/quickmultieffect/shaders/multieffect_cb2.frag.qsb
new file mode 100644
index 0000000..07a6c2a
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cb2.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cb3.frag.qsb b/quickmultieffect/shaders/multieffect_cb3.frag.qsb
new file mode 100644
index 0000000..2fcec5d
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cb3.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cb4.frag.qsb b/quickmultieffect/shaders/multieffect_cb4.frag.qsb
new file mode 100644
index 0000000..450115f
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cb4.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cb5.frag.qsb b/quickmultieffect/shaders/multieffect_cb5.frag.qsb
new file mode 100644
index 0000000..594e44b
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cb5.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cbs1.frag.qsb b/quickmultieffect/shaders/multieffect_cbs1.frag.qsb
new file mode 100644
index 0000000..4991afa
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cbs1.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cbs2.frag.qsb b/quickmultieffect/shaders/multieffect_cbs2.frag.qsb
new file mode 100644
index 0000000..c2fdc59
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cbs2.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cbs3.frag.qsb b/quickmultieffect/shaders/multieffect_cbs3.frag.qsb
new file mode 100644
index 0000000..23dbc01
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cbs3.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cbs4.frag.qsb b/quickmultieffect/shaders/multieffect_cbs4.frag.qsb
new file mode 100644
index 0000000..a1ae4e5
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cbs4.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cbs5.frag.qsb b/quickmultieffect/shaders/multieffect_cbs5.frag.qsb
new file mode 100644
index 0000000..92225ea
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cbs5.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cm0.frag.qsb b/quickmultieffect/shaders/multieffect_cm0.frag.qsb
new file mode 100644
index 0000000..425be98
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cm0.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cmb1.frag.qsb b/quickmultieffect/shaders/multieffect_cmb1.frag.qsb
new file mode 100644
index 0000000..2737027
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cmb1.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cmb2.frag.qsb b/quickmultieffect/shaders/multieffect_cmb2.frag.qsb
new file mode 100644
index 0000000..fa68a22
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cmb2.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cmb3.frag.qsb b/quickmultieffect/shaders/multieffect_cmb3.frag.qsb
new file mode 100644
index 0000000..fd5c580
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cmb3.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cmb4.frag.qsb b/quickmultieffect/shaders/multieffect_cmb4.frag.qsb
new file mode 100644
index 0000000..fb89301
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cmb4.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cmb5.frag.qsb b/quickmultieffect/shaders/multieffect_cmb5.frag.qsb
new file mode 100644
index 0000000..805467f
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cmb5.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cmbs1.frag.qsb b/quickmultieffect/shaders/multieffect_cmbs1.frag.qsb
new file mode 100644
index 0000000..9ce187e
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cmbs1.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cmbs2.frag.qsb b/quickmultieffect/shaders/multieffect_cmbs2.frag.qsb
new file mode 100644
index 0000000..1dc25ec
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cmbs2.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cmbs3.frag.qsb b/quickmultieffect/shaders/multieffect_cmbs3.frag.qsb
new file mode 100644
index 0000000..275aebe
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cmbs3.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cmbs4.frag.qsb b/quickmultieffect/shaders/multieffect_cmbs4.frag.qsb
new file mode 100644
index 0000000..250c99d
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cmbs4.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cmbs5.frag.qsb b/quickmultieffect/shaders/multieffect_cmbs5.frag.qsb
new file mode 100644
index 0000000..ad1af69
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cmbs5.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cms0.frag.qsb b/quickmultieffect/shaders/multieffect_cms0.frag.qsb
new file mode 100644
index 0000000..6c7c78a
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cms0.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cms1.frag.qsb b/quickmultieffect/shaders/multieffect_cms1.frag.qsb
new file mode 100644
index 0000000..f8a0722
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cms1.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cms2.frag.qsb b/quickmultieffect/shaders/multieffect_cms2.frag.qsb
new file mode 100644
index 0000000..15b3911
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cms2.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cms3.frag.qsb b/quickmultieffect/shaders/multieffect_cms3.frag.qsb
new file mode 100644
index 0000000..a099579
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cms3.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cms4.frag.qsb b/quickmultieffect/shaders/multieffect_cms4.frag.qsb
new file mode 100644
index 0000000..f8554a0
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cms4.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cms5.frag.qsb b/quickmultieffect/shaders/multieffect_cms5.frag.qsb
new file mode 100644
index 0000000..ab31483
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cms5.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cs.vert.qsb b/quickmultieffect/shaders/multieffect_cs.vert.qsb
new file mode 100644
index 0000000..66f8f09
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cs.vert.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cs0.frag.qsb b/quickmultieffect/shaders/multieffect_cs0.frag.qsb
new file mode 100644
index 0000000..fd7660a
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cs0.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cs1.frag.qsb b/quickmultieffect/shaders/multieffect_cs1.frag.qsb
new file mode 100644
index 0000000..6aed610
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cs1.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cs2.frag.qsb b/quickmultieffect/shaders/multieffect_cs2.frag.qsb
new file mode 100644
index 0000000..3d095e4
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cs2.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cs3.frag.qsb b/quickmultieffect/shaders/multieffect_cs3.frag.qsb
new file mode 100644
index 0000000..b1c27d5
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cs3.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cs4.frag.qsb b/quickmultieffect/shaders/multieffect_cs4.frag.qsb
new file mode 100644
index 0000000..6801d62
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cs4.frag.qsb
Binary files differ
diff --git a/quickmultieffect/shaders/multieffect_cs5.frag.qsb b/quickmultieffect/shaders/multieffect_cs5.frag.qsb
new file mode 100644
index 0000000..55dc6c6
--- /dev/null
+++ b/quickmultieffect/shaders/multieffect_cs5.frag.qsb
Binary files differ