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

1.6 KiB
Raw Blame History

BuiltinInfiniteGridPass::Render

命名空间: XCEngine::Rendering::Passes

类型: method

头文件: XCEngine/Rendering/Passes/BuiltinInfiniteGridPass.h

签名

bool Render(
    const RenderContext& renderContext,
    const RenderSurface& surface,
    const InfiniteGridPassData& data);

作用

把当前无限网格效果绘制到 surface 的第一个颜色附件上。

当前实现流程

  1. 如果 data.valid == falserenderContext 无效或后端不是 D3D12,直接返回 false
  2. 调用 EnsureInitialized(renderContext);如果当前 shaderPath 为空,或配置路径下的 shader 无法加载,也会在这里失败。
  3. 检查颜色附件和深度附件,要求 grid pass 具备完整的颜色与深度目标。
  4. 调用 BuildInfiniteGridParameters 生成网格参数,并构建 view-projection 常量。
  5. 把常量写入 descriptor set。
  6. 绑定第一个颜色附件和深度附件。
  7. 以全屏三角形方式执行一次 Draw(3, 1, 0, 0)

关键语义

  • 这条路径不再隐式依赖 engine builtin shader调用方必须先通过构造函数或 SetShaderPath 提供有效 shader 路径。
  • pass 本身不做资源状态切换。
  • viewport 与 scissor 总是覆盖整张 surface不读取 surface.GetRenderArea()
  • 当前只写第一个颜色附件。

相关文档