diff --git a/kraken/KRRenderGraph.cpp b/kraken/KRRenderGraph.cpp index 7ccca43..297fa4e 100644 --- a/kraken/KRRenderGraph.cpp +++ b/kraken/KRRenderGraph.cpp @@ -146,6 +146,16 @@ KRRenderPass* KRRenderGraph::getRenderPass(RenderPassType type) return nullptr; } +KRRenderPass* KRRenderGraph::getFinalRenderPass() +{ + for (KRRenderPass* pass : m_renderPasses) { + if (pass->isFinal()) { + return pass; + } + } + return nullptr; +} + void KRRenderGraph::render(VkCommandBuffer &commandBuffer, KRSurface& surface, KRScene* scene) { for(KRRenderPass* pass : m_renderPasses) { diff --git a/kraken/KRRenderGraph.h b/kraken/KRRenderGraph.h index 06769d8..8f06cf9 100644 --- a/kraken/KRRenderGraph.h +++ b/kraken/KRRenderGraph.h @@ -53,6 +53,7 @@ public: int addAttachment(const char* name, VkFormat format); void addRenderPass(KRDevice& device, const RenderPassInfo& info); KRRenderPass* getRenderPass(RenderPassType type); + KRRenderPass* getFinalRenderPass(); void render(VkCommandBuffer &commandBuffer, KRSurface& surface, KRScene* scene); void destroy(KRDevice& device); diff --git a/kraken/KRRenderPass.cpp b/kraken/KRRenderPass.cpp index 60dd9b4..6f55be4 100644 --- a/kraken/KRRenderPass.cpp +++ b/kraken/KRRenderPass.cpp @@ -103,3 +103,8 @@ RenderPassType KRRenderPass::getType() const { return m_info.type; } + +bool KRRenderPass::isFinal() const +{ + return m_info.finalPass; +} diff --git a/kraken/KRRenderPass.h b/kraken/KRRenderPass.h index 5d9465b..43d47e9 100644 --- a/kraken/KRRenderPass.h +++ b/kraken/KRRenderPass.h @@ -86,6 +86,7 @@ public: void end(VkCommandBuffer& commandBuffer); RenderPassType getType() const; + bool isFinal() const; // private: VkRenderPass m_renderPass; diff --git a/kraken/KRSurface.cpp b/kraken/KRSurface.cpp index e69adb2..070c368 100644 --- a/kraken/KRSurface.cpp +++ b/kraken/KRSurface.cpp @@ -298,7 +298,7 @@ KrResult KRSurface::createSwapChain() return res; } - m_swapChain->create(*device, m_surface, m_surfaceFormat, depthImageFormat, swapExtent, imageCount, *m_renderGraph->getRenderPass(RenderPassType::RENDER_PASS_FORWARD_OPAQUE)); + m_swapChain->create(*device, m_surface, m_surfaceFormat, depthImageFormat, swapExtent, imageCount, *m_renderGraph->getFinalRenderPass()); return KR_SUCCESS; }