Files
XCEngine/docs/api/XCEngine/Rendering/Pipelines/Pipelines.md

58 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)