真的有好好测试吗
我为了试图提升性能更新的直接给我当头一棒
这么重大的bug我也是靠AI无数次磋磨后修好了
非常离谱
AI解释:
processPassMG() 原先是在编译期 _fetchValidPass() 中按 DFS discoverVertex 阶段间接执行,而真正 record 发生在执行期 RenderVisitor.finishVertex();即 merge 配对使用的是“前序遍历顺序”,执行使用的是“后序遍历顺序”。已修正为:genHashValue() 只生成 hash,不再立即做 merge;在 Executor.execute() 前新增一次与实际 record 顺序一致的 finishVertex 遍历,按该顺序调用 rebuildPassMGInfo() 重建 needBeginRP/needEndRP。
进一步澄清“多数情况下为什么看起来没问题”:DEBUG 下 compile 并不是直接按 renderGraph 线性数组处理,而是先遍历 _resourceGraph,再从每个 external/persistent 资源触发一次对 renderGraph 的 DFS;但在典型线性 pipeline 中,resource 依赖链、renderGraph 插入顺序、以及最终执行顺序常常都退化为同一个拓扑序,所以大多数情况下表面上相等。只有当图中出现分支、Blit/Scene 混排、阴影 pass 插入、或前序/后序敏感边界时,这种“偶然相等”才会破裂。

我更奇怪的是为什么官方会允许这种生产和测试时完全不同的逻辑存在
能有官方开发人员来给我回复一下吗
1赞