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

2.9 KiB
Raw Blame History

RenderCameraData

命名空间: XCEngine::Rendering

类型: struct

头文件: XCEngine/Rendering/RenderCameraData.h

描述: 保存渲染阶段实际使用的相机矩阵、清屏参数和视口尺寸。

概览

RenderCameraData 是“组件层的相机”到“渲染层可直接消费的数据块”之间的桥接结构。 当前主链路里:

  • RenderSceneUtilityBuildRenderCameraData() 负责先构建矩阵、世界位置和默认清屏色。
  • RenderSceneExtractor 把它装进 RenderSceneData
  • CameraRenderer 会在真正提交前再按 request 覆盖 clearFlags,必要时覆盖 clearColor

因此它不是“纯相机组件快照”,而是一次渲染提交最终会消费的相机数据槽位。

RenderClearFlags

同一个头文件里还定义了当前使用的清屏位标志:

枚举值 说明
None 不清任何内容。
Color 只清颜色。
Depth 只清深度。
All 同时清颜色和深度。

当前还提供了按位 |& 运算,以及 HasRenderClearFlag(flags, flag) helperBuiltinForwardPipeline 判断本次主场景是否需要清颜色/深度。

字段

字段 类型 说明
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() 当前会写入 viewprojectionviewProjectionworldPositionclearColor 和 viewport 尺寸。
  • 该函数不会根据 CameraComponent::GetClearMode() 推导 clearFlagsRenderCameraData 此时保留 struct 默认值 RenderClearFlags::All
  • 真正的 per-request clear 语义在 CameraRenderer::Render() 里由 request.clearFlags 覆盖写回 sceneData.cameraData.clearFlags
  • 当前 extractor 会在写入矩阵前对 viewprojectionviewProjection 做转置,以适配现有 shader 常量布局。

相关文档