aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorAlan Alpert <alan.alpert@nokia.com>2011-08-30 14:35:09 +1000
committerQt by Nokia <qt-info@nokia.com>2011-08-31 07:04:25 +0200
commit5cc0a29582fc69e9b748fd697a9a2dec3e64148c (patch)
tree0bd8f0e0104d43fc3f66f17ca4d3f656634e6f7d /examples
parent9140731319269c75f24e80075750971e00844906 (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.qml40
-rw-r--r--examples/declarative/particles/custom/blurparticles.qml29
-rw-r--r--examples/declarative/particles/custom/custom.qml12
-rw-r--r--examples/declarative/particles/custom/shader.qml11
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;