@deck.gl/extensions 8.9.0-alpha.5 → 8.9.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 +3688 -14538
- package/dist/es5/brushing/brushing.js +0 -8
- package/dist/es5/brushing/brushing.js.map +1 -1
- package/dist/es5/clip/clip.js +5 -5
- package/dist/es5/clip/clip.js.map +1 -1
- package/dist/es5/collide/collide-effect.js +286 -0
- package/dist/es5/collide/collide-effect.js.map +1 -0
- package/dist/es5/collide/collide-pass.js +80 -0
- package/dist/es5/collide/collide-pass.js.map +1 -0
- package/dist/es5/collide/collide.js +116 -0
- package/dist/es5/collide/collide.js.map +1 -0
- package/dist/es5/collide/shader-module.js +39 -0
- package/dist/es5/collide/shader-module.js.map +1 -0
- package/dist/es5/common/projection-utils.js +164 -0
- package/dist/es5/common/projection-utils.js.map +1 -0
- package/dist/es5/data-filter/shader-module.js +1 -0
- package/dist/es5/data-filter/shader-module.js.map +1 -1
- package/dist/es5/fill-style/fill-style.js +16 -125
- package/dist/es5/fill-style/fill-style.js.map +1 -1
- package/dist/es5/fill-style/shaders.glsl.js +6 -8
- package/dist/es5/fill-style/shaders.glsl.js.map +1 -1
- package/dist/es5/fp64/project64.glsl.js +1 -1
- package/dist/es5/index.js +16 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/mask/mask-effect.js +280 -0
- package/dist/es5/mask/mask-effect.js.map +1 -0
- package/dist/es5/mask/mask-pass.js +106 -0
- package/dist/es5/mask/mask-pass.js.map +1 -0
- package/dist/es5/mask/mask.js +17 -4
- package/dist/es5/mask/mask.js.map +1 -1
- package/dist/es5/mask/shader-module.js +1 -1
- package/dist/es5/mask/shader-module.js.map +1 -1
- package/dist/es5/mask/utils.js +136 -0
- package/dist/es5/mask/utils.js.map +1 -0
- package/dist/es5/path-style/shaders.glsl.js +1 -1
- package/dist/es5/terrain/height-map-builder.js +116 -0
- package/dist/es5/terrain/height-map-builder.js.map +1 -0
- package/dist/es5/terrain/shader-module.js +84 -0
- package/dist/es5/terrain/shader-module.js.map +1 -0
- package/dist/es5/terrain/terrain-cover.js +259 -0
- package/dist/es5/terrain/terrain-cover.js.map +1 -0
- package/dist/es5/terrain/terrain-effect.js +337 -0
- package/dist/es5/terrain/terrain-effect.js.map +1 -0
- package/dist/es5/terrain/terrain-pass.js +122 -0
- package/dist/es5/terrain/terrain-pass.js.map +1 -0
- package/dist/es5/terrain/terrain-picking-pass.js +130 -0
- package/dist/es5/terrain/terrain-picking-pass.js.map +1 -0
- package/dist/es5/terrain/terrain.js +101 -0
- package/dist/es5/terrain/terrain.js.map +1 -0
- package/dist/es5/terrain/utils.js +32 -0
- package/dist/es5/terrain/utils.js.map +1 -0
- package/dist/es5/utils/debug.js +71 -0
- package/dist/es5/utils/debug.js.map +1 -0
- package/dist/esm/brushing/brushing.js +0 -7
- package/dist/esm/brushing/brushing.js.map +1 -1
- package/dist/esm/clip/clip.js +5 -4
- package/dist/esm/clip/clip.js.map +1 -1
- package/dist/esm/collide/collide-effect.js +251 -0
- package/dist/esm/collide/collide-effect.js.map +1 -0
- package/dist/esm/collide/collide-pass.js +30 -0
- package/dist/esm/collide/collide-pass.js.map +1 -0
- package/dist/esm/collide/collide.js +78 -0
- package/dist/esm/collide/collide.js.map +1 -0
- package/dist/esm/collide/shader-module.js +32 -0
- package/dist/esm/collide/shader-module.js.map +1 -0
- package/dist/esm/common/projection-utils.js +130 -0
- package/dist/esm/common/projection-utils.js.map +1 -0
- package/dist/esm/data-filter/shader-module.js +1 -0
- package/dist/esm/data-filter/shader-module.js.map +1 -1
- package/dist/esm/fill-style/fill-style.js +20 -72
- package/dist/esm/fill-style/fill-style.js.map +1 -1
- package/dist/esm/fill-style/shaders.glsl.js +5 -7
- package/dist/esm/fill-style/shaders.glsl.js.map +1 -1
- package/dist/esm/fp64/project64.glsl.js +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mask/mask-effect.js +233 -0
- package/dist/esm/mask/mask-effect.js.map +1 -0
- package/dist/esm/mask/mask-pass.js +62 -0
- package/dist/esm/mask/mask-pass.js.map +1 -0
- package/dist/esm/mask/mask.js +14 -3
- package/dist/esm/mask/mask.js.map +1 -1
- package/dist/esm/mask/shader-module.js +1 -1
- package/dist/esm/mask/shader-module.js.map +1 -1
- package/dist/esm/mask/utils.js +109 -0
- package/dist/esm/mask/utils.js.map +1 -0
- package/dist/esm/path-style/shaders.glsl.js +1 -1
- package/dist/esm/terrain/height-map-builder.js +92 -0
- package/dist/esm/terrain/height-map-builder.js.map +1 -0
- package/dist/esm/terrain/shader-module.js +73 -0
- package/dist/esm/terrain/shader-module.js.map +1 -0
- package/dist/esm/terrain/terrain-cover.js +219 -0
- package/dist/esm/terrain/terrain-cover.js.map +1 -0
- package/dist/esm/terrain/terrain-effect.js +230 -0
- package/dist/esm/terrain/terrain-effect.js.map +1 -0
- package/dist/esm/terrain/terrain-pass.js +69 -0
- package/dist/esm/terrain/terrain-pass.js.map +1 -0
- package/dist/esm/terrain/terrain-picking-pass.js +75 -0
- package/dist/esm/terrain/terrain-picking-pass.js.map +1 -0
- package/dist/esm/terrain/terrain.js +62 -0
- package/dist/esm/terrain/terrain.js.map +1 -0
- package/dist/esm/terrain/utils.js +21 -0
- package/dist/esm/terrain/utils.js.map +1 -0
- package/dist/esm/utils/debug.js +61 -0
- package/dist/esm/utils/debug.js.map +1 -0
- package/dist.min.js +1359 -1
- package/package.json +6 -4
- package/src/brushing/brushing.ts +0 -11
- package/src/clip/clip.ts +7 -6
- package/src/collide/collide-effect.ts +258 -0
- package/src/collide/collide-pass.ts +35 -0
- package/src/collide/collide.ts +79 -0
- package/src/collide/shader-module.ts +113 -0
- package/src/common/projection-utils.ts +187 -0
- package/src/data-filter/shader-module.ts +7 -1
- package/src/fill-style/fill-style.ts +15 -53
- package/src/fill-style/shaders.glsl.ts +6 -7
- package/src/index.ts +4 -0
- package/src/mask/mask-effect.ts +255 -0
- package/src/mask/mask-pass.ts +67 -0
- package/src/mask/mask.ts +17 -7
- package/src/mask/shader-module.ts +7 -1
- package/src/mask/utils.ts +148 -0
- package/src/terrain/height-map-builder.ts +120 -0
- package/src/terrain/shader-module.ts +161 -0
- package/src/terrain/terrain-cover.ts +225 -0
- package/src/terrain/terrain-effect.ts +222 -0
- package/src/terrain/terrain-pass.ts +86 -0
- package/src/terrain/terrain-picking-pass.ts +87 -0
- package/src/terrain/terrain.ts +74 -0
- package/src/terrain/utils.ts +29 -0
- package/src/utils/debug.ts +59 -0
- package/typed/brushing/brushing.d.ts +0 -1
- package/typed/brushing/brushing.d.ts.map +1 -1
- package/typed/brushing/brushing.js +83 -0
- package/typed/brushing/shader-module.js +116 -0
- package/typed/clip/clip.d.ts +5 -2
- package/typed/clip/clip.d.ts.map +1 -1
- package/typed/clip/clip.js +114 -0
- package/typed/collide/collide-effect.d.ts +28 -0
- package/typed/collide/collide-effect.d.ts.map +1 -0
- package/typed/collide/collide-pass.d.ts +14 -0
- package/typed/collide/collide-pass.d.ts.map +1 -0
- package/typed/collide/collide.d.ts +41 -0
- package/typed/collide/collide.d.ts.map +1 -0
- package/typed/collide/shader-module.d.ts +4 -0
- package/typed/collide/shader-module.d.ts.map +1 -0
- package/typed/common/projection-utils.d.ts +27 -0
- package/typed/common/projection-utils.d.ts.map +1 -0
- package/typed/data-filter/aggregator.js +98 -0
- package/typed/data-filter/data-filter.js +159 -0
- package/typed/data-filter/shader-module.d.ts.map +1 -1
- package/typed/data-filter/shader-module.js +152 -0
- package/typed/fill-style/fill-style.d.ts +14 -5
- package/typed/fill-style/fill-style.d.ts.map +1 -1
- package/typed/fill-style/fill-style.js +152 -0
- package/typed/fill-style/shaders.glsl.d.ts.map +1 -1
- package/typed/fill-style/shaders.glsl.js +95 -0
- package/typed/fp64/fp64.js +34 -0
- package/typed/fp64/project64.glsl.js +100 -0
- package/typed/fp64/project64.js +50 -0
- package/typed/index.d.ts +4 -0
- package/typed/index.d.ts.map +1 -1
- package/typed/index.js +9 -0
- package/typed/mask/mask-effect.d.ts +42 -0
- package/typed/mask/mask-effect.d.ts.map +1 -0
- package/typed/mask/mask-pass.d.ts +19 -0
- package/typed/mask/mask-pass.d.ts.map +1 -0
- package/typed/mask/mask.d.ts +9 -3
- package/typed/mask/mask.d.ts.map +1 -1
- package/typed/mask/mask.js +48 -0
- package/typed/mask/shader-module.d.ts.map +1 -1
- package/typed/mask/shader-module.js +73 -0
- package/typed/mask/utils.d.ts +13 -0
- package/typed/mask/utils.d.ts.map +1 -0
- package/typed/path-style/path-style.js +107 -0
- package/typed/path-style/shaders.glsl.js +93 -0
- package/typed/terrain/height-map-builder.d.ts +38 -0
- package/typed/terrain/height-map-builder.d.ts.map +1 -0
- package/typed/terrain/height-map.d.ts +27 -0
- package/typed/terrain/height-map.d.ts.map +1 -0
- package/typed/terrain/shader-module-offset.d.ts +4 -0
- package/typed/terrain/shader-module-offset.d.ts.map +1 -0
- package/typed/terrain/shader-module-source.d.ts +4 -0
- package/typed/terrain/shader-module-source.d.ts.map +1 -0
- package/typed/terrain/shader-module.d.ts +31 -0
- package/typed/terrain/shader-module.d.ts.map +1 -0
- package/typed/terrain/terrain-cover.d.ts +46 -0
- package/typed/terrain/terrain-cover.d.ts.map +1 -0
- package/typed/terrain/terrain-effect.d.ts +29 -0
- package/typed/terrain/terrain-effect.d.ts.map +1 -0
- package/typed/terrain/terrain-pass.d.ts +11 -0
- package/typed/terrain/terrain-pass.d.ts.map +1 -0
- package/typed/terrain/terrain-picking-pass.d.ts +19 -0
- package/typed/terrain/terrain-picking-pass.d.ts.map +1 -0
- package/typed/terrain/terrain.d.ts +21 -0
- package/typed/terrain/terrain.d.ts.map +1 -0
- package/typed/terrain/utils.d.ts +5 -0
- package/typed/terrain/utils.d.ts.map +1 -0
- package/typed/utils/debug.d.ts +6 -0
- package/typed/utils/debug.d.ts.map +1 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.TerrainPass = void 0;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
|
|
14
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
+
|
|
20
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
+
|
|
22
|
+
var _core = require("@luma.gl/core");
|
|
23
|
+
|
|
24
|
+
var _core2 = require("@deck.gl/core");
|
|
25
|
+
|
|
26
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
27
|
+
|
|
28
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
29
|
+
|
|
30
|
+
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); }; }
|
|
31
|
+
|
|
32
|
+
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; } }
|
|
33
|
+
|
|
34
|
+
var TerrainPass = function (_LayersPass) {
|
|
35
|
+
(0, _inherits2.default)(TerrainPass, _LayersPass);
|
|
36
|
+
|
|
37
|
+
var _super = _createSuper(TerrainPass);
|
|
38
|
+
|
|
39
|
+
function TerrainPass() {
|
|
40
|
+
(0, _classCallCheck2.default)(this, TerrainPass);
|
|
41
|
+
return _super.apply(this, arguments);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
(0, _createClass2.default)(TerrainPass, [{
|
|
45
|
+
key: "getRenderableLayers",
|
|
46
|
+
value: function getRenderableLayers(viewport, opts) {
|
|
47
|
+
var layers = opts.layers;
|
|
48
|
+
var result = [];
|
|
49
|
+
|
|
50
|
+
var drawParamsByIndex = this._getDrawLayerParams(viewport, opts, true);
|
|
51
|
+
|
|
52
|
+
for (var i = 0; i < layers.length; i++) {
|
|
53
|
+
var layer = layers[i];
|
|
54
|
+
|
|
55
|
+
if (!layer.isComposite && drawParamsByIndex[i].shouldDrawLayer) {
|
|
56
|
+
result.push(layer);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
}, {
|
|
63
|
+
key: "renderHeightMap",
|
|
64
|
+
value: function renderHeightMap(heightMap, opts) {
|
|
65
|
+
var _this = this;
|
|
66
|
+
|
|
67
|
+
var target = heightMap.getRenderFramebuffer();
|
|
68
|
+
var viewport = heightMap.renderViewport;
|
|
69
|
+
|
|
70
|
+
if (!target || !viewport) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
target.resize(viewport);
|
|
75
|
+
(0, _core.withParameters)(this.gl, {
|
|
76
|
+
clearColor: [0, 0, 0, 0],
|
|
77
|
+
blend: true,
|
|
78
|
+
blendFunc: [1, 1],
|
|
79
|
+
blendEquation: 32776,
|
|
80
|
+
depthTest: false
|
|
81
|
+
}, function () {
|
|
82
|
+
return _this.render(_objectSpread(_objectSpread({}, opts), {}, {
|
|
83
|
+
target: target,
|
|
84
|
+
pass: 'terrain-height-map',
|
|
85
|
+
layers: opts.layers,
|
|
86
|
+
viewports: [viewport],
|
|
87
|
+
effects: []
|
|
88
|
+
}));
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}, {
|
|
92
|
+
key: "renderTerrainCover",
|
|
93
|
+
value: function renderTerrainCover(terrainCover, opts) {
|
|
94
|
+
var _this2 = this;
|
|
95
|
+
|
|
96
|
+
var target = terrainCover.getRenderFramebuffer();
|
|
97
|
+
var viewport = terrainCover.renderViewport;
|
|
98
|
+
|
|
99
|
+
if (!target || !viewport) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
var layers = terrainCover.filterLayers(opts.layers);
|
|
104
|
+
target.resize(viewport);
|
|
105
|
+
(0, _core.withParameters)(this.gl, {
|
|
106
|
+
depthTest: false
|
|
107
|
+
}, function () {
|
|
108
|
+
return _this2.render(_objectSpread(_objectSpread({}, opts), {}, {
|
|
109
|
+
target: target,
|
|
110
|
+
pass: "terrain-cover-".concat(terrainCover.id),
|
|
111
|
+
layers: layers,
|
|
112
|
+
effects: [],
|
|
113
|
+
viewports: [viewport]
|
|
114
|
+
}));
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}]);
|
|
118
|
+
return TerrainPass;
|
|
119
|
+
}(_core2._LayersPass);
|
|
120
|
+
|
|
121
|
+
exports.TerrainPass = TerrainPass;
|
|
122
|
+
//# sourceMappingURL=terrain-pass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/terrain/terrain-pass.ts"],"names":["TerrainPass","viewport","opts","layers","result","drawParamsByIndex","_getDrawLayerParams","i","length","layer","isComposite","shouldDrawLayer","push","heightMap","target","getRenderFramebuffer","renderViewport","resize","gl","clearColor","blend","blendFunc","blendEquation","depthTest","render","pass","viewports","effects","terrainCover","filterLayers","id","LayersPass"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;IASaA,W;;;;;;;;;;;;WACX,6BAAoBC,QAApB,EAAwCC,IAAxC,EAAiF;AAC/E,UAAOC,MAAP,GAAiBD,IAAjB,CAAOC,MAAP;AACA,UAAMC,MAAe,GAAG,EAAxB;;AACA,UAAMC,iBAAiB,GAAG,KAAKC,mBAAL,CAAyBL,QAAzB,EAAmCC,IAAnC,EAAyC,IAAzC,CAA1B;;AACA,WAAK,IAAIK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,MAAM,CAACK,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;AACtC,YAAME,KAAK,GAAGN,MAAM,CAACI,CAAD,CAApB;;AACA,YAAI,CAACE,KAAK,CAACC,WAAP,IAAsBL,iBAAiB,CAACE,CAAD,CAAjB,CAAqBI,eAA/C,EAAgE;AAC9DP,UAAAA,MAAM,CAACQ,IAAP,CAAYH,KAAZ;AACD;AACF;;AAED,aAAOL,MAAP;AACD;;;WAED,yBAAgBS,SAAhB,EAA6CX,IAA7C,EAAsF;AAAA;;AAEpF,UAAMY,MAAM,GAAGD,SAAS,CAACE,oBAAV,EAAf;AACA,UAAMd,QAAQ,GAAGY,SAAS,CAACG,cAA3B;;AAEA,UAAI,CAACF,MAAD,IAAW,CAACb,QAAhB,EAA0B;AACxB;AACD;;AAEDa,MAAAA,MAAM,CAACG,MAAP,CAAchB,QAAd;AAEA,gCACE,KAAKiB,EADP,EAEE;AACEC,QAAAA,UAAU,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CADd;AAEEC,QAAAA,KAAK,EAAE,IAFT;AAGEC,QAAAA,SAAS,EAAE,MAHb;AAIEC,QAAAA,aAAa,OAJf;AAKEC,QAAAA,SAAS,EAAE;AALb,OAFF,EASE;AAAA,eACE,KAAI,CAACC,MAAL,iCACKtB,IADL;AAEEY,UAAAA,MAAM,EAANA,MAFF;AAGEW,UAAAA,IAAI,EAAE,oBAHR;AAIEtB,UAAAA,MAAM,EAAED,IAAI,CAACC,MAJf;AAKEuB,UAAAA,SAAS,EAAE,CAACzB,QAAD,CALb;AAME0B,UAAAA,OAAO,EAAE;AANX,WADF;AAAA,OATF;AAmBD;;;WAED,4BAAmBC,YAAnB,EAA+C1B,IAA/C,EAAwF;AAAA;;AAEtF,UAAMY,MAAM,GAAGc,YAAY,CAACb,oBAAb,EAAf;AACA,UAAMd,QAAQ,GAAG2B,YAAY,CAACZ,cAA9B;;AAEA,UAAI,CAACF,MAAD,IAAW,CAACb,QAAhB,EAA0B;AACxB;AACD;;AAED,UAAME,MAAM,GAAGyB,YAAY,CAACC,YAAb,CAA0B3B,IAAI,CAACC,MAA/B,CAAf;AACAW,MAAAA,MAAM,CAACG,MAAP,CAAchB,QAAd;AAEA,gCACE,KAAKiB,EADP,EAEE;AACEK,QAAAA,SAAS,EAAE;AADb,OAFF,EAKE;AAAA,eACE,MAAI,CAACC,MAAL,iCACKtB,IADL;AAEEY,UAAAA,MAAM,EAANA,MAFF;AAGEW,UAAAA,IAAI,0BAAmBG,YAAY,CAACE,EAAhC,CAHN;AAIE3B,UAAAA,MAAM,EAANA,MAJF;AAKEwB,UAAAA,OAAO,EAAE,EALX;AAMED,UAAAA,SAAS,EAAE,CAACzB,QAAD;AANb,WADF;AAAA,OALF;AAeD;;;EA1E8B8B,kB","sourcesContent":["import {withParameters} from '@luma.gl/core';\nimport {Layer, Viewport, _LayersPass as LayersPass, LayersPassRenderOptions} from '@deck.gl/core';\nimport type {HeightMapBuilder} from './height-map-builder';\nimport type {TerrainCover} from './terrain-cover';\n\nimport GL from '@luma.gl/constants';\n\nexport type TerrainPassRenderOptions = LayersPassRenderOptions;\n\n/** Renders textures used by the TerrainEffect render pass */\nexport class TerrainPass extends LayersPass {\n getRenderableLayers(viewport: Viewport, opts: TerrainPassRenderOptions): Layer[] {\n const {layers} = opts;\n const result: Layer[] = [];\n const drawParamsByIndex = this._getDrawLayerParams(viewport, opts, true);\n for (let i = 0; i < layers.length; i++) {\n const layer = layers[i];\n if (!layer.isComposite && drawParamsByIndex[i].shouldDrawLayer) {\n result.push(layer);\n }\n }\n\n return result;\n }\n\n renderHeightMap(heightMap: HeightMapBuilder, opts: Partial<TerrainPassRenderOptions>) {\n // console.log('Updating height map')\n const target = heightMap.getRenderFramebuffer();\n const viewport = heightMap.renderViewport;\n\n if (!target || !viewport) {\n return;\n }\n\n target.resize(viewport);\n\n withParameters(\n this.gl,\n {\n clearColor: [0, 0, 0, 0],\n blend: true,\n blendFunc: [GL.ONE, GL.ONE],\n blendEquation: GL.MAX,\n depthTest: false\n },\n () =>\n this.render({\n ...opts,\n target,\n pass: 'terrain-height-map',\n layers: opts.layers!,\n viewports: [viewport],\n effects: []\n })\n );\n }\n\n renderTerrainCover(terrainCover: TerrainCover, opts: Partial<TerrainPassRenderOptions>) {\n // console.log('Updating terrain cover ' + terrainCover.id)\n const target = terrainCover.getRenderFramebuffer();\n const viewport = terrainCover.renderViewport;\n\n if (!target || !viewport) {\n return;\n }\n\n const layers = terrainCover.filterLayers(opts.layers!);\n target.resize(viewport);\n\n withParameters(\n this.gl,\n {\n depthTest: false\n },\n () =>\n this.render({\n ...opts,\n target,\n pass: `terrain-cover-${terrainCover.id}`,\n layers,\n effects: [],\n viewports: [viewport]\n })\n );\n }\n}\n"],"file":"terrain-pass.js"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.TerrainPickingPass = 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 _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
+
|
|
16
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
17
|
+
|
|
18
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
+
|
|
20
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
+
|
|
22
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
+
|
|
24
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
+
|
|
26
|
+
var _core = require("@deck.gl/core");
|
|
27
|
+
|
|
28
|
+
var _core2 = require("@luma.gl/core");
|
|
29
|
+
|
|
30
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
31
|
+
|
|
32
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
33
|
+
|
|
34
|
+
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); }; }
|
|
35
|
+
|
|
36
|
+
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; } }
|
|
37
|
+
|
|
38
|
+
var TerrainPickingPass = function (_PickLayersPass) {
|
|
39
|
+
(0, _inherits2.default)(TerrainPickingPass, _PickLayersPass);
|
|
40
|
+
|
|
41
|
+
var _super = _createSuper(TerrainPickingPass);
|
|
42
|
+
|
|
43
|
+
function TerrainPickingPass() {
|
|
44
|
+
var _this;
|
|
45
|
+
|
|
46
|
+
(0, _classCallCheck2.default)(this, TerrainPickingPass);
|
|
47
|
+
|
|
48
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
49
|
+
args[_key] = arguments[_key];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
53
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "drawParameters", {});
|
|
54
|
+
return _this;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
(0, _createClass2.default)(TerrainPickingPass, [{
|
|
58
|
+
key: "getRenderableLayers",
|
|
59
|
+
value: function getRenderableLayers(viewport, opts) {
|
|
60
|
+
var layers = opts.layers;
|
|
61
|
+
var result = [];
|
|
62
|
+
this.drawParameters = {};
|
|
63
|
+
|
|
64
|
+
this._resetColorEncoder(opts.pickZ);
|
|
65
|
+
|
|
66
|
+
var drawParamsByIndex = this._getDrawLayerParams(viewport, opts);
|
|
67
|
+
|
|
68
|
+
for (var i = 0; i < layers.length; i++) {
|
|
69
|
+
var layer = layers[i];
|
|
70
|
+
|
|
71
|
+
if (!layer.isComposite && drawParamsByIndex[i].shouldDrawLayer) {
|
|
72
|
+
result.push(layer);
|
|
73
|
+
this.drawParameters[layer.id] = drawParamsByIndex[i].layerParameters;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
}, {
|
|
80
|
+
key: "renderTerrainCover",
|
|
81
|
+
value: function renderTerrainCover(terrainCover, opts) {
|
|
82
|
+
var _this2 = this;
|
|
83
|
+
|
|
84
|
+
var target = terrainCover.getPickingFramebuffer();
|
|
85
|
+
var viewport = terrainCover.renderViewport;
|
|
86
|
+
|
|
87
|
+
if (!target || !viewport) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
var layers = terrainCover.filterLayers(opts.layers);
|
|
92
|
+
var terrainLayer = terrainCover.targetLayer;
|
|
93
|
+
|
|
94
|
+
if (terrainLayer.props.pickable) {
|
|
95
|
+
layers.unshift(terrainLayer);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
target.resize(viewport);
|
|
99
|
+
(0, _core2.withParameters)(this.gl, {
|
|
100
|
+
depthTest: false
|
|
101
|
+
}, function () {
|
|
102
|
+
return _this2.render(_objectSpread(_objectSpread({}, opts), {}, {
|
|
103
|
+
pickingFBO: target,
|
|
104
|
+
pass: "terrain-cover-picking-".concat(terrainCover.id),
|
|
105
|
+
layers: layers,
|
|
106
|
+
effects: [],
|
|
107
|
+
viewports: [viewport],
|
|
108
|
+
cullRect: undefined,
|
|
109
|
+
deviceRect: viewport,
|
|
110
|
+
pickZ: false
|
|
111
|
+
}));
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}, {
|
|
115
|
+
key: "getLayerParameters",
|
|
116
|
+
value: function getLayerParameters(layer, layerIndex, viewport) {
|
|
117
|
+
if (this.drawParameters[layer.id]) {
|
|
118
|
+
return this.drawParameters[layer.id];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
var parameters = (0, _get2.default)((0, _getPrototypeOf2.default)(TerrainPickingPass.prototype), "getLayerParameters", this).call(this, layer, layerIndex, viewport);
|
|
122
|
+
parameters.blend = true;
|
|
123
|
+
return parameters;
|
|
124
|
+
}
|
|
125
|
+
}]);
|
|
126
|
+
return TerrainPickingPass;
|
|
127
|
+
}(_core._PickLayersPass);
|
|
128
|
+
|
|
129
|
+
exports.TerrainPickingPass = TerrainPickingPass;
|
|
130
|
+
//# sourceMappingURL=terrain-picking-pass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/terrain/terrain-picking-pass.ts"],"names":["TerrainPickingPass","viewport","opts","layers","result","drawParameters","_resetColorEncoder","pickZ","drawParamsByIndex","_getDrawLayerParams","i","length","layer","isComposite","shouldDrawLayer","push","id","layerParameters","terrainCover","target","getPickingFramebuffer","renderViewport","filterLayers","terrainLayer","targetLayer","props","pickable","unshift","resize","gl","depthTest","render","pickingFBO","pass","effects","viewports","cullRect","undefined","deviceRect","layerIndex","parameters","blend","PickLayersPass"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAMA;;;;;;;;;;IAQaA,kB;;;;;;;;;;;;;;;iGAO2B,E;;;;;;WAEtC,6BAAoBC,QAApB,EAAwCC,IAAxC,EAAwF;AACtF,UAAOC,MAAP,GAAiBD,IAAjB,CAAOC,MAAP;AACA,UAAMC,MAAe,GAAG,EAAxB;AACA,WAAKC,cAAL,GAAsB,EAAtB;;AACA,WAAKC,kBAAL,CAAwBJ,IAAI,CAACK,KAA7B;;AACA,UAAMC,iBAAiB,GAAG,KAAKC,mBAAL,CAAyBR,QAAzB,EAAmCC,IAAnC,CAA1B;;AACA,WAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,MAAM,CAACQ,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;AACtC,YAAME,KAAK,GAAGT,MAAM,CAACO,CAAD,CAApB;;AACA,YAAI,CAACE,KAAK,CAACC,WAAP,IAAsBL,iBAAiB,CAACE,CAAD,CAAjB,CAAqBI,eAA/C,EAAgE;AAC9DV,UAAAA,MAAM,CAACW,IAAP,CAAYH,KAAZ;AACA,eAAKP,cAAL,CAAoBO,KAAK,CAACI,EAA1B,IAAgCR,iBAAiB,CAACE,CAAD,CAAjB,CAAqBO,eAArD;AACD;AACF;;AAED,aAAOb,MAAP;AACD;;;WAED,4BAAmBc,YAAnB,EAA+ChB,IAA/C,EAA+F;AAAA;;AAE7F,UAAMiB,MAAM,GAAGD,YAAY,CAACE,qBAAb,EAAf;AACA,UAAMnB,QAAQ,GAAGiB,YAAY,CAACG,cAA9B;;AAEA,UAAI,CAACF,MAAD,IAAW,CAAClB,QAAhB,EAA0B;AACxB;AACD;;AAED,UAAME,MAAM,GAAGe,YAAY,CAACI,YAAb,CAA0BpB,IAAI,CAACC,MAA/B,CAAf;AACA,UAAMoB,YAAY,GAAGL,YAAY,CAACM,WAAlC;;AACA,UAAID,YAAY,CAACE,KAAb,CAAmBC,QAAvB,EAAiC;AAC/BvB,QAAAA,MAAM,CAACwB,OAAP,CAAeJ,YAAf;AACD;;AACDJ,MAAAA,MAAM,CAACS,MAAP,CAAc3B,QAAd;AAEA,iCACE,KAAK4B,EADP,EAEE;AACEC,QAAAA,SAAS,EAAE;AADb,OAFF,EAKE;AAAA,eACE,MAAI,CAACC,MAAL,iCACK7B,IADL;AAEE8B,UAAAA,UAAU,EAAEb,MAFd;AAGEc,UAAAA,IAAI,kCAA2Bf,YAAY,CAACF,EAAxC,CAHN;AAIEb,UAAAA,MAAM,EAANA,MAJF;AAKE+B,UAAAA,OAAO,EAAE,EALX;AAMEC,UAAAA,SAAS,EAAE,CAAClC,QAAD,CANb;AASEmC,UAAAA,QAAQ,EAAEC,SATZ;AAUEC,UAAAA,UAAU,EAAErC,QAVd;AAWEM,UAAAA,KAAK,EAAE;AAXT,WADF;AAAA,OALF;AAoBD;;;WAED,4BAA6BK,KAA7B,EAA2C2B,UAA3C,EAA+DtC,QAA/D,EAAwF;AACtF,UAAI,KAAKI,cAAL,CAAoBO,KAAK,CAACI,EAA1B,CAAJ,EAAmC;AACjC,eAAO,KAAKX,cAAL,CAAoBO,KAAK,CAACI,EAA1B,CAAP;AACD;;AACD,UAAMwB,UAAU,0HAA4B5B,KAA5B,EAAmC2B,UAAnC,EAA+CtC,QAA/C,CAAhB;AACAuC,MAAAA,UAAU,CAACC,KAAX,GAAmB,IAAnB;AACA,aAAOD,UAAP;AACD;;;EAvEqCE,qB","sourcesContent":["import {\n Layer,\n Viewport,\n LayersPassRenderOptions,\n _PickLayersPass as PickLayersPass\n} from '@deck.gl/core';\nimport {withParameters} from '@luma.gl/core';\nimport type {TerrainCover} from './terrain-cover';\n\nexport type TerrainPickingPassRenderOptions = LayersPassRenderOptions & {\n pickZ: boolean;\n};\n\n/** Renders textures used by the TerrainEffect picking pass */\nexport class TerrainPickingPass extends PickLayersPass {\n /** Save layer index for use when drawing to terrain cover.\n * When a terrain cover's picking buffer is rendered,\n * we need to make sure each layer receives a consistent index (encoded in the alpha channel)\n * so that a picked color can be decoded back to the correct layer.\n * Updated in getRenderableLayers which is called in TerrainEffect.preRender\n */\n drawParameters: Record<string, any> = {};\n\n getRenderableLayers(viewport: Viewport, opts: TerrainPickingPassRenderOptions): Layer[] {\n const {layers} = opts;\n const result: Layer[] = [];\n this.drawParameters = {};\n this._resetColorEncoder(opts.pickZ);\n const drawParamsByIndex = this._getDrawLayerParams(viewport, opts);\n for (let i = 0; i < layers.length; i++) {\n const layer = layers[i];\n if (!layer.isComposite && drawParamsByIndex[i].shouldDrawLayer) {\n result.push(layer);\n this.drawParameters[layer.id] = drawParamsByIndex[i].layerParameters;\n }\n }\n\n return result;\n }\n\n renderTerrainCover(terrainCover: TerrainCover, opts: Partial<TerrainPickingPassRenderOptions>) {\n // console.log('Updating terrain cover for picking ' + terrainCover.id)\n const target = terrainCover.getPickingFramebuffer();\n const viewport = terrainCover.renderViewport;\n\n if (!target || !viewport) {\n return;\n }\n\n const layers = terrainCover.filterLayers(opts.layers!);\n const terrainLayer = terrainCover.targetLayer;\n if (terrainLayer.props.pickable) {\n layers.unshift(terrainLayer);\n }\n target.resize(viewport);\n\n withParameters(\n this.gl,\n {\n depthTest: false\n },\n () =>\n this.render({\n ...opts,\n pickingFBO: target,\n pass: `terrain-cover-picking-${terrainCover.id}`,\n layers,\n effects: [],\n viewports: [viewport],\n // Disable the default culling because TileLayer would cull sublayers based on the screen viewport,\n // not the viewport of the terrain cover. Culling is already done by `terrainCover.filterLayers`\n cullRect: undefined,\n deviceRect: viewport,\n pickZ: false\n })\n );\n }\n\n protected getLayerParameters(layer: Layer, layerIndex: number, viewport: Viewport): any {\n if (this.drawParameters[layer.id]) {\n return this.drawParameters[layer.id];\n }\n const parameters = super.getLayerParameters(layer, layerIndex, viewport);\n parameters.blend = true;\n return parameters;\n }\n}\n"],"file":"terrain-picking-pass.js"}
|
|
@@ -0,0 +1,101 @@
|
|
|
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
+
|
|
22
|
+
var _core = require("@deck.gl/core");
|
|
23
|
+
|
|
24
|
+
var _terrainEffect = require("./terrain-effect");
|
|
25
|
+
|
|
26
|
+
var _shaderModule = require("./shader-module");
|
|
27
|
+
|
|
28
|
+
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); }; }
|
|
29
|
+
|
|
30
|
+
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; } }
|
|
31
|
+
|
|
32
|
+
var defaultProps = {
|
|
33
|
+
terrainFittingMode: undefined
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
var TerrainExtension = function (_LayerExtension) {
|
|
37
|
+
(0, _inherits2.default)(TerrainExtension, _LayerExtension);
|
|
38
|
+
|
|
39
|
+
var _super = _createSuper(TerrainExtension);
|
|
40
|
+
|
|
41
|
+
function TerrainExtension() {
|
|
42
|
+
(0, _classCallCheck2.default)(this, TerrainExtension);
|
|
43
|
+
return _super.apply(this, arguments);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
(0, _createClass2.default)(TerrainExtension, [{
|
|
47
|
+
key: "getShaders",
|
|
48
|
+
value: function getShaders() {
|
|
49
|
+
return {
|
|
50
|
+
modules: [_shaderModule.terrainModule]
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}, {
|
|
54
|
+
key: "initializeState",
|
|
55
|
+
value: function initializeState() {
|
|
56
|
+
var _this$context$deck;
|
|
57
|
+
|
|
58
|
+
(_this$context$deck = this.context.deck) === null || _this$context$deck === void 0 ? void 0 : _this$context$deck._addDefaultEffect(new _terrainEffect.TerrainEffect());
|
|
59
|
+
}
|
|
60
|
+
}, {
|
|
61
|
+
key: "updateState",
|
|
62
|
+
value: function updateState(params) {
|
|
63
|
+
var props = params.props,
|
|
64
|
+
oldProps = params.oldProps;
|
|
65
|
+
|
|
66
|
+
if (this.state.terrainFittingMode && props.terrainFittingMode === oldProps.terrainFittingMode && props.extruded === oldProps.extruded) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
var terrainFittingMode = props.terrainFittingMode;
|
|
71
|
+
|
|
72
|
+
if (!terrainFittingMode) {
|
|
73
|
+
var _this$getAttributeMan;
|
|
74
|
+
|
|
75
|
+
var is3d = this.props.extruded;
|
|
76
|
+
var attributes = (_this$getAttributeMan = this.getAttributeManager()) === null || _this$getAttributeMan === void 0 ? void 0 : _this$getAttributeMan.attributes;
|
|
77
|
+
var hasAnchor = attributes && 'instancePositions' in attributes;
|
|
78
|
+
terrainFittingMode = is3d || hasAnchor ? 'offset' : 'drape';
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
this.setState({
|
|
82
|
+
terrainFittingMode: terrainFittingMode
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}, {
|
|
86
|
+
key: "onNeedsRedraw",
|
|
87
|
+
value: function onNeedsRedraw() {
|
|
88
|
+
var state = this.state;
|
|
89
|
+
|
|
90
|
+
if (state.terrainFittingMode === 'drape') {
|
|
91
|
+
state.terrainCoverNeedsRedraw = true;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}]);
|
|
95
|
+
return TerrainExtension;
|
|
96
|
+
}(_core.LayerExtension);
|
|
97
|
+
|
|
98
|
+
exports.default = TerrainExtension;
|
|
99
|
+
(0, _defineProperty2.default)(TerrainExtension, "defaultProps", defaultProps);
|
|
100
|
+
(0, _defineProperty2.default)(TerrainExtension, "extensionName", 'TerrainExtension');
|
|
101
|
+
//# sourceMappingURL=terrain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/terrain/terrain.ts"],"names":["defaultProps","terrainFittingMode","undefined","TerrainExtension","modules","terrainModule","context","deck","_addDefaultEffect","TerrainEffect","params","props","oldProps","state","extruded","is3d","attributes","getAttributeManager","hasAnchor","setState","terrainCoverNeedsRedraw","LayerExtension"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAIA,IAAMA,YAAY,GAAG;AACnBC,EAAAA,kBAAkB,EAAEC;AADD,CAArB;;IAoBqBC,gB;;;;;;;;;;;;WAInB,sBAAoD;AAClD,aAAO;AACLC,QAAAA,OAAO,EAAE,CAACC,2BAAD;AADJ,OAAP;AAGD;;;WAED,2BAAoD;AAAA;;AAClD,iCAAKC,OAAL,CAAaC,IAAb,0EAAmBC,iBAAnB,CAAqC,IAAIC,4BAAJ,EAArC;AACD;;;WAED,qBAEEC,MAFF,EAGE;AACA,UAAOC,KAAP,GAA0BD,MAA1B,CAAOC,KAAP;AAAA,UAAcC,QAAd,GAA0BF,MAA1B,CAAcE,QAAd;;AAEA,UACE,KAAKC,KAAL,CAAWZ,kBAAX,IACAU,KAAK,CAACV,kBAAN,KAA6BW,QAAQ,CAACX,kBADtC,IAGAU,KAAK,CAACG,QAAN,KAAmBF,QAAQ,CAACE,QAJ9B,EAKE;AACA;AACD;;AAED,UAAKb,kBAAL,GAA2BU,KAA3B,CAAKV,kBAAL;;AACA,UAAI,CAACA,kBAAL,EAAyB;AAAA;;AAGvB,YAAMc,IAAI,GAAG,KAAKJ,KAAL,CAAWG,QAAxB;AACA,YAAME,UAAU,4BAAG,KAAKC,mBAAL,EAAH,0DAAG,sBAA4BD,UAA/C;AACA,YAAME,SAAS,GAAGF,UAAU,IAAI,uBAAuBA,UAAvD;AACAf,QAAAA,kBAAkB,GAAGc,IAAI,IAAIG,SAAR,GAAoB,QAApB,GAA+B,OAApD;AACD;;AACD,WAAKC,QAAL,CAAc;AAAClB,QAAAA,kBAAkB,EAAlBA;AAAD,OAAd;AACD;;;WAED,yBAAqC;AACnC,UAAMY,KAAK,GAAG,KAAKA,KAAnB;;AACA,UAAIA,KAAK,CAACZ,kBAAN,KAA6B,OAAjC,EAA0C;AACxCY,QAAAA,KAAK,CAACO,uBAAN,GAAgC,IAAhC;AACD;AACF;;;EA9C2CC,oB;;;8BAAzBlB,gB,kBACGH,Y;8BADHG,gB,mBAEI,kB","sourcesContent":["import {LayerExtension, UpdateParameters} from '@deck.gl/core';\nimport {TerrainEffect} from './terrain-effect';\nimport {terrainModule} from './shader-module';\n\nimport type {Layer} from '@deck.gl/core';\n\nconst defaultProps = {\n terrainFittingMode: undefined\n};\n\nexport type TerrainExtensionProps = {\n /**\n * controls whether an object is drawn over the terrain surface by its anchor (usually defined by an accessor called `getPosition`, e.g. icon, scatterplot) or by its geometry (e.g. path, polygon).\n * If not specified, it is automatically deduced from the layer.\n */\n terrainFittingMode?: 'offset' | 'drape';\n};\n\ntype TerrainExtensionState = {\n /** Resolved fitting mode */\n terrainFittingMode: 'offset' | 'drape';\n /** Set when a layer is flagged as needs redraw */\n terrainCoverNeedsRedraw: boolean;\n};\n\n/** Allows layers to show/hide objects by a geofence. */\nexport default class TerrainExtension extends LayerExtension {\n static defaultProps = defaultProps;\n static extensionName = 'TerrainExtension';\n\n getShaders(this: Layer<TerrainExtensionProps>): any {\n return {\n modules: [terrainModule]\n };\n }\n\n initializeState(this: Layer<TerrainExtensionProps>) {\n this.context.deck?._addDefaultEffect(new TerrainEffect());\n }\n\n updateState(\n this: Layer<TerrainExtensionProps>,\n params: UpdateParameters<Layer<TerrainExtensionProps>>\n ) {\n const {props, oldProps} = params;\n\n if (\n this.state.terrainFittingMode &&\n props.terrainFittingMode === oldProps.terrainFittingMode &&\n // @ts-ignore `extruded` may not exist in props\n props.extruded === oldProps.extruded\n ) {\n return;\n }\n\n let {terrainFittingMode} = props;\n if (!terrainFittingMode) {\n // props.extruded is used as an indication that the layer is 2.5D\n // @ts-ignore `extruded` may not exist in props\n const is3d = this.props.extruded as boolean;\n const attributes = this.getAttributeManager()?.attributes;\n const hasAnchor = attributes && 'instancePositions' in attributes;\n terrainFittingMode = is3d || hasAnchor ? 'offset' : 'drape';\n }\n this.setState({terrainFittingMode});\n }\n\n onNeedsRedraw(this: Layer<{}>): void {\n const state = this.state as TerrainExtensionState;\n if (state.terrainFittingMode === 'drape') {\n state.terrainCoverNeedsRedraw = true;\n }\n }\n}\n"],"file":"terrain.js"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.createRenderTarget = createRenderTarget;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _core = require("@luma.gl/core");
|
|
13
|
+
|
|
14
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
15
|
+
|
|
16
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
17
|
+
|
|
18
|
+
function createRenderTarget(gl, opts) {
|
|
19
|
+
var _parameters;
|
|
20
|
+
|
|
21
|
+
return new _core.Framebuffer(gl, {
|
|
22
|
+
id: opts.id,
|
|
23
|
+
attachments: (0, _defineProperty2.default)({}, 36064, new _core.Texture2D(gl, _objectSpread(_objectSpread({}, opts.float && {
|
|
24
|
+
format: (0, _core.isWebGL2)(gl) ? 34836 : 6408,
|
|
25
|
+
type: 5126
|
|
26
|
+
}), {}, {
|
|
27
|
+
mipmaps: false,
|
|
28
|
+
parameters: (_parameters = {}, (0, _defineProperty2.default)(_parameters, 10241, 9729), (0, _defineProperty2.default)(_parameters, 10240, 9729), (0, _defineProperty2.default)(_parameters, 10242, 33071), (0, _defineProperty2.default)(_parameters, 10243, 33071), _parameters)
|
|
29
|
+
})))
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/terrain/utils.ts"],"names":["createRenderTarget","gl","opts","Framebuffer","id","attachments","Texture2D","float","format","type","mipmaps","parameters"],"mappings":";;;;;;;;;;;AAAA;;;;;;AAGO,SAASA,kBAAT,CACLC,EADK,EAELC,IAFK,EAML;AAAA;;AACA,SAAO,IAAIC,iBAAJ,CAAgBF,EAAhB,EAAoB;AACzBG,IAAAA,EAAE,EAAEF,IAAI,CAACE,EADgB;AAEzBC,IAAAA,WAAW,2CACe,IAAIC,eAAJ,CAAcL,EAAd,kCAClBC,IAAI,CAACK,KAAL,IAAc;AAChBC,MAAAA,MAAM,EAAE,oBAASP,EAAT,gBADQ;AAEhBQ,MAAAA,IAAI;AAFY,KADI;AAKtBC,MAAAA,OAAO,EAAE,KALa;AAMtBC,MAAAA,UAAU;AANY,OADf;AAFc,GAApB,CAAP;AAkBD","sourcesContent":["import {Framebuffer, Texture2D, isWebGL2} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\n\nexport function createRenderTarget(\n gl: WebGLRenderingContext,\n opts: {\n id: string;\n float?: boolean;\n }\n) {\n return new Framebuffer(gl, {\n id: opts.id,\n attachments: {\n [gl.COLOR_ATTACHMENT0]: new Texture2D(gl, {\n ...(opts.float && {\n format: isWebGL2(gl) ? GL.RGBA32F : GL.RGBA,\n type: GL.FLOAT\n }),\n mipmaps: false,\n parameters: {\n [gl.TEXTURE_MIN_FILTER]: gl.LINEAR,\n [gl.TEXTURE_MAG_FILTER]: gl.LINEAR,\n [gl.TEXTURE_WRAP_S]: gl.CLAMP_TO_EDGE,\n [gl.TEXTURE_WRAP_T]: gl.CLAMP_TO_EDGE\n }\n })\n }\n });\n}\n"],"file":"utils.js"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.debugFBO = void 0;
|
|
7
|
+
|
|
8
|
+
var _core = require("@luma.gl/core");
|
|
9
|
+
|
|
10
|
+
var debugFBO = function debugFBO(fbo) {
|
|
11
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
12
|
+
minimap = _ref.minimap,
|
|
13
|
+
opaque = _ref.opaque;
|
|
14
|
+
|
|
15
|
+
var color = (0, _core.readPixelsToArray)(fbo);
|
|
16
|
+
var canvas = document.getElementById('fbo-canvas');
|
|
17
|
+
var canvasHeight = (minimap ? 2 : 1) * fbo.height;
|
|
18
|
+
|
|
19
|
+
if (!canvas) {
|
|
20
|
+
canvas = document.createElement('canvas');
|
|
21
|
+
canvas.id = 'fbo-canvas';
|
|
22
|
+
canvas.style.zIndex = '100';
|
|
23
|
+
canvas.style.position = 'absolute';
|
|
24
|
+
canvas.style.top = '0';
|
|
25
|
+
canvas.style.right = '0';
|
|
26
|
+
canvas.style.border = 'blue 1px solid';
|
|
27
|
+
canvas.style.transform = 'scaleY(-1)';
|
|
28
|
+
document.body.appendChild(canvas);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (canvas.width !== fbo.width || canvas.height !== canvasHeight) {
|
|
32
|
+
canvas.width = fbo.width;
|
|
33
|
+
canvas.height = canvasHeight;
|
|
34
|
+
canvas.style.width = '400px';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
var ctx = canvas.getContext('2d');
|
|
38
|
+
var imageData = ctx.createImageData(canvas.width, canvas.height);
|
|
39
|
+
|
|
40
|
+
if (minimap) {
|
|
41
|
+
var zoom = 8;
|
|
42
|
+
var _canvas = canvas,
|
|
43
|
+
width = _canvas.width,
|
|
44
|
+
height = _canvas.height;
|
|
45
|
+
|
|
46
|
+
for (var y = 0; y < height; y++) {
|
|
47
|
+
for (var x = 0; x < width; x++) {
|
|
48
|
+
var d = 4 * (x + y * width);
|
|
49
|
+
var s = 4 * (Math.floor(x / zoom) + Math.floor(y / zoom) * width);
|
|
50
|
+
imageData.data[d + 0] = color[s + 0];
|
|
51
|
+
imageData.data[d + 1] = color[s + 1];
|
|
52
|
+
imageData.data[d + 2] = color[s + 2];
|
|
53
|
+
imageData.data[d + 3] = opaque ? 255 : color[s + 3];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
var offset = minimap ? color.length : 0;
|
|
59
|
+
|
|
60
|
+
for (var i = 0; i < color.length; i += 4) {
|
|
61
|
+
imageData.data[offset + i + 0] = color[i + 0];
|
|
62
|
+
imageData.data[offset + i + 1] = color[i + 1];
|
|
63
|
+
imageData.data[offset + i + 2] = color[i + 2];
|
|
64
|
+
imageData.data[offset + i + 3] = opaque ? 255 : color[i + 3];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
ctx.putImageData(imageData, 0, 0);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
exports.debugFBO = debugFBO;
|
|
71
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/debug.ts"],"names":["debugFBO","fbo","minimap","opaque","color","canvas","document","getElementById","canvasHeight","height","createElement","id","style","zIndex","position","top","right","border","transform","body","appendChild","width","ctx","getContext","imageData","createImageData","zoom","y","x","d","s","Math","floor","data","offset","length","i","putImageData"],"mappings":"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","sourcesContent":["/* global document */\n\nimport {Framebuffer, readPixelsToArray} from '@luma.gl/core';\n\n/** Debug utility to draw FBO contents onto screen */\n// eslint-disable-next-line\nexport const debugFBO = function (\n fbo: Framebuffer,\n {minimap, opaque}: {minimap?: boolean; opaque?: boolean} = {}\n) {\n const color = readPixelsToArray(fbo);\n let canvas = document.getElementById('fbo-canvas') as HTMLCanvasElement;\n const canvasHeight = (minimap ? 2 : 1) * fbo.height;\n if (!canvas) {\n canvas = document.createElement('canvas');\n canvas.id = 'fbo-canvas';\n canvas.style.zIndex = '100';\n canvas.style.position = 'absolute';\n canvas.style.top = '0';\n canvas.style.right = '0';\n canvas.style.border = 'blue 1px solid';\n canvas.style.transform = 'scaleY(-1)';\n document.body.appendChild(canvas);\n }\n if (canvas.width !== fbo.width || canvas.height !== canvasHeight) {\n canvas.width = fbo.width;\n canvas.height = canvasHeight;\n canvas.style.width = '400px';\n }\n const ctx = canvas.getContext('2d')!;\n const imageData = ctx.createImageData(canvas.width, canvas.height);\n\n // Minimap\n if (minimap) {\n const zoom = 8; // Zoom factor for minimap\n const {width, height} = canvas;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const d = 4 * (x + y * width); // destination pixel\n const s = 4 * (Math.floor(x / zoom) + Math.floor(y / zoom) * width); // source\n imageData.data[d + 0] = color[s + 0];\n imageData.data[d + 1] = color[s + 1];\n imageData.data[d + 2] = color[s + 2];\n imageData.data[d + 3] = opaque ? 255 : color[s + 3];\n }\n }\n }\n\n // Full map\n const offset = minimap ? color.length : 0;\n for (let i = 0; i < color.length; i += 4) {\n imageData.data[offset + i + 0] = color[i + 0];\n imageData.data[offset + i + 1] = color[i + 1];\n imageData.data[offset + i + 2] = color[i + 2];\n imageData.data[offset + i + 3] = opaque ? 255 : color[i + 3];\n }\n\n ctx.putImageData(imageData, 0, 0);\n};\n"],"file":"debug.js"}
|
|
@@ -25,7 +25,6 @@ export default class BrushingExtension extends LayerExtension {
|
|
|
25
25
|
brushingTargets: {
|
|
26
26
|
size: 2,
|
|
27
27
|
accessor: 'getBrushingTarget',
|
|
28
|
-
update: this.props.getBrushingTarget ? undefined : extension.useConstantTargetPositions,
|
|
29
28
|
shaderAttributes: {
|
|
30
29
|
brushingTargets: {
|
|
31
30
|
divisor: 0
|
|
@@ -61,12 +60,6 @@ export default class BrushingExtension extends LayerExtension {
|
|
|
61
60
|
}
|
|
62
61
|
}
|
|
63
62
|
|
|
64
|
-
useConstantTargetPositions(attribute) {
|
|
65
|
-
attribute.constant = true;
|
|
66
|
-
attribute.value = new Float32Array(2);
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
63
|
}
|
|
71
64
|
|
|
72
65
|
_defineProperty(BrushingExtension, "defaultProps", defaultProps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/brushing/brushing.ts"],"names":["LayerExtension","shaderModule","defaultProps","getBrushingTarget","type","value","brushingTarget","brushingEnabled","brushingRadius","BrushingExtension","getShaders","modules","initializeState","context","extension","attributeManager","getAttributeManager","add","brushingTargets","size","accessor","
|
|
1
|
+
{"version":3,"sources":["../../../src/brushing/brushing.ts"],"names":["LayerExtension","shaderModule","defaultProps","getBrushingTarget","type","value","brushingTarget","brushingEnabled","brushingRadius","BrushingExtension","getShaders","modules","initializeState","context","extension","attributeManager","getAttributeManager","add","brushingTargets","size","accessor","shaderAttributes","divisor","instanceBrushingTargets","state","onMouseMove","getCurrentLayer","setNeedsRedraw","deck","eventManager","on","pointermove","pointerleave","finalizeState","off"],"mappings":";AAoBA,SAAQA,cAAR,QAA6B,eAA7B;AACA,OAAOC,YAAP,MAAyB,iBAAzB;AAIA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,iBAAiB,EAAE;AAACC,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,CAAC,CAAD,EAAI,CAAJ;AAA1B,GADA;AAGnBC,EAAAA,cAAc,EAAE,QAHG;AAInBC,EAAAA,eAAe,EAAE,IAJE;AAKnBC,EAAAA,cAAc,EAAE;AALG,CAArB;AA8BA,eAAe,MAAMC,iBAAN,SAAgCT,cAAhC,CAA+C;AAI5DU,EAAAA,UAAU,GAAQ;AAChB,WAAO;AACLC,MAAAA,OAAO,EAAE,CAACV,YAAD;AADJ,KAAP;AAGD;;AAEDW,EAAAA,eAAe,CAAsCC,OAAtC,EAA6DC,SAA7D,EAA8E;AAC3F,UAAMC,gBAAgB,GAAG,KAAKC,mBAAL,EAAzB;;AACA,QAAID,gBAAJ,EAAsB;AACpBA,MAAAA,gBAAgB,CAACE,GAAjB,CAAqB;AACnBC,QAAAA,eAAe,EAAE;AACfC,UAAAA,IAAI,EAAE,CADS;AAEfC,UAAAA,QAAQ,EAAE,mBAFK;AAGfC,UAAAA,gBAAgB,EAAE;AAChBH,YAAAA,eAAe,EAAE;AACfI,cAAAA,OAAO,EAAE;AADM,aADD;AAIhBC,YAAAA,uBAAuB,EAAE;AACvBD,cAAAA,OAAO,EAAE;AADc;AAJT;AAHH;AADE,OAArB;AAcD;;AAID,SAAKE,KAAL,CAAWC,WAAX,GAAyB,MAAM;AAAA;;AAC7B,oCAAKC,eAAL,kFAAwBC,cAAxB;AACD,KAFD;;AAGA,QAAId,OAAO,CAACe,IAAZ,EAAkB;AAEhBf,MAAAA,OAAO,CAACe,IAAR,CAAaC,YAAb,CAA0BC,EAA1B,CAA6B;AAC3BC,QAAAA,WAAW,EAAE,KAAKP,KAAL,CAAWC,WADG;AAE3BO,QAAAA,YAAY,EAAE,KAAKR,KAAL,CAAWC;AAFE,OAA7B;AAID;AACF;;AAEDQ,EAAAA,aAAa,CAAsCpB,OAAtC,EAA6DC,SAA7D,EAA8E;AAEzF,QAAID,OAAO,CAACe,IAAZ,EAAkB;AAEhBf,MAAAA,OAAO,CAACe,IAAR,CAAaC,YAAb,CAA0BK,GAA1B,CAA8B;AAC5BH,QAAAA,WAAW,EAAE,KAAKP,KAAL,CAAWC,WADI;AAE5BO,QAAAA,YAAY,EAAE,KAAKR,KAAL,CAAWC;AAFG,OAA9B;AAID;AACF;;AApD2D;;gBAAzChB,iB,kBACGP,Y;;gBADHO,iB,mBAEI,mB","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {LayerExtension} from '@deck.gl/core';\nimport shaderModule from './shader-module';\n\nimport type {Layer, LayerContext, Accessor} from '@deck.gl/core';\n\nconst defaultProps = {\n getBrushingTarget: {type: 'accessor', value: [0, 0]},\n\n brushingTarget: 'source',\n brushingEnabled: true,\n brushingRadius: 10000\n};\n\nexport type BrushingExtensionProps<DataT = any> = {\n /**\n * Called to retrieve an arbitrary position for each object that it will be filtered by.\n * Only effective if `brushingTarget` is set to `custom`.\n */\n getBrushingTarget?: Accessor<DataT, [number, number]>;\n /**\n * Enable/disable brushing. If brushing is disabled, all objects are rendered.\n * @default true\n */\n brushingEnabled?: boolean;\n /**\n * The position used to filter each object by.\n */\n brushingTarget?: 'source' | 'target' | 'source_target' | 'custom';\n /** The brushing radius centered at the pointer, in meters. If a data object is within this circle, it is rendered; otherwise it is hidden.\n * @default 10000\n */\n brushingRadius?: number;\n};\n\n/** Adds GPU-based data brushing functionalities to layers. It allows the layer to show/hide objects based on the current pointer position. */\nexport default class BrushingExtension extends LayerExtension {\n static defaultProps = defaultProps;\n static extensionName = 'BrushingExtension';\n\n getShaders(): any {\n return {\n modules: [shaderModule]\n };\n }\n\n initializeState(this: Layer<BrushingExtensionProps>, context: LayerContext, extension: this) {\n const attributeManager = this.getAttributeManager();\n if (attributeManager) {\n attributeManager.add({\n brushingTargets: {\n size: 2,\n accessor: 'getBrushingTarget',\n shaderAttributes: {\n brushingTargets: {\n divisor: 0\n },\n instanceBrushingTargets: {\n divisor: 1\n }\n }\n }\n });\n }\n\n // Trigger redraw when mouse moves\n // TODO - expose this in a better way\n this.state.onMouseMove = () => {\n this.getCurrentLayer()?.setNeedsRedraw();\n };\n if (context.deck) {\n // @ts-expect-error (2446) accessing protected property\n context.deck.eventManager.on({\n pointermove: this.state.onMouseMove,\n pointerleave: this.state.onMouseMove\n });\n }\n }\n\n finalizeState(this: Layer<BrushingExtensionProps>, context: LayerContext, extension: this) {\n // Remove event listeners\n if (context.deck) {\n // @ts-expect-error (2446) accessing protected property\n context.deck.eventManager.off({\n pointermove: this.state.onMouseMove,\n pointerleave: this.state.onMouseMove\n });\n }\n }\n}\n"],"file":"brushing.js"}
|
package/dist/esm/clip/clip.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
2
|
import { LayerExtension } from '@deck.gl/core';
|
|
3
3
|
const defaultProps = {
|
|
4
|
-
clipBounds: [0, 0, 1, 1]
|
|
4
|
+
clipBounds: [0, 0, 1, 1],
|
|
5
|
+
clipByInstance: undefined
|
|
5
6
|
};
|
|
6
7
|
const shaderFunction = "\nuniform vec4 clip_bounds;\n\nbool clip_isInBounds(vec2 position) {\n return position.x >= clip_bounds[0] && position.y >= clip_bounds[1] && position.x < clip_bounds[2] && position.y < clip_bounds[3];\n}\n";
|
|
7
8
|
const shaderModuleVs = {
|
|
@@ -28,8 +29,8 @@ export default class ClipExtension extends LayerExtension {
|
|
|
28
29
|
getShaders() {
|
|
29
30
|
let clipByInstance = ('instancePositions' in this.getAttributeManager().attributes);
|
|
30
31
|
|
|
31
|
-
if (
|
|
32
|
-
clipByInstance = this.props.clipByInstance;
|
|
32
|
+
if (this.props.clipByInstance !== undefined) {
|
|
33
|
+
clipByInstance = Boolean(this.props.clipByInstance);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
this.state.clipByInstance = clipByInstance;
|
|
@@ -46,7 +47,7 @@ export default class ClipExtension extends LayerExtension {
|
|
|
46
47
|
uniforms
|
|
47
48
|
}) {
|
|
48
49
|
const {
|
|
49
|
-
clipBounds
|
|
50
|
+
clipBounds
|
|
50
51
|
} = this.props;
|
|
51
52
|
|
|
52
53
|
if (this.state.clipByInstance) {
|