4.3 KiB
4.3 KiB
Rendering SRP / URP Closeout Plan
更新日期: 2026-04-26
状态: Completed, Phase 1 closeout done
1. 长期目标
目标不是继续堆更多 URP 外形,而是把默认渲染主线真正收口为:
GraphicsSettings.renderPipelineAsset -> UniversalRenderPipelineAsset -> ScriptableRendererData -> UniversalRenderer -> ScriptableRendererFeature/Pass -> ScriptableRenderPipelineHost -> native backend contract -> RenderGraph / RHI
收口后的职责边界:
- managed URP 负责 camera policy、renderer 选择、stage planning、feature/pass 编排、final color 策略
- native Rendering 负责 scene extraction、scene draw、fullscreen graph execution、RenderGraph/RHI
BuiltinForwardPipeline或其后继只保留 backend 语义,不继续承载产品层策略
2. 阶段路线
Phase 1: Renderer-backed URP v1 收口
- 让默认
UniversalRenderPipelineAsset -> UniversalRenderer成为唯一上层主线 - 先收口 ownership 和 contract,不在本阶段做 backend 大拆分
Phase 2: Native backend contract 抽取
- 把默认 native backend 从产品层语义里剥离出来
- 让 host/bridge 面向稳定 backend contract,而不是面向 builtin forward 产品实现
Phase 3: Feature ownership 迁移
- 把 feature 的启用、排序、插入点统一回收到 managed
ScriptableRendererFeature
Phase 4: Asset / Editor / Runtime 产品化
- 稳定 renderer data、camera override、runtime invalidation、editor 消费路径
Phase 5: 收尾与清理
- 删除临时兼容层,统一命名和文档
3. Phase 1 已完成进展
- 已补齐长期目标文档和 Rendering 模块目标描述
- 已把 managed backend 解析从“隐式默认 fallback”改成“显式策略”
- 已新增
ManagedPipelineRendererAssetPolicy - 已让
ManagedScriptableRenderPipelineAsset先读显式 renderer asset,再按 policy 解析 default native backend - 已让
MonoManagedRenderPipelineAssetRuntime::GetPipelineRendererAsset()不再直接偷偷创建默认 native backend asset - 已让 Mono runtime 显式返回
DefaultNativeBackendpolicy - 已把
UniversalRenderer的PostProcess变成显式 stage 分支 - 已补
UniversalPostProcessBlock.EnqueueRenderPasses()作为显式入口 - 已把
RuntimeStateHashUtility调整为跨程序集可见 - 已把
ScriptableRendererFeature.CreateInstance()调整为可供外部受控复用 - 已更新一批 scripting 侧测试预期,使默认 URP/managed pipeline case 面向“显式 default backend policy”
- 已完成 editor 编译与 12 秒启动冒烟
XCUIEditorApp编译通过build/editor/Debug/XCEngine.exe12 秒启动烟测通过
4. Phase 1 验收结果
- 已修掉
managed/GameScripts/RenderPipelineApiProbe.cs中挡住本阶段验证的 managed API 问题 scripting_tests已恢复为可用基线,并通过 9 条聚焦的 SRP/URP 回归用例- 默认 backend 来源、default renderer fallback、feature 注入、renderer invalidation 等关键主路径已被 focused regression tests 覆盖
- editor 侧验证已补齐,
XCUIEditorApp编译与build/editor/Debug/XCEngine.exe12 秒启动烟测均通过 rendering_unit_tests仍存在与本次收口无关的既有编译断点,但不再阻塞 Phase 1 收口验收
5. 当前 subplan
本轮 subplan 已完成,已从执行列表清空。
5.1 已完成验收项
- 默认 backend 来源已变成显式可追踪的 policy
PostProcessownership 已稳定挂到UniversalRendererscripting_tests已能稳定覆盖本阶段相关用例- 默认 URP 主路径已具备 focused regression tests
- Phase 1 未再引入新的隐式 fallback 语义
6. 下一阶段建议
下一阶段可以进入 Phase 2,但不要重新把产品层策略带回 native:
- 抽取更稳定的 native backend contract,继续收窄 host/bridge 对具体 builtin forward 实现的依赖
- 继续把 feature 的启用、排序、插入点留在 managed
ScriptableRendererFeature / UniversalRenderer主线 - 在当前 focused regression baseline 之上继续稳住 renderer invalidation、asset authoring 和 editor/runtime 消费路径
7. 非目标
- 本阶段不直接重命名
BuiltinForwardPipeline - 不在本阶段完成 backend-only 最终类层次
- 不引入 deferred、clustered lighting、完整 volume framework 等新能力
- 不把 editor tooling 路径强行并进默认 URP 产品主线