yes i can confirm this behaviour.

10.02.2015 15:24, Luca Donaggio пишет:
Hi Andrey, thanks for your reply.

Still, can you try both tests on your Jolla?
The first shouldn't work, while the second does.

On Tue, Feb 10, 2015 at 10:32 AM, Andrey Kozhevnikov <coderusin...@gmail.com <mailto:coderusin...@gmail.com>> wrote:

    sorry, not using emulator at all.

    10.02.2015 14:28, Luca Donaggio пишет:
    Anybody is willing to try my test code and confirm or deny my
    finding?

    On Fri, Feb 6, 2015 at 2:12 PM, Luca Donaggio <donag...@gmail.com
    <mailto:donag...@gmail.com>> wrote:

        The following code works fine in Emulator, changing the
        gradient of the Rectangle correctly updates the nested
        ShaderEffectSource and it is reflected on the ShaderEffect
        which uses it as its texture:

        Page {
            id: page

            SilicaFlickable {
                anchors.fill: parent

                contentHeight: column.height

                Column {
                    id: column

                    anchors { top: parent.top; left: parent.left;
        right: parent.right; leftMargin: Theme.paddingLarge;
        rightMargin: Theme.paddingLarge; }
                    spacing: Theme.paddingLarge

                    PageHeader {
                        title: qsTr("ShaderEffect Test")
                    }

                    Row {
                        anchors.horizontalCenter: parent.horizontalCenter
                        spacing: Theme.paddingLarge

                        Column {
                            spacing: Theme.paddingSmall

                            Rectangle {
                                id: gradientSource

                                property list<Gradient> gradients: [
                                    Gradient {
                                        GradientStop { position: 0.0;
        color: "black"; }
                                        GradientStop { position: 1.0;
        color: "blue"; }
                                    },

                                    Gradient {
                                        GradientStop { position: 0.0;
        color: "black"; }
                                        GradientStop { position: 1.0;
        color: "red"; }
                                    }
                                ]

                                width: 100
                                height: 100

                                gradient: gradients[0]

                                ShaderEffectSource {
                                    id: gradientTexture

                                    anchors.fill: parent
                                    sourceItem: gradientSource
                                    hideSource: false
                                    live: true
                                }
                            }

                            Label {
                                font.pixelSize: Theme.fontSizeExtraSmall
                                wrapMode: Text.WordWrap
                                text: "Rectangle\nShaderEffectSource"
                            }
                        }

                        Column {
                            spacing: Theme.paddingSmall

                            ShaderEffect {
                                property variant source: gradientTexture

                                width: 100
                                height: 100

                                blending: false
                                cullMode: ShaderEffect.BackFaceCulling
                                fragmentShader: "
                                    varying highp vec2 qt_TexCoord0;
                                    uniform lowp float qt_Opacity;
                                    uniform sampler2D source;

                                    void main() {
                                        gl_FragColor =
        texture2D(source, qt_TexCoord0) * qt_Opacity;
                                    }"
                            }

                            Label {
                                font.pixelSize: Theme.fontSizeExtraSmall
                                text: "ShaderEffect"
                            }
                        }
                    }

                    Button {
                        anchors.horizontalCenter: parent.horizontalCenter
                        text: "Blue gradient"

                        onClicked: gradientSource.gradient =
        gradientSource.gradients[0]
                    }

                    Button {
                        anchors.horizontalCenter: parent.horizontalCenter
                        text: "Red gradient"

                        onClicked: gradientSource.gradient =
        gradientSource.gradients[1]
                    }
                }
            }
        }

        It doesn't work on device though (changing Reactangle's
        gradient doesn't update the ShaderEffectSource).

        Un-nesting the ShaderEffectSource from its source item (the
        Rectangle) works fine both on emulator and on device:

        Page {
            id: page

            SilicaFlickable {
                anchors.fill: parent

                contentHeight: column.height

                Column {
                    id: column

                    anchors { top: parent.top; left: parent.left;
        right: parent.right; leftMargin: Theme.paddingLarge;
        rightMargin: Theme.paddingLarge; }
                    spacing: Theme.paddingLarge

                    PageHeader {
                        title: qsTr("ShaderEffect Test")
                    }

                    Row {
                        anchors.horizontalCenter: parent.horizontalCenter
                        spacing: Theme.paddingLarge

                        Column {
                            spacing: Theme.paddingSmall

                            Rectangle {
                                id: gradientSource

                                property list<Gradient> gradients: [
                                    Gradient {
        GradientStop { position: 0.0; color: "black"; }
        GradientStop { position: 1.0; color: "blue"; }
                                    },

                                    Gradient {
        GradientStop { position: 0.0; color: "black"; }
        GradientStop { position: 1.0; color: "red"; }
                                    }
                                ]

                                width: 100
                                height: 100

                                gradient: gradients[0]
                            }

                            Label {
                                font.pixelSize: Theme.fontSizeExtraSmall
                                text: "Rectangle"
                            }
                        }

                        Column {
                            spacing: Theme.paddingSmall

                            ShaderEffectSource {
                                id: gradientTexture

                                width: 100
                                height: 100
                                sourceItem: gradientSource
                                hideSource: false
                                live: true
                            }

                            Label {
                                font.pixelSize: Theme.fontSizeExtraSmall
                                text: "ShaderEffectSource"
                            }
                        }

                        Column {
                            spacing: Theme.paddingSmall

                            ShaderEffect {
                                property variant source: gradientTexture

                                width: 100
                                height: 100

                                blending: false
                                cullMode: ShaderEffect.BackFaceCulling
                                fragmentShader: "
                                    varying highp vec2 qt_TexCoord0;
                                    uniform lowp float qt_Opacity;
                                    uniform sampler2D source;

                                    void main() {
        gl_FragColor = texture2D(source, qt_TexCoord0) * qt_Opacity;
                                    }"
                            }

                            Label {
                                font.pixelSize: Theme.fontSizeExtraSmall
                                text: "ShaderEffect"
                            }
                        }
                    }

                    Button {
                        anchors.horizontalCenter: parent.horizontalCenter
                        text: "Blue gradient"

                        onClicked: gradientSource.gradient =
        gradientSource.gradients[0]
                    }

                    Button {
                        anchors.horizontalCenter: parent.horizontalCenter
                        text: "Red gradient"

                        onClicked: gradientSource.gradient =
        gradientSource.gradients[1]
                    }
                }
            }
        }

        Is it a bug?

-- Luca Donaggio




-- Luca Donaggio


    _______________________________________________
    SailfishOS.org Devel mailing list
    To unsubscribe, please send a mail todevel-unsubscr...@lists.sailfishos.org  
<mailto:devel-unsubscr...@lists.sailfishos.org>


    _______________________________________________
    SailfishOS.org Devel mailing list
    To unsubscribe, please send a mail to
    devel-unsubscr...@lists.sailfishos.org
    <mailto:devel-unsubscr...@lists.sailfishos.org>




--
Luca Donaggio


_______________________________________________
SailfishOS.org Devel mailing list
To unsubscribe, please send a mail to devel-unsubscr...@lists.sailfishos.org

_______________________________________________
SailfishOS.org Devel mailing list
To unsubscribe, please send a mail to devel-unsubscr...@lists.sailfishos.org

Reply via email to