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

2.8 KiB
Raw Blame History

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 时。
  • materialmaterialIndexrenderQueuecameraDistanceSq 都在提取阶段就已经写入,后续主管线不必再回到场景层重新推导。

当前使用位置

  • RenderSceneExtractor 输出 RenderSceneData::visibleItems
  • BuiltinForwardPipeline 遍历这些项并决定 shader/pass、descriptor set 和 draw call。
  • BuiltinObjectIdPass 也复用同一批 visibleItems 做 object-id 绘制。

当前限制

  • 当前仍是轻量运行时结构,不是长期缓存的 render proxy。
  • cameraDistanceSq 只是当前相机视角下的一次性排序辅助数据。
  • 兼容别名 VisibleRenderObject 仍保留,但新文档和新实现都应优先使用 VisibleRenderItem 这个名称。

相关文档