Lock URP runtime invalidation to asset and renderer data state

This commit is contained in:
2026-04-27 19:56:29 +08:00
parent f528295f88
commit 9428fec350
7 changed files with 467 additions and 1 deletions

View File

@@ -221,6 +221,10 @@ Managed SRP assets 通过 `GraphicsSettings.renderPipelineAsset` 选择,并通
`SceneDrawBackend`
- Managed resource/version invalidation 是正确性的一部分。如果 managed asset、renderer data 或 feature
修改 runtime state调用 `SetDirty` 或本地 invalidation helper确保 native runtime caches 被释放。
当前 runtime version 也会兜底 hash `UniversalRenderPipelineAsset` 的 shadow/final-color settings以及
`UniversalRendererData` 自身的 main-scene、shadow-caster 和 depth-prepass block settings新增可序列化
renderer data/asset settings 时,必须把影响 request、planning、stage manifest 或 pass queue 的字段纳入
对应 runtime hash。
### URP Model
@@ -232,6 +236,9 @@ package。
renderer index然后委托给 renderer data。
- `ScriptableRendererData` 拥有持久 renderer instance 和 renderer feature collection。Renderer data dirty
state 会释放 renderer setup cache并递增 runtime state version。
- `ScriptableRendererData` 的 runtime state version 不只来自 feature collection。`UniversalRendererData`
已把 `mainScene``shadowCaster``depthPrepass` block settings 纳入 hash这些 settings 改变时必须
触发 renderer cache 释放和 pass queue/stage manifest 重建。
- `ScriptableRenderer` 按 stage 构建 `m_activePassQueue`。它依次调用 feature `SetupRenderPasses`、feature
`AddRenderPasses`,再调用 renderer-owned `AddRenderPasses`passes 按 `RenderPassEvent` 顺序插入,并归组到
`RendererBlocks`
@@ -378,6 +385,9 @@ Scene data 每个 camera frame 提取一次,然后由 pipeline 调整。
- URP stage planning 已收口到 renderer active pass queue 派生的 per-`framePlanId` 快照和 stage manifest。
Stage support 和 stage recording 现在消费 planning 阶段保存的快照,关闭了 feature planning hook、
support probe 和 recording 各自重建 pass queue 的重复事实源。
- URP runtime-state invalidation 已覆盖 asset-level shadow/final-color settings 和 renderer-data-level
main-scene/shadow-caster/depth-prepass block settings。配置变更会通过 runtime resource version 释放
renderer caches并让后续 planning 重新生成 pass queue 快照和 stage manifest。
- Public managed RenderGraph raster authoring 已存在internal fullscreen kernels 仍是 URP implementation
details。
- Public managed `SetRenderFunc` 已从 recording-time 调用改为 RenderGraph execution-time 调用;