Files
XCEngine/docs/plan/Renderer阶段收口说明.md

165 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Renderer阶段收口说明
## 1. 目标
本文用于正式收口当前 Renderer 阶段,明确:
- 本阶段已经完成什么
- 哪些能力已经进入稳定边界
- 哪些事项明确延期到下一阶段
- 后续开发不应再继续把新功能塞回本阶段
当前收口日期:`2026-04-02`
---
## 2. 本阶段已完成能力
### 2.1 Renderer 主体边界
当前已经形成稳定分层:
- `RHI` 负责后端抽象与资源/命令执行
- `Rendering` 负责场景提取、camera request、pipeline、builtin pass
- `Editor` 负责 viewport 宿主、输入、overlay、编辑态请求装配
关键点:
- `CameraRenderer` 已经承担统一 camera 渲染执行职责
- `SceneRenderer` 已经承担 scene -> camera request 的组织职责
- editor scene viewport 不再自己拼装 renderer 执行逻辑
### 2.2 内建后处理边界
本阶段内建编辑态后处理已经收敛为 renderer 自己的通用请求能力:
- `BuiltinPostProcessRequest`
- `BuiltinPostProcessPassPlan`
- `BuiltinPostProcessPassSequenceBuilder`
这意味着:
- renderer 公共接口不再暴露 `SceneView` 专有命名
- grid / selection outline / debug mask 已归入 renderer 侧 builtin post-process 能力
- editor 只负责“是否启用、传什么数据、把哪些 render target 绑定进 request”
### 2.3 Editor Scene Viewport 接入
当前 editor scene viewport 已具备:
- renderer 离屏输出接入
- object-id 帧输出接入
- CPU picking 回退链路
- selection outline
- infinite grid
- built-in post-process 请求装配
其中:
- grid 和 outline 仍然服务于 editor scene viewport
- 但执行入口已经下沉到 renderer
- editor 只保留宿主与编辑器语义
### 2.4 自动化测试体系
当前已经具备稳定回归闸门:
- `tests/Rendering/unit`
- `tests/Rendering/integration`
- `tests/Editor`
- `rendering_phase_regression`
当前阶段收口依赖的关键验证包括:
- renderer unit tests
- editor tests
- 全 rendering integration 场景
- `XCEditor` smoke launch
---
## 3. 本阶段稳定边界
以下内容从现在开始视为本阶段稳定边界:
1. renderer 公共请求以 `CameraRenderRequest` 为核心,而不是 editor 自定义执行入口。
2. editor scene viewport 的内建后处理数据由 editor 组装,但 pass 执行由 renderer 负责。
3. builtin post-process 的公共语义是 renderer 语义,不是 `SceneView` 语义。
4. rendering regression 失败时,优先视为阶段回归,而不是“可接受的小问题”。
---
## 4. 本阶段明确延期项
以下事项明确不再继续塞入本阶段,转入下一阶段:
### 4.1 真正的多 pass / render graph 框架
当前已有 pass sequence 与 builtin post-process但这还不是完整的 renderer 多 pass 架构。
延期内容:
- renderer 级 render graph
- 更正式的 pass phase / event 模型
- 更通用的资源读写依赖管理
### 4.2 GPU Object ID 正式方案
当前 editor selection 相关链路已经能工作,但还不是最终方案。
延期内容:
- renderer 内正式 object-id pass/attachment 规范化
- editor picking 从 CPU fallback 继续向 GPU object-id 正式方案收敛
- editor/game shared picking contract
### 4.3 Gizmo 最终渲染体系
当前 gizmo 与 scene viewport 已经能工作,但不属于本阶段 renderer 收口范围。
延期内容:
- 更成熟的 gizmo 渲染架构
- 更统一的 gizmo draw pass / picking / overlay 体系
- 与后续 renderer 多 pass 的正式对接
### 4.4 C# SRP 对接
当前 renderer 的职责边界已经为 SRP 预留好了方向,但本阶段不做真正脚本化 pipeline 落地。
延期内容:
- `RenderPipelineAsset` / `RenderPipeline` 脚本绑定
- `ScriptableRenderContext`
- `CommandBuffer`
- renderer 与脚本侧的正式桥接层
---
## 5. 阶段退出标准
当前阶段只有在以下条件全部满足时才视为完成:
1. renderer/editor 边界中不再存在新的 `SceneView` 语义向 renderer 公共接口泄漏。
2. scene viewport 的 builtin post-process 组合链路具备稳定自动化回归覆盖。
3. `rendering_phase_regression` 保持通过。
4. 新功能开发转入下一阶段,不再回头污染本阶段边界。
截至本文落地时,这些退出标准已经满足。
---
## 6. 下一阶段入口
Renderer 下一阶段应当正式转向:
- renderer 内更完整的多 pass / phase 模型
- editor/game shared render feature 契约
- object-id 正式化
- 为后续 C# SRP 搭建真正可扩展的 renderer 接口
一句话总结:
- 当前阶段已经把“Renderer 从 RHI 之上独立出来,并接通 editor scene viewport”这件事做完
- 下一阶段不该继续修补这一层,而应开始建设更正式的 renderer 扩展框架