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