From dfcc629a23259855e686a1cf068af51e048e8492 Mon Sep 17 00:00:00 2001
From: Josh Morgenstern <josh@morgenstern.dev>
Date: Tue, 14 Sep 2021 13:04:33 +0200
Subject: [PATCH] [#111] Check particle count in flip shader

---
 projects/sph/shaders/flip.comp | 10 ++++++++++
 projects/sph/src/main.cpp      |  2 +-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/projects/sph/shaders/flip.comp b/projects/sph/shaders/flip.comp
index 96f3e992..58829574 100644
--- a/projects/sph/shaders/flip.comp
+++ b/projects/sph/shaders/flip.comp
@@ -23,8 +23,18 @@ layout(std430, binding = 0) writeonly buffer buffer_outParticle
     Particle outParticle[];
 };
 
+layout( push_constant ) uniform constants{
+    float deltaTime;
+    float particleCount;
+};
+
 void main() {
     uint id = gl_GlobalInvocationID.x;
+
+    if(id >= int(particleCount))
+    {
+        return;
+    }
     
     outParticle[id].force = inParticle[id].force;
     outParticle[id].density = inParticle[id].density;
diff --git a/projects/sph/src/main.cpp b/projects/sph/src/main.cpp
index 1141b625..b8972ed5 100644
--- a/projects/sph/src/main.cpp
+++ b/projects/sph/src/main.cpp
@@ -308,7 +308,7 @@ int main(int argc, const char **argv) {
                                               computePipeline4,
                                               computeDispatchCount,
                                               { vkcv::DescriptorSetUsage(0,core.getDescriptorSet(computeDescriptorSet4).vulkanHandle) },
-                                              vkcv::PushConstants(0));
+                                              pushConstantsCompute);
 
         core.recordBufferMemoryBarrier(cmdStream, particleBuffer1.getHandle());
         core.recordBufferMemoryBarrier(cmdStream, particleBuffer2.getHandle());
-- 
GitLab