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
> 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> 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 to devel-unsubscr...@lists.sailfishos.org
>
>
>
> _______________________________________________
> SailfishOS.org Devel mailing list
> To unsubscribe, please send a mail to
> devel-unsubscr...@lists.sailfishos.org
>



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

Reply via email to