2.9 KiB
2.9 KiB
Passes
命名空间: XCEngine::Editor
类型: submodule
源目录: editor/src/Viewport/Passes/
描述: Scene View 专用 GPU pass 子模块,负责把 editor-owned 的网格、选中轮廓和世界 overlay 注入场景渲染请求。
概述
这个子目录当前包含三类 Scene View 专用 pass:
- SceneViewportGridPass
- Editor 自己拥有的 post-scene 网格 pass,内部包装 BuiltinInfiniteGridPass。
- SceneViewportSelectionOutlinePass
- Editor 自己拥有的 post-scene 选中轮廓 pass,内部包装 BuiltinObjectIdOutlinePass。
- SceneViewportEditorOverlayPass
- Scene View 世界 overlay pass,负责画世界线段、图标 sprite 和屏幕三角形批次。
当前 Scene View 的 GPU 注入链路已经拆成两段:
postScenePassesSceneViewportGridPassSceneViewportSelectionOutlinePass
overlayPassesSceneViewportEditorOverlayPass
它们的职责都不是替代 SceneViewPanel 上的 ImGui 交互 overlay,而是把“真正属于 3D 场景空间或 Scene View 渲染阶段”的辅助内容接到 SceneRenderer 请求里。
这种分层很合理:
- 需要在主场景之后、overlay 之前补一层编辑器效果的内容,放进 post-scene pass。
- 需要和场景深度关系一致的世界 overlay,放进 overlay pass。
- 需要响应鼠标命中、直接叠在 ImGui 纹理表面的 HUD / 前端控件,保留在 draw list。
当前实现限制
- 当前这些 pass 只在
D3D12后端返回成功。 SceneViewportGridPass/SceneViewportSelectionOutlinePass目前是 Editor 对 runtime builtin pass 的包装层,不是新的 runtime 公共语义。- overlay sprite 贴图来源仍是编辑器资源目录中的 PNG 文件,不是材质系统通用资源。
- 这组 pass 由 ViewportHostService 在 Scene View 渲染时按需注入,不是通用渲染管线公共 pass。
页面
- SceneViewportGridPass -
SceneViewportGridPass.h - SceneViewportSelectionOutlinePass -
SceneViewportSelectionOutlinePass.h - SceneViewportEditorOverlayPass -
SceneViewportEditorOverlayPass.h