2.1 KiB
2.1 KiB
ScenePassRenderRequest
命名空间: XCEngine::Rendering
类型: struct
头文件: XCEngine/Rendering/Planning/CameraRenderRequest.h
描述: 描述一份独立 scene pass 请求是否需要执行,以及这份 depth-only / shadow-caster 目标与覆盖参数是否完整可用。
概述
ScenePassRenderRequest 是 CameraRenderRequest 里的辅助子请求,用来描述“在主 RenderPipeline 之前,是否还要额外执行一次 scene pass 重绘”。
当前 DepthOnlyRenderRequest 和 ShadowCasterRenderRequest 都只是它的类型别名,因此两条路径共用同一套数据契约:
| 字段 | 说明 |
|---|---|
surface |
scene pass 要写入的目标表面;当前实现要求至少有第一张颜色附件和一个深度附件。 |
clearFlags |
回写到临时 sceneData.cameraData.clearFlags 的覆盖值。 |
hasClearColorOverride / clearColorOverride |
是否覆盖这次 scene pass 使用的清屏色。 |
hasCameraDataOverride / cameraDataOverride |
预留的相机数据覆盖槽位;当前 CameraRenderer 还没有消费它。 |
关键语义
- IsRequested 只回答“调用方有没有挂一个颜色附件过来”。
- IsValid 才回答“这份 scene pass 输出目标是否足够完整,可以真正执行”。
- 按
engine/src/Rendering/CameraRenderer.cpp的当前实现,CameraRenderer::Render()会先消费shadowCaster,再消费depthOnly,之后才进入主RenderPipeline。
真实使用位置
CameraRenderRequest::shadowCaster和CameraRenderRequest::depthOnly都是这个结构的别名实例。CameraRenderer默认分别用 BuiltinShadowCasterPass 与 BuiltinDepthOnlyPass 来消费它。