Align renderers to pipeline asset selection

This commit is contained in:
2026-04-27 18:58:31 +08:00
parent 205a30d291
commit 3b945dc6d4
9 changed files with 469 additions and 302 deletions

View File

@@ -54,6 +54,10 @@ Unity 兼容的公开命名、对象所有权和扩展点。
- 行为变更要从 pipeline asset/request/plan 路径开始。app/editor 代码中的临时 pass execution
通常表示层级位置不对。
- 顶层 native renderer 的公开选择和配置入口只能是 `RenderPipelineAsset`。不要新增或恢复
`CameraRenderer``RenderPipelineHost``SceneRenderer` 上接受裸 `RenderPipeline` 的 public
constructor/setter需要定制 pipeline 实例时,通过 `RenderPipelineAsset::CreatePipeline`
`RenderPipelineAsset::ConfigurePipeline` 完成。
- Native headers 保持小而后端无关。可行时 forward declare RHI 类型,只在后端代码里 include
具体后端头。
- 新增 camera-stack、renderer-index、shadow、depth、post-process 或 final output 行为时,不要绕过
@@ -123,14 +127,15 @@ Unity 兼容的公开命名、对象所有权和扩展点。
Native renderer 现在是 camera frame planner 加 RenderGraph executormanaged SRP/URP recording
叠在 native scene draw backend 之上。
- `SceneRenderer` 是 scene-level convenience entry point。它通过 `SceneRenderRequestPlanner` 收集
camera requests通过 `RenderPipelineHost` 构建 frame plans然后渲染排序后的 camera plans。
- `SceneRenderer` 是 scene-level convenience entry point。它的公开管线选择根是 `RenderPipelineAsset`
它通过 `SceneRenderRequestPlanner` 收集 camera requests通过 `RenderPipelineHost` 构建 frame plans
然后渲染排序后的 camera plans。
- `RenderPipelineHost` 拥有一个 `CameraFramePlanBuilder` 和一个 `CameraRenderer`。它是从
`CameraRenderRequest``CameraFramePlan` 的常规 native bridge。
- `CameraRenderer` 拥有所选 `RenderPipeline`,提取 `RenderSceneData`,解析 directional shadow execution
把全部 frame stages 记录进 native `RenderGraph`,编译 graph 并执行。
- `RenderPipelineAsset` 是 native asset contract。它创建 pipeline配置 request policy配置 frame plan
policy并提供默认 final color settings。
`CameraRenderRequest``CameraFramePlan` 的常规 native bridge,并沿用同一个 asset selection root
- `CameraRenderer` 拥有 asset 创建出的所选 `RenderPipeline`,提取 `RenderSceneData`,解析 directional
shadow execution把全部 frame stages 记录进 native `RenderGraph`,编译 graph 并执行。
- `RenderPipelineAsset` 是 native asset contract。它创建 pipeline配置 pipeline 实例,配置 request
policy配置 frame plan policy并提供默认 final color settings。
- `RenderPipeline``RenderPipelineBackend``RenderPipelineStageRecorder` 将 backend rendering
与 graph recording 分开。Managed SRP 通常提供 stage recordernative backend 提供 scene drawing。
- Native/managed bridge 词汇已经收口为 `PipelineBackend``SceneDrawBackend`。不要重新引入

View File

@@ -28,11 +28,9 @@ struct RenderContext;
class CameraRenderer {
public:
CameraRenderer();
explicit CameraRenderer(std::unique_ptr<RenderPipeline> pipeline);
explicit CameraRenderer(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
~CameraRenderer();
void SetPipeline(std::unique_ptr<RenderPipeline> pipeline);
void SetPipelineAsset(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
RenderPipeline* GetPipeline() const;
const RenderPipelineAsset* GetPipelineAsset() const;

View File

@@ -13,11 +13,9 @@ class CameraFramePlanBuilder;
class RenderPipelineHost {
public:
RenderPipelineHost();
explicit RenderPipelineHost(std::unique_ptr<RenderPipeline> pipeline);
explicit RenderPipelineHost(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
~RenderPipelineHost();
void SetPipeline(std::unique_ptr<RenderPipeline> pipeline);
void SetPipelineAsset(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
RenderPipeline* GetPipeline() const { return m_cameraRenderer.GetPipeline(); }
const RenderPipelineAsset* GetPipelineAsset() const { return m_cameraRenderer.GetPipelineAsset(); }

View File

@@ -16,11 +16,9 @@ namespace Rendering {
class SceneRenderer {
public:
SceneRenderer();
explicit SceneRenderer(std::unique_ptr<RenderPipeline> pipeline);
explicit SceneRenderer(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
~SceneRenderer();
void SetPipeline(std::unique_ptr<RenderPipeline> pipeline);
void SetPipelineAsset(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
RenderPipeline* GetPipeline() const { return m_pipelineHost.GetPipeline(); }
const RenderPipelineAsset* GetPipelineAsset() const { return m_pipelineHost.GetPipelineAsset(); }