From cae58d8bf592644e8eb3f0bb413b4a790fa014dd Mon Sep 17 00:00:00 2001 From: antopilo Date: Thu, 16 Jan 2025 01:02:03 -0500 Subject: [PATCH] Started bloom pass --- .../Rendering/Vulkan/SceneRenderPipeline.cpp | 16 ++++++++++++ .../Rendering/Vulkan/SceneRenderPipeline.h | 25 +++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/Nuake/src/Rendering/Vulkan/SceneRenderPipeline.cpp b/Nuake/src/Rendering/Vulkan/SceneRenderPipeline.cpp index 3641c384..473469cb 100644 --- a/Nuake/src/Rendering/Vulkan/SceneRenderPipeline.cpp +++ b/Nuake/src/Rendering/Vulkan/SceneRenderPipeline.cpp @@ -94,6 +94,22 @@ SceneRenderPipeline::SceneRenderPipeline() TonemappedOutput = CreateRef(ImageFormat::RGBA8, defaultSize); + // Setup bloom targets + BloomOutput = CreateRef(ImageFormat::RGBA16F, defaultSize); + BloomThreshold = CreateRef(ImageFormat::RGBA16F, defaultSize); + + //Vector2 currentSize; + //for (int i = 0; i < BloomIteration; i++) + //{ + // Ref downSample = CreateRef(ImageFormat::RGBA16F, defaultSize); + // BloomDownSample.push_back(downSample); + // + // m_DownSampleFB.push_back(downSample); + // m_UpSampleFB.push_back(upSample); + // m_HBlurFB.push_back(hBlur); + // m_VBlurFB.push_back(vBlur); + //} + // Initialize pipeline VkShaderManager& shaderMgr = VkShaderManager::Get(); diff --git a/Nuake/src/Rendering/Vulkan/SceneRenderPipeline.h b/Nuake/src/Rendering/Vulkan/SceneRenderPipeline.h index be1e7124..a67705dd 100644 --- a/Nuake/src/Rendering/Vulkan/SceneRenderPipeline.h +++ b/Nuake/src/Rendering/Vulkan/SceneRenderPipeline.h @@ -48,6 +48,18 @@ namespace Nuake int SourceTextureID; }; + struct BloomConstant + { + int Stage; + int SourceTextureID; + int HasLensDirt; + int LensDirtTextureID; + float LensDirtIntensity; + float Threshold; + float BlurAmount; + int BlurDirection; + }; + // This class handles all the rendering of the scene class SceneRenderPipeline { @@ -65,9 +77,22 @@ namespace Nuake Ref TonemappedOutput; + // Bloom + const int BloomIteration = 4; + const float DownsampleScale = 0.4f; + Ref BloomThreshold; + std::vector> BloomDownSample; + std::vector> BloomUpSample; + std::vector> BloomHBlur; + std::vector> BloomVBlur; + Ref BloomOutput; + + // Push constant GBufferConstant gbufferConstant; ShadingConstant shadingConstant; TonemapConstant tonemapConstant; + BloomConstant bloomConstant; + static RenderPipeline GBufferPipeline; public: