diff options
author | Alan Alpert <alan.alpert@nokia.com> | 2011-08-30 14:35:09 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-08-31 07:04:25 +0200 |
commit | 5cc0a29582fc69e9b748fd697a9a2dec3e64148c (patch) | |
tree | 0bd8f0e0104d43fc3f66f17ca4d3f656634e6f7d /examples | |
parent | 9140731319269c75f24e80075750971e00844906 (diff) |
Custom Particle now supplies default code
Attributes and a sample function are now prepended to the vertex shader,
allowing many to become simple again.
Change-Id: Ie1fbc864bd0d58647cb67994b96c2cb88db92f10
Reviewed-on: http://codereview.qt.nokia.com/3839
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Glenn Watson <glenn.watson@nokia.com>
Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/declarative/particles/allsmiles/smile.qml | 40 | ||||
-rw-r--r-- | examples/declarative/particles/custom/blurparticles.qml | 29 | ||||
-rw-r--r-- | examples/declarative/particles/custom/custom.qml | 12 | ||||
-rw-r--r-- | examples/declarative/particles/custom/shader.qml | 11 |
4 files changed, 7 insertions, 85 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; }" diff --git a/examples/declarative/particles/custom/blurparticles.qml b/examples/declarative/particles/custom/blurparticles.qml index 7974c6ab7c..238608c002 100644 --- a/examples/declarative/particles/custom/blurparticles.qml +++ b/examples/declarative/particles/custom/blurparticles.qml @@ -68,41 +68,14 @@ Rectangle{ CustomParticle{ system: sys - //TODO: Someway that you don't have to rewrite the basics for a simple addition 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 mat4 qt_Matrix; - uniform highp float timestamp; uniform lowp float qt_Opacity; - - varying highp vec2 fTex; varying lowp float fFade; varying lowp float fBlur; void main() { - fTex = vTex; - highp float size = vData.z; - highp float endSize = vData.w; - + defaultMain(); 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.)); diff --git a/examples/declarative/particles/custom/custom.qml b/examples/declarative/particles/custom/custom.qml index 9a562af3b6..4b75cf6ebe 100644 --- a/examples/declarative/particles/custom/custom.qml +++ b/examples/declarative/particles/custom/custom.qml @@ -44,18 +44,8 @@ ParticleSystem{ } } CustomParticle{ - //TODO: Someway that you don't have to rewrite the basics for a simple addition 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 - - uniform highp mat4 qt_ModelViewProjectionMatrix; - uniform highp float timestamp; uniform lowp float qt_Opacity; - - varying highp vec2 fTex; varying lowp float fFade; varying highp vec2 fPos; @@ -76,7 +66,7 @@ ParticleSystem{ + vVec.xy * t * vData.y // apply speed vector.. + 0.5 * vVec.zw * pow(t * vData.y, 2.); - gl_Position = qt_ModelViewProjectionMatrix * vec4(pos.x, pos.y, 0, 1); + gl_Position = qt_Matrix * vec4(pos.x, pos.y, 0, 1); highp float fadeIn = min(t * 20., 1.); highp float fadeOut = 1. - max(0., min((t - 0.75) * 4., 1.)); diff --git a/examples/declarative/particles/custom/shader.qml b/examples/declarative/particles/custom/shader.qml index 329eaf226b..6253679cb7 100644 --- a/examples/declarative/particles/custom/shader.qml +++ b/examples/declarative/particles/custom/shader.qml @@ -27,19 +27,8 @@ ParticleSystem{ acceleration: PointDirection{x: -root.width/40; y: -root.height/40; xVariation: -root.width/20; yVariation: -root.width/20} } CustomParticle{ - //TODO: Someway that you don't have to rewrite the basics for a simple addition 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 mat4 qt_Matrix; - uniform highp float timestamp; uniform lowp float qt_Opacity; - - varying highp vec2 fTex; varying lowp float fFade; varying highp vec2 fPos; |