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

2.4 KiB
Raw Blame History

RenderSceneExtractor

命名空间: XCEngine::Rendering

类型: class + struct

头文件: XCEngine/Rendering/RenderSceneExtractor.h

描述: 从 Scene 中挑选相机并收集可渲染 mesh 对象,输出渲染层使用的 RenderSceneData

概述

RenderSceneExtractor 是当前渲染架构里最接近“scene extraction”阶段的对象。

它的职责不是绘制,而是把面向 gameplay / scene graph 的对象整理成渲染层更容易消费的数据:

这和商业引擎里把 scene traversal、visibility building、render packet generation 放在真正 draw submission 之前的设计是一致的。

RenderSceneData

字段 类型 说明
camera Components::CameraComponent* 选中的相机。
cameraData RenderCameraData 渲染阶段使用的拍平相机数据。
visibleObjects std::vector<VisibleRenderObject> 当前提取到的可见对象列表。

RenderSceneData::HasCamera() 当前只是检查 camera != nullptr

当前提取规则

相机选择当前按以下顺序执行:

  1. 如果 overrideCamera 可用,直接使用它。
  2. 否则从场景里找出 IsPrimary() 的可用相机,取 depth 最大者。
  3. 如果仍没有,则退回到第一个可用相机。

对象提取当前只要求:

  • GameObject 处于 IsActiveInHierarchy()
  • 同时有 MeshFilterComponentMeshRendererComponent
  • 两个组件都启用
  • MeshFilterComponent 提供的 mesh 非空且 IsValid()

当前实现限制

  • 当前没有 frustum culling。
  • 当前没有 render layer 过滤。
  • 当前没有透明/不透明分类、排序或 batching。
  • 当前不会读取 castShadows / receiveShadows
  • 当前把“visible”理解为“满足基本组件条件且在激活层级中”而不是严格意义上的屏幕可见。

公开方法

方法 说明
Extract 从场景中提取渲染数据。

相关文档