diff --git a/projects/wobble_bobble/shaders/transform_particles_to_grid.comp b/projects/wobble_bobble/shaders/transform_particles_to_grid.comp index 49d6d962d53b56d7df10eecb9bb1ae002bad415c..defc9c3e246612bbd8138f8f7b25ff29002c416a 100644 --- a/projects/wobble_bobble/shaders/transform_particles_to_grid.comp +++ b/projects/wobble_bobble/shaders/transform_particles_to_grid.comp @@ -48,4 +48,6 @@ void main() { ivec3(gl_GlobalInvocationID), gridValue ); + + memoryBarrierImage(); } \ No newline at end of file diff --git a/projects/wobble_bobble/shaders/update_grid_forces.comp b/projects/wobble_bobble/shaders/update_grid_forces.comp index bf1c8a17c2173e846b43009d5290c5a5ce68efd3..cfb8e20100dca232534c338ab082fa9931ffe53e 100644 --- a/projects/wobble_bobble/shaders/update_grid_forces.comp +++ b/projects/wobble_bobble/shaders/update_grid_forces.comp @@ -13,6 +13,8 @@ layout( push_constant ) uniform constants { }; void main() { + memoryBarrierImage(); + vec4 gridSample = imageLoad( gridImage, ivec3(gl_GlobalInvocationID) @@ -42,4 +44,6 @@ void main() { ivec3(gl_GlobalInvocationID), vec4(velocity, mass) ); + + memoryBarrierImage(); } \ No newline at end of file diff --git a/projects/wobble_bobble/shaders/update_grid_velocities.comp b/projects/wobble_bobble/shaders/update_grid_velocities.comp index 39e3084169ed0bdeb285af6de8150c7fc38be308..0178b4c5d777bbb1d0105623b923563765d57120 100644 --- a/projects/wobble_bobble/shaders/update_grid_velocities.comp +++ b/projects/wobble_bobble/shaders/update_grid_velocities.comp @@ -15,6 +15,8 @@ layout( push_constant ) uniform constants { }; void main() { + memoryBarrierImage(); + vec3 position = (vec3(gl_GlobalInvocationID) + vec3(0.5f)) / textureSize(sampler3D(gridTextureIn, gridSampler), 0); vec4 gridCurrentSample = texture(sampler3D(gridTextureIn, gridSampler), position); @@ -26,4 +28,6 @@ void main() { ivec3(gl_GlobalInvocationID), gridPreviousSample ); + + memoryBarrierImage(); } \ No newline at end of file diff --git a/projects/wobble_bobble/shaders/update_particle_deformation.comp b/projects/wobble_bobble/shaders/update_particle_deformation.comp index f38e17784b93b25231ebaec9cf3ca34407746165..7bfc923b39cd8478d2824084efa8bbbfabc9a4b0 100644 --- a/projects/wobble_bobble/shaders/update_particle_deformation.comp +++ b/projects/wobble_bobble/shaders/update_particle_deformation.comp @@ -18,6 +18,9 @@ layout( push_constant ) uniform constants { }; void main() { + memoryBarrierBuffer(); + memoryBarrierImage(); + ParticleMinimal particle = particles[gl_GlobalInvocationID.x].minimal; mat3 deformation = mat3(particles[gl_GlobalInvocationID.x].deformation); @@ -30,4 +33,6 @@ void main() { mat3 deformation_elastic = (mat3(1.0f) + grad_velocity * dt) * deformation; particles[gl_GlobalInvocationID.x].deformation = mat4(deformation_elastic); + + memoryBarrierBuffer(); } \ 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 b3433928ceb8157358274e105a9f2244d40739cb..270c2108715b1d6829b9bd51627b3e7ad1448a2b 100644 --- a/projects/wobble_bobble/shaders/update_particle_positions.comp +++ b/projects/wobble_bobble/shaders/update_particle_positions.comp @@ -15,9 +15,13 @@ layout( push_constant ) uniform constants { }; void main() { + memoryBarrierBuffer(); + if (gl_GlobalInvocationID.x < particles.length()) { vec3 position = particles[gl_GlobalInvocationID.x].minimal.position; position = position + particles[gl_GlobalInvocationID.x].minimal.velocity * dt; particles[gl_GlobalInvocationID.x].minimal.position = position; } + + 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 407f34d0fc814f358af793dab0459810a00b2528..ecd57e12afcd54da58faa7b8e1d6797cf843d894 100644 --- a/projects/wobble_bobble/shaders/update_particle_velocities.comp +++ b/projects/wobble_bobble/shaders/update_particle_velocities.comp @@ -13,6 +13,9 @@ layout(set=0, binding=1) uniform texture3D gridImage; layout(set=0, binding=2) uniform sampler gridSampler; void main() { + memoryBarrierBuffer(); + memoryBarrierImage(); + if (gl_GlobalInvocationID.x < particles.length()) { vec3 position = particles[gl_GlobalInvocationID.x].minimal.position; float mass = particles[gl_GlobalInvocationID.x].minimal.mass; @@ -28,4 +31,6 @@ void main() { particles[gl_GlobalInvocationID.x].minimal.velocity = gridVelocity * mass / gridMass; } } + + memoryBarrierBuffer(); } \ No newline at end of file