From 38b1a7a352ae6f6ea842f86744d495889960219e Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Sun, 30 Jan 2022 00:13:09 +0100 Subject: [PATCH] Added barriers to write and read accesses Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- .../wobble_bobble/shaders/transform_particles_to_grid.comp | 2 ++ projects/wobble_bobble/shaders/update_grid_forces.comp | 4 ++++ projects/wobble_bobble/shaders/update_grid_velocities.comp | 4 ++++ .../wobble_bobble/shaders/update_particle_deformation.comp | 5 +++++ .../wobble_bobble/shaders/update_particle_positions.comp | 4 ++++ .../wobble_bobble/shaders/update_particle_velocities.comp | 5 +++++ 6 files changed, 24 insertions(+) diff --git a/projects/wobble_bobble/shaders/transform_particles_to_grid.comp b/projects/wobble_bobble/shaders/transform_particles_to_grid.comp index 49d6d962..defc9c3e 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 bf1c8a17..cfb8e201 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 39e30841..0178b4c5 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 f38e1778..7bfc923b 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 b3433928..270c2108 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 407f34d0..ecd57e12 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 -- GitLab