@deck.gl/extensions 8.9.0-beta.1 → 8.9.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.dev.js +285 -464
- package/dist/es5/clip/clip.js.map +1 -1
- package/dist/es5/{collide/collide-effect.js → collision-filter/collision-filter-effect.js} +81 -73
- package/dist/es5/collision-filter/collision-filter-effect.js.map +1 -0
- package/dist/es5/{collide/collide-pass.js → collision-filter/collision-filter-pass.js} +13 -13
- package/dist/es5/collision-filter/collision-filter-pass.js.map +1 -0
- package/dist/es5/{collide/collide.js → collision-filter/collision-filter.js} +30 -30
- package/dist/es5/collision-filter/collision-filter.js.map +1 -0
- package/dist/es5/collision-filter/shader-module.js +39 -0
- package/dist/es5/collision-filter/shader-module.js.map +1 -0
- package/dist/es5/data-filter/shader-module.js.map +1 -1
- package/dist/es5/index.js +4 -4
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/mask/mask-effect.js +16 -9
- package/dist/es5/mask/mask-effect.js.map +1 -1
- package/dist/es5/terrain/height-map-builder.js +1 -1
- package/dist/es5/terrain/height-map-builder.js.map +1 -1
- package/dist/es5/terrain/shader-module.js.map +1 -1
- package/dist/es5/terrain/terrain-cover.js +1 -1
- package/dist/es5/terrain/terrain-cover.js.map +1 -1
- package/dist/es5/terrain/terrain-effect.js +7 -7
- package/dist/es5/terrain/terrain-effect.js.map +1 -1
- package/dist/es5/terrain/terrain.js +7 -7
- package/dist/es5/terrain/terrain.js.map +1 -1
- package/dist/es5/{common → utils}/projection-utils.js +3 -1
- package/dist/es5/utils/projection-utils.js.map +1 -0
- package/dist/esm/clip/clip.js.map +1 -1
- package/dist/esm/{collide/collide-effect.js → collision-filter/collision-filter-effect.js} +72 -66
- package/dist/esm/collision-filter/collision-filter-effect.js.map +1 -0
- package/dist/esm/{collide/collide-pass.js → collision-filter/collision-filter-pass.js} +5 -5
- package/dist/esm/collision-filter/collision-filter-pass.js.map +1 -0
- package/dist/esm/collision-filter/collision-filter.js +78 -0
- package/dist/esm/collision-filter/collision-filter.js.map +1 -0
- package/dist/esm/collision-filter/shader-module.js +32 -0
- package/dist/esm/collision-filter/shader-module.js.map +1 -0
- package/dist/esm/data-filter/shader-module.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mask/mask-effect.js +15 -9
- package/dist/esm/mask/mask-effect.js.map +1 -1
- package/dist/esm/terrain/height-map-builder.js +1 -1
- package/dist/esm/terrain/height-map-builder.js.map +1 -1
- package/dist/esm/terrain/shader-module.js.map +1 -1
- package/dist/esm/terrain/terrain-cover.js +1 -1
- package/dist/esm/terrain/terrain-cover.js.map +1 -1
- package/dist/esm/terrain/terrain-effect.js +6 -7
- package/dist/esm/terrain/terrain-effect.js.map +1 -1
- package/dist/esm/terrain/terrain.js +7 -7
- package/dist/esm/terrain/terrain.js.map +1 -1
- package/dist/esm/{common → utils}/projection-utils.js +3 -1
- package/dist/esm/utils/projection-utils.js.map +1 -0
- package/dist.min.js +59 -62
- package/package.json +2 -2
- package/src/clip/clip.ts +1 -1
- package/src/{collide/collide-effect.ts → collision-filter/collision-filter-effect.ts} +83 -79
- package/src/{collide/collide-pass.ts → collision-filter/collision-filter-pass.ts} +6 -6
- package/src/collision-filter/collision-filter.ts +83 -0
- package/src/collision-filter/shader-module.ts +113 -0
- package/src/data-filter/shader-module.ts +1 -1
- package/src/index.ts +3 -3
- package/src/mask/mask-effect.ts +23 -14
- package/src/terrain/height-map-builder.ts +2 -2
- package/src/terrain/shader-module.ts +4 -1
- package/src/terrain/terrain-cover.ts +2 -2
- package/src/terrain/terrain-effect.ts +6 -7
- package/src/terrain/terrain.ts +10 -10
- package/src/{common → utils}/projection-utils.ts +4 -2
- package/typed/clip/clip.d.ts +4 -1
- package/typed/clip/clip.d.ts.map +1 -1
- package/typed/collide/collide-effect.d.ts +1 -1
- package/typed/collide/collide-effect.d.ts.map +1 -1
- package/typed/collision-filter/collision-filter-effect.d.ts +28 -0
- package/typed/collision-filter/collision-filter-effect.d.ts.map +1 -0
- package/typed/collision-filter/collision-filter-pass.d.ts +14 -0
- package/typed/collision-filter/collision-filter-pass.d.ts.map +1 -0
- package/typed/collision-filter/collision-filter.d.ts +41 -0
- package/typed/collision-filter/collision-filter.d.ts.map +1 -0
- package/typed/collision-filter/shader-module.d.ts +4 -0
- package/typed/collision-filter/shader-module.d.ts.map +1 -0
- package/typed/data-filter/shader-module.d.ts.map +1 -1
- package/typed/index.d.ts +3 -3
- package/typed/index.d.ts.map +1 -1
- package/typed/mask/mask-effect.d.ts +3 -3
- package/typed/mask/mask-effect.d.ts.map +1 -1
- package/typed/terrain/height-map-builder.d.ts +2 -2
- package/typed/terrain/height-map-builder.d.ts.map +1 -1
- package/typed/terrain/height-map.d.ts +1 -1
- package/typed/terrain/shader-module.d.ts +1 -1
- package/typed/terrain/shader-module.d.ts.map +1 -1
- package/typed/terrain/terrain-cover.d.ts +2 -2
- package/typed/terrain/terrain-cover.d.ts.map +1 -1
- package/typed/terrain/terrain-effect.d.ts.map +1 -1
- package/typed/terrain/terrain.d.ts +2 -2
- package/typed/terrain/terrain.d.ts.map +1 -1
- package/typed/utils/projection-utils.d.ts +27 -0
- package/typed/utils/projection-utils.d.ts.map +1 -0
- package/dist/es5/collide/collide-effect.js.map +0 -1
- package/dist/es5/collide/collide-pass.js.map +0 -1
- package/dist/es5/collide/collide.js.map +0 -1
- package/dist/es5/collide/shader-module.js +0 -39
- package/dist/es5/collide/shader-module.js.map +0 -1
- package/dist/es5/common/projection-utils.js.map +0 -1
- package/dist/es5/mask/utils.js +0 -136
- package/dist/es5/mask/utils.js.map +0 -1
- package/dist/esm/collide/collide-effect.js.map +0 -1
- package/dist/esm/collide/collide-pass.js.map +0 -1
- package/dist/esm/collide/collide.js +0 -78
- package/dist/esm/collide/collide.js.map +0 -1
- package/dist/esm/collide/shader-module.js +0 -32
- package/dist/esm/collide/shader-module.js.map +0 -1
- package/dist/esm/common/projection-utils.js.map +0 -1
- package/dist/esm/mask/utils.js +0 -109
- package/dist/esm/mask/utils.js.map +0 -1
- package/src/collide/collide.ts +0 -79
- package/src/collide/shader-module.ts +0 -113
- package/src/mask/utils.ts +0 -148
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {Framebuffer} from '@luma.gl/core';
|
|
2
|
-
import {joinLayerBounds, getRenderBounds, makeViewport, Bounds} from '../
|
|
2
|
+
import {joinLayerBounds, getRenderBounds, makeViewport, Bounds} from '../utils/projection-utils';
|
|
3
3
|
import {createRenderTarget} from './utils';
|
|
4
4
|
|
|
5
5
|
import type {Viewport, Layer} from '@deck.gl/core';
|
|
@@ -10,7 +10,7 @@ const MAP_MAX_SIZE = 2048;
|
|
|
10
10
|
* Manages the lifecycle of the height map (a framebuffer that encodes elevation).
|
|
11
11
|
* One instance of height map is is shared across all layers. It is updated when the viewport changes
|
|
12
12
|
* or when some terrain source layer's data changes.
|
|
13
|
-
* During the draw call of any
|
|
13
|
+
* During the draw call of any terrainDrawMode:offset layers,
|
|
14
14
|
* the vertex shader reads from this framebuffer to retrieve its z offset.
|
|
15
15
|
*/
|
|
16
16
|
export class HeightMapBuilder {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
/* eslint-disable camelcase */
|
|
2
|
+
|
|
1
3
|
import {project} from '@deck.gl/core';
|
|
2
4
|
import type {_ShaderModule as ShaderModule} from '@deck.gl/core';
|
|
3
5
|
|
|
4
6
|
import type {Texture2D} from '@luma.gl/core';
|
|
5
|
-
import type {Bounds} from '../
|
|
7
|
+
import type {Bounds} from '../utils/projection-utils';
|
|
6
8
|
import type {TerrainCover} from './terrain-cover';
|
|
7
9
|
|
|
8
10
|
/** Module parameters expected by the terrain shader module */
|
|
@@ -98,6 +100,7 @@ if ((terrain_mode == TERRAIN_MODE_USE_COVER) || (terrain_mode == TERRAIN_MODE_US
|
|
|
98
100
|
}
|
|
99
101
|
`
|
|
100
102
|
},
|
|
103
|
+
// eslint-disable-next-line complexity
|
|
101
104
|
getUniforms: (opts = {}, uniforms) => {
|
|
102
105
|
if ('dummyHeightMap' in opts) {
|
|
103
106
|
const {
|
|
@@ -3,7 +3,7 @@ import {Framebuffer} from '@luma.gl/core';
|
|
|
3
3
|
import type {Layer, Viewport} from '@deck.gl/core';
|
|
4
4
|
|
|
5
5
|
import {createRenderTarget} from './utils';
|
|
6
|
-
import {joinLayerBounds, makeViewport, getRenderBounds, Bounds} from '../
|
|
6
|
+
import {joinLayerBounds, makeViewport, getRenderBounds, Bounds} from '../utils/projection-utils';
|
|
7
7
|
|
|
8
8
|
// TODO - import from loaders when Tileset2D is split out
|
|
9
9
|
type GeoBoundingBox = {west: number; north: number; east: number; south: number};
|
|
@@ -15,7 +15,7 @@ type Tile2DHeader = {
|
|
|
15
15
|
/**
|
|
16
16
|
* Manages the lifecycle of the terrain cover (draped textures over a terrain mesh).
|
|
17
17
|
* One terrain cover is created for each unique terrain layer (primitive layer with operation:terrain).
|
|
18
|
-
* It is updated when the terrain source layer's mesh changes or when any of the
|
|
18
|
+
* It is updated when the terrain source layer's mesh changes or when any of the terrainDrawMode:drape
|
|
19
19
|
* layers requires redraw.
|
|
20
20
|
* During the draw call of a terrain layer, the drape texture is overlaid on top of the layer's own color.
|
|
21
21
|
*/
|
|
@@ -65,8 +65,7 @@ export class TerrainEffect implements Effect {
|
|
|
65
65
|
return;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
const {viewports,
|
|
69
|
-
const isPicking = pass.startsWith('picking');
|
|
68
|
+
const {viewports, isPicking = false} = opts;
|
|
70
69
|
this.isPicking = isPicking;
|
|
71
70
|
this.isDrapingEnabled = true;
|
|
72
71
|
|
|
@@ -83,26 +82,26 @@ export class TerrainEffect implements Effect {
|
|
|
83
82
|
}
|
|
84
83
|
|
|
85
84
|
if (!isPicking) {
|
|
86
|
-
const offsetLayers = layers.filter(l => l.state.
|
|
85
|
+
const offsetLayers = layers.filter(l => l.state.terrainDrawMode === 'offset');
|
|
87
86
|
if (offsetLayers.length > 0) {
|
|
88
87
|
this._updateHeightMap(terrainLayers, viewport, opts);
|
|
89
88
|
}
|
|
90
89
|
}
|
|
91
90
|
|
|
92
|
-
const drapeLayers = layers.filter(l => l.state.
|
|
91
|
+
const drapeLayers = layers.filter(l => l.state.terrainDrawMode === 'drape');
|
|
93
92
|
this._updateTerrainCovers(terrainLayers, drapeLayers, viewport, opts);
|
|
94
93
|
}
|
|
95
94
|
|
|
96
95
|
getModuleParameters(layer: Layer): TerrainModuleSettings {
|
|
97
|
-
const {
|
|
96
|
+
const {terrainDrawMode} = layer.state;
|
|
98
97
|
|
|
99
98
|
return {
|
|
100
99
|
heightMap: this.heightMap?.getRenderFramebuffer(),
|
|
101
100
|
heightMapBounds: this.heightMap?.bounds,
|
|
102
101
|
dummyHeightMap: this.dummyHeightMap,
|
|
103
102
|
terrainCover: this.isDrapingEnabled ? this.terrainCovers.get(layer.id) : null,
|
|
104
|
-
useTerrainHeightMap:
|
|
105
|
-
terrainSkipRender:
|
|
103
|
+
useTerrainHeightMap: terrainDrawMode === 'offset',
|
|
104
|
+
terrainSkipRender: terrainDrawMode === 'drape' || !layer.props.operation.includes('draw')
|
|
106
105
|
};
|
|
107
106
|
}
|
|
108
107
|
|
package/src/terrain/terrain.ts
CHANGED
|
@@ -5,7 +5,7 @@ import {terrainModule} from './shader-module';
|
|
|
5
5
|
import type {Layer} from '@deck.gl/core';
|
|
6
6
|
|
|
7
7
|
const defaultProps = {
|
|
8
|
-
|
|
8
|
+
terrainDrawMode: undefined
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
export type TerrainExtensionProps = {
|
|
@@ -13,12 +13,12 @@ export type TerrainExtensionProps = {
|
|
|
13
13
|
* controls whether an object is drawn over the terrain surface by its anchor (usually defined by an accessor called `getPosition`, e.g. icon, scatterplot) or by its geometry (e.g. path, polygon).
|
|
14
14
|
* If not specified, it is automatically deduced from the layer.
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
terrainDrawMode?: 'offset' | 'drape';
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
type TerrainExtensionState = {
|
|
20
20
|
/** Resolved fitting mode */
|
|
21
|
-
|
|
21
|
+
terrainDrawMode: 'offset' | 'drape';
|
|
22
22
|
/** Set when a layer is flagged as needs redraw */
|
|
23
23
|
terrainCoverNeedsRedraw: boolean;
|
|
24
24
|
};
|
|
@@ -45,29 +45,29 @@ export default class TerrainExtension extends LayerExtension {
|
|
|
45
45
|
const {props, oldProps} = params;
|
|
46
46
|
|
|
47
47
|
if (
|
|
48
|
-
this.state.
|
|
49
|
-
props.
|
|
48
|
+
this.state.terrainDrawMode &&
|
|
49
|
+
props.terrainDrawMode === oldProps.terrainDrawMode &&
|
|
50
50
|
// @ts-ignore `extruded` may not exist in props
|
|
51
51
|
props.extruded === oldProps.extruded
|
|
52
52
|
) {
|
|
53
53
|
return;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
let {
|
|
57
|
-
if (!
|
|
56
|
+
let {terrainDrawMode} = props;
|
|
57
|
+
if (!terrainDrawMode) {
|
|
58
58
|
// props.extruded is used as an indication that the layer is 2.5D
|
|
59
59
|
// @ts-ignore `extruded` may not exist in props
|
|
60
60
|
const is3d = this.props.extruded as boolean;
|
|
61
61
|
const attributes = this.getAttributeManager()?.attributes;
|
|
62
62
|
const hasAnchor = attributes && 'instancePositions' in attributes;
|
|
63
|
-
|
|
63
|
+
terrainDrawMode = is3d || hasAnchor ? 'offset' : 'drape';
|
|
64
64
|
}
|
|
65
|
-
this.setState({
|
|
65
|
+
this.setState({terrainDrawMode});
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
onNeedsRedraw(this: Layer<{}>): void {
|
|
69
69
|
const state = this.state as TerrainExtensionState;
|
|
70
|
-
if (state.
|
|
70
|
+
if (state.terrainDrawMode === 'drape') {
|
|
71
71
|
state.terrainCoverNeedsRedraw = true;
|
|
72
72
|
}
|
|
73
73
|
}
|
|
@@ -65,17 +65,19 @@ export function makeViewport(opts: {
|
|
|
65
65
|
0
|
|
66
66
|
]);
|
|
67
67
|
|
|
68
|
-
const maxSize = MAX_VIEWPORT_SIZE - border * 2;
|
|
69
68
|
let {width, height, zoom} = opts;
|
|
70
69
|
if (zoom === undefined) {
|
|
71
70
|
// Use width and height to determine zoom
|
|
72
|
-
|
|
71
|
+
width = width! - border * 2;
|
|
72
|
+
height = height! - border * 2;
|
|
73
|
+
const scale = Math.min(width / (bounds[2] - bounds[0]), height / (bounds[3] - bounds[1]));
|
|
73
74
|
zoom = Math.min(Math.log2(scale), 20);
|
|
74
75
|
} else if (!width || !height) {
|
|
75
76
|
// Use zoom to determine width and height
|
|
76
77
|
const scale = 2 ** zoom;
|
|
77
78
|
width = Math.round(Math.abs(bounds[2] - bounds[0]) * scale);
|
|
78
79
|
height = Math.round(Math.abs(bounds[3] - bounds[1]) * scale);
|
|
80
|
+
const maxSize = MAX_VIEWPORT_SIZE - border * 2;
|
|
79
81
|
if (width > maxSize || height > maxSize) {
|
|
80
82
|
const r = maxSize / Math.max(width, height);
|
|
81
83
|
width = Math.round(width * r);
|
package/typed/clip/clip.d.ts
CHANGED
|
@@ -13,7 +13,10 @@ export declare type ClipExtensionProps = {
|
|
|
13
13
|
};
|
|
14
14
|
/** Adds support for clipping rendered layers by rectangular bounds. */
|
|
15
15
|
export default class ClipExtension extends LayerExtension {
|
|
16
|
-
static defaultProps:
|
|
16
|
+
static defaultProps: {
|
|
17
|
+
clipBounds: number[];
|
|
18
|
+
clipByInstance: undefined;
|
|
19
|
+
};
|
|
17
20
|
static extensionName: string;
|
|
18
21
|
getShaders(this: Layer<ClipExtensionProps>): {
|
|
19
22
|
modules: ShaderModule<any>[];
|
package/typed/clip/clip.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clip.d.ts","sourceRoot":"","sources":["../../src/clip/clip.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAC,cAAc,EAAE,aAAa,IAAI,YAAY,EAAC,MAAM,eAAe,CAAC;AAE5E,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AAOzC,oBAAY,kBAAkB,GAAG;IAC/B;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AA0DF,uEAAuE;AACvE,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,cAAc;IACvD,MAAM,CAAC,YAAY
|
|
1
|
+
{"version":3,"file":"clip.d.ts","sourceRoot":"","sources":["../../src/clip/clip.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAC,cAAc,EAAE,aAAa,IAAI,YAAY,EAAC,MAAM,eAAe,CAAC;AAE5E,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AAOzC,oBAAY,kBAAkB,GAAG;IAC/B;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AA0DF,uEAAuE;AACvE,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,cAAc;IACvD,MAAM,CAAC,YAAY;;;MAAgB;IACnC,MAAM,CAAC,aAAa,SAAmB;IAEvC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,kBAAkB,CAAC;;;;;;;;;IAyB1C,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAAC,QAAQ,EAAC,EAAE,GAAG,GAAG,IAAI;CAgBvE"}
|
|
@@ -10,7 +10,7 @@ export default class CollideEffect implements Effect {
|
|
|
10
10
|
private collideFBOs;
|
|
11
11
|
private dummyCollideMap?;
|
|
12
12
|
private lastViewport?;
|
|
13
|
-
preRender(gl: WebGLRenderingContext, { effects: allEffects, layers, layerFilter, viewports, onViewportActive, views,
|
|
13
|
+
preRender(gl: WebGLRenderingContext, { effects: allEffects, layers, layerFilter, viewports, onViewportActive, views, isPicking, preRenderStats }: PreRenderOptions): void;
|
|
14
14
|
private _render;
|
|
15
15
|
/**
|
|
16
16
|
* Group layers by collideGroup
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collide-effect.d.ts","sourceRoot":"","sources":["../../src/collide/collide-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAgB,SAAS,EAAmB,MAAM,eAAe,CAAC;AAGrF,OAAO,KAAK,EAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAW,MAAM,eAAe,CAAC;AAoB7E,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,MAAM;IAClD,EAAE,SAAoB;IACtB,KAAK,OAAQ;IACb,YAAY,UAAQ;IACpB,KAAK,SAAK;IAEV,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,eAAe,CAAC,CAAY;IACpC,OAAO,CAAC,YAAY,CAAC,CAAW;IAEhC,SAAS,CACP,EAAE,EAAE,qBAAqB,EACzB,EACE,OAAO,EAAE,UAAU,EACnB,MAAM,EACN,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,
|
|
1
|
+
{"version":3,"file":"collide-effect.d.ts","sourceRoot":"","sources":["../../src/collide/collide-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAgB,SAAS,EAAmB,MAAM,eAAe,CAAC;AAGrF,OAAO,KAAK,EAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAW,MAAM,eAAe,CAAC;AAoB7E,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,MAAM;IAClD,EAAE,SAAoB;IACtB,KAAK,OAAQ;IACb,YAAY,UAAQ;IACpB,KAAK,SAAK;IAEV,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,eAAe,CAAC,CAAY;IACpC,OAAO,CAAC,YAAY,CAAC,CAAW;IAEhC,SAAS,CACP,EAAE,EAAE,qBAAqB,EACzB,EACE,OAAO,EAAE,UAAU,EACnB,MAAM,EACN,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,SAAS,EACT,cAAmB,EACpB,EAAE,gBAAgB,GAClB,IAAI;IAuDP,OAAO,CAAC,OAAO;IA0Df;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAsC5B,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG;QACjC,UAAU,EAAE,WAAW,CAAC;QACxB,eAAe,EAAE,SAAS,CAAC;KAC5B;IAMD,OAAO,IAAI,IAAI;IAaf,SAAS,CAAC,EAAE,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM;IAyBzD,UAAU,CAAC,YAAY,EAAE,MAAM;CAQhC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Framebuffer, Texture2D } from '@luma.gl/core';
|
|
2
|
+
import type { Effect, Layer, PreRenderOptions } from '@deck.gl/core/typed';
|
|
3
|
+
export default class CollisionFilterEffect implements Effect {
|
|
4
|
+
id: string;
|
|
5
|
+
props: null;
|
|
6
|
+
useInPicking: boolean;
|
|
7
|
+
order: number;
|
|
8
|
+
private channels;
|
|
9
|
+
private collisionFilterPass?;
|
|
10
|
+
private collisionFBOs;
|
|
11
|
+
private dummyCollisionMap?;
|
|
12
|
+
private lastViewport?;
|
|
13
|
+
preRender(gl: WebGLRenderingContext, { effects: allEffects, layers, layerFilter, viewports, onViewportActive, views, isPicking, preRenderStats }: PreRenderOptions): void;
|
|
14
|
+
private _render;
|
|
15
|
+
/**
|
|
16
|
+
* Group layers by collisionGroup
|
|
17
|
+
* Returns a map from collisionGroup to render info
|
|
18
|
+
*/
|
|
19
|
+
private _groupByCollisionGroup;
|
|
20
|
+
getModuleParameters(layer: Layer): {
|
|
21
|
+
collisionFBO: Framebuffer;
|
|
22
|
+
dummyCollisionMap: Texture2D;
|
|
23
|
+
};
|
|
24
|
+
cleanup(): void;
|
|
25
|
+
createFBO(gl: WebGLRenderingContext, collisionGroup: string): void;
|
|
26
|
+
destroyFBO(collisionGroup: string): void;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=collision-filter-effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collision-filter-effect.d.ts","sourceRoot":"","sources":["../../src/collision-filter/collision-filter-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAgB,SAAS,EAAmB,MAAM,eAAe,CAAC;AAGrF,OAAO,KAAK,EAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAW,MAAM,eAAe,CAAC;AAoB7E,MAAM,CAAC,OAAO,OAAO,qBAAsB,YAAW,MAAM;IAC1D,EAAE,SAA6B;IAC/B,KAAK,OAAQ;IACb,YAAY,UAAQ;IACpB,KAAK,SAAK;IAEV,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,mBAAmB,CAAC,CAAsB;IAClD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,iBAAiB,CAAC,CAAY;IACtC,OAAO,CAAC,YAAY,CAAC,CAAW;IAEhC,SAAS,CACP,EAAE,EAAE,qBAAqB,EACzB,EACE,OAAO,EAAE,UAAU,EACnB,MAAM,EACN,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,SAAS,EACT,cAAmB,EACpB,EAAE,gBAAgB,GAClB,IAAI;IAuDP,OAAO,CAAC,OAAO;IA8Df;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAqC9B,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG;QACjC,YAAY,EAAE,WAAW,CAAC;QAC1B,iBAAiB,EAAE,SAAS,CAAC;KAC9B;IAMD,OAAO,IAAI,IAAI;IAaf,SAAS,CAAC,EAAE,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM;IAyB3D,UAAU,CAAC,cAAc,EAAE,MAAM;CAQlC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Framebuffer } from '@luma.gl/core';
|
|
2
|
+
import { _LayersPass as LayersPass, LayersPassRenderOptions } from '@deck.gl/core/typed';
|
|
3
|
+
declare type CollisionFilterPassRenderOptions = LayersPassRenderOptions & {};
|
|
4
|
+
export default class CollisionFilterPass extends LayersPass {
|
|
5
|
+
renderCollisionMap(target: Framebuffer, options: CollisionFilterPassRenderOptions): any;
|
|
6
|
+
getModuleParameters(): {
|
|
7
|
+
drawToCollisionMap: boolean;
|
|
8
|
+
pickingActive: number;
|
|
9
|
+
pickingAttribute: boolean;
|
|
10
|
+
lightSources: {};
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=collision-filter-pass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collision-filter-pass.d.ts","sourceRoot":"","sources":["../../src/collision-filter/collision-filter-pass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAiB,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAC,WAAW,IAAI,UAAU,EAAE,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAEjF,aAAK,gCAAgC,GAAG,uBAAuB,GAAG,EAAE,CAAC;AAErE,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,UAAU;IACzD,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,gCAAgC;IAmBjF,mBAAmB;;;;;;CASpB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Accessor, Layer, LayerContext, LayerExtension } from '@deck.gl/core/typed';
|
|
2
|
+
export declare type CollisionFilterExtensionProps<DataT = any> = {
|
|
3
|
+
/**
|
|
4
|
+
* Accessor for collision priority. Must return a number in the range -1000 -> 1000. Features with higher values are shown preferentially.
|
|
5
|
+
*/
|
|
6
|
+
getCollisionPriority?: Accessor<DataT, number>;
|
|
7
|
+
/**
|
|
8
|
+
* Enable/disable collisions. If collisions are disabled, all objects are rendered.
|
|
9
|
+
* @default true
|
|
10
|
+
*/
|
|
11
|
+
collisionEnabled: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Collision group this layer belongs to. If it is not set, the 'default' collision group is used
|
|
14
|
+
*/
|
|
15
|
+
collisionGroup?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Props to override when rendering collision map
|
|
18
|
+
*/
|
|
19
|
+
collisionTestProps?: {};
|
|
20
|
+
};
|
|
21
|
+
/** Allows layers to hide overlapping objects. */
|
|
22
|
+
export default class CollisionFilterExtension extends LayerExtension {
|
|
23
|
+
static defaultProps: {
|
|
24
|
+
getCollisionPriority: {
|
|
25
|
+
type: string;
|
|
26
|
+
value: number;
|
|
27
|
+
};
|
|
28
|
+
collisionEnabled: boolean;
|
|
29
|
+
collisionGroup: {
|
|
30
|
+
type: string;
|
|
31
|
+
value: string;
|
|
32
|
+
};
|
|
33
|
+
collisionTestProps: {};
|
|
34
|
+
};
|
|
35
|
+
static extensionName: string;
|
|
36
|
+
getShaders(this: Layer<CollisionFilterExtensionProps>): any;
|
|
37
|
+
draw(this: Layer<CollisionFilterExtensionProps>, { uniforms, context, moduleParameters }: any): void;
|
|
38
|
+
initializeState(this: Layer<CollisionFilterExtensionProps>, context: LayerContext, extension: this): void;
|
|
39
|
+
getNeedsPickingBuffer(this: Layer<CollisionFilterExtensionProps>): boolean;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=collision-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collision-filter.d.ts","sourceRoot":"","sources":["../../src/collision-filter/collision-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AAW5E,oBAAY,6BAA6B,CAAC,KAAK,GAAG,GAAG,IAAI;IACvD;;OAEG;IACH,oBAAoB,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE/C;;;OAGG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,kBAAkB,CAAC,EAAE,EAAE,CAAC;CACzB,CAAC;AAEF,iDAAiD;AACjD,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,cAAc;IAClE,MAAM,CAAC,YAAY;;;;;;;;;;;MAAgB;IACnC,MAAM,CAAC,aAAa,SAA8B;IAElD,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,6BAA6B,CAAC,GAAG,GAAG;IAK3D,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,6BAA6B,CAAC,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAC,EAAE,GAAG;IAa3F,eAAe,CACb,IAAI,EAAE,KAAK,CAAC,6BAA6B,CAAC,EAC1C,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,IAAI;IAmBjB,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,6BAA6B,CAAC,GAAG,OAAO;CAG3E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/collision-filter/shader-module.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,aAAa,IAAI,YAAY,EAAC,MAAM,eAAe,CAAC;;AAwGjE,wBAMkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/data-filter/shader-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,IAAI,YAAY,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/data-filter/shader-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,IAAI,YAAY,EAAC,MAAM,eAAe,CAAC;AAE5D,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,eAAe,CAAC;AAmE5D,aAAK,wBAAwB,GAAG;IAC9B,UAAU,EAAE,GAAG,EAAE,CAAC;CACnB,GAAG,wBAAwB,CAAC;AAiG7B,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,wBAAwB,CAM/D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,YAAY,CAAC,wBAAwB,CAMjE,CAAC"}
|
package/typed/index.d.ts
CHANGED
|
@@ -4,16 +4,16 @@ export { default as Fp64Extension } from './fp64/fp64';
|
|
|
4
4
|
export { default as PathStyleExtension } from './path-style/path-style';
|
|
5
5
|
export { default as FillStyleExtension } from './fill-style/fill-style';
|
|
6
6
|
export { default as ClipExtension } from './clip/clip';
|
|
7
|
-
export { default as
|
|
7
|
+
export { default as CollisionFilterExtension } from './collision-filter/collision-filter';
|
|
8
8
|
export { default as MaskExtension } from './mask/mask';
|
|
9
|
-
export { default as
|
|
9
|
+
export { default as _TerrainExtension } from './terrain/terrain';
|
|
10
10
|
export { default as project64 } from './fp64/project64';
|
|
11
11
|
export type { BrushingExtensionProps } from './brushing/brushing';
|
|
12
12
|
export type { DataFilterExtensionProps } from './data-filter/data-filter';
|
|
13
13
|
export type { PathStyleExtensionProps } from './path-style/path-style';
|
|
14
14
|
export type { FillStyleExtensionProps } from './fill-style/fill-style';
|
|
15
15
|
export type { ClipExtensionProps } from './clip/clip';
|
|
16
|
-
export type {
|
|
16
|
+
export type { CollisionFilterExtensionProps } from './collision-filter/collision-filter';
|
|
17
17
|
export type { MaskExtensionProps } from './mask/mask';
|
|
18
18
|
export type { TerrainExtensionProps } from './terrain/terrain';
|
|
19
19
|
//# sourceMappingURL=index.d.ts.map
|
package/typed/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAC,OAAO,IAAI,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,aAAa,CAAC;AACrD,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,aAAa,CAAC;AACrD,OAAO,EAAC,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAC,OAAO,IAAI,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,aAAa,CAAC;AACrD,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,aAAa,CAAC;AACrD,OAAO,EAAC,OAAO,IAAI,wBAAwB,EAAC,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,aAAa,CAAC;AACrD,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAG/D,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAGtD,YAAY,EAAC,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAC,wBAAwB,EAAC,MAAM,2BAA2B,CAAC;AACxE,YAAY,EAAC,uBAAuB,EAAC,MAAM,yBAAyB,CAAC;AACrE,YAAY,EAAC,uBAAuB,EAAC,MAAM,yBAAyB,CAAC;AACrE,YAAY,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAC;AACpD,YAAY,EAAC,6BAA6B,EAAC,MAAM,qCAAqC,CAAC;AACvF,YAAY,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAC;AACpD,YAAY,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Effect, PreRenderOptions, CoordinateSystem } from '@deck.gl/core/typed';
|
|
2
2
|
import { Texture2D } from '@luma.gl/core';
|
|
3
|
-
import {
|
|
3
|
+
import { Bounds } from '../utils/projection-utils';
|
|
4
4
|
declare type Mask = {
|
|
5
5
|
/** The channel index */
|
|
6
6
|
index: number;
|
|
7
|
-
bounds:
|
|
7
|
+
bounds: Bounds;
|
|
8
8
|
coordinateOrigin: [number, number, number];
|
|
9
9
|
coordinateSystem: CoordinateSystem;
|
|
10
10
|
};
|
|
@@ -22,7 +22,7 @@ export default class MaskEffect implements Effect {
|
|
|
22
22
|
private maskPass?;
|
|
23
23
|
private maskMap?;
|
|
24
24
|
private lastViewport?;
|
|
25
|
-
preRender(gl: WebGLRenderingContext, { layers, layerFilter, viewports, onViewportActive, views,
|
|
25
|
+
preRender(gl: WebGLRenderingContext, { layers, layerFilter, viewports, onViewportActive, views, isPicking }: PreRenderOptions): MaskPreRenderStats;
|
|
26
26
|
private _renderChannel;
|
|
27
27
|
/**
|
|
28
28
|
* Find a channel to render each mask into
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mask-effect.d.ts","sourceRoot":"","sources":["../../src/mask/mask-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAM,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAGxC,OAAO,
|
|
1
|
+
{"version":3,"file":"mask-effect.d.ts","sourceRoot":"","sources":["../../src/mask/mask-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAM,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAiD,MAAM,EAAC,MAAM,2BAA2B,CAAC;AAGjG,aAAK,IAAI,GAAG;IACV,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAaF,oBAAY,kBAAkB,GAAG;IAC/B,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAGF,MAAM,CAAC,OAAO,OAAO,UAAW,YAAW,MAAM;IAC/C,EAAE,SAAiB;IACnB,KAAK,OAAQ;IACb,YAAY,UAAQ;IACpB,KAAK,SAAK;IAEV,OAAO,CAAC,YAAY,CAAC,CAAY;IACjC,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAY;IAC5B,OAAO,CAAC,YAAY,CAAC,CAAW;IAEhC,SAAS,CACP,EAAE,EAAE,qBAAqB,EACzB,EAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAC,EAAE,gBAAgB,GACrF,kBAAkB;IAqDrB,OAAO,CAAC,cAAc;IAsFtB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IA4CzB,mBAAmB,IAAI;QACrB,OAAO,EAAE,SAAS,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;KAC3C;IAOD,OAAO,IAAI,IAAI;CAgBhB"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Framebuffer } from '@luma.gl/core';
|
|
2
|
-
import { Bounds } from '../
|
|
2
|
+
import { Bounds } from '../utils/projection-utils';
|
|
3
3
|
import type { Viewport, Layer } from '@deck.gl/core/typed';
|
|
4
4
|
/**
|
|
5
5
|
* Manages the lifecycle of the height map (a framebuffer that encodes elevation).
|
|
6
6
|
* One instance of height map is is shared across all layers. It is updated when the viewport changes
|
|
7
7
|
* or when some terrain source layer's data changes.
|
|
8
|
-
* During the draw call of any
|
|
8
|
+
* During the draw call of any terrainDrawMode:offset layers,
|
|
9
9
|
* the vertex shader reads from this framebuffer to retrieve its z offset.
|
|
10
10
|
*/
|
|
11
11
|
export declare class HeightMapBuilder {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"height-map-builder.d.ts","sourceRoot":"","sources":["../../src/terrain/height-map-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAiD,MAAM,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"height-map-builder.d.ts","sourceRoot":"","sources":["../../src/terrain/height-map-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAiD,MAAM,EAAC,MAAM,2BAA2B,CAAC;AAGjG,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,eAAe,CAAC;AAInD;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,6CAA6C;IAC7C,cAAc,EAAE,QAAQ,GAAG,IAAI,CAAQ;IACvC,2DAA2D;IAC3D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE7B,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC;IAC5B,SAAS,CAAC,EAAE,EAAE,qBAAqB,CAAC;IACpC,2BAA2B;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,6BAA6B;IAC7B,OAAO,CAAC,YAAY,CAAuC;IAC3D,mDAAmD;IACnD,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,YAAY,CAAyB;IAE7C,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,qBAAqB,GAAG,OAAO;gBAI1C,EAAE,EAAE,qBAAqB;IAIrC;;OAEG;IACH,oBAAoB,IAAI,WAAW,GAAG,IAAI;IAU1C,yEAAyE;IACzE,YAAY,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,EAAE;QAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAC,GAAG,OAAO;IA4DhF,MAAM;CAMP"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Framebuffer } from '@luma.gl/core';
|
|
2
|
-
import { Bounds } from '../
|
|
2
|
+
import { Bounds } from '../utils/projection-utils';
|
|
3
3
|
import type { Viewport, Layer } from '@deck.gl/core/typed';
|
|
4
4
|
export declare class HeightMap {
|
|
5
5
|
/** Viewport used to draw into the texture */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { _ShaderModule as ShaderModule } from '@deck.gl/core/typed';
|
|
2
2
|
import type { Texture2D } from '@luma.gl/core';
|
|
3
|
-
import type { Bounds } from '../
|
|
3
|
+
import type { Bounds } from '../utils/projection-utils';
|
|
4
4
|
import type { TerrainCover } from './terrain-cover';
|
|
5
5
|
/** Module parameters expected by the terrain shader module */
|
|
6
6
|
export declare type TerrainModuleSettings = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/terrain/shader-module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/terrain/shader-module.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,IAAI,YAAY,EAAC,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAElD,8DAA8D;AAC9D,oBAAY,qBAAqB,GAAG;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,YAAY;;IAEvB,6EAA6E;;IAE7E,2EAA2E;;IAE3E,6FAA6F;;IAE7F,0EAA0E;;IAE1E,mEAAmE;;CAEpE,CAAC;AAMF,eAAO,MAAM,aAAa,qCA2Hc,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Framebuffer } from '@luma.gl/core';
|
|
2
2
|
import type { Layer, Viewport } from '@deck.gl/core/typed';
|
|
3
|
-
import { Bounds } from '../
|
|
3
|
+
import { Bounds } from '../utils/projection-utils';
|
|
4
4
|
/**
|
|
5
5
|
* Manages the lifecycle of the terrain cover (draped textures over a terrain mesh).
|
|
6
6
|
* One terrain cover is created for each unique terrain layer (primitive layer with operation:terrain).
|
|
7
|
-
* It is updated when the terrain source layer's mesh changes or when any of the
|
|
7
|
+
* It is updated when the terrain source layer's mesh changes or when any of the terrainDrawMode:drape
|
|
8
8
|
* layers requires redraw.
|
|
9
9
|
* During the draw call of a terrain layer, the drape texture is overlaid on top of the layer's own color.
|
|
10
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terrain-cover.d.ts","sourceRoot":"","sources":["../../src/terrain/terrain-cover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAGnD,OAAO,EAAiD,MAAM,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"terrain-cover.d.ts","sourceRoot":"","sources":["../../src/terrain/terrain-cover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAGnD,OAAO,EAAiD,MAAM,EAAC,MAAM,2BAA2B,CAAC;AASjG;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,EAAE,OAAO,CAAQ;IACxB,sDAAsD;IACtD,WAAW,EAAE,KAAK,CAAC;IACnB,6CAA6C;IAC7C,cAAc,EAAE,QAAQ,GAAG,IAAI,CAAQ;IACvC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE7B,OAAO,CAAC,GAAG,CAAC,CAAc;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAc;IACjC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,IAAI,CAAsB;IAClC,gDAAgD;IAChD,OAAO,CAAC,YAAY,CAAqC;IACzD,sCAAsC;IACtC,OAAO,CAAC,kBAAkB,CAAuB;gBAErC,WAAW,EAAE,KAAK;IAK9B,IAAI,EAAE,WAEL;IAED,4EAA4E;IAC5E,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,YAAY,CAAC,EACX,WAAW,EACX,QAAQ,EACR,MAAM,EACN,gBAAgB,EACjB,EAAE;QACD,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,GAAG,OAAO;IAqBX,wEAAwE;IACxE,OAAO,CAAC,aAAa;IAuBrB,4FAA4F;IAC5F,OAAO,CAAC,eAAe;IAwCvB,oBAAoB,IAAI,WAAW,GAAG,IAAI;IAU1C,qBAAqB,IAAI,WAAW,GAAG,IAAI;IAU3C,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE;IAI5B,MAAM;CAWP"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terrain-effect.d.ts","sourceRoot":"","sources":["../../src/terrain/terrain-effect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,qBAAqB,EAAC,MAAM,iBAAiB,CAAC;AAMrE,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAW,MAAM,eAAe,CAAC;AAE7E,qCAAqC;AACrC,qBAAa,aAAc,YAAW,MAAM;IAC1C,EAAE,SAAoB;IACtB,KAAK,OAAQ;IACb,YAAY,UAAQ;IAEpB,0CAA0C;IAC1C,OAAO,CAAC,SAAS,CAAkB;IACnC,6CAA6C;IAC7C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,sCAAsC;IACtC,OAAO,CAAC,cAAc,CAAY;IAClC,wGAAwG;IACxG,OAAO,CAAC,SAAS,CAAC,CAAmB;IACrC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,kBAAkB,CAAsB;IAChD,wFAAwF;IACxF,OAAO,CAAC,aAAa,CAAwC;IAE7D,UAAU,CAAC,EAAE,EAAE,qBAAqB;IAkBpC,SAAS,CAAC,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"terrain-effect.d.ts","sourceRoot":"","sources":["../../src/terrain/terrain-effect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,qBAAqB,EAAC,MAAM,iBAAiB,CAAC;AAMrE,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAW,MAAM,eAAe,CAAC;AAE7E,qCAAqC;AACrC,qBAAa,aAAc,YAAW,MAAM;IAC1C,EAAE,SAAoB;IACtB,KAAK,OAAQ;IACb,YAAY,UAAQ;IAEpB,0CAA0C;IAC1C,OAAO,CAAC,SAAS,CAAkB;IACnC,6CAA6C;IAC7C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,sCAAsC;IACtC,OAAO,CAAC,cAAc,CAAY;IAClC,wGAAwG;IACxG,OAAO,CAAC,SAAS,CAAC,CAAmB;IACrC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,kBAAkB,CAAsB;IAChD,wFAAwF;IACxF,OAAO,CAAC,aAAa,CAAwC;IAE7D,UAAU,CAAC,EAAE,EAAE,qBAAqB;IAkBpC,SAAS,CAAC,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI;IA8ClE,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,qBAAqB;IAaxD,OAAO,IAAI,IAAI;IAiBf,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,mBAAmB;IAmC3B,OAAO,CAAC,mBAAmB;CAY5B"}
|
|
@@ -5,12 +5,12 @@ export declare type TerrainExtensionProps = {
|
|
|
5
5
|
* controls whether an object is drawn over the terrain surface by its anchor (usually defined by an accessor called `getPosition`, e.g. icon, scatterplot) or by its geometry (e.g. path, polygon).
|
|
6
6
|
* If not specified, it is automatically deduced from the layer.
|
|
7
7
|
*/
|
|
8
|
-
|
|
8
|
+
terrainDrawMode?: 'offset' | 'drape';
|
|
9
9
|
};
|
|
10
10
|
/** Allows layers to show/hide objects by a geofence. */
|
|
11
11
|
export default class TerrainExtension extends LayerExtension {
|
|
12
12
|
static defaultProps: {
|
|
13
|
-
|
|
13
|
+
terrainDrawMode: undefined;
|
|
14
14
|
};
|
|
15
15
|
static extensionName: string;
|
|
16
16
|
getShaders(this: Layer<TerrainExtensionProps>): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terrain.d.ts","sourceRoot":"","sources":["../../src/terrain/terrain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAI/D,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AAMzC,oBAAY,qBAAqB,GAAG;IAClC;;;OAGG;IACH,
|
|
1
|
+
{"version":3,"file":"terrain.d.ts","sourceRoot":"","sources":["../../src/terrain/terrain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAI/D,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AAMzC,oBAAY,qBAAqB,GAAG;IAClC;;;OAGG;IACH,eAAe,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACtC,CAAC;AASF,wDAAwD;AACxD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,cAAc;IAC1D,MAAM,CAAC,YAAY;;MAAgB;IACnC,MAAM,CAAC,aAAa,SAAsB;IAE1C,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,qBAAqB,CAAC,GAAG,GAAG;IAMnD,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,qBAAqB,CAAC;IAIlD,WAAW,CACT,IAAI,EAAE,KAAK,CAAC,qBAAqB,CAAC,EAClC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAyBxD,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI;CAMrC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Layer, Viewport } from '@deck.gl/core/typed';
|
|
2
|
+
/** Bounds in CARTESIAN coordinates */
|
|
3
|
+
export declare type Bounds = [minX: number, minY: number, maxX: number, maxY: number];
|
|
4
|
+
export declare function joinLayerBounds(
|
|
5
|
+
/** The layers to combine */
|
|
6
|
+
layers: Layer[],
|
|
7
|
+
/** A Viewport instance that is used to determine the type of the view */
|
|
8
|
+
viewport: Viewport): Bounds | null;
|
|
9
|
+
/** Construct a viewport that just covers the target bounds. Used for rendering to common space indexed texture. */
|
|
10
|
+
export declare function makeViewport(opts: {
|
|
11
|
+
/** The cartesian bounds of layers that will render into this texture */
|
|
12
|
+
bounds: Bounds;
|
|
13
|
+
/** Target width. If not specified, will be deduced from zoom */
|
|
14
|
+
width?: number;
|
|
15
|
+
/** Target height. If not specified, will be deduced from zoom */
|
|
16
|
+
height?: number;
|
|
17
|
+
/** Target zoom. If not specified, will be deduced from width and height */
|
|
18
|
+
zoom?: number;
|
|
19
|
+
/** Border around the viewport in pixels */
|
|
20
|
+
border?: number;
|
|
21
|
+
/** A viewport used to determine the output type */
|
|
22
|
+
viewport: Viewport;
|
|
23
|
+
}): Viewport | null;
|
|
24
|
+
/** Returns viewport bounds in CARTESIAN coordinates */
|
|
25
|
+
export declare function getViewportBounds(viewport: Viewport, zRange?: [number, number]): Bounds;
|
|
26
|
+
export declare function getRenderBounds(layerBounds: Bounds, viewport: Viewport, zRange?: [number, number]): Bounds;
|
|
27
|
+
//# sourceMappingURL=projection-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-utils.d.ts","sourceRoot":"","sources":["../../src/utils/projection-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEnD,sCAAsC;AACtC,oBAAY,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAM9E,wBAAgB,eAAe;AAC7B,4BAA4B;AAC5B,MAAM,EAAE,KAAK,EAAE;AACf,yEAAyE;AACzE,QAAQ,EAAE,QAAQ,GACjB,MAAM,GAAG,IAAI,CAoBf;AAID,mHAAmH;AACnH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,QAAQ,EAAE,QAAQ,CAAC;CACpB,GAAG,QAAQ,GAAG,IAAI,CAyDlB;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CA0BvF;AAMD,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GACxB,MAAM,CA+BR"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collide/collide-effect.ts"],"names":["DOWNSCALE","CollideEffect","gl","allEffects","effects","layers","layerFilter","viewports","onViewportActive","views","pass","preRenderStats","dummyCollideMap","Texture2D","width","height","startsWith","collideLayers","filter","props","visible","collideEnabled","length","channels","collidePass","CollidePass","id","e","constructor","MaskEffect","maskEffectRendered","didRender","_groupByCollideGroup","viewport","viewportChanged","lastViewport","equals","collideGroup","collideFBO","collideFBOs","renderInfo","resize","canvas","_render","oldRenderInfo","needsRender","layerBounds","some","b","i","renderCollideMap","moduleParameters","devicePixelRatio","channelMap","layer","channelInfo","push","getBounds","Object","keys","createFBO","destroyFBO","delete","undefined","collideMap","parameters","depthBuffer","Renderbuffer","format","Framebuffer","attachments","fbo","values","attachment"],"mappings":"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","sourcesContent":["import {Framebuffer, Renderbuffer, Texture2D, cssToDeviceRatio} from '@luma.gl/core';\nimport {equals} from '@math.gl/core';\nimport {_deepEqual as deepEqual} from '@deck.gl/core';\nimport type {Effect, Layer, PreRenderOptions, Viewport} from '@deck.gl/core';\nimport CollidePass from './collide-pass';\nimport MaskEffect, {MaskPreRenderStats} from '../mask/mask-effect';\n// import {debugFBO} from '../utils/debug';\n\ntype CollideExtensionProps = {\n collideTestProps?: {};\n collideGroup: string;\n};\n\n// Factor by which to downscale Collide FBO relative to canvas\nconst DOWNSCALE = 2;\n\ntype RenderInfo = {\n collideGroup: string;\n layers: Layer<CollideExtensionProps>[];\n layerBounds: ([number[], number[]] | null)[];\n};\n\n// Class to manage collide effect\nexport default class CollideEffect implements Effect {\n id = 'collide-effect';\n props = null;\n useInPicking = true;\n order = 1;\n\n private channels: Record<string, RenderInfo> = {};\n private collidePass?: CollidePass;\n private collideFBOs: Record<string, Framebuffer> = {};\n private dummyCollideMap?: Texture2D;\n private lastViewport?: Viewport;\n\n preRender(\n gl: WebGLRenderingContext,\n {\n effects: allEffects,\n layers,\n layerFilter,\n viewports,\n onViewportActive,\n views,\n pass,\n preRenderStats = {}\n }: PreRenderOptions\n ): void {\n if (!this.dummyCollideMap) {\n this.dummyCollideMap = new Texture2D(gl, {width: 1, height: 1});\n }\n\n if (pass.startsWith('picking')) {\n // Do not update on picking pass\n return;\n }\n\n const collideLayers = layers.filter(\n // @ts-ignore\n ({props: {visible, collideEnabled}}) => visible && collideEnabled\n ) as Layer<CollideExtensionProps>[];\n if (collideLayers.length === 0) {\n this.channels = {};\n return;\n }\n\n if (!this.collidePass) {\n this.collidePass = new CollidePass(gl, {id: 'default-collide'});\n }\n\n // Detect if mask has rendered. TODO: better dependency system for Effects\n const effects = allEffects?.filter(e => e.constructor === MaskEffect);\n const maskEffectRendered = (preRenderStats['mask-effect'] as MaskPreRenderStats)?.didRender;\n\n // Collect layers to render\n const channels = this._groupByCollideGroup(gl, collideLayers);\n\n const viewport = viewports[0];\n const viewportChanged =\n !this.lastViewport || !this.lastViewport.equals(viewport) || maskEffectRendered;\n\n // Resize framebuffers to match canvas\n for (const collideGroup in channels) {\n const collideFBO = this.collideFBOs[collideGroup];\n const renderInfo = channels[collideGroup];\n collideFBO.resize({\n width: gl.canvas.width / DOWNSCALE,\n height: gl.canvas.height / DOWNSCALE\n });\n this._render(renderInfo, {\n effects,\n layerFilter,\n onViewportActive,\n views,\n viewport,\n viewportChanged\n });\n }\n\n // debugFBO(this.collideFBOs[Object.keys(channels)[0]], {minimap: true});\n }\n\n private _render(\n renderInfo: RenderInfo,\n {\n effects,\n layerFilter,\n onViewportActive,\n views,\n viewport,\n viewportChanged\n }: {\n effects: PreRenderOptions['effects'];\n layerFilter: PreRenderOptions['layerFilter'];\n onViewportActive: PreRenderOptions['onViewportActive'];\n views: PreRenderOptions['views'];\n viewport: Viewport;\n viewportChanged: boolean;\n }\n ) {\n const {collideGroup} = renderInfo;\n const oldRenderInfo = this.channels[collideGroup];\n if (!oldRenderInfo) {\n return;\n }\n\n const needsRender =\n viewportChanged ||\n // If render info is new\n renderInfo === oldRenderInfo ||\n // If sublayers have changed\n !deepEqual(oldRenderInfo.layers, renderInfo.layers, 0) ||\n // If a sublayer's bounds have been updated\n renderInfo.layerBounds.some((b, i) => !equals(b, oldRenderInfo.layerBounds[i]));\n\n this.channels[collideGroup] = renderInfo;\n\n if (needsRender) {\n this.lastViewport = viewport;\n const collideFBO = this.collideFBOs[collideGroup];\n\n // Rerender collide FBO\n this.collidePass!.renderCollideMap(collideFBO, {\n pass: 'collide',\n layers: renderInfo.layers,\n effects,\n layerFilter,\n viewports: viewport ? [viewport] : [],\n onViewportActive,\n views,\n moduleParameters: {\n // To avoid feedback loop forming between Framebuffer and active Texture.\n dummyCollideMap: this.dummyCollideMap,\n devicePixelRatio: cssToDeviceRatio(collideFBO.gl) / DOWNSCALE\n }\n });\n }\n }\n\n /**\n * Group layers by collideGroup\n * Returns a map from collideGroup to render info\n */\n private _groupByCollideGroup(\n gl: WebGLRenderingContext,\n collideLayers: Layer<CollideExtensionProps>[]\n ): Record<string, RenderInfo> {\n const channelMap = {};\n for (const layer of collideLayers) {\n const {collideGroup} = layer.props;\n let channelInfo = channelMap[collideGroup];\n if (!channelInfo) {\n channelInfo = {\n collideGroup,\n layers: [],\n layerBounds: []\n };\n channelMap[collideGroup] = channelInfo;\n }\n channelInfo.layers.push(layer);\n channelInfo.layerBounds.push(layer.getBounds());\n }\n\n // Create any new passes and remove any old ones\n for (const collideGroup of Object.keys(channelMap)) {\n if (!this.collideFBOs[collideGroup]) {\n this.createFBO(gl, collideGroup);\n }\n if (!this.channels[collideGroup]) {\n this.channels[collideGroup] = channelMap[collideGroup];\n }\n }\n for (const collideGroup of Object.keys(this.collideFBOs)) {\n if (!channelMap[collideGroup]) {\n this.destroyFBO(collideGroup);\n }\n }\n\n return channelMap;\n }\n\n getModuleParameters(layer: Layer): {\n collideFBO: Framebuffer;\n dummyCollideMap: Texture2D;\n } {\n const {collideGroup} = (layer as Layer<CollideExtensionProps>).props;\n const {collideFBOs, dummyCollideMap} = this;\n return {collideFBO: collideFBOs[collideGroup], dummyCollideMap};\n }\n\n cleanup(): void {\n if (this.dummyCollideMap) {\n this.dummyCollideMap.delete();\n this.dummyCollideMap = undefined;\n }\n this.channels = {};\n for (const collideGroup of Object.keys(this.collideFBOs)) {\n this.destroyFBO(collideGroup);\n }\n this.collideFBOs = {};\n this.lastViewport = undefined;\n }\n\n createFBO(gl: WebGLRenderingContext, collideGroup: string) {\n const {width, height} = gl.canvas;\n const collideMap = new Texture2D(gl, {\n width,\n height,\n parameters: {\n [gl.TEXTURE_MIN_FILTER]: gl.NEAREST,\n [gl.TEXTURE_MAG_FILTER]: gl.NEAREST,\n [gl.TEXTURE_WRAP_S]: gl.CLAMP_TO_EDGE,\n [gl.TEXTURE_WRAP_T]: gl.CLAMP_TO_EDGE\n }\n });\n\n const depthBuffer = new Renderbuffer(gl, {format: gl.DEPTH_COMPONENT16, width, height});\n this.collideFBOs[collideGroup] = new Framebuffer(gl, {\n id: `Collide-${collideGroup}`,\n width,\n height,\n attachments: {\n [gl.COLOR_ATTACHMENT0]: collideMap,\n [gl.DEPTH_ATTACHMENT]: depthBuffer\n }\n });\n }\n\n destroyFBO(collideGroup: string) {\n const fbo = this.collideFBOs[collideGroup];\n for (const attachment of Object.values(fbo.attachments as Texture2D[])) {\n attachment.delete();\n }\n fbo.delete();\n delete this.collideFBOs[collideGroup];\n }\n}\n"],"file":"collide-effect.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collide/collide-pass.ts"],"names":["CollidePass","target","options","gl","padding","scissorTest","scissor","width","height","clearColor","blend","depthTest","depthRange","render","pass","drawToCollideMap","pickingActive","pickingAttribute","lightSources","LayersPass"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;IAIqBA,W;;;;;;;;;;;;WACnB,0BAAiBC,MAAjB,EAAsCC,OAAtC,EAAyE;AAAA;;AACvE,UAAMC,EAAE,GAAG,KAAKA,EAAhB;AAEA,UAAMC,OAAO,GAAG,CAAhB;AAEA,aAAO,0BACLD,EADK,EAEL;AACEE,QAAAA,WAAW,EAAE,IADf;AAEEC,QAAAA,OAAO,EAAE,CAACF,OAAD,EAAUA,OAAV,EAAmBH,MAAM,CAACM,KAAP,GAAe,IAAIH,OAAtC,EAA+CH,MAAM,CAACO,MAAP,GAAgB,IAAIJ,OAAnE,CAFX;AAGEK,QAAAA,UAAU,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAHd;AAIEC,QAAAA,KAAK,EAAE,KAJT;AAKEC,QAAAA,SAAS,EAAE,IALb;AAMEC,QAAAA,UAAU,EAAE,CAAC,CAAD,EAAI,CAAJ;AANd,OAFK,EAUL;AAAA,eAAM,KAAI,CAACC,MAAL,iCAAgBX,OAAhB;AAAyBD,UAAAA,MAAM,EAANA,MAAzB;AAAiCa,UAAAA,IAAI,EAAE;AAAvC,WAAN;AAAA,OAVK,CAAP;AAYD;;;WAED,+BAAsB;AAEpB,aAAO;AACLC,QAAAA,gBAAgB,EAAE,IADb;AAELC,QAAAA,aAAa,EAAE,CAFV;AAGLC,QAAAA,gBAAgB,EAAE,KAHb;AAILC,QAAAA,YAAY,EAAE;AAJT,OAAP;AAMD;;;EA5BsCC,kB","sourcesContent":["import {Framebuffer, withParameters} from '@luma.gl/core';\nimport {_LayersPass as LayersPass, LayersPassRenderOptions} from '@deck.gl/core';\n\ntype CollidePassRenderOptions = LayersPassRenderOptions & {};\n\nexport default class CollidePass extends LayersPass {\n renderCollideMap(target: Framebuffer, options: CollidePassRenderOptions) {\n const gl = this.gl;\n\n const padding = 1;\n\n return withParameters(\n gl,\n {\n scissorTest: true,\n scissor: [padding, padding, target.width - 2 * padding, target.height - 2 * padding],\n clearColor: [0, 0, 0, 0],\n blend: false,\n depthTest: true,\n depthRange: [0, 1]\n },\n () => this.render({...options, target, pass: 'collide'})\n );\n }\n\n getModuleParameters() {\n // Draw picking colors into collide FBO\n return {\n drawToCollideMap: true,\n pickingActive: 1,\n pickingAttribute: false,\n lightSources: {}\n };\n }\n}\n"],"file":"collide-pass.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collide/collide.ts"],"names":["defaultProps","getCollidePriority","type","value","collideEnabled","collideGroup","collideTestProps","CollideExtension","modules","collide","uniforms","context","moduleParameters","props","collideFBO","drawToCollideMap","enabled","Boolean","collide_enabled","clone","extension","getAttributeManager","deck","_addDefaultEffect","CollideEffect","attributeManager","add","collidePriorities","size","accessor","shaderAttributes","divisor","instanceCollidePriorities","LayerExtension"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAEA,IAAMA,YAAY,GAAG;AACnBC,EAAAA,kBAAkB,EAAE;AAACC,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE;AAA1B,GADD;AAEnBC,EAAAA,cAAc,EAAE,IAFG;AAGnBC,EAAAA,YAAY,EAAE;AAACH,IAAAA,IAAI,EAAE,QAAP;AAAiBC,IAAAA,KAAK,EAAE;AAAxB,GAHK;AAInBG,EAAAA,gBAAgB,EAAE;AAJC,CAArB;;IA+BqBC,gB;;;;;;;;;;;;WAInB,sBAAoD;AAClD,aAAO;AAACC,QAAAA,OAAO,EAAE,CAACC,qBAAD;AAAV,OAAP;AACD;;;WAGD,oBAAqF;AAAA,UAA3CC,QAA2C,QAA3CA,QAA2C;AAAA,UAAjCC,OAAiC,QAAjCA,OAAiC;AAAA,UAAxBC,gBAAwB,QAAxBA,gBAAwB;AACnF,UAAOR,cAAP,GAAyB,KAAKS,KAA9B,CAAOT,cAAP;AACA,UAAOU,UAAP,GAAuCF,gBAAvC,CAAOE,UAAP;AAAA,UAAmBC,gBAAnB,GAAuCH,gBAAvC,CAAmBG,gBAAnB;AACA,UAAMC,OAAO,GAAGZ,cAAc,IAAIa,OAAO,CAACH,UAAD,CAAzC;AACAJ,MAAAA,QAAQ,CAACQ,eAAT,GAA2BF,OAA3B;;AAEA,UAAID,gBAAJ,EAAsB;AAGpB,aAAKF,KAAL,GAAa,KAAKM,KAAL,CAAW,KAAKN,KAAL,CAAWP,gBAAtB,EAAwCO,KAArD;AACD;AACF;;;WAED,yBAAoDF,OAApD,EAA2ES,SAA3E,EAA4F;AAAA;;AAC1F,UAAI,KAAKC,mBAAL,OAA+B,IAAnC,EAAyC;AACvC;AACD;;AACD,iCAAKV,OAAL,CAAaW,IAAb,0EAAmBC,iBAAnB,CAAqC,IAAIC,sBAAJ,EAArC;AACA,UAAMC,gBAAgB,GAAG,KAAKJ,mBAAL,EAAzB;AACAI,MAAAA,gBAAgB,CAAEC,GAAlB,CAAsB;AACpBC,QAAAA,iBAAiB,EAAE;AACjBC,UAAAA,IAAI,EAAE,CADW;AAEjBC,UAAAA,QAAQ,EAAE,oBAFO;AAGjBC,UAAAA,gBAAgB,EAAE;AAChBH,YAAAA,iBAAiB,EAAE;AAACI,cAAAA,OAAO,EAAE;AAAV,aADH;AAEhBC,YAAAA,yBAAyB,EAAE;AAACD,cAAAA,OAAO,EAAE;AAAV;AAFX;AAHD;AADC,OAAtB;AAUD;;;WAED,iCAAmE;AACjE,aAAO,KAAKlB,KAAL,CAAWT,cAAlB;AACD;;;EA1C2C6B,oB;;;8BAAzB1B,gB,kBACGP,Y;8BADHO,gB,mBAEI,kB","sourcesContent":["import {Accessor, Layer, LayerContext, LayerExtension} from '@deck.gl/core';\nimport collide from './shader-module';\nimport CollideEffect from './collide-effect';\n\nconst defaultProps = {\n getCollidePriority: {type: 'accessor', value: 0},\n collideEnabled: true,\n collideGroup: {type: 'string', value: 'default'},\n collideTestProps: {}\n};\n\nexport type CollideExtensionProps<DataT = any> = {\n /**\n * Accessor for collision priority. Must return a number in the range -1000 -> 1000. Features with higher values are shown preferentially.\n */\n getCollidePriority?: Accessor<DataT, number>;\n\n /**\n * Enable/disable collisions. If collisions are disabled, all objects are rendered.\n * @default true\n */\n collideEnabled: boolean;\n\n /**\n * Collision group this layer belongs to. If it is not set, the 'default' collision group is used\n */\n collideGroup?: string;\n\n /**\n * Props to override when rendering collision map\n */\n collideTestProps?: {};\n};\n\n/** Allows layers to hide overlapping objects. */\nexport default class CollideExtension extends LayerExtension {\n static defaultProps = defaultProps;\n static extensionName = 'CollideExtension';\n\n getShaders(this: Layer<CollideExtensionProps>): any {\n return {modules: [collide]};\n }\n\n /* eslint-disable camelcase */\n draw(this: Layer<CollideExtensionProps>, {uniforms, context, moduleParameters}: any) {\n const {collideEnabled} = this.props;\n const {collideFBO, drawToCollideMap} = moduleParameters;\n const enabled = collideEnabled && Boolean(collideFBO);\n uniforms.collide_enabled = enabled;\n\n if (drawToCollideMap) {\n // Override any props with those defined in collideTestProps\n // @ts-ignore\n this.props = this.clone(this.props.collideTestProps).props;\n }\n }\n\n initializeState(this: Layer<CollideExtensionProps>, context: LayerContext, extension: this) {\n if (this.getAttributeManager() === null) {\n return;\n }\n this.context.deck?._addDefaultEffect(new CollideEffect());\n const attributeManager = this.getAttributeManager();\n attributeManager!.add({\n collidePriorities: {\n size: 1,\n accessor: 'getCollidePriority',\n shaderAttributes: {\n collidePriorities: {divisor: 0},\n instanceCollidePriorities: {divisor: 1}\n }\n }\n });\n }\n\n getNeedsPickingBuffer(this: Layer<CollideExtensionProps>): boolean {\n return this.props.collideEnabled;\n }\n}\n"],"file":"collide.js"}
|