imagecolors.qml Example File
particles/customparticle/content/imagecolors.qml
import QtQuick 2.0
import QtQuick.Particles 2.0
Rectangle {
width: 400
height: 400
Rectangle {
id: root
color: "white"
width: 310
height: 300
anchors.centerIn: parent
ParticleSystem { id: sys }
CustomParticle {
system: sys
property real maxWidth: root.width
property real maxHeight: root.height
ShaderEffectSource {
id: pictureSource
sourceItem: picture
hideSource: true
}
Image {
id: picture
source: "../../images/starfish_3.png"
}
ShaderEffectSource {
id: particleSource
sourceItem: particle
hideSource: true
}
Image {
id: particle
source: "qrc:///particleresources/fuzzydot.png"
}
vertexShader:"
uniform highp float maxWidth;
uniform highp float maxHeight;
varying highp vec2 fTex2;
varying lowp float fFade;
uniform lowp float qt_Opacity;
void main() {
fTex2 = vec2(qt_ParticlePos.x, qt_ParticlePos.y);
//Uncomment this next line for each particle to use full texture, instead of the solid color at the center of the particle.
//fTex2 = fTex2 + ((- qt_ParticleData.z / 2. + qt_ParticleData.z) * qt_ParticleTex); //Adjusts size so it's like a chunk of image.
fTex2 = fTex2 / vec2(maxWidth, maxHeight);
highp float t = (qt_Timestamp - qt_ParticleData.x) / qt_ParticleData.y;
fFade = min(t*4., (1.-t*t)*.75) * qt_Opacity;
defaultMain();
}
"
property variant particleTexture: particleSource
property variant pictureTexture: pictureSource
fragmentShader: "
uniform sampler2D particleTexture;
uniform sampler2D pictureTexture;
varying highp vec2 qt_TexCoord0;
varying highp vec2 fTex2;
varying lowp float fFade;
void main() {
gl_FragColor = texture2D(pictureTexture, fTex2) * texture2D(particleTexture, qt_TexCoord0).w * fFade;
}"
}
Emitter {
id: emitter
system: sys
enabled: false
lifeSpan: 8000
maximumEmitted: 4000
anchors.fill: parent
size: 16
acceleration: PointDirection { xVariation: 12; yVariation: 12 }
}
MouseArea {
anchors.fill: parent
onClicked: emitter.burst(4000);
}
}
}