@deck.gl/extensions 8.6.0 → 8.6.4
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/es5/brushing/brushing.js +49 -80
- package/dist/es5/brushing/brushing.js.map +1 -1
- package/dist/es5/brushing/shader-module.js +15 -16
- package/dist/es5/brushing/shader-module.js.map +1 -1
- package/dist/es5/clip/clip.js +35 -62
- package/dist/es5/clip/clip.js.map +1 -1
- package/dist/es5/data-filter/aggregator.js +14 -19
- package/dist/es5/data-filter/aggregator.js.map +1 -1
- package/dist/es5/data-filter/data-filter.js +146 -172
- package/dist/es5/data-filter/data-filter.js.map +1 -1
- package/dist/es5/data-filter/shader-module.js +37 -58
- package/dist/es5/data-filter/shader-module.js.map +1 -1
- package/dist/es5/fill-style/fill-style.js +158 -244
- package/dist/es5/fill-style/fill-style.js.map +1 -1
- package/dist/es5/fill-style/shaders.glsl.js +19 -18
- package/dist/es5/fill-style/shaders.glsl.js.map +1 -1
- package/dist/es5/fp64/fp64.js +12 -36
- package/dist/es5/fp64/fp64.js.map +1 -1
- package/dist/es5/fp64/project64.js +20 -18
- package/dist/es5/fp64/project64.js.map +1 -1
- package/dist/es5/index.js +7 -7
- package/dist/es5/path-style/path-style.js +89 -121
- package/dist/es5/path-style/path-style.js.map +1 -1
- package/dist/es5/path-style/shaders.glsl.js +2 -2
- package/dist/es5/path-style/shaders.glsl.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,50 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
8
6
|
exports.default = void 0;
|
|
9
7
|
|
|
10
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
-
|
|
16
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
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
8
|
var _core = require("@deck.gl/core");
|
|
27
9
|
|
|
28
10
|
var _core2 = require("@luma.gl/core");
|
|
29
11
|
|
|
30
12
|
var _shaders = require("./shaders.glsl");
|
|
31
13
|
|
|
32
|
-
|
|
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 { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
|
|
37
|
-
|
|
38
|
-
var defaultProps = {
|
|
14
|
+
const defaultProps = {
|
|
39
15
|
fillPatternEnabled: true,
|
|
40
16
|
fillPatternAtlas: null,
|
|
41
17
|
fillPatternMapping: null,
|
|
42
18
|
fillPatternMask: true,
|
|
43
19
|
getFillPattern: {
|
|
44
20
|
type: 'accessor',
|
|
45
|
-
value:
|
|
46
|
-
return d.pattern;
|
|
47
|
-
}
|
|
21
|
+
value: d => d.pattern
|
|
48
22
|
},
|
|
49
23
|
getFillPatternScale: {
|
|
50
24
|
type: 'accessor',
|
|
@@ -55,254 +29,194 @@ var defaultProps = {
|
|
|
55
29
|
value: [0, 0]
|
|
56
30
|
}
|
|
57
31
|
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
function FillStyleExtension() {
|
|
66
|
-
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
67
|
-
_ref$pattern = _ref.pattern,
|
|
68
|
-
pattern = _ref$pattern === void 0 ? false : _ref$pattern;
|
|
32
|
+
const DEFAULT_TEXTURE_PARAMETERS = {
|
|
33
|
+
[10241]: 9729,
|
|
34
|
+
[10240]: 9729,
|
|
35
|
+
[10242]: 33071,
|
|
36
|
+
[10243]: 33071
|
|
37
|
+
};
|
|
69
38
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
39
|
+
class FillStyleExtension extends _core.LayerExtension {
|
|
40
|
+
constructor({
|
|
41
|
+
pattern = false
|
|
42
|
+
} = {}) {
|
|
43
|
+
super({
|
|
44
|
+
pattern
|
|
73
45
|
});
|
|
74
46
|
}
|
|
75
47
|
|
|
76
|
-
(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return layer.getAttributeManager() && !layer.state.pathTesselator;
|
|
80
|
-
}
|
|
81
|
-
}, {
|
|
82
|
-
key: "getShaders",
|
|
83
|
-
value: function getShaders(extension) {
|
|
84
|
-
if (!extension.isEnabled(this)) {
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
48
|
+
isEnabled(layer) {
|
|
49
|
+
return layer.getAttributeManager() && !layer.state.pathTesselator;
|
|
50
|
+
}
|
|
87
51
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
52
|
+
getShaders(extension) {
|
|
53
|
+
if (!extension.isEnabled(this)) {
|
|
54
|
+
return null;
|
|
91
55
|
}
|
|
92
|
-
}, {
|
|
93
|
-
key: "initializeState",
|
|
94
|
-
value: function initializeState(context, extension) {
|
|
95
|
-
if (!extension.isEnabled(this)) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
56
|
|
|
99
|
-
|
|
57
|
+
return {
|
|
58
|
+
modules: [extension.opts.pattern && _shaders.patternShaders].filter(Boolean)
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
initializeState(context, extension) {
|
|
63
|
+
if (!extension.isEnabled(this)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
100
66
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
67
|
+
const attributeManager = this.getAttributeManager();
|
|
68
|
+
|
|
69
|
+
if (extension.opts.pattern) {
|
|
70
|
+
attributeManager.add({
|
|
71
|
+
fillPatternFrames: {
|
|
72
|
+
size: 4,
|
|
73
|
+
accessor: 'getFillPattern',
|
|
74
|
+
transform: extension.getPatternFrame.bind(this),
|
|
75
|
+
shaderAttributes: {
|
|
76
|
+
fillPatternFrames: {
|
|
77
|
+
divisor: 0
|
|
78
|
+
},
|
|
79
|
+
instanceFillPatternFrames: {
|
|
80
|
+
divisor: 1
|
|
114
81
|
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
fillPatternScales: {
|
|
85
|
+
size: 1,
|
|
86
|
+
accessor: 'getFillPatternScale',
|
|
87
|
+
defaultValue: 1,
|
|
88
|
+
shaderAttributes: {
|
|
89
|
+
fillPatternScales: {
|
|
90
|
+
divisor: 0
|
|
91
|
+
},
|
|
92
|
+
instanceFillPatternScales: {
|
|
93
|
+
divisor: 1
|
|
127
94
|
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
fillPatternOffsets: {
|
|
98
|
+
size: 2,
|
|
99
|
+
accessor: 'getFillPatternOffset',
|
|
100
|
+
shaderAttributes: {
|
|
101
|
+
fillPatternOffsets: {
|
|
102
|
+
divisor: 0
|
|
103
|
+
},
|
|
104
|
+
instanceFillPatternOffsets: {
|
|
105
|
+
divisor: 1
|
|
139
106
|
}
|
|
140
107
|
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
this.setState({
|
|
145
|
-
emptyTexture: new _core2.Texture2D(this.context.gl, {
|
|
146
|
-
data: new Uint8Array(4),
|
|
147
|
-
width: 1,
|
|
148
|
-
height: 1
|
|
149
|
-
})
|
|
108
|
+
}
|
|
150
109
|
});
|
|
151
110
|
}
|
|
152
|
-
}, {
|
|
153
|
-
key: "updateState",
|
|
154
|
-
value: function updateState(_ref2, extension) {
|
|
155
|
-
var props = _ref2.props,
|
|
156
|
-
oldProps = _ref2.oldProps;
|
|
157
111
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
112
|
+
this.setState({
|
|
113
|
+
emptyTexture: new _core2.Texture2D(this.context.gl, {
|
|
114
|
+
data: new Uint8Array(4),
|
|
115
|
+
width: 1,
|
|
116
|
+
height: 1
|
|
117
|
+
})
|
|
118
|
+
});
|
|
119
|
+
}
|
|
165
120
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
121
|
+
updateState({
|
|
122
|
+
props,
|
|
123
|
+
oldProps
|
|
124
|
+
}, extension) {
|
|
125
|
+
if (!extension.isEnabled(this)) {
|
|
126
|
+
return;
|
|
169
127
|
}
|
|
170
|
-
}, {
|
|
171
|
-
key: "draw",
|
|
172
|
-
value: function draw(params, extension) {
|
|
173
|
-
if (!extension.isEnabled(this)) {
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
128
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
fillPatternTexture: patternTexture || this.state.emptyTexture
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
}, {
|
|
183
|
-
key: "finalizeState",
|
|
184
|
-
value: function finalizeState() {
|
|
185
|
-
var _this$state = this.state,
|
|
186
|
-
patternTexture = _this$state.patternTexture,
|
|
187
|
-
emptyTexture = _this$state.emptyTexture;
|
|
188
|
-
patternTexture === null || patternTexture === void 0 ? void 0 : patternTexture.delete();
|
|
189
|
-
emptyTexture === null || emptyTexture === void 0 ? void 0 : emptyTexture.delete();
|
|
129
|
+
if (props.fillPatternAtlas && props.fillPatternAtlas !== oldProps.fillPatternAtlas) {
|
|
130
|
+
extension.loadPatternAtlas.call(this, props);
|
|
190
131
|
}
|
|
191
|
-
}, {
|
|
192
|
-
key: "loadPatternAtlas",
|
|
193
|
-
value: function () {
|
|
194
|
-
var _loadPatternAtlas = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(_ref3) {
|
|
195
|
-
var _this$state$patternTe;
|
|
196
|
-
|
|
197
|
-
var fillPatternAtlas, fetch, image, patternTexture;
|
|
198
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
199
|
-
while (1) {
|
|
200
|
-
switch (_context.prev = _context.next) {
|
|
201
|
-
case 0:
|
|
202
|
-
fillPatternAtlas = _ref3.fillPatternAtlas, fetch = _ref3.fetch;
|
|
203
|
-
(_this$state$patternTe = this.state.patternTexture) === null || _this$state$patternTe === void 0 ? void 0 : _this$state$patternTe.delete();
|
|
204
|
-
this.setState({
|
|
205
|
-
patternTexture: null
|
|
206
|
-
});
|
|
207
|
-
image = fillPatternAtlas;
|
|
208
|
-
|
|
209
|
-
if (!(typeof image === 'string')) {
|
|
210
|
-
_context.next = 8;
|
|
211
|
-
break;
|
|
212
|
-
}
|
|
213
132
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
});
|
|
133
|
+
if (props.fillPatternMapping && props.fillPatternMapping !== oldProps.fillPatternMapping) {
|
|
134
|
+
extension.loadPatternMapping.call(this, props);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
219
137
|
|
|
220
|
-
|
|
221
|
-
|
|
138
|
+
draw(params, extension) {
|
|
139
|
+
if (!extension.isEnabled(this)) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
222
142
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
});
|
|
143
|
+
const {
|
|
144
|
+
patternTexture
|
|
145
|
+
} = this.state;
|
|
146
|
+
this.setModuleParameters({
|
|
147
|
+
fillPatternTexture: patternTexture || this.state.emptyTexture
|
|
148
|
+
});
|
|
149
|
+
}
|
|
231
150
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
151
|
+
finalizeState() {
|
|
152
|
+
const {
|
|
153
|
+
patternTexture,
|
|
154
|
+
emptyTexture
|
|
155
|
+
} = this.state;
|
|
156
|
+
patternTexture === null || patternTexture === void 0 ? void 0 : patternTexture.delete();
|
|
157
|
+
emptyTexture === null || emptyTexture === void 0 ? void 0 : emptyTexture.delete();
|
|
158
|
+
}
|
|
239
159
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
160
|
+
async loadPatternAtlas({
|
|
161
|
+
fillPatternAtlas,
|
|
162
|
+
fetch
|
|
163
|
+
}) {
|
|
164
|
+
var _this$state$patternTe;
|
|
243
165
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
var _loadPatternMapping = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(_ref4) {
|
|
250
|
-
var fillPatternMapping, fetch, patternMapping;
|
|
251
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
252
|
-
while (1) {
|
|
253
|
-
switch (_context2.prev = _context2.next) {
|
|
254
|
-
case 0:
|
|
255
|
-
fillPatternMapping = _ref4.fillPatternMapping, fetch = _ref4.fetch;
|
|
256
|
-
this.setState({
|
|
257
|
-
patternMapping: null
|
|
258
|
-
});
|
|
259
|
-
patternMapping = fillPatternMapping;
|
|
166
|
+
(_this$state$patternTe = this.state.patternTexture) === null || _this$state$patternTe === void 0 ? void 0 : _this$state$patternTe.delete();
|
|
167
|
+
this.setState({
|
|
168
|
+
patternTexture: null
|
|
169
|
+
});
|
|
170
|
+
let image = fillPatternAtlas;
|
|
260
171
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
172
|
+
if (typeof image === 'string') {
|
|
173
|
+
image = await fetch(image, {
|
|
174
|
+
propName: 'fillPatternAtlas',
|
|
175
|
+
layer: this
|
|
176
|
+
});
|
|
177
|
+
}
|
|
265
178
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
179
|
+
const patternTexture = image instanceof _core2.Texture2D ? image : new _core2.Texture2D(this.context.gl, {
|
|
180
|
+
data: image,
|
|
181
|
+
parameters: DEFAULT_TEXTURE_PARAMETERS
|
|
182
|
+
});
|
|
183
|
+
this.setState({
|
|
184
|
+
patternTexture
|
|
185
|
+
});
|
|
186
|
+
}
|
|
271
187
|
|
|
272
|
-
|
|
273
|
-
|
|
188
|
+
async loadPatternMapping({
|
|
189
|
+
fillPatternMapping,
|
|
190
|
+
fetch
|
|
191
|
+
}) {
|
|
192
|
+
this.setState({
|
|
193
|
+
patternMapping: null
|
|
194
|
+
});
|
|
195
|
+
let patternMapping = fillPatternMapping;
|
|
274
196
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
197
|
+
if (typeof patternMapping === 'string') {
|
|
198
|
+
patternMapping = await fetch(patternMapping, {
|
|
199
|
+
propName: 'fillPatternMapping',
|
|
200
|
+
layer: this
|
|
201
|
+
});
|
|
202
|
+
}
|
|
281
203
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}));
|
|
204
|
+
this.setState({
|
|
205
|
+
patternMapping
|
|
206
|
+
});
|
|
207
|
+
this.getAttributeManager().invalidate('getFillPattern');
|
|
208
|
+
this.setNeedsUpdate();
|
|
209
|
+
}
|
|
289
210
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
211
|
+
getPatternFrame(name) {
|
|
212
|
+
const {
|
|
213
|
+
patternMapping
|
|
214
|
+
} = this.state;
|
|
215
|
+
const def = patternMapping && patternMapping[name];
|
|
216
|
+
return def ? [def.x, def.y, def.width, def.height] : [0, 0, 0, 0];
|
|
217
|
+
}
|
|
293
218
|
|
|
294
|
-
|
|
295
|
-
}()
|
|
296
|
-
}, {
|
|
297
|
-
key: "getPatternFrame",
|
|
298
|
-
value: function getPatternFrame(name) {
|
|
299
|
-
var patternMapping = this.state.patternMapping;
|
|
300
|
-
var def = patternMapping && patternMapping[name];
|
|
301
|
-
return def ? [def.x, def.y, def.width, def.height] : [0, 0, 0, 0];
|
|
302
|
-
}
|
|
303
|
-
}]);
|
|
304
|
-
return FillStyleExtension;
|
|
305
|
-
}(_core.LayerExtension);
|
|
219
|
+
}
|
|
306
220
|
|
|
307
221
|
exports.default = FillStyleExtension;
|
|
308
222
|
FillStyleExtension.extensionName = 'FillStyleExtension';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fill-style/fill-style.js"],"names":["defaultProps","fillPatternEnabled","fillPatternAtlas","fillPatternMapping","fillPatternMask","getFillPattern","type","value","d","pattern","getFillPatternScale","getFillPatternOffset","DEFAULT_TEXTURE_PARAMETERS","FillStyleExtension","layer","getAttributeManager","state","pathTesselator","extension","isEnabled","modules","opts","patternShaders","filter","Boolean","context","attributeManager","add","fillPatternFrames","size","accessor","transform","getPatternFrame","bind","shaderAttributes","divisor","instanceFillPatternFrames","fillPatternScales","defaultValue","instanceFillPatternScales","fillPatternOffsets","instanceFillPatternOffsets","setState","emptyTexture","Texture2D","gl","data","Uint8Array","width","height","props","oldProps","loadPatternAtlas","call","loadPatternMapping","params","patternTexture","setModuleParameters","fillPatternTexture","delete","fetch","image","propName","parameters","patternMapping","invalidate","setNeedsUpdate","name","def","x","y","LayerExtension","extensionName"],"mappings":"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","sourcesContent":["import {LayerExtension} from '@deck.gl/core';\nimport {Texture2D} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\n\nimport {patternShaders} from './shaders.glsl';\n\nconst defaultProps = {\n fillPatternEnabled: true,\n fillPatternAtlas: null,\n fillPatternMapping: null,\n fillPatternMask: true,\n getFillPattern: {type: 'accessor', value: d => d.pattern},\n getFillPatternScale: {type: 'accessor', value: 1},\n getFillPatternOffset: {type: 'accessor', value: [0, 0]}\n};\n\nconst DEFAULT_TEXTURE_PARAMETERS = {\n [GL.TEXTURE_MIN_FILTER]: GL.LINEAR,\n // GL.LINEAR is the default value but explicitly set it here\n [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n // for texture boundary artifact\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\n\nexport default class FillStyleExtension extends LayerExtension {\n constructor({pattern = false} = {}) {\n super({pattern});\n }\n\n isEnabled(layer) {\n return layer.getAttributeManager() && !layer.state.pathTesselator;\n }\n\n getShaders(extension) {\n if (!extension.isEnabled(this)) {\n return null;\n }\n\n return {\n modules: [extension.opts.pattern && patternShaders].filter(Boolean)\n };\n }\n\n initializeState(context, extension) {\n if (!extension.isEnabled(this)) {\n return;\n }\n\n const attributeManager = this.getAttributeManager();\n\n if (extension.opts.pattern) {\n attributeManager.add({\n fillPatternFrames: {\n size: 4,\n accessor: 'getFillPattern',\n transform: extension.getPatternFrame.bind(this),\n shaderAttributes: {\n fillPatternFrames: {\n divisor: 0\n },\n instanceFillPatternFrames: {\n divisor: 1\n }\n }\n },\n fillPatternScales: {\n size: 1,\n accessor: 'getFillPatternScale',\n defaultValue: 1,\n shaderAttributes: {\n fillPatternScales: {\n divisor: 0\n },\n instanceFillPatternScales: {\n divisor: 1\n }\n }\n },\n fillPatternOffsets: {\n size: 2,\n accessor: 'getFillPatternOffset',\n shaderAttributes: {\n fillPatternOffsets: {\n divisor: 0\n },\n instanceFillPatternOffsets: {\n divisor: 1\n }\n }\n }\n });\n }\n this.setState({\n emptyTexture: new Texture2D(this.context.gl, {\n data: new Uint8Array(4),\n width: 1,\n height: 1\n })\n });\n }\n\n updateState({props, oldProps}, extension) {\n if (!extension.isEnabled(this)) {\n return;\n }\n\n if (props.fillPatternAtlas && props.fillPatternAtlas !== oldProps.fillPatternAtlas) {\n extension.loadPatternAtlas.call(this, props);\n }\n if (props.fillPatternMapping && props.fillPatternMapping !== oldProps.fillPatternMapping) {\n extension.loadPatternMapping.call(this, props);\n }\n }\n\n draw(params, extension) {\n if (!extension.isEnabled(this)) {\n return;\n }\n\n const {patternTexture} = this.state;\n this.setModuleParameters({\n fillPatternTexture: patternTexture || this.state.emptyTexture\n });\n }\n\n finalizeState() {\n const {patternTexture, emptyTexture} = this.state;\n patternTexture?.delete();\n emptyTexture?.delete();\n }\n\n async loadPatternAtlas({fillPatternAtlas, fetch}) {\n this.state.patternTexture?.delete();\n this.setState({patternTexture: null});\n let image = fillPatternAtlas;\n if (typeof image === 'string') {\n image = await fetch(image, {propName: 'fillPatternAtlas', layer: this});\n }\n const patternTexture =\n image instanceof Texture2D\n ? image\n : new Texture2D(this.context.gl, {\n data: image,\n parameters: DEFAULT_TEXTURE_PARAMETERS\n });\n this.setState({patternTexture});\n }\n\n async loadPatternMapping({fillPatternMapping, fetch}) {\n this.setState({patternMapping: null});\n let patternMapping = fillPatternMapping;\n if (typeof patternMapping === 'string') {\n patternMapping = await fetch(patternMapping, {\n propName: 'fillPatternMapping',\n layer: this\n });\n }\n this.setState({patternMapping});\n this.getAttributeManager().invalidate('getFillPattern');\n this.setNeedsUpdate();\n }\n\n getPatternFrame(name) {\n const {patternMapping} = this.state;\n const def = patternMapping && patternMapping[name];\n return def ? [def.x, def.y, def.width, def.height] : [0, 0, 0, 0];\n }\n}\n\nFillStyleExtension.extensionName = 'FillStyleExtension';\nFillStyleExtension.defaultProps = defaultProps;\n"],"file":"fill-style.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/fill-style/fill-style.js"],"names":["defaultProps","fillPatternEnabled","fillPatternAtlas","fillPatternMapping","fillPatternMask","getFillPattern","type","value","d","pattern","getFillPatternScale","getFillPatternOffset","DEFAULT_TEXTURE_PARAMETERS","FillStyleExtension","LayerExtension","constructor","isEnabled","layer","getAttributeManager","state","pathTesselator","getShaders","extension","modules","opts","patternShaders","filter","Boolean","initializeState","context","attributeManager","add","fillPatternFrames","size","accessor","transform","getPatternFrame","bind","shaderAttributes","divisor","instanceFillPatternFrames","fillPatternScales","defaultValue","instanceFillPatternScales","fillPatternOffsets","instanceFillPatternOffsets","setState","emptyTexture","Texture2D","gl","data","Uint8Array","width","height","updateState","props","oldProps","loadPatternAtlas","call","loadPatternMapping","draw","params","patternTexture","setModuleParameters","fillPatternTexture","finalizeState","delete","fetch","image","propName","parameters","patternMapping","invalidate","setNeedsUpdate","name","def","x","y","extensionName"],"mappings":"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","sourcesContent":["import {LayerExtension} from '@deck.gl/core';\nimport {Texture2D} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\n\nimport {patternShaders} from './shaders.glsl';\n\nconst defaultProps = {\n fillPatternEnabled: true,\n fillPatternAtlas: null,\n fillPatternMapping: null,\n fillPatternMask: true,\n getFillPattern: {type: 'accessor', value: d => d.pattern},\n getFillPatternScale: {type: 'accessor', value: 1},\n getFillPatternOffset: {type: 'accessor', value: [0, 0]}\n};\n\nconst DEFAULT_TEXTURE_PARAMETERS = {\n [GL.TEXTURE_MIN_FILTER]: GL.LINEAR,\n // GL.LINEAR is the default value but explicitly set it here\n [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n // for texture boundary artifact\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\n\nexport default class FillStyleExtension extends LayerExtension {\n constructor({pattern = false} = {}) {\n super({pattern});\n }\n\n isEnabled(layer) {\n return layer.getAttributeManager() && !layer.state.pathTesselator;\n }\n\n getShaders(extension) {\n if (!extension.isEnabled(this)) {\n return null;\n }\n\n return {\n modules: [extension.opts.pattern && patternShaders].filter(Boolean)\n };\n }\n\n initializeState(context, extension) {\n if (!extension.isEnabled(this)) {\n return;\n }\n\n const attributeManager = this.getAttributeManager();\n\n if (extension.opts.pattern) {\n attributeManager.add({\n fillPatternFrames: {\n size: 4,\n accessor: 'getFillPattern',\n transform: extension.getPatternFrame.bind(this),\n shaderAttributes: {\n fillPatternFrames: {\n divisor: 0\n },\n instanceFillPatternFrames: {\n divisor: 1\n }\n }\n },\n fillPatternScales: {\n size: 1,\n accessor: 'getFillPatternScale',\n defaultValue: 1,\n shaderAttributes: {\n fillPatternScales: {\n divisor: 0\n },\n instanceFillPatternScales: {\n divisor: 1\n }\n }\n },\n fillPatternOffsets: {\n size: 2,\n accessor: 'getFillPatternOffset',\n shaderAttributes: {\n fillPatternOffsets: {\n divisor: 0\n },\n instanceFillPatternOffsets: {\n divisor: 1\n }\n }\n }\n });\n }\n this.setState({\n emptyTexture: new Texture2D(this.context.gl, {\n data: new Uint8Array(4),\n width: 1,\n height: 1\n })\n });\n }\n\n updateState({props, oldProps}, extension) {\n if (!extension.isEnabled(this)) {\n return;\n }\n\n if (props.fillPatternAtlas && props.fillPatternAtlas !== oldProps.fillPatternAtlas) {\n extension.loadPatternAtlas.call(this, props);\n }\n if (props.fillPatternMapping && props.fillPatternMapping !== oldProps.fillPatternMapping) {\n extension.loadPatternMapping.call(this, props);\n }\n }\n\n draw(params, extension) {\n if (!extension.isEnabled(this)) {\n return;\n }\n\n const {patternTexture} = this.state;\n this.setModuleParameters({\n fillPatternTexture: patternTexture || this.state.emptyTexture\n });\n }\n\n finalizeState() {\n const {patternTexture, emptyTexture} = this.state;\n patternTexture?.delete();\n emptyTexture?.delete();\n }\n\n async loadPatternAtlas({fillPatternAtlas, fetch}) {\n this.state.patternTexture?.delete();\n this.setState({patternTexture: null});\n let image = fillPatternAtlas;\n if (typeof image === 'string') {\n image = await fetch(image, {propName: 'fillPatternAtlas', layer: this});\n }\n const patternTexture =\n image instanceof Texture2D\n ? image\n : new Texture2D(this.context.gl, {\n data: image,\n parameters: DEFAULT_TEXTURE_PARAMETERS\n });\n this.setState({patternTexture});\n }\n\n async loadPatternMapping({fillPatternMapping, fetch}) {\n this.setState({patternMapping: null});\n let patternMapping = fillPatternMapping;\n if (typeof patternMapping === 'string') {\n patternMapping = await fetch(patternMapping, {\n propName: 'fillPatternMapping',\n layer: this\n });\n }\n this.setState({patternMapping});\n this.getAttributeManager().invalidate('getFillPattern');\n this.setNeedsUpdate();\n }\n\n getPatternFrame(name) {\n const {patternMapping} = this.state;\n const def = patternMapping && patternMapping[name];\n return def ? [def.x, def.y, def.width, def.height] : [0, 0, 0, 0];\n }\n}\n\nFillStyleExtension.extensionName = 'FillStyleExtension';\nFillStyleExtension.defaultProps = defaultProps;\n"],"file":"fill-style.js"}
|
|
@@ -7,20 +7,19 @@ exports.patternShaders = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _core = require("@deck.gl/core");
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
const patternVs = "\n#ifdef NON_INSTANCED_MODEL\n #define FILL_PATTERN_FRAME_ATTRIB fillPatternFrames\n #define FILL_PATTERN_SCALE_ATTRIB fillPatternScales\n #define FILL_PATTERN_OFFSET_ATTRIB fillPatternOffsets\n#else\n #define FILL_PATTERN_FRAME_ATTRIB instanceFillPatternFrames\n #define FILL_PATTERN_SCALE_ATTRIB instanceFillPatternScales\n #define FILL_PATTERN_OFFSET_ATTRIB instanceFillPatternOffsets\n#endif\n\nattribute vec4 FILL_PATTERN_FRAME_ATTRIB;\nattribute float FILL_PATTERN_SCALE_ATTRIB;\nattribute vec2 FILL_PATTERN_OFFSET_ATTRIB;\n\nuniform bool fill_patternEnabled;\nuniform vec2 fill_patternTextureSize;\n\nvarying vec2 fill_uv;\nvarying vec4 fill_patternBounds;\nvarying vec3 fill_patternPlacement;\n";
|
|
11
|
+
const patternFs = "\nuniform bool fill_patternEnabled;\nuniform bool fill_patternMask;\nuniform sampler2D fill_patternTexture;\nuniform vec2 fill_uvCoordinateOrigin;\n\nvarying vec4 fill_patternBounds;\nvarying vec3 fill_patternPlacement;\nvarying vec2 fill_uv;\n\nconst float FILL_UV_SCALE = 512.0 / 40000000.0;\n";
|
|
12
|
+
const inject = {
|
|
13
13
|
'vs:DECKGL_FILTER_GL_POSITION': "\n fill_uv = geometry.position.xy;\n ",
|
|
14
14
|
'vs:DECKGL_FILTER_COLOR': "\n if (fill_patternEnabled) {\n fill_patternBounds = FILL_PATTERN_FRAME_ATTRIB / vec4(fill_patternTextureSize, fill_patternTextureSize);\n fill_patternPlacement.xy = FILL_PATTERN_OFFSET_ATTRIB;\n fill_patternPlacement.z = FILL_PATTERN_SCALE_ATTRIB * FILL_PATTERN_FRAME_ATTRIB.w;\n }\n ",
|
|
15
15
|
'fs:DECKGL_FILTER_COLOR': "\n if (fill_patternEnabled) {\n float scale = FILL_UV_SCALE * fill_patternPlacement.z;\n vec2 patternUV = mod(mod(fill_uvCoordinateOrigin, scale) + fill_uv, scale) / scale;\n patternUV = mod(fill_patternPlacement.xy + patternUV, 1.0);\n\n vec2 texCoords = fill_patternBounds.xy + fill_patternBounds.zw * patternUV;\n\n vec4 patternColor = texture2D(fill_patternTexture, texCoords);\n color.a *= patternColor.a;\n if (!fill_patternMask) {\n color.rgb = patternColor.rgb;\n }\n }\n "
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
function getPatternUniforms() {
|
|
19
|
-
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
20
|
-
var uniforms = arguments.length > 1 ? arguments[1] : undefined;
|
|
21
|
-
|
|
18
|
+
function getPatternUniforms(opts = {}, uniforms) {
|
|
22
19
|
if ('fillPatternTexture' in opts) {
|
|
23
|
-
|
|
20
|
+
const {
|
|
21
|
+
fillPatternTexture
|
|
22
|
+
} = opts;
|
|
24
23
|
return {
|
|
25
24
|
fill_patternTexture: fillPatternTexture,
|
|
26
25
|
fill_patternTextureSize: [fillPatternTexture.width, fillPatternTexture.height]
|
|
@@ -28,14 +27,16 @@ function getPatternUniforms() {
|
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
if (opts.viewport) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
const {
|
|
31
|
+
viewport,
|
|
32
|
+
fillPatternMask = true,
|
|
33
|
+
fillPatternEnabled = true
|
|
34
|
+
} = opts;
|
|
35
|
+
const {
|
|
36
|
+
project_uCoordinateOrigin,
|
|
37
|
+
project_uCoordinateSystem
|
|
38
|
+
} = uniforms;
|
|
39
|
+
const coordinateOriginCommon = project_uCoordinateSystem === _core.COORDINATE_SYSTEM.CARTESIAN ? project_uCoordinateOrigin : viewport.projectPosition(project_uCoordinateOrigin);
|
|
39
40
|
return {
|
|
40
41
|
fill_uvCoordinateOrigin: coordinateOriginCommon.slice(0, 2),
|
|
41
42
|
fill_patternMask: fillPatternMask,
|
|
@@ -46,11 +47,11 @@ function getPatternUniforms() {
|
|
|
46
47
|
return {};
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
|
|
50
|
+
const patternShaders = {
|
|
50
51
|
name: 'fill-pattern',
|
|
51
52
|
vs: patternVs,
|
|
52
53
|
fs: patternFs,
|
|
53
|
-
inject
|
|
54
|
+
inject,
|
|
54
55
|
dependencies: [_core.project],
|
|
55
56
|
getUniforms: getPatternUniforms
|
|
56
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fill-style/shaders.glsl.js"],"names":["patternVs","patternFs","inject","getPatternUniforms","opts","uniforms","fillPatternTexture","fill_patternTexture","fill_patternTextureSize","width","height","viewport","fillPatternMask","fillPatternEnabled","project_uCoordinateOrigin","project_uCoordinateSystem","coordinateOriginCommon","COORDINATE_SYSTEM","CARTESIAN","projectPosition","fill_uvCoordinateOrigin","slice","fill_patternMask","fill_patternEnabled","patternShaders","name","vs","fs","dependencies","project","getUniforms"],"mappings":";;;;;;;AAAA;;AAKA,
|
|
1
|
+
{"version":3,"sources":["../../../src/fill-style/shaders.glsl.js"],"names":["patternVs","patternFs","inject","getPatternUniforms","opts","uniforms","fillPatternTexture","fill_patternTexture","fill_patternTextureSize","width","height","viewport","fillPatternMask","fillPatternEnabled","project_uCoordinateOrigin","project_uCoordinateSystem","coordinateOriginCommon","COORDINATE_SYSTEM","CARTESIAN","projectPosition","fill_uvCoordinateOrigin","slice","fill_patternMask","fill_patternEnabled","patternShaders","name","vs","fs","dependencies","project","getUniforms"],"mappings":";;;;;;;AAAA;;AAKA,MAAMA,SAAS,ysBAAf;AAuBA,MAAMC,SAAS,4SAAf;AAaA,MAAMC,MAAM,GAAG;AACb,6EADa;AAKb,iVALa;AAab;AAba,CAAf;;AA8BA,SAASC,kBAAT,CAA4BC,IAAI,GAAG,EAAnC,EAAuCC,QAAvC,EAAiD;AAC/C,MAAI,wBAAwBD,IAA5B,EAAkC;AAChC,UAAM;AAACE,MAAAA;AAAD,QAAuBF,IAA7B;AACA,WAAO;AACLG,MAAAA,mBAAmB,EAAED,kBADhB;AAELE,MAAAA,uBAAuB,EAAE,CAACF,kBAAkB,CAACG,KAApB,EAA2BH,kBAAkB,CAACI,MAA9C;AAFpB,KAAP;AAID;;AACD,MAAIN,IAAI,CAACO,QAAT,EAAmB;AACjB,UAAM;AAACA,MAAAA,QAAD;AAAWC,MAAAA,eAAe,GAAG,IAA7B;AAAmCC,MAAAA,kBAAkB,GAAG;AAAxD,QAAgET,IAAtE;AACA,UAAM;AAACU,MAAAA,yBAAD;AAA4BC,MAAAA;AAA5B,QAAyDV,QAA/D;AAEA,UAAMW,sBAAsB,GAC1BD,yBAAyB,KAAKE,wBAAkBC,SAAhD,GACIJ,yBADJ,GAEIH,QAAQ,CAACQ,eAAT,CAAyBL,yBAAzB,CAHN;AAKA,WAAO;AACLM,MAAAA,uBAAuB,EAAEJ,sBAAsB,CAACK,KAAvB,CAA6B,CAA7B,EAAgC,CAAhC,CADpB;AAELC,MAAAA,gBAAgB,EAAEV,eAFb;AAGLW,MAAAA,mBAAmB,EAAEV;AAHhB,KAAP;AAKD;;AACD,SAAO,EAAP;AACD;;AAEM,MAAMW,cAAc,GAAG;AAC5BC,EAAAA,IAAI,EAAE,cADsB;AAE5BC,EAAAA,EAAE,EAAE1B,SAFwB;AAG5B2B,EAAAA,EAAE,EAAE1B,SAHwB;AAI5BC,EAAAA,MAJ4B;AAK5B0B,EAAAA,YAAY,EAAE,CAACC,aAAD,CALc;AAM5BC,EAAAA,WAAW,EAAE3B;AANe,CAAvB","sourcesContent":["import {project, COORDINATE_SYSTEM} from '@deck.gl/core';\n\n/*\n * fill pattern shader module\n */\nconst patternVs = `\n#ifdef NON_INSTANCED_MODEL\n #define FILL_PATTERN_FRAME_ATTRIB fillPatternFrames\n #define FILL_PATTERN_SCALE_ATTRIB fillPatternScales\n #define FILL_PATTERN_OFFSET_ATTRIB fillPatternOffsets\n#else\n #define FILL_PATTERN_FRAME_ATTRIB instanceFillPatternFrames\n #define FILL_PATTERN_SCALE_ATTRIB instanceFillPatternScales\n #define FILL_PATTERN_OFFSET_ATTRIB instanceFillPatternOffsets\n#endif\n\nattribute vec4 FILL_PATTERN_FRAME_ATTRIB;\nattribute float FILL_PATTERN_SCALE_ATTRIB;\nattribute vec2 FILL_PATTERN_OFFSET_ATTRIB;\n\nuniform bool fill_patternEnabled;\nuniform vec2 fill_patternTextureSize;\n\nvarying vec2 fill_uv;\nvarying vec4 fill_patternBounds;\nvarying vec3 fill_patternPlacement;\n`;\n\nconst patternFs = `\nuniform bool fill_patternEnabled;\nuniform bool fill_patternMask;\nuniform sampler2D fill_patternTexture;\nuniform vec2 fill_uvCoordinateOrigin;\n\nvarying vec4 fill_patternBounds;\nvarying vec3 fill_patternPlacement;\nvarying vec2 fill_uv;\n\nconst float FILL_UV_SCALE = 512.0 / 40000000.0;\n`;\n\nconst inject = {\n 'vs:DECKGL_FILTER_GL_POSITION': `\n fill_uv = geometry.position.xy;\n `,\n\n 'vs:DECKGL_FILTER_COLOR': `\n if (fill_patternEnabled) {\n fill_patternBounds = FILL_PATTERN_FRAME_ATTRIB / vec4(fill_patternTextureSize, fill_patternTextureSize);\n fill_patternPlacement.xy = FILL_PATTERN_OFFSET_ATTRIB;\n fill_patternPlacement.z = FILL_PATTERN_SCALE_ATTRIB * FILL_PATTERN_FRAME_ATTRIB.w;\n }\n `,\n\n 'fs:DECKGL_FILTER_COLOR': `\n if (fill_patternEnabled) {\n float scale = FILL_UV_SCALE * fill_patternPlacement.z;\n vec2 patternUV = mod(mod(fill_uvCoordinateOrigin, scale) + fill_uv, scale) / scale;\n patternUV = mod(fill_patternPlacement.xy + patternUV, 1.0);\n\n vec2 texCoords = fill_patternBounds.xy + fill_patternBounds.zw * patternUV;\n\n vec4 patternColor = texture2D(fill_patternTexture, texCoords);\n color.a *= patternColor.a;\n if (!fill_patternMask) {\n color.rgb = patternColor.rgb;\n }\n }\n `\n};\n\nfunction getPatternUniforms(opts = {}, uniforms) {\n if ('fillPatternTexture' in opts) {\n const {fillPatternTexture} = opts;\n return {\n fill_patternTexture: fillPatternTexture,\n fill_patternTextureSize: [fillPatternTexture.width, fillPatternTexture.height]\n };\n }\n if (opts.viewport) {\n const {viewport, fillPatternMask = true, fillPatternEnabled = true} = opts;\n const {project_uCoordinateOrigin, project_uCoordinateSystem} = uniforms;\n\n const coordinateOriginCommon =\n project_uCoordinateSystem === COORDINATE_SYSTEM.CARTESIAN\n ? project_uCoordinateOrigin\n : viewport.projectPosition(project_uCoordinateOrigin);\n\n return {\n fill_uvCoordinateOrigin: coordinateOriginCommon.slice(0, 2),\n fill_patternMask: fillPatternMask,\n fill_patternEnabled: fillPatternEnabled\n };\n }\n return {};\n}\n\nexport const patternShaders = {\n name: 'fill-pattern',\n vs: patternVs,\n fs: patternFs,\n inject,\n dependencies: [project],\n getUniforms: getPatternUniforms\n};\n"],"file":"shaders.glsl.js"}
|