docs: sync scene renderer docs

This commit is contained in:
2026-04-03 14:03:28 +08:00
parent 73821ff73f
commit e4a4e90592
14 changed files with 436 additions and 131 deletions

View File

@@ -1,7 +1,5 @@
# RenderSceneExtractor::Extract
从场景中提取当前帧要渲染的数据。
```cpp
RenderSceneData Extract(
const Components::Scene& scene,
@@ -14,29 +12,33 @@ RenderSceneData Extract(
当前实现会:
1. 选择一台可用相机。
2. 根据相机和视口尺寸构造 `RenderCameraData`
3. 从场景根对象开始递归遍历层级
4. 收集符合条件的 mesh 对象,输出 `VisibleRenderObject` 数组
1. 调用 [SelectCamera](SelectCamera.md) 解析实际使用的相机。
2. 如果没有可用相机,直接返回空的 `RenderSceneData`
3. 基于选中的相机和 viewport 尺寸生成 `RenderCameraData`
4. 从场景所有 root game object 开始递归收集 `visibleItems`
5.`visibleItems` 做稳定排序。
6. 提取主方向光到 `lighting`
## 参数
- `scene` - 要提取的场景。
- `overrideCamera` - 显式指定的相机;可用优先级最高
- `viewportWidth` - 当前视口宽度。
- `viewportHeight` - 当前视口高度。
- `overrideCamera` - 可选的 override 相机;可用时具有最高优先级。
- `viewportWidth` - 当前 viewport 宽度。
- `viewportHeight` - 当前 viewport 高度。
## 返回值
- 一份 `RenderSceneData`
- 若没有可用相机,返回值中的 `camera` 为空,`visibleItems` 也为空。
## 当前实现说明
## 当前实现细节
-没有可用相机时,返回的 `RenderSceneData``camera == nullptr`
- 透视相机使用 `Matrix4x4::Perspective`,正交相机使用 `Matrix4x4::Orthographic`
- 当前把 `view``projection``viewProjection` 都以转置形式写入结果
-前会使用选中相机的 `GetCullingMask()` 过滤对象层
- `visibleItems` 是当前真正的输出字段,不是旧文档里的 `visibleObjects`
- 排序时会按 `renderQueue` 和透明/非透明距离方向处理
## 相关文档
- [返回类型总览](RenderSceneExtractor.md)
- [SceneRenderer::Render](../SceneRenderer/Render.md)
- [RenderSceneExtractor](RenderSceneExtractor.md)
- [ExtractForCamera](ExtractForCamera.md)
- [SelectCamera](SelectCamera.md)