diff options
Diffstat (limited to 'src')
16 files changed, 16 insertions, 1 deletions
diff --git a/src/particles/qquickimageparticle.cpp b/src/particles/qquickimageparticle.cpp index 2b03d7889a..643194c8d5 100644 --- a/src/particles/qquickimageparticle.cpp +++ b/src/particles/qquickimageparticle.cpp @@ -79,6 +79,7 @@ class ImageMaterialData float sizeTable[UNIFORM_ARRAY_SIZE]; float opacityTable[UNIFORM_ARRAY_SIZE]; + qreal dpr; qreal timestamp; qreal entry; QSizeF animSheetSize; @@ -336,6 +337,9 @@ public: float timestamp = float(state->timestamp); memcpy(buf->data() + 72, ×tamp, 4); + float dpr = float(state->dpr); + memcpy(buf->data() + 76, &dpr, 4); + return true; } @@ -428,6 +432,9 @@ public: float timestamp = float(state->timestamp); memcpy(buf->data() + 72, ×tamp, 4); + float dpr = float(state->dpr); + memcpy(buf->data() + 76, &dpr, 4); + return true; } @@ -735,6 +742,7 @@ QQuickImageParticle::QQuickImageParticle(QQuickItem* parent) , m_startedImageLoading(0) , m_rhi(nullptr) , m_apiChecked(false) + , m_dpr(1.0) { setFlag(ItemHasContents); } @@ -1420,6 +1428,8 @@ void QQuickImageParticle::finishBuildParticleNodes(QSGNode** node) } state->texture->setFiltering(QSGTexture::Linear); state->entry = (qreal) m_entryEffect; + state->dpr = m_dpr; + m_material->setFlag(QSGMaterial::Blending | QSGMaterial::RequiresFullMatrix); } } @@ -1531,6 +1541,8 @@ QSGNode *QQuickImageParticle::updatePaintNode(QSGNode *node, UpdatePaintNodeData qWarning("Failed to query QRhi, particles disabled"); return nullptr; } + // Get the pixel ratio of the window, used for pointsize scaling + m_dpr = m_window ? m_window->devicePixelRatio() : 1.0; } if (m_pleaseReset){ diff --git a/src/particles/qquickimageparticle_p.h b/src/particles/qquickimageparticle_p.h index 0df098a05e..320534ca0b 100644 --- a/src/particles/qquickimageparticle_p.h +++ b/src/particles/qquickimageparticle_p.h @@ -482,6 +482,7 @@ private: int m_startedImageLoading; QRhi *m_rhi; bool m_apiChecked; + qreal m_dpr; }; QT_END_NAMESPACE diff --git a/src/particles/shaders_ng/imageparticle.frag b/src/particles/shaders_ng/imageparticle.frag index 89cdd48257..90b79e6ea9 100644 --- a/src/particles/shaders_ng/imageparticle.frag +++ b/src/particles/shaders_ng/imageparticle.frag @@ -23,6 +23,7 @@ layout(std140, binding = 0) uniform buf { float opacity; float entry; float timestamp; + float dpr; float sizetable[64]; float opacitytable[64]; } ubuf; diff --git a/src/particles/shaders_ng/imageparticle.vert b/src/particles/shaders_ng/imageparticle.vert index 420b2e2210..da3533dc40 100644 --- a/src/particles/shaders_ng/imageparticle.vert +++ b/src/particles/shaders_ng/imageparticle.vert @@ -48,6 +48,7 @@ layout(std140, binding = 0) uniform buf { float opacity; float entry; float timestamp; + float dpr; float sizetable[64]; float opacitytable[64]; } ubuf; @@ -137,7 +138,7 @@ void main() pos = vPos.xy + vVec.xy * t * vData.y // apply velocity vector.. + 0.5 * vVec.zw * pow(t * vData.y, 2.); - gl_PointSize = currentSize; + gl_PointSize = currentSize * ubuf.dpr; #else // non point color vec2 deform = currentSize * (vTex.xy - 0.5); pos = vPos.xy diff --git a/src/particles/shaders_ng/imageparticle_colored.frag.qsb b/src/particles/shaders_ng/imageparticle_colored.frag.qsb Binary files differindex 0cde86cd8f..5dfc5d1d97 100644 --- a/src/particles/shaders_ng/imageparticle_colored.frag.qsb +++ b/src/particles/shaders_ng/imageparticle_colored.frag.qsb diff --git a/src/particles/shaders_ng/imageparticle_colored.vert.qsb b/src/particles/shaders_ng/imageparticle_colored.vert.qsb Binary files differindex 77549dd5f0..b2548042ca 100644 --- a/src/particles/shaders_ng/imageparticle_colored.vert.qsb +++ b/src/particles/shaders_ng/imageparticle_colored.vert.qsb diff --git a/src/particles/shaders_ng/imageparticle_coloredpoint.frag.qsb b/src/particles/shaders_ng/imageparticle_coloredpoint.frag.qsb Binary files differindex f30633eec9..6e0373fd3b 100644 --- a/src/particles/shaders_ng/imageparticle_coloredpoint.frag.qsb +++ b/src/particles/shaders_ng/imageparticle_coloredpoint.frag.qsb diff --git a/src/particles/shaders_ng/imageparticle_coloredpoint.vert.qsb b/src/particles/shaders_ng/imageparticle_coloredpoint.vert.qsb Binary files differindex 3c92bc2f63..09b31c77c3 100644 --- a/src/particles/shaders_ng/imageparticle_coloredpoint.vert.qsb +++ b/src/particles/shaders_ng/imageparticle_coloredpoint.vert.qsb diff --git a/src/particles/shaders_ng/imageparticle_deformed.frag.qsb b/src/particles/shaders_ng/imageparticle_deformed.frag.qsb Binary files differindex 00ebda56a9..3df7e49cd0 100644 --- a/src/particles/shaders_ng/imageparticle_deformed.frag.qsb +++ b/src/particles/shaders_ng/imageparticle_deformed.frag.qsb diff --git a/src/particles/shaders_ng/imageparticle_deformed.vert.qsb b/src/particles/shaders_ng/imageparticle_deformed.vert.qsb Binary files differindex 378e9ba876..121e35fbb0 100644 --- a/src/particles/shaders_ng/imageparticle_deformed.vert.qsb +++ b/src/particles/shaders_ng/imageparticle_deformed.vert.qsb diff --git a/src/particles/shaders_ng/imageparticle_simplepoint.frag.qsb b/src/particles/shaders_ng/imageparticle_simplepoint.frag.qsb Binary files differindex 738be48b91..6199c48589 100644 --- a/src/particles/shaders_ng/imageparticle_simplepoint.frag.qsb +++ b/src/particles/shaders_ng/imageparticle_simplepoint.frag.qsb diff --git a/src/particles/shaders_ng/imageparticle_simplepoint.vert.qsb b/src/particles/shaders_ng/imageparticle_simplepoint.vert.qsb Binary files differindex a53868d4a5..ff8a5403d6 100644 --- a/src/particles/shaders_ng/imageparticle_simplepoint.vert.qsb +++ b/src/particles/shaders_ng/imageparticle_simplepoint.vert.qsb diff --git a/src/particles/shaders_ng/imageparticle_sprite.frag.qsb b/src/particles/shaders_ng/imageparticle_sprite.frag.qsb Binary files differindex 53f7592520..2df0734683 100644 --- a/src/particles/shaders_ng/imageparticle_sprite.frag.qsb +++ b/src/particles/shaders_ng/imageparticle_sprite.frag.qsb diff --git a/src/particles/shaders_ng/imageparticle_sprite.vert.qsb b/src/particles/shaders_ng/imageparticle_sprite.vert.qsb Binary files differindex 8d0efb05c3..5ef575a868 100644 --- a/src/particles/shaders_ng/imageparticle_sprite.vert.qsb +++ b/src/particles/shaders_ng/imageparticle_sprite.vert.qsb diff --git a/src/particles/shaders_ng/imageparticle_tabled.frag.qsb b/src/particles/shaders_ng/imageparticle_tabled.frag.qsb Binary files differindex 788063044e..08a82fe8ab 100644 --- a/src/particles/shaders_ng/imageparticle_tabled.frag.qsb +++ b/src/particles/shaders_ng/imageparticle_tabled.frag.qsb diff --git a/src/particles/shaders_ng/imageparticle_tabled.vert.qsb b/src/particles/shaders_ng/imageparticle_tabled.vert.qsb Binary files differindex 2027b0ecfa..febe5a495a 100644 --- a/src/particles/shaders_ng/imageparticle_tabled.vert.qsb +++ b/src/particles/shaders_ng/imageparticle_tabled.vert.qsb |