diff options
Diffstat (limited to 'src/effects/shaders/+glslcore')
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; +} |