Files
XCEngine/docs/api/XCEngine/Rendering/Execution/CameraRenderer/SetDepthOnlyPass.md

37 lines
1.2 KiB
Markdown

# CameraRenderer::SetDepthOnlyPass
**命名空间**: `XCEngine::Rendering`
**类型**: `method`
**头文件**: `XCEngine/Rendering/Execution/CameraRenderer.h`
## 签名
```cpp
void SetDepthOnlyPass(std::unique_ptr<RenderPass> depthOnlyPass);
```
## 作用
替换当前用于消费 `request.depthOnly` 的独立 scene pass。
## 当前实现行为
1. 如果旧 `m_depthOnlyPass` 非空,先调用它的 `Shutdown()`
2. 接管新的 `depthOnlyPass`
3. 如果新指针为空,则自动回退到 [Passes::BuiltinDepthOnlyPass](../../Passes/BuiltinDepthOnlyPass/BuiltinDepthOnlyPass.md)。
## 关键语义
- 这里替换的是一个普通 `RenderPass`,并不要求具体类型必须来自 builtin pass 层。
- `CameraRenderer::Render()` 只在 `request.depthOnly.IsRequested()` 时才会真正执行这里持有的 pass。
- `tests/Rendering/unit/test_camera_scene_renderer.cpp` 通过 mock pass 验证了这条注入链会在主主管线之前执行,并正确消费 `ScenePassRenderRequest` 的 surface / clear-color override。
## 相关文档
- [GetDepthOnlyPass](GetDepthOnlyPass.md)
- [Render](Render.md)
- [BuiltinDepthOnlyPass](../../Passes/BuiltinDepthOnlyPass/BuiltinDepthOnlyPass.md)