diff --git a/components/shader/shadervisitor.cpp b/components/shader/shadervisitor.cpp index c9f9dc08fe..0112a3a699 100644 --- a/components/shader/shadervisitor.cpp +++ b/components/shader/shadervisitor.cpp @@ -893,6 +893,11 @@ namespace Shader { bool needPop = drawable.getStateSet() || mRequirements.empty(); + // We need to push and pop a requirements object because particle systems can have + // different shader requirements to other drawables, so might need a different shader variant. + if (!needPop && dynamic_cast(&drawable)) + needPop = true; + if (needPop) { pushRequirements(drawable);