@deck.gl/extensions 8.7.0-alpha.7 → 8.7.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.dev.js +423 -240
- package/dist/es5/index.js +8 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/mask/mask.js +103 -0
- package/dist/es5/mask/mask.js.map +1 -0
- package/dist/es5/mask/shader-module.js +39 -0
- package/dist/es5/mask/shader-module.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mask/mask.js +72 -0
- package/dist/esm/mask/mask.js.map +1 -0
- package/dist/esm/mask/shader-module.js +29 -0
- package/dist/esm/mask/shader-module.js.map +1 -0
- package/dist.min.js +1 -1
- package/package.json +2 -2
- package/src/index.ts +1 -0
- package/src/mask/mask.js +53 -0
- package/src/mask/shader-module.js +78 -0
package/dist/es5/index.js
CHANGED
|
@@ -41,6 +41,12 @@ Object.defineProperty(exports, "ClipExtension", {
|
|
|
41
41
|
return _clip.default;
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
|
+
Object.defineProperty(exports, "MaskExtension", {
|
|
45
|
+
enumerable: true,
|
|
46
|
+
get: function get() {
|
|
47
|
+
return _mask.default;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
44
50
|
Object.defineProperty(exports, "project64", {
|
|
45
51
|
enumerable: true,
|
|
46
52
|
get: function get() {
|
|
@@ -60,5 +66,7 @@ var _fillStyle = _interopRequireDefault(require("./fill-style/fill-style"));
|
|
|
60
66
|
|
|
61
67
|
var _clip = _interopRequireDefault(require("./clip/clip"));
|
|
62
68
|
|
|
69
|
+
var _mask = _interopRequireDefault(require("./mask/mask"));
|
|
70
|
+
|
|
63
71
|
var _project = _interopRequireDefault(require("./fp64/project64"));
|
|
64
72
|
//# sourceMappingURL=index.js.map
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA","sourcesContent":["export {default as BrushingExtension} from './brushing/brushing';\nexport {default as DataFilterExtension} from './data-filter/data-filter';\nexport {default as Fp64Extension} from './fp64/fp64';\nexport {default as PathStyleExtension} from './path-style/path-style';\nexport {default as FillStyleExtension} from './fill-style/fill-style';\nexport {default as ClipExtension} from './clip/clip';\nexport {default as MaskExtension} from './mask/mask';\n\n// Shader module\nexport {default as project64} from './fp64/project64';\n"],"file":"index.js"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
+
|
|
16
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
|
+
|
|
18
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
19
|
+
|
|
20
|
+
var _core = require("@deck.gl/core");
|
|
21
|
+
|
|
22
|
+
var _shaderModule = _interopRequireDefault(require("./shader-module"));
|
|
23
|
+
|
|
24
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
25
|
+
|
|
26
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
27
|
+
|
|
28
|
+
var defaultProps = {
|
|
29
|
+
maskId: ''
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
var MaskExtension = function (_LayerExtension) {
|
|
33
|
+
(0, _inherits2.default)(MaskExtension, _LayerExtension);
|
|
34
|
+
|
|
35
|
+
var _super = _createSuper(MaskExtension);
|
|
36
|
+
|
|
37
|
+
function MaskExtension() {
|
|
38
|
+
(0, _classCallCheck2.default)(this, MaskExtension);
|
|
39
|
+
return _super.apply(this, arguments);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
(0, _createClass2.default)(MaskExtension, [{
|
|
43
|
+
key: "getShaders",
|
|
44
|
+
value: function getShaders() {
|
|
45
|
+
var maskByInstance = ('instancePositions' in this.getAttributeManager().attributes);
|
|
46
|
+
|
|
47
|
+
if ('maskByInstance' in this.props) {
|
|
48
|
+
maskByInstance = this.props.maskByInstance;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
this.state.maskByInstance = maskByInstance;
|
|
52
|
+
return {
|
|
53
|
+
modules: [_shaderModule.default]
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}, {
|
|
57
|
+
key: "draw",
|
|
58
|
+
value: function draw(_ref) {
|
|
59
|
+
var uniforms = _ref.uniforms,
|
|
60
|
+
context = _ref.context,
|
|
61
|
+
moduleParameters = _ref.moduleParameters;
|
|
62
|
+
uniforms.mask_maskByInstance = this.state.maskByInstance;
|
|
63
|
+
var maskId = this.props.maskId;
|
|
64
|
+
var maskChannels = moduleParameters.maskChannels;
|
|
65
|
+
var viewport = context.viewport;
|
|
66
|
+
|
|
67
|
+
if (maskChannels && maskChannels[maskId]) {
|
|
68
|
+
var _maskChannels$maskId = maskChannels[maskId],
|
|
69
|
+
index = _maskChannels$maskId.index,
|
|
70
|
+
bounds = _maskChannels$maskId.bounds,
|
|
71
|
+
fromCoordinateOrigin = _maskChannels$maskId.coordinateOrigin;
|
|
72
|
+
var fromCoordinateSystem = maskChannels[maskId].coordinateSystem;
|
|
73
|
+
uniforms.mask_enabled = true;
|
|
74
|
+
uniforms.mask_channel = index;
|
|
75
|
+
|
|
76
|
+
if (fromCoordinateSystem === _core.COORDINATE_SYSTEM.DEFAULT) {
|
|
77
|
+
fromCoordinateSystem = viewport.isGeospatial ? _core.COORDINATE_SYSTEM.LNGLAT : _core.COORDINATE_SYSTEM.CARTESIAN;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
var opts = {
|
|
81
|
+
modelMatrix: null,
|
|
82
|
+
fromCoordinateOrigin: fromCoordinateOrigin,
|
|
83
|
+
fromCoordinateSystem: fromCoordinateSystem
|
|
84
|
+
};
|
|
85
|
+
var bl = this.projectPosition([bounds[0], bounds[1], 0], opts);
|
|
86
|
+
var tr = this.projectPosition([bounds[2], bounds[3], 0], opts);
|
|
87
|
+
uniforms.mask_bounds = [bl[0], bl[1], tr[0], tr[1]];
|
|
88
|
+
} else {
|
|
89
|
+
if (maskId) {
|
|
90
|
+
_core.log.warn("Could not find a mask layer with id: ".concat(maskId))();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
uniforms.mask_enabled = false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}]);
|
|
97
|
+
return MaskExtension;
|
|
98
|
+
}(_core.LayerExtension);
|
|
99
|
+
|
|
100
|
+
exports.default = MaskExtension;
|
|
101
|
+
MaskExtension.extensionName = 'MaskExtension';
|
|
102
|
+
MaskExtension.defaultProps = defaultProps;
|
|
103
|
+
//# sourceMappingURL=mask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/mask/mask.js"],"names":["defaultProps","maskId","MaskExtension","maskByInstance","getAttributeManager","attributes","props","state","modules","mask","uniforms","context","moduleParameters","mask_maskByInstance","maskChannels","viewport","index","bounds","fromCoordinateOrigin","coordinateOrigin","fromCoordinateSystem","coordinateSystem","mask_enabled","mask_channel","COORDINATE_SYSTEM","DEFAULT","isGeospatial","LNGLAT","CARTESIAN","opts","modelMatrix","bl","projectPosition","tr","mask_bounds","log","warn","LayerExtension","extensionName"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,YAAY,GAAG;AACnBC,EAAAA,MAAM,EAAE;AADW,CAArB;;IAIqBC,a;;;;;;;;;;;;WACnB,sBAAa;AAEX,UAAIC,cAAc,IAAG,uBAAuB,KAAKC,mBAAL,GAA2BC,UAArD,CAAlB;;AAEA,UAAI,oBAAoB,KAAKC,KAA7B,EAAoC;AAClCH,QAAAA,cAAc,GAAG,KAAKG,KAAL,CAAWH,cAA5B;AACD;;AACD,WAAKI,KAAL,CAAWJ,cAAX,GAA4BA,cAA5B;AAEA,aAAO;AACLK,QAAAA,OAAO,EAAE,CAACC,qBAAD;AADJ,OAAP;AAGD;;;WAED,oBAA4C;AAAA,UAAtCC,QAAsC,QAAtCA,QAAsC;AAAA,UAA5BC,OAA4B,QAA5BA,OAA4B;AAAA,UAAnBC,gBAAmB,QAAnBA,gBAAmB;AAC1CF,MAAAA,QAAQ,CAACG,mBAAT,GAA+B,KAAKN,KAAL,CAAWJ,cAA1C;AACA,UAAOF,MAAP,GAAiB,KAAKK,KAAtB,CAAOL,MAAP;AACA,UAAOa,YAAP,GAAuBF,gBAAvB,CAAOE,YAAP;AACA,UAAOC,QAAP,GAAmBJ,OAAnB,CAAOI,QAAP;;AACA,UAAID,YAAY,IAAIA,YAAY,CAACb,MAAD,CAAhC,EAA0C;AACxC,mCAAgEa,YAAY,CAACb,MAAD,CAA5E;AAAA,YAAOe,KAAP,wBAAOA,KAAP;AAAA,YAAcC,MAAd,wBAAcA,MAAd;AAAA,YAAwCC,oBAAxC,wBAAsBC,gBAAtB;AACA,YAAuBC,oBAAvB,GAA+CN,YAAY,CAACb,MAAD,CAA3D,CAAKoB,gBAAL;AACAX,QAAAA,QAAQ,CAACY,YAAT,GAAwB,IAAxB;AACAZ,QAAAA,QAAQ,CAACa,YAAT,GAAwBP,KAAxB;;AAEA,YAAII,oBAAoB,KAAKI,wBAAkBC,OAA/C,EAAwD;AACtDL,UAAAA,oBAAoB,GAAGL,QAAQ,CAACW,YAAT,GACnBF,wBAAkBG,MADC,GAEnBH,wBAAkBI,SAFtB;AAGD;;AACD,YAAMC,IAAI,GAAG;AAACC,UAAAA,WAAW,EAAE,IAAd;AAAoBZ,UAAAA,oBAAoB,EAApBA,oBAApB;AAA0CE,UAAAA,oBAAoB,EAApBA;AAA1C,SAAb;AACA,YAAMW,EAAE,GAAG,KAAKC,eAAL,CAAqB,CAACf,MAAM,CAAC,CAAD,CAAP,EAAYA,MAAM,CAAC,CAAD,CAAlB,EAAuB,CAAvB,CAArB,EAAgDY,IAAhD,CAAX;AACA,YAAMI,EAAE,GAAG,KAAKD,eAAL,CAAqB,CAACf,MAAM,CAAC,CAAD,CAAP,EAAYA,MAAM,CAAC,CAAD,CAAlB,EAAuB,CAAvB,CAArB,EAAgDY,IAAhD,CAAX;AACAnB,QAAAA,QAAQ,CAACwB,WAAT,GAAuB,CAACH,EAAE,CAAC,CAAD,CAAH,EAAQA,EAAE,CAAC,CAAD,CAAV,EAAeE,EAAE,CAAC,CAAD,CAAjB,EAAsBA,EAAE,CAAC,CAAD,CAAxB,CAAvB;AACD,OAfD,MAeO;AACL,YAAIhC,MAAJ,EAAY;AACVkC,oBAAIC,IAAJ,gDAAiDnC,MAAjD;AACD;;AACDS,QAAAA,QAAQ,CAACY,YAAT,GAAwB,KAAxB;AACD;AACF;;;EAzCwCe,oB;;;AA4C3CnC,aAAa,CAACoC,aAAd,GAA8B,eAA9B;AACApC,aAAa,CAACF,YAAd,GAA6BA,YAA7B","sourcesContent":["import {COORDINATE_SYSTEM, LayerExtension, log} from '@deck.gl/core';\nimport mask from './shader-module';\n\nconst defaultProps = {\n maskId: ''\n};\n\nexport default class MaskExtension extends LayerExtension {\n getShaders() {\n // Infer by geometry if 'maskByInstance' prop isn't explictly set\n let maskByInstance = 'instancePositions' in this.getAttributeManager().attributes;\n // Users can override by setting the `maskByInstance` prop\n if ('maskByInstance' in this.props) {\n maskByInstance = this.props.maskByInstance;\n }\n this.state.maskByInstance = maskByInstance;\n\n return {\n modules: [mask]\n };\n }\n\n draw({uniforms, context, moduleParameters}) {\n uniforms.mask_maskByInstance = this.state.maskByInstance;\n const {maskId} = this.props;\n const {maskChannels} = moduleParameters;\n const {viewport} = context;\n if (maskChannels && maskChannels[maskId]) {\n const {index, bounds, coordinateOrigin: fromCoordinateOrigin} = maskChannels[maskId];\n let {coordinateSystem: fromCoordinateSystem} = maskChannels[maskId];\n uniforms.mask_enabled = true;\n uniforms.mask_channel = index;\n\n if (fromCoordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n fromCoordinateSystem = viewport.isGeospatial\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN;\n }\n const opts = {modelMatrix: null, fromCoordinateOrigin, fromCoordinateSystem};\n const bl = this.projectPosition([bounds[0], bounds[1], 0], opts);\n const tr = this.projectPosition([bounds[2], bounds[3], 0], opts);\n uniforms.mask_bounds = [bl[0], bl[1], tr[0], tr[1]];\n } else {\n if (maskId) {\n log.warn(`Could not find a mask layer with id: ${maskId}`)();\n }\n uniforms.mask_enabled = false;\n }\n }\n}\n\nMaskExtension.extensionName = 'MaskExtension';\nMaskExtension.defaultProps = defaultProps;\n"],"file":"mask.js"}
|
|
@@ -0,0 +1,39 @@
|
|
|
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 = "\nuniform vec4 mask_bounds;\nuniform bool mask_maskByInstance;\nvec2 mask_getCoords(vec4 position) {\n return (position.xy - mask_bounds.xy) / (mask_bounds.zw - mask_bounds.xy);\n}\n";
|
|
11
|
+
var fs = "\nuniform sampler2D mask_texture;\nuniform int mask_channel;\nuniform bool mask_enabled;\nbool mask_isInBounds(vec2 texCoords) {\n if (!mask_enabled) {\n return true;\n }\n vec4 maskColor = texture2D(mask_texture, texCoords);\n float maskValue = 1.0;\n if (mask_channel == 0) {\n maskValue = maskColor.r;\n } else if (mask_channel == 1) {\n maskValue = maskColor.g;\n } else if (mask_channel == 2) {\n maskValue = maskColor.b;\n } else if (mask_channel == 3) {\n maskValue = maskColor.a;\n }\n return maskValue < 0.5;\n}\n";
|
|
12
|
+
var inject = {
|
|
13
|
+
'vs:#decl': "\nvarying vec2 mask_texCoords;\n",
|
|
14
|
+
'vs:#main-end': "\n vec4 mask_common_position;\n if (mask_maskByInstance) {\n mask_common_position = project_position(vec4(geometry.worldPosition, 1.0));\n } else {\n mask_common_position = geometry.position;\n }\n mask_texCoords = mask_getCoords(mask_common_position);\n",
|
|
15
|
+
'fs:#decl': "\nvarying vec2 mask_texCoords;\n",
|
|
16
|
+
'fs:#main-start': "\n if (mask_enabled) {\n bool mask = mask_isInBounds(mask_texCoords);\n\n // Debug: show extent of render target\n // gl_FragColor = vec4(mask_texCoords, 0.0, 1.0);\n gl_FragColor = texture2D(mask_texture, mask_texCoords);\n\n if (!mask) discard;\n }\n"
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
var getMaskUniforms = function getMaskUniforms() {
|
|
20
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
21
|
+
var uniforms = {};
|
|
22
|
+
|
|
23
|
+
if (opts.maskMap) {
|
|
24
|
+
uniforms.mask_texture = opts.maskMap;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return uniforms;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
var _default = {
|
|
31
|
+
name: 'mask',
|
|
32
|
+
dependencies: [_core.project],
|
|
33
|
+
vs: vs,
|
|
34
|
+
fs: fs,
|
|
35
|
+
inject: inject,
|
|
36
|
+
getUniforms: getMaskUniforms
|
|
37
|
+
};
|
|
38
|
+
exports.default = _default;
|
|
39
|
+
//# sourceMappingURL=shader-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/mask/shader-module.js"],"names":["vs","fs","inject","getMaskUniforms","opts","uniforms","maskMap","mask_texture","name","dependencies","project","getUniforms"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,EAAE,4LAAR;AAQA,IAAMC,EAAE,wiBAAR;AAuBA,IAAMC,MAAM,GAAG;AACb,gDADa;AAIb,oSAJa;AAab,gDAba;AAgBb;AAhBa,CAAf;;AA6BA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,GAAe;AAAA,MAAdC,IAAc,uEAAP,EAAO;AACrC,MAAMC,QAAQ,GAAG,EAAjB;;AACA,MAAID,IAAI,CAACE,OAAT,EAAkB;AAChBD,IAAAA,QAAQ,CAACE,YAAT,GAAwBH,IAAI,CAACE,OAA7B;AACD;;AACD,SAAOD,QAAP;AACD,CAND;;eAQe;AACbG,EAAAA,IAAI,EAAE,MADO;AAEbC,EAAAA,YAAY,EAAE,CAACC,aAAD,CAFD;AAGbV,EAAAA,EAAE,EAAFA,EAHa;AAIbC,EAAAA,EAAE,EAAFA,EAJa;AAKbC,EAAAA,MAAM,EAANA,MALa;AAMbS,EAAAA,WAAW,EAAER;AANA,C","sourcesContent":["import {project} from '@deck.gl/core';\n\nconst vs = `\nuniform vec4 mask_bounds;\nuniform bool mask_maskByInstance;\nvec2 mask_getCoords(vec4 position) {\n return (position.xy - mask_bounds.xy) / (mask_bounds.zw - mask_bounds.xy);\n}\n`;\n\nconst fs = `\nuniform sampler2D mask_texture;\nuniform int mask_channel;\nuniform bool mask_enabled;\nbool mask_isInBounds(vec2 texCoords) {\n if (!mask_enabled) {\n return true;\n }\n vec4 maskColor = texture2D(mask_texture, texCoords);\n float maskValue = 1.0;\n if (mask_channel == 0) {\n maskValue = maskColor.r;\n } else if (mask_channel == 1) {\n maskValue = maskColor.g;\n } else if (mask_channel == 2) {\n maskValue = maskColor.b;\n } else if (mask_channel == 3) {\n maskValue = maskColor.a;\n }\n return maskValue < 0.5;\n}\n`;\n\nconst inject = {\n 'vs:#decl': `\nvarying vec2 mask_texCoords;\n`,\n 'vs:#main-end': `\n vec4 mask_common_position;\n if (mask_maskByInstance) {\n mask_common_position = project_position(vec4(geometry.worldPosition, 1.0));\n } else {\n mask_common_position = geometry.position;\n }\n mask_texCoords = mask_getCoords(mask_common_position);\n`,\n 'fs:#decl': `\nvarying vec2 mask_texCoords;\n`,\n 'fs:#main-start': `\n if (mask_enabled) {\n bool mask = mask_isInBounds(mask_texCoords);\n\n // Debug: show extent of render target\n // gl_FragColor = vec4(mask_texCoords, 0.0, 1.0);\n gl_FragColor = texture2D(mask_texture, mask_texCoords);\n\n if (!mask) discard;\n }\n`\n};\n\nconst getMaskUniforms = (opts = {}) => {\n const uniforms = {};\n if (opts.maskMap) {\n uniforms.mask_texture = opts.maskMap;\n }\n return uniforms;\n};\n\nexport default {\n name: 'mask',\n dependencies: [project],\n vs,\n fs,\n inject,\n getUniforms: getMaskUniforms\n};\n"],"file":"shader-module.js"}
|
package/dist/esm/index.js
CHANGED
|
@@ -4,5 +4,6 @@ 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 MaskExtension } from './mask/mask';
|
|
7
8
|
export { default as project64 } from './fp64/project64';
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":["default","BrushingExtension","DataFilterExtension","Fp64Extension","PathStyleExtension","FillStyleExtension","ClipExtension","project64"],"mappings":"AAAA,SAAQA,OAAO,IAAIC,iBAAnB,QAA2C,qBAA3C;AACA,SAAQD,OAAO,IAAIE,mBAAnB,QAA6C,2BAA7C;AACA,SAAQF,OAAO,IAAIG,aAAnB,QAAuC,aAAvC;AACA,SAAQH,OAAO,IAAII,kBAAnB,QAA4C,yBAA5C;AACA,SAAQJ,OAAO,IAAIK,kBAAnB,QAA4C,yBAA5C;AACA,SAAQL,OAAO,IAAIM,aAAnB,QAAuC,aAAvC;
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":["default","BrushingExtension","DataFilterExtension","Fp64Extension","PathStyleExtension","FillStyleExtension","ClipExtension","MaskExtension","project64"],"mappings":"AAAA,SAAQA,OAAO,IAAIC,iBAAnB,QAA2C,qBAA3C;AACA,SAAQD,OAAO,IAAIE,mBAAnB,QAA6C,2BAA7C;AACA,SAAQF,OAAO,IAAIG,aAAnB,QAAuC,aAAvC;AACA,SAAQH,OAAO,IAAII,kBAAnB,QAA4C,yBAA5C;AACA,SAAQJ,OAAO,IAAIK,kBAAnB,QAA4C,yBAA5C;AACA,SAAQL,OAAO,IAAIM,aAAnB,QAAuC,aAAvC;AACA,SAAQN,OAAO,IAAIO,aAAnB,QAAuC,aAAvC;AAGA,SAAQP,OAAO,IAAIQ,SAAnB,QAAmC,kBAAnC","sourcesContent":["export {default as BrushingExtension} from './brushing/brushing';\nexport {default as DataFilterExtension} from './data-filter/data-filter';\nexport {default as Fp64Extension} from './fp64/fp64';\nexport {default as PathStyleExtension} from './path-style/path-style';\nexport {default as FillStyleExtension} from './fill-style/fill-style';\nexport {default as ClipExtension} from './clip/clip';\nexport {default as MaskExtension} from './mask/mask';\n\n// Shader module\nexport {default as project64} from './fp64/project64';\n"],"file":"index.js"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { COORDINATE_SYSTEM, LayerExtension, log } from '@deck.gl/core';
|
|
2
|
+
import mask from './shader-module';
|
|
3
|
+
const defaultProps = {
|
|
4
|
+
maskId: ''
|
|
5
|
+
};
|
|
6
|
+
export default class MaskExtension extends LayerExtension {
|
|
7
|
+
getShaders() {
|
|
8
|
+
let maskByInstance = ('instancePositions' in this.getAttributeManager().attributes);
|
|
9
|
+
|
|
10
|
+
if ('maskByInstance' in this.props) {
|
|
11
|
+
maskByInstance = this.props.maskByInstance;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
this.state.maskByInstance = maskByInstance;
|
|
15
|
+
return {
|
|
16
|
+
modules: [mask]
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
draw({
|
|
21
|
+
uniforms,
|
|
22
|
+
context,
|
|
23
|
+
moduleParameters
|
|
24
|
+
}) {
|
|
25
|
+
uniforms.mask_maskByInstance = this.state.maskByInstance;
|
|
26
|
+
const {
|
|
27
|
+
maskId
|
|
28
|
+
} = this.props;
|
|
29
|
+
const {
|
|
30
|
+
maskChannels
|
|
31
|
+
} = moduleParameters;
|
|
32
|
+
const {
|
|
33
|
+
viewport
|
|
34
|
+
} = context;
|
|
35
|
+
|
|
36
|
+
if (maskChannels && maskChannels[maskId]) {
|
|
37
|
+
const {
|
|
38
|
+
index,
|
|
39
|
+
bounds,
|
|
40
|
+
coordinateOrigin: fromCoordinateOrigin
|
|
41
|
+
} = maskChannels[maskId];
|
|
42
|
+
let {
|
|
43
|
+
coordinateSystem: fromCoordinateSystem
|
|
44
|
+
} = maskChannels[maskId];
|
|
45
|
+
uniforms.mask_enabled = true;
|
|
46
|
+
uniforms.mask_channel = index;
|
|
47
|
+
|
|
48
|
+
if (fromCoordinateSystem === COORDINATE_SYSTEM.DEFAULT) {
|
|
49
|
+
fromCoordinateSystem = viewport.isGeospatial ? COORDINATE_SYSTEM.LNGLAT : COORDINATE_SYSTEM.CARTESIAN;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const opts = {
|
|
53
|
+
modelMatrix: null,
|
|
54
|
+
fromCoordinateOrigin,
|
|
55
|
+
fromCoordinateSystem
|
|
56
|
+
};
|
|
57
|
+
const bl = this.projectPosition([bounds[0], bounds[1], 0], opts);
|
|
58
|
+
const tr = this.projectPosition([bounds[2], bounds[3], 0], opts);
|
|
59
|
+
uniforms.mask_bounds = [bl[0], bl[1], tr[0], tr[1]];
|
|
60
|
+
} else {
|
|
61
|
+
if (maskId) {
|
|
62
|
+
log.warn("Could not find a mask layer with id: ".concat(maskId))();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
uniforms.mask_enabled = false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
}
|
|
70
|
+
MaskExtension.extensionName = 'MaskExtension';
|
|
71
|
+
MaskExtension.defaultProps = defaultProps;
|
|
72
|
+
//# sourceMappingURL=mask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/mask/mask.js"],"names":["COORDINATE_SYSTEM","LayerExtension","log","mask","defaultProps","maskId","MaskExtension","getShaders","maskByInstance","getAttributeManager","attributes","props","state","modules","draw","uniforms","context","moduleParameters","mask_maskByInstance","maskChannels","viewport","index","bounds","coordinateOrigin","fromCoordinateOrigin","coordinateSystem","fromCoordinateSystem","mask_enabled","mask_channel","DEFAULT","isGeospatial","LNGLAT","CARTESIAN","opts","modelMatrix","bl","projectPosition","tr","mask_bounds","warn","extensionName"],"mappings":"AAAA,SAAQA,iBAAR,EAA2BC,cAA3B,EAA2CC,GAA3C,QAAqD,eAArD;AACA,OAAOC,IAAP,MAAiB,iBAAjB;AAEA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,MAAM,EAAE;AADW,CAArB;AAIA,eAAe,MAAMC,aAAN,SAA4BL,cAA5B,CAA2C;AACxDM,EAAAA,UAAU,GAAG;AAEX,QAAIC,cAAc,IAAG,uBAAuB,KAAKC,mBAAL,GAA2BC,UAArD,CAAlB;;AAEA,QAAI,oBAAoB,KAAKC,KAA7B,EAAoC;AAClCH,MAAAA,cAAc,GAAG,KAAKG,KAAL,CAAWH,cAA5B;AACD;;AACD,SAAKI,KAAL,CAAWJ,cAAX,GAA4BA,cAA5B;AAEA,WAAO;AACLK,MAAAA,OAAO,EAAE,CAACV,IAAD;AADJ,KAAP;AAGD;;AAEDW,EAAAA,IAAI,CAAC;AAACC,IAAAA,QAAD;AAAWC,IAAAA,OAAX;AAAoBC,IAAAA;AAApB,GAAD,EAAwC;AAC1CF,IAAAA,QAAQ,CAACG,mBAAT,GAA+B,KAAKN,KAAL,CAAWJ,cAA1C;AACA,UAAM;AAACH,MAAAA;AAAD,QAAW,KAAKM,KAAtB;AACA,UAAM;AAACQ,MAAAA;AAAD,QAAiBF,gBAAvB;AACA,UAAM;AAACG,MAAAA;AAAD,QAAaJ,OAAnB;;AACA,QAAIG,YAAY,IAAIA,YAAY,CAACd,MAAD,CAAhC,EAA0C;AACxC,YAAM;AAACgB,QAAAA,KAAD;AAAQC,QAAAA,MAAR;AAAgBC,QAAAA,gBAAgB,EAAEC;AAAlC,UAA0DL,YAAY,CAACd,MAAD,CAA5E;AACA,UAAI;AAACoB,QAAAA,gBAAgB,EAAEC;AAAnB,UAA2CP,YAAY,CAACd,MAAD,CAA3D;AACAU,MAAAA,QAAQ,CAACY,YAAT,GAAwB,IAAxB;AACAZ,MAAAA,QAAQ,CAACa,YAAT,GAAwBP,KAAxB;;AAEA,UAAIK,oBAAoB,KAAK1B,iBAAiB,CAAC6B,OAA/C,EAAwD;AACtDH,QAAAA,oBAAoB,GAAGN,QAAQ,CAACU,YAAT,GACnB9B,iBAAiB,CAAC+B,MADC,GAEnB/B,iBAAiB,CAACgC,SAFtB;AAGD;;AACD,YAAMC,IAAI,GAAG;AAACC,QAAAA,WAAW,EAAE,IAAd;AAAoBV,QAAAA,oBAApB;AAA0CE,QAAAA;AAA1C,OAAb;AACA,YAAMS,EAAE,GAAG,KAAKC,eAAL,CAAqB,CAACd,MAAM,CAAC,CAAD,CAAP,EAAYA,MAAM,CAAC,CAAD,CAAlB,EAAuB,CAAvB,CAArB,EAAgDW,IAAhD,CAAX;AACA,YAAMI,EAAE,GAAG,KAAKD,eAAL,CAAqB,CAACd,MAAM,CAAC,CAAD,CAAP,EAAYA,MAAM,CAAC,CAAD,CAAlB,EAAuB,CAAvB,CAArB,EAAgDW,IAAhD,CAAX;AACAlB,MAAAA,QAAQ,CAACuB,WAAT,GAAuB,CAACH,EAAE,CAAC,CAAD,CAAH,EAAQA,EAAE,CAAC,CAAD,CAAV,EAAeE,EAAE,CAAC,CAAD,CAAjB,EAAsBA,EAAE,CAAC,CAAD,CAAxB,CAAvB;AACD,KAfD,MAeO;AACL,UAAIhC,MAAJ,EAAY;AACVH,QAAAA,GAAG,CAACqC,IAAJ,gDAAiDlC,MAAjD;AACD;;AACDU,MAAAA,QAAQ,CAACY,YAAT,GAAwB,KAAxB;AACD;AACF;;AAzCuD;AA4C1DrB,aAAa,CAACkC,aAAd,GAA8B,eAA9B;AACAlC,aAAa,CAACF,YAAd,GAA6BA,YAA7B","sourcesContent":["import {COORDINATE_SYSTEM, LayerExtension, log} from '@deck.gl/core';\nimport mask from './shader-module';\n\nconst defaultProps = {\n maskId: ''\n};\n\nexport default class MaskExtension extends LayerExtension {\n getShaders() {\n // Infer by geometry if 'maskByInstance' prop isn't explictly set\n let maskByInstance = 'instancePositions' in this.getAttributeManager().attributes;\n // Users can override by setting the `maskByInstance` prop\n if ('maskByInstance' in this.props) {\n maskByInstance = this.props.maskByInstance;\n }\n this.state.maskByInstance = maskByInstance;\n\n return {\n modules: [mask]\n };\n }\n\n draw({uniforms, context, moduleParameters}) {\n uniforms.mask_maskByInstance = this.state.maskByInstance;\n const {maskId} = this.props;\n const {maskChannels} = moduleParameters;\n const {viewport} = context;\n if (maskChannels && maskChannels[maskId]) {\n const {index, bounds, coordinateOrigin: fromCoordinateOrigin} = maskChannels[maskId];\n let {coordinateSystem: fromCoordinateSystem} = maskChannels[maskId];\n uniforms.mask_enabled = true;\n uniforms.mask_channel = index;\n\n if (fromCoordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n fromCoordinateSystem = viewport.isGeospatial\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN;\n }\n const opts = {modelMatrix: null, fromCoordinateOrigin, fromCoordinateSystem};\n const bl = this.projectPosition([bounds[0], bounds[1], 0], opts);\n const tr = this.projectPosition([bounds[2], bounds[3], 0], opts);\n uniforms.mask_bounds = [bl[0], bl[1], tr[0], tr[1]];\n } else {\n if (maskId) {\n log.warn(`Could not find a mask layer with id: ${maskId}`)();\n }\n uniforms.mask_enabled = false;\n }\n }\n}\n\nMaskExtension.extensionName = 'MaskExtension';\nMaskExtension.defaultProps = defaultProps;\n"],"file":"mask.js"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { project } from '@deck.gl/core';
|
|
2
|
+
const vs = "\nuniform vec4 mask_bounds;\nuniform bool mask_maskByInstance;\nvec2 mask_getCoords(vec4 position) {\n return (position.xy - mask_bounds.xy) / (mask_bounds.zw - mask_bounds.xy);\n}\n";
|
|
3
|
+
const fs = "\nuniform sampler2D mask_texture;\nuniform int mask_channel;\nuniform bool mask_enabled;\nbool mask_isInBounds(vec2 texCoords) {\n if (!mask_enabled) {\n return true;\n }\n vec4 maskColor = texture2D(mask_texture, texCoords);\n float maskValue = 1.0;\n if (mask_channel == 0) {\n maskValue = maskColor.r;\n } else if (mask_channel == 1) {\n maskValue = maskColor.g;\n } else if (mask_channel == 2) {\n maskValue = maskColor.b;\n } else if (mask_channel == 3) {\n maskValue = maskColor.a;\n }\n return maskValue < 0.5;\n}\n";
|
|
4
|
+
const inject = {
|
|
5
|
+
'vs:#decl': "\nvarying vec2 mask_texCoords;\n",
|
|
6
|
+
'vs:#main-end': "\n vec4 mask_common_position;\n if (mask_maskByInstance) {\n mask_common_position = project_position(vec4(geometry.worldPosition, 1.0));\n } else {\n mask_common_position = geometry.position;\n }\n mask_texCoords = mask_getCoords(mask_common_position);\n",
|
|
7
|
+
'fs:#decl': "\nvarying vec2 mask_texCoords;\n",
|
|
8
|
+
'fs:#main-start': "\n if (mask_enabled) {\n bool mask = mask_isInBounds(mask_texCoords);\n\n // Debug: show extent of render target\n // gl_FragColor = vec4(mask_texCoords, 0.0, 1.0);\n gl_FragColor = texture2D(mask_texture, mask_texCoords);\n\n if (!mask) discard;\n }\n"
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const getMaskUniforms = (opts = {}) => {
|
|
12
|
+
const uniforms = {};
|
|
13
|
+
|
|
14
|
+
if (opts.maskMap) {
|
|
15
|
+
uniforms.mask_texture = opts.maskMap;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return uniforms;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export default {
|
|
22
|
+
name: 'mask',
|
|
23
|
+
dependencies: [project],
|
|
24
|
+
vs,
|
|
25
|
+
fs,
|
|
26
|
+
inject,
|
|
27
|
+
getUniforms: getMaskUniforms
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=shader-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/mask/shader-module.js"],"names":["project","vs","fs","inject","getMaskUniforms","opts","uniforms","maskMap","mask_texture","name","dependencies","getUniforms"],"mappings":"AAAA,SAAQA,OAAR,QAAsB,eAAtB;AAEA,MAAMC,EAAE,4LAAR;AAQA,MAAMC,EAAE,wiBAAR;AAuBA,MAAMC,MAAM,GAAG;AACb,gDADa;AAIb,oSAJa;AAab,gDAba;AAgBb;AAhBa,CAAf;;AA6BA,MAAMC,eAAe,GAAG,CAACC,IAAI,GAAG,EAAR,KAAe;AACrC,QAAMC,QAAQ,GAAG,EAAjB;;AACA,MAAID,IAAI,CAACE,OAAT,EAAkB;AAChBD,IAAAA,QAAQ,CAACE,YAAT,GAAwBH,IAAI,CAACE,OAA7B;AACD;;AACD,SAAOD,QAAP;AACD,CAND;;AAQA,eAAe;AACbG,EAAAA,IAAI,EAAE,MADO;AAEbC,EAAAA,YAAY,EAAE,CAACV,OAAD,CAFD;AAGbC,EAAAA,EAHa;AAIbC,EAAAA,EAJa;AAKbC,EAAAA,MALa;AAMbQ,EAAAA,WAAW,EAAEP;AANA,CAAf","sourcesContent":["import {project} from '@deck.gl/core';\n\nconst vs = `\nuniform vec4 mask_bounds;\nuniform bool mask_maskByInstance;\nvec2 mask_getCoords(vec4 position) {\n return (position.xy - mask_bounds.xy) / (mask_bounds.zw - mask_bounds.xy);\n}\n`;\n\nconst fs = `\nuniform sampler2D mask_texture;\nuniform int mask_channel;\nuniform bool mask_enabled;\nbool mask_isInBounds(vec2 texCoords) {\n if (!mask_enabled) {\n return true;\n }\n vec4 maskColor = texture2D(mask_texture, texCoords);\n float maskValue = 1.0;\n if (mask_channel == 0) {\n maskValue = maskColor.r;\n } else if (mask_channel == 1) {\n maskValue = maskColor.g;\n } else if (mask_channel == 2) {\n maskValue = maskColor.b;\n } else if (mask_channel == 3) {\n maskValue = maskColor.a;\n }\n return maskValue < 0.5;\n}\n`;\n\nconst inject = {\n 'vs:#decl': `\nvarying vec2 mask_texCoords;\n`,\n 'vs:#main-end': `\n vec4 mask_common_position;\n if (mask_maskByInstance) {\n mask_common_position = project_position(vec4(geometry.worldPosition, 1.0));\n } else {\n mask_common_position = geometry.position;\n }\n mask_texCoords = mask_getCoords(mask_common_position);\n`,\n 'fs:#decl': `\nvarying vec2 mask_texCoords;\n`,\n 'fs:#main-start': `\n if (mask_enabled) {\n bool mask = mask_isInBounds(mask_texCoords);\n\n // Debug: show extent of render target\n // gl_FragColor = vec4(mask_texCoords, 0.0, 1.0);\n gl_FragColor = texture2D(mask_texture, mask_texCoords);\n\n if (!mask) discard;\n }\n`\n};\n\nconst getMaskUniforms = (opts = {}) => {\n const uniforms = {};\n if (opts.maskMap) {\n uniforms.mask_texture = opts.maskMap;\n }\n return uniforms;\n};\n\nexport default {\n name: 'mask',\n dependencies: [project],\n vs,\n fs,\n inject,\n getUniforms: getMaskUniforms\n};\n"],"file":"shader-module.js"}
|