docs(rendering): tighten planning and viewport docs

This commit is contained in:
2026-04-10 17:14:27 +08:00
parent f917040e9a
commit f401a54806
14 changed files with 229 additions and 37 deletions

View File

@@ -86,5 +86,5 @@ ApplySceneViewportRenderRequestSetup(
- [HasOverlayPasses](HasOverlayPasses.md)
- [ApplySceneViewportRenderRequestSetup](../ViewportHostRenderFlowUtils/ApplySceneViewportRenderRequestSetup.md)
- [ViewportHostRenderFlowUtils](../ViewportHostRenderFlowUtils/ViewportHostRenderFlowUtils.md)
- [CameraRenderRequest](../../../Rendering/CameraRenderRequest/CameraRenderRequest.md)
- [CameraRenderRequest](../../../Rendering/Planning/CameraRenderRequest/CameraRenderRequest.md)
- [Scene View Render Plan And Failure Flow](../../../../_guides/Editor/Scene-Viewport-Render-Plan-And-Failure-Flow.md)

View File

@@ -12,7 +12,7 @@
`SceneViewportRenderPlan.h` 处在 [ViewportHostService](../ViewportHostService/ViewportHostService.md) 的 Scene View 主路径中段。
它不负责决定“场景里有哪些相机需要渲染”,那是运行时 [SceneRenderer](../../../Rendering/SceneRenderer/SceneRenderer.md) 与 [SceneRenderRequestPlanner](../../../Rendering/SceneRenderRequestPlanner/SceneRenderRequestPlanner.md) 的职责。
它不负责决定“场景里有哪些相机需要渲染”,那是运行时 [SceneRenderer](../../../Rendering/Execution/SceneRenderer/SceneRenderer.md) 与 [SceneRenderRequestPlanner](../../../Rendering/Planning/SceneRenderRequestPlanner/SceneRenderRequestPlanner.md) 的职责。
它负责的是 Scene View 这一层独有的编辑器附加项:

View File

@@ -17,7 +17,7 @@ void ApplySceneViewportRenderRequestSetup(
## 作用
把 Scene View 这一帧最基础的附加渲染设置写回 [CameraRenderRequest](../../../Rendering/CameraRenderRequest/CameraRenderRequest.md)。
把 Scene View 这一帧最基础的附加渲染设置写回 [CameraRenderRequest](../../../Rendering/Planning/CameraRenderRequest/CameraRenderRequest.md)。
它负责的是“最低层 request 装配”:
@@ -80,5 +80,5 @@ void ApplySceneViewportRenderRequestSetup(
- [SceneViewportRenderPlan](../SceneViewportRenderPlan/SceneViewportRenderPlan.md)
- [ApplySceneViewportRenderPlan](../SceneViewportRenderPlan/ApplySceneViewportRenderPlan.md)
- [ViewportHostRenderTargets](../ViewportHostRenderTargets/ViewportHostRenderTargets.md)
- [CameraRenderRequest](../../../Rendering/CameraRenderRequest/CameraRenderRequest.md)
- [ObjectIdRenderRequest](../../../Rendering/CameraRenderRequest/ObjectIdRenderRequest/ObjectIdRenderRequest.md)
- [CameraRenderRequest](../../../Rendering/Planning/CameraRenderRequest/CameraRenderRequest.md)
- [ObjectIdRenderRequest](../../../Rendering/Planning/CameraRenderRequest/ObjectIdRenderRequest/ObjectIdRenderRequest.md)

View File

@@ -183,4 +183,4 @@ Scene View 在构建 render plan 时,可能已经得到了更精确但非致
- [ViewportHostRenderTargets](../ViewportHostRenderTargets/ViewportHostRenderTargets.md)
- [SceneViewportRenderPlan](../SceneViewportRenderPlan/SceneViewportRenderPlan.md)
- [SceneViewportEditorOverlayData](../SceneViewportEditorOverlayData/SceneViewportEditorOverlayData.md)
- [CameraRenderRequest](../../../Rendering/CameraRenderRequest/CameraRenderRequest.md)
- [CameraRenderRequest](../../../Rendering/Planning/CameraRenderRequest/CameraRenderRequest.md)

View File

@@ -21,11 +21,14 @@
## 当前公开入口
- [BuiltinPassContract](BuiltinPassContract/BuiltinPassContract.md)
- [BuiltinMaterialPass](../RenderMaterialUtility/BuiltinMaterialPass.md)
- [BuiltinPassResourceSemantic](../RenderMaterialUtility/BuiltinPassResourceSemantic.md)
- [BuiltinPassResourceBindingPlan](../RenderMaterialUtility/BuiltinPassResourceBindingPlan.md)
- [NormalizeBuiltinPassMetadataValue](../RenderMaterialUtility/NormalizeBuiltinPassMetadataValue.md)
- [TryBuildBuiltinPassResourceBindingPlan](../RenderMaterialUtility/TryBuildBuiltinPassResourceBindingPlan.md)
- [BuiltinPassTypes](BuiltinPassTypes/BuiltinPassTypes.md)
- [BuiltinPassMetadataUtils](BuiltinPassMetadataUtils/BuiltinPassMetadataUtils.md)
- [BuiltinPassLayoutUtils](BuiltinPassLayoutUtils/BuiltinPassLayoutUtils.md)
兼容说明:
- [RenderMaterialUtility](../RenderMaterialUtility/RenderMaterialUtility.md)
保留旧专题入口,用来解释原先归在 `RenderMaterialUtility` 名下的契约页现在分别落在哪些真实头文件里。
## 相关文档

View File

@@ -17,6 +17,7 @@
- [RenderMaterialResolve](RenderMaterialResolve/RenderMaterialResolve.md)
- [RenderMaterialStateUtils](RenderMaterialStateUtils/RenderMaterialStateUtils.md)
- [RenderMaterialUtility](../RenderMaterialUtility/RenderMaterialUtility.md)
兼容主题页,用来承接旧入口并指向新的 `Builtin/*` + `Materials/*` 分层。
## 当前职责

View File

@@ -19,11 +19,22 @@ std::vector<CameraRenderRequest> BuildRequests(
这两个计数会传给 `ResolveClearFlags()`,用于推导 `Auto` clear mode 的最终清屏行为。
在基础 request 构建成功后,当前实现还会尝试补方向光阴影规划:
- 先判断这台相机当前是否应该进入自动方向光阴影路径。
- 再按相机 `cullingMask` 查找主方向光,并要求该光源开启投影阴影。
- 满足条件时,通过内部 `DirectionalShadowPlanning` helper 构建 `request.directionalShadow`
- 如果 plan 有效,还会同步写入:
- `request.shadowCaster.clearFlags = RenderClearFlags::Depth`
- `request.shadowCaster.hasCameraDataOverride = true`
- `request.shadowCaster.cameraDataOverride = request.directionalShadow.cameraData`
## 当前过滤规则
- 如果某台相机最终生成的 request render area 宽高为 `0`,该请求会被跳过。
- 只有真正成功加入结果数组的 base camera才会推进 `renderedBaseCameraCount`
- 方法不会抛出失败原因;调用方只会拿到最终保留下来的请求数组。
- 如果方向光阴影 plan 构建失败,主 request 仍然会保留,只是 `directionalShadow` 维持无效状态。
## 返回值
@@ -34,5 +45,6 @@ std::vector<CameraRenderRequest> BuildRequests(
- [SceneRenderRequestPlanner](SceneRenderRequestPlanner.md)
- [CollectCameras](CollectCameras.md)
- [CameraRenderRequest](../CameraRenderRequest/CameraRenderRequest.md)
- [SceneRenderRequestUtils](../SceneRenderRequestUtils/SceneRenderRequestUtils.md)
- [SceneRenderer::BuildRenderRequests](../../Execution/SceneRenderer/BuildRenderRequests.md)

View File

@@ -20,13 +20,24 @@
这样 Editor、离屏渲染和手工 request 注入都能复用同一套规划规则,而不用直接碰 `CameraRenderer` 内部执行链。
## 公开方法
## 公开类型与方法
当前头文件除了 planner 本体,还公开了:
- `DirectionalShadowPlanningSettings`
负责控制自动方向光阴影规划的 map 尺寸、focus 距离、padding 和深度范围下限。
公开方法包括:
| 方法 | 说明 |
|------|------|
| `SetDirectionalShadowPlanningSettings(...)` | 写入一份会先经过 sanitize 的阴影规划参数。 |
| `GetDirectionalShadowPlanningSettings()` | 返回当前生效的阴影规划参数。 |
| [CollectCameras](CollectCameras.md) | 收集本次应参与渲染的相机列表。 |
| [BuildRequests](BuildRequests.md) | 把相机列表展开成可执行的 `CameraRenderRequest` 数组。 |
## 公开方法
## 当前规划规则
### `CollectCameras()`
@@ -48,6 +59,13 @@
这两个计数会影响自动 clear flag 的推导。
如果某个相机最终解析出的 render area 宽高为 `0`,该请求会被直接丢弃,而且不会错误地推进 base camera 计数。
如果当前相机满足方向光阴影规划条件planner 还会:
- 查找当前 `cullingMask` 下可投影阴影的主方向光
-`DirectionalShadowPlanningSettings` 生成 `request.directionalShadow`
- 在 plan 有效时,把 `shadowCaster.clearFlags` 固定为 `RenderClearFlags::Depth`
- 同时把 `shadowCaster.hasCameraDataOverride``cameraDataOverride` 写成阴影相机数据
## 设计取舍
当前 planner 故意保持“只做一件事”:
@@ -72,6 +90,7 @@
- 它只规划相机请求,不处理 `objectId` 或各类 `RenderPassSequence` 的具体填充;那部分通常由更上层调用方补充。
- 当前没有 camera stacking 的更复杂依赖分析,只有 base / overlay 与 depth 的线性排序。
- `BuildRequests()` 只返回成功构建的请求,不单独报告被过滤掉的相机原因。
- 自动方向光阴影规划目前只产出单张 shadow map 方案,不在这里处理级联阴影或多光源阴影编排。
## 相关文档

View File

@@ -45,8 +45,9 @@
4. 执行 `preScenePasses`
5. 如有需要,执行 shadow-caster / depth-only scene pass。
6. `RenderPipeline` 绘制主颜色目标。
7. 如有需要,执行 object-id pass
8. 执行 `postScenePasses``overlayPasses`
7. 如有需要,执行 `postProcess``finalOutput` fullscreen 阶段
8. 如有需要,执行 object-id pass
9. 执行 `postScenePasses``overlayPasses`
Scene View 里的无限网格、选中轮廓和编辑器 overlay当前都不是 `CameraRenderer` 内部动态规划出来的,而是先在 Editor 层组装成 request plan再通过 `postScenePasses` / `overlayPasses` 接入这条主链。
@@ -61,16 +62,18 @@ Scene View 里的无限网格、选中轮廓和编辑器 overlay当前都不
## 材质与 shader 语义如何进入主链路
[RenderMaterialUtility](RenderMaterialUtility/RenderMaterialUtility.md) 当前负责把材质里的
这部分职责当前已经不再由单一的 `RenderMaterialUtility.h` 承担,而是拆成两层
- `shaderPass`
- `LightMode`
- `renderQueue`
- `renderState`
- [RenderMaterialResolve](Materials/RenderMaterialResolve/RenderMaterialResolve.md)
负责材质、shader pass、render queue、skybox 与常量 payload 解析。
- [RenderMaterialStateUtils](Materials/RenderMaterialStateUtils/RenderMaterialStateUtils.md)
负责把材质 render-state 映射到 RHI 状态描述。
- [Builtin](Builtin/Builtin.md)
负责 builtin pass 名称、资源语义、binding plan 与 set-layout 规则。
翻译成渲染链路可消费的规则
[RenderMaterialUtility](RenderMaterialUtility/RenderMaterialUtility.md) 现在只保留为兼容主题页,用来给旧文档入口做导航
在默认 builtin forward 路径里shader pass 的 `resources` 声明还会进一步参与 `PassResourceLayout` 构建,因为 [BuiltinForwardPipeline](Pipelines/BuiltinForwardPipeline/BuiltinForwardPipeline.md) 已经开始按资源契约生成 descriptor set layout
在默认 builtin forward 路径里shader pass 的 `resources` 声明会先进入 `Builtin` 层构建 binding plan 和 descriptor-set layout再由 [BuiltinForwardPipeline](Pipelines/BuiltinForwardPipeline/BuiltinForwardPipeline.md) 消费这些契约
## 当前基础设施分层

View File

@@ -164,8 +164,8 @@
## 相关 API
- [Rendering](../../XCEngine/Rendering/Rendering.md)
- [SceneRenderer](../../XCEngine/Rendering/SceneRenderer/SceneRenderer.md)
- [SceneRenderRequestPlanner](../../XCEngine/Rendering/SceneRenderRequestPlanner/SceneRenderRequestPlanner.md)
- [SceneRenderRequestUtils](../../XCEngine/Rendering/SceneRenderRequestUtils/SceneRenderRequestUtils.md)
- [CameraRenderRequest](../../XCEngine/Rendering/CameraRenderRequest/CameraRenderRequest.md)
- [CameraRenderer](../../XCEngine/Rendering/CameraRenderer/CameraRenderer.md)
- [SceneRenderer](../../XCEngine/Rendering/Execution/SceneRenderer/SceneRenderer.md)
- [SceneRenderRequestPlanner](../../XCEngine/Rendering/Planning/SceneRenderRequestPlanner/SceneRenderRequestPlanner.md)
- [SceneRenderRequestUtils](../../XCEngine/Rendering/Planning/SceneRenderRequestUtils/SceneRenderRequestUtils.md)
- [CameraRenderRequest](../../XCEngine/Rendering/Planning/CameraRenderRequest/CameraRenderRequest.md)
- [CameraRenderer](../../XCEngine/Rendering/Execution/CameraRenderer/CameraRenderer.md)

View File

@@ -136,10 +136,10 @@ Scene View 的网格、选中描边和 editor overlay当前就是先在 Edito
## 相关 API
- [Rendering](../../XCEngine/Rendering/Rendering.md)
- [RenderSceneExtractor](../../XCEngine/Rendering/RenderSceneExtractor/RenderSceneExtractor.md)
- [RenderSceneExtractor](../../XCEngine/Rendering/Extraction/RenderSceneExtractor/RenderSceneExtractor.md)
- [RenderSurface](../../XCEngine/Rendering/RenderSurface/RenderSurface.md)
- [RenderPass](../../XCEngine/Rendering/RenderPass/RenderPass.md)
- [SceneRenderer](../../XCEngine/Rendering/SceneRenderer/SceneRenderer.md)
- [SceneRenderer](../../XCEngine/Rendering/Execution/SceneRenderer/SceneRenderer.md)
- [BuiltinForwardPipeline](../../XCEngine/Rendering/Pipelines/BuiltinForwardPipeline/BuiltinForwardPipeline.md)
- [BuiltinForwardPipelineAsset](../../XCEngine/Rendering/Pipelines/BuiltinForwardPipelineAsset/BuiltinForwardPipelineAsset.md)
- [MeshFilterComponent](../../XCEngine/Components/MeshFilterComponent/MeshFilterComponent.md)

View File

@@ -1,6 +1,6 @@
# API 文档重构状态
**生成时间**: `2026-04-10 17:09:30`
**生成时间**: `2026-04-10 17:12:12`
**来源**: `docs/api/_tools/audit_api_docs.py`