5.2 KiB
5.2 KiB
Rendering
命名空间: XCEngine::Rendering
类型: module
描述: 当前场景渲染主链路所在模块,覆盖 request 规划、场景提取、主管线执行、object-id 输出,以及调用方注入的 post / overlay pass。
概览
当前 Rendering 模块已经不是简单的“scene -> pipeline”两段式结构,而是一条更完整的提交链:
- SceneRenderer 规划并排序
CameraRenderRequest。 - CameraRenderer 执行单个 request。
- RenderSceneExtractor 生成
RenderSceneData。 - RenderPipelineAsset 决定当前主管线实例如何创建。
- RenderPipeline 执行主场景绘制。
- ObjectIdPass 与 Passes 子模块补上 object-id、grid、outline 等附加阶段。
默认主链路当前是:
当前主流程
对一台相机的大致流程是:
SceneRenderer生成CameraRenderRequest。CameraRenderer校验 request 与 render-area。RenderSceneExtractor基于相机和 render-area 提取RenderSceneData。RenderPipeline绘制主颜色目标。- 如有需要,执行 object-id pass。
- 执行
postScenePasses与overlayPasses。
Scene View 里的无限网格、选中轮廓和编辑器 overlay,当前都不是 CameraRenderer 内部动态规划出来的,而是先在 Editor 层组装成 request plan,再通过 postScenePasses / overlayPasses 接入这条主链。
材质与 shader 语义如何进入主链路
RenderMaterialUtility 当前负责把材质里的:
shaderPassLightModerenderQueuerenderState
翻译成渲染链路可消费的规则。
在默认 builtin forward 路径里,shader pass 的 resources 声明还会进一步参与 PassResourceLayout 构建,因为 BuiltinForwardPipeline 已经开始按资源契约生成 descriptor set layout。
当前基础设施分层
更底层的基础协议由这些页面补齐:
它们分别负责 request 规划、排序规则、scene helper、通用 pass 生命周期和 object-id 编解码约定。
当前实现边界
- 默认主路径仍然是 builtin forward,不是完整 SRP 或 render graph。
RenderPipelineAsset已经接入默认主链路,但当前还不是项目资源数据库里的完整 renderer asset。- 多相机排序由
SceneRenderer处理,CameraRenderer只执行单个 request。 - 编辑器特有的 grid / outline / overlay 组装逻辑不在
Rendering模块里完成,而是在 Editor 层先转成RenderPassSequence。
头文件索引
- CameraRenderRequest -
CameraRenderRequest.h - CameraRenderer -
CameraRenderer.h - ObjectIdEncoding -
ObjectIdEncoding.h - ObjectIdPass -
ObjectIdPass.h - Passes -
Passes/ - RenderCameraData -
RenderCameraData.h - RenderContext -
RenderContext.h - RenderMaterialUtility -
RenderMaterialUtility.h - RenderPass -
RenderPass.h - RenderPipeline -
RenderPipeline.h - RenderPipelineAsset -
RenderPipelineAsset.h - RenderResourceCache -
RenderResourceCache.h - RenderSceneExtractor -
RenderSceneExtractor.h - RenderSceneUtility -
RenderSceneUtility.h - RenderSurface -
RenderSurface.h - SceneRenderRequestPlanner -
SceneRenderRequestPlanner.h - SceneRenderRequestUtils -
SceneRenderRequestUtils.h - SceneRenderer -
SceneRenderer.h - VisibleRenderObject -
VisibleRenderObject.h - Pipelines -
Pipelines/