Тип QML CustomParticle
Для указания шейдеров для отрисовки частиц. Подробнее...
| Выражение импорта: | import QtQuick.Particles 2.15 |
| Наследует: |
Свойства
- fragmentShader : строка
- vertexShader : строка
Подробное описание
Примечание: Максимальное количество пользовательских частиц ограничено 16383.
Документация по свойствам
fragmentShader : строка
Это свойство содержит исходный код фрагментного шейдера GLSL. По умолчанию шейдер ожидает, что координата текстуры будет передана из вершинного шейдера как "varying highp vec2 qt_TexCoord0", и он будет брать выборку из саплера2D с именем "source".
vertexShader : строка
Это свойство содержит исходный код вершинного шейдера GLSL.
По умолчанию шейдер передает координату текстуры в фрагментный шейдер как "varying highp vec2 qt_TexCoord0".
Для облегчения написания вершинного шейдера частиц, следующий код GLSL добавляется в начало вашего вершинного шейдера:
attribute highp vec2 qt_ParticlePos;
attribute highp vec2 qt_ParticleTex;
attribute highp vec4 qt_ParticleData; // x = time, y = lifeSpan, z = size, w = endSize
attribute highp vec4 qt_ParticleVec; // x,y = constant velocity, z,w = acceleration
attribute highp float qt_ParticleR;
uniform highp mat4 qt_Matrix;
uniform highp float qt_Timestamp;
varying highp vec2 qt_TexCoord0;
void defaultMain() {
qt_TexCoord0 = qt_ParticleTex;
highp float size = qt_ParticleData.z;
highp float endSize = qt_ParticleData.w;
highp float t = (qt_Timestamp - qt_ParticleData.x) / qt_ParticleData.y;
highp float currentSize = mix(size, endSize, t * t);
if (t < 0. || t > 1.)
currentSize = 0.;
highp vec2 pos = qt_ParticlePos
- currentSize / 2. + currentSize * qt_ParticleTex // adjust size
+ qt_ParticleVec.xy * t * qt_ParticleData.y // apply velocity vector..
+ 0.5 * qt_ParticleVec.zw * pow(t * qt_ParticleData.y, 2.);
gl_Position = qt_Matrix * vec4(pos.x, pos.y, 0, 1);
} defaultMain() — это тот же код, что и в стандартном шейдере, вы можете использовать его для основных функций частиц, а затем добавить дополнительные переменные для пользовательских эффектов. Обратите внимание, что вершинный шейдер частиц отвечает за симуляцию движения частиц во времени, сами данные частиц содержат только начальную позицию и время появления.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qml-qtquick-particles-customparticle.html