Files
XCEngine/docs/api/XCEngine/Rendering/RenderPipeline/Render.md

2.0 KiB
Raw Blame History

RenderPipeline::Render

执行一次主场景 runtime 绘制。

virtual bool Render(
    const RenderContext& context,
    const RenderSurface& surface,
    const RenderSceneData& sceneData) = 0;

当前职责边界

这个接口只负责把已经提取好的主场景数据画到目标 RenderSurface

  • 消费 sceneData.cameraData
  • 遍历 sceneData.visibleItems
  • 读写 surface 的颜色/深度附件与 render-area

它不负责:

  • 多相机 request 规划与排序
  • shadow-caster / depth-only scene pass
  • object-id pass
  • preScenePasses / postScenePasses / overlayPasses 编排

这些外层编排由 CameraRenderer 负责。

当前调用位置

engine/src/Rendering/Execution/CameraRenderer.cpp,当前主链路顺序是:

  1. preScenePasses
  2. shadowCaster
  3. depthOnly
  4. m_pipeline->Render(...)
  5. ObjectIdPass
  6. postScenePasses
  7. overlayPasses

因此这里代表的是“主场景绘制槽位”,不是整次相机提交的全部流程。

当前实现弹性

  • 具体实现可以假定 sceneData 已经由 RenderSceneExtractor 产出。
  • 具体实现也可以在这里内部做惰性初始化,只要对调用方维持一致的成败语义。

参数

  • context - 当前帧的底层渲染上下文。
  • surface - 本次主场景绘制的目标表面与 render-area。
  • sceneData - 已提取好的相机、光照与可绘制项数据。

返回值

  • 返回 true:主场景绘制成功。
  • 返回 false:主场景绘制失败;外层 CameraRenderer 会终止这次提交并按已初始化阶段做清理。

相关文档