aboutsummaryrefslogtreecommitdiffstats
path: root/src/effects/shaders/+glslcore
diff options
context:
space:
mode:
Diffstat (limited to 'src/effects/shaders/+glslcore')
-rw-r--r--src/effects/shaders/+glslcore/brightnesscontrast.frag17
-rw-r--r--src/effects/shaders/+glslcore/colorize.frag60
-rw-r--r--src/effects/shaders/+glslcore/coloroverlay.frag10
-rw-r--r--src/effects/shaders/+glslcore/conicalgradient_mask.frag16
-rw-r--r--src/effects/shaders/+glslcore/conicalgradient_nomask.frag14
-rw-r--r--src/effects/shaders/+glslcore/desaturate.frag11
-rw-r--r--src/effects/shaders/+glslcore/displace.frag29
-rw-r--r--src/effects/shaders/+glslcore/fastblur.frag23
-rw-r--r--src/effects/shaders/+glslcore/fastblur_internal.frag16
-rw-r--r--src/effects/shaders/+glslcore/fastblur_internal.vert18
-rw-r--r--src/effects/shaders/+glslcore/fastglow.frag30
-rw-r--r--src/effects/shaders/+glslcore/fastinnershadow.frag32
-rw-r--r--src/effects/shaders/+glslcore/fastinnershadow_level0.frag15
-rw-r--r--src/effects/shaders/+glslcore/fastmaskedblur.frag53
-rw-r--r--src/effects/shaders/+glslcore/gammaadjust.frag13
-rw-r--r--src/effects/shaders/+glslcore/gaussianinnershadow.frag19
-rw-r--r--src/effects/shaders/+glslcore/gaussianinnershadow_shadow.frag15
-rw-r--r--src/effects/shaders/+glslcore/huesaturation.frag79
-rw-r--r--src/effects/shaders/+glslcore/leveladjust.frag37
-rw-r--r--src/effects/shaders/+glslcore/lineargradient.vert22
-rw-r--r--src/effects/shaders/+glslcore/lineargradient_mask.frag13
-rw-r--r--src/effects/shaders/+glslcore/lineargradient_nomask.frag9
-rw-r--r--src/effects/shaders/+glslcore/opacitymask.frag9
-rw-r--r--src/effects/shaders/+glslcore/opacitymask_invert.frag9
-rw-r--r--src/effects/shaders/+glslcore/radialgradient.vert31
-rw-r--r--src/effects/shaders/+glslcore/radialgradient_mask.frag14
-rw-r--r--src/effects/shaders/+glslcore/radialgradient_nomask.frag11
-rw-r--r--src/effects/shaders/+glslcore/rectangularglow.frag21
-rw-r--r--src/effects/shaders/+glslcore/recursiveblur.frag9
-rw-r--r--src/effects/shaders/+glslcore/recursiveblur.vert15
-rw-r--r--src/effects/shaders/+glslcore/thresholdmask.frag14
31 files changed, 684 insertions, 0 deletions
diff --git a/src/effects/shaders/+glslcore/brightnesscontrast.frag b/src/effects/shaders/+glslcore/brightnesscontrast.frag
new file mode 100644
index 0000000..414e268
--- /dev/null
+++ b/src/effects/shaders/+glslcore/brightnesscontrast.frag
@@ -0,0 +1,17 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform float qt_Opacity;
+uniform sampler2D source;
+uniform float brightness;
+uniform float contrast;
+out vec4 fragColor;
+
+void main() {
+ vec4 pixelColor = texture(source, qt_TexCoord0);
+ pixelColor.rgb /= max(1.0/256.0, pixelColor.a);
+ float c = 1.0 + contrast;
+ float contrastGainFactor = 1.0 + c * c * c * c * step(0.0, contrast);
+ pixelColor.rgb = ((pixelColor.rgb - 0.5) * (contrastGainFactor * contrast + 1.0)) + 0.5;
+ pixelColor.rgb = mix(pixelColor.rgb, vec3(step(0.0, brightness)), abs(brightness));
+ fragColor = vec4(pixelColor.rgb * pixelColor.a, pixelColor.a) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/colorize.frag b/src/effects/shaders/+glslcore/colorize.frag
new file mode 100644
index 0000000..67496c6
--- /dev/null
+++ b/src/effects/shaders/+glslcore/colorize.frag
@@ -0,0 +1,60 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform float qt_Opacity;
+uniform sampler2D source;
+uniform float hue;
+uniform float saturation;
+uniform float lightness;
+out vec4 fragColor;
+
+float RGBtoL(vec3 color) {
+ float cmin = min(color.r, min(color.g, color.b));
+ float cmax = max(color.r, max(color.g, color.b));
+ float l = (cmin + cmax) / 2.0;
+ return l;
+}
+
+float hueToIntensity(float v1, float v2, float h) {
+ h = fract(h);
+ if (h < 1.0 / 6.0)
+ return v1 + (v2 - v1) * 6.0 * h;
+ else if (h < 1.0 / 2.0)
+ return v2;
+ else if (h < 2.0 / 3.0)
+ return v1 + (v2 - v1) * 6.0 * (2.0 / 3.0 - h);
+
+ return v1;
+}
+
+vec3 HSLtoRGB(vec3 color) {
+ float h = color.x;
+ float l = color.z;
+ float s = color.y;
+
+ if (s < 1.0 / 256.0)
+ return vec3(l, l, l);
+
+ float v1;
+ float v2;
+ if (l < 0.5)
+ v2 = l * (1.0 + s);
+ else
+ v2 = (l + s) - (s * l);
+
+ v1 = 2.0 * l - v2;
+
+ float d = 1.0 / 3.0;
+ float r = hueToIntensity(v1, v2, h + d);
+ float g = hueToIntensity(v1, v2, h);
+ float b = hueToIntensity(v1, v2, h - d);
+ return vec3(r, g, b);
+}
+
+void main() {
+ vec4 sample = texture(source, qt_TexCoord0);
+ sample = vec4(sample.rgb / max(1.0/256.0, sample.a), sample.a);
+ float light = RGBtoL(sample.rgb);
+ float c = step(0.0, lightness);
+ sample.rgb = HSLtoRGB(vec3(hue, saturation, mix(light, c, abs(lightness))));
+ fragColor = vec4(sample.rgb * sample.a, sample.a) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/coloroverlay.frag b/src/effects/shaders/+glslcore/coloroverlay.frag
new file mode 100644
index 0000000..68c15ab
--- /dev/null
+++ b/src/effects/shaders/+glslcore/coloroverlay.frag
@@ -0,0 +1,10 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform float qt_Opacity;
+uniform sampler2D source;
+uniform vec4 color;
+out vec4 fragColor;
+void main() {
+ vec4 pixelColor = texture(source, qt_TexCoord0);
+ fragColor = vec4(mix(pixelColor.rgb/max(pixelColor.a, 0.00390625), color.rgb/max(color.a, 0.00390625), color.a) * pixelColor.a, pixelColor.a) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/conicalgradient_mask.frag b/src/effects/shaders/+glslcore/conicalgradient_mask.frag
new file mode 100644
index 0000000..5724ebb
--- /dev/null
+++ b/src/effects/shaders/+glslcore/conicalgradient_mask.frag
@@ -0,0 +1,16 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform sampler2D gradientSource;
+uniform sampler2D maskSource;
+uniform float qt_Opacity;
+uniform float startAngle;
+uniform vec2 center;
+out vec4 fragColor;
+
+void main() {
+ float maskAlpha = texture(maskSource, qt_TexCoord0).a;
+ const float PI = 3.14159265;
+ const float PIx2inv = 0.1591549;
+ float a = (atan((center.y - qt_TexCoord0.t), (center.x - qt_TexCoord0.s)) + PI - startAngle) * PIx2inv;
+ fragColor = texture(gradientSource, vec2(0.0, fract(a))) * maskAlpha * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/conicalgradient_nomask.frag b/src/effects/shaders/+glslcore/conicalgradient_nomask.frag
new file mode 100644
index 0000000..89a3278
--- /dev/null
+++ b/src/effects/shaders/+glslcore/conicalgradient_nomask.frag
@@ -0,0 +1,14 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform sampler2D gradientSource;
+uniform float qt_Opacity;
+uniform float startAngle;
+uniform vec2 center;
+out vec4 fragColor;
+
+void main() {
+ const float PI = 3.14159265;
+ const float PIx2inv = 0.1591549;
+ float a = (atan((center.y - qt_TexCoord0.t), (center.x - qt_TexCoord0.s)) + PI - startAngle) * PIx2inv;
+ fragColor = texture(gradientSource, vec2(0.0, fract(a))) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/desaturate.frag b/src/effects/shaders/+glslcore/desaturate.frag
new file mode 100644
index 0000000..c95c0a5
--- /dev/null
+++ b/src/effects/shaders/+glslcore/desaturate.frag
@@ -0,0 +1,11 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform float qt_Opacity;
+uniform sampler2D source;
+uniform float desaturation;
+out vec4 fragColor;
+void main(void) {
+ vec4 textureColor = texture(source, qt_TexCoord0.st);
+ float grayColor = (textureColor.r + textureColor.g + textureColor.b) / 3.0;
+ fragColor = mix(textureColor, vec4(vec3(grayColor), textureColor.a), desaturation) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/displace.frag b/src/effects/shaders/+glslcore/displace.frag
new file mode 100644
index 0000000..0a1ba7c
--- /dev/null
+++ b/src/effects/shaders/+glslcore/displace.frag
@@ -0,0 +1,29 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform float qt_Opacity;
+uniform sampler2D source;
+uniform sampler2D displacementSource;
+uniform float displacement;
+uniform float xPixel;
+uniform float yPixel;
+out vec4 fragColor;
+
+float linearstep(float e0, float e1, float x) {
+ return clamp((x - e0) / (e1 - e0), 0.0, 1.0);
+}
+
+void main() {
+ vec4 offset = texture(displacementSource, qt_TexCoord0);
+ offset.xy -= vec2(0.5, 0.5);
+ offset.xy = offset.xy * step(vec2(1.0/256.0), abs(offset.xy));
+ vec2 tx = qt_TexCoord0 + (vec2(-offset.x, offset.y) * displacement);
+
+ float e1 = linearstep(0.0, xPixel, tx.x);
+ float e2 = linearstep(0.0, yPixel, tx.y);
+ float e3 = 1.0 - linearstep(1.0, 1.0 + xPixel, tx.x);
+ float e4 = 1.0 - linearstep(1.0, 1.0 + yPixel, tx.y);
+
+ vec4 sample = texture(source, tx);
+ sample.rgb *= e1 * e2 * e3 * e4;
+ fragColor = sample * qt_Opacity * offset.a;
+}
diff --git a/src/effects/shaders/+glslcore/fastblur.frag b/src/effects/shaders/+glslcore/fastblur.frag
new file mode 100644
index 0000000..d80ba4e
--- /dev/null
+++ b/src/effects/shaders/+glslcore/fastblur.frag
@@ -0,0 +1,23 @@
+#version 150 core
+uniform sampler2D source1;
+uniform sampler2D source2;
+uniform sampler2D source3;
+uniform sampler2D source4;
+uniform sampler2D source5;
+uniform float weight1;
+uniform float weight2;
+uniform float weight3;
+uniform float weight4;
+uniform float weight5;
+uniform float qt_Opacity;
+in vec2 qt_TexCoord0;
+out vec4 fragColor;
+
+void main() {
+ vec4 sourceColor = texture(source1, qt_TexCoord0) * weight1;
+ sourceColor += texture(source2, qt_TexCoord0) * weight2;
+ sourceColor += texture(source3, qt_TexCoord0) * weight3;
+ sourceColor += texture(source4, qt_TexCoord0) * weight4;
+ sourceColor += texture(source5, qt_TexCoord0) * weight5;
+ fragColor = sourceColor * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/fastblur_internal.frag b/src/effects/shaders/+glslcore/fastblur_internal.frag
new file mode 100644
index 0000000..444e8ca
--- /dev/null
+++ b/src/effects/shaders/+glslcore/fastblur_internal.frag
@@ -0,0 +1,16 @@
+#version 150 core
+uniform sampler2D source;
+uniform float qt_Opacity;
+in vec2 qt_TexCoord0;
+in vec2 qt_TexCoord1;
+in vec2 qt_TexCoord2;
+in vec2 qt_TexCoord3;
+out vec4 fragColor;
+
+void main() {
+ vec4 sourceColor = (texture(source, qt_TexCoord0) +
+ texture(source, qt_TexCoord1) +
+ texture(source, qt_TexCoord2) +
+ texture(source, qt_TexCoord3)) * 0.25;
+ fragColor = sourceColor * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/fastblur_internal.vert b/src/effects/shaders/+glslcore/fastblur_internal.vert
new file mode 100644
index 0000000..1ceb9a2
--- /dev/null
+++ b/src/effects/shaders/+glslcore/fastblur_internal.vert
@@ -0,0 +1,18 @@
+#version 150 core
+in vec4 qt_Vertex;
+in vec2 qt_MultiTexCoord0;
+uniform mat4 qt_Matrix;
+uniform float yStep;
+uniform float xStep;
+out vec2 qt_TexCoord0;
+out vec2 qt_TexCoord1;
+out vec2 qt_TexCoord2;
+out vec2 qt_TexCoord3;
+
+void main() {
+ qt_TexCoord0 = vec2(qt_MultiTexCoord0.x + xStep, qt_MultiTexCoord0.y + yStep * 0.36);
+ qt_TexCoord1 = vec2(qt_MultiTexCoord0.x + xStep * 0.36, qt_MultiTexCoord0.y - yStep);
+ qt_TexCoord2 = vec2(qt_MultiTexCoord0.x - xStep * 0.36, qt_MultiTexCoord0.y + yStep);
+ qt_TexCoord3 = vec2(qt_MultiTexCoord0.x - xStep, qt_MultiTexCoord0.y - yStep * 0.36);
+ gl_Position = qt_Matrix * qt_Vertex;
+}
diff --git a/src/effects/shaders/+glslcore/fastglow.frag b/src/effects/shaders/+glslcore/fastglow.frag
new file mode 100644
index 0000000..4e18c45
--- /dev/null
+++ b/src/effects/shaders/+glslcore/fastglow.frag
@@ -0,0 +1,30 @@
+#version 150 core
+uniform sampler2D source1;
+uniform sampler2D source2;
+uniform sampler2D source3;
+uniform sampler2D source4;
+uniform sampler2D source5;
+uniform float weight1;
+uniform float weight2;
+uniform float weight3;
+uniform float weight4;
+uniform float weight5;
+uniform vec4 color;
+uniform float spread;
+uniform float qt_Opacity;
+in vec2 qt_TexCoord0;
+out vec4 fragColor;
+
+float linearstep(float e0, float e1, float x) {
+ return clamp((x - e0) / (e1 - e0), 0.0, 1.0);
+}
+
+void main() {
+ vec4 sourceColor = texture(source1, qt_TexCoord0) * weight1;
+ sourceColor += texture(source2, qt_TexCoord0) * weight2;
+ sourceColor += texture(source3, qt_TexCoord0) * weight3;
+ sourceColor += texture(source4, qt_TexCoord0) * weight4;
+ sourceColor += texture(source5, qt_TexCoord0) * weight5;
+ sourceColor = mix(vec4(0), color, linearstep(0.0, spread, sourceColor.a));
+ fragColor = sourceColor * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/fastinnershadow.frag b/src/effects/shaders/+glslcore/fastinnershadow.frag
new file mode 100644
index 0000000..cf3f166
--- /dev/null
+++ b/src/effects/shaders/+glslcore/fastinnershadow.frag
@@ -0,0 +1,32 @@
+#version 150 core
+uniform sampler2D original;
+uniform sampler2D source1;
+uniform sampler2D source2;
+uniform sampler2D source3;
+uniform sampler2D source4;
+uniform sampler2D source5;
+uniform float weight1;
+uniform float weight2;
+uniform float weight3;
+uniform float weight4;
+uniform float weight5;
+uniform vec4 color;
+uniform float spread;
+uniform float qt_Opacity;
+in vec2 qt_TexCoord0;
+out vec4 fragColor;
+
+float linearstep(float e0, float e1, float x) {
+ return clamp((x - e0) / (e1 - e0), 0.0, 1.0);
+}
+
+void main() {
+ vec4 shadowColor = texture(source1, qt_TexCoord0) * weight1;
+ shadowColor += texture(source2, qt_TexCoord0) * weight2;
+ shadowColor += texture(source3, qt_TexCoord0) * weight3;
+ shadowColor += texture(source4, qt_TexCoord0) * weight4;
+ shadowColor += texture(source5, qt_TexCoord0) * weight5;
+ vec4 originalColor = texture(original, qt_TexCoord0);
+ shadowColor.rgb = mix(originalColor.rgb, color.rgb * originalColor.a, linearstep(0.0, spread, shadowColor.a));
+ fragColor = vec4(shadowColor.rgb, originalColor.a) * originalColor.a * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/fastinnershadow_level0.frag b/src/effects/shaders/+glslcore/fastinnershadow_level0.frag
new file mode 100644
index 0000000..4449bb0
--- /dev/null
+++ b/src/effects/shaders/+glslcore/fastinnershadow_level0.frag
@@ -0,0 +1,15 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform float qt_Opacity;
+uniform sampler2D source;
+uniform vec4 color;
+uniform float horizontalOffset;
+uniform float verticalOffset;
+out vec4 fragColor;
+
+void main(void) {
+ vec2 pos = qt_TexCoord0 - vec2(horizontalOffset, verticalOffset);
+ float ea = step(0.0, pos.x) * step(0.0, pos.y) * step(pos.x, 1.0) * step(pos.y, 1.0);
+ float eb = 1.0 - ea;
+ fragColor = (eb * color + ea * color * (1.0 - texture(source, pos).a)) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/fastmaskedblur.frag b/src/effects/shaders/+glslcore/fastmaskedblur.frag
new file mode 100644
index 0000000..ae4d628
--- /dev/null
+++ b/src/effects/shaders/+glslcore/fastmaskedblur.frag
@@ -0,0 +1,53 @@
+#version 150 core
+uniform sampler2D mask;
+uniform sampler2D source1;
+uniform sampler2D source2;
+uniform sampler2D source3;
+uniform sampler2D source4;
+uniform sampler2D source5;
+uniform sampler2D source6;
+uniform float lod;
+uniform float qt_Opacity;
+in vec2 qt_TexCoord0;
+out vec4 fragColor;
+
+float weight(float v) {
+ if (v <= 0.0)
+ return 1.0;
+
+ if (v >= 0.5)
+ return 0.0;
+
+ return 1.0 - v * 2.0;
+}
+
+void main() {
+
+ vec4 maskColor = texture(mask, qt_TexCoord0);
+ float l = lod * maskColor.a;
+
+ float w1 = weight(abs(l - 0.100));
+ float w2 = weight(abs(l - 0.300));
+ float w3 = weight(abs(l - 0.500));
+ float w4 = weight(abs(l - 0.700));
+ float w5 = weight(abs(l - 0.900));
+ float w6 = weight(abs(l - 1.100));
+
+ float sum = w1 + w2 + w3 + w4 + w5 + w6;
+ float weight1 = w1 / sum;
+ float weight2 = w2 / sum;
+ float weight3 = w3 / sum;
+ float weight4 = w4 / sum;
+ float weight5 = w5 / sum;
+ float weight6 = w6 / sum;
+
+ vec4 sourceColor = texture(source1, qt_TexCoord0) * weight1;
+ sourceColor += texture(source2, qt_TexCoord0) * weight2;
+ sourceColor += texture(source3, qt_TexCoord0) * weight3;
+ sourceColor += texture(source4, qt_TexCoord0) * weight4;
+ sourceColor += texture(source5, qt_TexCoord0) * weight5;
+ sourceColor += texture(source6, qt_TexCoord0) * weight6;
+
+ fragColor = sourceColor * qt_Opacity;
+
+}
diff --git a/src/effects/shaders/+glslcore/gammaadjust.frag b/src/effects/shaders/+glslcore/gammaadjust.frag
new file mode 100644
index 0000000..7efdd89
--- /dev/null
+++ b/src/effects/shaders/+glslcore/gammaadjust.frag
@@ -0,0 +1,13 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform float qt_Opacity;
+uniform sampler2D source;
+uniform float gamma;
+out vec4 fragColor;
+
+void main(void) {
+ vec4 originalColor = texture(source, qt_TexCoord0.st);
+ originalColor.rgb = originalColor.rgb / max(1.0/256.0, originalColor.a);
+ vec3 adjustedColor = pow(originalColor.rgb, vec3(gamma));
+ fragColor = vec4(adjustedColor * originalColor.a, originalColor.a) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/gaussianinnershadow.frag b/src/effects/shaders/+glslcore/gaussianinnershadow.frag
new file mode 100644
index 0000000..8b8c863
--- /dev/null
+++ b/src/effects/shaders/+glslcore/gaussianinnershadow.frag
@@ -0,0 +1,19 @@
+#version 150 core
+uniform sampler2D original;
+uniform sampler2D shadow;
+uniform float qt_Opacity;
+uniform float spread;
+uniform vec4 color;
+in vec2 qt_TexCoord0;
+out vec4 fragColor;
+
+float linearstep(float e0, float e1, float x) {
+ return clamp((x - e0) / (e1 - e0), 0.0, 1.0);
+}
+
+void main(void) {
+ vec4 originalColor = texture(original, qt_TexCoord0);
+ vec4 shadowColor = texture(shadow, qt_TexCoord0);
+ shadowColor.rgb = mix(originalColor.rgb, color.rgb * originalColor.a, linearstep(0.0, spread, shadowColor.a));
+ fragColor = vec4(shadowColor.rgb, originalColor.a) * originalColor.a * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/gaussianinnershadow_shadow.frag b/src/effects/shaders/+glslcore/gaussianinnershadow_shadow.frag
new file mode 100644
index 0000000..d511daf
--- /dev/null
+++ b/src/effects/shaders/+glslcore/gaussianinnershadow_shadow.frag
@@ -0,0 +1,15 @@
+#version 150 core
+uniform sampler2D original;
+uniform float qt_Opacity;
+uniform vec4 color;
+uniform float horizontalOffset;
+uniform float verticalOffset;
+in vec2 qt_TexCoord0;
+out vec4 fragColor;
+
+void main(void) {
+ vec2 pos = qt_TexCoord0 - vec2(horizontalOffset, verticalOffset);
+ float ea = step(0.0, pos.x) * step(0.0, pos.y) * step(pos.x, 1.0) * step(pos.y, 1.0);
+ float eb = 1.0 - ea;
+ fragColor = eb * color + ea * color * (1.0 - texture(original, pos).a) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/huesaturation.frag b/src/effects/shaders/+glslcore/huesaturation.frag
new file mode 100644
index 0000000..c593dcb
--- /dev/null
+++ b/src/effects/shaders/+glslcore/huesaturation.frag
@@ -0,0 +1,79 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform float qt_Opacity;
+uniform sampler2D source;
+uniform vec3 hsl;
+out vec4 fragColor;
+
+vec3 RGBtoHSL(vec3 color) {
+ float cmin = min(color.r, min(color.g, color.b));
+ float cmax = max(color.r, max(color.g, color.b));
+ float h = 0.0;
+ float s = 0.0;
+ float l = (cmin + cmax) / 2.0;
+ float diff = cmax - cmin;
+
+ if (diff > 1.0 / 256.0) {
+ if (l < 0.5)
+ s = diff / (cmin + cmax);
+ else
+ s = diff / (2.0 - (cmin + cmax));
+
+ if (color.r == cmax)
+ h = (color.g - color.b) / diff;
+ else if (color.g == cmax)
+ h = 2.0 + (color.b - color.r) / diff;
+ else
+ h = 4.0 + (color.r - color.g) / diff;
+
+ h /= 6.0;
+ }
+ return vec3(h, s, l);
+}
+
+float hueToIntensity(float v1, float v2, float h) {
+ h = fract(h);
+ if (h < 1.0 / 6.0)
+ return v1 + (v2 - v1) * 6.0 * h;
+ else if (h < 1.0 / 2.0)
+ return v2;
+ else if (h < 2.0 / 3.0)
+ return v1 + (v2 - v1) * 6.0 * (2.0 / 3.0 - h);
+
+ return v1;
+}
+
+vec3 HSLtoRGB(vec3 color) {
+ float h = color.x;
+ float l = color.z;
+ float s = color.y;
+
+ if (s < 1.0 / 256.0)
+ return vec3(l);
+
+ float v1;
+ float v2;
+ if (l < 0.5)
+ v2 = l * (1.0 + s);
+ else
+ v2 = (l + s) - (s * l);
+
+ v1 = 2.0 * l - v2;
+
+ float d = 1.0 / 3.0;
+ float r = hueToIntensity(v1, v2, h + d);
+ float g = hueToIntensity(v1, v2, h);
+ float b = hueToIntensity(v1, v2, h - d);
+ return vec3(r, g, b);
+}
+
+void main() {
+ vec4 sample = texture(source, qt_TexCoord0);
+ sample = vec4(sample.rgb / max(1.0/256.0, sample.a), sample.a);
+ sample.rgb = mix(vec3(dot(sample.rgb, vec3(0.2125, 0.7154, 0.0721))), sample.rgb, 1.0 + hsl.y);
+ sample.xyz = RGBtoHSL(sample.rgb);
+ sample.rgb = HSLtoRGB(vec3(sample.x + hsl.x, sample.y, sample.z));
+ float c = step(0.0, hsl.z);
+ sample.rgb = mix(sample.rgb, vec3(c), abs(hsl.z));
+ fragColor = vec4(sample.rgb * sample.a, sample.a) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/leveladjust.frag b/src/effects/shaders/+glslcore/leveladjust.frag
new file mode 100644
index 0000000..67370ec
--- /dev/null
+++ b/src/effects/shaders/+glslcore/leveladjust.frag
@@ -0,0 +1,37 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform float qt_Opacity;
+uniform sampler2D source;
+uniform vec3 minimumInputRGB;
+uniform vec3 maximumInputRGB;
+uniform float minimumInputAlpha;
+uniform float maximumInputAlpha;
+uniform vec3 minimumOutputRGB;
+uniform vec3 maximumOutputRGB;
+uniform float minimumOutputAlpha;
+uniform float maximumOutputAlpha;
+uniform vec3 gamma;
+out vec4 fragColor;
+
+float linearstep(float e0, float e1, float x) {
+ return clamp((x - e0) / (e1 - e0), 0.0, 1.0);
+}
+
+void main(void) {
+ vec4 textureColor = texture(source, qt_TexCoord0.st);
+ vec4 color = vec4(textureColor.rgb / max(1.0/256.0, textureColor.a), textureColor.a);
+
+ color.r = linearstep(minimumInputRGB.r, maximumInputRGB.r, color.r);
+ color.g = linearstep(minimumInputRGB.g, maximumInputRGB.g, color.g);
+ color.b = linearstep(minimumInputRGB.b, maximumInputRGB.b, color.b);
+ color.a = linearstep(minimumInputAlpha, maximumInputAlpha, color.a);
+
+ color.rgb = pow(color.rgb, gamma);
+
+ color.r = minimumOutputRGB.r + color.r * (maximumOutputRGB.r - minimumOutputRGB.r);
+ color.g = minimumOutputRGB.g + color.g * (maximumOutputRGB.g - minimumOutputRGB.g);
+ color.b = minimumOutputRGB.b + color.b * (maximumOutputRGB.b - minimumOutputRGB.b);
+ color.a = minimumOutputAlpha + color.a * (maximumOutputAlpha - minimumOutputAlpha);
+
+ fragColor = vec4(color.rgb * color.a, color.a) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/lineargradient.vert b/src/effects/shaders/+glslcore/lineargradient.vert
new file mode 100644
index 0000000..4764f7e
--- /dev/null
+++ b/src/effects/shaders/+glslcore/lineargradient.vert
@@ -0,0 +1,22 @@
+#version 150 core
+in vec4 qt_Vertex;
+in vec2 qt_MultiTexCoord0;
+uniform mat4 qt_Matrix;
+out vec2 qt_TexCoord0;
+out vec2 qt_TexCoord1;
+uniform vec2 startPoint;
+uniform float l;
+uniform vec2 matrixData;
+
+void main() {
+ mat2 rot = mat2(matrixData.y, -matrixData.x,
+ matrixData.x, matrixData.y);
+
+ qt_TexCoord0 = qt_MultiTexCoord0;
+
+ qt_TexCoord1 = qt_MultiTexCoord0 * l;
+ qt_TexCoord1 -= startPoint * l;
+ qt_TexCoord1 *= rot;
+
+ gl_Position = qt_Matrix * qt_Vertex;
+}
diff --git a/src/effects/shaders/+glslcore/lineargradient_mask.frag b/src/effects/shaders/+glslcore/lineargradient_mask.frag
new file mode 100644
index 0000000..351ff33
--- /dev/null
+++ b/src/effects/shaders/+glslcore/lineargradient_mask.frag
@@ -0,0 +1,13 @@
+#version 150 core
+uniform sampler2D source;
+uniform sampler2D maskSource;
+uniform float qt_Opacity;
+in vec2 qt_TexCoord0;
+in vec2 qt_TexCoord1;
+out vec4 fragColor;
+
+void main() {
+ vec4 gradientColor = texture(source, qt_TexCoord1);
+ float maskAlpha = texture(maskSource, qt_TexCoord0).a;
+ fragColor = gradientColor * maskAlpha * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/lineargradient_nomask.frag b/src/effects/shaders/+glslcore/lineargradient_nomask.frag
new file mode 100644
index 0000000..4ca8ebe
--- /dev/null
+++ b/src/effects/shaders/+glslcore/lineargradient_nomask.frag
@@ -0,0 +1,9 @@
+#version 150 core
+uniform sampler2D source;
+uniform float qt_Opacity;
+in vec2 qt_TexCoord1;
+out vec4 fragColor;
+
+void main() {
+ fragColor = texture(source, qt_TexCoord1) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/opacitymask.frag b/src/effects/shaders/+glslcore/opacitymask.frag
new file mode 100644
index 0000000..629f82c
--- /dev/null
+++ b/src/effects/shaders/+glslcore/opacitymask.frag
@@ -0,0 +1,9 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform float qt_Opacity;
+uniform sampler2D source;
+uniform sampler2D maskSource;
+out vec4 fragColor;
+void main(void) {
+ fragColor = texture(source, qt_TexCoord0.st) * (texture(maskSource, qt_TexCoord0.st).a) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/opacitymask_invert.frag b/src/effects/shaders/+glslcore/opacitymask_invert.frag
new file mode 100644
index 0000000..c8090a4
--- /dev/null
+++ b/src/effects/shaders/+glslcore/opacitymask_invert.frag
@@ -0,0 +1,9 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform float qt_Opacity;
+uniform sampler2D source;
+uniform sampler2D maskSource;
+out vec4 fragColor;
+void main(void) {
+ fragColor = texture(source, qt_TexCoord0.st) * (1.0 - texture(maskSource, qt_TexCoord0.st).a) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/radialgradient.vert b/src/effects/shaders/+glslcore/radialgradient.vert
new file mode 100644
index 0000000..8179122
--- /dev/null
+++ b/src/effects/shaders/+glslcore/radialgradient.vert
@@ -0,0 +1,31 @@
+#version 150 core
+in vec4 qt_Vertex;
+in vec2 qt_MultiTexCoord0;
+uniform mat4 qt_Matrix;
+uniform vec2 matrixData;
+uniform float horizontalRatio;
+uniform float verticalRatio;
+uniform vec2 center;
+out vec2 qt_TexCoord0;
+out vec2 qt_TexCoord1;
+out vec2 centerPoint;
+
+void main() {
+ vec2 ratio = vec2(horizontalRatio, verticalRatio);
+
+ // Rotation matrix
+ mat2 rot = mat2(matrixData.y, -matrixData.x,
+ matrixData.x, matrixData.y);
+
+ qt_TexCoord0 = qt_MultiTexCoord0;
+
+ qt_TexCoord1 = qt_MultiTexCoord0;
+ qt_TexCoord1 -= center;
+ qt_TexCoord1 *= rot;
+ qt_TexCoord1 += center;
+ qt_TexCoord1 *= ratio;
+
+ centerPoint = center * ratio;
+
+ gl_Position = qt_Matrix * qt_Vertex;
+}
diff --git a/src/effects/shaders/+glslcore/radialgradient_mask.frag b/src/effects/shaders/+glslcore/radialgradient_mask.frag
new file mode 100644
index 0000000..11a3395
--- /dev/null
+++ b/src/effects/shaders/+glslcore/radialgradient_mask.frag
@@ -0,0 +1,14 @@
+#version 150 core
+uniform sampler2D gradientImage;
+uniform sampler2D maskSource;
+uniform float qt_Opacity;
+in vec2 qt_TexCoord0;
+in vec2 qt_TexCoord1;
+in vec2 centerPoint;
+out vec4 fragColor;
+
+void main() {
+ vec4 gradientColor = texture(gradientImage, vec2(0.0, 2.0 * distance(qt_TexCoord1, centerPoint)));
+ float maskAlpha = texture(maskSource, qt_TexCoord0).a;
+ fragColor = gradientColor * maskAlpha * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/radialgradient_nomask.frag b/src/effects/shaders/+glslcore/radialgradient_nomask.frag
new file mode 100644
index 0000000..455777b
--- /dev/null
+++ b/src/effects/shaders/+glslcore/radialgradient_nomask.frag
@@ -0,0 +1,11 @@
+#version 150 core
+uniform sampler2D gradientImage;
+uniform float qt_Opacity;
+in vec2 qt_TexCoord1;
+in vec2 centerPoint;
+out vec4 fragColor;
+
+void main() {
+ vec4 gradientColor = texture(gradientImage, vec2(0.0, 2.0 * distance(qt_TexCoord1, centerPoint)));
+ fragColor = gradientColor * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/rectangularglow.frag b/src/effects/shaders/+glslcore/rectangularglow.frag
new file mode 100644
index 0000000..f749519
--- /dev/null
+++ b/src/effects/shaders/+glslcore/rectangularglow.frag
@@ -0,0 +1,21 @@
+#version 150 core
+uniform float qt_Opacity;
+uniform float relativeSizeX;
+uniform float relativeSizeY;
+uniform float spread;
+uniform vec4 color;
+in vec2 qt_TexCoord0;
+out vec4 fragColor;
+
+float linearstep(float e0, float e1, float x) {
+ return clamp((x - e0) / (e1 - e0), 0.0, 1.0);
+}
+
+void main() {
+ float alpha =
+ smoothstep(0.0, relativeSizeX, 0.5 - abs(0.5 - qt_TexCoord0.x)) *
+ smoothstep(0.0, relativeSizeY, 0.5 - abs(0.5 - qt_TexCoord0.y));
+
+ float spreadMultiplier = linearstep(spread, 1.0 - spread, alpha);
+ fragColor = color * qt_Opacity * spreadMultiplier * spreadMultiplier;
+}
diff --git a/src/effects/shaders/+glslcore/recursiveblur.frag b/src/effects/shaders/+glslcore/recursiveblur.frag
new file mode 100644
index 0000000..ff47b7c
--- /dev/null
+++ b/src/effects/shaders/+glslcore/recursiveblur.frag
@@ -0,0 +1,9 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform float qt_Opacity;
+uniform sampler2D source;
+out vec4 fragColor;
+
+void main() {
+ fragColor = texture(source, qt_TexCoord0) * qt_Opacity;
+}
diff --git a/src/effects/shaders/+glslcore/recursiveblur.vert b/src/effects/shaders/+glslcore/recursiveblur.vert
new file mode 100644
index 0000000..3dc3a0b
--- /dev/null
+++ b/src/effects/shaders/+glslcore/recursiveblur.vert
@@ -0,0 +1,15 @@
+#version 150 core
+in vec4 qt_Vertex;
+in vec2 qt_MultiTexCoord0;
+uniform mat4 qt_Matrix;
+uniform float expandX;
+uniform float expandY;
+out vec2 qt_TexCoord0;
+
+void main() {
+ vec2 texCoord = qt_MultiTexCoord0;
+ texCoord.s = (texCoord.s - expandX) / (1.0 - 2.0 * expandX);
+ texCoord.t = (texCoord.t - expandY) / (1.0 - 2.0 * expandY);
+ qt_TexCoord0 = texCoord;
+ gl_Position = qt_Matrix * qt_Vertex;
+}
diff --git a/src/effects/shaders/+glslcore/thresholdmask.frag b/src/effects/shaders/+glslcore/thresholdmask.frag
new file mode 100644
index 0000000..5b331d8
--- /dev/null
+++ b/src/effects/shaders/+glslcore/thresholdmask.frag
@@ -0,0 +1,14 @@
+#version 150 core
+in vec2 qt_TexCoord0;
+uniform float qt_Opacity;
+uniform sampler2D source;
+uniform sampler2D maskSource;
+uniform float threshold;
+uniform float spread;
+out vec4 fragColor;
+
+void main(void) {
+ vec4 colorFragment = texture(source, qt_TexCoord0.st);
+ vec4 maskFragment = texture(maskSource, qt_TexCoord0.st);
+ fragColor = colorFragment * smoothstep(threshold * (1.0 + spread) - spread, threshold * (1.0 + spread), maskFragment.a) * qt_Opacity;
+}