* TiltShift was sometimes applying the effect in the wrong place.
* Blur had some QML properties duplicated
* Blur kernel wasn't quite summing to 1, and was applying opacity twice
* The target width for the second pass was incorrect, so it was blending
darkness, resulting in a dreary image.
Change-Id: Ib8ba93d979c597cf4d225b3d24d26a22d0cdffc2
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Effect {
id: verticalShader
anchors.fill: parent
- property real dividerValue: parent.dividerValue
+ dividerValue: parent.dividerValue
property real blurSize: 4.0 * parent.parameters.get(0).value / targetHeight
fragmentShaderFilename: "shaders/gaussianblur_v.fsh"
}
Effect {
id: horizontalShader
anchors.fill: parent
- property real dividerValue: parent.dividerValue
- property real blurSize: 4.0 * parent.parameters.get(0).value / targetWidth
+ dividerValue: parent.dividerValue
+ property real blurSize: 4.0 * parent.parameters.get(0).value / parent.targetWidth
fragmentShaderFilename: "shaders/gaussianblur_h.fsh"
source: horizontalShaderSource
c += texture2D(source, uv - vec2(3.0*blurSize, 0.0)) * 0.09;
c += texture2D(source, uv - vec2(2.0*blurSize, 0.0)) * 0.12;
c += texture2D(source, uv - vec2(1.0*blurSize, 0.0)) * 0.15;
- c += texture2D(source, uv) * 0.16;
+ c += texture2D(source, uv) * 0.18;
c += texture2D(source, uv + vec2(1.0*blurSize, 0.0)) * 0.15;
c += texture2D(source, uv + vec2(2.0*blurSize, 0.0)) * 0.12;
c += texture2D(source, uv + vec2(3.0*blurSize, 0.0)) * 0.09;
c += texture2D(source, uv - vec2(0.0, 3.0*blurSize)) * 0.09;
c += texture2D(source, uv - vec2(0.0, 2.0*blurSize)) * 0.12;
c += texture2D(source, uv - vec2(0.0, 1.0*blurSize)) * 0.15;
- c += texture2D(source, uv) * 0.16;
+ c += texture2D(source, uv) * 0.18;
c += texture2D(source, uv + vec2(0.0, 1.0*blurSize)) * 0.15;
c += texture2D(source, uv + vec2(0.0, 2.0*blurSize)) * 0.12;
c += texture2D(source, uv + vec2(0.0, 3.0*blurSize)) * 0.09;
} else {
c = texture2D(source, qt_TexCoord0);
}
- gl_FragColor = qt_Opacity * c;
+ // First pass we don't apply opacity
+ gl_FragColor = c;
}
{
vec2 uv = qt_TexCoord0.xy;
vec3 col;
- if (uv.x < dividerValue && uv.y >= 0.4 && uv.y <= 0.6)
+ if (uv.x > dividerValue || (uv.y >= 0.4 && uv.y <= 0.6))
col = texture2D(source, uv).rgb;
else
col = blur();