36 lines
1.5 KiB
Markdown
36 lines
1.5 KiB
Markdown
# RenderSurface::SetDepthAttachment
|
|
|
|
设置 surface 的深度附件。
|
|
|
|
```cpp
|
|
void SetDepthAttachment(RHI::RHIResourceView* depthAttachment);
|
|
```
|
|
|
|
## 参数
|
|
|
|
- `depthAttachment` - 深度/模板视图;允许传入 `nullptr`。
|
|
|
|
## 当前语义
|
|
|
|
- 当前实现只是把指针直接写入 `m_depthAttachment`,不会做额外资源操作。
|
|
- 新值会覆盖旧值,不会尝试关闭、释放或验证旧附件。
|
|
- 保存的是非拥有裸指针,`RenderSurface` 不负责它的生命周期。
|
|
|
|
## 调用方影响
|
|
|
|
- `BuiltinForwardPipeline::Render()` 可以在深度附件为空时继续绑定颜色目标,只是深度清除和深度写入是否真正可用取决于具体后端与 pass 配置。
|
|
- `ScenePassRenderRequest::IsValid()` 与 [BuiltinDepthStylePassBase::Execute](../Passes/BuiltinDepthStylePassBase/Execute.md) 也把“深度附件非空”当作必要条件;否则 depth-only / shadow-caster 请求不会通过校验。
|
|
- `BuiltinObjectIdPass::Render()` 和 `BuiltinInfiniteGridPass::Render()` 都要求深度附件非空;否则会直接返回失败。
|
|
- `ObjectIdRenderRequest::IsValid()` 也把“深度附件非空”列为必要条件之一。
|
|
|
|
## 测试覆盖
|
|
|
|
- `tests/Editor/test_viewport_host_surface_utils.cpp` 和 `tests/Editor/test_viewport_render_targets.cpp` 都验证了 viewport surface 会把 depth view 写入这里。
|
|
|
|
## 相关文档
|
|
|
|
- [RenderSurface](RenderSurface.md)
|
|
- [GetDepthAttachment](GetDepthAttachment.md)
|
|
- [SetColorAttachment](SetColorAttachment.md)
|
|
- [SetColorAttachments](SetColorAttachments.md)
|