// // Created by atdunbg on 2026/9/23. // // RenderPass:渲染 pass 对象基类(Unity ScriptableRenderPass 思路)。 // // pass 自己负责两件事,框架(Renderer)不再手写"超级函数": // Register —— 向 RenderGraph 声明资源使用 + 录制 lambda; // 执行序由 RG 拓扑排序决定(writer 必先于 reader), // 与注册顺序无关 // OnTargetsRebuilt —— RG 重编译(resize / vsync 切换)后重绑描述符 // (物理镜像按槽位可能全部换新) // // pass 之间不互相依赖:数据流只经 RG 资源句柄。新增效果 = 新增一个 // RenderPass 子类 + Renderer::BuildGraph 里注册一行,其它代码不动。 // #ifndef HELLOVULKAN_RENDERPASS_H #define HELLOVULKAN_RENDERPASS_H #include namespace Engine { class Cubemap; } namespace Engine::Passes { class RenderPass { public: virtual ~RenderPass() = default; virtual void Register(RG::RenderGraph& rg) = 0; virtual void OnTargetsRebuilt(RG::RenderGraph& rg) { (void)rg; } // 环境资产换绑(动态切换):引用环境描述符的 pass 重绑自己的 set。 // 默认无环境影响;env 恒非空(Renderer 有中性兜底) virtual void OnEnvironmentChanged(const Cubemap* /*env*/) {} }; } // namespace Engine::Passes #endif //HELLOVULKAN_RENDERPASS_H