2026-04-03 15:10:37 +08:00
|
|
|
|
# BuiltinInfiniteGridPass::Render
|
|
|
|
|
|
|
2026-04-04 01:10:38 +08:00
|
|
|
|
**命名空间**: `XCEngine::Rendering::Passes`
|
|
|
|
|
|
|
|
|
|
|
|
**类型**: `method`
|
|
|
|
|
|
|
|
|
|
|
|
**头文件**: `XCEngine/Rendering/Passes/BuiltinInfiniteGridPass.h`
|
|
|
|
|
|
|
|
|
|
|
|
## 签名
|
|
|
|
|
|
|
2026-04-03 15:10:37 +08:00
|
|
|
|
```cpp
|
|
|
|
|
|
bool Render(
|
|
|
|
|
|
const RenderContext& renderContext,
|
|
|
|
|
|
const RenderSurface& surface,
|
|
|
|
|
|
const InfiniteGridPassData& data);
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-04 01:10:38 +08:00
|
|
|
|
## 作用
|
|
|
|
|
|
|
|
|
|
|
|
把当前无限网格效果绘制到 `surface` 的第一个颜色附件上。
|
2026-04-03 15:10:37 +08:00
|
|
|
|
|
2026-04-04 01:10:38 +08:00
|
|
|
|
## 当前实现流程
|
2026-04-03 15:10:37 +08:00
|
|
|
|
|
2026-04-04 01:10:38 +08:00
|
|
|
|
1. 如果 `data.valid == false`、`renderContext` 无效或后端不是 `D3D12`,直接返回 `false`。
|
|
|
|
|
|
2. 调用 `EnsureInitialized(renderContext)`;如果当前 `shaderPath` 为空,或配置路径下的 shader 无法加载,也会在这里失败。
|
|
|
|
|
|
3. 检查颜色附件和深度附件,要求 grid pass 具备完整的颜色与深度目标。
|
|
|
|
|
|
4. 调用 [BuildInfiniteGridParameters](BuildInfiniteGridParameters.md) 生成网格参数,并构建 view-projection 常量。
|
|
|
|
|
|
5. 把常量写入 descriptor set。
|
2026-04-03 15:10:37 +08:00
|
|
|
|
6. 绑定第一个颜色附件和深度附件。
|
|
|
|
|
|
7. 以全屏三角形方式执行一次 `Draw(3, 1, 0, 0)`。
|
|
|
|
|
|
|
2026-04-04 01:10:38 +08:00
|
|
|
|
## 关键语义
|
2026-04-03 15:10:37 +08:00
|
|
|
|
|
2026-04-04 01:10:38 +08:00
|
|
|
|
- 这条路径不再隐式依赖 engine builtin shader;调用方必须先通过构造函数或 [SetShaderPath](SetShaderPath.md) 提供有效 shader 路径。
|
2026-04-03 15:10:37 +08:00
|
|
|
|
- pass 本身不做资源状态切换。
|
2026-04-04 01:10:38 +08:00
|
|
|
|
- viewport 与 scissor 总是覆盖整张 surface,不读取 `surface.GetRenderArea()`。
|
|
|
|
|
|
- 当前只写第一个颜色附件。
|
2026-04-03 15:10:37 +08:00
|
|
|
|
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
|
|
|
|
|
|
- [BuiltinInfiniteGridPass](BuiltinInfiniteGridPass.md)
|
2026-04-04 01:10:38 +08:00
|
|
|
|
- [SetShaderPath](SetShaderPath.md)
|
2026-04-03 15:10:37 +08:00
|
|
|
|
- [InfiniteGridPassData](InfiniteGridPassData.md)
|
|
|
|
|
|
- [BuildInfiniteGridParameters](BuildInfiniteGridParameters.md)
|