2.7 KiB
2.7 KiB
BuiltinForwardPipeline
命名空间: XCEngine::Rendering::Pipelines
类型: class
头文件: XCEngine/Rendering/Pipelines/BuiltinForwardPipeline.h
描述: 当前内建的默认前向渲染管线,实现基础纹理采样、深度测试和 mesh 绘制。
概述
BuiltinForwardPipeline 是当前引擎真正能跑起来的默认渲染管线。
它的工作路径大致是:
- 基于
RenderContext创建 pipeline state、descriptor pool、sampler 和 fallback texture。 - 使用 RenderResourceCache 把
Mesh/Texture上传成 GPU 资源。 - 读取 VisibleRenderObject 列表。
- 为每个物体写常量缓冲、绑定纹理和采样器,然后发出 draw call。
当前实现能力
- 支持 D3D12 与 OpenGL 两套内嵌 shader 路径。
- 支持颜色附件和深度附件。
- 支持 mesh section 绘制。
- 支持从
Material上按若干常见名字查找基础颜色纹理。 - 当材质或纹理缺失时,使用 1x1 白纹理作为 fallback。
当前实现限制
- 当前是非常基础的 forward path,不包含光照、阴影、法线贴图、后处理或多 pass。
- 只画当前提取结果中的 mesh;没有 skybox、UI、粒子或透明物体排序。
- 纹理查找采用名字启发式,当前会依次尝试
baseColorTexture、_BaseColorTexture、_MainTex等键名。 - 当前 input layout 把位置声明成
R32G32B32A32_Float,而StaticMeshVertex::position是Vector3;现有集成测试能跑通,但这说明顶点布局约定仍需要更严格校准。 - 当前 pipeline resource 生命周期完全由这条管线对象自己管理,还没有被更高层渲染框架统一接管。
公开方法
| 方法 | 说明 |
|---|---|
| Destructor | 析构时关闭管线资源。 |
| Initialize | 初始化这条内建前向管线。 |
| Shutdown | 释放内部创建的所有 RHI 资源。 |
| Render | 把 RenderSceneData 绘制到目标表面。 |
设计说明
即便当前实现很轻量,把默认管线拆成独立类仍然是对的:
SceneRenderer不必硬编码具体 draw 逻辑。- 未来想加 deferred、shadow pass 或 editor preview pipeline 时,接口上有扩展空间。
这和商业引擎里保留 builtin pipeline 作为“默认可用实现”的思路是一致的。