@deck.gl/extensions 8.9.0-beta.2 → 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.
Files changed (103) hide show
  1. package/dist/dist.dev.js +279 -458
  2. package/dist/es5/{collide/collide-effect.js → collision-filter/collision-filter-effect.js} +78 -71
  3. package/dist/es5/collision-filter/collision-filter-effect.js.map +1 -0
  4. package/dist/es5/{collide/collide-pass.js → collision-filter/collision-filter-pass.js} +13 -13
  5. package/dist/es5/collision-filter/collision-filter-pass.js.map +1 -0
  6. package/dist/es5/{collide/collide.js → collision-filter/collision-filter.js} +30 -30
  7. package/dist/es5/collision-filter/collision-filter.js.map +1 -0
  8. package/dist/es5/collision-filter/shader-module.js +39 -0
  9. package/dist/es5/collision-filter/shader-module.js.map +1 -0
  10. package/dist/es5/index.js +4 -4
  11. package/dist/es5/index.js.map +1 -1
  12. package/dist/es5/mask/mask-effect.js +14 -7
  13. package/dist/es5/mask/mask-effect.js.map +1 -1
  14. package/dist/es5/terrain/height-map-builder.js +1 -1
  15. package/dist/es5/terrain/height-map-builder.js.map +1 -1
  16. package/dist/es5/terrain/shader-module.js.map +1 -1
  17. package/dist/es5/terrain/terrain-cover.js +1 -1
  18. package/dist/es5/terrain/terrain-cover.js.map +1 -1
  19. package/dist/es5/terrain/terrain-effect.js +5 -5
  20. package/dist/es5/terrain/terrain-effect.js.map +1 -1
  21. package/dist/es5/terrain/terrain.js +7 -7
  22. package/dist/es5/terrain/terrain.js.map +1 -1
  23. package/dist/es5/{common → utils}/projection-utils.js +3 -1
  24. package/dist/es5/utils/projection-utils.js.map +1 -0
  25. package/dist/esm/{collide/collide-effect.js → collision-filter/collision-filter-effect.js} +69 -64
  26. package/dist/esm/collision-filter/collision-filter-effect.js.map +1 -0
  27. package/dist/esm/{collide/collide-pass.js → collision-filter/collision-filter-pass.js} +5 -5
  28. package/dist/esm/collision-filter/collision-filter-pass.js.map +1 -0
  29. package/dist/esm/collision-filter/collision-filter.js +78 -0
  30. package/dist/esm/collision-filter/collision-filter.js.map +1 -0
  31. package/dist/esm/collision-filter/shader-module.js +32 -0
  32. package/dist/esm/collision-filter/shader-module.js.map +1 -0
  33. package/dist/esm/index.js +2 -2
  34. package/dist/esm/index.js.map +1 -1
  35. package/dist/esm/mask/mask-effect.js +13 -7
  36. package/dist/esm/mask/mask-effect.js.map +1 -1
  37. package/dist/esm/terrain/height-map-builder.js +1 -1
  38. package/dist/esm/terrain/height-map-builder.js.map +1 -1
  39. package/dist/esm/terrain/shader-module.js.map +1 -1
  40. package/dist/esm/terrain/terrain-cover.js +1 -1
  41. package/dist/esm/terrain/terrain-cover.js.map +1 -1
  42. package/dist/esm/terrain/terrain-effect.js +5 -5
  43. package/dist/esm/terrain/terrain-effect.js.map +1 -1
  44. package/dist/esm/terrain/terrain.js +7 -7
  45. package/dist/esm/terrain/terrain.js.map +1 -1
  46. package/dist/esm/{common → utils}/projection-utils.js +3 -1
  47. package/dist/esm/utils/projection-utils.js.map +1 -0
  48. package/dist.min.js +59 -62
  49. package/package.json +2 -2
  50. package/src/{collide/collide-effect.ts → collision-filter/collision-filter-effect.ts} +80 -77
  51. package/src/{collide/collide-pass.ts → collision-filter/collision-filter-pass.ts} +6 -6
  52. package/src/collision-filter/collision-filter.ts +83 -0
  53. package/src/collision-filter/shader-module.ts +113 -0
  54. package/src/index.ts +3 -3
  55. package/src/mask/mask-effect.ts +21 -12
  56. package/src/terrain/height-map-builder.ts +2 -2
  57. package/src/terrain/shader-module.ts +4 -1
  58. package/src/terrain/terrain-cover.ts +2 -2
  59. package/src/terrain/terrain-effect.ts +5 -5
  60. package/src/terrain/terrain.ts +10 -10
  61. package/src/{common → utils}/projection-utils.ts +4 -2
  62. package/typed/collision-filter/collision-filter-effect.d.ts +28 -0
  63. package/typed/collision-filter/collision-filter-effect.d.ts.map +1 -0
  64. package/typed/collision-filter/collision-filter-pass.d.ts +14 -0
  65. package/typed/collision-filter/collision-filter-pass.d.ts.map +1 -0
  66. package/typed/collision-filter/collision-filter.d.ts +41 -0
  67. package/typed/collision-filter/collision-filter.d.ts.map +1 -0
  68. package/typed/collision-filter/shader-module.d.ts +4 -0
  69. package/typed/collision-filter/shader-module.d.ts.map +1 -0
  70. package/typed/index.d.ts +3 -3
  71. package/typed/index.d.ts.map +1 -1
  72. package/typed/mask/mask-effect.d.ts +2 -2
  73. package/typed/mask/mask-effect.d.ts.map +1 -1
  74. package/typed/terrain/height-map-builder.d.ts +2 -2
  75. package/typed/terrain/height-map-builder.d.ts.map +1 -1
  76. package/typed/terrain/shader-module.d.ts +1 -1
  77. package/typed/terrain/shader-module.d.ts.map +1 -1
  78. package/typed/terrain/terrain-cover.d.ts +2 -2
  79. package/typed/terrain/terrain-cover.d.ts.map +1 -1
  80. package/typed/terrain/terrain.d.ts +2 -2
  81. package/typed/terrain/terrain.d.ts.map +1 -1
  82. package/typed/utils/projection-utils.d.ts +27 -0
  83. package/typed/utils/projection-utils.d.ts.map +1 -0
  84. package/dist/es5/collide/collide-effect.js.map +0 -1
  85. package/dist/es5/collide/collide-pass.js.map +0 -1
  86. package/dist/es5/collide/collide.js.map +0 -1
  87. package/dist/es5/collide/shader-module.js +0 -39
  88. package/dist/es5/collide/shader-module.js.map +0 -1
  89. package/dist/es5/common/projection-utils.js.map +0 -1
  90. package/dist/es5/mask/utils.js +0 -136
  91. package/dist/es5/mask/utils.js.map +0 -1
  92. package/dist/esm/collide/collide-effect.js.map +0 -1
  93. package/dist/esm/collide/collide-pass.js.map +0 -1
  94. package/dist/esm/collide/collide.js +0 -78
  95. package/dist/esm/collide/collide.js.map +0 -1
  96. package/dist/esm/collide/shader-module.js +0 -32
  97. package/dist/esm/collide/shader-module.js.map +0 -1
  98. package/dist/esm/common/projection-utils.js.map +0 -1
  99. package/dist/esm/mask/utils.js +0 -109
  100. package/dist/esm/mask/utils.js.map +0 -1
  101. package/src/collide/collide.ts +0 -79
  102. package/src/collide/shader-module.ts +0 -113
  103. package/src/mask/utils.ts +0 -148
@@ -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 '../common/projection-utils';
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 terrainFittingMode:drape
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
  */
@@ -82,26 +82,26 @@ export class TerrainEffect implements Effect {
82
82
  }
83
83
 
84
84
  if (!isPicking) {
85
- const offsetLayers = layers.filter(l => l.state.terrainFittingMode === 'offset');
85
+ const offsetLayers = layers.filter(l => l.state.terrainDrawMode === 'offset');
86
86
  if (offsetLayers.length > 0) {
87
87
  this._updateHeightMap(terrainLayers, viewport, opts);
88
88
  }
89
89
  }
90
90
 
91
- const drapeLayers = layers.filter(l => l.state.terrainFittingMode === 'drape');
91
+ const drapeLayers = layers.filter(l => l.state.terrainDrawMode === 'drape');
92
92
  this._updateTerrainCovers(terrainLayers, drapeLayers, viewport, opts);
93
93
  }
94
94
 
95
95
  getModuleParameters(layer: Layer): TerrainModuleSettings {
96
- const {terrainFittingMode} = layer.state;
96
+ const {terrainDrawMode} = layer.state;
97
97
 
98
98
  return {
99
99
  heightMap: this.heightMap?.getRenderFramebuffer(),
100
100
  heightMapBounds: this.heightMap?.bounds,
101
101
  dummyHeightMap: this.dummyHeightMap,
102
102
  terrainCover: this.isDrapingEnabled ? this.terrainCovers.get(layer.id) : null,
103
- useTerrainHeightMap: terrainFittingMode === 'offset',
104
- terrainSkipRender: terrainFittingMode === 'drape' || !layer.props.operation.includes('draw')
103
+ useTerrainHeightMap: terrainDrawMode === 'offset',
104
+ terrainSkipRender: terrainDrawMode === 'drape' || !layer.props.operation.includes('draw')
105
105
  };
106
106
  }
107
107
 
@@ -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
- terrainFittingMode: undefined
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
- terrainFittingMode?: 'offset' | 'drape';
16
+ terrainDrawMode?: 'offset' | 'drape';
17
17
  };
18
18
 
19
19
  type TerrainExtensionState = {
20
20
  /** Resolved fitting mode */
21
- terrainFittingMode: 'offset' | 'drape';
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.terrainFittingMode &&
49
- props.terrainFittingMode === oldProps.terrainFittingMode &&
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 {terrainFittingMode} = props;
57
- if (!terrainFittingMode) {
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
- terrainFittingMode = is3d || hasAnchor ? 'offset' : 'drape';
63
+ terrainDrawMode = is3d || hasAnchor ? 'offset' : 'drape';
64
64
  }
65
- this.setState({terrainFittingMode});
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.terrainFittingMode === 'drape') {
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
- const scale = Math.min(width! / (bounds[2] - bounds[0]), height! / (bounds[3] - bounds[1]));
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);
@@ -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,4 @@
1
+ import type { _ShaderModule as ShaderModule } from '@deck.gl/core/typed';
2
+ declare const _default: ShaderModule<any>;
3
+ export default _default;
4
+ //# sourceMappingURL=shader-module.d.ts.map
@@ -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"}
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 CollideExtension } from './collide/collide';
7
+ export { default as CollisionFilterExtension } from './collision-filter/collision-filter';
8
8
  export { default as MaskExtension } from './mask/mask';
9
- export { default as TerrainExtension } from './terrain/terrain';
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 { CollideExtensionProps } from './collide/collide';
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
@@ -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,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,aAAa,CAAC;AACrD,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAG9D,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,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AAC7D,YAAY,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAC;AACpD,YAAY,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC"}
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 { MaskBounds } from './utils';
3
+ import { Bounds } from '../utils/projection-utils';
4
4
  declare type Mask = {
5
5
  /** The channel index */
6
6
  index: number;
7
- bounds: MaskBounds;
7
+ bounds: Bounds;
8
8
  coordinateOrigin: [number, number, number];
9
9
  coordinateSystem: CoordinateSystem;
10
10
  };
@@ -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,EAAiC,UAAU,EAAC,MAAM,SAAS,CAAC;AAGnE,aAAK,IAAI,GAAG;IACV,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,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;IAgDrB,OAAO,CAAC,cAAc;IAkFtB;;;;;;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
+ {"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 '../common/projection-utils';
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 terrainFittingMode:offset layers,
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,4BAA4B,CAAC;AAGlG,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
+ {"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,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 '../common/projection-utils';
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":"AACA,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,4BAA4B,CAAC;AACvD,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,qCA0Hc,CAAC"}
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 '../common/projection-utils';
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 terrainFittingMode:drape
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,4BAA4B,CAAC;AASlG;;;;;;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
+ {"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"}
@@ -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
- terrainFittingMode?: 'offset' | 'drape';
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
- terrainFittingMode: undefined;
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,kBAAkB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACzC,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"}
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","isPicking","preRenderStats","dummyCollideMap","Texture2D","width","height","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","pass","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 isPicking,\n preRenderStats = {}\n }: PreRenderOptions\n ): void {\n if (!this.dummyCollideMap) {\n this.dummyCollideMap = new Texture2D(gl, {width: 1, height: 1});\n }\n\n if (isPicking) {\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 isPicking: true,\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"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _core = require("@deck.gl/core");
9
-
10
- var vs = "\n#ifdef NON_INSTANCED_MODEL\nattribute float collidePriorities;\n#else\nattribute float instanceCollidePriorities;\n#endif\n\nuniform sampler2D collide_texture;\nuniform bool collide_sort;\nuniform bool collide_enabled;\n\nvec2 collide_getCoords(vec4 position) {\n vec4 collide_clipspace = project_common_position_to_clipspace(position);\n return (1.0 + collide_clipspace.xy / collide_clipspace.w) / 2.0;\n}\n\nfloat collide_match(vec2 tex, vec3 pickingColor) {\n vec4 collide_pickingColor = texture2D(collide_texture, tex);\n float delta = dot(abs(collide_pickingColor.rgb - pickingColor), vec3(1.0));\n float e = 0.001;\n return step(delta, e);\n}\n\nfloat collide_isVisible(vec2 texCoords, vec3 pickingColor) {\n if (!collide_enabled) {\n return 1.0;\n }\n\n // Visibility test, sample area of 5x5 pixels in order to fade in/out.\n // Due to the locality, the lookups will be cached\n // This reduces the flicker present when objects are shown/hidden\n const int N = 2;\n float accumulator = 0.0;\n vec2 step = vec2(1.0 / project_uViewportSize);\n\n const float floatN = float(N);\n vec2 delta = -floatN * step;\n for(int i = -N; i <= N; i++) {\n delta.x = -step.x * floatN;\n for(int j = -N; j <= N; j++) {\n accumulator += collide_match(texCoords + delta, pickingColor);\n delta.x += step.x;\n }\n delta.y += step.y;\n }\n\n float W = 2.0 * floatN + 1.0;\n return pow(accumulator / (W * W), 2.2);\n}\n";
11
- var inject = {
12
- 'vs:#decl': "\n float collide_fade = 1.0;\n",
13
- 'vs:DECKGL_FILTER_GL_POSITION': "\n if (collide_sort) {\n #ifdef NON_INSTANCED_MODEL\n float collidePriority = collidePriorities;\n #else\n float collidePriority = instanceCollidePriorities;\n #endif\n position.z = -0.001 * collidePriority * position.w; // Support range -1000 -> 1000\n }\n\n if (collide_enabled) {\n vec4 collide_common_position = project_position(vec4(geometry.worldPosition, 1.0));\n vec2 collide_texCoords = collide_getCoords(collide_common_position);\n collide_fade = collide_isVisible(collide_texCoords, geometry.pickingColor / 255.0);\n if (collide_fade < 0.0001) {\n position = vec4(0.);\n }\n }\n ",
14
- 'vs:DECKGL_FILTER_COLOR': "\n color.a *= collide_fade;\n "
15
- };
16
-
17
- var getCollideUniforms = function getCollideUniforms(opts, uniforms) {
18
- if (!opts || !('dummyCollideMap' in opts)) {
19
- return {};
20
- }
21
-
22
- var collideFBO = opts.collideFBO,
23
- drawToCollideMap = opts.drawToCollideMap,
24
- dummyCollideMap = opts.dummyCollideMap;
25
- return {
26
- collide_sort: Boolean(drawToCollideMap),
27
- collide_texture: !drawToCollideMap && collideFBO ? collideFBO : dummyCollideMap
28
- };
29
- };
30
-
31
- var _default = {
32
- name: 'collide',
33
- dependencies: [_core.project],
34
- vs: vs,
35
- inject: inject,
36
- getUniforms: getCollideUniforms
37
- };
38
- exports.default = _default;
39
- //# sourceMappingURL=shader-module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/collide/shader-module.ts"],"names":["vs","inject","getCollideUniforms","opts","uniforms","collideFBO","drawToCollideMap","dummyCollideMap","collide_sort","Boolean","collide_texture","name","dependencies","project","getUniforms"],"mappings":";;;;;;;AACA;;AAGA,IAAMA,EAAE,i7CAAR;AAmDA,IAAMC,MAAM,GAAG;AACb,+CADa;AAIb,6pBAJa;AAuBb;AAvBa,CAAf;;AAqCA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CACzBC,IADyB,EAEzBC,QAFyB,EAGL;AACpB,MAAI,CAACD,IAAD,IAAS,EAAE,qBAAqBA,IAAvB,CAAb,EAA2C;AACzC,WAAO,EAAP;AACD;;AACD,MAAOE,UAAP,GAAwDF,IAAxD,CAAOE,UAAP;AAAA,MAAmBC,gBAAnB,GAAwDH,IAAxD,CAAmBG,gBAAnB;AAAA,MAAqCC,eAArC,GAAwDJ,IAAxD,CAAqCI,eAArC;AACA,SAAO;AACLC,IAAAA,YAAY,EAAEC,OAAO,CAACH,gBAAD,CADhB;AAELI,IAAAA,eAAe,EAAE,CAACJ,gBAAD,IAAqBD,UAArB,GAAkCA,UAAlC,GAA+CE;AAF3D,GAAP;AAID,CAZD;;eAce;AACbI,EAAAA,IAAI,EAAE,SADO;AAEbC,EAAAA,YAAY,EAAE,CAACC,aAAD,CAFD;AAGbb,EAAAA,EAAE,EAAFA,EAHa;AAIbC,EAAAA,MAAM,EAANA,MAJa;AAKba,EAAAA,WAAW,EAAEZ;AALA,C","sourcesContent":["import {Framebuffer, Texture2D} from '@luma.gl/core';\nimport {project} from '@deck.gl/core';\nimport type {_ShaderModule as ShaderModule} from '@deck.gl/core';\n\nconst vs = `\n#ifdef NON_INSTANCED_MODEL\nattribute float collidePriorities;\n#else\nattribute float instanceCollidePriorities;\n#endif\n\nuniform sampler2D collide_texture;\nuniform bool collide_sort;\nuniform bool collide_enabled;\n\nvec2 collide_getCoords(vec4 position) {\n vec4 collide_clipspace = project_common_position_to_clipspace(position);\n return (1.0 + collide_clipspace.xy / collide_clipspace.w) / 2.0;\n}\n\nfloat collide_match(vec2 tex, vec3 pickingColor) {\n vec4 collide_pickingColor = texture2D(collide_texture, tex);\n float delta = dot(abs(collide_pickingColor.rgb - pickingColor), vec3(1.0));\n float e = 0.001;\n return step(delta, e);\n}\n\nfloat collide_isVisible(vec2 texCoords, vec3 pickingColor) {\n if (!collide_enabled) {\n return 1.0;\n }\n\n // Visibility test, sample area of 5x5 pixels in order to fade in/out.\n // Due to the locality, the lookups will be cached\n // This reduces the flicker present when objects are shown/hidden\n const int N = 2;\n float accumulator = 0.0;\n vec2 step = vec2(1.0 / project_uViewportSize);\n\n const float floatN = float(N);\n vec2 delta = -floatN * step;\n for(int i = -N; i <= N; i++) {\n delta.x = -step.x * floatN;\n for(int j = -N; j <= N; j++) {\n accumulator += collide_match(texCoords + delta, pickingColor);\n delta.x += step.x;\n }\n delta.y += step.y;\n }\n\n float W = 2.0 * floatN + 1.0;\n return pow(accumulator / (W * W), 2.2);\n}\n`;\n\nconst inject = {\n 'vs:#decl': `\n float collide_fade = 1.0;\n`,\n 'vs:DECKGL_FILTER_GL_POSITION': `\n if (collide_sort) {\n #ifdef NON_INSTANCED_MODEL\n float collidePriority = collidePriorities;\n #else\n float collidePriority = instanceCollidePriorities;\n #endif\n position.z = -0.001 * collidePriority * position.w; // Support range -1000 -> 1000\n }\n\n if (collide_enabled) {\n vec4 collide_common_position = project_position(vec4(geometry.worldPosition, 1.0));\n vec2 collide_texCoords = collide_getCoords(collide_common_position);\n collide_fade = collide_isVisible(collide_texCoords, geometry.pickingColor / 255.0);\n if (collide_fade < 0.0001) {\n position = vec4(0.);\n }\n }\n `,\n 'vs:DECKGL_FILTER_COLOR': `\n color.a *= collide_fade;\n `\n};\n\ntype CollideModuleSettings = {\n collideFBO?: Framebuffer;\n drawToCollideMap?: boolean;\n dummyCollideMap?: Texture2D;\n};\n\n/* eslint-disable camelcase */\ntype CollideUniforms = {collide_sort?: boolean; collide_texture?: Framebuffer | Texture2D};\n\nconst getCollideUniforms = (\n opts: CollideModuleSettings | {},\n uniforms: Record<string, any>\n): CollideUniforms => {\n if (!opts || !('dummyCollideMap' in opts)) {\n return {};\n }\n const {collideFBO, drawToCollideMap, dummyCollideMap} = opts;\n return {\n collide_sort: Boolean(drawToCollideMap),\n collide_texture: !drawToCollideMap && collideFBO ? collideFBO : dummyCollideMap\n };\n};\n\nexport default {\n name: 'collide',\n dependencies: [project],\n vs,\n inject,\n getUniforms: getCollideUniforms\n} as ShaderModule;\n"],"file":"shader-module.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/common/projection-utils.ts"],"names":["joinLayerBounds","layers","viewport","bounds","Infinity","layer","layerBounds","getBounds","bottomLeftCommon","projectPosition","autoOffset","topRightCommon","Math","min","max","Number","isFinite","MAX_VIEWPORT_SIZE","makeViewport","opts","border","isGeospatial","centerWorld","unprojectPosition","maxSize","width","height","zoom","undefined","scale","log2","round","abs","r","WebMercatorViewport","x","y","longitude","latitude","orthographic","OrthographicViewport","target","flipY","getViewportBounds","zRange","viewportBoundsWorld","length","minZ","maxZ","bounds0","z","bounds1","viewportBottomLeftCommon","slice","viewportTopRightCommon","getRenderBounds","viewportBounds","paddedBounds","doubleBounds","dx","dy","centerX","centerY"],"mappings":"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","sourcesContent":["import {WebMercatorViewport, OrthographicViewport} from '@deck.gl/core';\nimport type {Layer, Viewport} from '@deck.gl/core';\n\n/** Bounds in CARTESIAN coordinates */\nexport type Bounds = [minX: number, minY: number, maxX: number, maxY: number];\n\n/*\n * Compute the union of bounds from multiple layers\n * Returns bounds in CARTESIAN coordinates\n */\nexport function joinLayerBounds(\n /** The layers to combine */\n layers: Layer[],\n /** A Viewport instance that is used to determine the type of the view */\n viewport: Viewport\n): Bounds | null {\n // Join the bounds of layer data\n const bounds: Bounds = [Infinity, Infinity, -Infinity, -Infinity];\n for (const layer of layers) {\n const layerBounds = layer.getBounds();\n if (layerBounds) {\n const bottomLeftCommon = layer.projectPosition(layerBounds[0], {viewport, autoOffset: false});\n const topRightCommon = layer.projectPosition(layerBounds[1], {viewport, autoOffset: false});\n\n bounds[0] = Math.min(bounds[0], bottomLeftCommon[0]);\n bounds[1] = Math.min(bounds[1], bottomLeftCommon[1]);\n bounds[2] = Math.max(bounds[2], topRightCommon[0]);\n bounds[3] = Math.max(bounds[3], topRightCommon[1]);\n }\n }\n\n if (Number.isFinite(bounds[0])) {\n return bounds;\n }\n return null;\n}\n\nconst MAX_VIEWPORT_SIZE = 2048;\n\n/** Construct a viewport that just covers the target bounds. Used for rendering to common space indexed texture. */\nexport function makeViewport(opts: {\n /** The cartesian bounds of layers that will render into this texture */\n bounds: Bounds;\n /** Target width. If not specified, will be deduced from zoom */\n width?: number;\n /** Target height. If not specified, will be deduced from zoom */\n height?: number;\n /** Target zoom. If not specified, will be deduced from width and height */\n zoom?: number;\n /** Border around the viewport in pixels */\n border?: number;\n /** A viewport used to determine the output type */\n viewport: Viewport;\n}): Viewport | null {\n const {bounds, viewport, border = 0} = opts;\n const {isGeospatial} = viewport;\n\n if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {\n return null;\n }\n\n const centerWorld = viewport.unprojectPosition([\n (bounds[0] + bounds[2]) / 2,\n (bounds[1] + bounds[3]) / 2,\n 0\n ]);\n\n const maxSize = MAX_VIEWPORT_SIZE - border * 2;\n let {width, height, zoom} = opts;\n if (zoom === undefined) {\n // Use width and height to determine zoom\n const scale = Math.min(width! / (bounds[2] - bounds[0]), height! / (bounds[3] - bounds[1]));\n zoom = Math.min(Math.log2(scale), 20);\n } else if (!width || !height) {\n // Use zoom to determine width and height\n const scale = 2 ** zoom;\n width = Math.round(Math.abs(bounds[2] - bounds[0]) * scale);\n height = Math.round(Math.abs(bounds[3] - bounds[1]) * scale);\n if (width > maxSize || height > maxSize) {\n const r = maxSize / Math.max(width, height);\n width = Math.round(width * r);\n height = Math.round(height * r);\n zoom += Math.log2(r);\n }\n }\n\n // TODO - find a more generic way to construct this viewport\n // Geospatial viewports may not be web-mercator\n return isGeospatial\n ? new WebMercatorViewport({\n x: border,\n y: border,\n width,\n height,\n longitude: centerWorld[0],\n latitude: centerWorld[1],\n zoom,\n orthographic: true\n })\n : new OrthographicViewport({\n x: border,\n y: border,\n width,\n height,\n target: centerWorld,\n zoom,\n flipY: false\n });\n}\n\n/** Returns viewport bounds in CARTESIAN coordinates */\nexport function getViewportBounds(viewport: Viewport, zRange?: [number, number]): Bounds {\n // Viewport bounds in world coordinates\n let viewportBoundsWorld: Bounds;\n if (zRange && zRange.length === 2) {\n const [minZ, maxZ] = zRange;\n const bounds0 = viewport.getBounds({z: minZ});\n const bounds1 = viewport.getBounds({z: maxZ});\n viewportBoundsWorld = [\n Math.min(bounds0[0], bounds1[0]),\n Math.min(bounds0[1], bounds1[1]),\n Math.max(bounds0[2], bounds1[2]),\n Math.max(bounds0[3], bounds1[3])\n ];\n } else {\n viewportBoundsWorld = viewport.getBounds();\n }\n\n // Viewport bounds in cartesian coordinates\n const viewportBottomLeftCommon = viewport.projectPosition(viewportBoundsWorld.slice(0, 2));\n const viewportTopRightCommon = viewport.projectPosition(viewportBoundsWorld.slice(2, 4));\n return [\n viewportBottomLeftCommon[0],\n viewportBottomLeftCommon[1],\n viewportTopRightCommon[0],\n viewportTopRightCommon[1]\n ];\n}\n\n/*\n * Determine the common space bounds that best cover the given data for the given viewport\n * Returns bounds in CARTESIAN coordinates\n */\nexport function getRenderBounds(\n layerBounds: Bounds,\n viewport: Viewport,\n zRange?: [number, number]\n): Bounds {\n if (!layerBounds) {\n return [0, 0, 1, 1];\n }\n\n const viewportBounds = getViewportBounds(viewport, zRange);\n // Expand viewport bounds by 2X. Heurestically chosen to avoid masking\n // errors when mask is partially out of view\n const paddedBounds = doubleBounds(viewportBounds);\n\n // When bounds of the layers are smaller than the viewport bounds simply use\n // mask bounds, so as to maximize resolution & avoid rerenders\n if (\n layerBounds[2] - layerBounds[0] <= paddedBounds[2] - paddedBounds[0] &&\n layerBounds[3] - layerBounds[1] <= paddedBounds[3] - paddedBounds[1]\n ) {\n return layerBounds;\n }\n\n // As viewport shrinks, to avoid pixelation along mask edges\n // we need to reduce the bounds and only render the visible portion\n // of the mask.\n // We pad the viewport bounds to capture the section\n // of the mask just outside the viewport to correctly maskByInstance.\n // Intersect mask & padded viewport bounds\n return [\n Math.max(layerBounds[0], paddedBounds[0]),\n Math.max(layerBounds[1], paddedBounds[1]),\n Math.min(layerBounds[2], paddedBounds[2]),\n Math.min(layerBounds[3], paddedBounds[3])\n ];\n}\n\nfunction doubleBounds(bounds: Bounds): Bounds {\n const dx = bounds[2] - bounds[0];\n const dy = bounds[3] - bounds[1];\n const centerX = (bounds[0] + bounds[2]) / 2;\n const centerY = (bounds[1] + bounds[3]) / 2;\n return [centerX - dx, centerY - dy, centerX + dx, centerY + dy];\n}\n"],"file":"projection-utils.js"}