37 lines
1.2 KiB
Markdown
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)
|
|
|