3.7 KiB
3.7 KiB
Rendering
命名空间: XCEngine::Rendering
类型: module
描述: 提供场景提取、相机渲染请求、渲染目标表面、渲染管线抽象和内建前向渲染实现。
概览
当前 XCEngine::Rendering 可以按一条比较清楚的链路理解:
- SceneRenderer 负责多相机请求组织与排序。
- CameraRenderRequest 把单次相机渲染的输入打包成显式请求。
- CameraRenderer 负责执行单相机渲染。
- RenderSceneExtractor 从场景中抽取当前相机可见的数据。
- RenderSurface 描述渲染目标、附件与状态切换。
- RenderPipeline 定义真正执行绘制的后端无关接口。
- Pipelines::BuiltinForwardPipeline 是当前默认管线实现。
这类“请求组织层 -> 提取层 -> 管线执行层”的拆分,与商业引擎里常见的 camera rendering architecture 很接近。它的优势是未来要扩展更多相机类型、离屏渲染目标或替换整个管线时,不必把所有逻辑塞进一个大类里。
设计要点
- 把多相机调度和单相机执行拆开,便于排序和后续扩展。
- 场景提取与真正绘制分层,给可见性、排序和批处理预留演进空间。
RenderMaterialUtility统一承担材质解析、render queue 判定和 RHI 状态翻译,避免这些规则散落在多个调用点。RenderSurface把目标尺寸、附件和状态切换要求显式化,减少管线对具体平台窗口细节的直接依赖。
当前实现边界
- 当前默认路径仍然是轻量级内建前向渲染,而不是完整 SRP 或延迟渲染框架。
CameraRenderer当前只负责单相机;多相机排序仍由SceneRenderer组织。RenderSceneExtractor已支持基本的相机选择、可见项收集和 render queue 排序,但还没有完整视锥裁剪、遮挡裁剪和高级批处理。- 材质状态映射目前足够支撑基础前向绘制,但还谈不上完整商业引擎材质系统。
头文件
- CameraRenderRequest -
CameraRenderRequest.h - CameraRenderer -
CameraRenderer.h - RenderCameraData -
RenderCameraData.h - RenderContext -
RenderContext.h - RenderMaterialUtility -
RenderMaterialUtility.h - RenderPipeline -
RenderPipeline.h - RenderPipelineAsset -
RenderPipelineAsset.h - RenderResourceCache -
RenderResourceCache.h - RenderSceneExtractor -
RenderSceneExtractor.h - RenderSurface -
RenderSurface.h - SceneRenderer -
SceneRenderer.h - VisibleRenderObject -
VisibleRenderObject.h - Pipelines -
Pipelines/
相关指南
- Scene Extraction And Builtin Forward Pipeline - 解释场景提取、相机请求和内建前向管线之间的当前协作关系。