Quantcast
Channel: Qt DevNet forums: Qt Quick 1283365070**
Viewing all articles
Browse latest Browse all 4972

Create reuseable shaderEffect

$
0
0
This is a shaderEffect codes from an example //   Shader Effect     ShaderEffect {         id: shaderEffect         anchors.fill: bug         property variant source: bug         property real amplitude: 0.01         property real frequency: 20         property real time: 0         NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 600 }         fragmentShader:             "uniform lowp float qt_Opacity;" +             "uniform highp float amplitude;" +             "uniform highp float frequency;" +             "uniform highp float time;" +             "uniform sampler2D source;" +             "varying highp vec2 qt_TexCoord0;" +             "void main() {" +             "    highp vec2 p = sin(time + frequency * qt_TexCoord0);" +             "    gl_FragColor = texture2D(source, qt_TexCoord0 + amplitude * vec2(p.y, -p.x)) * qt_Opacity;" +             "}"     } I encapsulate it in a new component Wobble.qml //   Shader Effect     ShaderEffect {         id: root                 property variant source         property real amplitude: 0.01         property real frequency: 20         property real time: 0         NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 600 }         fragmentShader:             "uniform lowp float qt_Opacity;" +             "uniform highp float amplitude;" +             "uniform highp float frequency;" +             "uniform highp float time;" +             "uniform sampler2D source;" +             "varying highp vec2 qt_TexCoord0;" +             "void main() {" +             "    highp vec2 p = sin(time + frequency * qt_TexCoord0);" +             "    gl_FragColor = texture2D(source, qt_TexCoord0 + amplitude * vec2(p.y, -p.x)) * qt_Opacity;" +             "}"     } And I use it like this main.qml import QtQuick 2.0   Rectangle {     width : bug.width     height : bug.height       Image{         id: bug           anchors.fill: parent           source: "/Downloads/1359170070532.jpg"         smooth: true         fillMode: Image.PreserveAspectFit     }           Wobble{         id: wobble           anchors.fill: bug         source: bug     } However, it can’t work, if I replace Wobble by the original ShaderEffect, it works What am I miss?Besides, do we have a solution to pass uniform array by qml? ex: //..... uniform vec2 offset[9];   uniform int kernel[9];   //......

Viewing all articles
Browse latest Browse all 4972

Trending Articles