diff --git a/projects/sph/shaders/flip.comp b/projects/sph/shaders/flip.comp
index 96f3e992f8bd34bd0688801e917c75d2d62462e5..588295747e7847378c43dc446e983427761b8ca6 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 1141b625bc5605d5c78a4e97e003938a7dbce8fa..b8972ed53cc73e4bea53fb8efa3e1625c4f4ec72 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());