[SailfishDevel] Different behaviour of ShaderEffectSource in emulator vs. device
Luca Donaggio
donaggio at gmail.com
Tue Feb 10 10:54:42 UTC 2015
Thanks Andrey.
I'll report this on TJC as well, trying to get more visibility. I hope that
some Sailor will notice it: it's not that important, but it's disturbing
nonetheless.
On Tue, Feb 10, 2015 at 11:39 AM, Andrey Kozhevnikov <coderusinbox at gmail.com
> wrote:
> 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 <
> coderusinbox at 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 <donaggio at 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-unsubscribe at lists.sailfishos.org
>>
>>
>>
>> _______________________________________________
>> SailfishOS.org Devel mailing list
>> To unsubscribe, please send a mail to
>> devel-unsubscribe at lists.sailfishos.org
>>
>
>
>
> --
> Luca Donaggio
>
>
> _______________________________________________
> SailfishOS.org Devel mailing list
> To unsubscribe, please send a mail to devel-unsubscribe at lists.sailfishos.org
>
>
>
> _______________________________________________
> SailfishOS.org Devel mailing list
> To unsubscribe, please send a mail to
> devel-unsubscribe at lists.sailfishos.org
>
--
Luca Donaggio
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.sailfishos.org/pipermail/devel/attachments/20150210/316429b2/attachment-0001.html>
More information about the Devel
mailing list