@deck.gl/extensions 9.3.0-alpha.3 → 9.3.0-alpha.5
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.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 +6 -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 +133 -71
- 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.5",
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"access": "public"
|
|
9
9
|
},
|
|
@@ -38,14 +38,13 @@
|
|
|
38
38
|
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env=dev"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@luma.gl/
|
|
42
|
-
"@luma.gl/shadertools": "^9.3.0-alpha.6",
|
|
41
|
+
"@luma.gl/shadertools": "^9.3.0-alpha.10",
|
|
43
42
|
"@math.gl/core": "^4.1.0"
|
|
44
43
|
},
|
|
45
44
|
"peerDependencies": {
|
|
46
|
-
"@deck.gl/core": "~9.
|
|
47
|
-
"@luma.gl/core": "~9.3.0-alpha.
|
|
48
|
-
"@luma.gl/engine": "~9.3.0-alpha.
|
|
45
|
+
"@deck.gl/core": "~9.3.0-alpha.1",
|
|
46
|
+
"@luma.gl/core": "~9.3.0-alpha.10",
|
|
47
|
+
"@luma.gl/engine": "~9.3.0-alpha.10"
|
|
49
48
|
},
|
|
50
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "c3ad1cee357af674cc31df37979d61325baf9d7a"
|
|
51
50
|
}
|
|
@@ -32,24 +32,18 @@ export type Defines = {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
const uniformBlock = /* glsl */ `\
|
|
35
|
-
uniform dataFilterUniforms {
|
|
35
|
+
layout(std140) uniform dataFilterUniforms {
|
|
36
36
|
bool useSoftMargin;
|
|
37
37
|
bool enabled;
|
|
38
38
|
bool transformSize;
|
|
39
39
|
bool transformColor;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
DATAFILTER_TYPE min64High;
|
|
47
|
-
DATAFILTER_TYPE max64High;
|
|
48
|
-
#endif
|
|
49
|
-
#endif
|
|
50
|
-
#ifdef DATACATEGORY_TYPE
|
|
40
|
+
vec4 min;
|
|
41
|
+
vec4 softMin;
|
|
42
|
+
vec4 softMax;
|
|
43
|
+
vec4 max;
|
|
44
|
+
vec4 min64High;
|
|
45
|
+
vec4 max64High;
|
|
51
46
|
highp uvec4 categoryBitMask;
|
|
52
|
-
#endif
|
|
53
47
|
} dataFilter;
|
|
54
48
|
`;
|
|
55
49
|
|
|
@@ -67,6 +61,86 @@ const vertex = /* glsl */ `
|
|
|
67
61
|
|
|
68
62
|
out float dataFilter_value;
|
|
69
63
|
|
|
64
|
+
#ifdef DATAFILTER_TYPE
|
|
65
|
+
float dataFilter_getMin(float _) {
|
|
66
|
+
return dataFilter.min.x;
|
|
67
|
+
}
|
|
68
|
+
vec2 dataFilter_getMin(vec2 _) {
|
|
69
|
+
return dataFilter.min.xy;
|
|
70
|
+
}
|
|
71
|
+
vec3 dataFilter_getMin(vec3 _) {
|
|
72
|
+
return dataFilter.min.xyz;
|
|
73
|
+
}
|
|
74
|
+
vec4 dataFilter_getMin(vec4 _) {
|
|
75
|
+
return dataFilter.min;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
float dataFilter_getSoftMin(float _) {
|
|
79
|
+
return dataFilter.softMin.x;
|
|
80
|
+
}
|
|
81
|
+
vec2 dataFilter_getSoftMin(vec2 _) {
|
|
82
|
+
return dataFilter.softMin.xy;
|
|
83
|
+
}
|
|
84
|
+
vec3 dataFilter_getSoftMin(vec3 _) {
|
|
85
|
+
return dataFilter.softMin.xyz;
|
|
86
|
+
}
|
|
87
|
+
vec4 dataFilter_getSoftMin(vec4 _) {
|
|
88
|
+
return dataFilter.softMin;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
float dataFilter_getSoftMax(float _) {
|
|
92
|
+
return dataFilter.softMax.x;
|
|
93
|
+
}
|
|
94
|
+
vec2 dataFilter_getSoftMax(vec2 _) {
|
|
95
|
+
return dataFilter.softMax.xy;
|
|
96
|
+
}
|
|
97
|
+
vec3 dataFilter_getSoftMax(vec3 _) {
|
|
98
|
+
return dataFilter.softMax.xyz;
|
|
99
|
+
}
|
|
100
|
+
vec4 dataFilter_getSoftMax(vec4 _) {
|
|
101
|
+
return dataFilter.softMax;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
float dataFilter_getMax(float _) {
|
|
105
|
+
return dataFilter.max.x;
|
|
106
|
+
}
|
|
107
|
+
vec2 dataFilter_getMax(vec2 _) {
|
|
108
|
+
return dataFilter.max.xy;
|
|
109
|
+
}
|
|
110
|
+
vec3 dataFilter_getMax(vec3 _) {
|
|
111
|
+
return dataFilter.max.xyz;
|
|
112
|
+
}
|
|
113
|
+
vec4 dataFilter_getMax(vec4 _) {
|
|
114
|
+
return dataFilter.max;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
float dataFilter_getMin64High(float _) {
|
|
118
|
+
return dataFilter.min64High.x;
|
|
119
|
+
}
|
|
120
|
+
vec2 dataFilter_getMin64High(vec2 _) {
|
|
121
|
+
return dataFilter.min64High.xy;
|
|
122
|
+
}
|
|
123
|
+
vec3 dataFilter_getMin64High(vec3 _) {
|
|
124
|
+
return dataFilter.min64High.xyz;
|
|
125
|
+
}
|
|
126
|
+
vec4 dataFilter_getMin64High(vec4 _) {
|
|
127
|
+
return dataFilter.min64High;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
float dataFilter_getMax64High(float _) {
|
|
131
|
+
return dataFilter.max64High.x;
|
|
132
|
+
}
|
|
133
|
+
vec2 dataFilter_getMax64High(vec2 _) {
|
|
134
|
+
return dataFilter.max64High.xy;
|
|
135
|
+
}
|
|
136
|
+
vec3 dataFilter_getMax64High(vec3 _) {
|
|
137
|
+
return dataFilter.max64High.xyz;
|
|
138
|
+
}
|
|
139
|
+
vec4 dataFilter_getMax64High(vec4 _) {
|
|
140
|
+
return dataFilter.max64High;
|
|
141
|
+
}
|
|
142
|
+
#endif
|
|
143
|
+
|
|
70
144
|
float dataFilter_reduceValue(float value) {
|
|
71
145
|
return value;
|
|
72
146
|
}
|
|
@@ -82,23 +156,27 @@ float dataFilter_reduceValue(vec4 value) {
|
|
|
82
156
|
|
|
83
157
|
#ifdef DATAFILTER_TYPE
|
|
84
158
|
void dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax) {
|
|
159
|
+
DATAFILTER_TYPE dataFilter_min = dataFilter_getMin(valueFromMin);
|
|
160
|
+
DATAFILTER_TYPE dataFilter_softMin = dataFilter_getSoftMin(valueFromMin);
|
|
161
|
+
DATAFILTER_TYPE dataFilter_softMax = dataFilter_getSoftMax(valueFromMin);
|
|
162
|
+
DATAFILTER_TYPE dataFilter_max = dataFilter_getMax(valueFromMin);
|
|
85
163
|
if (dataFilter.useSoftMargin) {
|
|
86
164
|
// smoothstep results are undefined if edge0 ≥ edge1
|
|
87
165
|
// Fallback to ignore filterSoftRange if it is truncated by filterRange
|
|
88
166
|
DATAFILTER_TYPE leftInRange = mix(
|
|
89
|
-
smoothstep(
|
|
90
|
-
step(
|
|
91
|
-
step(
|
|
167
|
+
smoothstep(dataFilter_min, dataFilter_softMin, valueFromMin),
|
|
168
|
+
step(dataFilter_min, valueFromMin),
|
|
169
|
+
step(dataFilter_softMin, dataFilter_min)
|
|
92
170
|
);
|
|
93
171
|
DATAFILTER_TYPE rightInRange = mix(
|
|
94
|
-
1.0 - smoothstep(
|
|
95
|
-
step(valueFromMax,
|
|
96
|
-
step(
|
|
172
|
+
1.0 - smoothstep(dataFilter_softMax, dataFilter_max, valueFromMax),
|
|
173
|
+
step(valueFromMax, dataFilter_max),
|
|
174
|
+
step(dataFilter_max, dataFilter_softMax)
|
|
97
175
|
);
|
|
98
176
|
dataFilter_value = dataFilter_reduceValue(leftInRange * rightInRange);
|
|
99
177
|
} else {
|
|
100
178
|
dataFilter_value = dataFilter_reduceValue(
|
|
101
|
-
step(
|
|
179
|
+
step(dataFilter_min, valueFromMin) * step(valueFromMax, dataFilter_max)
|
|
102
180
|
);
|
|
103
181
|
}
|
|
104
182
|
}
|
|
@@ -124,9 +202,9 @@ float dataFilter_reduceValue(vec4 value) {
|
|
|
124
202
|
dataFilter_bits &= 1u;
|
|
125
203
|
|
|
126
204
|
#if DATACATEGORY_CHANNELS == 1
|
|
127
|
-
if(dataFilter_bits == 0u) dataFilter_value = 0.0;
|
|
205
|
+
if (dataFilter_bits == 0u) dataFilter_value = 0.0;
|
|
128
206
|
#else
|
|
129
|
-
if(any(equal(dataFilter_bits, DATACATEGORY_TYPE(0u)))) dataFilter_value = 0.0;
|
|
207
|
+
if (any(equal(dataFilter_bits, DATACATEGORY_TYPE(0u)))) dataFilter_value = 0.0;
|
|
130
208
|
#endif
|
|
131
209
|
}
|
|
132
210
|
#endif
|
|
@@ -165,20 +243,26 @@ function getUniforms(opts?: DataFilterModuleProps | {}): Record<string, any> {
|
|
|
165
243
|
categoryBitMask
|
|
166
244
|
} = opts;
|
|
167
245
|
const filterSoftRange = opts.filterSoftRange || filterRange;
|
|
246
|
+
const padRange = (value: number | readonly number[]) => {
|
|
247
|
+
if (Array.isArray(value)) {
|
|
248
|
+
return [value[0] || 0, value[1] || 0, value[2] || 0, value[3] || 0];
|
|
249
|
+
}
|
|
250
|
+
return [value, 0, 0, 0];
|
|
251
|
+
};
|
|
168
252
|
|
|
169
253
|
return {
|
|
170
254
|
...(Number.isFinite(filterRange[0])
|
|
171
255
|
? {
|
|
172
|
-
min: filterRange[0],
|
|
173
|
-
softMin: filterSoftRange[0],
|
|
174
|
-
softMax: filterSoftRange[1],
|
|
175
|
-
max: filterRange[1]
|
|
256
|
+
min: padRange(filterRange[0]),
|
|
257
|
+
softMin: padRange(filterSoftRange[0]),
|
|
258
|
+
softMax: padRange(filterSoftRange[1]),
|
|
259
|
+
max: padRange(filterRange[1])
|
|
176
260
|
}
|
|
177
261
|
: {
|
|
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])
|
|
262
|
+
min: padRange(filterRange.map(r => r[0])),
|
|
263
|
+
softMin: padRange(filterSoftRange.map(r => r[0])),
|
|
264
|
+
softMax: padRange(filterSoftRange.map(r => r[1])),
|
|
265
|
+
max: padRange(filterRange.map(r => r[1]))
|
|
182
266
|
}),
|
|
183
267
|
enabled: filterEnabled,
|
|
184
268
|
useSoftMargin: Boolean(opts.filterSoftRange),
|
|
@@ -193,27 +277,15 @@ function getUniforms64(opts?: DataFilterModuleProps | {}): Record<string, any> {
|
|
|
193
277
|
return {};
|
|
194
278
|
}
|
|
195
279
|
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
|
-
}
|
|
280
|
+
const min64High = uniforms.min.map(Math.fround);
|
|
281
|
+
uniforms.min = uniforms.min.map((x, i) => x - min64High[i]);
|
|
282
|
+
uniforms.softMin = uniforms.softMin.map((x, i) => x - min64High[i]);
|
|
283
|
+
uniforms.min64High = min64High;
|
|
284
|
+
|
|
285
|
+
const max64High = uniforms.max.map(Math.fround);
|
|
286
|
+
uniforms.max = uniforms.max.map((x, i) => x - max64High[i]);
|
|
287
|
+
uniforms.softMax = uniforms.softMax.map((x, i) => x - max64High[i]);
|
|
288
|
+
uniforms.max64High = max64High;
|
|
217
289
|
return uniforms;
|
|
218
290
|
}
|
|
219
291
|
|
|
@@ -224,8 +296,8 @@ const inject = {
|
|
|
224
296
|
#ifdef DATAFILTER_TYPE
|
|
225
297
|
#ifdef DATAFILTER_DOUBLE
|
|
226
298
|
dataFilter_setValue(
|
|
227
|
-
filterValues -
|
|
228
|
-
filterValues -
|
|
299
|
+
filterValues - dataFilter_getMin64High(filterValues) + filterValues64Low,
|
|
300
|
+
filterValues - dataFilter_getMax64High(filterValues) + filterValues64Low
|
|
229
301
|
);
|
|
230
302
|
#else
|
|
231
303
|
dataFilter_setValue(filterValues, filterValues);
|
|
@@ -260,30 +332,20 @@ const inject = {
|
|
|
260
332
|
|
|
261
333
|
type UniformTypesFunc = (opts: DataFilterExtensionOptions) => any;
|
|
262
334
|
function uniformTypesFromOptions(opts: DataFilterExtensionOptions): any {
|
|
263
|
-
const {categorySize, filterSize, fp64} = opts;
|
|
264
335
|
const uniformTypes: Record<string, UniformFormat> = {
|
|
265
336
|
useSoftMargin: 'i32',
|
|
266
337
|
enabled: 'i32',
|
|
267
338
|
transformSize: 'i32',
|
|
268
|
-
transformColor: 'i32'
|
|
339
|
+
transformColor: 'i32',
|
|
340
|
+
min: 'vec4<f32>',
|
|
341
|
+
softMin: 'vec4<f32>',
|
|
342
|
+
softMax: 'vec4<f32>',
|
|
343
|
+
max: 'vec4<f32>',
|
|
344
|
+
min64High: 'vec4<f32>',
|
|
345
|
+
max64High: 'vec4<f32>',
|
|
346
|
+
categoryBitMask: 'vec4<u32>'
|
|
269
347
|
};
|
|
270
348
|
|
|
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
349
|
return uniformTypes;
|
|
288
350
|
}
|
|
289
351
|
|
|
@@ -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