summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/declarative/qmlshadersplugin/GaussianDropShadow.qml
blob: be78c86c2471754557322fab9819367a61828f7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import Qt 4.7
import Qt.labs.shaders 1.0

Item {
    id: gaussianDropShadow

    property color shadowColor: Qt.rgba(0.5, 0.5, 0.5, 1.0)
    property variant source: 0
    property real radius: 8
    property real deviation: Math.sqrt(-((radius+1) * (radius+1)) / (2 * Math.log(1.0 / 255.0)))
    property bool live: true

    GaussianBlur {
        id: blur
        anchors.fill: parent
        radius: gaussianDropShadow.radius
        deviation: gaussianDropShadow.deviation
        source: gaussianDropShadow.source
        live: gaussianDropShadow.live
    }

    ShaderEffectItem {
        id: shadow
        property color shadowColor: gaussianDropShadow.shadowColor
        property variant source: ShaderEffectSource { sourceItem: blur; hideSource: true }
        anchors.fill: parent

        fragmentShader:
            "
            varying mediump vec2 qt_TexCoord0;
            uniform sampler2D source;
            uniform lowp vec4 shadowColor;

            void main() {
                lowp vec4 sourceColor = texture2D(source, qt_TexCoord0);
                gl_FragColor = mix(vec4(0), shadowColor, sourceColor.a);
            }
            "
    }
}