Files
XCEngine/docs/api/XCEngine/Rendering/Execution/CameraRenderer/Constructor.md

2.6 KiB
Raw Blame History

CameraRenderer::CameraRenderer

命名空间: XCEngine::Rendering

类型: constructor overload set

头文件: XCEngine/Rendering/Execution/CameraRenderer.h

签名

CameraRenderer();
explicit CameraRenderer(std::unique_ptr<RenderPipeline> pipeline);
explicit CameraRenderer(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
CameraRenderer(
    std::unique_ptr<RenderPipeline> pipeline,
    std::unique_ptr<RenderPass> objectIdPass,
    std::unique_ptr<RenderPass> depthOnlyPass = nullptr,
    std::unique_ptr<RenderPass> shadowCasterPass = nullptr);

当前构造路径

  • 默认构造 回退到静态共享的 BuiltinForwardPipelineAsset,并建立 builtin object-id / depth-only / shadow-caster pass 与 fullscreen surface cache。
  • std::unique_ptr<RenderPipeline> 重载 接管外部传入的 runtime pipeline并对三个独立 pass 使用 builtin 默认实现。
  • std::shared_ptr<const RenderPipelineAsset> 重载 保存 asset再通过 SetPipelineAsset 创建当前 runtime pipeline。
  • 完整重载 允许同时注入 pipeline 和三类独立 RenderPass;任一 pass 传空时都会回退到对应 builtin 实现。

回退规则

  • objectIdPass == nullptr 时,回退到 Passes::BuiltinObjectIdPass
  • depthOnlyPass == nullptr 时,回退到 Passes::BuiltinDepthOnlyPass
  • shadowCasterPass == nullptr 时,回退到 Passes::BuiltinShadowCasterPass
  • pipeline == nullptr 时,ResetPipeline(...) 会继续回退到默认 BuiltinForwardPipelineAsset

生命周期

  • RenderPipeline 与三个独立 pass 都由 CameraRenderer 通过 std::unique_ptr 独占持有。
  • RenderPipelineAsset 通过 std::shared_ptr<const ...> 共享持有,只用来派生 runtime pipeline。
  • 构造函数还会准备 DirectionalShadowSurfaceCache / FullscreenPassSurfaceCache 所需的成员槽位,使后续帧内阶段切换不必重新分配整个执行器。

设计说明

这组重载同时覆盖两种接线方式:

  • 上层已经准备好 runtime pipeline直接注入执行器
  • 上层只声明 pipeline asset让执行器按当前默认规则创建 runtime pipeline

这让运行时、测试和编辑器都能复用同一套单相机执行器,而不会把“如何创建主管线”写散在多个调用方里。

相关文档