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

2.9 KiB

RenderPipeline

命名空间: XCEngine::Rendering

类型: class (abstract)

头文件: XCEngine/Rendering/RenderPipeline.h

描述: 主场景 runtime 管线的统一接口,负责初始化、关闭,并把一份 RenderSceneData 绘制到目标 RenderSurface

概览

RenderPipeline 是当前渲染模块里最核心的 runtime 扩展点之一。它把“真正的主场景绘制”抽象成三个阶段:

  • Initialize(const RenderContext&)
  • Shutdown()
  • Render(const RenderContext&, const RenderSurface&, const RenderSceneData&)

上游不会直接依赖某个具体 builtin 管线类型,而是只依赖这个抽象接口。

当前接入方式

默认情况下,具体 runtime pipeline 不是由 SceneRenderer 直接构造,而是由 CameraRenderer 通过 RenderPipelineAsset 创建并持有。

当前公开的默认实现是:

默认工厂则是:

当前职责边界

RenderPipeline 只负责主场景绘制本身,不负责:

  • 多相机 request 规划和排序
  • object-id pass 与 object-id 输出目标
  • preScenePasses / postScenePasses / overlayPasses 的外层编排

这些都由 CameraRenderer 在外层编排。

当前实现弹性

接口本身并不强制初始化策略。具体实现可以:

  • Initialize() 中一次性准备资源。
  • 或者像 BuiltinForwardPipeline 一样,在 Render() 中按需触发或复用初始化逻辑。

因此调用方只依赖语义契约,而不依赖某个具体实现的资源建立时机。

公开方法

方法 说明
Destructor 虚析构函数。
Initialize 初始化这条主管线所需的底层资源。
Shutdown 释放主管线资源。
Render 把一份 RenderSceneData 绘制到指定 RenderSurface

设计说明

RenderContextRenderSurfaceRenderSceneData 分开传入,是当前很关键的职责拆分:

  • RenderContext 表示底层设备与命令环境。
  • RenderSurface 表示这次提交的目标与 render-area。
  • RenderSceneData 表示已经提取好的相机、光照和可绘制项。

这样同一条 runtime pipeline 才能在不同 surface、不同 request 和不同场景提取结果之间复用。

相关文档