From ef518089cf127944dd72f953edf76371629d9d05 Mon Sep 17 00:00:00 2001 From: bailwillharr Date: Mon, 7 Nov 2022 11:10:29 +0000 Subject: [PATCH] Do bare --- include/components/camera.hpp | 2 +- include/components/mesh_renderer.hpp | 2 +- include/gfx_device.hpp | 2 +- src/components/camera.cpp | 4 +++- src/components/mesh_renderer.cpp | 5 +++-- src/gfx_device_vulkan.cpp | 12 +++++++----- src/resource_manager.cpp | 4 +--- src/resources/mesh.cpp | 14 -------------- src/sceneroot.cpp | 7 ++++--- 9 files changed, 21 insertions(+), 31 deletions(-) diff --git a/include/components/camera.hpp b/include/components/camera.hpp index e5f4e6a..527d3ae 100644 --- a/include/components/camera.hpp +++ b/include/components/camera.hpp @@ -21,7 +21,7 @@ public: ~Camera(); // called every frame, don't call manually - void updateCam(glm::mat4 transform); + void updateCam(glm::mat4 transform, glm::mat4* viewMatrix); void makeActive(); bool isActive(); diff --git a/include/components/mesh_renderer.hpp b/include/components/mesh_renderer.hpp index 588e7ce..a8b86fd 100644 --- a/include/components/mesh_renderer.hpp +++ b/include/components/mesh_renderer.hpp @@ -21,7 +21,7 @@ public: ~Renderer() override; // called every frame, do not call manually - void render(glm::mat4 model); + void render(glm::mat4 model, glm::mat4 view); void setMesh(const std::string& name); void setTexture(const std::string& name); diff --git a/include/gfx_device.hpp b/include/gfx_device.hpp index 5d8ca33..cc8396c 100644 --- a/include/gfx_device.hpp +++ b/include/gfx_device.hpp @@ -23,7 +23,7 @@ namespace engine { // adds a draw call to the queue // vertexBuffer is required, indexBuffer can be NULL, uniformData is required - void draw(const gfx::Pipeline* pipeline, const gfx::Buffer* vertexBuffer, const gfx::Buffer* indexBuffer, uint32_t count, const void* pushConstantData); + void draw(const gfx::Pipeline* pipeline, const gfx::Buffer* vertexBuffer, const gfx::Buffer* indexBuffer, uint32_t count, const void* pushConstantData, size_t pushConstantSize); // Call once per frame. Executes all queued draw calls and renders to the screen. void renderFrame(); diff --git a/src/components/camera.cpp b/src/components/camera.cpp index d5b3ff3..d384ee2 100644 --- a/src/components/camera.cpp +++ b/src/components/camera.cpp @@ -25,7 +25,7 @@ Camera::~Camera() parent.root.deactivateCam(getID()); } -void Camera::updateCam(glm::mat4 transform) +void Camera::updateCam(glm::mat4 transform, glm::mat4* viewMatOut) { if (parent.win.getWindowResized()) { @@ -57,6 +57,8 @@ void Camera::updateCam(glm::mat4 transform) gfxdev->updateUniformBuffer(shader->getPipeline(), &uniformData); } + *viewMatOut = viewMatrix; + } static glm::vec2 getViewportSize() diff --git a/src/components/mesh_renderer.cpp b/src/components/mesh_renderer.cpp index fa4deb4..9ef6358 100644 --- a/src/components/mesh_renderer.cpp +++ b/src/components/mesh_renderer.cpp @@ -23,9 +23,10 @@ Renderer::~Renderer() } -void Renderer::render(glm::mat4 transform) +void Renderer::render(glm::mat4 transform, glm::mat4 view) { - gfxdev->draw(m_shader->getPipeline(), m_mesh->vb, m_mesh->ib, m_mesh->m_vertices.size(), &transform); + glm::mat4 pushConsts[] = { transform, view }; + gfxdev->draw(m_shader->getPipeline(), m_mesh->vb, m_mesh->ib, m_mesh->m_vertices.size(), pushConsts, sizeof(glm::mat4) * 2); } void Renderer::setMesh(const std::string& name) diff --git a/src/gfx_device_vulkan.cpp b/src/gfx_device_vulkan.cpp index 133abb2..093d489 100644 --- a/src/gfx_device_vulkan.cpp +++ b/src/gfx_device_vulkan.cpp @@ -258,7 +258,7 @@ namespace engine { ERROR }; - constexpr MessageSeverity MESSAGE_LEVEL = MessageSeverity::WARNING; + constexpr MessageSeverity MESSAGE_LEVEL = MessageSeverity::INFO; switch (MESSAGE_LEVEL) { case MessageSeverity::VERBOSE: debugMessengerInfo.messageSeverity |= VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT; @@ -419,7 +419,7 @@ namespace engine { for (const auto& presMode : presentModes) { if (presMode == VK_PRESENT_MODE_MAILBOX_KHR) { - swapchain->presentMode = presMode; // this mode allows uncapped FPS while also avoiding screen tearing +// swapchain->presentMode = presMode; // this mode allows uncapped FPS while also avoiding screen tearing } } @@ -1179,11 +1179,12 @@ namespace engine { *h = pimpl->swapchain.extent.height; } - void GFXDevice::draw(const gfx::Pipeline* pipeline, const gfx::Buffer* vertexBuffer, const gfx::Buffer* indexBuffer, uint32_t count, const void* pushConstantData) + void GFXDevice::draw(const gfx::Pipeline* pipeline, const gfx::Buffer* vertexBuffer, const gfx::Buffer* indexBuffer, uint32_t count, const void* pushConstantData, size_t pushConstantSize) { assert(vertexBuffer->type == gfx::BufferType::VERTEX); assert(vertexBuffer != nullptr); assert(indexBuffer == nullptr || indexBuffer->type == gfx::BufferType::INDEX); + assert(pushConstantSize <= PUSH_CONSTANT_MAX_SIZE); DrawCall call{ .vertexBuffer = vertexBuffer, @@ -1191,7 +1192,7 @@ namespace engine { .count = count, }; - memcpy(call.pushConstantData, pushConstantData, PUSH_CONSTANT_MAX_SIZE); + memcpy(call.pushConstantData, pushConstantData, pushConstantSize); pimpl->drawQueues[pipeline].push(call); @@ -1275,9 +1276,10 @@ namespace engine { vkCmdBindVertexBuffers(pimpl->commandBuffers[frameIndex], 0, 1, &call.vertexBuffer->buffer, offsets); if (call.indexBuffer == nullptr) { - // do a simple draw call + // no index buffer vkCmdDraw(pimpl->commandBuffers[frameIndex], call.count, 1, 0, 0); } else { + // use index buffer vkCmdBindIndexBuffer(pimpl->commandBuffers[frameIndex], call.indexBuffer->buffer, 0, VK_INDEX_TYPE_UINT32); vkCmdDrawIndexed(pimpl->commandBuffers[frameIndex], call.count, 1, 0, 0, 0); } diff --git a/src/resource_manager.cpp b/src/resource_manager.cpp index 6d0ee8c..2382f96 100644 --- a/src/resource_manager.cpp +++ b/src/resource_manager.cpp @@ -35,8 +35,6 @@ namespace engine { if (std::filesystem::is_directory(m_resourcesPath) == false) { throw std::runtime_error("Unable to determine resources location. CWD: " + cwd.string()); } - - m_resourcesPath = "C:/Users/Bailey/source/repos/game/res"; } std::unique_ptr ResourceManager::getResourcesListString() @@ -79,4 +77,4 @@ namespace engine { return m_resourcesPath / name; } -} \ No newline at end of file +} diff --git a/src/resources/mesh.cpp b/src/resources/mesh.cpp index 8d276a9..f50970d 100644 --- a/src/resources/mesh.cpp +++ b/src/resources/mesh.cpp @@ -40,20 +40,6 @@ void Mesh::initMesh() { vb = gfxdev->createBuffer(gfx::BufferType::VERTEX, m_vertices.size() * sizeof(Vertex), m_vertices.data()); ib = gfxdev->createBuffer(gfx::BufferType::INDEX, m_indices.size() * sizeof(uint32_t), m_indices.data()); - - TRACE("VB PTR in mesh: {}", (void*)vb); - - TRACE("Vertices:"); - - for (const auto& v : m_vertices) { - TRACE("pos: {}, {}, {}", v.pos.x, v.pos.y, v.pos.z); - } - - TRACE("Indices:"); - - for (const uint32_t i : m_indices) { - TRACE("\t{}", i); - } } Mesh::Mesh(const std::vector& vertices) : Resource("", "mesh") diff --git a/src/sceneroot.cpp b/src/sceneroot.cpp index 5b8f1dc..acb9e3f 100644 --- a/src/sceneroot.cpp +++ b/src/sceneroot.cpp @@ -51,9 +51,10 @@ namespace engine { for (const auto& [c, camt] : compList.cameras) { for (int id : m_activeCameras) { if (c->getID() == id) { - c->updateCam(camt); + glm::mat4 view{}; + c->updateCam(camt, &view); for (const auto& [ren, ren_t] : compList.renderers) { - ren->render(ren_t); + ren->render(ren_t, view); } break; @@ -87,4 +88,4 @@ namespace engine { } } -} \ No newline at end of file +}