diff --git a/projects/wobble_bobble/shaders/init_particle_volumes.comp b/projects/wobble_bobble/shaders/init_particle_volumes.comp
index be0e0d0610c06cb741728c0082dcf825cebda499..c7c64be34e4093e017b374d6ae7e7a49478e2343 100644
--- a/projects/wobble_bobble/shaders/init_particle_volumes.comp
+++ b/projects/wobble_bobble/shaders/init_particle_volumes.comp
@@ -24,6 +24,9 @@ void main()	{
         float mass = 0.0f;
         int i, j, k;
 
+        barrier();
+        memoryBarrierImage();
+
         for (i = -gridWindow.x; i <= gridWindow.x; i++) {
             for (j = -gridWindow.y; j <= gridWindow.y; j++) {
                 for (k = -gridWindow.z; k <= gridWindow.z; k++) {
@@ -37,6 +40,9 @@ void main()	{
             }
         }
 
+        barrier();
+        memoryBarrierBuffer();
+
         if (volume > 0.0f) {
             float density = minimal.mass / volume;
 
@@ -44,6 +50,9 @@ void main()	{
             //mass = density * volume;
         }
 
+        barrier();
+        memoryBarrierBuffer();
+
         particles[gl_GlobalInvocationID.x].minimal.size = sphere_radius(volume);
         particles[gl_GlobalInvocationID.x].minimal.mass = mass;
     }
diff --git a/projects/wobble_bobble/shaders/transform_particles_to_grid.comp b/projects/wobble_bobble/shaders/transform_particles_to_grid.comp
index 0ccc6eb2294b898ecbaad73404e2dd9e523ddcb3..9bae58efb32d820d999df55ad12aa9174dc05a45 100644
--- a/projects/wobble_bobble/shaders/transform_particles_to_grid.comp
+++ b/projects/wobble_bobble/shaders/transform_particles_to_grid.comp
@@ -55,6 +55,9 @@ void main()	{
         gridValue.xyz /= gridValue.w;
     }
 
+    barrier();
+    memoryBarrierShared();
+
     imageStore(
         gridImage,
         ivec3(gl_GlobalInvocationID),
diff --git a/projects/wobble_bobble/shaders/update_grid_forces.comp b/projects/wobble_bobble/shaders/update_grid_forces.comp
index 3277986450fb9d571a5f362e7ed1692252fb39ef..0cc83a26e65ab07a223aa1f38d219a87aac8ffdf 100644
--- a/projects/wobble_bobble/shaders/update_grid_forces.comp
+++ b/projects/wobble_bobble/shaders/update_grid_forces.comp
@@ -41,6 +41,8 @@ void main()	{
     }
 
     barrier();
+    memoryBarrierBuffer();
+    memoryBarrierShared();
     memoryBarrierImage();
 
     const vec3 gridResolution = vec3(imageSize(gridImage));
@@ -128,6 +130,11 @@ void main()	{
 
     velocity = mix(velocity, -velocity, invert);
 
+    barrier();
+    memoryBarrierBuffer();
+    memoryBarrierShared();
+    memoryBarrierImage();
+
     imageStore(
         gridForceImage,
         ivec3(gl_GlobalInvocationID),
diff --git a/projects/wobble_bobble/shaders/update_particle_deformation.comp b/projects/wobble_bobble/shaders/update_particle_deformation.comp
index 73d8961ad7454b03176a92612bed0b5e5d8ad423..a8a89bc55e93a71fac9977a810e0eb8e0eb44ce1 100644
--- a/projects/wobble_bobble/shaders/update_particle_deformation.comp
+++ b/projects/wobble_bobble/shaders/update_particle_deformation.comp
@@ -47,12 +47,18 @@ void main()	{
             }
         }
 
+        barrier();
+        memoryBarrierBuffer();
+
         mat3 deformation_elastic = deformation;
 
         if (dt > 0.0f) {
             deformation_elastic = (mat3(1.0f) + dt * velocity_gradient) * deformation;
         }
 
+        barrier();
+        memoryBarrierBuffer();
+
         particles[gl_GlobalInvocationID.x].deformation = mat4(deformation_elastic);
     }
 }
\ No newline at end of file
diff --git a/projects/wobble_bobble/shaders/update_particle_positions.comp b/projects/wobble_bobble/shaders/update_particle_positions.comp
index 6351cdde0e5ee20c6c1c1bd1f42caf4a2e524273..5e012f408098a419f95770e774547e419e686aa0 100644
--- a/projects/wobble_bobble/shaders/update_particle_positions.comp
+++ b/projects/wobble_bobble/shaders/update_particle_positions.comp
@@ -39,9 +39,13 @@ void main()	{
             }
         }
 
+        barrier();
+        memoryBarrierBuffer();
+
         particles[gl_GlobalInvocationID.x].minimal.position = position;
         particles[gl_GlobalInvocationID.x].minimal.velocity = velocity;
     }
 
+    barrier();
     memoryBarrierBuffer();
 }
\ No newline at end of file
diff --git a/projects/wobble_bobble/shaders/update_particle_velocities.comp b/projects/wobble_bobble/shaders/update_particle_velocities.comp
index bc592ad60dc61e7382230a37db9fdc52aa321d89..d29b22e127ecd6ede0b9a0a4f42a6ac68dc281f4 100644
--- a/projects/wobble_bobble/shaders/update_particle_velocities.comp
+++ b/projects/wobble_bobble/shaders/update_particle_velocities.comp
@@ -58,6 +58,9 @@ void main()	{
             }
         }
 
+        barrier();
+        memoryBarrierBuffer();
+
         mat3 affine_C = mat3(0.0f);
         vec3 velocity_apic = vec3(0.0f);
 
@@ -75,11 +78,15 @@ void main()	{
             }
         }
 
+        barrier();
+        memoryBarrierBuffer();
+
         vec3 velocity_alpha = mix(velocity_pic, velocity_flip, alpha);
         vec3 velocity_beta = mix(velocity_alpha, velocity_apic, beta);
 
         particles[gl_GlobalInvocationID.x].minimal.velocity = velocity_beta;
     }
 
+    barrier();
     memoryBarrierBuffer();
 }
\ No newline at end of file