Files
XCEngine/docs/api/XCEngine/Rendering/RenderPass/RenderPass.md

2.6 KiB
Raw Blame History

RenderPass

命名空间: XCEngine::Rendering

类型: header-overview

头文件: XCEngine/Rendering/RenderPass.h

描述: 定义轻量通用 pass 抽象 RenderPass、执行上下文 RenderPassContext 以及顺序执行容器 RenderPassSequence

概述

RenderPass.h 是当前渲染基础设施里最通用的一层 pass 协议。它统一回答三件事:

  • 一个 pass 执行时能拿到什么上下文。
  • 一个 pass 至少需要实现哪些生命周期函数。
  • 多个 pass 如何按顺序组成一个小型执行序列。

当前定义

  • RenderPassContext 统一描述当前输出 surface、源颜色输入和共享 sceneData
  • RenderPass 抽象基类,约定所有渲染 pass 的最小生命周期接口。
  • RenderPassSequence 拥有型顺序容器,负责按固定顺序初始化、执行和关闭多个 pass。

RenderPass 抽象基类当前包含 4 个核心成员:

成员 当前语义
GetName() 返回 pass 的可读名称。
Initialize() 默认返回 true,需要时准备一次性资源。
Execute() 纯虚函数,执行真正的 pass 逻辑。
Shutdown() 默认空实现,释放 pass 资源。

失败与回滚语义

  • RenderPassSequence::Initialize() 遇到失败会立刻返回 false
  • RenderPassSequence::Execute() 遇到失败也会停止后续 pass。
  • RenderPassSequence 自身不会在 Initialize() 失败时自动回滚已经初始化过的 pass。
  • 更高层调用方,例如 CameraRenderer,会在 sequence 初始化失败时显式再做一次 Shutdown() 回滚。

测试与真实行为

tests/Rendering/unit/test_render_pass.cpp 当前覆盖了:

  • 初始化与执行按插入顺序发生。
  • Shutdown() 按逆序发生。
  • 中间某个 pass 执行失败时,后续 pass 不再执行。

当前实现边界

  • 这套协议仍然是线性顺序执行模型,不是 render graph也没有显式资源依赖建模。
  • RenderPassSequence 只管理 RenderPass 对象,不管理共享资源或跨 pass 的状态同步。
  • RenderPassContext 虽然已经能表达“一个输出 surface + 一路可选上游颜色输入”,但还不适合描述更复杂的多目标或多阶段图结构。

相关文档