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

4.8 KiB
Raw Blame History

Passes

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

类型: submodule

描述: 承载 builtin object-id、selection outline、infinite grid 等补充型渲染 pass以及这些 pass 复用的轻量样式/参数类型。

概述

Rendering::Passes 不是用来替代 RenderPipeline 的第二套主渲染框架,而是承载“主场景已经画完之后,还需要补一层额外结果”的 builtin pass

当前这些 builtin pass 更多是“底层执行单元”。真正决定 Scene View 要不要画网格、要不要叠选中轮廓、这些效果要挂到 postScenePasses 还是 overlayPasses 上的逻辑,已经迁移到 editor 侧的 SceneViewportRenderPlan

典型链路

当前 Scene View 相关链路大致是:

  1. CameraRenderer 先执行主 RenderPipeline
  2. 如果 CameraRenderRequest 里请求了 objectId.surface,则额外执行 BuiltinObjectIdPass,把每个可见物体的 GameObject ID 编码进辅助纹理。
  3. editor 侧的 SceneViewportRenderPlan 会根据 overlay、选中对象和 render targets 同时构建 postScenePassesoverlayPasses
  4. 其中 postScenePasses 里的 SceneViewportGridPass / SceneViewportSelectionOutlinePass 包装器,最终分别调用 BuiltinInfiniteGridPassBuiltinObjectIdOutlinePassoverlayPasses 则保留给 editor overlay 的最终叠加层。

当前公开概念

类型 / 头文件 角色
BuiltinObjectIdPass 生成 object-id 颜色缓冲,给拾取与 outline 作为输入。
BuiltinObjectIdOutlinePass 读取 object-id 纹理,在主颜色目标上合成选中轮廓或调试 mask。
ObjectIdOutlineStyle 轮廓颜色、像素宽度、调试模式的配置载体。
BuiltinInfiniteGridPass Scene View 网格覆盖层的底层执行 pass。
InfiniteGridPassData 网格 pass 使用的相机姿态与裁剪参数。
InfiniteGridParameters 由相机状态推导出的网格尺度、过渡和淡出参数。
BuildInfiniteGridParameters 把 Scene View 相机数据折算成稳定的十进制网格参数。

测试与真实调用点

  • tests/Rendering/unit/test_camera_scene_renderer.cpp 验证了 CameraRenderer 中 object-id pass 与可选 pass sequence 的接入时机。
  • tests/Editor/test_scene_viewport_overlay_renderer.cpp 固定了 BuildInfiniteGridParameters(...) 的十进制尺度、过渡和淡出语义。
  • tests/Editor/test_viewport_render_flow_utils.cpp 验证了 Scene View render plan 如何组装 grid / selection outline / overlay pass以及 object-id SRV 缺失时的警告路径。

当前实现边界

  • 这一层目前是 builtin、轻量、偏 editor/工具链导向的 pass 集合,还不是通用 render graph。
  • object-id 相关流程依赖单独的辅助 render target / shader resource view而不是直接从主颜色结果反推。
  • 具体 pass 的资源状态切换大多由调用方保证,单个 pass 本身往往只做最小提交逻辑。

相关文档