Tighten SRP stage fallback gate

This commit is contained in:
2026-04-27 12:48:58 +08:00
parent ebe2e0cbc8
commit 3243eea0bf
6 changed files with 100 additions and 5 deletions

View File

@@ -91,6 +91,9 @@ Unity 兼容的公开命名、对象所有权和扩展点。
哪些 stages 存在native 只执行这些声明,不夹带 built-in pipeline policy。
- Hidden fallback 很危险。如果 managed URP stage 声明支持但无法 record失败必须可见。不要静默用
default built-in path 画同一个 stage然后称之为 URP。
- Camera-frame graph dispatch 必须询问所选 pipeline 是否允许 legacy stage fallback。Managed
`ScriptableRenderPipelineHost` 在 stage recorder 或 managed runtime 权威时不允许 fallback此时缺少
recorder、sequence 或 standalone pass 要在 graph recording 阶段失败,而不是排入 built-in fallback。
- 测试体系已经有有价值的覆盖,但还不足以宣称 SRP/URP stack 完全锁定。随着架构边界收口,应补高价值
contract tests现阶段不要为了大范围测试体系重写而暂停架构工作。
@@ -333,3 +336,6 @@ Scene data 每个 camera frame 提取一次,然后由 pipeline 调整。
`CameraFrameStage``CameraFramePlan`
- Final color processing 表示为 policy 和 final output stage而不是 implicit swapchain behavior。
- Object-id rendering 是 top-level tooling pass并由 `XCENGINE_ENABLE_RENDERING_EDITOR_SUPPORT` guard。
- Camera-frame graph dispatch 已收紧 legacy fallback gate只有所选 pipeline 明确允许时,未被
render-graph recorder、pass sequence 或 standalone pass 处理的 stage 才能进入 fallback raster pass。
Managed SRP/URP host 不允许 hidden built-in fallback。

View File

@@ -49,6 +49,9 @@ public:
bool SupportsStageRenderGraph(CameraFrameStage stage) const override;
bool SupportsStageRenderGraph(
const RenderPipelineStageSupportContext& context) const override;
bool AllowsCameraFrameStageFallback(CameraFrameStage stage) const override;
bool AllowsCameraFrameStageFallback(
const RenderPipelineStageSupportContext& context) const override;
bool RecordStageRenderGraph(
const RenderPipelineStageRenderGraphContext& context) override;
bool Render(const FrameExecutionContext& executionContext) override;

View File

@@ -103,6 +103,13 @@ public:
const RenderPipelineStageSupportContext& context) const {
return SupportsStageRenderGraph(context.stage);
}
virtual bool AllowsCameraFrameStageFallback(CameraFrameStage) const {
return true;
}
virtual bool AllowsCameraFrameStageFallback(
const RenderPipelineStageSupportContext& context) const {
return AllowsCameraFrameStageFallback(context.stage);
}
virtual bool RecordStageRenderGraph(
const RenderPipelineStageRenderGraphContext&) {
return false;