From 0958f9a2706aa3658821fa8b54a785747e70b530 Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Sat, 5 Feb 2022 20:33:31 +0100 Subject: [PATCH] Added gravity slider Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- projects/wobble_bobble/shaders/particle.inc | 3 +++ .../shaders/transform_particles_to_grid.comp | 8 ++++++-- projects/wobble_bobble/src/main.cpp | 17 ++++++++++++----- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/projects/wobble_bobble/shaders/particle.inc b/projects/wobble_bobble/shaders/particle.inc index dbe0254e..ddb07e78 100644 --- a/projects/wobble_bobble/shaders/particle.inc +++ b/projects/wobble_bobble/shaders/particle.inc @@ -33,12 +33,15 @@ struct Simulation { float size; float lame1; float lame2; + int form; int type; float K; float E; + float gamma; int mode; + float gravity; }; const float PI = 3.1415926535897932384626433832795; diff --git a/projects/wobble_bobble/shaders/transform_particles_to_grid.comp b/projects/wobble_bobble/shaders/transform_particles_to_grid.comp index 236ff763..ade23ae7 100644 --- a/projects/wobble_bobble/shaders/transform_particles_to_grid.comp +++ b/projects/wobble_bobble/shaders/transform_particles_to_grid.comp @@ -9,7 +9,11 @@ layout(set=0, binding=0, std430) readonly buffer particleBuffer { Particle particles []; }; -layout(set=0, binding=1, rgba32f) restrict writeonly uniform image3D gridImage; +layout(set=0, binding=1) uniform simulationBlock { + Simulation simulation; +}; + +layout(set=0, binding=2, rgba32f) restrict writeonly uniform image3D gridImage; layout( push_constant ) uniform constants { float t; @@ -73,7 +77,7 @@ void main() { gridValue.xyz = vec3(0.0f); } - gridValue.xyz += vec3(0.0f, -9.81f * dts * gridValue.w, 0.0f); + gridValue.xyz += vec3(0.0f, -simulation.gravity * dts * gridValue.w, 0.0f); bvec3 lowerID = lessThanEqual(gl_GlobalInvocationID, ivec3(0)); bvec3 negativeVelocity = lessThan(gridValue.xyz, vec3(0.0f)); diff --git a/projects/wobble_bobble/src/main.cpp b/projects/wobble_bobble/src/main.cpp index d15d3a6a..de120874 100644 --- a/projects/wobble_bobble/src/main.cpp +++ b/projects/wobble_bobble/src/main.cpp @@ -33,12 +33,15 @@ struct Simulation { float size; float lame1; float lame2; + int form; int type; float K; float E; + float gamma; int mode; + float gravity; }; struct Physics { @@ -348,6 +351,7 @@ int main(int argc, const char **argv) { sim->E = 35.0f; sim->gamma = 1.330f; sim->mode = SIM_MODE_RANDOM; + sim->gravity = 9.81f; resetParticles(particles, initialVelocity, sim->density, sim->size, sim->form, sim->mode); @@ -378,7 +382,8 @@ int main(int argc, const char **argv) { { vkcv::DescriptorWrites writes; writes.storageBufferWrites.push_back(vkcv::BufferDescriptorWrite(0, particles.getHandle())); - writes.storageImageWrites.push_back(vkcv::StorageImageDescriptorWrite(1, grid.getHandle())); + writes.uniformBufferWrites.push_back(vkcv::BufferDescriptorWrite(1, simulation.getHandle())); + writes.storageImageWrites.push_back(vkcv::StorageImageDescriptorWrite(2, grid.getHandle())); core.writeDescriptorSet(transformParticlesToGridSets[0], writes); } @@ -833,11 +838,11 @@ int main(int argc, const char **argv) { ImGui::Spacing(); ImGui::BeginGroup(); - ImGui::SliderFloat("Bulk Modulus", &(sim->K), 0.0f, 100.0f); - ImGui::SliderFloat("Young's Modulus", &(sim->E), 0.0f, 100.0f); + ImGui::SliderFloat("Bulk Modulus", &(sim->K), 0.0f, 1000.0f); + ImGui::SliderFloat("Young's Modulus", &(sim->E), 0.0f, 1000.0f); ImGui::SliderFloat("Heat Capacity Ratio", &(sim->gamma), 1.0f, 2.0f); - ImGui::SliderFloat("Lame1", &(sim->lame1), 0.0f, 100.0f); - ImGui::SliderFloat("Lame2", &(sim->lame2), 0.0f, 100.0f); + ImGui::SliderFloat("Lame1", &(sim->lame1), 0.0f, 1000.0f); + ImGui::SliderFloat("Lame2", &(sim->lame2), 0.0f, 1000.0f); ImGui::EndGroup(); ImGui::Spacing(); @@ -853,6 +858,8 @@ int main(int argc, const char **argv) { resetParticles(particles, initialVelocity, sim->density, sim->size, sim->form, sim->mode); } + ImGui::SliderFloat("Gravity", &(sim->gravity), 0.0f, 10.0f); + ImGui::End(); gui.endGUI(); -- GitLab