- SceneRenderer:场景→渲染数据翻译层(UE FSceneRenderer / Unity CullingResults
模式),收口相机/灯光/光空间矩阵/双视图剔除,Renderer 只编排
- pass 对象化(Unity ScriptableRenderPass 模式):8 个 pass lambda 拆为
Passes::{Shadow,Forward,Bloom,Tonemap,ImGui,Present},BuildGraph 超级函数消失;
SceneGpu/FullscreenGpu 承接共享装配
- 中性 AssetRef(Core 层):ECS 组件不再依赖 Assets 模块(Unity InstanceID 思路)
- IAssetUploader 接口:AssetManager 不感知 Vulkan 具体类,上传服务由渲染层
VulkanAssetUploader 提供
- Renderer 公共 API 不变(App 层零改动),编译零错误 validation 零警告
45 lines
1.4 KiB
C++
45 lines
1.4 KiB
C++
//
|
||
// 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 <Engine/Renderer/Passes/RenderPass.h>
|
||
#include <Engine/Renderer/Passes/FullscreenGpu.h>
|
||
#include <vulkan/vulkan.hpp>
|
||
#include <vector>
|
||
|
||
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<vk::DescriptorSet> m_ExtractSets;
|
||
std::vector<vk::DescriptorSet> m_BlurHSets;
|
||
std::vector<vk::DescriptorSet> m_BlurVSets;
|
||
};
|
||
|
||
} // namespace Engine::Passes
|
||
|
||
#endif //HELLOVULKAN_BLOOMPASS_H
|