2.6 KiB
2.6 KiB
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::BuiltinObjectIdPassdepthOnlyPass == nullptr时,回退到Passes::BuiltinDepthOnlyPassshadowCasterPass == nullptr时,回退到Passes::BuiltinShadowCasterPasspipeline == nullptr时,ResetPipeline(...)会继续回退到默认BuiltinForwardPipelineAsset
生命周期
RenderPipeline与三个独立 pass 都由CameraRenderer通过std::unique_ptr独占持有。RenderPipelineAsset通过std::shared_ptr<const ...>共享持有,只用来派生 runtime pipeline。- 构造函数还会准备
DirectionalShadowSurfaceCache/FullscreenPassSurfaceCache所需的成员槽位,使后续帧内阶段切换不必重新分配整个执行器。
设计说明
这组重载同时覆盖两种接线方式:
- 上层已经准备好 runtime pipeline,直接注入执行器
- 上层只声明 pipeline asset,让执行器按当前默认规则创建 runtime pipeline
这让运行时、测试和编辑器都能复用同一套单相机执行器,而不会把“如何创建主管线”写散在多个调用方里。