From ed3cff988451686d163bb7d19b5329a8bc436401 Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Mon, 31 Jan 2022 03:00:36 +0100 Subject: [PATCH] Corrected error with unsigned loop indices Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- .../shaders/update_particle_deformation.comp | 2 +- .../shaders/update_particle_velocities.comp | 12 ++++++++---- projects/wobble_bobble/src/main.cpp | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/projects/wobble_bobble/shaders/update_particle_deformation.comp b/projects/wobble_bobble/shaders/update_particle_deformation.comp index 9711d48a..8cd2aabe 100644 --- a/projects/wobble_bobble/shaders/update_particle_deformation.comp +++ b/projects/wobble_bobble/shaders/update_particle_deformation.comp @@ -25,7 +25,7 @@ void main() { mat3 velocity_gradient = mat3(0.0f); - uint i, j, k; + int i, j, k; for (i = -gridWindow.x; i <= gridWindow.x; i++) { for (j = -gridWindow.y; j <= gridWindow.y; j++) { diff --git a/projects/wobble_bobble/shaders/update_particle_velocities.comp b/projects/wobble_bobble/shaders/update_particle_velocities.comp index 123ac83a..e1927eb8 100644 --- a/projects/wobble_bobble/shaders/update_particle_velocities.comp +++ b/projects/wobble_bobble/shaders/update_particle_velocities.comp @@ -1,5 +1,6 @@ #version 450 #extension GL_GOOGLE_include_directive : enable +#extension GL_EXT_control_flow_attributes : enable layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in; @@ -23,9 +24,10 @@ void main() { ivec3 gridResolution = textureSize(sampler3D(gridImage, gridSampler), 0); ivec3 gridWindow = ivec3(minimal.size * 2.0f * gridResolution); - vec3 velocity = vec3(minimal.velocity); + vec3 velocity_pic = vec3(0.0f); + vec3 velocity_flip = vec3(minimal.velocity); - uint i, j, k; + int i, j, k; for (i = -gridWindow.x; i <= gridWindow.x; i++) { for (j = -gridWindow.y; j <= gridWindow.y; j++) { @@ -38,14 +40,16 @@ void main() { vec4 gridOldSample = texture(sampler3D(gridOldImage, gridSampler), voxel); vec3 weight = voxel_particle_weight(voxel, minimal); + float w = (weight.x * weight.y * weight.z); - velocity += (weight.x * weight.y * weight.z) * (gridSample.xyz - gridOldSample.xyz); + velocity_pic += gridSample.xyz * w; + velocity_flip += (gridSample.xyz - gridOldSample.xyz) * w; } } } } - particles[gl_GlobalInvocationID.x].minimal.velocity = velocity; + particles[gl_GlobalInvocationID.x].minimal.velocity = mix(velocity_pic, velocity_flip, 0.95f); } memoryBarrierBuffer(); diff --git a/projects/wobble_bobble/src/main.cpp b/projects/wobble_bobble/src/main.cpp index 1049305c..4e763548 100644 --- a/projects/wobble_bobble/src/main.cpp +++ b/projects/wobble_bobble/src/main.cpp @@ -40,7 +40,7 @@ void distributeParticles(Particle *particles, size_t count, const glm::vec3& cen particles[i].position = center + offset; particles[i].size = size; - particles[i].velocity = glm::vec3(0.0f, 0.1f, 0.0f); + particles[i].velocity = glm::vec3(0.0f); volume += size; } -- GitLab