# CameraRenderer::SetDepthOnlyPass **命名空间**: `XCEngine::Rendering` **类型**: `method` **头文件**: `XCEngine/Rendering/Execution/CameraRenderer.h` ## 签名 ```cpp void SetDepthOnlyPass(std::unique_ptr 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)