From 180efe86e6aa28fb16525af70ea7cd29ec2af582 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Fri, 5 Mar 2021 14:36:59 +0100 Subject: [PATCH] Fix culling for Volumetric Fog particles to include particle radius --- .../Graph/CPU/ParticleEmitterGraph.CPU.cpp | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Source/Engine/Particles/Graph/CPU/ParticleEmitterGraph.CPU.cpp b/Source/Engine/Particles/Graph/CPU/ParticleEmitterGraph.CPU.cpp index a9e90546a..2415350ed 100644 --- a/Source/Engine/Particles/Graph/CPU/ParticleEmitterGraph.CPU.cpp +++ b/Source/Engine/Particles/Graph/CPU/ParticleEmitterGraph.CPU.cpp @@ -312,6 +312,30 @@ bool ParticleEmitterGraphCPUExecutor::ComputeBounds(ParticleEmitter* emitter, Pa } break; } + // Volumetric Fog Rendering + case 405: + { + // Find the maximum radius of the particle + float maxRadius = 0.0f; + if (_graph._attrRadius != -1) + { + byte* radius = bufferPtr + layout->Attributes[_graph._attrRadius].Offset; + for (int32 i = 0; i < count; i++) + { + maxRadius = Math::Max(*((float*)radius), maxRadius); + radius += stride; + } + ASSERT(!isnan(maxRadius) && !isinf(maxRadius)); + } + else + { + maxRadius = 100.0f; + } + + // Enlarge the emitter bounds sphere + sphere.Radius += maxRadius; + } + break; } }