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

64 lines
3.7 KiB
Markdown
Raw Normal View History

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