2.9 KiB
2.9 KiB
RenderCameraData
命名空间: XCEngine::Rendering
类型: struct
头文件: XCEngine/Rendering/RenderCameraData.h
描述: 保存渲染阶段实际使用的相机矩阵、清屏参数和视口尺寸。
概览
RenderCameraData 是“组件层的相机”到“渲染层可直接消费的数据块”之间的桥接结构。
当前主链路里:
- RenderSceneUtility 的
BuildRenderCameraData()负责先构建矩阵、世界位置和默认清屏色。 - RenderSceneExtractor 把它装进
RenderSceneData。 - CameraRenderer 会在真正提交前再按 request 覆盖
clearFlags,必要时覆盖clearColor。
因此它不是“纯相机组件快照”,而是一次渲染提交最终会消费的相机数据槽位。
RenderClearFlags
同一个头文件里还定义了当前使用的清屏位标志:
| 枚举值 | 说明 |
|---|---|
None |
不清任何内容。 |
Color |
只清颜色。 |
Depth |
只清深度。 |
All |
同时清颜色和深度。 |
当前还提供了按位 |、& 运算,以及 HasRenderClearFlag(flags, flag) helper,供 BuiltinForwardPipeline 判断本次主场景是否需要清颜色/深度。
字段
| 字段 | 类型 | 说明 |
|---|---|---|
view |
Math::Matrix4x4 |
视图矩阵。 |
projection |
Math::Matrix4x4 |
投影矩阵。 |
viewProjection |
Math::Matrix4x4 |
projection * view 组合矩阵。 |
worldPosition |
Math::Vector3 |
相机世界坐标。 |
clearColor |
Math::Color |
当前提交使用的清屏色。 |
clearFlags |
RenderClearFlags |
当前提交使用的清屏标志;默认值是 All。 |
viewportWidth |
uint32_t |
当前视口宽度。 |
viewportHeight |
uint32_t |
当前视口高度。 |
当前实现说明
BuildRenderCameraData()当前会写入view、projection、viewProjection、worldPosition、clearColor和 viewport 尺寸。- 该函数不会根据
CameraComponent::GetClearMode()推导clearFlags;RenderCameraData此时保留 struct 默认值RenderClearFlags::All。 - 真正的 per-request clear 语义在
CameraRenderer::Render()里由request.clearFlags覆盖写回sceneData.cameraData.clearFlags。 - 当前 extractor 会在写入矩阵前对
view、projection和viewProjection做转置,以适配现有 shader 常量布局。