docs(rendering): realign api docs to module structure
This commit is contained in:
@@ -6,45 +6,69 @@
|
||||
|
||||
**头文件**: `XCEngine/Rendering/Execution/SceneRenderer.h`
|
||||
|
||||
**描述**: 场景级渲染编排入口,负责构建并补全 `CameraRenderRequest`,包括 final-color policy、fullscreen post-process/final-output 子请求,再把请求转交给 [CameraRenderer](../CameraRenderer/CameraRenderer.md) 执行。
|
||||
**描述**: 场景级执行入口,负责构建或接收 `CameraRenderRequest`,补齐 fullscreen 阶段请求,再交给 [CameraRenderer](../CameraRenderer/CameraRenderer.md) 执行。
|
||||
|
||||
## 概览
|
||||
|
||||
`SceneRenderer` 当前是执行层的外层编排器。
|
||||
`SceneRenderer` 是 Rendering 执行层的外层编排器。
|
||||
|
||||
它维护两块公开可见的核心运行时对象:
|
||||
它一方面承接 [SceneRenderRequestPlanner](../../Planning/SceneRenderRequestPlanner/SceneRenderRequestPlanner.md) 的结果,另一方面又比纯 planner 多做了一层“执行前补全”:
|
||||
|
||||
- 解析每个相机的 `FinalColorPolicy`
|
||||
- 为 post-process / final-output 生成 pass sequence
|
||||
- 为 fullscreen 阶段分配中间 surface cache
|
||||
|
||||
所以它不只是“把 planner 的结果原样转发给 `CameraRenderer`”,而是执行层和规划层之间的桥。
|
||||
|
||||
## 当前持有对象
|
||||
|
||||
- `m_requestPlanner`
|
||||
负责基础 request 生成。
|
||||
- `m_cameraRenderer`
|
||||
|
||||
除此之外,它还维护每帧按 request 数量扩展的 owned fullscreen-stage 状态:
|
||||
|
||||
负责单 request 真正执行。
|
||||
- `m_ownedPostProcessSequences`
|
||||
- `m_ownedFinalOutputSequences`
|
||||
- `m_ownedFullscreenStageSurfaces`
|
||||
这些对象保存当前帧由 `SceneRenderer` 自己构建出来的 fullscreen 阶段资源。
|
||||
|
||||
这条拆分让 Rendering 主链明确分成两层:
|
||||
## 当前职责
|
||||
|
||||
- `SceneRenderer` 负责“这次要渲染哪些 request、按什么顺序”
|
||||
- `SceneRenderer` 还负责把每个 request 进一步补成“主场景颜色 -> post-process -> final-output”的完整链
|
||||
- `CameraRenderer` 负责“单个 request 怎样被真正执行”
|
||||
- 从 `Scene + overrideCamera + surface` 生成 request 数组
|
||||
- 为 request 解析最终输出策略
|
||||
- 为 request 挂接 post-process / final-output 子请求
|
||||
- 对 request 数组做稳定排序并逐条执行
|
||||
- 维护自己创建的 fullscreen surface 的资源状态
|
||||
|
||||
## 当前公开能力
|
||||
## 设计理念
|
||||
|
||||
- 构建 request 数组
|
||||
- 执行单个 request
|
||||
- 执行 request 数组
|
||||
- 直接从 `Scene + overrideCamera + surface` 生成 request 并执行
|
||||
- 为每个 request 解析 final-color policy
|
||||
- 按相机 post-process / final-color 需求挂接 fullscreen-stage 子请求
|
||||
### 为什么 fullscreen 链放在 `SceneRenderer`
|
||||
|
||||
planner 只该关心“这一帧有哪些相机 request”;
|
||||
而 fullscreen pass sequence 和中间 render target 明显属于执行阶段的临时对象。
|
||||
|
||||
把这层逻辑放在 `SceneRenderer`,有两个直接好处:
|
||||
|
||||
- planner 仍然可以保持轻量、纯规则化
|
||||
- `CameraRenderer` 仍然只处理“单条 request 如何执行”,不会反向承担 per-frame 资源编排
|
||||
|
||||
## 当前实现边界
|
||||
|
||||
- 它不直接做 scene extraction。
|
||||
- 它不直接操作主管线内部细节。
|
||||
- `BuildRenderRequests(...)` 当前会先让 `SceneRenderRequestPlanner` 生成基础 request,再调用 `ResolveCameraFinalColorPolicies(...)` 和 `AttachFullscreenStageRequests(...)` 做后处理补全。
|
||||
- fullscreen-stage 只会在 request 同时具备 `camera`、有效 `device` 和有效颜色目标时挂接。
|
||||
- 对手工提交的 request 数组,当前仍会再次按 stack / depth 做稳定排序。
|
||||
- 不直接做 scene extraction;那属于 `CameraRenderer`
|
||||
- 不直接参与主管线内部 draw-call 组织;那属于 `RenderPipeline`
|
||||
- 对手工传入的 request 数组,仍然会再次稳定排序,以保持统一的 camera stack 语义
|
||||
|
||||
## 公开方法
|
||||
|
||||
| 方法 | 说明 |
|
||||
|------|------|
|
||||
| [Constructor](Constructor.md) | 构造场景级执行入口。 |
|
||||
| [Destructor](Destructor.md) | 默认析构。 |
|
||||
| [SetPipeline](SetPipeline.md) | 替换当前主管线实例。 |
|
||||
| [SetPipelineAsset](SetPipelineAsset.md) | 通过 asset 重建主管线。 |
|
||||
| [GetPipeline](GetPipeline.md) | 返回当前主管线的非拥有指针。 |
|
||||
| [GetPipelineAsset](GetPipelineAsset.md) | 返回当前 pipeline asset 的非拥有指针。 |
|
||||
| [BuildRenderRequests](BuildRenderRequests.md) | 生成并补齐当前帧 request 数组。 |
|
||||
| [Render](Render.md) | 执行单个 request、request 数组,或从场景直接生成并执行。 |
|
||||
|
||||
## 相关文档
|
||||
|
||||
@@ -52,4 +76,4 @@
|
||||
- [CameraRenderer](../CameraRenderer/CameraRenderer.md)
|
||||
- [SceneRenderRequestPlanner](../../Planning/SceneRenderRequestPlanner/SceneRenderRequestPlanner.md)
|
||||
- [SceneRenderRequestUtils](../../Planning/SceneRenderRequestUtils/SceneRenderRequestUtils.md)
|
||||
- [Camera Request Planning And Clear Rules](../../../../_guides/Rendering/Camera-Request-Planning-And-Clear-Rules.md)
|
||||
- [CameraRenderRequest](../../Planning/CameraRenderRequest/CameraRenderRequest.md)
|
||||
|
||||
Reference in New Issue
Block a user