Spec-Zone.ru › Qt 5.6

Тип QML CustomParticle

Для задания шейдеров для отрисовки частиц Подробнее...

Заявление об импорте: import QtQuick.Particles 2.0
Наследует:

ParticlePainter

  • Список всех членов, включая унаследованные

Свойства

  • fragmentShader : строка
  • vertexShader : строка

Подробное описание

Документация по свойствам

fragmentShader : строка

Это свойство содержит исходный код фрагментного шейдера GLSL. По умолчанию шейдер ожидает, что координата текстуры будет передана из вершинного шейдера как «varying highp vec2 qt_TexCoord0», и он сэмплирует из sampler2D под названием «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/archives/qt-5.6/qml-qtquick-particles-customparticle.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API