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

66 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RenderPass
**命名空间**: `XCEngine::Rendering`
**类型**: `header-overview`
**头文件**: `XCEngine/Rendering/RenderPass.h`
**描述**: 定义轻量通用 pass 抽象 `RenderPass`、执行上下文 `RenderPassContext` 以及顺序执行容器 `RenderPassSequence`
## 概述
`RenderPass.h` 是当前渲染基础设施里最通用的一层 pass 协议。它统一回答三件事:
- 一个 pass 执行时能拿到什么上下文。
- 一个 pass 至少需要实现哪些生命周期函数。
- 多个 pass 如何按顺序组成一个小型执行序列。
## 当前定义
- [RenderPassContext](RenderPassContext.md)
统一描述当前输出 `surface`、源颜色输入和共享 `sceneData`
- `RenderPass`
抽象基类,约定所有渲染 pass 的最小生命周期接口。
- [RenderPassSequence](RenderPassSequence.md)
拥有型顺序容器,负责按固定顺序初始化、执行和关闭多个 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` + 一路可选上游颜色输入”,但还不适合描述更复杂的多目标或多阶段图结构。
## 相关文档
- [RenderPassContext](RenderPassContext.md)
- [RenderPassSequence](RenderPassSequence.md)
- [当前模块](../Rendering.md)
- [CameraRenderRequest](../Planning/CameraRenderRequest/CameraRenderRequest.md)
- [CameraRenderer](../Execution/CameraRenderer/CameraRenderer.md)
- [Passes](../Passes/Passes.md)