Fix some of the effects in qmlvideofx

* 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>
This commit is contained in:
Michael Goddard
2011-12-22 13:08:25 +10:00
committed by Qt by Nokia
parent 8af2548473
commit 2307825461
4 changed files with 8 additions and 7 deletions

View File

@@ -61,7 +61,7 @@ Item {
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"
}
@@ -69,8 +69,8 @@ Item {
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

View File

@@ -55,7 +55,7 @@ void main()
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;

View File

@@ -55,7 +55,7 @@ void main()
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;
@@ -63,5 +63,6 @@ void main()
} else {
c = texture2D(source, qt_TexCoord0);
}
gl_FragColor = qt_Opacity * c;
// First pass we don't apply opacity
gl_FragColor = c;
}

View File

@@ -67,7 +67,7 @@ void main()
{
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();