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

2.7 KiB
Raw Blame History

BuiltinForwardPipeline

命名空间: XCEngine::Rendering::Pipelines

类型: class

头文件: XCEngine/Rendering/Pipelines/BuiltinForwardPipeline.h

描述: 当前内建的默认前向渲染管线,实现基础纹理采样、深度测试和 mesh 绘制。

概述

BuiltinForwardPipeline 是当前引擎真正能跑起来的默认渲染管线。

它的工作路径大致是:

  1. 基于 RenderContext 创建 pipeline state、descriptor pool、sampler 和 fallback texture。
  2. 使用 RenderResourceCacheMesh / Texture 上传成 GPU 资源。
  3. 读取 VisibleRenderObject 列表。
  4. 为每个物体写常量缓冲、绑定纹理和采样器,然后发出 draw call。

当前实现能力

  • 支持 D3D12 与 OpenGL 两套内嵌 shader 路径。
  • 支持颜色附件和深度附件。
  • 支持 mesh section 绘制。
  • 支持从 Material 上按若干常见名字查找基础颜色纹理。
  • 当材质或纹理缺失时,使用 1x1 白纹理作为 fallback。

当前实现限制

  • 当前是非常基础的 forward path不包含光照、阴影、法线贴图、后处理或多 pass。
  • 只画当前提取结果中的 mesh没有 skybox、UI、粒子或透明物体排序。
  • 纹理查找采用名字启发式,当前会依次尝试 baseColorTexture_BaseColorTexture_MainTex 等键名。
  • 当前 input layout 把位置声明成 R32G32B32A32_Float,而 StaticMeshVertex::positionVector3;现有集成测试能跑通,但这说明顶点布局约定仍需要更严格校准。
  • 当前 pipeline resource 生命周期完全由这条管线对象自己管理,还没有被更高层渲染框架统一接管。

公开方法

方法 说明
Destructor 析构时关闭管线资源。
Initialize 初始化这条内建前向管线。
Shutdown 释放内部创建的所有 RHI 资源。
Render RenderSceneData 绘制到目标表面。

设计说明

即便当前实现很轻量,把默认管线拆成独立类仍然是对的:

  • SceneRenderer 不必硬编码具体 draw 逻辑。
  • 未来想加 deferred、shadow pass 或 editor preview pipeline 时,接口上有扩展空间。

这和商业引擎里保留 builtin pipeline 作为“默认可用实现”的思路是一致的。

相关文档