// // Created by atdunbg on 2026/9/23. // // BloomPass:Extract(HDR 软阈值)→ BlurH → BlurV,全部半分辨率。 // 一个"效果"对应多个 RG pass 的例子(Unity 的一个 ScriptableRenderPass // 常含多个 PassEvent 阶段,同构)。 // #ifndef HELLOVULKAN_BLOOMPASS_H #define HELLOVULKAN_BLOOMPASS_H #include #include #include #include namespace Engine::Passes { class BloomPass final : public RenderPass { public: BloomPass(FullscreenGpu& gpu, PostProcessParams& params, RG::TextureHandle hdrColor, RG::TextureHandle bloomA, RG::TextureHandle bloomB); ~BloomPass() override = default; void Register(RG::RenderGraph& rg) override; void OnTargetsRebuilt(RG::RenderGraph& rg) override; private: FullscreenGpu& m_Gpu; PostProcessParams& m_Params; RG::TextureHandle m_HDR; RG::TextureHandle m_A; // 提取 + 垂直模糊结果 RG::TextureHandle m_B; // 水平模糊中间结果 // per-slot 输入描述符 std::vector m_ExtractSets; std::vector m_BlurHSets; std::vector m_BlurVSets; }; } // namespace Engine::Passes #endif //HELLOVULKAN_BLOOMPASS_H