docs: expand render request planning docs
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# SceneRenderRequestPlanner
|
||||
|
||||
**命名空间**: `XCEngine::Rendering`
|
||||
|
||||
**类型**: `class`
|
||||
|
||||
**头文件**: `XCEngine/Rendering/SceneRenderRequestPlanner.h`
|
||||
|
||||
**描述**: 负责从场景和可选 override camera 生成实际要提交给 `CameraRenderer` 的相机请求列表。
|
||||
|
||||
## 概览
|
||||
|
||||
`SceneRenderRequestPlanner` 处在 [SceneRenderer](../SceneRenderer/SceneRenderer.md) 和 [SceneRenderRequestUtils](../SceneRenderRequestUtils/SceneRenderRequestUtils.md) 之间。
|
||||
|
||||
它不亲自渲染任何东西,而是把“应该渲染哪些相机、按什么顺序、哪些请求应该被丢弃”整理成一组 [CameraRenderRequest](../CameraRenderRequest/CameraRenderRequest.md)。
|
||||
|
||||
## 公开方法
|
||||
|
||||
| 方法 | 说明 |
|
||||
|------|------|
|
||||
| [CollectCameras](CollectCameras.md) | 收集本次应参与渲染的相机列表。 |
|
||||
| [BuildRequests](BuildRequests.md) | 把相机列表展开成可执行的 `CameraRenderRequest` 数组。 |
|
||||
|
||||
## 当前规划规则
|
||||
|
||||
### `CollectCameras()`
|
||||
|
||||
当前规则是:
|
||||
|
||||
1. 如果 `overrideCamera` 可用,则只渲染它自己。
|
||||
2. 否则从场景里查找全部 `CameraComponent`。
|
||||
3. 过滤掉不可用相机。
|
||||
4. 按 [SceneRenderRequestUtils](../SceneRenderRequestUtils/SceneRenderRequestUtils.md) 里的稳定排序规则整理顺序。
|
||||
|
||||
### `BuildRequests()`
|
||||
|
||||
它会按相机顺序逐个调用 `BuildCameraRenderRequest()`,并维护:
|
||||
|
||||
- `renderedBaseCameraCount`
|
||||
- 已成功生成的 request 数量
|
||||
|
||||
这两个计数会影响自动 clear flag 的推导。
|
||||
|
||||
如果某个相机最终解析出的 render area 宽高为 `0`,该请求会被直接丢弃,而且不会错误地推进 base camera 计数。
|
||||
|
||||
## 真实使用位置
|
||||
|
||||
- `engine/include/XCEngine/Rendering/SceneRenderer.h` 持有一个 `SceneRenderRequestPlanner` 实例。
|
||||
- `engine/src/Rendering/SceneRenderRequestPlanner.cpp` 实现具体收集与构建逻辑。
|
||||
- `tests/Rendering/unit/test_scene_render_request_planner.cpp` 覆盖了 override camera、稳定排序和零尺寸 viewport 的行为。
|
||||
|
||||
## 当前实现边界
|
||||
|
||||
- 它只规划相机请求,不处理 object-id 或 builtin post-process 的具体填充;那部分通常由更上层调用方补充。
|
||||
- 当前没有 camera stacking 的更复杂依赖分析,只有 base / overlay 与 depth 的线性排序。
|
||||
- `BuildRequests()` 只返回成功构建的请求,不单独报告被过滤掉的相机原因。
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [当前模块](../Rendering.md)
|
||||
- [CollectCameras](CollectCameras.md)
|
||||
- [BuildRequests](BuildRequests.md)
|
||||
- [SceneRenderer](../SceneRenderer/SceneRenderer.md)
|
||||
- [SceneRenderRequestUtils](../SceneRenderRequestUtils/SceneRenderRequestUtils.md)
|
||||
- [CameraRenderRequest](../CameraRenderRequest/CameraRenderRequest.md)
|
||||
Reference in New Issue
Block a user