From c946fa239ec6f27b1c513e58254f2df846f1a714 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sun, 10 Aug 2025 22:54:37 +0200 Subject: [PATCH] Fix gpu particles crash from 0ea555b041f1df5bc8e1a9d0565ec6700e8af0c8 on first draw --- Source/Engine/Particles/Particles.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Source/Engine/Particles/Particles.cpp b/Source/Engine/Particles/Particles.cpp index 46649f82a..bf529776f 100644 --- a/Source/Engine/Particles/Particles.cpp +++ b/Source/Engine/Particles/Particles.cpp @@ -1354,9 +1354,16 @@ void UpdateGPU(RenderTask* task, GPUContext* context) if (!emitter || !emitter->IsLoaded() || emitter->SimulationMode != ParticlesSimulationMode::GPU || instance.Emitters.Count() <= emitterIndex) continue; ParticleEmitterInstance& data = instance.Emitters[emitterIndex]; - if (!data.Buffer || !emitter->GPU.CanSim(emitter, data)) + if (!data.Buffer) continue; ASSERT(emitter->Capacity != 0 && emitter->Graph.Layout.Size != 0); + if (!emitter->GPU.CanSim(emitter, data)) + { + // Emitters that are culled still might need to clear the particle counter (used for indirect draws) + if (data.Buffer->GPU.PendingClear) + emitter->GPU.PreSim(context, emitter, effect, emitterIndex, data); + continue; + } sims.Add({ effect, emitter, emitterIndex, data }); } }