From c041a25c6a31f5f95f30e26bfc45901009f0b58d Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Mon, 31 Jan 2022 18:41:49 +0100 Subject: [PATCH] Added reset button and initial velocity input Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- projects/wobble_bobble/src/main.cpp | 36 +++++++++++++++++++---------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/projects/wobble_bobble/src/main.cpp b/projects/wobble_bobble/src/main.cpp index 799eab7b..bab39304 100644 --- a/projects/wobble_bobble/src/main.cpp +++ b/projects/wobble_bobble/src/main.cpp @@ -103,6 +103,21 @@ vkcv::ComputePipelineHandle createComputePipeline(vkcv::Core& core, vkcv::shader return core.createComputePipeline(config); } +void resetParticles(vkcv::Buffer<Particle>& particles, const glm::vec3& velocity) { + std::vector<Particle> particles_vec (particles.getCount()); + + distributeParticles( + particles_vec.data(), + particles_vec.size(), + glm::vec3(0.5f), + 0.05f, + 0.27f, + velocity + ); + + particles.fill(particles_vec); +} + int main(int argc, const char **argv) { const char* applicationName = "Wobble Bobble"; @@ -136,23 +151,14 @@ int main(int argc, const char **argv) { swapchainExtent.height ).getHandle(); + glm::vec3 initialVelocity (0.0f, 0.0f, 0.0f); + vkcv::Buffer<Particle> particles = core.createBuffer<Particle>( vkcv::BufferType::STORAGE, 1024 ); - std::vector<Particle> particles_vec (particles.getCount()); - - distributeParticles( - particles_vec.data(), - particles_vec.size(), - glm::vec3(0.5f), - 0.05f, - 0.27f, - glm::vec3(0.0f, 0.1f, 0.0f) - ); - - particles.fill(particles_vec); + resetParticles(particles, initialVelocity); vkcv::Image grid = core.createImage( vk::Format::eR32G32B32A32Sfloat, @@ -746,6 +752,12 @@ int main(int argc, const char **argv) { ImGui::SliderFloat("Alpha (PIC -> FLIP)", &alpha, 0.0f, 1.0f); ImGui::SliderFloat("Beta (Alpha -> APIC)", &beta, 0.0f, 1.0f); + ImGui::DragFloat3("Initial velocity", reinterpret_cast<float*>(&initialVelocity)); + + if (ImGui::Button("Reset Particles")) { + resetParticles(particles, initialVelocity); + } + ImGui::End(); gui.endGUI(); -- GitLab