From ab09f8efb5db2f1a2768192029b26563faf1274f Mon Sep 17 00:00:00 2001 From: antopilo Date: Sun, 5 Jan 2025 22:45:37 -0500 Subject: [PATCH] Started RenderPipeline Absraction --- .../Vulkan/Pipeline/RenderPipeline.cpp | 3 ++- .../Vulkan/Pipeline/RenderPipeline.h | 25 +++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Nuake/src/Rendering/Vulkan/Pipeline/RenderPipeline.cpp b/Nuake/src/Rendering/Vulkan/Pipeline/RenderPipeline.cpp index 6280e286..ff6a5591 100644 --- a/Nuake/src/Rendering/Vulkan/Pipeline/RenderPipeline.cpp +++ b/Nuake/src/Rendering/Vulkan/Pipeline/RenderPipeline.cpp @@ -10,7 +10,8 @@ RenderPass::RenderPass(const std::string& name) : PassAttachment& RenderPass::AddAttachment(const std::string& name, ImageFormat format) { auto newAttachment = PassAttachment(name, format); - Attachments.push_back(std::move(newAttachment)); + PassAttachment& newAttachmentRef = Attachments.emplace_back(std::move(newAttachment)); + return newAttachmentRef; } void RenderPass::AddInput(const std::string& name) diff --git a/Nuake/src/Rendering/Vulkan/Pipeline/RenderPipeline.h b/Nuake/src/Rendering/Vulkan/Pipeline/RenderPipeline.h index 9f301e30..473269db 100644 --- a/Nuake/src/Rendering/Vulkan/Pipeline/RenderPipeline.h +++ b/Nuake/src/Rendering/Vulkan/Pipeline/RenderPipeline.h @@ -1,14 +1,22 @@ #pragma once #include "src/Core/Core.h" #include "src/Core/Maths.h" - #include "src/Rendering/Vulkan/VulkanImage/VulkanImage.h" +#include #include namespace Nuake { + class Scene; + + struct PassRenderContext + { + Ref scene; + VkCommandBuffer commandBuffer; + }; + class PassAttachment { public: @@ -18,7 +26,12 @@ namespace Nuake public: PassAttachment(const std::string& name, ImageFormat format); ~PassAttachment() = default; + }; + struct RenderPassSpec + { + std::string Name; + bool DepthTest = true; }; class RenderPass @@ -28,6 +41,10 @@ namespace Nuake std::vector Attachments; std::vector Inputs; + std::function PreRender; + std::function Render; + std::function PostRender; + public: RenderPass(const std::string& name); ~RenderPass() = default; @@ -35,6 +52,11 @@ namespace Nuake public: PassAttachment& AddAttachment(const std::string& name, ImageFormat format); void AddInput(const std::string& name); + + // Callbacks + void SetPreRender(const std::function& func) { PreRender = func; } + void SetRender(const std::function& func) { Render = func; } + void SetPostRender(const std::function& func) { PostRender = func; } }; class RenderPipeline @@ -49,6 +71,5 @@ namespace Nuake public: RenderPass& AddPass(const std::string& name); - }; } \ No newline at end of file