diff options
Diffstat (limited to 'src/effects/private/qgfxshaderbuilder.cpp')
-rw-r--r-- | src/effects/private/qgfxshaderbuilder.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/effects/private/qgfxshaderbuilder.cpp b/src/effects/private/qgfxshaderbuilder.cpp index 81a3c12..fe1d7fe 100644 --- a/src/effects/private/qgfxshaderbuilder.cpp +++ b/src/effects/private/qgfxshaderbuilder.cpp @@ -312,10 +312,11 @@ QVariantMap QGfxShaderBuilder::gaussianBlur(const QJSValue ¶meters) int requestedSamples = requestedRadius * 2 + 1; int samples = 1 + requestedSamples / 2; int radius = requestedSamples / 4; + bool fallback = parameters.property(QStringLiteral("fallback")).toBool(); QVariantMap result; - if (samples > m_maxBlurSamples || masked) { + if (samples > m_maxBlurSamples || masked || fallback) { QByteArray fragShader; if (masked) fragShader += "uniform mediump sampler2D mask;\n"; @@ -354,9 +355,9 @@ QVariantMap QGfxShaderBuilder::gaussianBlur(const QJSValue ¶meters) fragShader += ".a"; fragShader += ";\n"; } - fragShader += " const mediump float wSum = "; + fragShader += " const mediump float wSum = float("; fragShader += QByteArray::number(wSum); - fragShader += ";\n" + fragShader += ");\n" " gl_FragColor = "; if (alphaOnly) fragShader += "mix(vec4(0), color, clamp((result / wSum) / thickness, 0.0, 1.0)) * qt_Opacity;\n"; |