22
33#include " ../core/Uniforms.hpp"
44#include " ../core/Window.hpp"
5- #include " Buffer.hpp"
65#include " VulkanUtils.hpp"
76
8- #include < cstring>
97#include < glm/glm.hpp>
108#include < glm/gtc/matrix_transform.hpp>
9+ #include < utility>
1110
1211namespace reactor {
13- VulkanRenderer::VulkanRenderer (const RendererConfig & config) : m_config(config) {
12+ VulkanRenderer::VulkanRenderer (RendererConfig config) : m_config(std::move( config) ) {
1413 createCoreVulkanObjects ();
1514 createSwapchainAndFrameManager ();
1615
@@ -60,22 +59,22 @@ void VulkanRenderer::createSwapchainAndFrameManager() {
6059}
6160
6261void VulkanRenderer::createPipelineAndDescriptors () {
63- std::string vertShaderPath = m_config.vertShaderPath ;
64- std::string fragShaderPath = m_config.fragShaderPath ;
62+ const std::string vertShaderPath = m_config.vertShaderPath ;
63+ const std::string fragShaderPath = m_config.fragShaderPath ;
6564
66- std::vector bindings = {
65+ const std::vector bindings = {
6766 vk::DescriptorSetLayoutBinding (0 , vk::DescriptorType::eUniformBuffer, 1 ,
6867 vk::ShaderStageFlagBits::eVertex),
6968 };
7069
7170 m_descriptorSet = std::make_unique<DescriptorSet>(m_context->device (), 2 , bindings);
7271
73- std::vector setLayouts = {m_descriptorSet->getLayout ()};
72+ const std::vector setLayouts = {m_descriptorSet->getLayout ()};
7473
7574 m_pipeline = std::make_unique<Pipeline>(m_context->device (), vk::Format::eR16G16B16A16Sfloat,
7675 vertShaderPath, fragShaderPath, setLayouts, 4 );
7776
78- std::vector compositeBindings = {
77+ const std::vector compositeBindings = {
7978 vk::DescriptorSetLayoutBinding (0 , vk::DescriptorType::eCombinedImageSampler, 1 , vk::ShaderStageFlagBits::eFragment),
8079 vk::DescriptorSetLayoutBinding (1 , vk::DescriptorType::eUniformBuffer, 1 , vk::ShaderStageFlagBits::eFragment),
8180 };
@@ -135,7 +134,7 @@ void VulkanRenderer::drawGeometry(vk::CommandBuffer cmd) {
135134 cmd.draw (3 , 1 , 0 , 0 );
136135}
137136
138- void VulkanRenderer::renderUI (vk::CommandBuffer cmd) {
137+ void VulkanRenderer::renderUI (const vk::CommandBuffer cmd) const {
139138 m_imgui->createFrame ();
140139 m_imgui->drawFrame (cmd);
141140}
@@ -150,17 +149,6 @@ void VulkanRenderer::submitAndPresent(uint32_t imageIndex) {
150149 m_swapchain->get (), imageIndex);
151150}
152151
153- void VulkanRenderer::updateUniformBuffer (Buffer *uniformBuffer) {
154-
155- SceneUBO ubo{};
156- ubo.view = m_camera->getView ();
157- ubo.projection = m_camera->getProjection ();
158-
159- m_uniformManager->update <SceneUBO>(m_frameManager->getFrameIndex (), ubo);
160-
161-
162- }
163-
164152void VulkanRenderer::beginDynamicRendering (vk::CommandBuffer cmd, vk::ImageView imageView,
165153 vk::Extent2D extent, bool clear=true ) {
166154 constexpr vk::ClearValue clearColor = vk::ClearColorValue (std::array{0 .0f , 0 .0f , 0 .0f , 1 .0f });
@@ -201,9 +189,10 @@ void VulkanRenderer::drawFrame() {
201189 const vk::ImageView msaaView = m_msaaColorViews[frameIdx];
202190 const vk::Image resolveImage = m_resolveImages[frameIdx]->get ();
203191
204- SceneUBO sceneData;
192+ SceneUBO sceneData{};
193+ const auto aspect = static_cast <float >(width) / static_cast <float >(height);
205194 sceneData.view = glm::mat4 (1.0 );
206- sceneData.projection = glm::perspective (glm::radians (45 .0f ), ( float )width / ( float )height , 0 .1f , 100 .0f );
195+ sceneData.projection = glm::perspective (glm::radians (45 .0F ), aspect , 0 .1F , 100 .0F );
207196 m_uniformManager->update <SceneUBO>(frameIdx, sceneData);
208197
209198 CompositeUBO compositeData;
@@ -347,7 +336,7 @@ void VulkanRenderer::drawFrame() {
347336 // The swapchain image is already in COLOR_ATTACHMENT_OPTIMAL, so no transition is needed.
348337 beginDynamicRendering (cmd, m_swapchain->getImageViews ()[imageIndex], extent, false );
349338
350- m_imgui->SetSceneDescriptorSet (m_sceneViewImageDescriptorSets[frameIdx]);
339+ m_imgui->setSceneDescriptorSet (m_sceneViewImageDescriptorSets[frameIdx]);
351340 renderUI (cmd);
352341 endDynamicRendering (cmd);
353342
0 commit comments