2.8 KiB
2.8 KiB
VisibleRenderObject
命名空间: XCEngine::Rendering
类型: struct alias
头文件: XCEngine/Rendering/VisibleRenderObject.h
描述: VisibleRenderObject 当前只是 VisibleRenderItem 的兼容别名。它表示 scene extraction 之后交给渲染阶段消费的一条可绘制项记录。
概览
头文件里的真实结构名已经是 VisibleRenderItem:
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 会递归遍历场景并调用
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这个名称。