From 5131916b7a986ec33284f9baa52a350076b4d247 Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Sun, 25 Sep 2022 17:35:20 +0200 Subject: [PATCH] Replaced camera indices with camera handles Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- .../include/vkcv/camera/CameraHandle.hpp | 31 +++++++++ .../include/vkcv/camera/CameraManager.hpp | 65 +++++++++---------- .../include/vkcv/camera/ControllerType.hpp | 28 ++++++++ .../camera/src/vkcv/camera/CameraManager.cpp | 44 ++++++------- projects/bindless_textures/src/main.cpp | 4 +- projects/fire_works/src/main.cpp | 16 ++--- projects/first_mesh/src/main.cpp | 4 +- projects/first_scene/src/main.cpp | 10 +-- projects/first_triangle/src/main.cpp | 4 +- projects/head_demo/src/main.cpp | 10 +-- projects/indirect_dispatch/src/App.cpp | 6 +- projects/indirect_draw/src/main.cpp | 8 +-- projects/mesh_shader/src/main.cpp | 4 +- projects/particle_simulation/src/main.cpp | 16 ++--- projects/path_tracer/src/main.cpp | 4 +- projects/rtx_ambient_occlusion/src/main.cpp | 4 +- projects/saf_r/src/main.cpp | 11 ++-- projects/sph/src/main.cpp | 20 +++--- projects/voxelization/src/main.cpp | 14 ++-- projects/wobble_bobble/src/main.cpp | 4 +- 20 files changed, 180 insertions(+), 127 deletions(-) create mode 100644 modules/camera/include/vkcv/camera/CameraHandle.hpp create mode 100644 modules/camera/include/vkcv/camera/ControllerType.hpp diff --git a/modules/camera/include/vkcv/camera/CameraHandle.hpp b/modules/camera/include/vkcv/camera/CameraHandle.hpp new file mode 100644 index 00000000..b681f93c --- /dev/null +++ b/modules/camera/include/vkcv/camera/CameraHandle.hpp @@ -0,0 +1,31 @@ +#pragma once +/** + * @authors Tobias Frisch + * @file include/vkcv/camera/CameraHandle.hpp + * @brief CameraHandle class of the camera module for the vkcv framework. + */ + +#include <vkcv/Handles.hpp> + +namespace vkcv::camera { + + /** + * @addtogroup vkcv_camera + * @{ + */ + + class CameraManager; + + /** + * @brief Handle class for cameras. + */ + class CameraHandle : public Handle { + friend class CameraManager; + + private: + using Handle::Handle; + }; + + /** @} */ + +} \ No newline at end of file diff --git a/modules/camera/include/vkcv/camera/CameraManager.hpp b/modules/camera/include/vkcv/camera/CameraManager.hpp index 092e1fc8..c54ec940 100644 --- a/modules/camera/include/vkcv/camera/CameraManager.hpp +++ b/modules/camera/include/vkcv/camera/CameraManager.hpp @@ -6,10 +6,14 @@ * controller objects. Camera objects can be created and bound to a specific camera controller via this class. */ +#include "CameraHandle.hpp" +#include "ControllerType.hpp" #include "PilotCameraController.hpp" #include "TrackballCameraController.hpp" #include "CameraController.hpp" + #include "vkcv/Window.hpp" + #include <GLFW/glfw3.h> #include <functional> @@ -20,17 +24,6 @@ namespace vkcv::camera { * @{ */ - /** - * @brief Used for specifying existing types of camera controllers when adding a new controller object to the - * #CameraManager. - */ - enum class ControllerType { - NONE, - PILOT, - TRACKBALL, - TRACE - }; - /** * @brief Used for managing an arbitrary amount of camera controllers. */ @@ -46,7 +39,7 @@ namespace vkcv::camera { Window& m_window; std::vector<Camera> m_cameras; std::vector<ControllerType> m_cameraControllerTypes; - uint32_t m_activeCameraIndex; + uint64_t m_activeCameraIndex; PilotCameraController m_pilotController; TrackballCameraController m_trackController; @@ -140,26 +133,26 @@ namespace vkcv::camera { * @brief Adds a new camera object to the #CameraManager and binds it to a camera controller object of specified * @p controllerType. * @param[in] controllerType The type of the camera controller. - * @return The index of the newly created camera object. + * @return The handle of the newly created camera object. */ - uint32_t addCamera(ControllerType controllerType = ControllerType::NONE); + CameraHandle addCamera(ControllerType controllerType = ControllerType::NONE); /** * @brief Adds a new camera object to the #CameraManager and binds it to a camera controller object of specified * @p controllerType. * @param[in] controllerType The type of the camera controller. * @param[in] camera The new camera object. - * @return The index of the newly bound camera object. + * @return The handle of the newly bound camera object. */ - uint32_t addCamera(ControllerType controllerType, const Camera& camera); + CameraHandle addCamera(ControllerType controllerType, const Camera& camera); /** - * @brief Gets the stored camera object located at @p cameraIndex. - * @param[in] cameraIndex The camera index. - * @return The camera object at @p cameraIndex. - * @throws std::runtime_error If @p cameraIndex is not a valid camera index. + * @brief Gets the stored camera object located by @p cameraHandle. + * @param[in] cameraHandle The camera handle. + * @return The camera object by @p cameraHandle. + * @throws std::runtime_error If @p cameraHandle is not a valid camera handle. */ - Camera& getCamera(uint32_t cameraIndex); + Camera& getCamera(const CameraHandle& cameraHandle); /** * @brief Gets the stored camera object set as the active camera. @@ -168,34 +161,34 @@ namespace vkcv::camera { Camera& getActiveCamera(); /** - * @brief Sets the stored camera object located at @p cameraIndex as the active camera. - * @param[in] cameraIndex The camera index. - * @throws std::runtime_error If @p cameraIndex is not a valid camera index. + * @brief Sets the stored camera object located at @p cameraHandle as the active camera. + * @param[in] cameraHandle The camera handle. + * @throws std::runtime_error If @p cameraHandle is not a valid camera handle. */ - void setActiveCamera(uint32_t cameraIndex); + void setActiveCamera(const CameraHandle& cameraHandle); /** - * @brief Gets the index of the stored active camera object. - * @return The active camera index. + * @brief Gets the handle of the stored active camera object. + * @return The active camera handle. */ - uint32_t getActiveCameraIndex() const; + CameraHandle getActiveCameraHandle() const; /** - * @brief Binds a stored camera object located at @p cameraIndex to a camera controller of specified + * @brief Binds a stored camera object located by @p cameraHandle to a camera controller of specified * @p controllerType. - * @param[in] cameraIndex The camera index. + * @param[in] cameraHandle The camera handle. * @param[in] controllerType The type of the camera controller. - * @throws std::runtime_error If @p cameraIndex is not a valid camera index. + * @throws std::runtime_error If @p cameraHandle is not a valid camera handle. */ - void setControllerType(uint32_t cameraIndex, ControllerType controllerType); + void setControllerType(const CameraHandle& cameraHandle, ControllerType controllerType); /** - * @brief Gets the currently bound camera controller type of the stored camera object located at @p cameraIndex. - * @param[in] cameraIndex The camera index. + * @brief Gets the currently bound camera controller type of the stored camera object located by @p cameraHandle. + * @param[in] cameraHandle The camera handle. * @return The type of the camera controller of the specified camera object. - * @throws std::runtime_error If @p cameraIndex is not a valid camera index. + * @throws std::runtime_error If @p cameraHandle is not a valid camera handle. */ - ControllerType getControllerType(uint32_t cameraIndex); + ControllerType getControllerType(const CameraHandle& cameraHandle); /** * @brief Updates all stored camera controllers in respect to @p deltaTime. diff --git a/modules/camera/include/vkcv/camera/ControllerType.hpp b/modules/camera/include/vkcv/camera/ControllerType.hpp new file mode 100644 index 00000000..c1a5ef34 --- /dev/null +++ b/modules/camera/include/vkcv/camera/ControllerType.hpp @@ -0,0 +1,28 @@ +#pragma once +/** + * @authors Tobias Frisch + * @file include/vkcv/camera/ControllerType.hpp + * @brief ControllerType enum of the camera module for the vkcv framework. + */ + +namespace vkcv::camera { + + /** + * @addtogroup vkcv_camera + * @{ + */ + + /** + * @brief Used for specifying existing types of camera controllers when adding a new controller object to the + * #CameraManager. + */ + enum class ControllerType { + NONE, + PILOT, + TRACKBALL, + TRACE + }; + + /** @} */ + +} diff --git a/modules/camera/src/vkcv/camera/CameraManager.cpp b/modules/camera/src/vkcv/camera/CameraManager.cpp index 4c713c29..a2ead14c 100644 --- a/modules/camera/src/vkcv/camera/CameraManager.cpp +++ b/modules/camera/src/vkcv/camera/CameraManager.cpp @@ -35,8 +35,8 @@ namespace vkcv::camera { void CameraManager::resizeCallback(int width, int height) { if (glfwGetWindowAttrib(m_window.getWindow(), GLFW_ICONIFIED) == GLFW_FALSE) { - for (size_t i = 0; i < m_cameras.size(); i++) { - getCamera(i).setRatio(static_cast<float>(width) / static_cast<float>(height));; + for (auto& camera : m_cameras) { + camera.setRatio(static_cast<float>(width) / static_cast<float>(height));; } } } @@ -110,67 +110,67 @@ namespace vkcv::camera { } CameraController& CameraManager::getActiveController() { - const ControllerType type = getControllerType(getActiveCameraIndex()); + const ControllerType type = getControllerType(getActiveCameraHandle()); return getControllerByType(type); } - uint32_t CameraManager::addCamera(ControllerType controllerType) { + CameraHandle CameraManager::addCamera(ControllerType controllerType) { const float ratio = static_cast<float>(m_window.getWidth()) / static_cast<float>(m_window.getHeight()); Camera camera; camera.setPerspective(glm::radians(60.0f), ratio, 0.1f, 10.0f); return addCamera(controllerType, camera); } - - uint32_t CameraManager::addCamera(ControllerType controllerType, const Camera &camera) { + + CameraHandle CameraManager::addCamera(ControllerType controllerType, const Camera &camera) { const uint32_t index = static_cast<uint32_t>(m_cameras.size()); m_cameras.push_back(camera); m_cameraControllerTypes.push_back(controllerType); - return index; + return CameraHandle(index); } - Camera& CameraManager::getCamera(uint32_t cameraIndex) { - if (cameraIndex < 0 || cameraIndex >= m_cameras.size()) { + Camera& CameraManager::getCamera(const CameraHandle& cameraHandle) { + if (cameraHandle.getId() < 0 || cameraHandle.getId() >= m_cameras.size()) { vkcv_log(LogLevel::ERROR, "Invalid camera index: The index must range from 0 to %lu", m_cameras.size()); return getActiveCamera(); } - return m_cameras[cameraIndex]; + return m_cameras[cameraHandle.getId()]; } Camera& CameraManager::getActiveCamera() { - return m_cameras[getActiveCameraIndex()]; + return m_cameras[m_activeCameraIndex]; } - void CameraManager::setActiveCamera(uint32_t cameraIndex) { - if (cameraIndex < 0 || cameraIndex >= m_cameras.size()) { + void CameraManager::setActiveCamera(const CameraHandle& cameraHandle) { + if (cameraHandle.getId() < 0 || cameraHandle.getId() >= m_cameras.size()) { vkcv_log(LogLevel::ERROR, "Invalid camera index: The index must range from 0 to %lu", m_cameras.size()); return; } - m_activeCameraIndex = cameraIndex; + m_activeCameraIndex = cameraHandle.getId(); } - uint32_t CameraManager::getActiveCameraIndex() const { - return m_activeCameraIndex; + CameraHandle CameraManager::getActiveCameraHandle() const { + return CameraHandle(m_activeCameraIndex); } - void CameraManager::setControllerType(uint32_t cameraIndex, ControllerType controllerType) { - if (cameraIndex < 0 || cameraIndex >= m_cameras.size()) { + void CameraManager::setControllerType(const CameraHandle& cameraHandle, ControllerType controllerType) { + if (cameraHandle.getId() < 0 || cameraHandle.getId() >= m_cameras.size()) { vkcv_log(LogLevel::ERROR, "Invalid camera index: The index must range from 0 to %lu", m_cameras.size()); return; } - m_cameraControllerTypes[cameraIndex] = controllerType; + m_cameraControllerTypes[cameraHandle.getId()] = controllerType; } - ControllerType CameraManager::getControllerType(uint32_t cameraIndex) { - if (cameraIndex < 0 || cameraIndex >= m_cameras.size()) { + ControllerType CameraManager::getControllerType(const CameraHandle& cameraHandle) { + if (cameraHandle.getId() < 0 || cameraHandle.getId() >= m_cameras.size()) { vkcv_log(LogLevel::ERROR, "Invalid camera index: The index must range from 0 to %lu", m_cameras.size()); return ControllerType::NONE; } - return m_cameraControllerTypes[cameraIndex]; + return m_cameraControllerTypes[cameraHandle.getId()]; } CameraController& CameraManager::getControllerByType(ControllerType controllerType) { diff --git a/projects/bindless_textures/src/main.cpp b/projects/bindless_textures/src/main.cpp index d4cb8d68..42af6910 100644 --- a/projects/bindless_textures/src/main.cpp +++ b/projects/bindless_textures/src/main.cpp @@ -213,10 +213,10 @@ int main(int argc, const char** argv) { drawcall.useDescriptorSet(0, descriptorSet); vkcv::camera::CameraManager cameraManager(window); - uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + auto camHandle0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); - cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, -3)); + cameraManager.getCamera(camHandle0).setPosition(glm::vec3(0, 0, -3)); core.run([&](const vkcv::WindowHandle &windowHandle, double t, double dt, uint32_t swapchainWidth, uint32_t swapchainHeight) { diff --git a/projects/fire_works/src/main.cpp b/projects/fire_works/src/main.cpp index 738723ff..472b7819 100644 --- a/projects/fire_works/src/main.cpp +++ b/projects/fire_works/src/main.cpp @@ -213,17 +213,17 @@ int main(int argc, const char **argv) { vkcv::Window& window = core.getWindow (windowHandle); vkcv::camera::CameraManager cameraManager (window); - uint32_t trackballIdx = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); - cameraManager.getCamera(trackballIdx).setCenter(glm::vec3(0.0f, 0.0f, 0.0f)); // set camera to look at the center of the particle volume - uint32_t pilotIdx = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + auto trackballHandle = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); + auto pilotHandle = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); - cameraManager.getCamera(trackballIdx).setNearFar(0.1f, 50.0f); - cameraManager.getCamera(trackballIdx).setPosition(glm::vec3(0, 0, -25)); + cameraManager.getCamera(trackballHandle).setCenter(glm::vec3(0.0f, 0.0f, 0.0f)); // set camera to look at the center of the particle volume + cameraManager.getCamera(trackballHandle).setNearFar(0.1f, 50.0f); + cameraManager.getCamera(trackballHandle).setPosition(glm::vec3(0, 0, -25)); - cameraManager.getCamera(pilotIdx).setNearFar(0.1f, 50.0f); - cameraManager.getCamera(pilotIdx).setPosition(glm::vec3(0, 0, 25)); + cameraManager.getCamera(pilotHandle).setNearFar(0.1f, 50.0f); + cameraManager.getCamera(pilotHandle).setPosition(glm::vec3(0, 0, 25)); - cameraManager.setActiveCamera(pilotIdx); + cameraManager.setActiveCamera(pilotHandle); vkcv::gui::GUI gui (core, windowHandle); vkcv::shader::GLSLCompiler compiler; diff --git a/projects/first_mesh/src/main.cpp b/projects/first_mesh/src/main.cpp index e0434944..4ab560c4 100644 --- a/projects/first_mesh/src/main.cpp +++ b/projects/first_mesh/src/main.cpp @@ -146,9 +146,9 @@ int main(int argc, const char** argv) { drawcall.useDescriptorSet(0, descriptorSet); vkcv::camera::CameraManager cameraManager(window); - uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + auto camHandle = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); - cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, -3)); + cameraManager.getCamera(camHandle).setPosition(glm::vec3(0, 0, -3)); core.run([&](const vkcv::WindowHandle &windowHandle, double t, double dt, uint32_t swapchainWidth, uint32_t swapchainHeight) { diff --git a/projects/first_scene/src/main.cpp b/projects/first_scene/src/main.cpp index bcd6b6ae..7867bc6e 100644 --- a/projects/first_scene/src/main.cpp +++ b/projects/first_scene/src/main.cpp @@ -37,13 +37,13 @@ int main(int argc, const char** argv) { vkcv::gui::GUI gui (core, windowHandle); - uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); - uint32_t camIndex1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); + auto camHandle0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + auto camHandle1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); - cameraManager.getCamera(camIndex0).setPosition(glm::vec3(-8, 1, -0.5)); - cameraManager.getCamera(camIndex0).setNearFar(0.1f, 30.0f); + cameraManager.getCamera(camHandle0).setPosition(glm::vec3(-8, 1, -0.5)); + cameraManager.getCamera(camHandle0).setNearFar(0.1f, 30.0f); - cameraManager.getCamera(camIndex1).setNearFar(0.1f, 30.0f); + cameraManager.getCamera(camHandle1).setNearFar(0.1f, 30.0f); vkcv::scene::Scene scene = vkcv::scene::Scene::load( core, diff --git a/projects/first_triangle/src/main.cpp b/projects/first_triangle/src/main.cpp index 5d249d04..aae046da 100644 --- a/projects/first_triangle/src/main.cpp +++ b/projects/first_triangle/src/main.cpp @@ -66,9 +66,9 @@ int main(int argc, const char** argv) { const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle(); vkcv::camera::CameraManager cameraManager(window); - uint32_t camIndex = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + auto camHandle = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); - cameraManager.getCamera(camIndex).setPosition(glm::vec3(0, 0, -2)); + cameraManager.getCamera(camHandle).setPosition(glm::vec3(0, 0, -2)); core.run([&](const vkcv::WindowHandle &windowHandle, double t, double dt, uint32_t swapchainWidth, uint32_t swapchainHeight) { diff --git a/projects/head_demo/src/main.cpp b/projects/head_demo/src/main.cpp index de0cfdbb..1b6533cf 100644 --- a/projects/head_demo/src/main.cpp +++ b/projects/head_demo/src/main.cpp @@ -30,13 +30,13 @@ int main(int argc, const char** argv) { vkcv::gui::GUI gui (core, windowHandle); - uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); - uint32_t camIndex1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); + auto camHandle0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + auto camHandle1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); - cameraManager.getCamera(camIndex0).setPosition(glm::vec3(15.5f, 0, 0)); - cameraManager.getCamera(camIndex0).setNearFar(0.1f, 30.0f); + cameraManager.getCamera(camHandle0).setPosition(glm::vec3(15.5f, 0, 0)); + cameraManager.getCamera(camHandle0).setNearFar(0.1f, 30.0f); - cameraManager.getCamera(camIndex1).setNearFar(0.1f, 30.0f); + cameraManager.getCamera(camHandle1).setNearFar(0.1f, 30.0f); vkcv::scene::Scene scene = vkcv::scene::Scene::load( core, diff --git a/projects/indirect_dispatch/src/App.cpp b/projects/indirect_dispatch/src/App.cpp index c52acec1..f17a3df6 100644 --- a/projects/indirect_dispatch/src/App.cpp +++ b/projects/indirect_dispatch/src/App.cpp @@ -66,9 +66,9 @@ bool App::initialize() { m_linearSampler = vkcv::samplerLinear(m_core, true); m_renderTargets = createRenderTargets(m_core, m_windowWidth, m_windowHeight); - const int cameraIndex = m_cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); - m_cameraManager.getCamera(cameraIndex).setPosition(glm::vec3(0, 1, -3)); - m_cameraManager.getCamera(cameraIndex).setNearFar(0.1f, 30.f); + auto cameraHandle = m_cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + m_cameraManager.getCamera(cameraHandle).setPosition(glm::vec3(0, 1, -3)); + m_cameraManager.getCamera(cameraHandle).setNearFar(0.1f, 30.f); vkcv::DescriptorWrites meshPassDescriptorWrites; meshPassDescriptorWrites.writeSampledImage(0, m_gridTexture); diff --git a/projects/indirect_draw/src/main.cpp b/projects/indirect_draw/src/main.cpp index 5519ac41..5951c8c0 100644 --- a/projects/indirect_draw/src/main.cpp +++ b/projects/indirect_draw/src/main.cpp @@ -505,10 +505,10 @@ int main(int argc, const char** argv) { } vkcv::camera::CameraManager cameraManager (window); - uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + auto camHandle = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); - cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, -3)); - cameraManager.getCamera(camIndex0).setNearFar(0.1f, 20.f); + cameraManager.getCamera(camHandle).setPosition(glm::vec3(0, 0, -3)); + cameraManager.getCamera(camHandle).setNearFar(0.1f, 20.f); vkcv::ImageHandle depthBuffer; @@ -518,7 +518,7 @@ int main(int argc, const char** argv) { ceiledDispatchCount = std::ceil(ceiledDispatchCount); const vkcv::DispatchSize dispatchCount = static_cast<uint32_t>(ceiledDispatchCount); - vkcv::DescriptorSetUsage cullingUsage (0, cullingDescSet, {}); + vkcv::DescriptorSetUsage cullingUsage = vkcv::useDescriptorSet(0, cullingDescSet); vkcv::PushConstants emptyPushConstant(0); bool updateFrustumPlanes = true; diff --git a/projects/mesh_shader/src/main.cpp b/projects/mesh_shader/src/main.cpp index 1c743d16..512e1e6d 100644 --- a/projects/mesh_shader/src/main.cpp +++ b/projects/mesh_shader/src/main.cpp @@ -310,9 +310,9 @@ int main(int argc, const char** argv) { const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle(); vkcv::camera::CameraManager cameraManager(window); - uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + auto camHandle = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); - cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, -2)); + cameraManager.getCamera(camHandle).setPosition(glm::vec3(0, 0, -2)); bool useMeshShader = true; bool updateFrustumPlanes = true; diff --git a/projects/particle_simulation/src/main.cpp b/projects/particle_simulation/src/main.cpp index 0c581f2c..00bb497b 100644 --- a/projects/particle_simulation/src/main.cpp +++ b/projects/particle_simulation/src/main.cpp @@ -194,17 +194,17 @@ int main(int argc, const char **argv) { drawcall.useDescriptorSet(0, descriptorSet); glm::vec4 colorData = glm::vec4(1.0f, 1.0f, 0.0f, 1.0f); - uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); - uint32_t camIndex1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); + auto camHandle0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + auto camHandle1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); - cameraManager.getCamera(camIndex0).setNearFar(0.1, 30); - cameraManager.getCamera(camIndex1).setNearFar(0.1, 30); + cameraManager.getCamera(camHandle0).setNearFar(0.1, 30); + cameraManager.getCamera(camHandle0).setNearFar(0.1, 30); - cameraManager.setActiveCamera(1); + cameraManager.setActiveCamera(camHandle1); - cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, -2)); - cameraManager.getCamera(camIndex1).setPosition(glm::vec3(0.0f, 0.0f, -2.0f)); - cameraManager.getCamera(camIndex1).setCenter(glm::vec3(0.0f, 0.0f, 0.0f)); + cameraManager.getCamera(camHandle1).setPosition(glm::vec3(0, 0, -2)); + cameraManager.getCamera(camHandle1).setPosition(glm::vec3(0.0f, 0.0f, -2.0f)); + cameraManager.getCamera(camHandle1).setCenter(glm::vec3(0.0f, 0.0f, 0.0f)); const auto swapchainExtent = core.getSwapchainExtent(window.getSwapchain()); diff --git a/projects/path_tracer/src/main.cpp b/projects/path_tracer/src/main.cpp index 1ce69399..53f52c3d 100644 --- a/projects/path_tracer/src/main.cpp +++ b/projects/path_tracer/src/main.cpp @@ -219,9 +219,9 @@ int main(int argc, const char** argv) { } vkcv::camera::CameraManager cameraManager(core.getWindow(windowHandle)); - uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + auto camHandle = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); - cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, -2)); + cameraManager.getCamera(camHandle).setPosition(glm::vec3(0, 0, -2)); int frameIndex = 0; bool clearMeanImage = true; diff --git a/projects/rtx_ambient_occlusion/src/main.cpp b/projects/rtx_ambient_occlusion/src/main.cpp index b04a3935..f5d8a46f 100644 --- a/projects/rtx_ambient_occlusion/src/main.cpp +++ b/projects/rtx_ambient_occlusion/src/main.cpp @@ -35,8 +35,8 @@ int main(int argc, const char** argv) { vkcv::WindowHandle windowHandle = core.createWindow(applicationName, 800, 600, true); vkcv::camera::CameraManager cameraManager(core.getWindow(windowHandle)); - uint32_t camIndex = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); - cameraManager.getCamera(camIndex).setNearFar(0.1f, 30.0f); + auto camHandle = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); + cameraManager.getCamera(camHandle).setNearFar(0.1f, 30.0f); // get Teapot vertices and indices Teapot teapot; diff --git a/projects/saf_r/src/main.cpp b/projects/saf_r/src/main.cpp index 5f95aa9a..fce53bd6 100644 --- a/projects/saf_r/src/main.cpp +++ b/projects/saf_r/src/main.cpp @@ -190,12 +190,13 @@ int main(int argc, const char** argv) { //create the camera vkcv::camera::CameraManager cameraManager(window); - uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); - uint32_t camIndex1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); + auto camHandle0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + auto camHandle1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); - cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, 2)); - cameraManager.getCamera(camIndex1).setPosition(glm::vec3(0.0f, 0.0f, 0.0f)); - cameraManager.getCamera(camIndex1).setCenter(glm::vec3(0.0f, 0.0f, -1.0f)); + cameraManager.getCamera(camHandle0).setPosition(glm::vec3(0, 0, 2)); + + cameraManager.getCamera(camHandle1).setPosition(glm::vec3(0.0f, 0.0f, 0.0f)); + cameraManager.getCamera(camHandle1).setCenter(glm::vec3(0.0f, 0.0f, -1.0f)); core.run([&](const vkcv::WindowHandle &windowHandle, double t, double dt, uint32_t swapchainWidth, uint32_t swapchainHeight) { diff --git a/projects/sph/src/main.cpp b/projects/sph/src/main.cpp index bb729bcd..043d1352 100644 --- a/projects/sph/src/main.cpp +++ b/projects/sph/src/main.cpp @@ -208,17 +208,17 @@ int main(int argc, const char **argv) { drawcall.useDescriptorSet(0, descriptorSet); glm::vec4 colorData = glm::vec4(1.0f, 1.0f, 0.0f, 1.0f); - uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); - uint32_t camIndex1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); + auto camHandle0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + auto camHandle1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); - cameraManager.getCamera(camIndex0).setNearFar(0.1, 30); - cameraManager.getCamera(camIndex1).setNearFar(0.1, 30); - - cameraManager.setActiveCamera(1); - - cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, -2.5)); - cameraManager.getCamera(camIndex1).setPosition(glm::vec3(0.0f, 0.0f, -2.5f)); - cameraManager.getCamera(camIndex1).setCenter(glm::vec3(0.0f, 0.0f, 0.0f)); + cameraManager.getCamera(camHandle0).setNearFar(0.1, 30); + cameraManager.getCamera(camHandle0).setPosition(glm::vec3(0, 0, -2.5)); + + cameraManager.setActiveCamera(camHandle1); + + cameraManager.getCamera(camHandle1).setNearFar(0.1, 30); + cameraManager.getCamera(camHandle1).setPosition(glm::vec3(0.0f, 0.0f, -2.5f)); + cameraManager.getCamera(camHandle1).setCenter(glm::vec3(0.0f, 0.0f, 0.0f)); const auto swapchainExtent = core.getSwapchainExtent(window.getSwapchain()); diff --git a/projects/voxelization/src/main.cpp b/projects/voxelization/src/main.cpp index 38a582ae..ac2b2b6a 100644 --- a/projects/voxelization/src/main.cpp +++ b/projects/voxelization/src/main.cpp @@ -108,15 +108,15 @@ int main(int argc, const char** argv) { }); vkcv::camera::CameraManager cameraManager(window); - uint32_t camIndex = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); - uint32_t camIndex2 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); + auto camHandle0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); + auto camHandle1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); - cameraManager.getCamera(camIndex).setPosition(glm::vec3(0.f, 0.f, 3.f)); - cameraManager.getCamera(camIndex).setNearFar(0.1f, 30.0f); - cameraManager.getCamera(camIndex).setYaw(180.0f); - cameraManager.getCamera(camIndex).setFov(glm::radians(37.8)); // fov of a 35mm lens + cameraManager.getCamera(camHandle0).setPosition(glm::vec3(0.f, 0.f, 3.f)); + cameraManager.getCamera(camHandle0).setNearFar(0.1f, 30.0f); + cameraManager.getCamera(camHandle0).setYaw(180.0f); + cameraManager.getCamera(camHandle0).setFov(glm::radians(37.8)); // fov of a 35mm lens - cameraManager.getCamera(camIndex2).setNearFar(0.1f, 30.0f); + cameraManager.getCamera(camHandle1).setNearFar(0.1f, 30.0f); vkcv::asset::Scene mesh; diff --git a/projects/wobble_bobble/src/main.cpp b/projects/wobble_bobble/src/main.cpp index b361f68c..1c3eb776 100644 --- a/projects/wobble_bobble/src/main.cpp +++ b/projects/wobble_bobble/src/main.cpp @@ -301,8 +301,8 @@ int main(int argc, const char **argv) { vkcv::gui::GUI gui (core, windowHandle); - uint32_t trackballIdx = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); - cameraManager.getCamera(trackballIdx).setCenter(glm::vec3(0.5f, 0.5f, 0.5f)); // set camera to look at the center of the particle volume + auto trackballHandle = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); + cameraManager.getCamera(trackballHandle).setCenter(glm::vec3(0.5f, 0.5f, 0.5f)); // set camera to look at the center of the particle volume cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); auto swapchainExtent = core.getSwapchainExtent(window.getSwapchain()); -- GitLab