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

2.8 KiB
Raw Blame History

RenderPipelineAsset

命名空间: XCEngine::Rendering

类型: class (abstract)

头文件: XCEngine/Rendering/RenderPipelineAsset.h

描述: 主管线工厂接口,用于按需创建新的 runtime RenderPipeline 实例。

概览

RenderPipelineAsset 不负责自己绘制场景,而是回答一个更高层的问题:

  • 当前这台 CameraRenderer 应该创建哪一种主场景 runtime 管线?

这层抽象把“选择哪条主管线”和“真正执行主场景绘制”拆开:

  • asset 负责创建 runtime pipeline
  • runtime pipeline 负责执行主场景绘制

当前真实接线

当前最直接的消费者是 CameraRenderer

  • 默认构造路径会持有一份默认 asset
  • SetPipelineAsset 会通过 asset 重建当前 runtime pipeline
  • GetPipelineAsset 返回的是工厂对象,不是 runtime pipeline 实例

按当前源码,默认 concrete asset 是 BuiltinForwardPipelineAsset

生命周期与所有权

  • asset 通常以 std::shared_ptr<const RenderPipelineAsset> 共享持有
  • CreatePipeline 返回新的 std::unique_ptr<RenderPipeline>
  • asset 不保留运行时实例;实例生命周期由 CameraRenderer 或调用方接管

这是一种“共享工厂对象 + 独占运行时实例”的分层。

当前实现边界

  • 这里仍然只是纯 C++ 工厂接口,不是项目资源数据库里的可序列化 renderer asset。
  • “空 asset”或“asset 返回空指针”之后如何回退,不属于这个接口本身的职责;当前 fallback 逻辑发生在 CameraRendererCreatePipelineFromAsset() 调用路径里。
  • 当前公开的 concrete asset 仍只有 builtin forward 一条。

公开方法

方法 说明
Destructor 虚析构函数,保证经由基类销毁派生 asset 时行为正确。
CreatePipeline 创建一条新的 runtime 管线实例。

设计说明

这一层的重要性不在于“多包一层接口”,而在于把“选哪种主管线”从 CameraRenderer 的执行逻辑里抽出来。 这样后续即便增加新的 concrete pipeline也不需要改动单 request 执行主链路。

相关文档