Skip to content

Commit 6f13c87

Browse files
authored
fix: fix terrain mask texture initialization and fix gl specs (#2636)
1 parent c2167d7 commit 6f13c87

File tree

3 files changed

+14
-13
lines changed

3 files changed

+14
-13
lines changed

packages/gl/src/layer/TileLayerGLRenderer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ class TileLayerGLRenderer2 extends TexturePoolable(CanvasCompatible(TileLayerRen
296296
blend: {
297297
enable: true,
298298
func: {
299-
src: 1,
299+
src: 'src alpha',
300300
dst: 'one minus src alpha'
301301
},
302302
equation: 'add'

packages/gl/src/layer/terrain/TerrainLayerRenderer.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ class TerrainLayerRenderer extends MaskRendererMixin(TileLayerRendererable(Layer
372372
if (!visitedSkinTiles.has(tileId)) {
373373
if (!cleared && skinImages[j].layer.hasTerrainMask) {
374374
//FIXME 潜在bug: 如果skinLayers中有多个 hasTerrainMask 的图层,其中一个clearMask并更新mask后,其他的terrainMask图层并没有更新mask
375-
this._clearMask(image);
375+
this._clearMask(image.mask);
376376
cleared = true;
377377
}
378378
skinImages[j].terrainMaskFBO = image.mask;
@@ -393,8 +393,8 @@ class TerrainLayerRenderer extends MaskRendererMixin(TileLayerRendererable(Layer
393393
}
394394
}
395395

396-
_clearMask(tileImage) {
397-
TERRAIN_MASK_CLEAR.framebuffer = tileImage.mask;
396+
_clearMask(maskFBO) {
397+
TERRAIN_MASK_CLEAR.framebuffer = maskFBO;
398398
this.device.clear(TERRAIN_MASK_CLEAR);
399399
}
400400

@@ -744,6 +744,7 @@ class TerrainLayerRenderer extends MaskRendererMixin(TileLayerRendererable(Layer
744744
fboInfo.depthStencil = this._terrainMaskDepthStencil;
745745
const texture = regl.framebuffer(fboInfo)
746746
texture.colorTex = color;
747+
this._clearMask(texture);
747748
// 单独创建的 color 必须要手动destroy回收,光destroy framebuffer,color是不会销毁的
748749
return texture;
749750
}

packages/gl/test/test.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ describe('gl tests', () => {
255255
setTimeout(() => {
256256
const canvas = map.getRenderer().canvas;
257257
const pixel = readPixel(canvas, canvas.width / 2, canvas.height / 2);
258-
expect(pixel).to.be.eql({ data: { '0': 170, '1': 85, '2': 0, '3': 191 } });
258+
expect(pixel).to.be.eql({ data: { '0': 169, '1': 86, '2': 0, '3': 95 } });
259259
done();
260260
}, 500);
261261
});
@@ -579,7 +579,7 @@ describe('gl tests', () => {
579579
group.on('layerload', () => {
580580
const canvas = map.getRenderer().canvas;
581581
const pixel = readPixel(canvas, canvas.width / 2, canvas.height / 2);
582-
expect(pixel).to.be.eql({ data: { '0': 138, '1': 142, '2': 143, '3': 255 } });
582+
expect(pixel).to.be.eql({ data: { '0': 136, '1': 140, '2': 141, '3': 255 } });
583583
done();
584584
});
585585
});
@@ -616,7 +616,7 @@ describe('gl tests', () => {
616616
group.once('layerload', () => {
617617
const canvas = map.getRenderer().canvas;
618618
const pixel = readPixel(canvas, canvas.width / 2, canvas.height / 2);
619-
expect(pixel).to.be.eql({ data: { '0': 139, '1': 143, '2': 145, '3': 127 } });
619+
expect(pixel).to.be.eql({ data: { '0': 137, '1': 141, '2': 143, '3': 127 } });
620620
done();
621621
});
622622
});
@@ -650,7 +650,7 @@ describe('gl tests', () => {
650650
group.once('layerload', () => {
651651
const canvas = group.getRenderer().canvas;
652652
const pixel = readPixel(canvas, canvas.width / 2, canvas.height / 2);
653-
expect(pixel).to.be.eql({ data: { '0': 138, '1': 142, '2': 143, '3': 255 }});
653+
expect(pixel).to.be.eql({ data: { '0': 136, '1': 140, '2': 141, '3': 255 }});
654654
done();
655655
});
656656
});
@@ -951,7 +951,7 @@ describe('gl tests', () => {
951951
setTimeout(() => {
952952
const canvas = map.getRenderer().canvas;
953953
const pixel = readPixel(canvas, canvas.width / 2, canvas.height / 2);
954-
expect(pixel).to.be.eql({ data: { '0': 138, '1': 142, '2': 143, '3': 255 } });
954+
expect(pixel).to.be.eql({ data: { '0': 136, '1': 140, '2': 141, '3': 255 } });
955955
done();
956956
}, 1000);
957957
}, 2000);
@@ -1092,7 +1092,7 @@ describe('gl tests', () => {
10921092
group.once('layerload', () => {
10931093
const canvas = map.getRenderer().canvas;
10941094
const pixel = readPixel(canvas, canvas.width / 2, canvas.height / 2 + 1);
1095-
expect(pixel).to.be.eql({ data: { '0': 97, '1': 96, '2': 89, '3': 255 } });
1095+
expect(pixel).to.be.eql({ data: { '0': 85, '1': 85, '2': 79, '3': 255 } });
10961096
done();
10971097
});
10981098
});
@@ -1945,7 +1945,7 @@ describe('gl tests', () => {
19451945
group.once('layerload', () => {
19461946
const canvas = map.getRenderer().canvas;
19471947
const pixel = readPixel(canvas, canvas.width / 2, canvas.height / 2);
1948-
expect(pixel).to.be.eql({ data: { '0': 138, '1': 142, '2': 143, '3': 255 } });
1948+
expect(pixel).to.be.eql({ data: { '0': 136, '1': 140, '2': 141, '3': 255 } });
19491949
done();
19501950
});
19511951
});
@@ -2126,9 +2126,9 @@ describe('gl tests', () => {
21262126
group.once('layerload', () => {
21272127
const canvas = map.getRenderer().canvas;
21282128
const pixel1 = readPixel(canvas, canvas.width / 2, canvas.height / 2);
2129-
expect(pixel1).to.be.eql({ data: { '0': 70, '1': 133, '2': 195, '3': 255 } });
2129+
expect(pixel1).to.be.eql({ data: { '0': 68, '1': 128, '2': 185, '3': 255 } });
21302130
const pixel2 = readPixel(canvas, canvas.width / 2, canvas.height / 2 + 250);
2131-
expect(pixel2).to.be.eql({ data: {'0': 92, '1': 90, '2': 77, '3': 255 } });
2131+
expect(pixel2).to.be.eql({ data: {'0': 125, '1': 115, '2': 95, '3': 255 } });
21322132
done();
21332133
});
21342134
});

0 commit comments

Comments
 (0)