Files
XCEngine/docs/api/XCEngine/Rendering/Rendering.md
2026-03-29 01:36:53 +08:00

3.7 KiB

Rendering

命名空间: XCEngine::Rendering

类型: module

描述: 提供场景提取、相机渲染请求、渲染目标表面、渲染管线抽象和内建前向渲染实现。

概览

当前 XCEngine::Rendering 可以按一条比较清楚的链路理解:

  1. SceneRenderer 负责多相机请求组织与排序。
  2. CameraRenderRequest 把单次相机渲染的输入打包成显式请求。
  3. CameraRenderer 负责执行单相机渲染。
  4. RenderSceneExtractor 从场景中抽取当前相机可见的数据。
  5. RenderSurface 描述渲染目标、附件与状态切换。
  6. RenderPipeline 定义真正执行绘制的后端无关接口。
  7. Pipelines::BuiltinForwardPipeline 是当前默认管线实现。

这类“请求组织层 -> 提取层 -> 管线执行层”的拆分,与商业引擎里常见的 camera rendering architecture 很接近。它的优势是未来要扩展更多相机类型、离屏渲染目标或替换整个管线时,不必把所有逻辑塞进一个大类里。

设计要点

  • 把多相机调度和单相机执行拆开,便于排序和后续扩展。
  • 场景提取与真正绘制分层,给可见性、排序和批处理预留演进空间。
  • RenderMaterialUtility 统一承担材质解析、render queue 判定和 RHI 状态翻译,避免这些规则散落在多个调用点。
  • RenderSurface 把目标尺寸、附件和状态切换要求显式化,减少管线对具体平台窗口细节的直接依赖。

当前实现边界

  • 当前默认路径仍然是轻量级内建前向渲染,而不是完整 SRP 或延迟渲染框架。
  • CameraRenderer 当前只负责单相机;多相机排序仍由 SceneRenderer 组织。
  • RenderSceneExtractor 已支持基本的相机选择、可见项收集和 render queue 排序,但还没有完整视锥裁剪、遮挡裁剪和高级批处理。
  • 材质状态映射目前足够支撑基础前向绘制,但还谈不上完整商业引擎材质系统。

头文件

相关指南

相关文档