Files
XCEngine/docs/api/XCEngine/Rendering/Passes/BuiltinInfiniteGridPass/Render.md

45 lines
1.6 KiB
Markdown
Raw Normal View History

# BuiltinInfiniteGridPass::Render
2026-04-04 01:10:38 +08:00
**命名空间**: `XCEngine::Rendering::Passes`
**类型**: `method`
**头文件**: `XCEngine/Rendering/Passes/BuiltinInfiniteGridPass.h`
## 签名
```cpp
bool Render(
const RenderContext& renderContext,
const RenderSurface& surface,
const InfiniteGridPassData& data);
```
2026-04-04 01:10:38 +08:00
## 作用
把当前无限网格效果绘制到 `surface` 的第一个颜色附件上。
2026-04-04 01:10:38 +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。
6. 绑定第一个颜色附件和深度附件。
7. 以全屏三角形方式执行一次 `Draw(3, 1, 0, 0)`
2026-04-04 01:10:38 +08:00
## 关键语义
2026-04-04 01:10:38 +08:00
- 这条路径不再隐式依赖 engine builtin shader调用方必须先通过构造函数或 [SetShaderPath](SetShaderPath.md) 提供有效 shader 路径。
- pass 本身不做资源状态切换。
2026-04-04 01:10:38 +08:00
- viewport 与 scissor 总是覆盖整张 surface不读取 `surface.GetRenderArea()`
- 当前只写第一个颜色附件。
## 相关文档
- [BuiltinInfiniteGridPass](BuiltinInfiniteGridPass.md)
2026-04-04 01:10:38 +08:00
- [SetShaderPath](SetShaderPath.md)
- [InfiniteGridPassData](InfiniteGridPassData.md)
- [BuildInfiniteGridParameters](BuildInfiniteGridParameters.md)