3.6 KiB
3.6 KiB
Rendering 模块说明(在建)
1. 目的
- 本文只描述当前已落地的渲染主线和后续收口方向。
- 这里优先记录真实代码职责,不按理想状态脑补。
- 如果实现与本文冲突,以代码为准,再更新本文。
2. 当前主链
SceneRenderer
-> SceneRenderRequestPlanner
-> RenderPipelineHost
-> CameraFramePlanBuilder
-> CameraRenderer
-> DirectionalShadowRuntime
-> RenderSceneExtractor
-> CameraFrameGraph
-> RenderGraph Record / Compile / Execute
3. 当前架构判断
- 这套系统已经不是“一个 forward pipeline 直接画完整帧”。
- 当前主模型是:
SRP host + renderer backend + per-camera plan + render graph execution。 ScriptableRenderPipelineHost是 native 侧最重要的 SRP 接缝。CameraRenderRequest和CameraFramePlan已经承担了每相机规划职责。RenderSceneExtractor负责从Scene生成RenderSceneData。CameraFrameGraph和RenderGraph已经是执行内核的一部分,不是附属实验层。
4. 和 Unity SRP / URP 的关系
RenderPipelineAsset对应 Unity 的RenderPipelineAsset。ScriptableRenderPipelineHost接近 Unity 的RenderPipeline宿主。- managed 侧已经有
ScriptableRenderPipelineAsset -> ScriptableRendererData -> ScriptableRenderer -> ScriptableRendererFeature/Pass这条产品层骨架。 - 因此当前问题不是“SRP 没打通”,而是“URP 风格上层还没彻底收口”。
5. 当前未收口点
- managed runtime 目前仍复用默认 native forward backend 作为共享绘制后端。
- 这意味着
BuiltinForwardPipeline还同时带着“默认产品层”和“native 执行后端”两种身份。 - 一些本该属于 URP asset / renderer / feature 的组织策略,仍可能滑回 native backend。
- 所以现在更准确的名字是“SRP 已通、URP 主产品线未收口”。
6. 在这个模块里应怎样继续演进
- 把 camera request policy、renderer 选择、stage planning、scene setup、shadow execution config、pass/feature 排序继续上移到 managed
URP。 - 把 scene extraction、renderer list 绘制、native scene feature、fullscreen primitive 执行保留在 native。
- 非通用策略不要继续直接塞进
BuiltinForwardPipeline。 - 如果新增的是“绘制能力”或“native backend contract”,可以放 C++。
- 如果新增的是“渲染组织策略”或“URP 行为差异”,优先放 managed。
7. 关键文件
engine/src/Rendering/Execution/SceneRenderer.cppengine/src/Rendering/Execution/RenderPipelineHost.cppengine/src/Rendering/Execution/CameraRenderer.cppengine/src/Rendering/Extraction/RenderSceneExtractor.cppengine/src/Rendering/Pipelines/ScriptableRenderPipelineHost.cppengine/src/Rendering/Pipelines/BuiltinForwardPipeline.cppmanaged/XCEngine.ScriptCore/Rendering/Core/ScriptableRenderPipeline*.csmanaged/XCEngine.RenderPipelines.Universal/Rendering/Universal/*.cs
8. 长期目标
- 形成唯一默认主线:
UniversalRenderPipelineAsset -> UniversalRendererData -> UniversalRenderer -> ScriptableRendererFeature/Pass。 ShadowCaster / DepthOnly / MainScene / PostProcess / FinalOutput的组织权由 managedURP持有。BuiltinForwardPipeline或其后继应退回为 native scene draw backend,而不是继续充当上层产品语义。- native 侧最终保留“执行内核”和“通用后端 contract”,managed 侧负责“渲染策略”和“产品层组织”。
- 简单说:目标不是继续堆更多 URP 外形,而是把 URP 真正收口成唯一上层组织者。