2026-04-10 16:55:33 +08:00
|
|
|
|
# ObjectIdRenderRequest
|
2026-04-03 14:09:36 +08:00
|
|
|
|
|
|
|
|
|
|
**命名空间**: `XCEngine::Rendering`
|
|
|
|
|
|
|
|
|
|
|
|
**类型**: `struct`
|
|
|
|
|
|
|
2026-04-07 00:17:51 +08:00
|
|
|
|
**头文件**: `XCEngine/Rendering/Planning/CameraRenderRequest.h`
|
2026-04-03 14:09:36 +08:00
|
|
|
|
|
|
|
|
|
|
**描述**: 描述一份 camera request 是否需要额外输出 object-id 纹理,以及这份输出目标是否完整可用。
|
|
|
|
|
|
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
|
|
|
|
|
|
`ObjectIdRenderRequest` 是 [CameraRenderRequest](../CameraRenderRequest.md) 里的辅助子请求,用来把“主场景颜色输出”和“object-id 辅助输出”拆开描述。
|
|
|
|
|
|
|
|
|
|
|
|
它当前只持有一个字段:
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
| `surface` | object-id pass 要写入的目标表面,通常是单独的颜色附件 + 深度附件组合。 |
|
|
|
|
|
|
|
|
|
|
|
|
## 关键语义
|
|
|
|
|
|
|
|
|
|
|
|
- [IsRequested](IsRequested.md) 只回答“调用方有没有挂一个颜色附件过来”。
|
|
|
|
|
|
- [IsValid](IsValid.md) 才回答“这份 object-id 输出目标是否足够完整,可以真正执行 pass”。
|
|
|
|
|
|
- `CameraRenderer::Render()` 会在主场景之后检查并消费这个子请求。
|
|
|
|
|
|
|
|
|
|
|
|
## 真实使用位置
|
|
|
|
|
|
|
|
|
|
|
|
- 编辑器 scene viewport 会准备一张单独的 object-id render target,并把它装进 `request.objectId.surface`。
|
|
|
|
|
|
- `CameraRenderer::Render()` 在 `request.objectId.IsRequested()` 为真时,调用当前的 `ObjectIdPass` 执行辅助输出。
|
|
|
|
|
|
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
|
|
|
|
|
|
- [CameraRenderRequest](../CameraRenderRequest.md)
|
|
|
|
|
|
- [IsRequested](IsRequested.md)
|
|
|
|
|
|
- [IsValid](IsValid.md)
|
2026-04-10 16:55:33 +08:00
|
|
|
|
- [CameraRenderer](../../../Execution/CameraRenderer/CameraRenderer.md)
|
2026-04-07 00:17:51 +08:00
|
|
|
|
|