@deck.gl/extensions 9.0.0-beta.1 → 9.0.0-beta.11
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/brushing-extension.js +80 -0
- package/{typed → dist}/brushing/shader-module.d.ts +1 -1
- package/{typed → dist}/brushing/shader-module.d.ts.map +1 -1
- package/dist/brushing/shader-module.js +92 -0
- package/{typed → dist}/clip/clip-extension.d.ts.map +1 -1
- package/dist/clip/clip-extension.js +117 -0
- package/{typed → dist}/collision-filter/collision-filter-effect.d.ts +4 -2
- package/dist/collision-filter/collision-filter-effect.d.ts.map +1 -0
- package/dist/collision-filter/collision-filter-effect.js +194 -0
- package/dist/collision-filter/collision-filter-extension.js +49 -0
- package/{typed → dist}/collision-filter/collision-filter-pass.d.ts +3 -2
- package/dist/collision-filter/collision-filter-pass.d.ts.map +1 -0
- package/dist/collision-filter/collision-filter-pass.js +23 -0
- package/{typed → dist}/collision-filter/shader-module.d.ts.map +1 -1
- package/dist/collision-filter/shader-module.js +87 -0
- package/dist/data-filter/aggregator.d.ts.map +1 -0
- package/dist/{esm/data-filter → data-filter}/aggregator.js +40 -41
- package/{typed → dist}/data-filter/data-filter-extension.d.ts +39 -7
- package/dist/data-filter/data-filter-extension.d.ts.map +1 -0
- package/dist/data-filter/data-filter-extension.js +256 -0
- package/dist/data-filter/shader-module.d.ts +39 -0
- package/dist/data-filter/shader-module.d.ts.map +1 -0
- package/dist/data-filter/shader-module.js +199 -0
- package/dist/dist.dev.js +2667 -11058
- package/{typed → dist}/fill-style/fill-style-extension.d.ts +2 -30
- package/dist/fill-style/fill-style-extension.d.ts.map +1 -0
- package/dist/fill-style/fill-style-extension.js +116 -0
- package/{typed/fill-style/shaders.glsl.d.ts → dist/fill-style/shader-module.d.ts} +1 -1
- package/dist/fill-style/shader-module.d.ts.map +1 -0
- package/dist/fill-style/shader-module.js +96 -0
- package/dist/fp64/fp64-extension.js +35 -0
- package/dist/fp64/project64.glsl.js +81 -0
- package/dist/fp64/project64.js +50 -0
- package/dist/index.cjs +2795 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/{typed → dist}/mask/mask-effect.d.ts +6 -5
- package/dist/mask/mask-effect.d.ts.map +1 -0
- package/dist/mask/mask-effect.js +192 -0
- package/dist/mask/mask-extension.js +57 -0
- package/dist/mask/mask-pass.d.ts +61 -0
- package/dist/mask/mask-pass.d.ts.map +1 -0
- package/dist/mask/mask-pass.js +52 -0
- package/{typed → dist}/mask/shader-module.d.ts.map +1 -1
- package/dist/mask/shader-module.js +77 -0
- package/{typed → dist}/path-style/path-style-extension.d.ts.map +1 -1
- package/dist/path-style/path-style-extension.js +112 -0
- package/dist/path-style/shaders.glsl.js +86 -0
- package/{typed → dist}/terrain/height-map-builder.d.ts +1 -1
- package/dist/terrain/height-map-builder.d.ts.map +1 -0
- package/dist/terrain/height-map-builder.js +104 -0
- package/{typed → dist}/terrain/shader-module.d.ts +2 -2
- package/dist/terrain/shader-module.d.ts.map +1 -0
- package/dist/terrain/shader-module.js +137 -0
- package/{typed → dist}/terrain/terrain-cover.d.ts +1 -1
- package/dist/terrain/terrain-cover.d.ts.map +1 -0
- package/dist/terrain/terrain-cover.js +188 -0
- package/{typed → dist}/terrain/terrain-effect.d.ts +6 -7
- package/dist/terrain/terrain-effect.d.ts.map +1 -0
- package/dist/terrain/terrain-effect.js +174 -0
- package/dist/terrain/terrain-extension.js +44 -0
- package/dist/terrain/terrain-pass.d.ts +53 -0
- package/dist/terrain/terrain-pass.d.ts.map +1 -0
- package/dist/terrain/terrain-pass.js +69 -0
- package/{typed → dist}/terrain/terrain-picking-pass.d.ts +1 -1
- package/dist/terrain/terrain-picking-pass.d.ts.map +1 -0
- package/dist/terrain/terrain-picking-pass.js +67 -0
- package/{typed → dist}/terrain/utils.d.ts +1 -0
- package/{typed → dist}/terrain/utils.d.ts.map +1 -1
- package/dist/terrain/utils.js +25 -0
- package/{typed → dist}/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +50 -0
- package/dist/utils/projection-utils.js +153 -0
- package/dist/utils/syntax-tags.d.ts +6 -0
- package/dist/utils/syntax-tags.d.ts.map +1 -0
- package/dist/utils/syntax-tags.js +5 -0
- package/dist.min.js +918 -1254
- package/package.json +19 -16
- package/src/brushing/shader-module.ts +4 -3
- package/src/clip/clip-extension.ts +10 -9
- package/src/collision-filter/collision-filter-effect.ts +35 -31
- package/src/collision-filter/collision-filter-pass.ts +7 -13
- package/src/collision-filter/shader-module.ts +6 -4
- package/src/data-filter/aggregator.ts +8 -13
- package/src/data-filter/data-filter-extension.ts +181 -56
- package/src/data-filter/shader-module.ts +132 -37
- package/src/fill-style/fill-style-extension.ts +4 -5
- package/src/fill-style/{shaders.glsl.ts → shader-module.ts} +6 -5
- package/src/mask/mask-effect.ts +30 -20
- package/src/mask/mask-pass.ts +22 -18
- package/src/mask/shader-module.ts +7 -6
- package/src/path-style/path-style-extension.ts +1 -0
- package/src/terrain/shader-module.ts +14 -13
- package/src/terrain/terrain-cover.ts +2 -1
- package/src/terrain/terrain-effect.ts +19 -23
- package/src/terrain/terrain-pass.ts +37 -37
- package/src/terrain/terrain-picking-pass.ts +19 -25
- package/src/terrain/utils.ts +13 -7
- package/src/utils/debug.ts +1 -2
- package/src/utils/syntax-tags.ts +5 -0
- package/dist/es5/brushing/brushing-extension.js +0 -108
- package/dist/es5/brushing/brushing-extension.js.map +0 -1
- package/dist/es5/brushing/shader-module.js +0 -50
- package/dist/es5/brushing/shader-module.js.map +0 -1
- package/dist/es5/clip/clip-extension.js +0 -98
- package/dist/es5/clip/clip-extension.js.map +0 -1
- package/dist/es5/collision-filter/collision-filter-effect.js +0 -294
- package/dist/es5/collision-filter/collision-filter-effect.js.map +0 -1
- package/dist/es5/collision-filter/collision-filter-extension.js +0 -109
- package/dist/es5/collision-filter/collision-filter-extension.js.map +0 -1
- package/dist/es5/collision-filter/collision-filter-pass.js +0 -79
- package/dist/es5/collision-filter/collision-filter-pass.js.map +0 -1
- package/dist/es5/collision-filter/shader-module.js +0 -39
- package/dist/es5/collision-filter/shader-module.js.map +0 -1
- package/dist/es5/data-filter/aggregator.js +0 -79
- package/dist/es5/data-filter/aggregator.js.map +0 -1
- package/dist/es5/data-filter/data-filter-extension.js +0 -236
- package/dist/es5/data-filter/data-filter-extension.js.map +0 -1
- package/dist/es5/data-filter/shader-module.js +0 -122
- package/dist/es5/data-filter/shader-module.js.map +0 -1
- package/dist/es5/fill-style/fill-style-extension.js +0 -190
- package/dist/es5/fill-style/fill-style-extension.js.map +0 -1
- package/dist/es5/fill-style/shaders.glsl.js +0 -59
- package/dist/es5/fill-style/shaders.glsl.js.map +0 -1
- package/dist/es5/fp64/fp64-extension.js +0 -55
- package/dist/es5/fp64/fp64-extension.js.map +0 -1
- package/dist/es5/fp64/project64.glsl.js +0 -9
- package/dist/es5/fp64/project64.glsl.js.map +0 -1
- package/dist/es5/fp64/project64.js +0 -52
- package/dist/es5/fp64/project64.js.map +0 -1
- package/dist/es5/index.js +0 -88
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/mask/mask-effect.js +0 -279
- package/dist/es5/mask/mask-effect.js.map +0 -1
- package/dist/es5/mask/mask-extension.js +0 -113
- package/dist/es5/mask/mask-extension.js.map +0 -1
- package/dist/es5/mask/mask-pass.js +0 -106
- package/dist/es5/mask/mask-pass.js.map +0 -1
- package/dist/es5/mask/shader-module.js +0 -38
- package/dist/es5/mask/shader-module.js.map +0 -1
- package/dist/es5/path-style/path-style-extension.js +0 -169
- package/dist/es5/path-style/path-style-extension.js.map +0 -1
- package/dist/es5/path-style/shaders.glsl.js +0 -25
- package/dist/es5/path-style/shaders.glsl.js.map +0 -1
- package/dist/es5/terrain/height-map-builder.js +0 -111
- package/dist/es5/terrain/height-map-builder.js.map +0 -1
- package/dist/es5/terrain/shader-module.js +0 -86
- package/dist/es5/terrain/shader-module.js.map +0 -1
- package/dist/es5/terrain/terrain-cover.js +0 -256
- package/dist/es5/terrain/terrain-cover.js.map +0 -1
- package/dist/es5/terrain/terrain-effect.js +0 -326
- package/dist/es5/terrain/terrain-effect.js.map +0 -1
- package/dist/es5/terrain/terrain-extension.js +0 -94
- package/dist/es5/terrain/terrain-extension.js.map +0 -1
- package/dist/es5/terrain/terrain-pass.js +0 -121
- package/dist/es5/terrain/terrain-pass.js.map +0 -1
- package/dist/es5/terrain/terrain-picking-pass.js +0 -124
- package/dist/es5/terrain/terrain-picking-pass.js.map +0 -1
- package/dist/es5/terrain/utils.js +0 -35
- package/dist/es5/terrain/utils.js.map +0 -1
- package/dist/es5/utils/debug.js +0 -71
- package/dist/es5/utils/debug.js.map +0 -1
- package/dist/es5/utils/projection-utils.js +0 -168
- package/dist/es5/utils/projection-utils.js.map +0 -1
- package/dist/esm/brushing/brushing-extension.js +0 -68
- package/dist/esm/brushing/brushing-extension.js.map +0 -1
- package/dist/esm/brushing/shader-module.js +0 -103
- package/dist/esm/brushing/shader-module.js.map +0 -1
- package/dist/esm/clip/clip-extension.js +0 -86
- package/dist/esm/clip/clip-extension.js.map +0 -1
- package/dist/esm/collision-filter/collision-filter-effect.js +0 -246
- package/dist/esm/collision-filter/collision-filter-effect.js.map +0 -1
- package/dist/esm/collision-filter/collision-filter-extension.js +0 -75
- package/dist/esm/collision-filter/collision-filter-extension.js.map +0 -1
- package/dist/esm/collision-filter/collision-filter-pass.js +0 -32
- package/dist/esm/collision-filter/collision-filter-pass.js.map +0 -1
- package/dist/esm/collision-filter/shader-module.js +0 -104
- package/dist/esm/collision-filter/shader-module.js.map +0 -1
- package/dist/esm/data-filter/aggregator.js.map +0 -1
- package/dist/esm/data-filter/data-filter-extension.js +0 -189
- package/dist/esm/data-filter/data-filter-extension.js.map +0 -1
- package/dist/esm/data-filter/shader-module.js +0 -164
- package/dist/esm/data-filter/shader-module.js.map +0 -1
- package/dist/esm/fill-style/fill-style-extension.js +0 -156
- package/dist/esm/fill-style/fill-style-extension.js.map +0 -1
- package/dist/esm/fill-style/shaders.glsl.js +0 -108
- package/dist/esm/fill-style/shaders.glsl.js.map +0 -1
- package/dist/esm/fp64/fp64-extension.js +0 -20
- package/dist/esm/fp64/fp64-extension.js.map +0 -1
- package/dist/esm/fp64/project64.glsl.js +0 -82
- package/dist/esm/fp64/project64.glsl.js.map +0 -1
- package/dist/esm/fp64/project64.js +0 -43
- package/dist/esm/fp64/project64.js.map +0 -1
- package/dist/esm/index.js +0 -11
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/mask/mask-effect.js +0 -228
- package/dist/esm/mask/mask-effect.js.map +0 -1
- package/dist/esm/mask/mask-extension.js +0 -83
- package/dist/esm/mask/mask-extension.js.map +0 -1
- package/dist/esm/mask/mask-pass.js +0 -58
- package/dist/esm/mask/mask-pass.js.map +0 -1
- package/dist/esm/mask/shader-module.js +0 -84
- package/dist/esm/mask/shader-module.js.map +0 -1
- package/dist/esm/path-style/path-style-extension.js +0 -130
- package/dist/esm/path-style/path-style-extension.js.map +0 -1
- package/dist/esm/path-style/shaders.glsl.js +0 -84
- package/dist/esm/path-style/shaders.glsl.js.map +0 -1
- package/dist/esm/terrain/height-map-builder.js +0 -86
- package/dist/esm/terrain/height-map-builder.js.map +0 -1
- package/dist/esm/terrain/shader-module.js +0 -127
- package/dist/esm/terrain/shader-module.js.map +0 -1
- package/dist/esm/terrain/terrain-cover.js +0 -212
- package/dist/esm/terrain/terrain-cover.js.map +0 -1
- package/dist/esm/terrain/terrain-effect.js +0 -219
- package/dist/esm/terrain/terrain-effect.js.map +0 -1
- package/dist/esm/terrain/terrain-extension.js +0 -59
- package/dist/esm/terrain/terrain-extension.js.map +0 -1
- package/dist/esm/terrain/terrain-pass.js +0 -71
- package/dist/esm/terrain/terrain-pass.js.map +0 -1
- package/dist/esm/terrain/terrain-picking-pass.js +0 -73
- package/dist/esm/terrain/terrain-picking-pass.js.map +0 -1
- package/dist/esm/terrain/utils.js +0 -19
- package/dist/esm/terrain/utils.js.map +0 -1
- package/dist/esm/utils/debug.js +0 -61
- package/dist/esm/utils/debug.js.map +0 -1
- package/dist/esm/utils/projection-utils.js +0 -134
- package/dist/esm/utils/projection-utils.js.map +0 -1
- package/typed/collision-filter/collision-filter-effect.d.ts.map +0 -1
- package/typed/collision-filter/collision-filter-pass.d.ts.map +0 -1
- package/typed/data-filter/aggregator.d.ts.map +0 -1
- package/typed/data-filter/data-filter-extension.d.ts.map +0 -1
- package/typed/data-filter/shader-module.d.ts +0 -9
- package/typed/data-filter/shader-module.d.ts.map +0 -1
- package/typed/fill-style/fill-style-extension.d.ts.map +0 -1
- package/typed/fill-style/shaders.glsl.d.ts.map +0 -1
- package/typed/index.d.ts +0 -19
- package/typed/index.d.ts.map +0 -1
- package/typed/mask/mask-effect.d.ts.map +0 -1
- package/typed/mask/mask-pass.d.ts +0 -19
- package/typed/mask/mask-pass.d.ts.map +0 -1
- package/typed/terrain/height-map-builder.d.ts.map +0 -1
- package/typed/terrain/shader-module.d.ts.map +0 -1
- package/typed/terrain/terrain-cover.d.ts.map +0 -1
- package/typed/terrain/terrain-effect.d.ts.map +0 -1
- package/typed/terrain/terrain-pass.d.ts +0 -11
- package/typed/terrain/terrain-pass.d.ts.map +0 -1
- package/typed/terrain/terrain-picking-pass.d.ts.map +0 -1
- /package/{typed → dist}/brushing/brushing-extension.d.ts +0 -0
- /package/{typed → dist}/brushing/brushing-extension.d.ts.map +0 -0
- /package/{typed → dist}/clip/clip-extension.d.ts +0 -0
- /package/{typed → dist}/collision-filter/collision-filter-extension.d.ts +0 -0
- /package/{typed → dist}/collision-filter/collision-filter-extension.d.ts.map +0 -0
- /package/{typed → dist}/collision-filter/shader-module.d.ts +0 -0
- /package/{typed → dist}/data-filter/aggregator.d.ts +0 -0
- /package/{typed → dist}/fp64/fp64-extension.d.ts +0 -0
- /package/{typed → dist}/fp64/fp64-extension.d.ts.map +0 -0
- /package/{typed → dist}/fp64/project64.d.ts +0 -0
- /package/{typed → dist}/fp64/project64.d.ts.map +0 -0
- /package/{typed → dist}/fp64/project64.glsl.d.ts +0 -0
- /package/{typed → dist}/fp64/project64.glsl.d.ts.map +0 -0
- /package/{typed → dist}/mask/mask-extension.d.ts +0 -0
- /package/{typed → dist}/mask/mask-extension.d.ts.map +0 -0
- /package/{typed → dist}/mask/shader-module.d.ts +0 -0
- /package/{typed → dist}/path-style/path-style-extension.d.ts +0 -0
- /package/{typed → dist}/path-style/shaders.glsl.d.ts +0 -0
- /package/{typed → dist}/path-style/shaders.glsl.d.ts.map +0 -0
- /package/{typed → dist}/terrain/terrain-extension.d.ts +0 -0
- /package/{typed → dist}/terrain/terrain-extension.d.ts.map +0 -0
- /package/{typed → dist}/utils/debug.d.ts +0 -0
- /package/{typed → dist}/utils/projection-utils.d.ts +0 -0
- /package/{typed → dist}/utils/projection-utils.d.ts.map +0 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { glsl } from "../utils/syntax-tags.js";
|
|
2
|
+
const vs = `
|
|
3
|
+
uniform bool filter_useSoftMargin;
|
|
4
|
+
uniform bool filter_enabled;
|
|
5
|
+
uniform bool filter_transformSize;
|
|
6
|
+
uniform ivec4 filter_categoryBitMask;
|
|
7
|
+
#ifdef DATAFILTER_TYPE
|
|
8
|
+
uniform DATAFILTER_TYPE filter_min;
|
|
9
|
+
uniform DATAFILTER_TYPE filter_softMin;
|
|
10
|
+
uniform DATAFILTER_TYPE filter_softMax;
|
|
11
|
+
uniform DATAFILTER_TYPE filter_max;
|
|
12
|
+
#ifdef NON_INSTANCED_MODEL
|
|
13
|
+
#define DATAFILTER_ATTRIB filterValues
|
|
14
|
+
#define DATAFILTER_ATTRIB_64LOW filterValues64Low
|
|
15
|
+
#else
|
|
16
|
+
#define DATAFILTER_ATTRIB instanceFilterValues
|
|
17
|
+
#define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low
|
|
18
|
+
#endif
|
|
19
|
+
in DATAFILTER_TYPE DATAFILTER_ATTRIB;
|
|
20
|
+
#ifdef DATAFILTER_DOUBLE
|
|
21
|
+
in DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;
|
|
22
|
+
uniform DATAFILTER_TYPE filter_min64High;
|
|
23
|
+
uniform DATAFILTER_TYPE filter_max64High;
|
|
24
|
+
#endif
|
|
25
|
+
#endif
|
|
26
|
+
#ifdef DATACATEGORY_TYPE
|
|
27
|
+
#ifdef NON_INSTANCED_MODEL
|
|
28
|
+
#define DATACATEGORY_ATTRIB filterCategoryValues
|
|
29
|
+
#else
|
|
30
|
+
#define DATACATEGORY_ATTRIB instanceFilterCategoryValues
|
|
31
|
+
#endif
|
|
32
|
+
in DATACATEGORY_TYPE DATACATEGORY_ATTRIB;
|
|
33
|
+
#endif
|
|
34
|
+
out float dataFilter_value;
|
|
35
|
+
float dataFilter_reduceValue(float value) {
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
float dataFilter_reduceValue(vec2 value) {
|
|
39
|
+
return min(value.x, value.y);
|
|
40
|
+
}
|
|
41
|
+
float dataFilter_reduceValue(vec3 value) {
|
|
42
|
+
return min(min(value.x, value.y), value.z);
|
|
43
|
+
}
|
|
44
|
+
float dataFilter_reduceValue(vec4 value) {
|
|
45
|
+
return min(min(value.x, value.y), min(value.z, value.w));
|
|
46
|
+
}
|
|
47
|
+
#ifdef DATAFILTER_TYPE
|
|
48
|
+
void dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax) {
|
|
49
|
+
if (filter_useSoftMargin) {
|
|
50
|
+
DATAFILTER_TYPE leftInRange = mix(
|
|
51
|
+
smoothstep(filter_min, filter_softMin, valueFromMin),
|
|
52
|
+
step(filter_min, valueFromMin),
|
|
53
|
+
step(filter_softMin, filter_min)
|
|
54
|
+
);
|
|
55
|
+
DATAFILTER_TYPE rightInRange = mix(
|
|
56
|
+
1.0 - smoothstep(filter_softMax, filter_max, valueFromMax),
|
|
57
|
+
step(valueFromMax, filter_max),
|
|
58
|
+
step(filter_max, filter_softMax)
|
|
59
|
+
);
|
|
60
|
+
dataFilter_value = dataFilter_reduceValue(leftInRange * rightInRange);
|
|
61
|
+
} else {
|
|
62
|
+
dataFilter_value = dataFilter_reduceValue(
|
|
63
|
+
step(filter_min, valueFromMin) * step(valueFromMax, filter_max)
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
#endif
|
|
68
|
+
#ifdef DATACATEGORY_ATTRIB
|
|
69
|
+
void dataFilter_setCategoryValue(DATACATEGORY_TYPE category) {
|
|
70
|
+
#if DATACATEGORY_CHANNELS == 1
|
|
71
|
+
int dataFilter_masks = filter_categoryBitMask[int(category / 32.0)];
|
|
72
|
+
#elif DATACATEGORY_CHANNELS == 2
|
|
73
|
+
ivec2 dataFilter_masks = ivec2(
|
|
74
|
+
filter_categoryBitMask[int(category.x / 32.0)],
|
|
75
|
+
filter_categoryBitMask[int(category.y / 32.0) + 2]
|
|
76
|
+
);
|
|
77
|
+
#elif DATACATEGORY_CHANNELS == 3
|
|
78
|
+
ivec3 dataFilter_masks = filter_categoryBitMask.xyz;
|
|
79
|
+
#else
|
|
80
|
+
ivec4 dataFilter_masks = filter_categoryBitMask;
|
|
81
|
+
#endif
|
|
82
|
+
DATACATEGORY_TYPE dataFilter_bits = DATACATEGORY_TYPE(dataFilter_masks) / pow(DATACATEGORY_TYPE(2.0), mod(category, 32.0));
|
|
83
|
+
dataFilter_bits = mod(floor(dataFilter_bits), 2.0);
|
|
84
|
+
#if DATACATEGORY_CHANNELS == 1
|
|
85
|
+
if(dataFilter_bits == 0.0) dataFilter_value = 0.0;
|
|
86
|
+
#else
|
|
87
|
+
if(any(equal(dataFilter_bits, DATACATEGORY_TYPE(0.0)))) dataFilter_value = 0.0;
|
|
88
|
+
#endif
|
|
89
|
+
}
|
|
90
|
+
#endif
|
|
91
|
+
`;
|
|
92
|
+
const fs = `
|
|
93
|
+
uniform bool filter_transformColor;
|
|
94
|
+
in float dataFilter_value;
|
|
95
|
+
`;
|
|
96
|
+
/* eslint-disable camelcase */
|
|
97
|
+
function getUniforms(opts) {
|
|
98
|
+
if (!opts || !('extensions' in opts)) {
|
|
99
|
+
return {};
|
|
100
|
+
}
|
|
101
|
+
const { filterRange = [-1, 1], filterEnabled = true, filterTransformSize = true, filterTransformColor = true } = opts;
|
|
102
|
+
const filterSoftRange = opts.filterSoftRange || filterRange;
|
|
103
|
+
return {
|
|
104
|
+
...(Number.isFinite(filterRange[0])
|
|
105
|
+
? {
|
|
106
|
+
filter_min: filterRange[0],
|
|
107
|
+
filter_softMin: filterSoftRange[0],
|
|
108
|
+
filter_softMax: filterSoftRange[1],
|
|
109
|
+
filter_max: filterRange[1]
|
|
110
|
+
}
|
|
111
|
+
: {
|
|
112
|
+
filter_min: filterRange.map(r => r[0]),
|
|
113
|
+
filter_softMin: filterSoftRange.map(r => r[0]),
|
|
114
|
+
filter_softMax: filterSoftRange.map(r => r[1]),
|
|
115
|
+
filter_max: filterRange.map(r => r[1])
|
|
116
|
+
}),
|
|
117
|
+
filter_enabled: filterEnabled,
|
|
118
|
+
filter_useSoftMargin: Boolean(opts.filterSoftRange),
|
|
119
|
+
filter_transformSize: filterEnabled && filterTransformSize,
|
|
120
|
+
filter_transformColor: filterEnabled && filterTransformColor
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function getUniforms64(opts) {
|
|
124
|
+
if (!opts || !('extensions' in opts)) {
|
|
125
|
+
return {};
|
|
126
|
+
}
|
|
127
|
+
const uniforms = getUniforms(opts);
|
|
128
|
+
if (Number.isFinite(uniforms.filter_min)) {
|
|
129
|
+
const min64High = Math.fround(uniforms.filter_min);
|
|
130
|
+
uniforms.filter_min -= min64High;
|
|
131
|
+
uniforms.filter_softMin -= min64High;
|
|
132
|
+
uniforms.filter_min64High = min64High;
|
|
133
|
+
const max64High = Math.fround(uniforms.filter_max);
|
|
134
|
+
uniforms.filter_max -= max64High;
|
|
135
|
+
uniforms.filter_softMax -= max64High;
|
|
136
|
+
uniforms.filter_max64High = max64High;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
const min64High = uniforms.filter_min.map(Math.fround);
|
|
140
|
+
uniforms.filter_min = uniforms.filter_min.map((x, i) => x - min64High[i]);
|
|
141
|
+
uniforms.filter_softMin = uniforms.filter_softMin.map((x, i) => x - min64High[i]);
|
|
142
|
+
uniforms.filter_min64High = min64High;
|
|
143
|
+
const max64High = uniforms.filter_max.map(Math.fround);
|
|
144
|
+
uniforms.filter_max = uniforms.filter_max.map((x, i) => x - max64High[i]);
|
|
145
|
+
uniforms.filter_softMax = uniforms.filter_softMax.map((x, i) => x - max64High[i]);
|
|
146
|
+
uniforms.filter_max64High = max64High;
|
|
147
|
+
}
|
|
148
|
+
return uniforms;
|
|
149
|
+
}
|
|
150
|
+
const inject = {
|
|
151
|
+
'vs:#main-start': `
|
|
152
|
+
dataFilter_value = 1.0;
|
|
153
|
+
if (filter_enabled) {
|
|
154
|
+
#ifdef DATAFILTER_ATTRIB
|
|
155
|
+
#ifdef DATAFILTER_DOUBLE
|
|
156
|
+
dataFilter_setValue(
|
|
157
|
+
DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,
|
|
158
|
+
DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW
|
|
159
|
+
);
|
|
160
|
+
#else
|
|
161
|
+
dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB);
|
|
162
|
+
#endif
|
|
163
|
+
#endif
|
|
164
|
+
#ifdef DATACATEGORY_ATTRIB
|
|
165
|
+
dataFilter_setCategoryValue(DATACATEGORY_ATTRIB);
|
|
166
|
+
#endif
|
|
167
|
+
}
|
|
168
|
+
`,
|
|
169
|
+
'vs:#main-end': `
|
|
170
|
+
if (dataFilter_value == 0.0) {
|
|
171
|
+
gl_Position = vec4(0.);
|
|
172
|
+
}
|
|
173
|
+
`,
|
|
174
|
+
'vs:DECKGL_FILTER_SIZE': `
|
|
175
|
+
if (filter_transformSize) {
|
|
176
|
+
size = size * dataFilter_value;
|
|
177
|
+
}
|
|
178
|
+
`,
|
|
179
|
+
'fs:DECKGL_FILTER_COLOR': `
|
|
180
|
+
if (dataFilter_value == 0.0) discard;
|
|
181
|
+
if (filter_transformColor) {
|
|
182
|
+
color.a *= dataFilter_value;
|
|
183
|
+
}
|
|
184
|
+
`
|
|
185
|
+
};
|
|
186
|
+
export const shaderModule = {
|
|
187
|
+
name: 'data-filter',
|
|
188
|
+
vs,
|
|
189
|
+
fs,
|
|
190
|
+
inject,
|
|
191
|
+
getUniforms
|
|
192
|
+
};
|
|
193
|
+
export const shaderModule64 = {
|
|
194
|
+
name: 'data-filter-fp64',
|
|
195
|
+
vs,
|
|
196
|
+
fs,
|
|
197
|
+
inject,
|
|
198
|
+
getUniforms: getUniforms64
|
|
199
|
+
};
|