From a08d921c4c778de542ac1d9b73490fc3037fcb17 Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Mon, 19 Jun 2023 09:54:09 +0400 Subject: [PATCH] Create a stateset for every particle system to create its own defineMap --- components/shader/shadervisitor.cpp | 5 +++++ 1 file changed, 5 insertions(+) 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);