diff --git a/src/core/effects/qgseffectstack.cpp b/src/core/effects/qgseffectstack.cpp index 4857b9aebc7..0edf4d9fc02 100644 --- a/src/core/effects/qgseffectstack.cpp +++ b/src/core/effects/qgseffectstack.cpp @@ -94,6 +94,27 @@ void QgsEffectStack::draw( QgsRenderContext &context ) { QPainter *destPainter = context.painter(); + if ( context.rasterizedRenderingPolicy() == Qgis::RasterizedRenderingPolicy::ForceVector ) + { + // can we render this stack if we're forcing vectors? + bool requiresRasterization = false; + for ( const QgsPaintEffect *effect : std::as_const( mEffectList ) ) + { + if ( effect->enabled() && effect->flags().testFlag( Qgis::PaintEffectFlag::RequiresRasterization ) ) + { + requiresRasterization = true; + break; + } + } + + if ( requiresRasterization ) + { + //just draw unmodified source, we can't render this effect stack when forcing vectors + drawSource( *context.painter() ); + } + return; + } + //first, we build up a list of rendered effects //we do this moving backwards through the stack, so that each effect's results //becomes the source of the previous effect diff --git a/src/core/effects/qgspainteffect.h b/src/core/effects/qgspainteffect.h index 1d38684bba9..d03621ccc0c 100644 --- a/src/core/effects/qgspainteffect.h +++ b/src/core/effects/qgspainteffect.h @@ -19,6 +19,7 @@ #include "qgis_core.h" #include "qgis_sip.h" +#include "qgis.h" #include #include #include