Skip to content

Commit 61336f7

Browse files
authored
[v9] CollisionFilterExtension (#8255)
1 parent ba63823 commit 61336f7

File tree

4 files changed

+12
-14
lines changed

4 files changed

+12
-14
lines changed

modules/extensions/src/collision-filter/collision-filter-effect.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ export default class CollisionFilterEffect implements Effect {
247247
const depthBuffer = new WEBGLRenderbuffer(
248248
// @ts-expect-error TODO v9 needs to be WebGLDevice
249249
device,
250-
{format: 'depth16', width, height}
250+
{format: 'depth16unorm', width, height}
251251
);
252252
this.collisionFBOs[collisionGroup] = device.createFramebuffer({
253253
id: `collision-${collisionGroup}`,
@@ -261,12 +261,9 @@ export default class CollisionFilterEffect implements Effect {
261261

262262
destroyFBO(collisionGroup: string) {
263263
const fbo = this.collisionFBOs[collisionGroup];
264-
// @ts-expect-error
265-
const attachments = fbo.attachments as Texture[];
266-
for (const attachment of Object.values(attachments)) {
267-
attachment.delete();
268-
}
269-
fbo.delete();
264+
fbo.colorAttachments[0]?.destroy();
265+
fbo.depthStencilAttachment?.destroy();
266+
fbo.destroy();
270267
delete this.collisionFBOs[collisionGroup];
271268
}
272269
}

modules/extensions/src/collision-filter/collision-filter-pass.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,18 @@ type CollisionFilterPassRenderOptions = LayersPassRenderOptions & {};
77
export default class CollisionFilterPass extends LayersPass {
88
renderCollisionMap(target: Framebuffer, options: CollisionFilterPassRenderOptions) {
99
const padding = 1;
10+
const clearColor = [0, 0, 0, 0];
1011

1112
return withGLParameters(
1213
this.device,
1314
{
1415
scissorTest: true,
1516
scissor: [padding, padding, target.width - 2 * padding, target.height - 2 * padding],
16-
clearColor: [0, 0, 0, 0],
1717
blend: false,
1818
depthTest: true,
1919
depthRange: [0, 1]
2020
},
21-
() => this.render({...options, target, pass: 'collision'})
21+
() => this.render({...options, clearColor, target, pass: 'collision'})
2222
);
2323
}
2424

modules/extensions/src/collision-filter/shader-module.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ type CollisionModuleSettings = {
8989
};
9090

9191
/* eslint-disable camelcase */
92-
type CollisionUniforms = {collision_sort?: boolean; collision_texture?: Framebuffer | Texture};
92+
type CollisionUniforms = {collision_sort?: boolean; collision_texture?: Texture};
9393

9494
const getCollisionUniforms = (
9595
opts: CollisionModuleSettings | {},
@@ -101,7 +101,8 @@ const getCollisionUniforms = (
101101
const {collisionFBO, drawToCollisionMap, dummyCollisionMap} = opts;
102102
return {
103103
collision_sort: Boolean(drawToCollisionMap),
104-
collision_texture: !drawToCollisionMap && collisionFBO ? collisionFBO : dummyCollisionMap
104+
collision_texture:
105+
!drawToCollisionMap && collisionFBO ? collisionFBO.colorAttachments[0] : dummyCollisionMap
105106
};
106107
};
107108

@@ -112,4 +113,4 @@ export default {
112113
vs,
113114
inject,
114115
getUniforms: getCollisionUniforms
115-
} as ShaderModule;
116+
} as ShaderModule<CollisionModuleSettings>;

test/apps/collision/app.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import DeckGL from '@deck.gl/react';
66
import {OPERATION} from '@deck.gl/core';
77
import {GeoJsonLayer, SolidPolygonLayer, TextLayer} from '@deck.gl/layers';
88
import {CollisionFilterExtension, MaskExtension} from '@deck.gl/extensions';
9-
import {cartoVectorTableSource, VectorTileLayer} from '@deck.gl/carto';
9+
import {VectorTileLayer, vectorTableSource} from '@deck.gl/carto';
1010

1111
const accessToken = 'XXX';
1212
const MAP_STYLE = 'https://basemaps.cartocdn.com/gl/voyager-nolabels-gl-style/style.json';
@@ -17,7 +17,7 @@ const PLACES =
1717
const US_STATES =
1818
'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_110m_admin_1_states_provinces_shp.geojson'; //eslint-disable-line
1919

20-
const cartoData = cartoVectorTableSource({
20+
const cartoData = vectorTableSource({
2121
accessToken,
2222
connectionName: 'bigquery',
2323
tableName: 'cartobq.public_account.populated_places'

0 commit comments

Comments
 (0)