@deck.gl/extensions 9.3.0-alpha.2 → 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/data-filter/shader-module.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAC,0BAA0B,EAAE,wBAAwB,EAAC,mCAAgC;AAMlG,MAAM,MAAM,OAAO,GAAG;IAEpB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACzD;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEtC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAErD;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;
|
|
1
|
+
{"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/data-filter/shader-module.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAC,0BAA0B,EAAE,wBAAwB,EAAC,mCAAgC;AAMlG,MAAM,MAAM,OAAO,GAAG;IAEpB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACzD;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEtC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAErD;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAmMF,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC;AAC1C,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,GAAG,wBAAwB,CAAC;AAsG7B,KAAK,gBAAgB,GAAG,CAAC,IAAI,EAAE,0BAA0B,KAAK,GAAG,CAAC;AAmBlE,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,qBAAqB,CAAC,GAAG;IAC7D,uBAAuB,EAAE,gBAAgB,CAAC;CAQ3C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,qBAAqB,CAAC,GAAG;IAC/D,uBAAuB,EAAE,gBAAgB,CAAC;CAQ3C,CAAC"}
|
|
@@ -2,24 +2,18 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
const uniformBlock = /* glsl */ `\
|
|
5
|
-
uniform dataFilterUniforms {
|
|
5
|
+
layout(std140) uniform dataFilterUniforms {
|
|
6
6
|
bool useSoftMargin;
|
|
7
7
|
bool enabled;
|
|
8
8
|
bool transformSize;
|
|
9
9
|
bool transformColor;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
DATAFILTER_TYPE min64High;
|
|
17
|
-
DATAFILTER_TYPE max64High;
|
|
18
|
-
#endif
|
|
19
|
-
#endif
|
|
20
|
-
#ifdef DATACATEGORY_TYPE
|
|
10
|
+
vec4 min;
|
|
11
|
+
vec4 softMin;
|
|
12
|
+
vec4 softMax;
|
|
13
|
+
vec4 max;
|
|
14
|
+
vec4 min64High;
|
|
15
|
+
vec4 max64High;
|
|
21
16
|
highp uvec4 categoryBitMask;
|
|
22
|
-
#endif
|
|
23
17
|
} dataFilter;
|
|
24
18
|
`;
|
|
25
19
|
const vertex = /* glsl */ `
|
|
@@ -36,6 +30,86 @@ const vertex = /* glsl */ `
|
|
|
36
30
|
|
|
37
31
|
out float dataFilter_value;
|
|
38
32
|
|
|
33
|
+
#ifdef DATAFILTER_TYPE
|
|
34
|
+
float dataFilter_getMin(float _) {
|
|
35
|
+
return dataFilter.min.x;
|
|
36
|
+
}
|
|
37
|
+
vec2 dataFilter_getMin(vec2 _) {
|
|
38
|
+
return dataFilter.min.xy;
|
|
39
|
+
}
|
|
40
|
+
vec3 dataFilter_getMin(vec3 _) {
|
|
41
|
+
return dataFilter.min.xyz;
|
|
42
|
+
}
|
|
43
|
+
vec4 dataFilter_getMin(vec4 _) {
|
|
44
|
+
return dataFilter.min;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
float dataFilter_getSoftMin(float _) {
|
|
48
|
+
return dataFilter.softMin.x;
|
|
49
|
+
}
|
|
50
|
+
vec2 dataFilter_getSoftMin(vec2 _) {
|
|
51
|
+
return dataFilter.softMin.xy;
|
|
52
|
+
}
|
|
53
|
+
vec3 dataFilter_getSoftMin(vec3 _) {
|
|
54
|
+
return dataFilter.softMin.xyz;
|
|
55
|
+
}
|
|
56
|
+
vec4 dataFilter_getSoftMin(vec4 _) {
|
|
57
|
+
return dataFilter.softMin;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
float dataFilter_getSoftMax(float _) {
|
|
61
|
+
return dataFilter.softMax.x;
|
|
62
|
+
}
|
|
63
|
+
vec2 dataFilter_getSoftMax(vec2 _) {
|
|
64
|
+
return dataFilter.softMax.xy;
|
|
65
|
+
}
|
|
66
|
+
vec3 dataFilter_getSoftMax(vec3 _) {
|
|
67
|
+
return dataFilter.softMax.xyz;
|
|
68
|
+
}
|
|
69
|
+
vec4 dataFilter_getSoftMax(vec4 _) {
|
|
70
|
+
return dataFilter.softMax;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
float dataFilter_getMax(float _) {
|
|
74
|
+
return dataFilter.max.x;
|
|
75
|
+
}
|
|
76
|
+
vec2 dataFilter_getMax(vec2 _) {
|
|
77
|
+
return dataFilter.max.xy;
|
|
78
|
+
}
|
|
79
|
+
vec3 dataFilter_getMax(vec3 _) {
|
|
80
|
+
return dataFilter.max.xyz;
|
|
81
|
+
}
|
|
82
|
+
vec4 dataFilter_getMax(vec4 _) {
|
|
83
|
+
return dataFilter.max;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
float dataFilter_getMin64High(float _) {
|
|
87
|
+
return dataFilter.min64High.x;
|
|
88
|
+
}
|
|
89
|
+
vec2 dataFilter_getMin64High(vec2 _) {
|
|
90
|
+
return dataFilter.min64High.xy;
|
|
91
|
+
}
|
|
92
|
+
vec3 dataFilter_getMin64High(vec3 _) {
|
|
93
|
+
return dataFilter.min64High.xyz;
|
|
94
|
+
}
|
|
95
|
+
vec4 dataFilter_getMin64High(vec4 _) {
|
|
96
|
+
return dataFilter.min64High;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
float dataFilter_getMax64High(float _) {
|
|
100
|
+
return dataFilter.max64High.x;
|
|
101
|
+
}
|
|
102
|
+
vec2 dataFilter_getMax64High(vec2 _) {
|
|
103
|
+
return dataFilter.max64High.xy;
|
|
104
|
+
}
|
|
105
|
+
vec3 dataFilter_getMax64High(vec3 _) {
|
|
106
|
+
return dataFilter.max64High.xyz;
|
|
107
|
+
}
|
|
108
|
+
vec4 dataFilter_getMax64High(vec4 _) {
|
|
109
|
+
return dataFilter.max64High;
|
|
110
|
+
}
|
|
111
|
+
#endif
|
|
112
|
+
|
|
39
113
|
float dataFilter_reduceValue(float value) {
|
|
40
114
|
return value;
|
|
41
115
|
}
|
|
@@ -51,23 +125,27 @@ float dataFilter_reduceValue(vec4 value) {
|
|
|
51
125
|
|
|
52
126
|
#ifdef DATAFILTER_TYPE
|
|
53
127
|
void dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax) {
|
|
128
|
+
DATAFILTER_TYPE dataFilter_min = dataFilter_getMin(valueFromMin);
|
|
129
|
+
DATAFILTER_TYPE dataFilter_softMin = dataFilter_getSoftMin(valueFromMin);
|
|
130
|
+
DATAFILTER_TYPE dataFilter_softMax = dataFilter_getSoftMax(valueFromMin);
|
|
131
|
+
DATAFILTER_TYPE dataFilter_max = dataFilter_getMax(valueFromMin);
|
|
54
132
|
if (dataFilter.useSoftMargin) {
|
|
55
133
|
// smoothstep results are undefined if edge0 ≥ edge1
|
|
56
134
|
// Fallback to ignore filterSoftRange if it is truncated by filterRange
|
|
57
135
|
DATAFILTER_TYPE leftInRange = mix(
|
|
58
|
-
smoothstep(
|
|
59
|
-
step(
|
|
60
|
-
step(
|
|
136
|
+
smoothstep(dataFilter_min, dataFilter_softMin, valueFromMin),
|
|
137
|
+
step(dataFilter_min, valueFromMin),
|
|
138
|
+
step(dataFilter_softMin, dataFilter_min)
|
|
61
139
|
);
|
|
62
140
|
DATAFILTER_TYPE rightInRange = mix(
|
|
63
|
-
1.0 - smoothstep(
|
|
64
|
-
step(valueFromMax,
|
|
65
|
-
step(
|
|
141
|
+
1.0 - smoothstep(dataFilter_softMax, dataFilter_max, valueFromMax),
|
|
142
|
+
step(valueFromMax, dataFilter_max),
|
|
143
|
+
step(dataFilter_max, dataFilter_softMax)
|
|
66
144
|
);
|
|
67
145
|
dataFilter_value = dataFilter_reduceValue(leftInRange * rightInRange);
|
|
68
146
|
} else {
|
|
69
147
|
dataFilter_value = dataFilter_reduceValue(
|
|
70
|
-
step(
|
|
148
|
+
step(dataFilter_min, valueFromMin) * step(valueFromMax, dataFilter_max)
|
|
71
149
|
);
|
|
72
150
|
}
|
|
73
151
|
}
|
|
@@ -93,9 +171,9 @@ float dataFilter_reduceValue(vec4 value) {
|
|
|
93
171
|
dataFilter_bits &= 1u;
|
|
94
172
|
|
|
95
173
|
#if DATACATEGORY_CHANNELS == 1
|
|
96
|
-
if(dataFilter_bits == 0u) dataFilter_value = 0.0;
|
|
174
|
+
if (dataFilter_bits == 0u) dataFilter_value = 0.0;
|
|
97
175
|
#else
|
|
98
|
-
if(any(equal(dataFilter_bits, DATACATEGORY_TYPE(0u)))) dataFilter_value = 0.0;
|
|
176
|
+
if (any(equal(dataFilter_bits, DATACATEGORY_TYPE(0u)))) dataFilter_value = 0.0;
|
|
99
177
|
#endif
|
|
100
178
|
}
|
|
101
179
|
#endif
|
|
@@ -118,19 +196,25 @@ function getUniforms(opts) {
|
|
|
118
196
|
}
|
|
119
197
|
const { filterRange = [-1, 1], filterEnabled = true, filterTransformSize = true, filterTransformColor = true, categoryBitMask } = opts;
|
|
120
198
|
const filterSoftRange = opts.filterSoftRange || filterRange;
|
|
199
|
+
const padRange = (value) => {
|
|
200
|
+
if (Array.isArray(value)) {
|
|
201
|
+
return [value[0] || 0, value[1] || 0, value[2] || 0, value[3] || 0];
|
|
202
|
+
}
|
|
203
|
+
return [value, 0, 0, 0];
|
|
204
|
+
};
|
|
121
205
|
return {
|
|
122
206
|
...(Number.isFinite(filterRange[0])
|
|
123
207
|
? {
|
|
124
|
-
min: filterRange[0],
|
|
125
|
-
softMin: filterSoftRange[0],
|
|
126
|
-
softMax: filterSoftRange[1],
|
|
127
|
-
max: filterRange[1]
|
|
208
|
+
min: padRange(filterRange[0]),
|
|
209
|
+
softMin: padRange(filterSoftRange[0]),
|
|
210
|
+
softMax: padRange(filterSoftRange[1]),
|
|
211
|
+
max: padRange(filterRange[1])
|
|
128
212
|
}
|
|
129
213
|
: {
|
|
130
|
-
min: filterRange.map(r => r[0]),
|
|
131
|
-
softMin: filterSoftRange.map(r => r[0]),
|
|
132
|
-
softMax: filterSoftRange.map(r => r[1]),
|
|
133
|
-
max: filterRange.map(r => r[1])
|
|
214
|
+
min: padRange(filterRange.map(r => r[0])),
|
|
215
|
+
softMin: padRange(filterSoftRange.map(r => r[0])),
|
|
216
|
+
softMax: padRange(filterSoftRange.map(r => r[1])),
|
|
217
|
+
max: padRange(filterRange.map(r => r[1]))
|
|
134
218
|
}),
|
|
135
219
|
enabled: filterEnabled,
|
|
136
220
|
useSoftMargin: Boolean(opts.filterSoftRange),
|
|
@@ -144,26 +228,14 @@ function getUniforms64(opts) {
|
|
|
144
228
|
return {};
|
|
145
229
|
}
|
|
146
230
|
const uniforms = getUniforms(opts);
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
uniforms.max64High = max64High;
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
const min64High = uniforms.min.map(Math.fround);
|
|
159
|
-
uniforms.min = uniforms.min.map((x, i) => x - min64High[i]);
|
|
160
|
-
uniforms.softMin = uniforms.softMin.map((x, i) => x - min64High[i]);
|
|
161
|
-
uniforms.min64High = min64High;
|
|
162
|
-
const max64High = uniforms.max.map(Math.fround);
|
|
163
|
-
uniforms.max = uniforms.max.map((x, i) => x - max64High[i]);
|
|
164
|
-
uniforms.softMax = uniforms.softMax.map((x, i) => x - max64High[i]);
|
|
165
|
-
uniforms.max64High = max64High;
|
|
166
|
-
}
|
|
231
|
+
const min64High = uniforms.min.map(Math.fround);
|
|
232
|
+
uniforms.min = uniforms.min.map((x, i) => x - min64High[i]);
|
|
233
|
+
uniforms.softMin = uniforms.softMin.map((x, i) => x - min64High[i]);
|
|
234
|
+
uniforms.min64High = min64High;
|
|
235
|
+
const max64High = uniforms.max.map(Math.fround);
|
|
236
|
+
uniforms.max = uniforms.max.map((x, i) => x - max64High[i]);
|
|
237
|
+
uniforms.softMax = uniforms.softMax.map((x, i) => x - max64High[i]);
|
|
238
|
+
uniforms.max64High = max64High;
|
|
167
239
|
return uniforms;
|
|
168
240
|
}
|
|
169
241
|
const inject = {
|
|
@@ -173,8 +245,8 @@ const inject = {
|
|
|
173
245
|
#ifdef DATAFILTER_TYPE
|
|
174
246
|
#ifdef DATAFILTER_DOUBLE
|
|
175
247
|
dataFilter_setValue(
|
|
176
|
-
filterValues -
|
|
177
|
-
filterValues -
|
|
248
|
+
filterValues - dataFilter_getMin64High(filterValues) + filterValues64Low,
|
|
249
|
+
filterValues - dataFilter_getMax64High(filterValues) + filterValues64Low
|
|
178
250
|
);
|
|
179
251
|
#else
|
|
180
252
|
dataFilter_setValue(filterValues, filterValues);
|
|
@@ -204,27 +276,19 @@ const inject = {
|
|
|
204
276
|
`
|
|
205
277
|
};
|
|
206
278
|
function uniformTypesFromOptions(opts) {
|
|
207
|
-
const { categorySize, filterSize, fp64 } = opts;
|
|
208
279
|
const uniformTypes = {
|
|
209
280
|
useSoftMargin: 'i32',
|
|
210
281
|
enabled: 'i32',
|
|
211
282
|
transformSize: 'i32',
|
|
212
|
-
transformColor: 'i32'
|
|
283
|
+
transformColor: 'i32',
|
|
284
|
+
min: 'vec4<f32>',
|
|
285
|
+
softMin: 'vec4<f32>',
|
|
286
|
+
softMax: 'vec4<f32>',
|
|
287
|
+
max: 'vec4<f32>',
|
|
288
|
+
min64High: 'vec4<f32>',
|
|
289
|
+
max64High: 'vec4<f32>',
|
|
290
|
+
categoryBitMask: 'vec4<u32>'
|
|
213
291
|
};
|
|
214
|
-
if (filterSize) {
|
|
215
|
-
const uniformFormat = filterSize === 1 ? 'f32' : `vec${filterSize}<f32>`;
|
|
216
|
-
uniformTypes.min = uniformFormat;
|
|
217
|
-
uniformTypes.softMin = uniformFormat;
|
|
218
|
-
uniformTypes.softMax = uniformFormat;
|
|
219
|
-
uniformTypes.max = uniformFormat;
|
|
220
|
-
if (fp64) {
|
|
221
|
-
uniformTypes.min64High = uniformFormat;
|
|
222
|
-
uniformTypes.max64High = uniformFormat;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
if (categorySize) {
|
|
226
|
-
uniformTypes.categoryBitMask = 'vec4<i32>';
|
|
227
|
-
}
|
|
228
292
|
return uniformTypes;
|
|
229
293
|
}
|
|
230
294
|
export const dataFilter = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader-module.js","sourceRoot":"","sources":["../../src/data-filter/shader-module.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AA+BpC,MAAM,YAAY,GAAG,UAAU,CAAC
|
|
1
|
+
{"version":3,"file":"shader-module.js","sourceRoot":"","sources":["../../src/data-filter/shader-module.ts"],"names":[],"mappings":"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"}
|