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

61 lines
2.8 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.
# VisibleRenderObject
**命名空间**: `XCEngine::Rendering`
**类型**: `struct alias`
**头文件**: `XCEngine/Rendering/VisibleRenderObject.h`
**描述**: `VisibleRenderObject` 当前只是 `VisibleRenderItem` 的兼容别名。它表示 scene extraction 之后交给渲染阶段消费的一条可绘制项记录。
## 概览
头文件里的真实结构名已经是 `VisibleRenderItem`
```cpp
using VisibleRenderObject = VisibleRenderItem;
```
因此这页保留的是历史命名入口,但语义应按当前 `VisibleRenderItem` 来理解。它不再只是“一个 mesh 对象”而是已经带上材质槽位、section 信息、render queue 和相机距离的渲染项。
## 当前字段
| 字段 | 类型 | 说明 |
|------|------|------|
| `gameObject` | `Components::GameObject*` | 来源场景对象。 |
| `meshFilter` | `Components::MeshFilterComponent*` | 提供 mesh 引用的组件。 |
| `meshRenderer` | `Components::MeshRendererComponent*` | 提供材质与渲染状态的组件。 |
| `mesh` | `Resources::Mesh*` | 当前要绘制的 mesh。 |
| `material` | `const Resources::Material*` | 当前解析出的材质指针,可为空。 |
| `materialIndex` | `Core::uint32` | 当前材质槽位索引。 |
| `sectionIndex` | `Core::uint32` | 当前 section 索引。 |
| `hasSection` | `bool` | 当前项是否绑定到特定 section。 |
| `renderQueue` | `Core::int32` | 当前项的渲染队列。 |
| `cameraDistanceSq` | `float` | 到当前相机的距离平方,用于排序。 |
| `localToWorld` | `Math::Matrix4x4` | 当前项的世界变换。 |
## 当前生成方式
- [RenderSceneExtractor](../RenderSceneExtractor/RenderSceneExtractor.md) 会递归遍历场景并调用 `AppendRenderItemsForGameObject(...)`
- 同一个 `GameObject` 可能展开成多个 `VisibleRenderItem`,例如一个 mesh 有多个 section 时。
- `material``materialIndex``renderQueue``cameraDistanceSq` 都在提取阶段就已经写入,后续主管线不必再回到场景层重新推导。
## 当前使用位置
- `RenderSceneExtractor` 输出 `RenderSceneData::visibleItems`
- `BuiltinForwardPipeline` 遍历这些项并决定 shader/pass、descriptor set 和 draw call。
- `BuiltinObjectIdPass` 也复用同一批 `visibleItems` 做 object-id 绘制。
## 当前限制
- 当前仍是轻量运行时结构,不是长期缓存的 render proxy。
- `cameraDistanceSq` 只是当前相机视角下的一次性排序辅助数据。
- 兼容别名 `VisibleRenderObject` 仍保留,但新文档和新实现都应优先使用 `VisibleRenderItem` 这个名称。
## 相关文档
- [Rendering](../Rendering.md)
- [RenderSceneExtractor](../RenderSceneExtractor/RenderSceneExtractor.md)
- [RenderSceneUtility](../RenderSceneUtility/RenderSceneUtility.md)
- [BuiltinForwardPipeline](../Pipelines/BuiltinForwardPipeline/BuiltinForwardPipeline.md)