Skip to content

Commit 1530598

Browse files
committed
refactor(layers): document render entries + drop deprecated renderMulPass (stage-4 4.1)
P4 阶段 4 第一刀(4.1)。渲染管线入口边界 JSDoc 文档化 (render 单 pass / renderMultiPass multipass / renderModels 共享执行器 / renderLayers 重渲信号 / prerender 帧前钩子),运行时零行为变化。 移除 renderMulPass:非 ILayer 接口、无内部调用方、0.2 已 @deprecated 并预告收口,能力已被 renderMultiPass 内联覆盖(minor 弃用移除)。 验证:layers father build 279 files、非 GL jest 25 suites/158 passed。
1 parent d45cb50 commit 1530598

3 files changed

Lines changed: 51 additions & 12 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
'@antv/l7-layers': minor
3+
---
4+
5+
refactor(layers): document render entries + drop deprecated renderMulPass (stage-4 4.1)
6+
7+
P4 阶段 4 第一刀(4.1,layers 侧,minor)。
8+
9+
渲染管线 6 入口边界厘清 + 文档化(运行时零行为变化):
10+
11+
- `render()`:单 pass 渲染入口(`LayerService` 在未启用
12+
`enableMultiPassRenderer` 时调用)。瓦片图层短路委托
13+
`tileLayer.render()`;否则 `beforeRenderData` 通知 + 空数据早退
14+
(避免数据纹理空数据导致 texture 超限),最后委托 `renderModels`
15+
multipass 路径由 `LayerService` 直接调用 `renderMultiPass`,不经此方法。
16+
- `renderMultiPass()`:multipass 渲染入口(`LayerService` 在启用
17+
`enableMultiPassRenderer` 时调用);有 `multiPassRenderer`
18+
`getRenderFlag()` 为真时委托其编排,否则回退 `renderModels`
19+
- `renderModels()`:单 pass 共享 `model.draw` 执行器(`beforeRender` +
20+
逐 model draw,uniforms/blend/stencil/textures 取自 `layerModel`),
21+
`render``renderMultiPass` 复用。
22+
- `renderLayers()`:触发 `layerService.reRender()` 批量重渲信号,前后
23+
标记 `rendering` 防重入。
24+
- `prerender()`:每帧渲染前钩子,默认空体,子类可 override。
25+
26+
同时移除 `renderMulPass(multiPassRenderer)` —— 该方法不在 `ILayer`
27+
公共接口、无任何内部调用方、阶段 0.2 已 `@deprecated` 并预告「将在
28+
渲染管线收敛(阶段 4)时并入 `renderMultiPass`」。其能力已被
29+
`renderMultiPass()` 内联的 `await this.multiPassRenderer.render()`
30+
覆盖。属预公告的弃用移除(minor)。
31+
32+
验证:layers eslint 0 error、prettier 通过、layers father build 279
33+
files(d.ts OK)、非 GL jest 子集 25 suites / 158 passed 与基线一致。

docs/refactoring/layers/PLAN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ citybuilding/ geometry/ — 12 个具体图层 extends BaseLayer(各自只 ove
9898

9999
### 阶段 4 — 渲染管线收敛
100100

101-
- 4.1 厘清 6 入口`render()`总入口,分流 tile/multipass/single)→ `renderModels()`(single-pass model.draw)+ `renderMultiPass()`(multipass 编排);`renderMulPass`(阶段 0.2 已改名/降级)收为 `renderMultiPass` 内部助手;`renderLayers()`/`prerender()` 边界文档化
101+
- 4.1 ✅ 厘清入口`render()`单 pass 入口,tile 短路 + 空数据早退 + `renderModels`)与 `renderMultiPass()`(multipass 入口,`LayerService``enableMultiPassRenderer` 分流)边界 JSDoc 文档化;`renderModels()` 共享 `model.draw` 执行器、`renderLayers()` 重渲信号、`prerender()` 帧前钩子文档化;移除无调用方/非 `ILayer``@deprecated` `renderMulPass`(0.2 预告收口)
102102
- 4.2 `multiPassRenderer/postProcessingPassFactory/normalPassFactory` 初始化收敛到 `LayerModelManager`(阶段 1.2),消除 `init()``setMultiPass()` 两处分散初始化。
103103
- 4.3 `renderModels``encodeDataLength <= 0 && !forceRender` 空数据早退逻辑(1277)下沉到 manager 并加 spec(当前仅 TODO 注释保护 texture 超限)。
104104

packages/layers/src/core/BaseLayer.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,8 @@ export default class BaseLayer<ChildLayerStyleOptions = {}>
689689
}
690690

691691
/**
692-
* 渲染所有的图层
692+
* 触发 `layerService.reRender()` 批量重渲信号(非即时逐帧绘制),
693+
* 前后标记 `rendering` 防重入。供外部/插件请求重绘时使用。
693694
*/
694695
public renderLayers(): void {
695696
this.rendering = true;
@@ -704,6 +705,13 @@ export default class BaseLayer<ChildLayerStyleOptions = {}>
704705
*/
705706
prerender() {}
706707

708+
/**
709+
* 单 pass 渲染入口(`LayerService` 在未启用 `enableMultiPassRenderer`
710+
* 时调用)。分流顺序:瓦片图层短路委托 `tileLayer.render()`;否则经
711+
* `beforeRenderData` 通知 + 空数据早退(避免数据纹理空数据导致 texture
712+
* 超限),最后委托 {@link renderModels} 执行 `model.draw`。multipass
713+
* 路径由 `LayerService` 直接调用 {@link renderMultiPass},不经此方法。
714+
*/
707715
public render(options: Partial<IRenderOptions> = {}): ILayer {
708716
if (this.tileLayer) {
709717
// 瓦片图层执行单独的 render 渲染队列
@@ -720,9 +728,10 @@ export default class BaseLayer<ChildLayerStyleOptions = {}>
720728
}
721729

722730
/**
723-
* multipass 图层的公共渲染入口:有 multiPassRenderer 时委托其编排渲染,
724-
* 否则回退到 {@link renderModels} 单 pass 渲染。与已废弃的
725-
* {@link renderMulPass}(单个 renderer 的薄封装)区分。
731+
* multipass 图层的公共渲染入口(`LayerService` 在启用
732+
* `enableMultiPassRenderer` 时调用):有 `multiPassRenderer` 且其
733+
* `getRenderFlag()` 为真时委托其编排多 pass 渲染,否则回退到
734+
* {@link renderModels} 单 pass 渲染。空数据同样早退。
726735
*/
727736
public async renderMultiPass() {
728737
if (this.encodeDataLength <= 0 && !this.forceRender) {
@@ -1076,14 +1085,11 @@ export default class BaseLayer<ChildLayerStyleOptions = {}>
10761085
}
10771086

10781087
/**
1079-
* @deprecated 该方法不在 `ILayer` 公共接口中,且无内部调用方,仅为单个
1080-
* multipass renderer 的薄封装。新代码请使用 {@link renderMultiPass}(整图层
1081-
* 多 pass 渲染入口)。将在渲染管线收敛(阶段 4)时并入 `renderMultiPass`。
1088+
* 单 pass 渲染的共享 `model.draw` 执行器:空数据早退并 `clearModels()`
1089+
* 释放(同 texture 超限保护),否则触发 `hooks.beforeRender` 后逐
1090+
* `model.draw`(uniforms/blend/stencil/textures 取自 `layerModel`)。
1091+
* 被 {@link render}(单 pass)与 {@link renderMultiPass}(回退)复用。
10821092
*/
1083-
public async renderMulPass(multiPassRenderer: IMultiPassRenderer) {
1084-
await multiPassRenderer.render();
1085-
}
1086-
10871093
public renderModels(options: Partial<IRenderOptions> = {}) {
10881094
// TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题
10891095
if (this.encodeDataLength <= 0 && !this.forceRender) {

0 commit comments

Comments
 (0)