@deck.gl/extensions 9.0.34 → 9.1.0-beta.1
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/brushing/brushing-extension.d.ts +1 -0
- package/dist/brushing/brushing-extension.d.ts.map +1 -1
- package/dist/brushing/brushing-extension.js +15 -19
- package/dist/brushing/shader-module.d.ts +8 -2
- package/dist/brushing/shader-module.d.ts.map +1 -1
- package/dist/brushing/shader-module.js +74 -50
- package/dist/clip/clip-extension.d.ts +5 -2
- package/dist/clip/clip-extension.d.ts.map +1 -1
- package/dist/clip/clip-extension.js +36 -42
- package/dist/collision-filter/collision-filter-effect.d.ts +4 -4
- package/dist/collision-filter/collision-filter-effect.d.ts.map +1 -1
- package/dist/collision-filter/collision-filter-effect.js +27 -13
- package/dist/collision-filter/collision-filter-extension.d.ts +1 -1
- package/dist/collision-filter/collision-filter-extension.d.ts.map +1 -1
- package/dist/collision-filter/collision-filter-extension.js +5 -6
- package/dist/collision-filter/collision-filter-pass.d.ts +7 -3
- package/dist/collision-filter/collision-filter-pass.d.ts.map +1 -1
- package/dist/collision-filter/collision-filter-pass.js +8 -3
- package/dist/collision-filter/shader-module.d.ts +3 -2
- package/dist/collision-filter/shader-module.d.ts.map +1 -1
- package/dist/collision-filter/shader-module.js +74 -52
- package/dist/data-filter/aggregator.d.ts +4 -10
- package/dist/data-filter/aggregator.d.ts.map +1 -1
- package/dist/data-filter/aggregator.js +14 -8
- package/dist/data-filter/data-filter-extension.d.ts.map +1 -1
- package/dist/data-filter/data-filter-extension.js +40 -38
- package/dist/data-filter/shader-module.d.ts +11 -4
- package/dist/data-filter/shader-module.d.ts.map +1 -1
- package/dist/data-filter/shader-module.js +189 -131
- package/dist/dist.dev.js +2699 -2028
- package/dist/fill-style/fill-style-extension.d.ts.map +1 -1
- package/dist/fill-style/fill-style-extension.js +11 -4
- package/dist/fill-style/shader-module.d.ts +64 -6
- package/dist/fill-style/shader-module.d.ts.map +1 -1
- package/dist/fill-style/shader-module.js +73 -51
- package/dist/fp64/fp64-extension.d.ts +1 -0
- package/dist/fp64/fp64-extension.d.ts.map +1 -1
- package/dist/fp64/fp64-extension.js +7 -19
- package/dist/fp64/project64.d.ts +2 -2
- package/dist/fp64/project64.d.ts.map +1 -1
- package/dist/fp64/project64.glsl.d.ts +1 -1
- package/dist/fp64/project64.glsl.d.ts.map +1 -1
- package/dist/fp64/project64.glsl.js +18 -21
- package/dist/fp64/project64.js +24 -24
- package/dist/index.cjs +1017 -523
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/mask/mask-effect.d.ts +5 -3
- package/dist/mask/mask-effect.d.ts.map +1 -1
- package/dist/mask/mask-effect.js +12 -5
- package/dist/mask/mask-extension.d.ts +1 -1
- package/dist/mask/mask-extension.d.ts.map +1 -1
- package/dist/mask/mask-extension.js +13 -8
- package/dist/mask/mask-pass.d.ts +38 -38
- package/dist/mask/mask-pass.d.ts.map +1 -1
- package/dist/mask/mask-pass.js +3 -0
- package/dist/mask/shader-module.d.ts +60 -3
- package/dist/mask/shader-module.d.ts.map +1 -1
- package/dist/mask/shader-module.js +73 -46
- package/dist/path-style/path-style-extension.d.ts.map +1 -1
- package/dist/path-style/path-style-extension.js +20 -24
- package/dist/path-style/shaders.glsl.d.ts.map +1 -1
- package/dist/path-style/shaders.glsl.js +11 -7
- package/dist/terrain/height-map-builder.d.ts.map +1 -1
- package/dist/terrain/height-map-builder.js +3 -0
- package/dist/terrain/shader-module.d.ts +60 -6
- package/dist/terrain/shader-module.d.ts.map +1 -1
- package/dist/terrain/shader-module.js +69 -61
- package/dist/terrain/terrain-cover.d.ts.map +1 -1
- package/dist/terrain/terrain-cover.js +3 -0
- package/dist/terrain/terrain-effect.d.ts +4 -2
- package/dist/terrain/terrain-effect.d.ts.map +1 -1
- package/dist/terrain/terrain-effect.js +31 -18
- package/dist/terrain/terrain-extension.d.ts.map +1 -1
- package/dist/terrain/terrain-extension.js +3 -0
- package/dist/terrain/terrain-pass.d.ts +43 -38
- package/dist/terrain/terrain-pass.d.ts.map +1 -1
- package/dist/terrain/terrain-pass.js +10 -0
- package/dist/terrain/terrain-picking-pass.d.ts +5 -0
- package/dist/terrain/terrain-picking-pass.d.ts.map +1 -1
- package/dist/terrain/terrain-picking-pass.js +10 -0
- package/dist/terrain/utils.d.ts.map +1 -1
- package/dist/terrain/utils.js +3 -0
- package/dist/utils/debug.d.ts +2 -2
- package/dist/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +3 -1
- package/dist/utils/projection-utils.d.ts.map +1 -1
- package/dist/utils/projection-utils.js +3 -0
- package/dist.min.js +1102 -817
- package/package.json +8 -8
- package/src/brushing/brushing-extension.ts +17 -20
- package/src/brushing/shader-module.ts +58 -47
- package/src/clip/clip-extension.ts +38 -40
- package/src/collision-filter/collision-filter-effect.ts +31 -20
- package/src/collision-filter/collision-filter-extension.ts +6 -7
- package/src/collision-filter/collision-filter-pass.ts +9 -3
- package/src/collision-filter/shader-module.ts +40 -22
- package/src/data-filter/aggregator.ts +23 -11
- package/src/data-filter/data-filter-extension.ts +68 -48
- package/src/data-filter/shader-module.ts +144 -84
- package/src/fill-style/fill-style-extension.ts +13 -5
- package/src/fill-style/shader-module.ts +84 -52
- package/src/fp64/fp64-extension.ts +8 -19
- package/src/fp64/project64.glsl.ts +18 -21
- package/src/fp64/project64.ts +27 -28
- package/src/index.ts +5 -0
- package/src/mask/mask-effect.ts +17 -7
- package/src/mask/mask-extension.ts +16 -9
- package/src/mask/mask-pass.ts +4 -0
- package/src/mask/shader-module.ts +63 -27
- package/src/path-style/path-style-extension.ts +27 -28
- package/src/path-style/shaders.glsl.ts +13 -7
- package/src/terrain/height-map-builder.ts +4 -0
- package/src/terrain/shader-module.ts +62 -44
- package/src/terrain/terrain-cover.ts +4 -0
- package/src/terrain/terrain-effect.ts +36 -19
- package/src/terrain/terrain-extension.ts +4 -0
- package/src/terrain/terrain-pass.ts +12 -0
- package/src/terrain/terrain-picking-pass.ts +12 -0
- package/src/terrain/utils.ts +4 -0
- package/src/utils/debug.ts +4 -0
- package/src/utils/projection-utils.ts +4 -0
- package/dist/utils/syntax-tags.d.ts +0 -6
- package/dist/utils/syntax-tags.d.ts.map +0 -1
- package/dist/utils/syntax-tags.js +0 -5
- package/src/utils/syntax-tags.ts +0 -5
|
@@ -35,5 +35,6 @@ export default class BrushingExtension extends LayerExtension {
|
|
|
35
35
|
getShaders(): any;
|
|
36
36
|
initializeState(this: Layer<BrushingExtensionProps>, context: LayerContext, extension: this): void;
|
|
37
37
|
finalizeState(this: Layer<BrushingExtensionProps>, context: LayerContext, extension: this): void;
|
|
38
|
+
draw(this: Layer<BrushingExtensionProps>, params: any, extension: this): void;
|
|
38
39
|
}
|
|
39
40
|
//# sourceMappingURL=brushing-extension.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brushing-extension.d.ts","sourceRoot":"","sources":["../../src/brushing/brushing-extension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"brushing-extension.d.ts","sourceRoot":"","sources":["../../src/brushing/brushing-extension.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAUjE,MAAM,MAAM,sBAAsB,CAAC,KAAK,GAAG,GAAG,IAAI;IAChD;;;OAGG;IACH,iBAAiB,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,cAAc,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,eAAe,GAAG,QAAQ,CAAC;IAClE;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,8IAA8I;AAC9I,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,cAAc;IAC3D,MAAM,CAAC,YAAY;;;;;;;;MAAgB;IACnC,MAAM,CAAC,aAAa,SAAuB;IAE3C,UAAU,IAAI,GAAG;IAMjB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI;IA2B3F,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI;IAYzF,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI;CAYvE"}
|
|
@@ -1,22 +1,6 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
-
// furnished to do so, subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in
|
|
11
|
-
// all copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
-
// THE SOFTWARE.
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
20
4
|
import { LayerExtension } from '@deck.gl/core';
|
|
21
5
|
import shaderModule from "./shader-module.js";
|
|
22
6
|
const defaultProps = {
|
|
@@ -68,6 +52,18 @@ class BrushingExtension extends LayerExtension {
|
|
|
68
52
|
});
|
|
69
53
|
}
|
|
70
54
|
}
|
|
55
|
+
draw(params, extension) {
|
|
56
|
+
const { viewport, mousePosition } = params.context;
|
|
57
|
+
const { brushingEnabled, brushingRadius, brushingTarget } = this.props;
|
|
58
|
+
const brushingProps = {
|
|
59
|
+
viewport,
|
|
60
|
+
mousePosition,
|
|
61
|
+
brushingEnabled,
|
|
62
|
+
brushingRadius,
|
|
63
|
+
brushingTarget
|
|
64
|
+
};
|
|
65
|
+
this.setShaderModuleProps({ brushing: brushingProps });
|
|
66
|
+
}
|
|
71
67
|
}
|
|
72
68
|
BrushingExtension.defaultProps = defaultProps;
|
|
73
69
|
BrushingExtension.extensionName = 'BrushingExtension';
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import type { ShaderModule } from '@luma.gl/shadertools';
|
|
2
2
|
import type { Viewport } from '@deck.gl/core';
|
|
3
3
|
import type { BrushingExtensionProps } from "./brushing-extension.js";
|
|
4
|
-
type
|
|
4
|
+
export type BrushingModuleProps = {
|
|
5
5
|
viewport: Viewport;
|
|
6
6
|
mousePosition?: {
|
|
7
7
|
x: number;
|
|
8
8
|
y: number;
|
|
9
9
|
};
|
|
10
10
|
} & BrushingExtensionProps;
|
|
11
|
-
|
|
11
|
+
type BrushingModuleUniforms = {
|
|
12
|
+
enabled?: boolean;
|
|
13
|
+
target?: number;
|
|
14
|
+
mousePos?: [number, number];
|
|
15
|
+
radius?: number;
|
|
16
|
+
};
|
|
17
|
+
declare const _default: ShaderModule<BrushingModuleProps, BrushingModuleUniforms, {}>;
|
|
12
18
|
export default _default;
|
|
13
19
|
//# sourceMappingURL=shader-module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/brushing/shader-module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/brushing/shader-module.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAE5C,OAAO,KAAK,EAAC,sBAAsB,EAAC,gCAA6B;AAEjE,MAAM,MAAM,mBAAmB,GAAG;IAEhC,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;CACxC,GAAG,sBAAsB,CAAC;AAE3B,KAAK,sBAAsB,GAAG;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;wBA0HG,YAAY,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,EAAE,CAAC;AAnClE,wBAmCmE"}
|
|
@@ -1,31 +1,49 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { project } from '@deck.gl/core';
|
|
2
|
-
|
|
5
|
+
const uniformBlock = /* glsl */ `\
|
|
6
|
+
uniform brushingUniforms {
|
|
7
|
+
bool enabled;
|
|
8
|
+
highp int target;
|
|
9
|
+
vec2 mousePos;
|
|
10
|
+
float radius;
|
|
11
|
+
} brushing;
|
|
12
|
+
`;
|
|
13
|
+
const vertex = /* glsl */ `
|
|
14
|
+
in vec2 brushingTargets;
|
|
15
|
+
|
|
16
|
+
out float brushing_isVisible;
|
|
17
|
+
|
|
18
|
+
bool brushing_isPointInRange(vec2 position) {
|
|
19
|
+
if (!brushing.enabled) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
vec2 source_commonspace = project_position(position);
|
|
23
|
+
vec2 target_commonspace = project_position(brushing.mousePos);
|
|
24
|
+
float distance = length((target_commonspace - source_commonspace) / project.commonUnitsPerMeter.xy);
|
|
25
|
+
|
|
26
|
+
return distance <= brushing.radius;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
bool brushing_arePointsInRange(vec2 sourcePos, vec2 targetPos) {
|
|
30
|
+
return brushing_isPointInRange(sourcePos) || brushing_isPointInRange(targetPos);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
void brushing_setVisible(bool visible) {
|
|
34
|
+
brushing_isVisible = float(visible);
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
3
37
|
const vs = `
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
in
|
|
9
|
-
out float brushing_isVisible;
|
|
10
|
-
bool brushing_isPointInRange(vec2 position) {
|
|
11
|
-
if (!brushing_enabled) {
|
|
12
|
-
return true;
|
|
13
|
-
}
|
|
14
|
-
vec2 source_commonspace = project_position(position);
|
|
15
|
-
vec2 target_commonspace = project_position(brushing_mousePos);
|
|
16
|
-
float distance = length((target_commonspace - source_commonspace) / project_uCommonUnitsPerMeter.xy);
|
|
17
|
-
return distance <= brushing_radius;
|
|
18
|
-
}
|
|
19
|
-
bool brushing_arePointsInRange(vec2 sourcePos, vec2 targetPos) {
|
|
20
|
-
return brushing_isPointInRange(sourcePos) || brushing_isPointInRange(targetPos);
|
|
21
|
-
}
|
|
22
|
-
void brushing_setVisible(bool visible) {
|
|
23
|
-
brushing_isVisible = float(visible);
|
|
24
|
-
}
|
|
38
|
+
${uniformBlock}
|
|
39
|
+
${vertex}
|
|
40
|
+
`;
|
|
41
|
+
const fragment = /* glsl */ `
|
|
42
|
+
in float brushing_isVisible;
|
|
25
43
|
`;
|
|
26
44
|
const fs = `
|
|
27
|
-
|
|
28
|
-
|
|
45
|
+
${uniformBlock}
|
|
46
|
+
${fragment}
|
|
29
47
|
`;
|
|
30
48
|
const TARGET = {
|
|
31
49
|
source: 0,
|
|
@@ -34,29 +52,29 @@ const TARGET = {
|
|
|
34
52
|
source_target: 3
|
|
35
53
|
};
|
|
36
54
|
const inject = {
|
|
37
|
-
'vs:DECKGL_FILTER_GL_POSITION': `
|
|
38
|
-
vec2 brushingTarget;
|
|
39
|
-
vec2 brushingSource;
|
|
40
|
-
if (
|
|
41
|
-
brushingTarget = geometry.worldPositionAlt.xy;
|
|
42
|
-
brushingSource = geometry.worldPosition.xy;
|
|
43
|
-
} else if (
|
|
44
|
-
brushingTarget = geometry.worldPosition.xy;
|
|
45
|
-
} else if (
|
|
46
|
-
brushingTarget = geometry.worldPositionAlt.xy;
|
|
47
|
-
} else {
|
|
48
|
-
brushingTarget = brushingTargets;
|
|
49
|
-
}
|
|
50
|
-
bool visible;
|
|
51
|
-
if (
|
|
52
|
-
visible = brushing_arePointsInRange(brushingSource, brushingTarget);
|
|
53
|
-
} else {
|
|
54
|
-
visible = brushing_isPointInRange(brushingTarget);
|
|
55
|
-
}
|
|
56
|
-
brushing_setVisible(visible);
|
|
57
|
-
`,
|
|
55
|
+
'vs:DECKGL_FILTER_GL_POSITION': /* glsl */ `
|
|
56
|
+
vec2 brushingTarget;
|
|
57
|
+
vec2 brushingSource;
|
|
58
|
+
if (brushing.target == 3) {
|
|
59
|
+
brushingTarget = geometry.worldPositionAlt.xy;
|
|
60
|
+
brushingSource = geometry.worldPosition.xy;
|
|
61
|
+
} else if (brushing.target == 0) {
|
|
62
|
+
brushingTarget = geometry.worldPosition.xy;
|
|
63
|
+
} else if (brushing.target == 1) {
|
|
64
|
+
brushingTarget = geometry.worldPositionAlt.xy;
|
|
65
|
+
} else {
|
|
66
|
+
brushingTarget = brushingTargets;
|
|
67
|
+
}
|
|
68
|
+
bool visible;
|
|
69
|
+
if (brushing.target == 3) {
|
|
70
|
+
visible = brushing_arePointsInRange(brushingSource, brushingTarget);
|
|
71
|
+
} else {
|
|
72
|
+
visible = brushing_isPointInRange(brushingTarget);
|
|
73
|
+
}
|
|
74
|
+
brushing_setVisible(visible);
|
|
75
|
+
`,
|
|
58
76
|
'fs:DECKGL_FILTER_COLOR': `
|
|
59
|
-
if (
|
|
77
|
+
if (brushing.enabled && brushing_isVisible < 0.5) {
|
|
60
78
|
discard;
|
|
61
79
|
}
|
|
62
80
|
`
|
|
@@ -73,12 +91,18 @@ export default {
|
|
|
73
91
|
}
|
|
74
92
|
const { brushingEnabled = true, brushingRadius = 10000, brushingTarget = 'source', mousePosition, viewport } = opts;
|
|
75
93
|
return {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
94
|
+
enabled: Boolean(brushingEnabled && mousePosition && viewport.containsPixel(mousePosition)),
|
|
95
|
+
radius: brushingRadius,
|
|
96
|
+
target: TARGET[brushingTarget] || 0,
|
|
97
|
+
mousePos: mousePosition
|
|
80
98
|
? viewport.unproject([mousePosition.x - viewport.x, mousePosition.y - viewport.y])
|
|
81
99
|
: [0, 0]
|
|
82
100
|
};
|
|
101
|
+
},
|
|
102
|
+
uniformTypes: {
|
|
103
|
+
enabled: 'i32',
|
|
104
|
+
target: 'i32',
|
|
105
|
+
mousePos: 'vec2<f32>',
|
|
106
|
+
radius: 'f32'
|
|
83
107
|
}
|
|
84
108
|
};
|
|
@@ -12,6 +12,9 @@ export type ClipExtensionProps = {
|
|
|
12
12
|
*/
|
|
13
13
|
clipByInstance?: boolean;
|
|
14
14
|
};
|
|
15
|
+
export type ClipModuleProps = {
|
|
16
|
+
bounds: [number, number, number, number];
|
|
17
|
+
};
|
|
15
18
|
/** Adds support for clipping rendered layers by rectangular bounds. */
|
|
16
19
|
export default class ClipExtension extends LayerExtension {
|
|
17
20
|
static defaultProps: {
|
|
@@ -20,7 +23,7 @@ export default class ClipExtension extends LayerExtension {
|
|
|
20
23
|
};
|
|
21
24
|
static extensionName: string;
|
|
22
25
|
getShaders(this: Layer<ClipExtensionProps>): {
|
|
23
|
-
modules: ShaderModule[];
|
|
26
|
+
modules: ShaderModule<ClipModuleProps>[];
|
|
24
27
|
inject: {
|
|
25
28
|
'vs:#decl': string;
|
|
26
29
|
'vs:DECKGL_FILTER_GL_POSITION': string;
|
|
@@ -28,6 +31,6 @@ export default class ClipExtension extends LayerExtension {
|
|
|
28
31
|
'fs:DECKGL_FILTER_COLOR': string;
|
|
29
32
|
};
|
|
30
33
|
};
|
|
31
|
-
draw(this: Layer<Required<ClipExtensionProps
|
|
34
|
+
draw(this: Layer<Required<ClipExtensionProps>>): void;
|
|
32
35
|
}
|
|
33
36
|
//# sourceMappingURL=clip-extension.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clip-extension.d.ts","sourceRoot":"","sources":["../../src/clip/clip-extension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clip-extension.d.ts","sourceRoot":"","sources":["../../src/clip/clip-extension.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AAOzC,MAAM,MAAM,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;AAYF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C,CAAC;AAwDF,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;;;;;;;;;IAwB1C,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,GAAG,IAAI;CAmBtD"}
|
|
@@ -1,32 +1,18 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
-
// furnished to do so, subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in
|
|
11
|
-
// all copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
-
// THE SOFTWARE.
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
20
4
|
import { LayerExtension } from '@deck.gl/core';
|
|
21
|
-
import { glsl } from "../utils/syntax-tags.js";
|
|
22
5
|
const defaultProps = {
|
|
23
6
|
clipBounds: [0, 0, 1, 1],
|
|
24
7
|
clipByInstance: undefined
|
|
25
8
|
};
|
|
26
|
-
const shaderFunction = `
|
|
27
|
-
uniform
|
|
9
|
+
const shaderFunction = /* glsl */ `
|
|
10
|
+
uniform clipUniforms {
|
|
11
|
+
vec4 bounds;
|
|
12
|
+
} clip;
|
|
13
|
+
|
|
28
14
|
bool clip_isInBounds(vec2 position) {
|
|
29
|
-
return position.x >=
|
|
15
|
+
return position.x >= clip.bounds[0] && position.y >= clip.bounds[1] && position.x < clip.bounds[2] && position.y < clip.bounds[3];
|
|
30
16
|
}
|
|
31
17
|
`;
|
|
32
18
|
/*
|
|
@@ -34,21 +20,24 @@ return position.x >= clip_bounds[0] && position.y >= clip_bounds[1] && position.
|
|
|
34
20
|
* e.g. ScatterplotLayer - show if the center of a circle is within bounds
|
|
35
21
|
*/
|
|
36
22
|
const shaderModuleVs = {
|
|
37
|
-
name: 'clip
|
|
38
|
-
vs: shaderFunction
|
|
23
|
+
name: 'clip',
|
|
24
|
+
vs: shaderFunction,
|
|
25
|
+
uniformTypes: {
|
|
26
|
+
bounds: 'vec4<f32>'
|
|
27
|
+
}
|
|
39
28
|
};
|
|
40
29
|
const injectionVs = {
|
|
41
|
-
'vs:#decl': `
|
|
30
|
+
'vs:#decl': /* glsl */ `
|
|
42
31
|
out float clip_isVisible;
|
|
43
32
|
`,
|
|
44
|
-
'vs:DECKGL_FILTER_GL_POSITION': `
|
|
45
|
-
clip_isVisible = float(clip_isInBounds(geometry.worldPosition.xy));
|
|
33
|
+
'vs:DECKGL_FILTER_GL_POSITION': /* glsl */ `
|
|
34
|
+
clip_isVisible = float(clip_isInBounds(geometry.worldPosition.xy));
|
|
46
35
|
`,
|
|
47
|
-
'fs:#decl': `
|
|
36
|
+
'fs:#decl': /* glsl */ `
|
|
48
37
|
in float clip_isVisible;
|
|
49
38
|
`,
|
|
50
|
-
'fs:DECKGL_FILTER_COLOR': `
|
|
51
|
-
if (clip_isVisible < 0.5) discard;
|
|
39
|
+
'fs:DECKGL_FILTER_COLOR': /* glsl */ `
|
|
40
|
+
if (clip_isVisible < 0.5) discard;
|
|
52
41
|
`
|
|
53
42
|
};
|
|
54
43
|
/*
|
|
@@ -56,21 +45,24 @@ if (clip_isVisible < 0.5) discard;
|
|
|
56
45
|
* e.g. PolygonLayer - show the part of the polygon that intersect with the bounds
|
|
57
46
|
*/
|
|
58
47
|
const shaderModuleFs = {
|
|
59
|
-
name: 'clip
|
|
60
|
-
fs: shaderFunction
|
|
48
|
+
name: 'clip',
|
|
49
|
+
fs: shaderFunction,
|
|
50
|
+
uniformTypes: {
|
|
51
|
+
bounds: 'vec4<f32>'
|
|
52
|
+
}
|
|
61
53
|
};
|
|
62
54
|
const injectionFs = {
|
|
63
|
-
'vs:#decl': `
|
|
55
|
+
'vs:#decl': /* glsl */ `
|
|
64
56
|
out vec2 clip_commonPosition;
|
|
65
57
|
`,
|
|
66
|
-
'vs:DECKGL_FILTER_GL_POSITION': `
|
|
67
|
-
clip_commonPosition = geometry.position.xy;
|
|
58
|
+
'vs:DECKGL_FILTER_GL_POSITION': /* glsl */ `
|
|
59
|
+
clip_commonPosition = geometry.position.xy;
|
|
68
60
|
`,
|
|
69
|
-
'fs:#decl': `
|
|
61
|
+
'fs:#decl': /* glsl */ `
|
|
70
62
|
in vec2 clip_commonPosition;
|
|
71
63
|
`,
|
|
72
|
-
'fs:DECKGL_FILTER_COLOR': `
|
|
73
|
-
if (!clip_isInBounds(clip_commonPosition)) discard;
|
|
64
|
+
'fs:DECKGL_FILTER_COLOR': /* glsl */ `
|
|
65
|
+
if (!clip_isInBounds(clip_commonPosition)) discard;
|
|
74
66
|
`
|
|
75
67
|
};
|
|
76
68
|
/** Adds support for clipping rendered layers by rectangular bounds. */
|
|
@@ -96,21 +88,23 @@ class ClipExtension extends LayerExtension {
|
|
|
96
88
|
};
|
|
97
89
|
}
|
|
98
90
|
/* eslint-disable camelcase */
|
|
99
|
-
draw(
|
|
91
|
+
draw() {
|
|
100
92
|
const { clipBounds } = this.props;
|
|
93
|
+
const clipProps = {};
|
|
101
94
|
if (this.state.clipByInstance) {
|
|
102
|
-
|
|
95
|
+
clipProps.bounds = clipBounds;
|
|
103
96
|
}
|
|
104
97
|
else {
|
|
105
98
|
const corner0 = this.projectPosition([clipBounds[0], clipBounds[1], 0]);
|
|
106
99
|
const corner1 = this.projectPosition([clipBounds[2], clipBounds[3], 0]);
|
|
107
|
-
|
|
100
|
+
clipProps.bounds = [
|
|
108
101
|
Math.min(corner0[0], corner1[0]),
|
|
109
102
|
Math.min(corner0[1], corner1[1]),
|
|
110
103
|
Math.max(corner0[0], corner1[0]),
|
|
111
104
|
Math.max(corner0[1], corner1[1])
|
|
112
105
|
];
|
|
113
106
|
}
|
|
107
|
+
this.setShaderModuleProps({ clip: clipProps });
|
|
114
108
|
}
|
|
115
109
|
}
|
|
116
110
|
ClipExtension.defaultProps = defaultProps;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Device
|
|
1
|
+
import { Device } from '@luma.gl/core';
|
|
2
2
|
import type { Effect, EffectContext, Layer, PreRenderOptions } from '@deck.gl/core';
|
|
3
|
+
import type { CollisionModuleProps } from "./shader-module.js";
|
|
3
4
|
export default class CollisionFilterEffect implements Effect {
|
|
4
5
|
id: string;
|
|
5
6
|
props: null;
|
|
@@ -19,9 +20,8 @@ export default class CollisionFilterEffect implements Effect {
|
|
|
19
20
|
* Returns a map from collisionGroup to render info
|
|
20
21
|
*/
|
|
21
22
|
private _groupByCollisionGroup;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
dummyCollisionMap: Texture;
|
|
23
|
+
getShaderModuleProps(layer: Layer): {
|
|
24
|
+
collision: CollisionModuleProps;
|
|
25
25
|
};
|
|
26
26
|
cleanup(): void;
|
|
27
27
|
createFBO(device: Device, collisionGroup: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collision-filter-effect.d.ts","sourceRoot":"","sources":["../../src/collision-filter/collision-filter-effect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"collision-filter-effect.d.ts","sourceRoot":"","sources":["../../src/collision-filter/collision-filter-effect.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAuB,MAAM,eAAe,CAAC;AAG3D,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAW,MAAM,eAAe,CAAC;AAM5F,OAAO,KAAK,EAAC,oBAAoB,EAAC,2BAAwB;AAY1D,MAAM,CAAC,OAAO,OAAO,qBAAsB,YAAW,MAAM;IAC1D,EAAE,SAA6B;IAC/B,KAAK,OAAQ;IACb,YAAY,UAAQ;IACpB,KAAK,SAAK;IAEV,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,mBAAmB,CAAC,CAAsB;IAClD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,iBAAiB,CAAC,CAAU;IACpC,OAAO,CAAC,YAAY,CAAC,CAAW;IAEhC,KAAK,CAAC,OAAO,EAAE,aAAa;IAO5B,SAAS,CAAC,EACR,OAAO,EAAE,UAAU,EACnB,MAAM,EACN,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,SAAS,EACT,cAAmB,EACpB,EAAE,gBAAgB,GAAG,IAAI;IAoD1B,OAAO,CAAC,OAAO;IAoEf;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAqC9B,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG;QAClC,SAAS,EAAE,oBAAoB,CAAC;KACjC;IAeD,OAAO,IAAI,IAAI;IAaf,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IA+BhD,UAAU,CAAC,cAAc,EAAE,MAAM;CAOlC"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { equals } from '@math.gl/core';
|
|
2
5
|
import { _deepEqual as deepEqual } from '@deck.gl/core';
|
|
3
6
|
import CollisionFilterPass from "./collision-filter-pass.js";
|
|
@@ -91,11 +94,16 @@ export default class CollisionFilterEffect {
|
|
|
91
94
|
viewports: viewport ? [viewport] : [],
|
|
92
95
|
onViewportActive,
|
|
93
96
|
views,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
shaderModuleProps: {
|
|
98
|
+
collision: {
|
|
99
|
+
enabled: true,
|
|
100
|
+
// To avoid feedback loop forming between Framebuffer and active Texture.
|
|
101
|
+
dummyCollisionMap: this.dummyCollisionMap
|
|
102
|
+
},
|
|
103
|
+
project: {
|
|
104
|
+
// @ts-expect-error TODO - assuming WebGL context
|
|
105
|
+
devicePixelRatio: collisionFBO.device.canvasContext.getDevicePixelRatio() / DOWNSCALE
|
|
106
|
+
}
|
|
99
107
|
}
|
|
100
108
|
});
|
|
101
109
|
}
|
|
@@ -107,7 +115,7 @@ export default class CollisionFilterEffect {
|
|
|
107
115
|
_groupByCollisionGroup(device, collisionLayers) {
|
|
108
116
|
const channelMap = {};
|
|
109
117
|
for (const layer of collisionLayers) {
|
|
110
|
-
const
|
|
118
|
+
const collisionGroup = layer.props.collisionGroup;
|
|
111
119
|
let channelInfo = channelMap[collisionGroup];
|
|
112
120
|
if (!channelInfo) {
|
|
113
121
|
channelInfo = { collisionGroup, layers: [], layerBounds: [], allLayersLoaded: true };
|
|
@@ -135,10 +143,19 @@ export default class CollisionFilterEffect {
|
|
|
135
143
|
}
|
|
136
144
|
return channelMap;
|
|
137
145
|
}
|
|
138
|
-
|
|
139
|
-
const { collisionGroup } = layer
|
|
146
|
+
getShaderModuleProps(layer) {
|
|
147
|
+
const { collisionGroup, collisionEnabled } = layer
|
|
148
|
+
.props;
|
|
140
149
|
const { collisionFBOs, dummyCollisionMap } = this;
|
|
141
|
-
|
|
150
|
+
const collisionFBO = collisionFBOs[collisionGroup];
|
|
151
|
+
const enabled = collisionEnabled && Boolean(collisionFBO);
|
|
152
|
+
return {
|
|
153
|
+
collision: {
|
|
154
|
+
enabled,
|
|
155
|
+
collisionFBO,
|
|
156
|
+
dummyCollisionMap: dummyCollisionMap
|
|
157
|
+
}
|
|
158
|
+
};
|
|
142
159
|
}
|
|
143
160
|
cleanup() {
|
|
144
161
|
if (this.dummyCollisionMap) {
|
|
@@ -171,10 +188,7 @@ export default class CollisionFilterEffect {
|
|
|
171
188
|
format: 'depth16unorm',
|
|
172
189
|
width,
|
|
173
190
|
height,
|
|
174
|
-
mipmaps: false
|
|
175
|
-
// TODO fix getWebGLTextureParameters() in luma to avoid passing deprecated parameters
|
|
176
|
-
dataFormat: 6402, // gl.DEPTH_COMPONENT
|
|
177
|
-
type: 5125 // gl.UNSIGNED_INT
|
|
191
|
+
mipmaps: false
|
|
178
192
|
});
|
|
179
193
|
this.collisionFBOs[collisionGroup] = device.createFramebuffer({
|
|
180
194
|
id: `collision-${collisionGroup}`,
|
|
@@ -34,7 +34,7 @@ export default class CollisionFilterExtension extends LayerExtension {
|
|
|
34
34
|
};
|
|
35
35
|
static extensionName: string;
|
|
36
36
|
getShaders(this: Layer<CollisionFilterExtensionProps>): any;
|
|
37
|
-
draw(this: Layer<CollisionFilterExtensionProps>, {
|
|
37
|
+
draw(this: Layer<CollisionFilterExtensionProps>, { shaderModuleProps }: any): void;
|
|
38
38
|
initializeState(this: Layer<CollisionFilterExtensionProps>, context: LayerContext, extension: this): void;
|
|
39
39
|
getNeedsPickingBuffer(this: Layer<CollisionFilterExtensionProps>): boolean;
|
|
40
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collision-filter-extension.d.ts","sourceRoot":"","sources":["../../src/collision-filter/collision-filter-extension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"collision-filter-extension.d.ts","sourceRoot":"","sources":["../../src/collision-filter/collision-filter-extension.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AAW5E,MAAM,MAAM,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,iBAAiB,EAAC,EAAE,GAAG;IAQzE,eAAe,CACb,IAAI,EAAE,KAAK,CAAC,6BAA6B,CAAC,EAC1C,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,IAAI;IAgBjB,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,6BAA6B,CAAC,GAAG,OAAO;CAG3E"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { LayerExtension } from '@deck.gl/core';
|
|
2
5
|
import collision from "./shader-module.js";
|
|
3
6
|
import CollisionFilterEffect from "./collision-filter-effect.js";
|
|
@@ -13,12 +16,8 @@ class CollisionFilterExtension extends LayerExtension {
|
|
|
13
16
|
return { modules: [collision] };
|
|
14
17
|
}
|
|
15
18
|
/* eslint-disable camelcase */
|
|
16
|
-
draw({
|
|
17
|
-
|
|
18
|
-
const { collisionFBO, drawToCollisionMap } = moduleParameters;
|
|
19
|
-
const enabled = collisionEnabled && Boolean(collisionFBO);
|
|
20
|
-
uniforms.collision_enabled = enabled;
|
|
21
|
-
if (drawToCollisionMap) {
|
|
19
|
+
draw({ shaderModuleProps }) {
|
|
20
|
+
if (shaderModuleProps.collision?.drawToCollisionMap) {
|
|
22
21
|
// Override any props with those defined in collisionTestProps
|
|
23
22
|
// @ts-ignore
|
|
24
23
|
this.props = this.clone(this.props.collisionTestProps).props;
|
|
@@ -4,13 +4,17 @@ type CollisionFilterPassRenderOptions = LayersPassRenderOptions & {};
|
|
|
4
4
|
export default class CollisionFilterPass extends LayersPass {
|
|
5
5
|
renderCollisionMap(target: Framebuffer, options: CollisionFilterPassRenderOptions): void;
|
|
6
6
|
protected getLayerParameters(layer: Layer, layerIndex: number, viewport: Viewport): any;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
getShaderModuleProps(): {
|
|
8
|
+
collision: {
|
|
9
|
+
drawToCollisionMap: boolean;
|
|
10
|
+
};
|
|
9
11
|
picking: {
|
|
10
12
|
isActive: number;
|
|
11
13
|
isAttribute: boolean;
|
|
12
14
|
};
|
|
13
|
-
|
|
15
|
+
lighting: {
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
};
|
|
14
18
|
};
|
|
15
19
|
}
|
|
16
20
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collision-filter-pass.d.ts","sourceRoot":"","sources":["../../src/collision-filter/collision-filter-pass.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"collision-filter-pass.d.ts","sourceRoot":"","sources":["../../src/collision-filter/collision-filter-pass.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,KAAK,EAAE,WAAW,IAAI,UAAU,EAAE,uBAAuB,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAElG,KAAK,gCAAgC,GAAG,uBAAuB,GAAG,EAAE,CAAC;AAErE,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,UAAU;IACzD,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,gCAAgC;IAQjF,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG;IAIvF,oBAAoB;;;;;;;;;;;;CAarB"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { _LayersPass as LayersPass } from '@deck.gl/core';
|
|
2
5
|
export default class CollisionFilterPass extends LayersPass {
|
|
3
6
|
renderCollisionMap(target, options) {
|
|
@@ -9,15 +12,17 @@ export default class CollisionFilterPass extends LayersPass {
|
|
|
9
12
|
getLayerParameters(layer, layerIndex, viewport) {
|
|
10
13
|
return { ...layer.props.parameters, blend: false, depthRange: [0, 1], depthTest: true };
|
|
11
14
|
}
|
|
12
|
-
|
|
15
|
+
getShaderModuleProps() {
|
|
13
16
|
// Draw picking colors into collision FBO
|
|
14
17
|
return {
|
|
15
|
-
|
|
18
|
+
collision: {
|
|
19
|
+
drawToCollisionMap: true
|
|
20
|
+
},
|
|
16
21
|
picking: {
|
|
17
22
|
isActive: 1,
|
|
18
23
|
isAttribute: false
|
|
19
24
|
},
|
|
20
|
-
|
|
25
|
+
lighting: { enabled: false }
|
|
21
26
|
};
|
|
22
27
|
}
|
|
23
28
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Framebuffer, Texture } from '@luma.gl/core';
|
|
2
2
|
import type { ShaderModule } from '@luma.gl/shadertools';
|
|
3
|
-
type
|
|
3
|
+
export type CollisionModuleProps = {
|
|
4
|
+
enabled: boolean;
|
|
4
5
|
collisionFBO?: Framebuffer;
|
|
5
6
|
drawToCollisionMap?: boolean;
|
|
6
7
|
dummyCollisionMap?: Texture;
|
|
7
8
|
};
|
|
8
|
-
declare const _default: ShaderModule<
|
|
9
|
+
declare const _default: ShaderModule<CollisionModuleProps>;
|
|
9
10
|
export default _default;
|
|
10
11
|
//# sourceMappingURL=shader-module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/collision-filter/shader-module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/collision-filter/shader-module.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAE,OAAO,EAAc,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AA8EvD,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;wBAsCG,YAAY,CAAC,oBAAoB,CAAC;AAVvC,wBAUwC"}
|