@deck.gl/extensions 9.0.0-beta.1 → 9.0.0-beta.11
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.js +80 -0
- package/{typed → dist}/brushing/shader-module.d.ts +1 -1
- package/{typed → dist}/brushing/shader-module.d.ts.map +1 -1
- package/dist/brushing/shader-module.js +92 -0
- package/{typed → dist}/clip/clip-extension.d.ts.map +1 -1
- package/dist/clip/clip-extension.js +117 -0
- package/{typed → dist}/collision-filter/collision-filter-effect.d.ts +4 -2
- package/dist/collision-filter/collision-filter-effect.d.ts.map +1 -0
- package/dist/collision-filter/collision-filter-effect.js +194 -0
- package/dist/collision-filter/collision-filter-extension.js +49 -0
- package/{typed → dist}/collision-filter/collision-filter-pass.d.ts +3 -2
- package/dist/collision-filter/collision-filter-pass.d.ts.map +1 -0
- package/dist/collision-filter/collision-filter-pass.js +23 -0
- package/{typed → dist}/collision-filter/shader-module.d.ts.map +1 -1
- package/dist/collision-filter/shader-module.js +87 -0
- package/dist/data-filter/aggregator.d.ts.map +1 -0
- package/dist/{esm/data-filter → data-filter}/aggregator.js +40 -41
- package/{typed → dist}/data-filter/data-filter-extension.d.ts +39 -7
- package/dist/data-filter/data-filter-extension.d.ts.map +1 -0
- package/dist/data-filter/data-filter-extension.js +256 -0
- package/dist/data-filter/shader-module.d.ts +39 -0
- package/dist/data-filter/shader-module.d.ts.map +1 -0
- package/dist/data-filter/shader-module.js +199 -0
- package/dist/dist.dev.js +2667 -11058
- package/{typed → dist}/fill-style/fill-style-extension.d.ts +2 -30
- package/dist/fill-style/fill-style-extension.d.ts.map +1 -0
- package/dist/fill-style/fill-style-extension.js +116 -0
- package/{typed/fill-style/shaders.glsl.d.ts → dist/fill-style/shader-module.d.ts} +1 -1
- package/dist/fill-style/shader-module.d.ts.map +1 -0
- package/dist/fill-style/shader-module.js +96 -0
- package/dist/fp64/fp64-extension.js +35 -0
- package/dist/fp64/project64.glsl.js +81 -0
- package/dist/fp64/project64.js +50 -0
- package/dist/index.cjs +2795 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/{typed → dist}/mask/mask-effect.d.ts +6 -5
- package/dist/mask/mask-effect.d.ts.map +1 -0
- package/dist/mask/mask-effect.js +192 -0
- package/dist/mask/mask-extension.js +57 -0
- package/dist/mask/mask-pass.d.ts +61 -0
- package/dist/mask/mask-pass.d.ts.map +1 -0
- package/dist/mask/mask-pass.js +52 -0
- package/{typed → dist}/mask/shader-module.d.ts.map +1 -1
- package/dist/mask/shader-module.js +77 -0
- package/{typed → dist}/path-style/path-style-extension.d.ts.map +1 -1
- package/dist/path-style/path-style-extension.js +112 -0
- package/dist/path-style/shaders.glsl.js +86 -0
- package/{typed → dist}/terrain/height-map-builder.d.ts +1 -1
- package/dist/terrain/height-map-builder.d.ts.map +1 -0
- package/dist/terrain/height-map-builder.js +104 -0
- package/{typed → dist}/terrain/shader-module.d.ts +2 -2
- package/dist/terrain/shader-module.d.ts.map +1 -0
- package/dist/terrain/shader-module.js +137 -0
- package/{typed → dist}/terrain/terrain-cover.d.ts +1 -1
- package/dist/terrain/terrain-cover.d.ts.map +1 -0
- package/dist/terrain/terrain-cover.js +188 -0
- package/{typed → dist}/terrain/terrain-effect.d.ts +6 -7
- package/dist/terrain/terrain-effect.d.ts.map +1 -0
- package/dist/terrain/terrain-effect.js +174 -0
- package/dist/terrain/terrain-extension.js +44 -0
- package/dist/terrain/terrain-pass.d.ts +53 -0
- package/dist/terrain/terrain-pass.d.ts.map +1 -0
- package/dist/terrain/terrain-pass.js +69 -0
- package/{typed → dist}/terrain/terrain-picking-pass.d.ts +1 -1
- package/dist/terrain/terrain-picking-pass.d.ts.map +1 -0
- package/dist/terrain/terrain-picking-pass.js +67 -0
- package/{typed → dist}/terrain/utils.d.ts +1 -0
- package/{typed → dist}/terrain/utils.d.ts.map +1 -1
- package/dist/terrain/utils.js +25 -0
- package/{typed → dist}/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +50 -0
- package/dist/utils/projection-utils.js +153 -0
- package/dist/utils/syntax-tags.d.ts +6 -0
- package/dist/utils/syntax-tags.d.ts.map +1 -0
- package/dist/utils/syntax-tags.js +5 -0
- package/dist.min.js +918 -1254
- package/package.json +19 -16
- package/src/brushing/shader-module.ts +4 -3
- package/src/clip/clip-extension.ts +10 -9
- package/src/collision-filter/collision-filter-effect.ts +35 -31
- package/src/collision-filter/collision-filter-pass.ts +7 -13
- package/src/collision-filter/shader-module.ts +6 -4
- package/src/data-filter/aggregator.ts +8 -13
- package/src/data-filter/data-filter-extension.ts +181 -56
- package/src/data-filter/shader-module.ts +132 -37
- package/src/fill-style/fill-style-extension.ts +4 -5
- package/src/fill-style/{shaders.glsl.ts → shader-module.ts} +6 -5
- package/src/mask/mask-effect.ts +30 -20
- package/src/mask/mask-pass.ts +22 -18
- package/src/mask/shader-module.ts +7 -6
- package/src/path-style/path-style-extension.ts +1 -0
- package/src/terrain/shader-module.ts +14 -13
- package/src/terrain/terrain-cover.ts +2 -1
- package/src/terrain/terrain-effect.ts +19 -23
- package/src/terrain/terrain-pass.ts +37 -37
- package/src/terrain/terrain-picking-pass.ts +19 -25
- package/src/terrain/utils.ts +13 -7
- package/src/utils/debug.ts +1 -2
- package/src/utils/syntax-tags.ts +5 -0
- package/dist/es5/brushing/brushing-extension.js +0 -108
- package/dist/es5/brushing/brushing-extension.js.map +0 -1
- package/dist/es5/brushing/shader-module.js +0 -50
- package/dist/es5/brushing/shader-module.js.map +0 -1
- package/dist/es5/clip/clip-extension.js +0 -98
- package/dist/es5/clip/clip-extension.js.map +0 -1
- package/dist/es5/collision-filter/collision-filter-effect.js +0 -294
- package/dist/es5/collision-filter/collision-filter-effect.js.map +0 -1
- package/dist/es5/collision-filter/collision-filter-extension.js +0 -109
- package/dist/es5/collision-filter/collision-filter-extension.js.map +0 -1
- package/dist/es5/collision-filter/collision-filter-pass.js +0 -79
- package/dist/es5/collision-filter/collision-filter-pass.js.map +0 -1
- package/dist/es5/collision-filter/shader-module.js +0 -39
- package/dist/es5/collision-filter/shader-module.js.map +0 -1
- package/dist/es5/data-filter/aggregator.js +0 -79
- package/dist/es5/data-filter/aggregator.js.map +0 -1
- package/dist/es5/data-filter/data-filter-extension.js +0 -236
- package/dist/es5/data-filter/data-filter-extension.js.map +0 -1
- package/dist/es5/data-filter/shader-module.js +0 -122
- package/dist/es5/data-filter/shader-module.js.map +0 -1
- package/dist/es5/fill-style/fill-style-extension.js +0 -190
- package/dist/es5/fill-style/fill-style-extension.js.map +0 -1
- package/dist/es5/fill-style/shaders.glsl.js +0 -59
- package/dist/es5/fill-style/shaders.glsl.js.map +0 -1
- package/dist/es5/fp64/fp64-extension.js +0 -55
- package/dist/es5/fp64/fp64-extension.js.map +0 -1
- package/dist/es5/fp64/project64.glsl.js +0 -9
- package/dist/es5/fp64/project64.glsl.js.map +0 -1
- package/dist/es5/fp64/project64.js +0 -52
- package/dist/es5/fp64/project64.js.map +0 -1
- package/dist/es5/index.js +0 -88
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/mask/mask-effect.js +0 -279
- package/dist/es5/mask/mask-effect.js.map +0 -1
- package/dist/es5/mask/mask-extension.js +0 -113
- package/dist/es5/mask/mask-extension.js.map +0 -1
- package/dist/es5/mask/mask-pass.js +0 -106
- package/dist/es5/mask/mask-pass.js.map +0 -1
- package/dist/es5/mask/shader-module.js +0 -38
- package/dist/es5/mask/shader-module.js.map +0 -1
- package/dist/es5/path-style/path-style-extension.js +0 -169
- package/dist/es5/path-style/path-style-extension.js.map +0 -1
- package/dist/es5/path-style/shaders.glsl.js +0 -25
- package/dist/es5/path-style/shaders.glsl.js.map +0 -1
- package/dist/es5/terrain/height-map-builder.js +0 -111
- package/dist/es5/terrain/height-map-builder.js.map +0 -1
- package/dist/es5/terrain/shader-module.js +0 -86
- package/dist/es5/terrain/shader-module.js.map +0 -1
- package/dist/es5/terrain/terrain-cover.js +0 -256
- package/dist/es5/terrain/terrain-cover.js.map +0 -1
- package/dist/es5/terrain/terrain-effect.js +0 -326
- package/dist/es5/terrain/terrain-effect.js.map +0 -1
- package/dist/es5/terrain/terrain-extension.js +0 -94
- package/dist/es5/terrain/terrain-extension.js.map +0 -1
- package/dist/es5/terrain/terrain-pass.js +0 -121
- package/dist/es5/terrain/terrain-pass.js.map +0 -1
- package/dist/es5/terrain/terrain-picking-pass.js +0 -124
- package/dist/es5/terrain/terrain-picking-pass.js.map +0 -1
- package/dist/es5/terrain/utils.js +0 -35
- package/dist/es5/terrain/utils.js.map +0 -1
- package/dist/es5/utils/debug.js +0 -71
- package/dist/es5/utils/debug.js.map +0 -1
- package/dist/es5/utils/projection-utils.js +0 -168
- package/dist/es5/utils/projection-utils.js.map +0 -1
- package/dist/esm/brushing/brushing-extension.js +0 -68
- package/dist/esm/brushing/brushing-extension.js.map +0 -1
- package/dist/esm/brushing/shader-module.js +0 -103
- package/dist/esm/brushing/shader-module.js.map +0 -1
- package/dist/esm/clip/clip-extension.js +0 -86
- package/dist/esm/clip/clip-extension.js.map +0 -1
- package/dist/esm/collision-filter/collision-filter-effect.js +0 -246
- package/dist/esm/collision-filter/collision-filter-effect.js.map +0 -1
- package/dist/esm/collision-filter/collision-filter-extension.js +0 -75
- package/dist/esm/collision-filter/collision-filter-extension.js.map +0 -1
- package/dist/esm/collision-filter/collision-filter-pass.js +0 -32
- package/dist/esm/collision-filter/collision-filter-pass.js.map +0 -1
- package/dist/esm/collision-filter/shader-module.js +0 -104
- package/dist/esm/collision-filter/shader-module.js.map +0 -1
- package/dist/esm/data-filter/aggregator.js.map +0 -1
- package/dist/esm/data-filter/data-filter-extension.js +0 -189
- package/dist/esm/data-filter/data-filter-extension.js.map +0 -1
- package/dist/esm/data-filter/shader-module.js +0 -164
- package/dist/esm/data-filter/shader-module.js.map +0 -1
- package/dist/esm/fill-style/fill-style-extension.js +0 -156
- package/dist/esm/fill-style/fill-style-extension.js.map +0 -1
- package/dist/esm/fill-style/shaders.glsl.js +0 -108
- package/dist/esm/fill-style/shaders.glsl.js.map +0 -1
- package/dist/esm/fp64/fp64-extension.js +0 -20
- package/dist/esm/fp64/fp64-extension.js.map +0 -1
- package/dist/esm/fp64/project64.glsl.js +0 -82
- package/dist/esm/fp64/project64.glsl.js.map +0 -1
- package/dist/esm/fp64/project64.js +0 -43
- package/dist/esm/fp64/project64.js.map +0 -1
- package/dist/esm/index.js +0 -11
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/mask/mask-effect.js +0 -228
- package/dist/esm/mask/mask-effect.js.map +0 -1
- package/dist/esm/mask/mask-extension.js +0 -83
- package/dist/esm/mask/mask-extension.js.map +0 -1
- package/dist/esm/mask/mask-pass.js +0 -58
- package/dist/esm/mask/mask-pass.js.map +0 -1
- package/dist/esm/mask/shader-module.js +0 -84
- package/dist/esm/mask/shader-module.js.map +0 -1
- package/dist/esm/path-style/path-style-extension.js +0 -130
- package/dist/esm/path-style/path-style-extension.js.map +0 -1
- package/dist/esm/path-style/shaders.glsl.js +0 -84
- package/dist/esm/path-style/shaders.glsl.js.map +0 -1
- package/dist/esm/terrain/height-map-builder.js +0 -86
- package/dist/esm/terrain/height-map-builder.js.map +0 -1
- package/dist/esm/terrain/shader-module.js +0 -127
- package/dist/esm/terrain/shader-module.js.map +0 -1
- package/dist/esm/terrain/terrain-cover.js +0 -212
- package/dist/esm/terrain/terrain-cover.js.map +0 -1
- package/dist/esm/terrain/terrain-effect.js +0 -219
- package/dist/esm/terrain/terrain-effect.js.map +0 -1
- package/dist/esm/terrain/terrain-extension.js +0 -59
- package/dist/esm/terrain/terrain-extension.js.map +0 -1
- package/dist/esm/terrain/terrain-pass.js +0 -71
- package/dist/esm/terrain/terrain-pass.js.map +0 -1
- package/dist/esm/terrain/terrain-picking-pass.js +0 -73
- package/dist/esm/terrain/terrain-picking-pass.js.map +0 -1
- package/dist/esm/terrain/utils.js +0 -19
- package/dist/esm/terrain/utils.js.map +0 -1
- package/dist/esm/utils/debug.js +0 -61
- package/dist/esm/utils/debug.js.map +0 -1
- package/dist/esm/utils/projection-utils.js +0 -134
- package/dist/esm/utils/projection-utils.js.map +0 -1
- package/typed/collision-filter/collision-filter-effect.d.ts.map +0 -1
- package/typed/collision-filter/collision-filter-pass.d.ts.map +0 -1
- package/typed/data-filter/aggregator.d.ts.map +0 -1
- package/typed/data-filter/data-filter-extension.d.ts.map +0 -1
- package/typed/data-filter/shader-module.d.ts +0 -9
- package/typed/data-filter/shader-module.d.ts.map +0 -1
- package/typed/fill-style/fill-style-extension.d.ts.map +0 -1
- package/typed/fill-style/shaders.glsl.d.ts.map +0 -1
- package/typed/index.d.ts +0 -19
- package/typed/index.d.ts.map +0 -1
- package/typed/mask/mask-effect.d.ts.map +0 -1
- package/typed/mask/mask-pass.d.ts +0 -19
- package/typed/mask/mask-pass.d.ts.map +0 -1
- package/typed/terrain/height-map-builder.d.ts.map +0 -1
- package/typed/terrain/shader-module.d.ts.map +0 -1
- package/typed/terrain/terrain-cover.d.ts.map +0 -1
- package/typed/terrain/terrain-effect.d.ts.map +0 -1
- package/typed/terrain/terrain-pass.d.ts +0 -11
- package/typed/terrain/terrain-pass.d.ts.map +0 -1
- package/typed/terrain/terrain-picking-pass.d.ts.map +0 -1
- /package/{typed → dist}/brushing/brushing-extension.d.ts +0 -0
- /package/{typed → dist}/brushing/brushing-extension.d.ts.map +0 -0
- /package/{typed → dist}/clip/clip-extension.d.ts +0 -0
- /package/{typed → dist}/collision-filter/collision-filter-extension.d.ts +0 -0
- /package/{typed → dist}/collision-filter/collision-filter-extension.d.ts.map +0 -0
- /package/{typed → dist}/collision-filter/shader-module.d.ts +0 -0
- /package/{typed → dist}/data-filter/aggregator.d.ts +0 -0
- /package/{typed → dist}/fp64/fp64-extension.d.ts +0 -0
- /package/{typed → dist}/fp64/fp64-extension.d.ts.map +0 -0
- /package/{typed → dist}/fp64/project64.d.ts +0 -0
- /package/{typed → dist}/fp64/project64.d.ts.map +0 -0
- /package/{typed → dist}/fp64/project64.glsl.d.ts +0 -0
- /package/{typed → dist}/fp64/project64.glsl.d.ts.map +0 -0
- /package/{typed → dist}/mask/mask-extension.d.ts +0 -0
- /package/{typed → dist}/mask/mask-extension.d.ts.map +0 -0
- /package/{typed → dist}/mask/shader-module.d.ts +0 -0
- /package/{typed → dist}/path-style/path-style-extension.d.ts +0 -0
- /package/{typed → dist}/path-style/shaders.glsl.d.ts +0 -0
- /package/{typed → dist}/path-style/shaders.glsl.d.ts.map +0 -0
- /package/{typed → dist}/terrain/terrain-extension.d.ts +0 -0
- /package/{typed → dist}/terrain/terrain-extension.d.ts.map +0 -0
- /package/{typed → dist}/utils/debug.d.ts +0 -0
- /package/{typed → dist}/utils/projection-utils.d.ts +0 -0
- /package/{typed → dist}/utils/projection-utils.d.ts.map +0 -0
package/package.json
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
"name": "@deck.gl/extensions",
|
|
3
3
|
"description": "Plug-and-play functionalities for deck.gl layers",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"
|
|
5
|
+
"type": "module",
|
|
6
|
+
"version": "9.0.0-beta.11",
|
|
6
7
|
"publishConfig": {
|
|
7
8
|
"access": "public"
|
|
8
9
|
},
|
|
@@ -16,13 +17,19 @@
|
|
|
16
17
|
"type": "git",
|
|
17
18
|
"url": "https://github.com/visgl/deck.gl.git"
|
|
18
19
|
},
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
20
|
+
"types": "dist/index.d.ts",
|
|
21
|
+
"main": "dist/index.cjs",
|
|
22
|
+
"module": "dist/index.js",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"import": "./dist/index.js",
|
|
27
|
+
"require": "./dist/index.cjs"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
22
30
|
"files": [
|
|
23
31
|
"dist",
|
|
24
32
|
"src",
|
|
25
|
-
"typed",
|
|
26
33
|
"dist.min.js"
|
|
27
34
|
],
|
|
28
35
|
"sideEffects": false,
|
|
@@ -31,18 +38,14 @@
|
|
|
31
38
|
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env=dev"
|
|
32
39
|
},
|
|
33
40
|
"dependencies": {
|
|
34
|
-
"@
|
|
35
|
-
"@luma.gl/shadertools": "9.0.
|
|
41
|
+
"@luma.gl/constants": "^9.0.11",
|
|
42
|
+
"@luma.gl/shadertools": "^9.0.11",
|
|
43
|
+
"@math.gl/core": "^4.0.0"
|
|
36
44
|
},
|
|
37
45
|
"peerDependencies": {
|
|
38
|
-
"@deck.gl/core": "^9.0.0-
|
|
39
|
-
"@luma.gl/
|
|
40
|
-
"@luma.gl/
|
|
41
|
-
"@luma.gl/engine": "9.0.0-alpha.54",
|
|
42
|
-
"@luma.gl/shadertools": "9.0.0-alpha.54",
|
|
43
|
-
"@luma.gl/webgl": "9.0.0-alpha.54",
|
|
44
|
-
"@math.gl/core": "^4.0.0",
|
|
45
|
-
"@math.gl/web-mercator": "^4.0.0"
|
|
46
|
+
"@deck.gl/core": "^9.0.0-beta",
|
|
47
|
+
"@luma.gl/core": "^9.0.0",
|
|
48
|
+
"@luma.gl/engine": "^9.0.0"
|
|
46
49
|
},
|
|
47
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "d8a3f5bdb644f85caba9d5c1e74baff8f8a3d439"
|
|
48
51
|
}
|
|
@@ -23,6 +23,7 @@ import {project} from '@deck.gl/core';
|
|
|
23
23
|
import type {Viewport} from '@deck.gl/core';
|
|
24
24
|
|
|
25
25
|
import type {BrushingExtensionProps} from './brushing-extension';
|
|
26
|
+
import {glsl} from '../utils/syntax-tags';
|
|
26
27
|
|
|
27
28
|
type BrushingModuleSettings = {
|
|
28
29
|
// From layer context
|
|
@@ -30,7 +31,7 @@ type BrushingModuleSettings = {
|
|
|
30
31
|
mousePosition?: {x: number; y: number};
|
|
31
32
|
} & BrushingExtensionProps;
|
|
32
33
|
|
|
33
|
-
const vs = `
|
|
34
|
+
const vs = glsl`
|
|
34
35
|
uniform bool brushing_enabled;
|
|
35
36
|
uniform int brushing_target;
|
|
36
37
|
uniform vec2 brushing_mousePos;
|
|
@@ -64,7 +65,7 @@ const vs = `
|
|
|
64
65
|
}
|
|
65
66
|
`;
|
|
66
67
|
|
|
67
|
-
const fs = `
|
|
68
|
+
const fs = glsl`
|
|
68
69
|
uniform bool brushing_enabled;
|
|
69
70
|
in float brushing_isVisible;
|
|
70
71
|
`;
|
|
@@ -77,7 +78,7 @@ const TARGET = {
|
|
|
77
78
|
};
|
|
78
79
|
|
|
79
80
|
const inject = {
|
|
80
|
-
'vs:DECKGL_FILTER_GL_POSITION': `
|
|
81
|
+
'vs:DECKGL_FILTER_GL_POSITION': glsl`
|
|
81
82
|
vec2 brushingTarget;
|
|
82
83
|
vec2 brushingSource;
|
|
83
84
|
if (brushing_target == 3) {
|
|
@@ -22,6 +22,7 @@ import type {ShaderModule} from '@luma.gl/shadertools';
|
|
|
22
22
|
import {LayerExtension} from '@deck.gl/core';
|
|
23
23
|
|
|
24
24
|
import type {Layer} from '@deck.gl/core';
|
|
25
|
+
import {glsl} from '../utils/syntax-tags';
|
|
25
26
|
|
|
26
27
|
const defaultProps = {
|
|
27
28
|
clipBounds: [0, 0, 1, 1],
|
|
@@ -40,7 +41,7 @@ export type ClipExtensionProps = {
|
|
|
40
41
|
clipByInstance?: boolean;
|
|
41
42
|
};
|
|
42
43
|
|
|
43
|
-
const shaderFunction = `
|
|
44
|
+
const shaderFunction = glsl`
|
|
44
45
|
uniform vec4 clip_bounds;
|
|
45
46
|
|
|
46
47
|
bool clip_isInBounds(vec2 position) {
|
|
@@ -58,16 +59,16 @@ const shaderModuleVs: ShaderModule = {
|
|
|
58
59
|
};
|
|
59
60
|
|
|
60
61
|
const injectionVs = {
|
|
61
|
-
'vs:#decl': `
|
|
62
|
+
'vs:#decl': glsl`
|
|
62
63
|
out float clip_isVisible;
|
|
63
64
|
`,
|
|
64
|
-
'vs:DECKGL_FILTER_GL_POSITION': `
|
|
65
|
+
'vs:DECKGL_FILTER_GL_POSITION': glsl`
|
|
65
66
|
clip_isVisible = float(clip_isInBounds(geometry.worldPosition.xy));
|
|
66
67
|
`,
|
|
67
|
-
'fs:#decl': `
|
|
68
|
+
'fs:#decl': glsl`
|
|
68
69
|
in float clip_isVisible;
|
|
69
70
|
`,
|
|
70
|
-
'fs:DECKGL_FILTER_COLOR': `
|
|
71
|
+
'fs:DECKGL_FILTER_COLOR': glsl`
|
|
71
72
|
if (clip_isVisible < 0.5) discard;
|
|
72
73
|
`
|
|
73
74
|
};
|
|
@@ -82,16 +83,16 @@ const shaderModuleFs: ShaderModule = {
|
|
|
82
83
|
};
|
|
83
84
|
|
|
84
85
|
const injectionFs = {
|
|
85
|
-
'vs:#decl': `
|
|
86
|
+
'vs:#decl': glsl`
|
|
86
87
|
out vec2 clip_commonPosition;
|
|
87
88
|
`,
|
|
88
|
-
'vs:DECKGL_FILTER_GL_POSITION': `
|
|
89
|
+
'vs:DECKGL_FILTER_GL_POSITION': glsl`
|
|
89
90
|
clip_commonPosition = geometry.position.xy;
|
|
90
91
|
`,
|
|
91
|
-
'fs:#decl': `
|
|
92
|
+
'fs:#decl': glsl`
|
|
92
93
|
in vec2 clip_commonPosition;
|
|
93
94
|
`,
|
|
94
|
-
'fs:DECKGL_FILTER_COLOR': `
|
|
95
|
+
'fs:DECKGL_FILTER_COLOR': glsl`
|
|
95
96
|
if (!clip_isInBounds(clip_commonPosition)) discard;
|
|
96
97
|
`
|
|
97
98
|
};
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import {Device, Framebuffer, Texture} from '@luma.gl/core';
|
|
2
|
-
import {WEBGLRenderbuffer} from '@luma.gl/webgl';
|
|
3
2
|
import {equals} from '@math.gl/core';
|
|
4
3
|
import {_deepEqual as deepEqual} from '@deck.gl/core';
|
|
5
|
-
import type {Effect, Layer, PreRenderOptions, Viewport} from '@deck.gl/core';
|
|
4
|
+
import type {Effect, EffectContext, Layer, PreRenderOptions, Viewport} from '@deck.gl/core';
|
|
6
5
|
import CollisionFilterPass from './collision-filter-pass';
|
|
7
|
-
import
|
|
6
|
+
import {MaskPreRenderStats} from '../mask/mask-effect';
|
|
8
7
|
// import {debugFBO} from '../utils/debug';
|
|
9
8
|
|
|
10
9
|
type CollisionFilterExtensionProps = {
|
|
@@ -28,28 +27,32 @@ export default class CollisionFilterEffect implements Effect {
|
|
|
28
27
|
useInPicking = true;
|
|
29
28
|
order = 1;
|
|
30
29
|
|
|
30
|
+
private context?: EffectContext;
|
|
31
31
|
private channels: Record<string, RenderInfo> = {};
|
|
32
32
|
private collisionFilterPass?: CollisionFilterPass;
|
|
33
33
|
private collisionFBOs: Record<string, Framebuffer> = {};
|
|
34
34
|
private dummyCollisionMap?: Texture;
|
|
35
35
|
private lastViewport?: Viewport;
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
{
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
37
|
+
setup(context: EffectContext) {
|
|
38
|
+
this.context = context;
|
|
39
|
+
const {device} = context;
|
|
40
|
+
this.dummyCollisionMap = device.createTexture({width: 1, height: 1});
|
|
41
|
+
this.collisionFilterPass = new CollisionFilterPass(device, {id: 'default-collision-filter'});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
preRender({
|
|
45
|
+
effects: allEffects,
|
|
46
|
+
layers,
|
|
47
|
+
layerFilter,
|
|
48
|
+
viewports,
|
|
49
|
+
onViewportActive,
|
|
50
|
+
views,
|
|
51
|
+
isPicking,
|
|
52
|
+
preRenderStats = {}
|
|
53
|
+
}: PreRenderOptions): void {
|
|
54
|
+
// This can only be called in preRender() after setup() where context is populated
|
|
55
|
+
const {device} = this.context!;
|
|
53
56
|
|
|
54
57
|
if (isPicking) {
|
|
55
58
|
// Do not update on picking pass
|
|
@@ -65,12 +68,8 @@ export default class CollisionFilterEffect implements Effect {
|
|
|
65
68
|
return;
|
|
66
69
|
}
|
|
67
70
|
|
|
68
|
-
if (!this.collisionFilterPass) {
|
|
69
|
-
this.collisionFilterPass = new CollisionFilterPass(device, {id: 'default-collision-filter'});
|
|
70
|
-
}
|
|
71
|
-
|
|
72
71
|
// Detect if mask has rendered. TODO: better dependency system for Effects
|
|
73
|
-
const effects = allEffects?.filter(e => e.
|
|
72
|
+
const effects = allEffects?.filter(e => e.useInPicking && preRenderStats[e.id]);
|
|
74
73
|
const maskEffectRendered = (preRenderStats['mask-effect'] as MaskPreRenderStats)?.didRender;
|
|
75
74
|
|
|
76
75
|
// Collect layers to render
|
|
@@ -244,18 +243,23 @@ export default class CollisionFilterEffect implements Effect {
|
|
|
244
243
|
}
|
|
245
244
|
});
|
|
246
245
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
246
|
+
// @ts-ignore
|
|
247
|
+
const depthStencilAttachment = device.createTexture({
|
|
248
|
+
format: 'depth16unorm',
|
|
249
|
+
width,
|
|
250
|
+
height,
|
|
251
|
+
mipmaps: false,
|
|
252
|
+
|
|
253
|
+
// TODO fix getWebGLTextureParameters() in luma to avoid passing deprecated parameters
|
|
254
|
+
dataFormat: 6402, // gl.DEPTH_COMPONENT
|
|
255
|
+
type: 5125 // gl.UNSIGNED_INT
|
|
256
|
+
});
|
|
252
257
|
this.collisionFBOs[collisionGroup] = device.createFramebuffer({
|
|
253
258
|
id: `collision-${collisionGroup}`,
|
|
254
259
|
width,
|
|
255
260
|
height,
|
|
256
261
|
colorAttachments: [collisionMap],
|
|
257
|
-
|
|
258
|
-
depthStencilAttachment: depthBuffer
|
|
262
|
+
depthStencilAttachment
|
|
259
263
|
});
|
|
260
264
|
}
|
|
261
265
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {Framebuffer} from '@luma.gl/core';
|
|
2
|
-
import {
|
|
3
|
-
import {_LayersPass as LayersPass, LayersPassRenderOptions} from '@deck.gl/core';
|
|
2
|
+
import {Layer, _LayersPass as LayersPass, LayersPassRenderOptions, Viewport} from '@deck.gl/core';
|
|
4
3
|
|
|
5
4
|
type CollisionFilterPassRenderOptions = LayersPassRenderOptions & {};
|
|
6
5
|
|
|
@@ -8,18 +7,13 @@ export default class CollisionFilterPass extends LayersPass {
|
|
|
8
7
|
renderCollisionMap(target: Framebuffer, options: CollisionFilterPassRenderOptions) {
|
|
9
8
|
const padding = 1;
|
|
10
9
|
const clearColor = [0, 0, 0, 0];
|
|
10
|
+
const scissorRect = [padding, padding, target.width - 2 * padding, target.height - 2 * padding];
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
blend: false,
|
|
18
|
-
depthTest: true,
|
|
19
|
-
depthRange: [0, 1]
|
|
20
|
-
},
|
|
21
|
-
() => this.render({...options, clearColor, target, pass: 'collision'})
|
|
22
|
-
);
|
|
12
|
+
this.render({...options, clearColor, scissorRect, target, pass: 'collision'});
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
protected getLayerParameters(layer: Layer, layerIndex: number, viewport: Viewport): any {
|
|
16
|
+
return {...layer.props.parameters, blend: false, depthRange: [0, 1], depthTest: true};
|
|
23
17
|
}
|
|
24
18
|
|
|
25
19
|
getModuleParameters() {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {Framebuffer, Texture} from '@luma.gl/core';
|
|
2
2
|
import type {ShaderModule} from '@luma.gl/shadertools';
|
|
3
3
|
import {project} from '@deck.gl/core';
|
|
4
|
+
import {glsl} from '../utils/syntax-tags';
|
|
4
5
|
|
|
5
|
-
const vs = `
|
|
6
|
+
const vs = glsl`
|
|
6
7
|
#ifdef NON_INSTANCED_MODEL
|
|
7
8
|
in float collisionPriorities;
|
|
8
9
|
#else
|
|
@@ -54,10 +55,10 @@ float collision_isVisible(vec2 texCoords, vec3 pickingColor) {
|
|
|
54
55
|
`;
|
|
55
56
|
|
|
56
57
|
const inject = {
|
|
57
|
-
'vs:#decl': `
|
|
58
|
+
'vs:#decl': glsl`
|
|
58
59
|
float collision_fade = 1.0;
|
|
59
60
|
`,
|
|
60
|
-
'vs:DECKGL_FILTER_GL_POSITION': `
|
|
61
|
+
'vs:DECKGL_FILTER_GL_POSITION': glsl`
|
|
61
62
|
if (collision_sort) {
|
|
62
63
|
#ifdef NON_INSTANCED_MODEL
|
|
63
64
|
float collisionPriority = collisionPriorities;
|
|
@@ -77,7 +78,7 @@ const inject = {
|
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
80
|
`,
|
|
80
|
-
'vs:DECKGL_FILTER_COLOR': `
|
|
81
|
+
'vs:DECKGL_FILTER_COLOR': glsl`
|
|
81
82
|
color.a *= collision_fade;
|
|
82
83
|
`
|
|
83
84
|
};
|
|
@@ -101,6 +102,7 @@ const getCollisionUniforms = (
|
|
|
101
102
|
const {collisionFBO, drawToCollisionMap, dummyCollisionMap} = opts;
|
|
102
103
|
return {
|
|
103
104
|
collision_sort: Boolean(drawToCollisionMap),
|
|
105
|
+
// @ts-ignore (v9 not sure why this isn't allowed now)
|
|
104
106
|
collision_texture:
|
|
105
107
|
!drawToCollisionMap && collisionFBO ? collisionFBO.colorAttachments[0] : dummyCollisionMap
|
|
106
108
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {Device, Framebuffer} from '@luma.gl/core';
|
|
1
|
+
import {Device, DeviceFeature, Framebuffer} from '@luma.gl/core';
|
|
2
2
|
import {Model} from '@luma.gl/engine';
|
|
3
3
|
import {GL} from '@luma.gl/constants';
|
|
4
4
|
|
|
@@ -53,18 +53,13 @@ void main() {
|
|
|
53
53
|
}
|
|
54
54
|
`;
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
//
|
|
58
|
-
|
|
56
|
+
const FLOAT_TARGET_FEATURES: DeviceFeature[] = [
|
|
57
|
+
'float32-renderable-webgl', // ability to render to float texture
|
|
58
|
+
'texture-blend-float-webgl' // ability to blend when rendering to float texture
|
|
59
|
+
];
|
|
59
60
|
|
|
60
|
-
|
|
61
|
-
return
|
|
62
|
-
gl.getExtension('EXT_float_blend') &&
|
|
63
|
-
// WebGL 2
|
|
64
|
-
(gl.getExtension('EXT_color_buffer_float') ||
|
|
65
|
-
// WebGL 1
|
|
66
|
-
gl.getExtension('WEBGL_color_buffer_float'))
|
|
67
|
-
);
|
|
61
|
+
export function supportsFloatTarget(device: Device): boolean {
|
|
62
|
+
return FLOAT_TARGET_FEATURES.every(feature => device.features.has(feature));
|
|
68
63
|
}
|
|
69
64
|
|
|
70
65
|
// A 1x1 framebuffer object that encodes the total count of filtered items
|
|
@@ -75,7 +70,7 @@ export function getFramebuffer(device: Device, useFloatTarget: boolean): Framebu
|
|
|
75
70
|
height: 1,
|
|
76
71
|
colorAttachments: [
|
|
77
72
|
device.createTexture({
|
|
78
|
-
format:
|
|
73
|
+
format: 'rgba32float',
|
|
79
74
|
type: GL.FLOAT,
|
|
80
75
|
mipmaps: false
|
|
81
76
|
})
|