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

2.7 KiB
Raw Blame History

CameraRenderer::Constructor

命名空间: XCEngine::Rendering

类型: constructor-overload group

头文件: XCEngine/Rendering/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<ObjectIdPass> objectIdPass,
    std::unique_ptr<RenderPass> depthOnlyPass = nullptr,
    std::unique_ptr<RenderPass> shadowCasterPass = nullptr);

行为说明

构造函数的核心职责是决定三件事:

  • 当前主管线实例从哪里来
  • 当前 object-id pass 是否使用默认 builtin 实现
  • 当前 depth-only / shadow-caster pass 是否使用默认 builtin 实现

当前构造路径

默认构造

  • 通过内部静态 CreateDefaultPipelineAsset() 取得共享的默认 asset。
  • 默认 asset 是 BuiltinForwardPipelineAsset
  • 随后走 asset 构造路径生成 runtime pipeline。

std::unique_ptr<RenderPipeline> 重载

std::shared_ptr<const RenderPipelineAsset> 重载

  • 先保存 asset。
  • 再调用 SetPipelineAsset,立即由 asset 创建 runtime pipeline。
  • 默认同时创建 builtin object-id / depth-only / shadow-caster pass。

四参重载

  • objectIdPass 为空,自动回退到 builtin object-id pass。
  • depthOnlyPass 为空,自动回退到 builtin depth-only pass。
  • shadowCasterPass 为空,自动回退到 builtin shadow-caster pass。
  • 调用内部 ResetPipeline(std::move(pipeline))
  • 如果传入 pipeline 为空,ResetPipeline() 会继续回退到默认 pipeline asset并创建 builtin forward 主管线。

所有权

  • RenderPipelineObjectIdPassdepthOnlyPassshadowCasterPass 都由 CameraRendererstd::unique_ptr 独占持有。
  • RenderPipelineAssetstd::shared_ptr<const ...> 共享持有,只作为 runtime pipeline 的创建来源。

相关文档