Harden scriptable render pipeline host boundary

This commit is contained in:
2026-04-26 16:02:01 +08:00
parent ac626d48c4
commit 1751fc4b3c
2 changed files with 36 additions and 9 deletions

View File

@@ -33,11 +33,13 @@ SceneRenderer
- managed 侧产品骨架仍是:
`ScriptableRenderPipelineAsset -> ScriptableRendererData -> ScriptableRenderer -> ScriptableRendererFeature/Pass`
- builtin 和 SRP 现在都必须是显式可切换的顶层路径而不是“SRP 隐式优先builtin 只是兜底”。
- `ScriptableRenderPipelineHost` 里的 native backend 是 managed SRP 的绘制后端,不是 SRP stage 录制失败时的顶层兜底。
## 5. 当前硬边界
- `RenderPipelineFactory` 在无显式 asset、无托管配置、创建失败回退时都必须先回 builtin而不是回 `ScriptableRenderPipelineHost`
- `MonoScriptRuntime::OnRuntimeStart()` 不得隐式写入 render pipeline 选择。
- builtin 私有 native feature 通道只能留在 native 内部使用。
- managed SRP runtime 或 stage recorder 存在时stage 组织权归 managed SRPnative backend 不得在 host 层隐式接管 `RecordStageRenderGraph``Render(...)` 或 scene-pass standalone stage。
- 下列能力不得再暴露给 managed / URP 公开层:
`NativeSceneFeaturePassId`
`ScriptableRenderContext.RecordNativeSceneFeaturePass(...)`
@@ -66,6 +68,7 @@ SceneRenderer
- 不要再把 builtin 私有 native feature 包成 public managed API 方便调用。
- 不要再让 “null 选择” 默认落到 `ScriptableRenderPipelineHost`
- 不要把非通用产品层策略继续直接塞回 `BuiltinForwardPipeline`
- 不要让 `ScriptableRenderPipelineHost` 在 managed SRP 未支持或未录制某个 stage 时自动回退到 native backend需要绘制时应通过 managed `ScriptableRenderContext` 显式调用 native draw 能力。
## 8. 关键文件
- `engine/src/Rendering/Internal/RenderPipelineFactory.cpp`