diff options
Diffstat (limited to 'examples/declarative/particles/allsmiles/smile.qml')
-rw-r--r-- | examples/declarative/particles/allsmiles/smile.qml | 40 |
1 files changed, 5 insertions, 35 deletions
diff --git a/examples/declarative/particles/allsmiles/smile.qml b/examples/declarative/particles/allsmiles/smile.qml index 3eb57617ec..bfce60cc4a 100644 --- a/examples/declarative/particles/allsmiles/smile.qml +++ b/examples/declarative/particles/allsmiles/smile.qml @@ -70,47 +70,17 @@ Rectangle{ source: "content/particle.png" } vertexShader:" - attribute highp vec2 vPos; - attribute highp vec2 vTex; - attribute highp vec4 vData; // x = time, y = lifeSpan, z = size, w = endSize - attribute highp vec4 vVec; // x,y = constant speed, z,w = acceleration - attribute highp float r; - uniform highp float maxWidth; uniform highp float maxHeight; - - uniform highp mat4 qt_Matrix; - uniform highp float timestamp; - uniform lowp float qt_Opacity; - - varying highp vec2 fTex; - varying highp vec2 fTex2; + varying highp vec2 fTex2; varying lowp float fFade; + uniform lowp float qt_Opacity; void main() { - fTex = vTex; fTex2 = vec2(vPos.x / maxWidth, vPos.y / maxHeight); - highp float size = vData.z; - highp float endSize = vData.w; - highp float t = (timestamp - vData.x) / vData.y; - - highp float currentSize = mix(size, endSize, t * t); - - if (t < 0. || t > 1.) - currentSize = 0.; - - highp vec2 pos = vPos - - currentSize / 2. + currentSize * vTex // adjust size - + vVec.xy * t * vData.y // apply speed vector.. - + 0.5 * vVec.zw * pow(t * vData.y, 2.); - - gl_Position = qt_Matrix * vec4(pos.x, pos.y, 0, 1); - - highp float fadeIn = min(t * 10., 1.); - highp float fadeOut = 1. - max(0., min((t - 0.75) * 4., 1.)); - - fFade = fadeIn * fadeOut * qt_Opacity; + fFade = min(t*4., (1.-t*t)*.75) * qt_Opacity; + defaultMain(); } " property variant particleTexture: particleSource @@ -120,7 +90,7 @@ Rectangle{ uniform sampler2D pictureTexture; varying highp vec2 fTex; varying highp vec2 fTex2; - varying highp float fFade; + varying lowp float fFade; void main() { gl_FragColor = texture2D(pictureTexture, fTex2) * texture2D(particleTexture, fTex).w * fFade; }" |