Skip to content
Snippets Groups Projects
Verified Commit 38b1a7a3 authored by Tobias Frisch's avatar Tobias Frisch
Browse files

Added barriers to write and read accesses

parent 1712d145
No related branches found
No related tags found
1 merge request!103Added project wobble_bobble and refactored some parts of the framework
...@@ -48,4 +48,6 @@ void main() { ...@@ -48,4 +48,6 @@ void main() {
ivec3(gl_GlobalInvocationID), ivec3(gl_GlobalInvocationID),
gridValue gridValue
); );
memoryBarrierImage();
} }
\ No newline at end of file
...@@ -13,6 +13,8 @@ layout( push_constant ) uniform constants { ...@@ -13,6 +13,8 @@ layout( push_constant ) uniform constants {
}; };
void main() { void main() {
memoryBarrierImage();
vec4 gridSample = imageLoad( vec4 gridSample = imageLoad(
gridImage, gridImage,
ivec3(gl_GlobalInvocationID) ivec3(gl_GlobalInvocationID)
...@@ -42,4 +44,6 @@ void main() { ...@@ -42,4 +44,6 @@ void main() {
ivec3(gl_GlobalInvocationID), ivec3(gl_GlobalInvocationID),
vec4(velocity, mass) vec4(velocity, mass)
); );
memoryBarrierImage();
} }
\ No newline at end of file
...@@ -15,6 +15,8 @@ layout( push_constant ) uniform constants { ...@@ -15,6 +15,8 @@ layout( push_constant ) uniform constants {
}; };
void main() { void main() {
memoryBarrierImage();
vec3 position = (vec3(gl_GlobalInvocationID) + vec3(0.5f)) / textureSize(sampler3D(gridTextureIn, gridSampler), 0); vec3 position = (vec3(gl_GlobalInvocationID) + vec3(0.5f)) / textureSize(sampler3D(gridTextureIn, gridSampler), 0);
vec4 gridCurrentSample = texture(sampler3D(gridTextureIn, gridSampler), position); vec4 gridCurrentSample = texture(sampler3D(gridTextureIn, gridSampler), position);
...@@ -26,4 +28,6 @@ void main() { ...@@ -26,4 +28,6 @@ void main() {
ivec3(gl_GlobalInvocationID), ivec3(gl_GlobalInvocationID),
gridPreviousSample gridPreviousSample
); );
memoryBarrierImage();
} }
\ No newline at end of file
...@@ -18,6 +18,9 @@ layout( push_constant ) uniform constants { ...@@ -18,6 +18,9 @@ layout( push_constant ) uniform constants {
}; };
void main() { void main() {
memoryBarrierBuffer();
memoryBarrierImage();
ParticleMinimal particle = particles[gl_GlobalInvocationID.x].minimal; ParticleMinimal particle = particles[gl_GlobalInvocationID.x].minimal;
mat3 deformation = mat3(particles[gl_GlobalInvocationID.x].deformation); mat3 deformation = mat3(particles[gl_GlobalInvocationID.x].deformation);
...@@ -30,4 +33,6 @@ void main() { ...@@ -30,4 +33,6 @@ void main() {
mat3 deformation_elastic = (mat3(1.0f) + grad_velocity * dt) * deformation; mat3 deformation_elastic = (mat3(1.0f) + grad_velocity * dt) * deformation;
particles[gl_GlobalInvocationID.x].deformation = mat4(deformation_elastic); particles[gl_GlobalInvocationID.x].deformation = mat4(deformation_elastic);
memoryBarrierBuffer();
} }
\ No newline at end of file
...@@ -15,9 +15,13 @@ layout( push_constant ) uniform constants { ...@@ -15,9 +15,13 @@ layout( push_constant ) uniform constants {
}; };
void main() { void main() {
memoryBarrierBuffer();
if (gl_GlobalInvocationID.x < particles.length()) { if (gl_GlobalInvocationID.x < particles.length()) {
vec3 position = particles[gl_GlobalInvocationID.x].minimal.position; vec3 position = particles[gl_GlobalInvocationID.x].minimal.position;
position = position + particles[gl_GlobalInvocationID.x].minimal.velocity * dt; position = position + particles[gl_GlobalInvocationID.x].minimal.velocity * dt;
particles[gl_GlobalInvocationID.x].minimal.position = position; particles[gl_GlobalInvocationID.x].minimal.position = position;
} }
memoryBarrierBuffer();
} }
\ No newline at end of file
...@@ -13,6 +13,9 @@ layout(set=0, binding=1) uniform texture3D gridImage; ...@@ -13,6 +13,9 @@ layout(set=0, binding=1) uniform texture3D gridImage;
layout(set=0, binding=2) uniform sampler gridSampler; layout(set=0, binding=2) uniform sampler gridSampler;
void main() { void main() {
memoryBarrierBuffer();
memoryBarrierImage();
if (gl_GlobalInvocationID.x < particles.length()) { if (gl_GlobalInvocationID.x < particles.length()) {
vec3 position = particles[gl_GlobalInvocationID.x].minimal.position; vec3 position = particles[gl_GlobalInvocationID.x].minimal.position;
float mass = particles[gl_GlobalInvocationID.x].minimal.mass; float mass = particles[gl_GlobalInvocationID.x].minimal.mass;
...@@ -28,4 +31,6 @@ void main() { ...@@ -28,4 +31,6 @@ void main() {
particles[gl_GlobalInvocationID.x].minimal.velocity = gridVelocity * mass / gridMass; particles[gl_GlobalInvocationID.x].minimal.velocity = gridVelocity * mass / gridMass;
} }
} }
memoryBarrierBuffer();
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment