diff --git a/projects/wobble_bobble/shaders/update_particle_velocities.comp b/projects/wobble_bobble/shaders/update_particle_velocities.comp index 65cb6f7fe920f117959493187d44e6339cefb1e1..1dcf904501984e8f7afdc33f7d40155b492bc220 100644 --- a/projects/wobble_bobble/shaders/update_particle_velocities.comp +++ b/projects/wobble_bobble/shaders/update_particle_velocities.comp @@ -77,15 +77,13 @@ void main() { float J = determinant(F); if (J > 0.0f) { - float volume = sphere_volume(size) * J; + float volume = sphere_volume(size); mat3 F_T = transpose(F); - mat3 F_T_inv = inverse(F_T); - mat3 delta = lame2 * (F - F_T_inv) + lame1 * log(J) * F_T_inv; - mat3 stress = (1.0f / J) * delta * F_T; + mat3 stress = lame2 * (F * F_T - mat3(1.0f)) + lame1 * log(J); - mls_Q -= dts * volume * D_inv * stress; + mls_Q -= dts * volume * stress * D_inv; } affine_C = affine_B * D_inv; diff --git a/projects/wobble_bobble/src/main.cpp b/projects/wobble_bobble/src/main.cpp index 492b75cfeeb86073c445b8459ae93e11acee5e6d..557f4dbd6c53cb28f11f8b2597fc99886031f1d0 100644 --- a/projects/wobble_bobble/src/main.cpp +++ b/projects/wobble_bobble/src/main.cpp @@ -555,7 +555,7 @@ int main(int argc, const char **argv) { auto cmdStream = core.createCommandStream(vkcv::QueueType::Graphics); - const uint32_t dispatchSizeGrid [3] = { 16, 16, 16 }; + const uint32_t dispatchSizeGrid [3] = { grid.getWidth() / 4, grid.getHeight() / 4, grid.getDepth() / 4 }; const uint32_t dispatchSizeParticles [3] = { static_cast<uint32_t>(particles.getCount() + 63) / 64, 1, 1 }; core.recordBeginDebugLabel(cmdStream, "INIT PARTICLE WEIGHTS", { 0.78f, 0.89f, 0.94f, 1.0f });