58 lines
2.2 KiB
Markdown
58 lines
2.2 KiB
Markdown
# Pipelines
|
||
|
||
**命名空间**: `XCEngine::Rendering::Pipelines`
|
||
|
||
**类型**: `submodule`
|
||
|
||
**描述**: 提供当前公开的具体渲染管线实现,以及与之配套的 pipeline asset 工厂。
|
||
|
||
## 概览
|
||
|
||
`Rendering::Pipelines` 子命名空间承载的不是“渲染总流程”,而是“真正把场景数据画到目标表面的 runtime pipeline 实现”。
|
||
|
||
当前这层已经明确分成两类对象:
|
||
|
||
- runtime pipeline
|
||
负责解析 shader pass、构建 pipeline layout、缓存 descriptor set,并发出 draw call。
|
||
- pipeline asset
|
||
负责决定该创建哪一条 runtime pipeline,并把实例交给 `CameraRenderer`。
|
||
|
||
这和商业引擎里常见的 `RenderPipelineAsset -> RenderPipeline` 分层是一致的。当前功能还不算多,但架构边界已经建立起来了。
|
||
|
||
## 当前公开类型
|
||
|
||
- [BuiltinForwardPipeline](BuiltinForwardPipeline/BuiltinForwardPipeline.md)
|
||
- `BuiltinForwardPipeline.h`
|
||
- 当前默认的主场景前向管线实现。
|
||
- [BuiltinForwardPipelineAsset](BuiltinForwardPipelineAsset/BuiltinForwardPipelineAsset.md)
|
||
- `BuiltinForwardPipeline.h`
|
||
- 当前默认的 concrete `RenderPipelineAsset`,负责创建新的 `BuiltinForwardPipeline`。
|
||
|
||
## 默认接线关系
|
||
|
||
当前默认路径是:
|
||
|
||
1. `CameraRenderer` 拿到 `BuiltinForwardPipelineAsset`
|
||
2. asset 创建 `BuiltinForwardPipeline`
|
||
3. runtime pipeline 执行主场景绘制
|
||
|
||
这样做的价值在于:
|
||
|
||
- `CameraRenderer` 不需要知道 builtin forward 的内部细节
|
||
- future custom pipeline 的扩展位已经存在
|
||
- pipeline 工厂和 pipeline 实例的生命周期可以分开管理
|
||
|
||
## 当前边界
|
||
|
||
- 目前公开的 concrete runtime pipeline 仍然只有 builtin forward 一条
|
||
- `BuiltinForwardPipelineAsset` 还只是 C++ 工厂对象,不是项目资源数据库里的 renderer asset
|
||
- deferred、多主管线配置、render graph 和复杂 frame orchestration 还没有在这一层落地
|
||
|
||
## 相关文档
|
||
|
||
- [Rendering](../Rendering.md)
|
||
- [RenderPipeline](../RenderPipeline/RenderPipeline.md)
|
||
- [RenderPipelineAsset](../RenderPipelineAsset/RenderPipelineAsset.md)
|
||
- [CameraRenderer](../CameraRenderer/CameraRenderer.md)
|
||
- [Scene Extraction And Builtin Forward Pipeline](../../../_guides/Rendering/Scene-Extraction-And-Builtin-Forward-Pipeline.md)
|