@deck.gl/extensions 8.6.3 → 8.7.0-alpha.10
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 +634 -586
- package/dist/es5/brushing/brushing.js +80 -49
- package/dist/es5/brushing/brushing.js.map +1 -1
- package/dist/es5/brushing/shader-module.js +16 -15
- package/dist/es5/brushing/shader-module.js.map +1 -1
- package/dist/es5/clip/clip.js +62 -35
- package/dist/es5/clip/clip.js.map +1 -1
- package/dist/es5/data-filter/aggregator.js +19 -14
- package/dist/es5/data-filter/aggregator.js.map +1 -1
- package/dist/es5/data-filter/data-filter.js +177 -147
- package/dist/es5/data-filter/data-filter.js.map +1 -1
- package/dist/es5/data-filter/shader-module.js +58 -37
- package/dist/es5/data-filter/shader-module.js.map +1 -1
- package/dist/es5/fill-style/fill-style.js +244 -158
- package/dist/es5/fill-style/fill-style.js.map +1 -1
- package/dist/es5/fill-style/shaders.glsl.js +18 -19
- package/dist/es5/fill-style/shaders.glsl.js.map +1 -1
- package/dist/es5/fp64/fp64.js +36 -12
- package/dist/es5/fp64/fp64.js.map +1 -1
- package/dist/es5/fp64/project64.js +18 -20
- package/dist/es5/fp64/project64.js.map +1 -1
- package/dist/es5/index.js +7 -7
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/path-style/path-style.js +121 -89
- 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/dist/esm/clip/clip.js.map +1 -1
- package/dist/esm/data-filter/aggregator.js.map +1 -1
- package/dist/esm/fill-style/fill-style.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist.min.js +1 -1
- package/package.json +2 -2
- package/src/clip/clip.js +1 -1
- package/src/data-filter/aggregator.js +107 -107
- /package/src/{index.js → index.ts} +0 -0
|
@@ -1,24 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
8
|
exports.default = void 0;
|
|
7
9
|
|
|
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
|
+
|
|
8
26
|
var _core = require("@deck.gl/core");
|
|
9
27
|
|
|
10
28
|
var _core2 = require("@luma.gl/core");
|
|
11
29
|
|
|
12
30
|
var _shaders = require("./shaders.glsl");
|
|
13
31
|
|
|
14
|
-
|
|
32
|
+
var _DEFAULT_TEXTURE_PARA;
|
|
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 defaultProps = {
|
|
15
39
|
fillPatternEnabled: true,
|
|
16
40
|
fillPatternAtlas: null,
|
|
17
41
|
fillPatternMapping: null,
|
|
18
42
|
fillPatternMask: true,
|
|
19
43
|
getFillPattern: {
|
|
20
44
|
type: 'accessor',
|
|
21
|
-
value: d
|
|
45
|
+
value: function value(d) {
|
|
46
|
+
return d.pattern;
|
|
47
|
+
}
|
|
22
48
|
},
|
|
23
49
|
getFillPatternScale: {
|
|
24
50
|
type: 'accessor',
|
|
@@ -29,194 +55,254 @@ const defaultProps = {
|
|
|
29
55
|
value: [0, 0]
|
|
30
56
|
}
|
|
31
57
|
};
|
|
32
|
-
|
|
33
|
-
[10241]: 9729,
|
|
34
|
-
[10240]: 9729,
|
|
35
|
-
[10242]: 33071,
|
|
36
|
-
[10243]: 33071
|
|
37
|
-
};
|
|
58
|
+
var DEFAULT_TEXTURE_PARAMETERS = (_DEFAULT_TEXTURE_PARA = {}, (0, _defineProperty2.default)(_DEFAULT_TEXTURE_PARA, 10241, 9729), (0, _defineProperty2.default)(_DEFAULT_TEXTURE_PARA, 10240, 9729), (0, _defineProperty2.default)(_DEFAULT_TEXTURE_PARA, 10242, 33071), (0, _defineProperty2.default)(_DEFAULT_TEXTURE_PARA, 10243, 33071), _DEFAULT_TEXTURE_PARA);
|
|
38
59
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
pattern = false
|
|
42
|
-
} = {}) {
|
|
43
|
-
super({
|
|
44
|
-
pattern
|
|
45
|
-
});
|
|
46
|
-
}
|
|
60
|
+
var FillStyleExtension = function (_LayerExtension) {
|
|
61
|
+
(0, _inherits2.default)(FillStyleExtension, _LayerExtension);
|
|
47
62
|
|
|
48
|
-
|
|
49
|
-
return layer.getAttributeManager() && !layer.state.pathTesselator;
|
|
50
|
-
}
|
|
63
|
+
var _super = _createSuper(FillStyleExtension);
|
|
51
64
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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;
|
|
56
69
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
70
|
+
(0, _classCallCheck2.default)(this, FillStyleExtension);
|
|
71
|
+
return _super.call(this, {
|
|
72
|
+
pattern: pattern
|
|
73
|
+
});
|
|
60
74
|
}
|
|
61
75
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
76
|
+
(0, _createClass2.default)(FillStyleExtension, [{
|
|
77
|
+
key: "isEnabled",
|
|
78
|
+
value: function isEnabled(layer) {
|
|
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
|
+
}
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
modules: [extension.opts.pattern && _shaders.patternShaders].filter(Boolean)
|
|
90
|
+
};
|
|
65
91
|
}
|
|
92
|
+
}, {
|
|
93
|
+
key: "initializeState",
|
|
94
|
+
value: function initializeState(context, extension) {
|
|
95
|
+
if (!extension.isEnabled(this)) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
66
98
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
99
|
+
var attributeManager = this.getAttributeManager();
|
|
100
|
+
|
|
101
|
+
if (extension.opts.pattern) {
|
|
102
|
+
attributeManager.add({
|
|
103
|
+
fillPatternFrames: {
|
|
104
|
+
size: 4,
|
|
105
|
+
accessor: 'getFillPattern',
|
|
106
|
+
transform: extension.getPatternFrame.bind(this),
|
|
107
|
+
shaderAttributes: {
|
|
108
|
+
fillPatternFrames: {
|
|
109
|
+
divisor: 0
|
|
110
|
+
},
|
|
111
|
+
instanceFillPatternFrames: {
|
|
112
|
+
divisor: 1
|
|
113
|
+
}
|
|
81
114
|
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
115
|
+
},
|
|
116
|
+
fillPatternScales: {
|
|
117
|
+
size: 1,
|
|
118
|
+
accessor: 'getFillPatternScale',
|
|
119
|
+
defaultValue: 1,
|
|
120
|
+
shaderAttributes: {
|
|
121
|
+
fillPatternScales: {
|
|
122
|
+
divisor: 0
|
|
123
|
+
},
|
|
124
|
+
instanceFillPatternScales: {
|
|
125
|
+
divisor: 1
|
|
126
|
+
}
|
|
94
127
|
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
128
|
+
},
|
|
129
|
+
fillPatternOffsets: {
|
|
130
|
+
size: 2,
|
|
131
|
+
accessor: 'getFillPatternOffset',
|
|
132
|
+
shaderAttributes: {
|
|
133
|
+
fillPatternOffsets: {
|
|
134
|
+
divisor: 0
|
|
135
|
+
},
|
|
136
|
+
instanceFillPatternOffsets: {
|
|
137
|
+
divisor: 1
|
|
138
|
+
}
|
|
106
139
|
}
|
|
107
140
|
}
|
|
108
|
-
}
|
|
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
|
+
})
|
|
109
150
|
});
|
|
110
151
|
}
|
|
152
|
+
}, {
|
|
153
|
+
key: "updateState",
|
|
154
|
+
value: function updateState(_ref2, extension) {
|
|
155
|
+
var props = _ref2.props,
|
|
156
|
+
oldProps = _ref2.oldProps;
|
|
111
157
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
width: 1,
|
|
116
|
-
height: 1
|
|
117
|
-
})
|
|
118
|
-
});
|
|
119
|
-
}
|
|
158
|
+
if (!extension.isEnabled(this)) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
120
161
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}, extension) {
|
|
125
|
-
if (!extension.isEnabled(this)) {
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
162
|
+
if (props.fillPatternAtlas && props.fillPatternAtlas !== oldProps.fillPatternAtlas) {
|
|
163
|
+
extension.loadPatternAtlas.call(this, props);
|
|
164
|
+
}
|
|
128
165
|
|
|
129
|
-
|
|
130
|
-
|
|
166
|
+
if (props.fillPatternMapping && props.fillPatternMapping !== oldProps.fillPatternMapping) {
|
|
167
|
+
extension.loadPatternMapping.call(this, props);
|
|
168
|
+
}
|
|
131
169
|
}
|
|
170
|
+
}, {
|
|
171
|
+
key: "draw",
|
|
172
|
+
value: function draw(params, extension) {
|
|
173
|
+
if (!extension.isEnabled(this)) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
132
176
|
|
|
133
|
-
|
|
134
|
-
|
|
177
|
+
var patternTexture = this.state.patternTexture;
|
|
178
|
+
this.setModuleParameters({
|
|
179
|
+
fillPatternTexture: patternTexture || this.state.emptyTexture
|
|
180
|
+
});
|
|
135
181
|
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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();
|
|
141
190
|
}
|
|
191
|
+
}, {
|
|
192
|
+
key: "loadPatternAtlas",
|
|
193
|
+
value: function () {
|
|
194
|
+
var _loadPatternAtlas = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(_ref3) {
|
|
195
|
+
var _this$state$patternTe;
|
|
142
196
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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;
|
|
150
208
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
} = this.state;
|
|
156
|
-
patternTexture === null || patternTexture === void 0 ? void 0 : patternTexture.delete();
|
|
157
|
-
emptyTexture === null || emptyTexture === void 0 ? void 0 : emptyTexture.delete();
|
|
158
|
-
}
|
|
209
|
+
if (!(typeof image === 'string')) {
|
|
210
|
+
_context.next = 8;
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
159
213
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
214
|
+
_context.next = 7;
|
|
215
|
+
return fetch(image, {
|
|
216
|
+
propName: 'fillPatternAtlas',
|
|
217
|
+
layer: this
|
|
218
|
+
});
|
|
165
219
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
patternTexture: null
|
|
169
|
-
});
|
|
170
|
-
let image = fillPatternAtlas;
|
|
220
|
+
case 7:
|
|
221
|
+
image = _context.sent;
|
|
171
222
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
223
|
+
case 8:
|
|
224
|
+
patternTexture = image instanceof _core2.Texture2D ? image : new _core2.Texture2D(this.context.gl, {
|
|
225
|
+
data: image,
|
|
226
|
+
parameters: DEFAULT_TEXTURE_PARAMETERS
|
|
227
|
+
});
|
|
228
|
+
this.setState({
|
|
229
|
+
patternTexture: patternTexture
|
|
230
|
+
});
|
|
178
231
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
232
|
+
case 10:
|
|
233
|
+
case "end":
|
|
234
|
+
return _context.stop();
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}, _callee, this);
|
|
238
|
+
}));
|
|
187
239
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}) {
|
|
192
|
-
this.setState({
|
|
193
|
-
patternMapping: null
|
|
194
|
-
});
|
|
195
|
-
let patternMapping = fillPatternMapping;
|
|
240
|
+
function loadPatternAtlas(_x) {
|
|
241
|
+
return _loadPatternAtlas.apply(this, arguments);
|
|
242
|
+
}
|
|
196
243
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
244
|
+
return loadPatternAtlas;
|
|
245
|
+
}()
|
|
246
|
+
}, {
|
|
247
|
+
key: "loadPatternMapping",
|
|
248
|
+
value: function () {
|
|
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;
|
|
203
260
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
this.setNeedsUpdate();
|
|
209
|
-
}
|
|
261
|
+
if (!(typeof patternMapping === 'string')) {
|
|
262
|
+
_context2.next = 7;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
210
265
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
266
|
+
_context2.next = 6;
|
|
267
|
+
return fetch(patternMapping, {
|
|
268
|
+
propName: 'fillPatternMapping',
|
|
269
|
+
layer: this
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
case 6:
|
|
273
|
+
patternMapping = _context2.sent;
|
|
218
274
|
|
|
219
|
-
|
|
275
|
+
case 7:
|
|
276
|
+
this.setState({
|
|
277
|
+
patternMapping: patternMapping
|
|
278
|
+
});
|
|
279
|
+
this.getAttributeManager().invalidate('getFillPattern');
|
|
280
|
+
this.setNeedsUpdate();
|
|
281
|
+
|
|
282
|
+
case 10:
|
|
283
|
+
case "end":
|
|
284
|
+
return _context2.stop();
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}, _callee2, this);
|
|
288
|
+
}));
|
|
289
|
+
|
|
290
|
+
function loadPatternMapping(_x2) {
|
|
291
|
+
return _loadPatternMapping.apply(this, arguments);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
return loadPatternMapping;
|
|
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);
|
|
220
306
|
|
|
221
307
|
exports.default = FillStyleExtension;
|
|
222
308
|
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","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"}
|
|
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"}
|
|
@@ -7,19 +7,20 @@ exports.patternShaders = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _core = require("@deck.gl/core");
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
var 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
|
+
var 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
|
+
var 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(
|
|
18
|
+
function getPatternUniforms() {
|
|
19
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
20
|
+
var uniforms = arguments.length > 1 ? arguments[1] : undefined;
|
|
21
|
+
|
|
19
22
|
if ('fillPatternTexture' in opts) {
|
|
20
|
-
|
|
21
|
-
fillPatternTexture
|
|
22
|
-
} = opts;
|
|
23
|
+
var fillPatternTexture = opts.fillPatternTexture;
|
|
23
24
|
return {
|
|
24
25
|
fill_patternTexture: fillPatternTexture,
|
|
25
26
|
fill_patternTextureSize: [fillPatternTexture.width, fillPatternTexture.height]
|
|
@@ -27,16 +28,14 @@ function getPatternUniforms(opts = {}, uniforms) {
|
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
if (opts.viewport) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
} = uniforms;
|
|
39
|
-
const coordinateOriginCommon = project_uCoordinateSystem === _core.COORDINATE_SYSTEM.CARTESIAN ? project_uCoordinateOrigin : viewport.projectPosition(project_uCoordinateOrigin);
|
|
31
|
+
var viewport = opts.viewport,
|
|
32
|
+
_opts$fillPatternMask = opts.fillPatternMask,
|
|
33
|
+
fillPatternMask = _opts$fillPatternMask === void 0 ? true : _opts$fillPatternMask,
|
|
34
|
+
_opts$fillPatternEnab = opts.fillPatternEnabled,
|
|
35
|
+
fillPatternEnabled = _opts$fillPatternEnab === void 0 ? true : _opts$fillPatternEnab;
|
|
36
|
+
var project_uCoordinateOrigin = uniforms.project_uCoordinateOrigin,
|
|
37
|
+
project_uCoordinateSystem = uniforms.project_uCoordinateSystem;
|
|
38
|
+
var coordinateOriginCommon = project_uCoordinateSystem === _core.COORDINATE_SYSTEM.CARTESIAN ? project_uCoordinateOrigin : viewport.projectPosition(project_uCoordinateOrigin);
|
|
40
39
|
return {
|
|
41
40
|
fill_uvCoordinateOrigin: coordinateOriginCommon.slice(0, 2),
|
|
42
41
|
fill_patternMask: fillPatternMask,
|
|
@@ -47,11 +46,11 @@ function getPatternUniforms(opts = {}, uniforms) {
|
|
|
47
46
|
return {};
|
|
48
47
|
}
|
|
49
48
|
|
|
50
|
-
|
|
49
|
+
var patternShaders = {
|
|
51
50
|
name: 'fill-pattern',
|
|
52
51
|
vs: patternVs,
|
|
53
52
|
fs: patternFs,
|
|
54
|
-
inject,
|
|
53
|
+
inject: inject,
|
|
55
54
|
dependencies: [_core.project],
|
|
56
55
|
getUniforms: getPatternUniforms
|
|
57
56
|
};
|
|
@@ -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,IAAMA,SAAS,ysBAAf;AAuBA,IAAMC,SAAS,4SAAf;AAaA,IAAMC,MAAM,GAAG;AACb,6EADa;AAKb,iVALa;AAab;AAba,CAAf;;AA8BA,SAASC,kBAAT,GAAiD;AAAA,MAArBC,IAAqB,uEAAd,EAAc;AAAA,MAAVC,QAAU;;AAC/C,MAAI,wBAAwBD,IAA5B,EAAkC;AAChC,QAAOE,kBAAP,GAA6BF,IAA7B,CAAOE,kBAAP;AACA,WAAO;AACLC,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,QAAOA,QAAP,GAAsEP,IAAtE,CAAOO,QAAP;AAAA,gCAAsEP,IAAtE,CAAiBQ,eAAjB;AAAA,QAAiBA,eAAjB,sCAAmC,IAAnC;AAAA,gCAAsER,IAAtE,CAAyCS,kBAAzC;AAAA,QAAyCA,kBAAzC,sCAA8D,IAA9D;AACA,QAAOC,yBAAP,GAA+DT,QAA/D,CAAOS,yBAAP;AAAA,QAAkCC,yBAAlC,GAA+DV,QAA/D,CAAkCU,yBAAlC;AAEA,QAAMC,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,IAAMW,cAAc,GAAG;AAC5BC,EAAAA,IAAI,EAAE,cADsB;AAE5BC,EAAAA,EAAE,EAAE1B,SAFwB;AAG5B2B,EAAAA,EAAE,EAAE1B,SAHwB;AAI5BC,EAAAA,MAAM,EAANA,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"}
|