diff --git a/projects/wobble_bobble/shaders/transform_particles_to_grid.comp b/projects/wobble_bobble/shaders/transform_particles_to_grid.comp index 49df347948c0e1cebed4c077320b94ad6cdd3e4e..7e999944ccaa2c8066efd326ac1af09c86dd8276 100644 --- a/projects/wobble_bobble/shaders/transform_particles_to_grid.comp +++ b/projects/wobble_bobble/shaders/transform_particles_to_grid.comp @@ -71,7 +71,7 @@ void main() { memoryBarrierShared(); } - gridValue.xyz += vec3(0.0f, -9.81f * dts * gridValue.w, 0.0f); + gridValue.xyz += vec3(0.0f, -9.81f * dts * gridValue.w * 0.0f, 0.0f); gridValue.xyz /= gridValue.w; if (any(isnan(gridValue.xyz)) || any(isinf(gridValue.xyz))) { @@ -90,7 +90,7 @@ void main() { (lowerID.z && negativeVelocity.z) || (greaterID.z && positiveVelocity.z) ); - gridValue.xyz = mix(gridValue.xyz, vec3(0.0f), collision); + gridValue.xyz = mix(gridValue.xyz, -gridValue.xyz, collision); barrier(); memoryBarrierShared(); diff --git a/projects/wobble_bobble/shaders/update_particle_velocities.comp b/projects/wobble_bobble/shaders/update_particle_velocities.comp index c5f53ee00f6ccfb6bf134e1bfe06eb42d60d045a..65cb6f7fe920f117959493187d44e6339cefb1e1 100644 --- a/projects/wobble_bobble/shaders/update_particle_velocities.comp +++ b/projects/wobble_bobble/shaders/update_particle_velocities.comp @@ -85,7 +85,7 @@ void main() { mat3 delta = lame2 * (F - F_T_inv) + lame1 * log(J) * F_T_inv; mat3 stress = (1.0f / J) * delta * F_T; - mls_Q -= dts * volume * stress * D_inv; + mls_Q -= dts * volume * D_inv * stress; } affine_C = affine_B * D_inv; diff --git a/projects/wobble_bobble/src/main.cpp b/projects/wobble_bobble/src/main.cpp index 7d69a2e7cdee39b18447b766318bea45bb22cb62..492b75cfeeb86073c445b8459ae93e11acee5e6d 100644 --- a/projects/wobble_bobble/src/main.cpp +++ b/projects/wobble_bobble/src/main.cpp @@ -171,13 +171,13 @@ int main(int argc, const char **argv) { swapchainExtent.height ).getHandle(); - glm::vec3 initialVelocity (0.0f, 1.0f, 0.0f); + glm::vec3 initialVelocity (0.0f, 0.1f, 0.0f); float density = 2500.0f; float radius = 0.1f; vkcv::Buffer<Particle> particles = core.createBuffer<Particle>( vkcv::BufferType::STORAGE, - 64 + 256 ); resetParticles(particles, initialVelocity, density, radius);