@deck.gl/extensions 9.3.0-alpha.3 → 9.3.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brushing/shader-module.js +1 -1
- package/dist/clip/clip-extension.js +1 -1
- package/dist/collision-filter/shader-module.js +1 -1
- package/dist/data-filter/shader-module.d.ts +18 -4
- package/dist/data-filter/shader-module.d.ts.map +1 -1
- package/dist/data-filter/shader-module.js +132 -68
- package/dist/data-filter/shader-module.js.map +1 -1
- package/dist/dist.dev.js +402 -89
- package/dist/fill-style/shader-module.d.ts +2 -2
- package/dist/fill-style/shader-module.js +1 -1
- package/dist/fp64/project64.glsl.d.ts +1 -1
- package/dist/fp64/project64.glsl.js +1 -1
- package/dist/index.cjs +141 -76
- package/dist/index.cjs.map +3 -3
- package/dist/mask/shader-module.d.ts +2 -2
- package/dist/mask/shader-module.js +1 -1
- package/dist/path-style/shaders.glsl.js +1 -1
- package/dist/terrain/shader-module.js +1 -1
- package/dist/terrain/utils.js +1 -1
- package/dist/terrain/utils.js.map +1 -1
- package/dist.min.js +406 -91
- package/package.json +7 -7
- package/src/brushing/shader-module.ts +1 -1
- package/src/clip/clip-extension.ts +1 -1
- package/src/collision-filter/shader-module.ts +1 -1
- package/src/data-filter/shader-module.ts +155 -78
- package/src/fill-style/shader-module.ts +1 -1
- package/src/fp64/project64.glsl.ts +1 -1
- package/src/mask/shader-module.ts +1 -1
- package/src/path-style/shaders.glsl.ts +1 -1
- package/src/terrain/shader-module.ts +1 -1
- package/src/terrain/utils.ts +1 -1
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Plug-and-play functionalities for deck.gl layers",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"version": "9.3.0-alpha.
|
|
6
|
+
"version": "9.3.0-alpha.6",
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"access": "public"
|
|
9
9
|
},
|
|
@@ -38,14 +38,14 @@
|
|
|
38
38
|
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env=dev"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@luma.gl/
|
|
42
|
-
"@luma.gl/
|
|
41
|
+
"@luma.gl/shadertools": "^9.3.2",
|
|
42
|
+
"@luma.gl/webgl": "^9.3.2",
|
|
43
43
|
"@math.gl/core": "^4.1.0"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
"@deck.gl/core": "~9.
|
|
47
|
-
"@luma.gl/core": "~9.3.
|
|
48
|
-
"@luma.gl/engine": "~9.3.
|
|
46
|
+
"@deck.gl/core": "~9.3.0-alpha.1",
|
|
47
|
+
"@luma.gl/core": "~9.3.2",
|
|
48
|
+
"@luma.gl/engine": "~9.3.2"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "6aff0d4eccd01a06a388ab1c07042a94daa3eb31"
|
|
51
51
|
}
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
import type {ShaderModule} from '@luma.gl/shadertools';
|
|
5
|
+
import type {ShaderModule, UniformTypes} from '@luma.gl/shadertools';
|
|
6
6
|
import type {DataFilterExtensionOptions, DataFilterExtensionProps} from './data-filter-extension';
|
|
7
|
-
import {UniformFormat} from '@luma.gl/shadertools/dist/types';
|
|
8
7
|
|
|
9
8
|
/*
|
|
10
9
|
* data filter shader module
|
|
@@ -32,24 +31,18 @@ export type Defines = {
|
|
|
32
31
|
};
|
|
33
32
|
|
|
34
33
|
const uniformBlock = /* glsl */ `\
|
|
35
|
-
uniform dataFilterUniforms {
|
|
34
|
+
layout(std140) uniform dataFilterUniforms {
|
|
36
35
|
bool useSoftMargin;
|
|
37
36
|
bool enabled;
|
|
38
37
|
bool transformSize;
|
|
39
38
|
bool transformColor;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
DATAFILTER_TYPE min64High;
|
|
47
|
-
DATAFILTER_TYPE max64High;
|
|
48
|
-
#endif
|
|
49
|
-
#endif
|
|
50
|
-
#ifdef DATACATEGORY_TYPE
|
|
39
|
+
vec4 min;
|
|
40
|
+
vec4 softMin;
|
|
41
|
+
vec4 softMax;
|
|
42
|
+
vec4 max;
|
|
43
|
+
vec4 min64High;
|
|
44
|
+
vec4 max64High;
|
|
51
45
|
highp uvec4 categoryBitMask;
|
|
52
|
-
#endif
|
|
53
46
|
} dataFilter;
|
|
54
47
|
`;
|
|
55
48
|
|
|
@@ -67,6 +60,86 @@ const vertex = /* glsl */ `
|
|
|
67
60
|
|
|
68
61
|
out float dataFilter_value;
|
|
69
62
|
|
|
63
|
+
#ifdef DATAFILTER_TYPE
|
|
64
|
+
float dataFilter_getMin(float _) {
|
|
65
|
+
return dataFilter.min.x;
|
|
66
|
+
}
|
|
67
|
+
vec2 dataFilter_getMin(vec2 _) {
|
|
68
|
+
return dataFilter.min.xy;
|
|
69
|
+
}
|
|
70
|
+
vec3 dataFilter_getMin(vec3 _) {
|
|
71
|
+
return dataFilter.min.xyz;
|
|
72
|
+
}
|
|
73
|
+
vec4 dataFilter_getMin(vec4 _) {
|
|
74
|
+
return dataFilter.min;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
float dataFilter_getSoftMin(float _) {
|
|
78
|
+
return dataFilter.softMin.x;
|
|
79
|
+
}
|
|
80
|
+
vec2 dataFilter_getSoftMin(vec2 _) {
|
|
81
|
+
return dataFilter.softMin.xy;
|
|
82
|
+
}
|
|
83
|
+
vec3 dataFilter_getSoftMin(vec3 _) {
|
|
84
|
+
return dataFilter.softMin.xyz;
|
|
85
|
+
}
|
|
86
|
+
vec4 dataFilter_getSoftMin(vec4 _) {
|
|
87
|
+
return dataFilter.softMin;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
float dataFilter_getSoftMax(float _) {
|
|
91
|
+
return dataFilter.softMax.x;
|
|
92
|
+
}
|
|
93
|
+
vec2 dataFilter_getSoftMax(vec2 _) {
|
|
94
|
+
return dataFilter.softMax.xy;
|
|
95
|
+
}
|
|
96
|
+
vec3 dataFilter_getSoftMax(vec3 _) {
|
|
97
|
+
return dataFilter.softMax.xyz;
|
|
98
|
+
}
|
|
99
|
+
vec4 dataFilter_getSoftMax(vec4 _) {
|
|
100
|
+
return dataFilter.softMax;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
float dataFilter_getMax(float _) {
|
|
104
|
+
return dataFilter.max.x;
|
|
105
|
+
}
|
|
106
|
+
vec2 dataFilter_getMax(vec2 _) {
|
|
107
|
+
return dataFilter.max.xy;
|
|
108
|
+
}
|
|
109
|
+
vec3 dataFilter_getMax(vec3 _) {
|
|
110
|
+
return dataFilter.max.xyz;
|
|
111
|
+
}
|
|
112
|
+
vec4 dataFilter_getMax(vec4 _) {
|
|
113
|
+
return dataFilter.max;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
float dataFilter_getMin64High(float _) {
|
|
117
|
+
return dataFilter.min64High.x;
|
|
118
|
+
}
|
|
119
|
+
vec2 dataFilter_getMin64High(vec2 _) {
|
|
120
|
+
return dataFilter.min64High.xy;
|
|
121
|
+
}
|
|
122
|
+
vec3 dataFilter_getMin64High(vec3 _) {
|
|
123
|
+
return dataFilter.min64High.xyz;
|
|
124
|
+
}
|
|
125
|
+
vec4 dataFilter_getMin64High(vec4 _) {
|
|
126
|
+
return dataFilter.min64High;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
float dataFilter_getMax64High(float _) {
|
|
130
|
+
return dataFilter.max64High.x;
|
|
131
|
+
}
|
|
132
|
+
vec2 dataFilter_getMax64High(vec2 _) {
|
|
133
|
+
return dataFilter.max64High.xy;
|
|
134
|
+
}
|
|
135
|
+
vec3 dataFilter_getMax64High(vec3 _) {
|
|
136
|
+
return dataFilter.max64High.xyz;
|
|
137
|
+
}
|
|
138
|
+
vec4 dataFilter_getMax64High(vec4 _) {
|
|
139
|
+
return dataFilter.max64High;
|
|
140
|
+
}
|
|
141
|
+
#endif
|
|
142
|
+
|
|
70
143
|
float dataFilter_reduceValue(float value) {
|
|
71
144
|
return value;
|
|
72
145
|
}
|
|
@@ -82,23 +155,27 @@ float dataFilter_reduceValue(vec4 value) {
|
|
|
82
155
|
|
|
83
156
|
#ifdef DATAFILTER_TYPE
|
|
84
157
|
void dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax) {
|
|
158
|
+
DATAFILTER_TYPE dataFilter_min = dataFilter_getMin(valueFromMin);
|
|
159
|
+
DATAFILTER_TYPE dataFilter_softMin = dataFilter_getSoftMin(valueFromMin);
|
|
160
|
+
DATAFILTER_TYPE dataFilter_softMax = dataFilter_getSoftMax(valueFromMin);
|
|
161
|
+
DATAFILTER_TYPE dataFilter_max = dataFilter_getMax(valueFromMin);
|
|
85
162
|
if (dataFilter.useSoftMargin) {
|
|
86
163
|
// smoothstep results are undefined if edge0 ≥ edge1
|
|
87
164
|
// Fallback to ignore filterSoftRange if it is truncated by filterRange
|
|
88
165
|
DATAFILTER_TYPE leftInRange = mix(
|
|
89
|
-
smoothstep(
|
|
90
|
-
step(
|
|
91
|
-
step(
|
|
166
|
+
smoothstep(dataFilter_min, dataFilter_softMin, valueFromMin),
|
|
167
|
+
step(dataFilter_min, valueFromMin),
|
|
168
|
+
step(dataFilter_softMin, dataFilter_min)
|
|
92
169
|
);
|
|
93
170
|
DATAFILTER_TYPE rightInRange = mix(
|
|
94
|
-
1.0 - smoothstep(
|
|
95
|
-
step(valueFromMax,
|
|
96
|
-
step(
|
|
171
|
+
1.0 - smoothstep(dataFilter_softMax, dataFilter_max, valueFromMax),
|
|
172
|
+
step(valueFromMax, dataFilter_max),
|
|
173
|
+
step(dataFilter_max, dataFilter_softMax)
|
|
97
174
|
);
|
|
98
175
|
dataFilter_value = dataFilter_reduceValue(leftInRange * rightInRange);
|
|
99
176
|
} else {
|
|
100
177
|
dataFilter_value = dataFilter_reduceValue(
|
|
101
|
-
step(
|
|
178
|
+
step(dataFilter_min, valueFromMin) * step(valueFromMax, dataFilter_max)
|
|
102
179
|
);
|
|
103
180
|
}
|
|
104
181
|
}
|
|
@@ -124,9 +201,9 @@ float dataFilter_reduceValue(vec4 value) {
|
|
|
124
201
|
dataFilter_bits &= 1u;
|
|
125
202
|
|
|
126
203
|
#if DATACATEGORY_CHANNELS == 1
|
|
127
|
-
if(dataFilter_bits == 0u) dataFilter_value = 0.0;
|
|
204
|
+
if (dataFilter_bits == 0u) dataFilter_value = 0.0;
|
|
128
205
|
#else
|
|
129
|
-
if(any(equal(dataFilter_bits, DATACATEGORY_TYPE(0u)))) dataFilter_value = 0.0;
|
|
206
|
+
if (any(equal(dataFilter_bits, DATACATEGORY_TYPE(0u)))) dataFilter_value = 0.0;
|
|
130
207
|
#endif
|
|
131
208
|
}
|
|
132
209
|
#endif
|
|
@@ -152,6 +229,22 @@ export type DataFilterModuleProps = {
|
|
|
152
229
|
categoryBitMask?: CategoryBitMask;
|
|
153
230
|
} & DataFilterExtensionProps;
|
|
154
231
|
|
|
232
|
+
type DataFilterUniforms = {
|
|
233
|
+
useSoftMargin: boolean;
|
|
234
|
+
enabled: boolean;
|
|
235
|
+
transformSize: boolean;
|
|
236
|
+
transformColor: boolean;
|
|
237
|
+
min: [number, number, number, number];
|
|
238
|
+
softMin: [number, number, number, number];
|
|
239
|
+
softMax: [number, number, number, number];
|
|
240
|
+
max: [number, number, number, number];
|
|
241
|
+
min64High: [number, number, number, number];
|
|
242
|
+
max64High: [number, number, number, number];
|
|
243
|
+
categoryBitMask: [number, number, number, number];
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
type DataFilterUniformTypeMap = Required<UniformTypes<DataFilterUniforms>>;
|
|
247
|
+
|
|
155
248
|
/* eslint-disable camelcase */
|
|
156
249
|
function getUniforms(opts?: DataFilterModuleProps | {}): Record<string, any> {
|
|
157
250
|
if (!opts || !('extensions' in opts)) {
|
|
@@ -165,20 +258,26 @@ function getUniforms(opts?: DataFilterModuleProps | {}): Record<string, any> {
|
|
|
165
258
|
categoryBitMask
|
|
166
259
|
} = opts;
|
|
167
260
|
const filterSoftRange = opts.filterSoftRange || filterRange;
|
|
261
|
+
const padRange = (value: number | readonly number[]) => {
|
|
262
|
+
if (Array.isArray(value)) {
|
|
263
|
+
return [value[0] || 0, value[1] || 0, value[2] || 0, value[3] || 0];
|
|
264
|
+
}
|
|
265
|
+
return [value, 0, 0, 0];
|
|
266
|
+
};
|
|
168
267
|
|
|
169
268
|
return {
|
|
170
269
|
...(Number.isFinite(filterRange[0])
|
|
171
270
|
? {
|
|
172
|
-
min: filterRange[0],
|
|
173
|
-
softMin: filterSoftRange[0],
|
|
174
|
-
softMax: filterSoftRange[1],
|
|
175
|
-
max: filterRange[1]
|
|
271
|
+
min: padRange(filterRange[0]),
|
|
272
|
+
softMin: padRange(filterSoftRange[0]),
|
|
273
|
+
softMax: padRange(filterSoftRange[1]),
|
|
274
|
+
max: padRange(filterRange[1])
|
|
176
275
|
}
|
|
177
276
|
: {
|
|
178
|
-
min: filterRange.map(r => r[0]),
|
|
179
|
-
softMin: filterSoftRange.map(r => r[0]),
|
|
180
|
-
softMax: filterSoftRange.map(r => r[1]),
|
|
181
|
-
max: filterRange.map(r => r[1])
|
|
277
|
+
min: padRange(filterRange.map(r => r[0])),
|
|
278
|
+
softMin: padRange(filterSoftRange.map(r => r[0])),
|
|
279
|
+
softMax: padRange(filterSoftRange.map(r => r[1])),
|
|
280
|
+
max: padRange(filterRange.map(r => r[1]))
|
|
182
281
|
}),
|
|
183
282
|
enabled: filterEnabled,
|
|
184
283
|
useSoftMargin: Boolean(opts.filterSoftRange),
|
|
@@ -193,27 +292,15 @@ function getUniforms64(opts?: DataFilterModuleProps | {}): Record<string, any> {
|
|
|
193
292
|
return {};
|
|
194
293
|
}
|
|
195
294
|
const uniforms = getUniforms(opts);
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
uniforms.max64High = max64High;
|
|
206
|
-
} else {
|
|
207
|
-
const min64High = uniforms.min.map(Math.fround);
|
|
208
|
-
uniforms.min = uniforms.min.map((x, i) => x - min64High[i]);
|
|
209
|
-
uniforms.softMin = uniforms.softMin.map((x, i) => x - min64High[i]);
|
|
210
|
-
uniforms.min64High = min64High;
|
|
211
|
-
|
|
212
|
-
const max64High = uniforms.max.map(Math.fround);
|
|
213
|
-
uniforms.max = uniforms.max.map((x, i) => x - max64High[i]);
|
|
214
|
-
uniforms.softMax = uniforms.softMax.map((x, i) => x - max64High[i]);
|
|
215
|
-
uniforms.max64High = max64High;
|
|
216
|
-
}
|
|
295
|
+
const min64High = uniforms.min.map(Math.fround);
|
|
296
|
+
uniforms.min = uniforms.min.map((x, i) => x - min64High[i]);
|
|
297
|
+
uniforms.softMin = uniforms.softMin.map((x, i) => x - min64High[i]);
|
|
298
|
+
uniforms.min64High = min64High;
|
|
299
|
+
|
|
300
|
+
const max64High = uniforms.max.map(Math.fround);
|
|
301
|
+
uniforms.max = uniforms.max.map((x, i) => x - max64High[i]);
|
|
302
|
+
uniforms.softMax = uniforms.softMax.map((x, i) => x - max64High[i]);
|
|
303
|
+
uniforms.max64High = max64High;
|
|
217
304
|
return uniforms;
|
|
218
305
|
}
|
|
219
306
|
|
|
@@ -224,8 +311,8 @@ const inject = {
|
|
|
224
311
|
#ifdef DATAFILTER_TYPE
|
|
225
312
|
#ifdef DATAFILTER_DOUBLE
|
|
226
313
|
dataFilter_setValue(
|
|
227
|
-
filterValues -
|
|
228
|
-
filterValues -
|
|
314
|
+
filterValues - dataFilter_getMin64High(filterValues) + filterValues64Low,
|
|
315
|
+
filterValues - dataFilter_getMax64High(filterValues) + filterValues64Low
|
|
229
316
|
);
|
|
230
317
|
#else
|
|
231
318
|
dataFilter_setValue(filterValues, filterValues);
|
|
@@ -258,36 +345,26 @@ const inject = {
|
|
|
258
345
|
`
|
|
259
346
|
};
|
|
260
347
|
|
|
261
|
-
type UniformTypesFunc = (opts: DataFilterExtensionOptions) =>
|
|
262
|
-
function uniformTypesFromOptions(opts: DataFilterExtensionOptions):
|
|
263
|
-
const
|
|
264
|
-
const uniformTypes: Record<string, UniformFormat> = {
|
|
348
|
+
type UniformTypesFunc = (opts: DataFilterExtensionOptions) => DataFilterUniformTypeMap;
|
|
349
|
+
function uniformTypesFromOptions(opts: DataFilterExtensionOptions): DataFilterUniformTypeMap {
|
|
350
|
+
const uniformTypes: DataFilterUniformTypeMap = {
|
|
265
351
|
useSoftMargin: 'i32',
|
|
266
352
|
enabled: 'i32',
|
|
267
353
|
transformSize: 'i32',
|
|
268
|
-
transformColor: 'i32'
|
|
354
|
+
transformColor: 'i32',
|
|
355
|
+
min: 'vec4<f32>',
|
|
356
|
+
softMin: 'vec4<f32>',
|
|
357
|
+
softMax: 'vec4<f32>',
|
|
358
|
+
max: 'vec4<f32>',
|
|
359
|
+
min64High: 'vec4<f32>',
|
|
360
|
+
max64High: 'vec4<f32>',
|
|
361
|
+
categoryBitMask: 'vec4<u32>'
|
|
269
362
|
};
|
|
270
363
|
|
|
271
|
-
if (filterSize) {
|
|
272
|
-
const uniformFormat: UniformFormat = filterSize === 1 ? 'f32' : `vec${filterSize}<f32>`;
|
|
273
|
-
uniformTypes.min = uniformFormat;
|
|
274
|
-
uniformTypes.softMin = uniformFormat;
|
|
275
|
-
uniformTypes.softMax = uniformFormat;
|
|
276
|
-
uniformTypes.max = uniformFormat;
|
|
277
|
-
if (fp64) {
|
|
278
|
-
uniformTypes.min64High = uniformFormat;
|
|
279
|
-
uniformTypes.max64High = uniformFormat;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
if (categorySize) {
|
|
284
|
-
uniformTypes.categoryBitMask = 'vec4<i32>';
|
|
285
|
-
}
|
|
286
|
-
|
|
287
364
|
return uniformTypes;
|
|
288
365
|
}
|
|
289
366
|
|
|
290
|
-
export const dataFilter: ShaderModule<DataFilterModuleProps> & {
|
|
367
|
+
export const dataFilter: ShaderModule<DataFilterModuleProps, DataFilterUniforms> & {
|
|
291
368
|
uniformTypesFromOptions: UniformTypesFunc;
|
|
292
369
|
} = {
|
|
293
370
|
name: 'dataFilter',
|
|
@@ -298,7 +375,7 @@ export const dataFilter: ShaderModule<DataFilterModuleProps> & {
|
|
|
298
375
|
uniformTypesFromOptions
|
|
299
376
|
};
|
|
300
377
|
|
|
301
|
-
export const dataFilter64: ShaderModule<DataFilterModuleProps> & {
|
|
378
|
+
export const dataFilter64: ShaderModule<DataFilterModuleProps, DataFilterUniforms> & {
|
|
302
379
|
uniformTypesFromOptions: UniformTypesFunc;
|
|
303
380
|
} = {
|
|
304
381
|
name: 'dataFilter',
|
|
@@ -9,7 +9,7 @@ import type {ProjectProps, ProjectUniforms} from '@deck.gl/core';
|
|
|
9
9
|
import type {Texture} from '@luma.gl/core';
|
|
10
10
|
|
|
11
11
|
const uniformBlock = /* glsl */ `\
|
|
12
|
-
uniform fillUniforms {
|
|
12
|
+
layout(std140) uniform fillUniforms {
|
|
13
13
|
vec2 patternTextureSize;
|
|
14
14
|
bool patternEnabled;
|
|
15
15
|
bool patternMask;
|
package/src/terrain/utils.ts
CHANGED