Improved blending in QML compositor.
authorSamuel Rødal <samuel.rodal@nokia.com>
Wed, 16 Mar 2011 14:35:09 +0000 (15:35 +0100)
committerSamuel Rødal <samuel.rodal@nokia.com>
Wed, 16 Mar 2011 14:35:09 +0000 (15:35 +0100)
examples/qml-compositor/qml/QmlCompositor/ShaderEffect.qml
examples/qml-compositor/qml/QmlCompositor/WindowChrome.qml
examples/qml-compositor/qml/QmlCompositor/WindowContainer.qml

index 2a2020f..09b4e37 100644 (file)
@@ -43,17 +43,19 @@ import QtQuick 2.0
 ShaderEffectItem {
     property variant source: null;
     property color color: "#ffffff"
+    property real blend;
 
     fragmentShader: "
     uniform sampler2D source;
     uniform float qt_Opacity;
     uniform vec4 color;
+    uniform float blend;
     varying highp vec2 qt_TexCoord0;
     void main() {
         vec4 sourceColor = texture2D(source, qt_TexCoord0);
         vec3 delta = sourceColor.rgb - vec3(0.5);
         vec3 lowerContrast = vec3(0.5) + 0.4 * delta;
-        gl_FragColor = qt_Opacity * color * sourceColor.a * dot(lowerContrast, vec3(11, 16, 5) * (1. /  32.));
+        gl_FragColor = qt_Opacity * mix(sourceColor, color * sourceColor.a * dot(lowerContrast, vec3(11, 16, 5) * (1. /  32.)), blend);
     }
     "
 }
index 24a6bda..9e6b0a8 100644 (file)
@@ -46,8 +46,6 @@ Item {
 
     property variant window: parent;
 
-    opacity: { if (parent.focus) 1.0; else 0.1; }
-
     MouseArea {
         anchors.fill: parent
         enabled: !window.focus
@@ -59,13 +57,6 @@ Item {
     Binding {
         target: window
         property: "opacity"
-        value: chrome.opacity
-    }
-
-    Behavior on opacity {
-        NumberAnimation {
-            easing.type: Easing.Linear;
-            duration: 200;
-        }
+        value: 0.01
     }
 }
index c2f9240..95764bc 100644 (file)
@@ -72,12 +72,14 @@ Item {
     }
 
     ShaderEffect {
+        id: effect
         source: child
         anchors.fill: child
-        opacity: { if (child && child.focus) 0.0; else 0.8; }
+        blend: { if (child && child.focus) 0.0; else 1.0 }
+        opacity: 0.8
         z: 1
 
-        Behavior on opacity {
+        Behavior on blend {
             enabled: true;
             NumberAnimation { easing.type: Easing.Linear; duration: 200; }
         }