Bridge managed render funcs to command buffers

This commit is contained in:
2026-04-27 16:11:54 +08:00
parent 2e6643b4d1
commit 048ca7b362
10 changed files with 697 additions and 27 deletions

View File

@@ -2349,7 +2349,7 @@ std::unique_ptr<RenderPipeline> ManagedScriptableRenderPipelineAsset::CreatePipe
应该给 managed 提供受控的 native 能力包装,比如:
1. 录制一个 raster/compute graph pass。
1. 录制一个 raster/compute graph pass,并让 public `SetRenderFunc` 在 RenderGraph 执行期运行
2. 访问当前 camera frame 的 source / target / blackboard。
3. 调用 native scene renderer 画 `Opaque / Skybox / Transparent`
4. 调用 fullscreen / blit。
@@ -2359,6 +2359,12 @@ std::unique_ptr<RenderPipeline> ManagedScriptableRenderPipelineAsset::CreatePipe
> C# 负责组织C++ 负责底层执行内核。
2026-04-27 进展:`RenderGraphRasterPassBuilder.SetRenderFunc` 已不再在 recording/`Commit()` 时同步调用
managed delegate。Mono bridge 现在会 retain render func delegate在 native RenderGraph pass 执行时创建
pass-scoped managed `CommandBuffer`,并把受支持的 command stream flush 到当前 `RHICommandList`。当前完成的
第一条命令是 `CommandBuffer.ClearRenderTarget(Color)`;后续新增 command buffer API 必须沿用同一条链路补
native command stream、RHI flush 和 scripting bridge executor 测试,不能只暴露 managed 空壳。
### 阶段 3做一个最小可用的 managed forward pipeline
目标不是一步到位做 URP。