@kepler.gl/deckgl-layers 3.2.6 → 3.3.0-alpha.1

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.
Files changed (65) hide show
  1. package/dist/3d-building-layer/3d-building-layer.d.ts +3 -3
  2. package/dist/3d-building-layer/3d-building-layer.js +9 -12
  3. package/dist/3d-building-layer/types.d.ts +8 -8
  4. package/dist/cluster-layer/cluster-layer.d.ts +16 -26
  5. package/dist/cluster-layer/cluster-layer.js +19 -33
  6. package/dist/column-layer/enhanced-column-layer.d.ts +4 -4
  7. package/dist/column-layer/enhanced-column-layer.js +39 -35
  8. package/dist/deckgl-extensions/filter-arrow-layer.d.ts +33 -6
  9. package/dist/deckgl-extensions/filter-arrow-layer.js +4 -12
  10. package/dist/deckgl-extensions/filter-shader-module.d.ts +32 -4
  11. package/dist/deckgl-extensions/filter-shader-module.js +3 -4
  12. package/dist/grid-layer/enhanced-cpu-grid-layer.d.ts +4913 -6
  13. package/dist/grid-layer/enhanced-cpu-grid-layer.js +67 -44
  14. package/dist/hexagon-layer/enhanced-hexagon-layer.d.ts +4910 -4
  15. package/dist/hexagon-layer/enhanced-hexagon-layer.js +82 -41
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.js +13 -1
  18. package/dist/layer-utils/aggregation-utils.d.ts +44 -0
  19. package/dist/layer-utils/aggregation-utils.js +181 -0
  20. package/dist/layer-utils/cpu-aggregator.d.ts +74 -27
  21. package/dist/layer-utils/cpu-aggregator.js +224 -19
  22. package/dist/layer-utils/shader-utils.d.ts +1 -0
  23. package/dist/layer-utils/shader-utils.js +10 -1
  24. package/dist/line-layer/line-layer.d.ts +4 -4
  25. package/dist/line-layer/line-layer.js +29 -21
  26. package/dist/raster/images.d.ts +10 -3
  27. package/dist/raster/images.js +154 -60
  28. package/dist/raster/pipeline-validation-patch.d.ts +1 -0
  29. package/dist/raster/pipeline-validation-patch.js +101 -0
  30. package/dist/raster/raster-layer/raster-layer-shaders.d.ts +56 -0
  31. package/dist/raster/raster-layer/raster-layer-shaders.js +163 -0
  32. package/dist/raster/raster-layer/raster-layer.d.ts +6 -6
  33. package/dist/raster/raster-layer/raster-layer.js +90 -88
  34. package/dist/raster/raster-mesh-layer/matrix.d.ts +3 -1
  35. package/dist/raster/raster-mesh-layer/matrix.js +3 -3
  36. package/dist/raster/raster-mesh-layer/raster-mesh-layer-shaders.d.ts +19 -0
  37. package/dist/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +38 -0
  38. package/dist/raster/raster-mesh-layer/raster-mesh-layer.d.ts +7 -6
  39. package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +97 -83
  40. package/dist/raster/raster-processing-uniforms.d.ts +38 -0
  41. package/dist/raster/raster-processing-uniforms.js +124 -0
  42. package/dist/raster/types.d.ts +8 -8
  43. package/dist/raster/types.js +1 -1
  44. package/dist/raster/util.d.ts +15 -0
  45. package/dist/raster/util.js +113 -3
  46. package/dist/raster/webgl/color/colormap.js +13 -7
  47. package/dist/raster/webgl/color/filter.js +22 -12
  48. package/dist/raster/webgl/color/gamma-contrast.js +9 -3
  49. package/dist/raster/webgl/color/linear-rescale.js +9 -5
  50. package/dist/raster/webgl/color/saturation.js +7 -4
  51. package/dist/raster/webgl/color/sigmoidal-contrast.js +9 -5
  52. package/dist/raster/webgl/pansharpen/pansharpen-brovey.js +7 -4
  53. package/dist/raster/webgl/texture/combine-bands.js +1 -1
  54. package/dist/raster/webgl/texture/mask.js +27 -35
  55. package/dist/raster/webgl/texture/reorder-bands.js +8 -5
  56. package/dist/raster/webgl/texture/rgba-image.js +1 -1
  57. package/dist/raster/webgl/types.d.ts +11 -6
  58. package/dist/raster/webgl/types.js +1 -1
  59. package/dist/svg-icon-layer/scatterplot-icon-layer.d.ts +2 -4
  60. package/dist/svg-icon-layer/scatterplot-icon-layer.js +19 -25
  61. package/dist/svg-icon-layer/svg-icon-layer.d.ts +4 -6
  62. package/dist/svg-icon-layer/svg-icon-layer.js +5 -3
  63. package/dist/wms/wms-layer.d.ts +8 -5
  64. package/dist/wms/wms-layer.js +100 -27
  65. package/package.json +21 -17
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jhc3Rlci90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgdHlwZSB7VGV4dHVyZTJEUHJvcHMsIFRleHR1cmUyRH0gZnJvbSAnQGx1bWEuZ2wvd2ViZ2wnO1xuXG5pbXBvcnQgdHlwZSB7U2hhZGVyTW9kdWxlfSBmcm9tICcuL3dlYmdsJztcblxuLyoqIEFsbG93ZWQgaW5wdXQgZm9yIGltYWdlcyBwcm9wXG4gKiBUZXh0dXJlMkQgaXMgYWxyZWFkeSBvbiB0aGUgR1BVLCB3aGlsZSBUZXh0dXJlMkRQcm9wcyBjYW4gYmUgZGF0YSBvbiB0aGUgQ1BVIHRoYXQgaXMgbm90IHlldCBjb3BpZWQgdG8gdGhlIEdQVS5cbiAqL1xuZXhwb3J0IHR5cGUgSW1hZ2VJbnB1dCA9IFJlY29yZDxcbiAgc3RyaW5nLFxuICBUZXh0dXJlMkRQcm9wcyB8IFRleHR1cmUyRCB8IChUZXh0dXJlMkRQcm9wcyB8IFRleHR1cmUyRClbXVxuPjtcblxuLyoqIEludGVybmFsIHN0b3JhZ2Ugb2YgaW1hZ2VzXG4gKiBUaGUgVGV4dHVyZTJEIG9iamVjdCByZWZlcmVuY2VzIGRhdGEgb24gdGhlIEdQVVxuICovXG5leHBvcnQgdHlwZSBJbWFnZVN0YXRlID0gUmVjb3JkPHN0cmluZywgVGV4dHVyZTJEIHwgVGV4dHVyZTJEW10+O1xuXG4vKiogUHJvcGVydGllcyBhZGRlZCBieSBSYXN0ZXJMYXllci4gKi9cbmV4cG9ydCB0eXBlIFJhc3RlckxheWVyQWRkZWRQcm9wcyA9IHtcbiAgbW9kdWxlczogU2hhZGVyTW9kdWxlW107XG4gIGltYWdlczogSW1hZ2VJbnB1dDtcbiAgbW9kdWxlUHJvcHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG59O1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jhc3Rlci90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgdHlwZSB7VGV4dHVyZX0gZnJvbSAnQGx1bWEuZ2wvY29yZSc7XG5pbXBvcnQgdHlwZSB7U2hhZGVyTW9kdWxlfSBmcm9tICcuL3dlYmdsJztcblxuLyoqIEFsbG93ZWQgaW5wdXQgZm9yIGltYWdlcyBwcm9wIOKAlCBlaXRoZXIgR1BVLXJlc2lkZW50IFRleHR1cmUgb2JqZWN0cyBvclxuICogbGVnYWN5IHJhc3RlciB0ZXh0dXJlIGRlc2NyaXB0b3JzIHdpdGggQ1BVIGRhdGEgdGhhdCB3aWxsIGJlIHVwbG9hZGVkLlxuICovXG5leHBvcnQgdHlwZSBJbWFnZUlucHV0ID0gUmVjb3JkPFxuICBzdHJpbmcsXG4gIFRleHR1cmUgfCBUZXh0dXJlW10gfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbj47XG5cbi8qKiBJbnRlcm5hbCBzdG9yYWdlIG9mIGltYWdlc1xuICogVGhlIFRleHR1cmUgb2JqZWN0IHJlZmVyZW5jZXMgZGF0YSBvbiB0aGUgR1BVXG4gKi9cbmV4cG9ydCB0eXBlIEltYWdlU3RhdGUgPSBSZWNvcmQ8c3RyaW5nLCBUZXh0dXJlIHwgVGV4dHVyZVtdPjtcblxuLyoqIFByb3BlcnRpZXMgYWRkZWQgYnkgUmFzdGVyTGF5ZXIuICovXG5leHBvcnQgdHlwZSBSYXN0ZXJMYXllckFkZGVkUHJvcHMgPSB7XG4gIG1vZHVsZXM6IFNoYWRlck1vZHVsZVtdO1xuICBpbWFnZXM6IEltYWdlSW5wdXQ7XG4gIG1vZHVsZVByb3BzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBvblJlZHJhd05lZWRlZD86ICgoKSA9PiB2b2lkKSB8IG51bGw7XG59O1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
@@ -8,3 +8,18 @@ import { ShaderModule } from './webgl/types';
8
8
  * @return true if both lists are equal
9
9
  */
10
10
  export declare function modulesEqual(modules: ShaderModule[], oldModules: ShaderModule[]): boolean;
11
+ /**
12
+ * Apply module uniforms/bindings to shaderInputs, calling each module's
13
+ * getUniforms exactly once and writing the result directly — avoiding the
14
+ * double-getUniforms bug where shaderInputs.setProps() would re-invoke
15
+ * getUniforms on already-transformed values.
16
+ *
17
+ * For modules whose uniforms have been consolidated into the shared
18
+ * rasterProcessing UBO, the uniform values are remapped (prefixed) and
19
+ * written to the rasterProcessing slot instead of the individual module slot.
20
+ */
21
+ export declare function applyModuleUniforms(shaderInputs: {
22
+ moduleUniforms: Record<string, Record<string, unknown>>;
23
+ moduleBindings: Record<string, Record<string, unknown>>;
24
+ setProps?: (props: any) => void;
25
+ }, modules: ShaderModule[], allModuleProps: Record<string, unknown>): void;
@@ -1,12 +1,18 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
7
+ exports.applyModuleUniforms = applyModuleUniforms;
6
8
  exports.modulesEqual = modulesEqual;
7
- // SPDX-License-Identifier: MIT
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _rasterProcessingUniforms = require("./raster-processing-uniforms");
12
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
13
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
14
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } // SPDX-License-Identifier: MIT
8
15
  // Copyright contributors to the kepler.gl project
9
-
10
16
  /**
11
17
  * Test if two lists of modules are equal
12
18
  *
@@ -26,4 +32,108 @@ function modulesEqual(modules, oldModules) {
26
32
  }
27
33
  return true;
28
34
  }
29
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGVzRXF1YWwiLCJtb2R1bGVzIiwib2xkTW9kdWxlcyIsImxlbmd0aCIsImkiLCJuYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jhc3Rlci91dGlsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7U2hhZGVyTW9kdWxlfSBmcm9tICcuL3dlYmdsL3R5cGVzJztcblxuLyoqXG4gKiBUZXN0IGlmIHR3byBsaXN0cyBvZiBtb2R1bGVzIGFyZSBlcXVhbFxuICpcbiAqIEBwYXJhbSBtb2R1bGVzICAgICBNb2R1bGVzIGxpc3RcbiAqIEBwYXJhbSBvbGRNb2R1bGVzICBNb2R1bGVzIGxpc3RcbiAqXG4gKiBAcmV0dXJuIHRydWUgaWYgYm90aCBsaXN0cyBhcmUgZXF1YWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vZHVsZXNFcXVhbChtb2R1bGVzOiBTaGFkZXJNb2R1bGVbXSwgb2xkTW9kdWxlczogU2hhZGVyTW9kdWxlW10pOiBib29sZWFuIHtcbiAgaWYgKG1vZHVsZXMubGVuZ3RoICE9PSBvbGRNb2R1bGVzLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChtb2R1bGVzW2ldLm5hbWUgIT09IG9sZE1vZHVsZXNbaV0ubmFtZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQSxZQUFZQSxDQUFDQyxPQUF1QixFQUFFQyxVQUEwQixFQUFXO0VBQ3pGLElBQUlELE9BQU8sQ0FBQ0UsTUFBTSxLQUFLRCxVQUFVLENBQUNDLE1BQU0sRUFBRTtJQUN4QyxPQUFPLEtBQUs7RUFDZDtFQUVBLEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHSCxPQUFPLENBQUNFLE1BQU0sRUFBRUMsQ0FBQyxFQUFFLEVBQUU7SUFDdkMsSUFBSUgsT0FBTyxDQUFDRyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxLQUFLSCxVQUFVLENBQUNFLENBQUMsQ0FBQyxDQUFDQyxJQUFJLEVBQUU7TUFDMUMsT0FBTyxLQUFLO0lBQ2Q7RUFDRjtFQUVBLE9BQU8sSUFBSTtBQUNiIiwiaWdub3JlTGlzdCI6W119
35
+ function isUniformValue(value) {
36
+ return typeof value === 'number' || typeof value === 'boolean' || ArrayBuffer.isView(value) || Array.isArray(value);
37
+ }
38
+
39
+ /**
40
+ * Apply module uniforms/bindings to shaderInputs, calling each module's
41
+ * getUniforms exactly once and writing the result directly — avoiding the
42
+ * double-getUniforms bug where shaderInputs.setProps() would re-invoke
43
+ * getUniforms on already-transformed values.
44
+ *
45
+ * For modules whose uniforms have been consolidated into the shared
46
+ * rasterProcessing UBO, the uniform values are remapped (prefixed) and
47
+ * written to the rasterProcessing slot instead of the individual module slot.
48
+ */
49
+ function applyModuleUniforms(shaderInputs, modules, allModuleProps) {
50
+ var _iterator = _createForOfIteratorHelper(modules),
51
+ _step;
52
+ try {
53
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
54
+ var mod = _step.value;
55
+ if (mod.getUniforms) {
56
+ var result = mod.getUniforms(allModuleProps);
57
+ if (result) {
58
+ var uniforms = {};
59
+ var bindings = {};
60
+ for (var _i = 0, _Object$entries = Object.entries(result); _i < _Object$entries.length; _i++) {
61
+ var _Object$entries$_i = (0, _slicedToArray2["default"])(_Object$entries[_i], 2),
62
+ key = _Object$entries$_i[0],
63
+ value = _Object$entries$_i[1];
64
+ if (isUniformValue(value)) {
65
+ uniforms[key] = value;
66
+ } else {
67
+ bindings[key] = value;
68
+ }
69
+ }
70
+ try {
71
+ var nameMap = _rasterProcessingUniforms.UNIFORM_NAME_MAP[mod.name];
72
+ if (nameMap && mod.uniformTypes) {
73
+ // Consolidated module: remap uniforms to the shared rasterProcessing UBO
74
+ if (!shaderInputs.moduleUniforms.rasterProcessing) {
75
+ shaderInputs.moduleUniforms.rasterProcessing = {};
76
+ }
77
+ for (var _i2 = 0, _Object$entries2 = Object.entries(uniforms); _i2 < _Object$entries2.length; _i2++) {
78
+ var _Object$entries2$_i = (0, _slicedToArray2["default"])(_Object$entries2[_i2], 2),
79
+ _key = _Object$entries2$_i[0],
80
+ _value = _Object$entries2$_i[1];
81
+ var remapped = nameMap[_key];
82
+ if (remapped) {
83
+ shaderInputs.moduleUniforms.rasterProcessing[remapped] = _value;
84
+ }
85
+ }
86
+ // Bindings (textures) stay on the original module name
87
+ if (Object.keys(bindings).length > 0) {
88
+ if (!shaderInputs.moduleBindings[mod.name]) {
89
+ shaderInputs.moduleBindings[mod.name] = {};
90
+ }
91
+ Object.assign(shaderInputs.moduleBindings[mod.name], bindings);
92
+ }
93
+ } else {
94
+ // Non-consolidated module: write directly as before
95
+ if (!shaderInputs.moduleUniforms[mod.name]) {
96
+ shaderInputs.moduleUniforms[mod.name] = {};
97
+ }
98
+ if (!shaderInputs.moduleBindings[mod.name]) {
99
+ shaderInputs.moduleBindings[mod.name] = {};
100
+ }
101
+ Object.assign(shaderInputs.moduleUniforms[mod.name], uniforms);
102
+ Object.assign(shaderInputs.moduleBindings[mod.name], bindings);
103
+ }
104
+ } catch (_unused) {
105
+ var _nameMap = _rasterProcessingUniforms.UNIFORM_NAME_MAP[mod.name];
106
+ if (_nameMap && mod.uniformTypes) {
107
+ var _shaderInputs$setProp;
108
+ var remappedUniforms = {};
109
+ for (var _i3 = 0, _Object$entries3 = Object.entries(uniforms); _i3 < _Object$entries3.length; _i3++) {
110
+ var _Object$entries3$_i = (0, _slicedToArray2["default"])(_Object$entries3[_i3], 2),
111
+ _key2 = _Object$entries3$_i[0],
112
+ val = _Object$entries3$_i[1];
113
+ var _remapped = _nameMap[_key2];
114
+ if (_remapped) {
115
+ remappedUniforms[_remapped] = val;
116
+ }
117
+ }
118
+ (_shaderInputs$setProp = shaderInputs.setProps) === null || _shaderInputs$setProp === void 0 || _shaderInputs$setProp.call(shaderInputs, {
119
+ rasterProcessing: remappedUniforms
120
+ });
121
+ if (Object.keys(bindings).length > 0) {
122
+ var _shaderInputs$setProp2;
123
+ (_shaderInputs$setProp2 = shaderInputs.setProps) === null || _shaderInputs$setProp2 === void 0 || _shaderInputs$setProp2.call(shaderInputs, (0, _defineProperty2["default"])({}, mod.name, bindings));
124
+ }
125
+ } else {
126
+ var _shaderInputs$setProp4;
127
+ (_shaderInputs$setProp4 = shaderInputs.setProps) === null || _shaderInputs$setProp4 === void 0 || _shaderInputs$setProp4.call(shaderInputs, (0, _defineProperty2["default"])({}, mod.name, result));
128
+ }
129
+ }
130
+ }
131
+ }
132
+ }
133
+ } catch (err) {
134
+ _iterator.e(err);
135
+ } finally {
136
+ _iterator.f();
137
+ }
138
+ }
139
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmFzdGVyUHJvY2Vzc2luZ1VuaWZvcm1zIiwicmVxdWlyZSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiciIsImUiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImYiLCJUeXBlRXJyb3IiLCJvIiwiYSIsInUiLCJjYWxsIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwibW9kdWxlc0VxdWFsIiwibW9kdWxlcyIsIm9sZE1vZHVsZXMiLCJpIiwiaXNVbmlmb3JtVmFsdWUiLCJBcnJheUJ1ZmZlciIsImlzVmlldyIsImFwcGx5TW9kdWxlVW5pZm9ybXMiLCJzaGFkZXJJbnB1dHMiLCJhbGxNb2R1bGVQcm9wcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwibW9kIiwiZ2V0VW5pZm9ybXMiLCJyZXN1bHQiLCJ1bmlmb3JtcyIsImJpbmRpbmdzIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwiX3NsaWNlZFRvQXJyYXkyIiwia2V5IiwibmFtZU1hcCIsIlVOSUZPUk1fTkFNRV9NQVAiLCJ1bmlmb3JtVHlwZXMiLCJtb2R1bGVVbmlmb3JtcyIsInJhc3RlclByb2Nlc3NpbmciLCJfaTIiLCJfT2JqZWN0JGVudHJpZXMyIiwiX09iamVjdCRlbnRyaWVzMiRfaSIsInJlbWFwcGVkIiwia2V5cyIsIm1vZHVsZUJpbmRpbmdzIiwiYXNzaWduIiwiX3VudXNlZCIsIl9zaGFkZXJJbnB1dHMkc2V0UHJvcCIsInJlbWFwcGVkVW5pZm9ybXMiLCJfaTMiLCJfT2JqZWN0JGVudHJpZXMzIiwiX09iamVjdCRlbnRyaWVzMyRfaSIsInZhbCIsInNldFByb3BzIiwiX3NoYWRlcklucHV0cyRzZXRQcm9wMiIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJfc2hhZGVySW5wdXRzJHNldFByb3A0IiwiZXJyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jhc3Rlci91dGlsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7U2hhZGVyTW9kdWxlfSBmcm9tICcuL3dlYmdsL3R5cGVzJztcbmltcG9ydCB7VU5JRk9STV9OQU1FX01BUH0gZnJvbSAnLi9yYXN0ZXItcHJvY2Vzc2luZy11bmlmb3Jtcyc7XG5cbi8qKlxuICogVGVzdCBpZiB0d28gbGlzdHMgb2YgbW9kdWxlcyBhcmUgZXF1YWxcbiAqXG4gKiBAcGFyYW0gbW9kdWxlcyAgICAgTW9kdWxlcyBsaXN0XG4gKiBAcGFyYW0gb2xkTW9kdWxlcyAgTW9kdWxlcyBsaXN0XG4gKlxuICogQHJldHVybiB0cnVlIGlmIGJvdGggbGlzdHMgYXJlIGVxdWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2R1bGVzRXF1YWwobW9kdWxlczogU2hhZGVyTW9kdWxlW10sIG9sZE1vZHVsZXM6IFNoYWRlck1vZHVsZVtdKTogYm9vbGVhbiB7XG4gIGlmIChtb2R1bGVzLmxlbmd0aCAhPT0gb2xkTW9kdWxlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobW9kdWxlc1tpXS5uYW1lICE9PSBvbGRNb2R1bGVzW2ldLm5hbWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNVbmlmb3JtVmFsdWUodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8XG4gICAgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHxcbiAgICBBcnJheUJ1ZmZlci5pc1ZpZXcodmFsdWUpIHx8XG4gICAgQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgKTtcbn1cblxuLyoqXG4gKiBBcHBseSBtb2R1bGUgdW5pZm9ybXMvYmluZGluZ3MgdG8gc2hhZGVySW5wdXRzLCBjYWxsaW5nIGVhY2ggbW9kdWxlJ3NcbiAqIGdldFVuaWZvcm1zIGV4YWN0bHkgb25jZSBhbmQgd3JpdGluZyB0aGUgcmVzdWx0IGRpcmVjdGx5IOKAlCBhdm9pZGluZyB0aGVcbiAqIGRvdWJsZS1nZXRVbmlmb3JtcyBidWcgd2hlcmUgc2hhZGVySW5wdXRzLnNldFByb3BzKCkgd291bGQgcmUtaW52b2tlXG4gKiBnZXRVbmlmb3JtcyBvbiBhbHJlYWR5LXRyYW5zZm9ybWVkIHZhbHVlcy5cbiAqXG4gKiBGb3IgbW9kdWxlcyB3aG9zZSB1bmlmb3JtcyBoYXZlIGJlZW4gY29uc29saWRhdGVkIGludG8gdGhlIHNoYXJlZFxuICogcmFzdGVyUHJvY2Vzc2luZyBVQk8sIHRoZSB1bmlmb3JtIHZhbHVlcyBhcmUgcmVtYXBwZWQgKHByZWZpeGVkKSBhbmRcbiAqIHdyaXR0ZW4gdG8gdGhlIHJhc3RlclByb2Nlc3Npbmcgc2xvdCBpbnN0ZWFkIG9mIHRoZSBpbmRpdmlkdWFsIG1vZHVsZSBzbG90LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlNb2R1bGVVbmlmb3JtcyhcbiAgc2hhZGVySW5wdXRzOiB7XG4gICAgbW9kdWxlVW5pZm9ybXM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgICBtb2R1bGVCaW5kaW5nczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICAgIHNldFByb3BzPzogKHByb3BzOiBhbnkpID0+IHZvaWQ7XG4gIH0sXG4gIG1vZHVsZXM6IFNoYWRlck1vZHVsZVtdLFxuICBhbGxNb2R1bGVQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IG1vZCBvZiBtb2R1bGVzKSB7XG4gICAgaWYgKG1vZC5nZXRVbmlmb3Jtcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gbW9kLmdldFVuaWZvcm1zKGFsbE1vZHVsZVByb3BzIGFzIG9iamVjdCk7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHVuaWZvcm1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgICAgICBjb25zdCBiaW5kaW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0KSkge1xuICAgICAgICAgIGlmIChpc1VuaWZvcm1WYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHVuaWZvcm1zW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmluZGluZ3Nba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG5hbWVNYXAgPSBVTklGT1JNX05BTUVfTUFQW21vZC5uYW1lXTtcbiAgICAgICAgICBpZiAobmFtZU1hcCAmJiBtb2QudW5pZm9ybVR5cGVzKSB7XG4gICAgICAgICAgICAvLyBDb25zb2xpZGF0ZWQgbW9kdWxlOiByZW1hcCB1bmlmb3JtcyB0byB0aGUgc2hhcmVkIHJhc3RlclByb2Nlc3NpbmcgVUJPXG4gICAgICAgICAgICBpZiAoIXNoYWRlcklucHV0cy5tb2R1bGVVbmlmb3Jtcy5yYXN0ZXJQcm9jZXNzaW5nKSB7XG4gICAgICAgICAgICAgIHNoYWRlcklucHV0cy5tb2R1bGVVbmlmb3Jtcy5yYXN0ZXJQcm9jZXNzaW5nID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh1bmlmb3JtcykpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVtYXBwZWQgPSBuYW1lTWFwW2tleV07XG4gICAgICAgICAgICAgIGlmIChyZW1hcHBlZCkge1xuICAgICAgICAgICAgICAgIHNoYWRlcklucHV0cy5tb2R1bGVVbmlmb3Jtcy5yYXN0ZXJQcm9jZXNzaW5nW3JlbWFwcGVkXSA9IHZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBCaW5kaW5ncyAodGV4dHVyZXMpIHN0YXkgb24gdGhlIG9yaWdpbmFsIG1vZHVsZSBuYW1lXG4gICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoYmluZGluZ3MpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgaWYgKCFzaGFkZXJJbnB1dHMubW9kdWxlQmluZGluZ3NbbW9kLm5hbWVdKSB7XG4gICAgICAgICAgICAgICAgc2hhZGVySW5wdXRzLm1vZHVsZUJpbmRpbmdzW21vZC5uYW1lXSA9IHt9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oc2hhZGVySW5wdXRzLm1vZHVsZUJpbmRpbmdzW21vZC5uYW1lXSwgYmluZGluZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOb24tY29uc29saWRhdGVkIG1vZHVsZTogd3JpdGUgZGlyZWN0bHkgYXMgYmVmb3JlXG4gICAgICAgICAgICBpZiAoIXNoYWRlcklucHV0cy5tb2R1bGVVbmlmb3Jtc1ttb2QubmFtZV0pIHtcbiAgICAgICAgICAgICAgc2hhZGVySW5wdXRzLm1vZHVsZVVuaWZvcm1zW21vZC5uYW1lXSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzaGFkZXJJbnB1dHMubW9kdWxlQmluZGluZ3NbbW9kLm5hbWVdKSB7XG4gICAgICAgICAgICAgIHNoYWRlcklucHV0cy5tb2R1bGVCaW5kaW5nc1ttb2QubmFtZV0gPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oc2hhZGVySW5wdXRzLm1vZHVsZVVuaWZvcm1zW21vZC5uYW1lXSwgdW5pZm9ybXMpO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihzaGFkZXJJbnB1dHMubW9kdWxlQmluZGluZ3NbbW9kLm5hbWVdLCBiaW5kaW5ncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICBjb25zdCBuYW1lTWFwID0gVU5JRk9STV9OQU1FX01BUFttb2QubmFtZV07XG4gICAgICAgICAgaWYgKG5hbWVNYXAgJiYgbW9kLnVuaWZvcm1UeXBlcykge1xuICAgICAgICAgICAgY29uc3QgcmVtYXBwZWRVbmlmb3JtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyh1bmlmb3JtcykpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVtYXBwZWQgPSBuYW1lTWFwW2tleV07XG4gICAgICAgICAgICAgIGlmIChyZW1hcHBlZCkge1xuICAgICAgICAgICAgICAgIHJlbWFwcGVkVW5pZm9ybXNbcmVtYXBwZWRdID0gdmFsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzaGFkZXJJbnB1dHMuc2V0UHJvcHM/Lih7cmFzdGVyUHJvY2Vzc2luZzogcmVtYXBwZWRVbmlmb3Jtc30pO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGJpbmRpbmdzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHNoYWRlcklucHV0cy5zZXRQcm9wcz8uKHtbbW9kLm5hbWVdOiBiaW5kaW5nc30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaGFkZXJJbnB1dHMuc2V0UHJvcHM/Lih7W21vZC5uYW1lXTog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SUFBSVosR0FBRyxDQUFDYyxZQUFZLEVBQUU7Y0FBQSxJQUFBVyxxQkFBQTtjQUMvQixJQUFNQyxnQkFBeUMsR0FBRyxDQUFDLENBQUM7Y0FDcEQsU0FBQUMsR0FBQSxNQUFBQyxnQkFBQSxHQUF5QnJCLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDTCxRQUFRLENBQUMsRUFBQXdCLEdBQUEsR0FBQUMsZ0JBQUEsQ0FBQTdELE1BQUEsRUFBQTRELEdBQUEsSUFBRTtnQkFBOUMsSUFBQUUsbUJBQUEsT0FBQW5CLGVBQUEsYUFBQWtCLGdCQUFBLENBQUFELEdBQUE7a0JBQU9oQixLQUFHLEdBQUFrQixtQkFBQTtrQkFBRUMsR0FBRyxHQUFBRCxtQkFBQTtnQkFDbEIsSUFBTVQsU0FBUSxHQUFHUixRQUFPLENBQUNELEtBQUcsQ0FBQztnQkFDN0IsSUFBSVMsU0FBUSxFQUFFO2tCQUNaTSxnQkFBZ0IsQ0FBQ04sU0FBUSxDQUFDLEdBQUdVLEdBQUc7Z0JBQ2xDO2NBQ0Y7Y0FDQSxDQUFBTCxxQkFBQSxHQUFBN0IsWUFBWSxDQUFDbUMsUUFBUSxjQUFBTixxQkFBQSxlQUFyQkEscUJBQUEsQ0FBQTlDLElBQUEsQ0FBQWlCLFlBQVksRUFBWTtnQkFBQ29CLGdCQUFnQixFQUFFVTtjQUFnQixDQUFDLENBQUM7Y0FDN0QsSUFBSW5CLE1BQU0sQ0FBQ2MsSUFBSSxDQUFDakIsUUFBUSxDQUFDLENBQUNyQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUFBLElBQUFpRSxzQkFBQTtnQkFDcEMsQ0FBQUEsc0JBQUEsR0FBQXBDLFlBQVksQ0FBQ21DLFFBQVEsY0FBQUMsc0JBQUEsZUFBckJBLHNCQUFBLENBQUFyRCxJQUFBLENBQUFpQixZQUFZLE1BQUFxQyxnQkFBQSxpQkFBY2pDLEdBQUcsQ0FBQ2YsSUFBSSxFQUFHbUIsUUFBUSxDQUFDLENBQUM7Y0FDakQ7WUFDRixDQUFDLE1BQU07Y0FBQSxJQUFBOEIsc0JBQUE7Y0FDTCxDQUFBQSxzQkFBQSxHQUFBdEMsWUFBWSxDQUFDbUMsUUFBUSxjQUFBRyxzQkFBQSxlQUFyQkEsc0JBQUEsQ0FBQXZELElBQUEsQ0FBQWlCLFlBQVksTUFBQXFDLGdCQUFBLGlCQUFjakMsR0FBRyxDQUFDZixJQUFJLEVBQUdpQixNQUFNLENBQUMsQ0FBQztZQUMvQztVQUNGO1FBQ0Y7TUFDRjtJQUNGO0VBQUMsU0FBQWlDLEdBQUE7SUFBQXJDLFNBQUEsQ0FBQXRDLENBQUEsQ0FBQTJFLEdBQUE7RUFBQTtJQUFBckMsU0FBQSxDQUFBeEIsQ0FBQTtFQUFBO0FBQ0giLCJpZ25vcmVMaXN0IjpbXX0=
@@ -7,7 +7,7 @@ exports.colormap = void 0;
7
7
  // SPDX-License-Identifier: MIT
8
8
  // Copyright contributors to the kepler.gl project
9
9
 
10
- var fs = "uniform sampler2D uColormapTexture;\nuniform int uHasCategoricalColors;\nuniform int uCategoricalMinValue;\nuniform int uCategoricalMaxValue;\nuniform int uMaxPixelValue;\n\n// Apply colormap texture given value\n// Since the texture only varies in the x direction, setting v to 0.5 as a\n// constant is fine\n// Assumes the input range of value is -1 to 1\nvec4 colormap(sampler2D cmap, vec4 image) {\n vec2 uv;\n if (uHasCategoricalColors == 1) {\n float step = float(uMaxPixelValue) / float(uCategoricalMaxValue - uCategoricalMinValue);\n uv = vec2(image.r * step, 0.5);\n } else {\n uv = vec2(0.5 * image.r + 0.5, 0.5);\n }\n vec4 color = texture2D(cmap, uv);\n if(color.a <= 0.0) discard;\n return color;\n}\n";
10
+ var fs = "uniform sampler2D uColormapTexture;\n\nuniform colormapUniforms {\n int hasCategoricalColors;\n int categoricalMinValue;\n int categoricalMaxValue;\n int maxPixelValue;\n} colormap;\n\n// Apply colormap texture given value\n// Since the texture only varies in the x direction, setting v to 0.5 as a\n// constant is fine\n// Assumes the input range of value is -1 to 1\nvec4 colormapApply(sampler2D cmap, vec4 image) {\n vec2 uv;\n if (colormap.hasCategoricalColors == 1) {\n float step = float(colormap.maxPixelValue) / float(colormap.categoricalMaxValue - colormap.categoricalMinValue);\n uv = vec2(image.r * step, 0.5);\n } else {\n uv = vec2(0.5 * image.r + 0.5, 0.5);\n }\n vec4 color = texture(cmap, uv);\n if(color.a <= 0.0) discard;\n return color;\n}\n";
11
11
  function getUniforms() {
12
12
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
13
13
  var imageColormap = opts.imageColormap,
@@ -22,18 +22,24 @@ function getUniforms() {
22
22
  var isCategorical = isSupportedDataType && Number.isFinite(maxPixelValue) && Number.isFinite(minCategoricalBandValue) && Number.isFinite(maxCategoricalBandValue);
23
23
  return {
24
24
  uColormapTexture: imageColormap,
25
- uHasCategoricalColors: isCategorical ? 1 : 0,
26
- uCategoricalMinValue: Number.isFinite(minCategoricalBandValue) ? minCategoricalBandValue : 0,
27
- uCategoricalMaxValue: Number.isFinite(maxCategoricalBandValue) ? maxCategoricalBandValue : 0,
28
- uMaxPixelValue: Number.isFinite(maxPixelValue) ? maxPixelValue : 0
25
+ hasCategoricalColors: isCategorical ? 1 : 0,
26
+ categoricalMinValue: Number.isFinite(minCategoricalBandValue) ? minCategoricalBandValue : 0,
27
+ categoricalMaxValue: Number.isFinite(maxCategoricalBandValue) ? maxCategoricalBandValue : 0,
28
+ maxPixelValue: Number.isFinite(maxPixelValue) ? maxPixelValue : 0
29
29
  };
30
30
  }
31
31
  var colormap = exports.colormap = {
32
32
  name: 'colormap',
33
33
  fs: fs,
34
+ uniformTypes: {
35
+ hasCategoricalColors: 'i32',
36
+ categoricalMinValue: 'i32',
37
+ categoricalMaxValue: 'i32',
38
+ maxPixelValue: 'i32'
39
+ },
34
40
  getUniforms: getUniforms,
35
41
  inject: {
36
- 'fs:DECKGL_MUTATE_COLOR': "\n image = colormap(uColormapTexture, image);\n "
42
+ 'fs:DECKGL_MUTATE_COLOR': "\n image = colormapApply(uColormapTexture, image);\n "
37
43
  }
38
44
  };
39
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImltYWdlQ29sb3JtYXAiLCJtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSIsIm1heENhdGVnb3JpY2FsQmFuZFZhbHVlIiwiZGF0YVR5cGVNYXhWYWx1ZSIsIm1heFBpeGVsVmFsdWUiLCJpc1N1cHBvcnRlZERhdGFUeXBlIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJpc0NhdGVnb3JpY2FsIiwidUNvbG9ybWFwVGV4dHVyZSIsInVIYXNDYXRlZ29yaWNhbENvbG9ycyIsInVDYXRlZ29yaWNhbE1pblZhbHVlIiwidUNhdGVnb3JpY2FsTWF4VmFsdWUiLCJ1TWF4UGl4ZWxWYWx1ZSIsImNvbG9ybWFwIiwiZXhwb3J0cyIsIm5hbWUiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL2NvbG9yL2NvbG9ybWFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7VGV4dHVyZTJEfSBmcm9tICdAbHVtYS5nbC93ZWJnbCc7XG5cbmltcG9ydCB7R2V0VW5pZm9ybXNPdXRwdXQsIFNoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBmcyA9IGBcXFxudW5pZm9ybSBzYW1wbGVyMkQgdUNvbG9ybWFwVGV4dHVyZTtcbnVuaWZvcm0gaW50IHVIYXNDYXRlZ29yaWNhbENvbG9ycztcbnVuaWZvcm0gaW50IHVDYXRlZ29yaWNhbE1pblZhbHVlO1xudW5pZm9ybSBpbnQgdUNhdGVnb3JpY2FsTWF4VmFsdWU7XG51bmlmb3JtIGludCB1TWF4UGl4ZWxWYWx1ZTtcblxuLy8gQXBwbHkgY29sb3JtYXAgdGV4dHVyZSBnaXZlbiB2YWx1ZVxuLy8gU2luY2UgdGhlIHRleHR1cmUgb25seSB2YXJpZXMgaW4gdGhlIHggZGlyZWN0aW9uLCBzZXR0aW5nIHYgdG8gMC41IGFzIGFcbi8vIGNvbnN0YW50IGlzIGZpbmVcbi8vIEFzc3VtZXMgdGhlIGlucHV0IHJhbmdlIG9mIHZhbHVlIGlzIC0xIHRvIDFcbnZlYzQgY29sb3JtYXAoc2FtcGxlcjJEIGNtYXAsIHZlYzQgaW1hZ2UpIHtcbiAgdmVjMiB1djtcbiAgaWYgKHVIYXNDYXRlZ29yaWNhbENvbG9ycyA9PSAxKSB7XG4gICAgZmxvYXQgc3RlcCA9IGZsb2F0KHVNYXhQaXhlbFZhbHVlKSAvIGZsb2F0KHVDYXRlZ29yaWNhbE1heFZhbHVlIC0gdUNhdGVnb3JpY2FsTWluVmFsdWUpO1xuICAgIHV2ID0gdmVjMihpbWFnZS5yICogc3RlcCwgMC41KTtcbiAgfSBlbHNlIHtcbiAgICB1diA9IHZlYzIoMC41ICogaW1hZ2UuciArIDAuNSwgMC41KTtcbiAgfVxuICB2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKGNtYXAsIHV2KTtcbiAgaWYoY29sb3IuYSA8PSAwLjApIGRpc2NhcmQ7XG4gIHJldHVybiBjb2xvcjtcbn1cbmA7XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKFxuICBvcHRzOiB7XG4gICAgaW1hZ2VDb2xvcm1hcD86IFRleHR1cmUyRDtcbiAgICBtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZT86IG51bWJlcjtcbiAgICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZT86IG51bWJlcjtcbiAgICBkYXRhVHlwZU1heFZhbHVlPzogbnVtYmVyO1xuICAgIG1heFBpeGVsVmFsdWU/OiBudW1iZXI7XG4gIH0gPSB7fVxuKTogR2V0VW5pZm9ybXNPdXRwdXQge1xuICBjb25zdCB7XG4gICAgaW1hZ2VDb2xvcm1hcCxcbiAgICBtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICBkYXRhVHlwZU1heFZhbHVlLFxuICAgIG1heFBpeGVsVmFsdWVcbiAgfSA9IG9wdHM7XG5cbiAgaWYgKCFpbWFnZUNvbG9ybWFwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBpc1N1cHBvcnRlZERhdGFUeXBlID0gTnVtYmVyLmlzRmluaXRlKGRhdGFUeXBlTWF4VmFsdWUpO1xuICBjb25zdCBpc0NhdGVnb3JpY2FsID1cbiAgICBpc1N1cHBvcnRlZERhdGFUeXBlICYmXG4gICAgTnVtYmVyLmlzRmluaXRlKG1heFBpeGVsVmFsdWUpICYmXG4gICAgTnVtYmVyLmlzRmluaXRlKG1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlKSAmJlxuICAgIE51bWJlci5pc0Zpbml0ZShtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZSk7XG4gIHJldHVybiB7XG4gICAgdUNvbG9ybWFwVGV4dHVyZTogaW1hZ2VDb2xvcm1hcCxcbiAgICB1SGFzQ2F0ZWdvcmljYWxDb2xvcnM6IGlzQ2F0ZWdvcmljYWwgPyAxIDogMCxcbiAgICB1Q2F0ZWdvcmljYWxNaW5WYWx1ZTogTnVtYmVyLmlzRmluaXRlKG1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlKSA/IG1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlIDogMCxcbiAgICB1Q2F0ZWdvcmljYWxNYXhWYWx1ZTogTnVtYmVyLmlzRmluaXRlKG1heENhdGVnb3JpY2FsQmFuZFZhbHVlKSA/IG1heENhdGVnb3JpY2FsQmFuZFZhbHVlIDogMCxcbiAgICB1TWF4UGl4ZWxWYWx1ZTogTnVtYmVyLmlzRmluaXRlKG1heFBpeGVsVmFsdWUpID8gbWF4UGl4ZWxWYWx1ZSA6IDBcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGNvbG9ybWFwOiBTaGFkZXJNb2R1bGUgPSB7XG4gIG5hbWU6ICdjb2xvcm1hcCcsXG4gIGZzLFxuICBnZXRVbmlmb3JtcyxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9NVVRBVEVfQ09MT1InOiBgXG4gICAgaW1hZ2UgPSBjb2xvcm1hcCh1Q29sb3JtYXBUZXh0dXJlLCBpbWFnZSk7XG4gICAgYFxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQU1BLElBQU1BLEVBQUUsK3RCQXVCUDtBQUVELFNBQVNDLFdBQVdBLENBQUEsRUFRQztFQUFBLElBUG5CQyxJQU1DLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUVOLElBQ0VHLGFBQWEsR0FLWEosSUFBSSxDQUxOSSxhQUFhO0lBQ2JDLHVCQUF1QixHQUlyQkwsSUFBSSxDQUpOSyx1QkFBdUI7SUFDdkJDLHVCQUF1QixHQUdyQk4sSUFBSSxDQUhOTSx1QkFBdUI7SUFDdkJDLGdCQUFnQixHQUVkUCxJQUFJLENBRk5PLGdCQUFnQjtJQUNoQkMsYUFBYSxHQUNYUixJQUFJLENBRE5RLGFBQWE7RUFHZixJQUFJLENBQUNKLGFBQWEsRUFBRTtJQUNsQixPQUFPLElBQUk7RUFDYjtFQUVBLElBQU1LLG1CQUFtQixHQUFHQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0osZ0JBQWdCLENBQUM7RUFDN0QsSUFBTUssYUFBYSxHQUNqQkgsbUJBQW1CLElBQ25CQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0gsYUFBYSxDQUFDLElBQzlCRSxNQUFNLENBQUNDLFFBQVEsQ0FBQ04sdUJBQXVCLENBQUMsSUFDeENLLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDTCx1QkFBdUIsQ0FBQztFQUMxQyxPQUFPO0lBQ0xPLGdCQUFnQixFQUFFVCxhQUFhO0lBQy9CVSxxQkFBcUIsRUFBRUYsYUFBYSxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQzVDRyxvQkFBb0IsRUFBRUwsTUFBTSxDQUFDQyxRQUFRLENBQUNOLHVCQUF1QixDQUFDLEdBQUdBLHVCQUF1QixHQUFHLENBQUM7SUFDNUZXLG9CQUFvQixFQUFFTixNQUFNLENBQUNDLFFBQVEsQ0FBQ0wsdUJBQXVCLENBQUMsR0FBR0EsdUJBQXVCLEdBQUcsQ0FBQztJQUM1RlcsY0FBYyxFQUFFUCxNQUFNLENBQUNDLFFBQVEsQ0FBQ0gsYUFBYSxDQUFDLEdBQUdBLGFBQWEsR0FBRztFQUNuRSxDQUFDO0FBQ0g7QUFFTyxJQUFNVSxRQUFzQixHQUFBQyxPQUFBLENBQUFELFFBQUEsR0FBRztFQUNwQ0UsSUFBSSxFQUFFLFVBQVU7RUFDaEJ0QixFQUFFLEVBQUZBLEVBQUU7RUFDRkMsV0FBVyxFQUFYQSxXQUFXO0VBQ1hzQixNQUFNLEVBQUU7SUFDTix3QkFBd0I7RUFHMUI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
45
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImltYWdlQ29sb3JtYXAiLCJtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSIsIm1heENhdGVnb3JpY2FsQmFuZFZhbHVlIiwiZGF0YVR5cGVNYXhWYWx1ZSIsIm1heFBpeGVsVmFsdWUiLCJpc1N1cHBvcnRlZERhdGFUeXBlIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJpc0NhdGVnb3JpY2FsIiwidUNvbG9ybWFwVGV4dHVyZSIsImhhc0NhdGVnb3JpY2FsQ29sb3JzIiwiY2F0ZWdvcmljYWxNaW5WYWx1ZSIsImNhdGVnb3JpY2FsTWF4VmFsdWUiLCJjb2xvcm1hcCIsImV4cG9ydHMiLCJuYW1lIiwidW5pZm9ybVR5cGVzIiwiaW5qZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci93ZWJnbC9jb2xvci9jb2xvcm1hcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgdHlwZSB7VGV4dHVyZX0gZnJvbSAnQGx1bWEuZ2wvY29yZSc7XG5pbXBvcnQge0dldFVuaWZvcm1zT3V0cHV0LCBTaGFkZXJNb2R1bGV9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgZnMgPSBgXFxcbnVuaWZvcm0gc2FtcGxlcjJEIHVDb2xvcm1hcFRleHR1cmU7XG5cbnVuaWZvcm0gY29sb3JtYXBVbmlmb3JtcyB7XG4gIGludCBoYXNDYXRlZ29yaWNhbENvbG9ycztcbiAgaW50IGNhdGVnb3JpY2FsTWluVmFsdWU7XG4gIGludCBjYXRlZ29yaWNhbE1heFZhbHVlO1xuICBpbnQgbWF4UGl4ZWxWYWx1ZTtcbn0gY29sb3JtYXA7XG5cbi8vIEFwcGx5IGNvbG9ybWFwIHRleHR1cmUgZ2l2ZW4gdmFsdWVcbi8vIFNpbmNlIHRoZSB0ZXh0dXJlIG9ubHkgdmFyaWVzIGluIHRoZSB4IGRpcmVjdGlvbiwgc2V0dGluZyB2IHRvIDAuNSBhcyBhXG4vLyBjb25zdGFudCBpcyBmaW5lXG4vLyBBc3N1bWVzIHRoZSBpbnB1dCByYW5nZSBvZiB2YWx1ZSBpcyAtMSB0byAxXG52ZWM0IGNvbG9ybWFwQXBwbHkoc2FtcGxlcjJEIGNtYXAsIHZlYzQgaW1hZ2UpIHtcbiAgdmVjMiB1djtcbiAgaWYgKGNvbG9ybWFwLmhhc0NhdGVnb3JpY2FsQ29sb3JzID09IDEpIHtcbiAgICBmbG9hdCBzdGVwID0gZmxvYXQoY29sb3JtYXAubWF4UGl4ZWxWYWx1ZSkgLyBmbG9hdChjb2xvcm1hcC5jYXRlZ29yaWNhbE1heFZhbHVlIC0gY29sb3JtYXAuY2F0ZWdvcmljYWxNaW5WYWx1ZSk7XG4gICAgdXYgPSB2ZWMyKGltYWdlLnIgKiBzdGVwLCAwLjUpO1xuICB9IGVsc2Uge1xuICAgIHV2ID0gdmVjMigwLjUgKiBpbWFnZS5yICsgMC41LCAwLjUpO1xuICB9XG4gIHZlYzQgY29sb3IgPSB0ZXh0dXJlKGNtYXAsIHV2KTtcbiAgaWYoY29sb3IuYSA8PSAwLjApIGRpc2NhcmQ7XG4gIHJldHVybiBjb2xvcjtcbn1cbmA7XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKFxuICBvcHRzOiB7XG4gICAgaW1hZ2VDb2xvcm1hcD86IFRleHR1cmU7XG4gICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWU/OiBudW1iZXI7XG4gICAgbWF4Q2F0ZWdvcmljYWxCYW5kVmFsdWU/OiBudW1iZXI7XG4gICAgZGF0YVR5cGVNYXhWYWx1ZT86IG51bWJlcjtcbiAgICBtYXhQaXhlbFZhbHVlPzogbnVtYmVyO1xuICB9ID0ge31cbik6IEdldFVuaWZvcm1zT3V0cHV0IHtcbiAgY29uc3Qge1xuICAgIGltYWdlQ29sb3JtYXAsXG4gICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgbWF4Q2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgZGF0YVR5cGVNYXhWYWx1ZSxcbiAgICBtYXhQaXhlbFZhbHVlXG4gIH0gPSBvcHRzO1xuXG4gIGlmICghaW1hZ2VDb2xvcm1hcCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaXNTdXBwb3J0ZWREYXRhVHlwZSA9IE51bWJlci5pc0Zpbml0ZShkYXRhVHlwZU1heFZhbHVlKTtcbiAgY29uc3QgaXNDYXRlZ29yaWNhbCA9XG4gICAgaXNTdXBwb3J0ZWREYXRhVHlwZSAmJlxuICAgIE51bWJlci5pc0Zpbml0ZShtYXhQaXhlbFZhbHVlKSAmJlxuICAgIE51bWJlci5pc0Zpbml0ZShtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSkgJiZcbiAgICBOdW1iZXIuaXNGaW5pdGUobWF4Q2F0ZWdvcmljYWxCYW5kVmFsdWUpO1xuICByZXR1cm4ge1xuICAgIHVDb2xvcm1hcFRleHR1cmU6IGltYWdlQ29sb3JtYXAsXG4gICAgaGFzQ2F0ZWdvcmljYWxDb2xvcnM6IGlzQ2F0ZWdvcmljYWwgPyAxIDogMCxcbiAgICBjYXRlZ29yaWNhbE1pblZhbHVlOiBOdW1iZXIuaXNGaW5pdGUobWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUpID8gbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUgOiAwLFxuICAgIGNhdGVnb3JpY2FsTWF4VmFsdWU6IE51bWJlci5pc0Zpbml0ZShtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZSkgPyBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZSA6IDAsXG4gICAgbWF4UGl4ZWxWYWx1ZTogTnVtYmVyLmlzRmluaXRlKG1heFBpeGVsVmFsdWUpID8gbWF4UGl4ZWxWYWx1ZSA6IDBcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGNvbG9ybWFwOiBTaGFkZXJNb2R1bGUgPSB7XG4gIG5hbWU6ICdjb2xvcm1hcCcsXG4gIGZzLFxuICB1bmlmb3JtVHlwZXM6IHtcbiAgICBoYXNDYXRlZ29yaWNhbENvbG9yczogJ2kzMicsXG4gICAgY2F0ZWdvcmljYWxNaW5WYWx1ZTogJ2kzMicsXG4gICAgY2F0ZWdvcmljYWxNYXhWYWx1ZTogJ2kzMicsXG4gICAgbWF4UGl4ZWxWYWx1ZTogJ2kzMidcbiAgfSxcbiAgZ2V0VW5pZm9ybXMsXG4gIGluamVjdDoge1xuICAgICdmczpERUNLR0xfTVVUQVRFX0NPTE9SJzogYFxuICAgIGltYWdlID0gY29sb3JtYXBBcHBseSh1Q29sb3JtYXBUZXh0dXJlLCBpbWFnZSk7XG4gICAgYFxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQUtBLElBQU1BLEVBQUUsaXhCQTBCUDtBQUVELFNBQVNDLFdBQVdBLENBQUEsRUFRQztFQUFBLElBUG5CQyxJQU1DLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUVOLElBQ0VHLGFBQWEsR0FLWEosSUFBSSxDQUxOSSxhQUFhO0lBQ2JDLHVCQUF1QixHQUlyQkwsSUFBSSxDQUpOSyx1QkFBdUI7SUFDdkJDLHVCQUF1QixHQUdyQk4sSUFBSSxDQUhOTSx1QkFBdUI7SUFDdkJDLGdCQUFnQixHQUVkUCxJQUFJLENBRk5PLGdCQUFnQjtJQUNoQkMsYUFBYSxHQUNYUixJQUFJLENBRE5RLGFBQWE7RUFHZixJQUFJLENBQUNKLGFBQWEsRUFBRTtJQUNsQixPQUFPLElBQUk7RUFDYjtFQUVBLElBQU1LLG1CQUFtQixHQUFHQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0osZ0JBQWdCLENBQUM7RUFDN0QsSUFBTUssYUFBYSxHQUNqQkgsbUJBQW1CLElBQ25CQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0gsYUFBYSxDQUFDLElBQzlCRSxNQUFNLENBQUNDLFFBQVEsQ0FBQ04sdUJBQXVCLENBQUMsSUFDeENLLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDTCx1QkFBdUIsQ0FBQztFQUMxQyxPQUFPO0lBQ0xPLGdCQUFnQixFQUFFVCxhQUFhO0lBQy9CVSxvQkFBb0IsRUFBRUYsYUFBYSxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQzNDRyxtQkFBbUIsRUFBRUwsTUFBTSxDQUFDQyxRQUFRLENBQUNOLHVCQUF1QixDQUFDLEdBQUdBLHVCQUF1QixHQUFHLENBQUM7SUFDM0ZXLG1CQUFtQixFQUFFTixNQUFNLENBQUNDLFFBQVEsQ0FBQ0wsdUJBQXVCLENBQUMsR0FBR0EsdUJBQXVCLEdBQUcsQ0FBQztJQUMzRkUsYUFBYSxFQUFFRSxNQUFNLENBQUNDLFFBQVEsQ0FBQ0gsYUFBYSxDQUFDLEdBQUdBLGFBQWEsR0FBRztFQUNsRSxDQUFDO0FBQ0g7QUFFTyxJQUFNUyxRQUFzQixHQUFBQyxPQUFBLENBQUFELFFBQUEsR0FBRztFQUNwQ0UsSUFBSSxFQUFFLFVBQVU7RUFDaEJyQixFQUFFLEVBQUZBLEVBQUU7RUFDRnNCLFlBQVksRUFBRTtJQUNaTixvQkFBb0IsRUFBRSxLQUFLO0lBQzNCQyxtQkFBbUIsRUFBRSxLQUFLO0lBQzFCQyxtQkFBbUIsRUFBRSxLQUFLO0lBQzFCUixhQUFhLEVBQUU7RUFDakIsQ0FBQztFQUNEVCxXQUFXLEVBQVhBLFdBQVc7RUFDWHNCLE1BQU0sRUFBRTtJQUNOLHdCQUF3QjtFQUcxQjtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -7,7 +7,7 @@ exports.filter = void 0;
7
7
  // SPDX-License-Identifier: MIT
8
8
  // Copyright contributors to the kepler.gl project
9
9
 
10
- var fs = "uniform float filterMin1;\nuniform float filterMax1;\nuniform float filterMin2;\nuniform float filterMax2;\nuniform float filterMin3;\nuniform float filterMax3;\nuniform float filterMin4;\nuniform float filterMax4;\n";
10
+ var fs = "uniform bandFilterUniforms {\n float min1;\n float max1;\n float min2;\n float max2;\n float min3;\n float max3;\n float min4;\n float max4;\n} bandFilter;\n";
11
11
 
12
12
  // You can't pass JS' -Infinity or Infinity to a shader as a uniform
13
13
  var inf = Math.pow(2, 62);
@@ -25,24 +25,34 @@ function getUniforms() {
25
25
  filterMax4 = opts.filterMax4;
26
26
  if (Number.isFinite(filterMin1) || Number.isFinite(filterMin2) || Number.isFinite(filterMin3) || Number.isFinite(filterMin4) || Number.isFinite(filterMax1) || Number.isFinite(filterMax2) || Number.isFinite(filterMax3) || Number.isFinite(filterMax4)) {
27
27
  return {
28
- filterMin1: Number.isFinite(filterMin1) ? filterMin1 : -inf,
29
- filterMin2: Number.isFinite(filterMin2) ? filterMin2 : -inf,
30
- filterMin3: Number.isFinite(filterMin3) ? filterMin3 : -inf,
31
- filterMin4: Number.isFinite(filterMin4) ? filterMin4 : -inf,
32
- filterMax1: Number.isFinite(filterMax1) ? filterMax1 : inf,
33
- filterMax2: Number.isFinite(filterMax2) ? filterMax2 : inf,
34
- filterMax3: Number.isFinite(filterMax3) ? filterMax3 : inf,
35
- filterMax4: Number.isFinite(filterMax4) ? filterMax4 : inf
28
+ min1: Number.isFinite(filterMin1) ? filterMin1 : -inf,
29
+ min2: Number.isFinite(filterMin2) ? filterMin2 : -inf,
30
+ min3: Number.isFinite(filterMin3) ? filterMin3 : -inf,
31
+ min4: Number.isFinite(filterMin4) ? filterMin4 : -inf,
32
+ max1: Number.isFinite(filterMax1) ? filterMax1 : inf,
33
+ max2: Number.isFinite(filterMax2) ? filterMax2 : inf,
34
+ max3: Number.isFinite(filterMax3) ? filterMax3 : inf,
35
+ max4: Number.isFinite(filterMax4) ? filterMax4 : inf
36
36
  };
37
37
  }
38
38
  return null;
39
39
  }
40
40
  var filter = exports.filter = {
41
- name: 'filter',
41
+ name: 'bandFilter',
42
42
  fs: fs,
43
+ uniformTypes: {
44
+ min1: 'f32',
45
+ max1: 'f32',
46
+ min2: 'f32',
47
+ max2: 'f32',
48
+ min3: 'f32',
49
+ max3: 'f32',
50
+ min4: 'f32',
51
+ max4: 'f32'
52
+ },
43
53
  getUniforms: getUniforms,
44
54
  inject: {
45
- 'fs:DECKGL_MUTATE_COLOR': "\n if (image.r < filterMin1) discard;\n if (image.g < filterMin2) discard;\n if (image.b < filterMin3) discard;\n if (image.a < filterMin4) discard;\n if (image.r > filterMax1) discard;\n if (image.g > filterMax2) discard;\n if (image.b > filterMax3) discard;\n if (image.a > filterMax4) discard;\n "
55
+ 'fs:DECKGL_MUTATE_COLOR': "\n if (image.r < bandFilter.min1) discard;\n if (image.g < bandFilter.min2) discard;\n if (image.b < bandFilter.min3) discard;\n if (image.a < bandFilter.min4) discard;\n if (image.r > bandFilter.max1) discard;\n if (image.g > bandFilter.max2) discard;\n if (image.b > bandFilter.max3) discard;\n if (image.a > bandFilter.max4) discard;\n "
46
56
  }
47
57
  };
48
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImluZiIsIk1hdGgiLCJwb3ciLCJnZXRVbmlmb3JtcyIsIm9wdHMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJmaWx0ZXJNaW4xIiwiZmlsdGVyTWluMiIsImZpbHRlck1pbjMiLCJmaWx0ZXJNaW40IiwiZmlsdGVyTWF4MSIsImZpbHRlck1heDIiLCJmaWx0ZXJNYXgzIiwiZmlsdGVyTWF4NCIsIk51bWJlciIsImlzRmluaXRlIiwiZmlsdGVyIiwiZXhwb3J0cyIsIm5hbWUiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL2NvbG9yL2ZpbHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0dldFVuaWZvcm1zT3V0cHV0LCBTaGFkZXJNb2R1bGV9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgZnMgPSBgXFxcbnVuaWZvcm0gZmxvYXQgZmlsdGVyTWluMTtcbnVuaWZvcm0gZmxvYXQgZmlsdGVyTWF4MTtcbnVuaWZvcm0gZmxvYXQgZmlsdGVyTWluMjtcbnVuaWZvcm0gZmxvYXQgZmlsdGVyTWF4MjtcbnVuaWZvcm0gZmxvYXQgZmlsdGVyTWluMztcbnVuaWZvcm0gZmxvYXQgZmlsdGVyTWF4MztcbnVuaWZvcm0gZmxvYXQgZmlsdGVyTWluNDtcbnVuaWZvcm0gZmxvYXQgZmlsdGVyTWF4NDtcbmA7XG5cbi8vIFlvdSBjYW4ndCBwYXNzIEpTJyAtSW5maW5pdHkgb3IgSW5maW5pdHkgdG8gYSBzaGFkZXIgYXMgYSB1bmlmb3JtXG5jb25zdCBpbmYgPSBNYXRoLnBvdygyLCA2Mik7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5mdW5jdGlvbiBnZXRVbmlmb3JtcyhcbiAgb3B0czoge1xuICAgIGZpbHRlck1pbjE/OiBudW1iZXI7XG4gICAgZmlsdGVyTWluMj86IG51bWJlcjtcbiAgICBmaWx0ZXJNaW4zPzogbnVtYmVyO1xuICAgIGZpbHRlck1pbjQ/OiBudW1iZXI7XG4gICAgZmlsdGVyTWF4MT86IG51bWJlcjtcbiAgICBmaWx0ZXJNYXgyPzogbnVtYmVyO1xuICAgIGZpbHRlck1heDM/OiBudW1iZXI7XG4gICAgZmlsdGVyTWF4ND86IG51bWJlcjtcbiAgfSA9IHt9XG4pOiBHZXRVbmlmb3Jtc091dHB1dCB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXJNaW4xLFxuICAgIGZpbHRlck1pbjIsXG4gICAgZmlsdGVyTWluMyxcbiAgICBmaWx0ZXJNaW40LFxuICAgIGZpbHRlck1heDEsXG4gICAgZmlsdGVyTWF4MixcbiAgICBmaWx0ZXJNYXgzLFxuICAgIGZpbHRlck1heDRcbiAgfSA9IG9wdHM7XG5cbiAgaWYgKFxuICAgIE51bWJlci5pc0Zpbml0ZShmaWx0ZXJNaW4xKSB8fFxuICAgIE51bWJlci5pc0Zpbml0ZShmaWx0ZXJNaW4yKSB8fFxuICAgIE51bWJlci5pc0Zpbml0ZShmaWx0ZXJNaW4zKSB8fFxuICAgIE51bWJlci5pc0Zpbml0ZShmaWx0ZXJNaW40KSB8fFxuICAgIE51bWJlci5pc0Zpbml0ZShmaWx0ZXJNYXgxKSB8fFxuICAgIE51bWJlci5pc0Zpbml0ZShmaWx0ZXJNYXgyKSB8fFxuICAgIE51bWJlci5pc0Zpbml0ZShmaWx0ZXJNYXgzKSB8fFxuICAgIE51bWJlci5pc0Zpbml0ZShmaWx0ZXJNYXg0KVxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsdGVyTWluMTogTnVtYmVyLmlzRmluaXRlKGZpbHRlck1pbjEpID8gZmlsdGVyTWluMSA6IC1pbmYsXG4gICAgICBmaWx0ZXJNaW4yOiBOdW1iZXIuaXNGaW5pdGUoZmlsdGVyTWluMikgPyBmaWx0ZXJNaW4yIDogLWluZixcbiAgICAgIGZpbHRlck1pbjM6IE51bWJlci5pc0Zpbml0ZShmaWx0ZXJNaW4zKSA/IGZpbHRlck1pbjMgOiAtaW5mLFxuICAgICAgZmlsdGVyTWluNDogTnVtYmVyLmlzRmluaXRlKGZpbHRlck1pbjQpID8gZmlsdGVyTWluNCA6IC1pbmYsXG4gICAgICBmaWx0ZXJNYXgxOiBOdW1iZXIuaXNGaW5pdGUoZmlsdGVyTWF4MSkgPyBmaWx0ZXJNYXgxIDogaW5mLFxuICAgICAgZmlsdGVyTWF4MjogTnVtYmVyLmlzRmluaXRlKGZpbHRlck1heDIpID8gZmlsdGVyTWF4MiA6IGluZixcbiAgICAgIGZpbHRlck1heDM6IE51bWJlci5pc0Zpbml0ZShmaWx0ZXJNYXgzKSA/IGZpbHRlck1heDMgOiBpbmYsXG4gICAgICBmaWx0ZXJNYXg0OiBOdW1iZXIuaXNGaW5pdGUoZmlsdGVyTWF4NCkgPyBmaWx0ZXJNYXg0IDogaW5mXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgY29uc3QgZmlsdGVyOiBTaGFkZXJNb2R1bGUgPSB7XG4gIG5hbWU6ICdmaWx0ZXInLFxuICBmcyxcbiAgZ2V0VW5pZm9ybXMsXG4gIGluamVjdDoge1xuICAgICdmczpERUNLR0xfTVVUQVRFX0NPTE9SJzogYFxuICAgIGlmIChpbWFnZS5yIDwgZmlsdGVyTWluMSkgZGlzY2FyZDtcbiAgICBpZiAoaW1hZ2UuZyA8IGZpbHRlck1pbjIpIGRpc2NhcmQ7XG4gICAgaWYgKGltYWdlLmIgPCBmaWx0ZXJNaW4zKSBkaXNjYXJkO1xuICAgIGlmIChpbWFnZS5hIDwgZmlsdGVyTWluNCkgZGlzY2FyZDtcbiAgICBpZiAoaW1hZ2UuciA+IGZpbHRlck1heDEpIGRpc2NhcmQ7XG4gICAgaWYgKGltYWdlLmcgPiBmaWx0ZXJNYXgyKSBkaXNjYXJkO1xuICAgIGlmIChpbWFnZS5iID4gZmlsdGVyTWF4MykgZGlzY2FyZDtcbiAgICBpZiAoaW1hZ2UuYSA+IGZpbHRlck1heDQpIGRpc2NhcmQ7XG4gICAgYFxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQUlBLElBQU1BLEVBQUUsNk5BU1A7O0FBRUQ7QUFDQSxJQUFNQyxHQUFHLEdBQUdDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7O0FBRTNCO0FBQ0EsU0FBU0MsV0FBV0EsQ0FBQSxFQVdDO0VBQUEsSUFWbkJDLElBU0MsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBRU4sSUFDRUcsVUFBVSxHQVFSSixJQUFJLENBUk5JLFVBQVU7SUFDVkMsVUFBVSxHQU9STCxJQUFJLENBUE5LLFVBQVU7SUFDVkMsVUFBVSxHQU1STixJQUFJLENBTk5NLFVBQVU7SUFDVkMsVUFBVSxHQUtSUCxJQUFJLENBTE5PLFVBQVU7SUFDVkMsVUFBVSxHQUlSUixJQUFJLENBSk5RLFVBQVU7SUFDVkMsVUFBVSxHQUdSVCxJQUFJLENBSE5TLFVBQVU7SUFDVkMsVUFBVSxHQUVSVixJQUFJLENBRk5VLFVBQVU7SUFDVkMsVUFBVSxHQUNSWCxJQUFJLENBRE5XLFVBQVU7RUFHWixJQUNFQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ1QsVUFBVSxDQUFDLElBQzNCUSxNQUFNLENBQUNDLFFBQVEsQ0FBQ1IsVUFBVSxDQUFDLElBQzNCTyxNQUFNLENBQUNDLFFBQVEsQ0FBQ1AsVUFBVSxDQUFDLElBQzNCTSxNQUFNLENBQUNDLFFBQVEsQ0FBQ04sVUFBVSxDQUFDLElBQzNCSyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0wsVUFBVSxDQUFDLElBQzNCSSxNQUFNLENBQUNDLFFBQVEsQ0FBQ0osVUFBVSxDQUFDLElBQzNCRyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0gsVUFBVSxDQUFDLElBQzNCRSxNQUFNLENBQUNDLFFBQVEsQ0FBQ0YsVUFBVSxDQUFDLEVBQzNCO0lBQ0EsT0FBTztNQUNMUCxVQUFVLEVBQUVRLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDVCxVQUFVLENBQUMsR0FBR0EsVUFBVSxHQUFHLENBQUNSLEdBQUc7TUFDM0RTLFVBQVUsRUFBRU8sTUFBTSxDQUFDQyxRQUFRLENBQUNSLFVBQVUsQ0FBQyxHQUFHQSxVQUFVLEdBQUcsQ0FBQ1QsR0FBRztNQUMzRFUsVUFBVSxFQUFFTSxNQUFNLENBQUNDLFFBQVEsQ0FBQ1AsVUFBVSxDQUFDLEdBQUdBLFVBQVUsR0FBRyxDQUFDVixHQUFHO01BQzNEVyxVQUFVLEVBQUVLLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDTixVQUFVLENBQUMsR0FBR0EsVUFBVSxHQUFHLENBQUNYLEdBQUc7TUFDM0RZLFVBQVUsRUFBRUksTUFBTSxDQUFDQyxRQUFRLENBQUNMLFVBQVUsQ0FBQyxHQUFHQSxVQUFVLEdBQUdaLEdBQUc7TUFDMURhLFVBQVUsRUFBRUcsTUFBTSxDQUFDQyxRQUFRLENBQUNKLFVBQVUsQ0FBQyxHQUFHQSxVQUFVLEdBQUdiLEdBQUc7TUFDMURjLFVBQVUsRUFBRUUsTUFBTSxDQUFDQyxRQUFRLENBQUNILFVBQVUsQ0FBQyxHQUFHQSxVQUFVLEdBQUdkLEdBQUc7TUFDMURlLFVBQVUsRUFBRUMsTUFBTSxDQUFDQyxRQUFRLENBQUNGLFVBQVUsQ0FBQyxHQUFHQSxVQUFVLEdBQUdmO0lBQ3pELENBQUM7RUFDSDtFQUVBLE9BQU8sSUFBSTtBQUNiO0FBRU8sSUFBTWtCLE1BQW9CLEdBQUFDLE9BQUEsQ0FBQUQsTUFBQSxHQUFHO0VBQ2xDRSxJQUFJLEVBQUUsUUFBUTtFQUNkckIsRUFBRSxFQUFGQSxFQUFFO0VBQ0ZJLFdBQVcsRUFBWEEsV0FBVztFQUNYa0IsTUFBTSxFQUFFO0lBQ04sd0JBQXdCO0VBVTFCO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
58
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImluZiIsIk1hdGgiLCJwb3ciLCJnZXRVbmlmb3JtcyIsIm9wdHMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJmaWx0ZXJNaW4xIiwiZmlsdGVyTWluMiIsImZpbHRlck1pbjMiLCJmaWx0ZXJNaW40IiwiZmlsdGVyTWF4MSIsImZpbHRlck1heDIiLCJmaWx0ZXJNYXgzIiwiZmlsdGVyTWF4NCIsIk51bWJlciIsImlzRmluaXRlIiwibWluMSIsIm1pbjIiLCJtaW4zIiwibWluNCIsIm1heDEiLCJtYXgyIiwibWF4MyIsIm1heDQiLCJmaWx0ZXIiLCJleHBvcnRzIiwibmFtZSIsInVuaWZvcm1UeXBlcyIsImluamVjdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9yYXN0ZXIvd2ViZ2wvY29sb3IvZmlsdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7R2V0VW5pZm9ybXNPdXRwdXQsIFNoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBmcyA9IGBcXFxudW5pZm9ybSBiYW5kRmlsdGVyVW5pZm9ybXMge1xuICBmbG9hdCBtaW4xO1xuICBmbG9hdCBtYXgxO1xuICBmbG9hdCBtaW4yO1xuICBmbG9hdCBtYXgyO1xuICBmbG9hdCBtaW4zO1xuICBmbG9hdCBtYXgzO1xuICBmbG9hdCBtaW40O1xuICBmbG9hdCBtYXg0O1xufSBiYW5kRmlsdGVyO1xuYDtcblxuLy8gWW91IGNhbid0IHBhc3MgSlMnIC1JbmZpbml0eSBvciBJbmZpbml0eSB0byBhIHNoYWRlciBhcyBhIHVuaWZvcm1cbmNvbnN0IGluZiA9IE1hdGgucG93KDIsIDYyKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmZ1bmN0aW9uIGdldFVuaWZvcm1zKFxuICBvcHRzOiB7XG4gICAgZmlsdGVyTWluMT86IG51bWJlcjtcbiAgICBmaWx0ZXJNaW4yPzogbnVtYmVyO1xuICAgIGZpbHRlck1pbjM/OiBudW1iZXI7XG4gICAgZmlsdGVyTWluND86IG51bWJlcjtcbiAgICBmaWx0ZXJNYXgxPzogbnVtYmVyO1xuICAgIGZpbHRlck1heDI/OiBudW1iZXI7XG4gICAgZmlsdGVyTWF4Mz86IG51bWJlcjtcbiAgICBmaWx0ZXJNYXg0PzogbnVtYmVyO1xuICB9ID0ge31cbik6IEdldFVuaWZvcm1zT3V0cHV0IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlck1pbjEsXG4gICAgZmlsdGVyTWluMixcbiAgICBmaWx0ZXJNaW4zLFxuICAgIGZpbHRlck1pbjQsXG4gICAgZmlsdGVyTWF4MSxcbiAgICBmaWx0ZXJNYXgyLFxuICAgIGZpbHRlck1heDMsXG4gICAgZmlsdGVyTWF4NFxuICB9ID0gb3B0cztcblxuICBpZiAoXG4gICAgTnVtYmVyLmlzRmluaXRlKGZpbHRlck1pbjEpIHx8XG4gICAgTnVtYmVyLmlzRmluaXRlKGZpbHRlck1pbjIpIHx8XG4gICAgTnVtYmVyLmlzRmluaXRlKGZpbHRlck1pbjMpIHx8XG4gICAgTnVtYmVyLmlzRmluaXRlKGZpbHRlck1pbjQpIHx8XG4gICAgTnVtYmVyLmlzRmluaXRlKGZpbHRlck1heDEpIHx8XG4gICAgTnVtYmVyLmlzRmluaXRlKGZpbHRlck1heDIpIHx8XG4gICAgTnVtYmVyLmlzRmluaXRlKGZpbHRlck1heDMpIHx8XG4gICAgTnVtYmVyLmlzRmluaXRlKGZpbHRlck1heDQpXG4gICkge1xuICAgIHJldHVybiB7XG4gICAgICBtaW4xOiBOdW1iZXIuaXNGaW5pdGUoZmlsdGVyTWluMSkgPyBmaWx0ZXJNaW4xIDogLWluZixcbiAgICAgIG1pbjI6IE51bWJlci5pc0Zpbml0ZShmaWx0ZXJNaW4yKSA/IGZpbHRlck1pbjIgOiAtaW5mLFxuICAgICAgbWluMzogTnVtYmVyLmlzRmluaXRlKGZpbHRlck1pbjMpID8gZmlsdGVyTWluMyA6IC1pbmYsXG4gICAgICBtaW40OiBOdW1iZXIuaXNGaW5pdGUoZmlsdGVyTWluNCkgPyBmaWx0ZXJNaW40IDogLWluZixcbiAgICAgIG1heDE6IE51bWJlci5pc0Zpbml0ZShmaWx0ZXJNYXgxKSA/IGZpbHRlck1heDEgOiBpbmYsXG4gICAgICBtYXgyOiBOdW1iZXIuaXNGaW5pdGUoZmlsdGVyTWF4MikgPyBmaWx0ZXJNYXgyIDogaW5mLFxuICAgICAgbWF4MzogTnVtYmVyLmlzRmluaXRlKGZpbHRlck1heDMpID8gZmlsdGVyTWF4MyA6IGluZixcbiAgICAgIG1heDQ6IE51bWJlci5pc0Zpbml0ZShmaWx0ZXJNYXg0KSA/IGZpbHRlck1heDQgOiBpbmZcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXI6IFNoYWRlck1vZHVsZSA9IHtcbiAgbmFtZTogJ2JhbmRGaWx0ZXInLFxuICBmcyxcbiAgdW5pZm9ybVR5cGVzOiB7XG4gICAgbWluMTogJ2YzMicsXG4gICAgbWF4MTogJ2YzMicsXG4gICAgbWluMjogJ2YzMicsXG4gICAgbWF4MjogJ2YzMicsXG4gICAgbWluMzogJ2YzMicsXG4gICAgbWF4MzogJ2YzMicsXG4gICAgbWluNDogJ2YzMicsXG4gICAgbWF4NDogJ2YzMidcbiAgfSxcbiAgZ2V0VW5pZm9ybXMsXG4gIGluamVjdDoge1xuICAgICdmczpERUNLR0xfTVVUQVRFX0NPTE9SJzogYFxuICAgIGlmIChpbWFnZS5yIDwgYmFuZEZpbHRlci5taW4xKSBkaXNjYXJkO1xuICAgIGlmIChpbWFnZS5nIDwgYmFuZEZpbHRlci5taW4yKSBkaXNjYXJkO1xuICAgIGlmIChpbWFnZS5iIDwgYmFuZEZpbHRlci5taW4zKSBkaXNjYXJkO1xuICAgIGlmIChpbWFnZS5hIDwgYmFuZEZpbHRlci5taW40KSBkaXNjYXJkO1xuICAgIGlmIChpbWFnZS5yID4gYmFuZEZpbHRlci5tYXgxKSBkaXNjYXJkO1xuICAgIGlmIChpbWFnZS5nID4gYmFuZEZpbHRlci5tYXgyKSBkaXNjYXJkO1xuICAgIGlmIChpbWFnZS5iID4gYmFuZEZpbHRlci5tYXgzKSBkaXNjYXJkO1xuICAgIGlmIChpbWFnZS5hID4gYmFuZEZpbHRlci5tYXg0KSBkaXNjYXJkO1xuICAgIGBcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7QUFJQSxJQUFNQSxFQUFFLDBLQVdQOztBQUVEO0FBQ0EsSUFBTUMsR0FBRyxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDOztBQUUzQjtBQUNBLFNBQVNDLFdBQVdBLENBQUEsRUFXQztFQUFBLElBVm5CQyxJQVNDLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUVOLElBQ0VHLFVBQVUsR0FRUkosSUFBSSxDQVJOSSxVQUFVO0lBQ1ZDLFVBQVUsR0FPUkwsSUFBSSxDQVBOSyxVQUFVO0lBQ1ZDLFVBQVUsR0FNUk4sSUFBSSxDQU5OTSxVQUFVO0lBQ1ZDLFVBQVUsR0FLUlAsSUFBSSxDQUxOTyxVQUFVO0lBQ1ZDLFVBQVUsR0FJUlIsSUFBSSxDQUpOUSxVQUFVO0lBQ1ZDLFVBQVUsR0FHUlQsSUFBSSxDQUhOUyxVQUFVO0lBQ1ZDLFVBQVUsR0FFUlYsSUFBSSxDQUZOVSxVQUFVO0lBQ1ZDLFVBQVUsR0FDUlgsSUFBSSxDQUROVyxVQUFVO0VBR1osSUFDRUMsTUFBTSxDQUFDQyxRQUFRLENBQUNULFVBQVUsQ0FBQyxJQUMzQlEsTUFBTSxDQUFDQyxRQUFRLENBQUNSLFVBQVUsQ0FBQyxJQUMzQk8sTUFBTSxDQUFDQyxRQUFRLENBQUNQLFVBQVUsQ0FBQyxJQUMzQk0sTUFBTSxDQUFDQyxRQUFRLENBQUNOLFVBQVUsQ0FBQyxJQUMzQkssTUFBTSxDQUFDQyxRQUFRLENBQUNMLFVBQVUsQ0FBQyxJQUMzQkksTUFBTSxDQUFDQyxRQUFRLENBQUNKLFVBQVUsQ0FBQyxJQUMzQkcsTUFBTSxDQUFDQyxRQUFRLENBQUNILFVBQVUsQ0FBQyxJQUMzQkUsTUFBTSxDQUFDQyxRQUFRLENBQUNGLFVBQVUsQ0FBQyxFQUMzQjtJQUNBLE9BQU87TUFDTEcsSUFBSSxFQUFFRixNQUFNLENBQUNDLFFBQVEsQ0FBQ1QsVUFBVSxDQUFDLEdBQUdBLFVBQVUsR0FBRyxDQUFDUixHQUFHO01BQ3JEbUIsSUFBSSxFQUFFSCxNQUFNLENBQUNDLFFBQVEsQ0FBQ1IsVUFBVSxDQUFDLEdBQUdBLFVBQVUsR0FBRyxDQUFDVCxHQUFHO01BQ3JEb0IsSUFBSSxFQUFFSixNQUFNLENBQUNDLFFBQVEsQ0FBQ1AsVUFBVSxDQUFDLEdBQUdBLFVBQVUsR0FBRyxDQUFDVixHQUFHO01BQ3JEcUIsSUFBSSxFQUFFTCxNQUFNLENBQUNDLFFBQVEsQ0FBQ04sVUFBVSxDQUFDLEdBQUdBLFVBQVUsR0FBRyxDQUFDWCxHQUFHO01BQ3JEc0IsSUFBSSxFQUFFTixNQUFNLENBQUNDLFFBQVEsQ0FBQ0wsVUFBVSxDQUFDLEdBQUdBLFVBQVUsR0FBR1osR0FBRztNQUNwRHVCLElBQUksRUFBRVAsTUFBTSxDQUFDQyxRQUFRLENBQUNKLFVBQVUsQ0FBQyxHQUFHQSxVQUFVLEdBQUdiLEdBQUc7TUFDcER3QixJQUFJLEVBQUVSLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSCxVQUFVLENBQUMsR0FBR0EsVUFBVSxHQUFHZCxHQUFHO01BQ3BEeUIsSUFBSSxFQUFFVCxNQUFNLENBQUNDLFFBQVEsQ0FBQ0YsVUFBVSxDQUFDLEdBQUdBLFVBQVUsR0FBR2Y7SUFDbkQsQ0FBQztFQUNIO0VBRUEsT0FBTyxJQUFJO0FBQ2I7QUFFTyxJQUFNMEIsTUFBb0IsR0FBQUMsT0FBQSxDQUFBRCxNQUFBLEdBQUc7RUFDbENFLElBQUksRUFBRSxZQUFZO0VBQ2xCN0IsRUFBRSxFQUFGQSxFQUFFO0VBQ0Y4QixZQUFZLEVBQUU7SUFDWlgsSUFBSSxFQUFFLEtBQUs7SUFDWEksSUFBSSxFQUFFLEtBQUs7SUFDWEgsSUFBSSxFQUFFLEtBQUs7SUFDWEksSUFBSSxFQUFFLEtBQUs7SUFDWEgsSUFBSSxFQUFFLEtBQUs7SUFDWEksSUFBSSxFQUFFLEtBQUs7SUFDWEgsSUFBSSxFQUFFLEtBQUs7SUFDWEksSUFBSSxFQUFFO0VBQ1IsQ0FBQztFQUNEdEIsV0FBVyxFQUFYQSxXQUFXO0VBQ1gyQixNQUFNLEVBQUU7SUFDTix3QkFBd0I7RUFVMUI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -23,7 +23,7 @@ exports.gammaContrast = void 0;
23
23
 
24
24
  // NOTE: Input array must have float values between 0 and 1!
25
25
  // NOTE: gamma must be >= 0
26
- var fs = "#define epsilon 0.00000001\n\nuniform float gamma1;\nuniform float gamma2;\nuniform float gamma3;\nuniform float gamma4;\n\nfloat gammaContrast(float arr, float g) {\n // Gamma must be > 0\n g = clamp(g, epsilon, g);\n\n return pow(arr, 1.0 / g);\n}\n\nvec4 gammaContrast(vec4 arr, float g1, float g2, float g3, float g4) {\n arr.r = gammaContrast(arr.r, g1);\n arr.g = gammaContrast(arr.g, g2);\n arr.b = gammaContrast(arr.b, g3);\n arr.a = gammaContrast(arr.a, g4);\n\n return arr;\n}\n";
26
+ var fs = "#define epsilon 0.00000001\n\nuniform gamma_contrastUniforms {\n float gamma1;\n float gamma2;\n float gamma3;\n float gamma4;\n} gamma_contrast;\n\nfloat gammaContrastCalc(float arr, float g) {\n // Gamma must be > 0\n g = clamp(g, epsilon, g);\n\n return pow(arr, 1.0 / g);\n}\n\nvec4 gammaContrastCalc(vec4 arr, float g1, float g2, float g3, float g4) {\n arr.r = gammaContrastCalc(arr.r, g1);\n arr.g = gammaContrastCalc(arr.g, g2);\n arr.b = gammaContrastCalc(arr.b, g3);\n arr.a = gammaContrastCalc(arr.a, g4);\n\n return arr;\n}\n";
27
27
  function getUniforms() {
28
28
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
29
29
  var gammaContrastValue = opts.gammaContrastValue,
@@ -54,9 +54,15 @@ function getUniforms() {
54
54
  var gammaContrast = exports.gammaContrast = {
55
55
  name: 'gamma_contrast',
56
56
  fs: fs,
57
+ uniformTypes: {
58
+ gamma1: 'f32',
59
+ gamma2: 'f32',
60
+ gamma3: 'f32',
61
+ gamma4: 'f32'
62
+ },
57
63
  getUniforms: getUniforms,
58
64
  inject: {
59
- 'fs:DECKGL_MUTATE_COLOR': "\n image = gammaContrast(image, gamma1, gamma2, gamma3, gamma4);\n "
65
+ 'fs:DECKGL_MUTATE_COLOR': "\n image = gammaContrastCalc(image, gamma_contrast.gamma1, gamma_contrast.gamma2, gamma_contrast.gamma3, gamma_contrast.gamma4);\n "
60
66
  }
61
67
  };
62
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImdhbW1hQ29udHJhc3RWYWx1ZSIsImdhbW1hQ29udHJhc3RWYWx1ZTEiLCJnYW1tYUNvbnRyYXN0VmFsdWUyIiwiZ2FtbWFDb250cmFzdFZhbHVlMyIsImdhbW1hQ29udHJhc3RWYWx1ZTQiLCJnYW1tYTEiLCJnYW1tYTIiLCJnYW1tYTMiLCJnYW1tYTQiLCJnYW1tYUNvbnRyYXN0IiwiZXhwb3J0cyIsIm5hbWUiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL2NvbG9yL2dhbW1hLWNvbnRyYXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7R2V0VW5pZm9ybXNPdXRwdXQsIFNoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyBHYW1tYSBjb3JyZWN0aW9uIGlzIGEgbm9ubGluZWFyIG9wZXJhdGlvbiB0aGF0XG4vLyBhZGp1c3RzIHRoZSBpbWFnZSdzIGNoYW5uZWwgdmFsdWVzIHBpeGVsLWJ5LXBpeGVsIGFjY29yZGluZ1xuLy8gdG8gYSBwb3dlci1sYXc6XG4vL1xuLy8gLi4gbWF0aDo6IHBpeGVsX3tvdXR9ID0gcGl4ZWxfe2lufSBeIHtnYW1tYX1cbi8vXG4vLyBTZXR0aW5nIGdhbW1hICg6bWF0aDpnYW1tYSkgdG8gYmUgbGVzcyB0aGFuIDEuMCBkYXJrZW5zIHRoZSBpbWFnZSBhbmRcbi8vIHNldHRpbmcgZ2FtbWEgdG8gYmUgZ3JlYXRlciB0aGFuIDEuMCBsaWdodGVucyBpdC5cblxuLy8gUGFyYW1ldGVyc1xuLy8gLS0tLS0tLS0tLVxuLy8gZ2FtbWEgKDptYXRoOmdhbW1hKTogZmxvYXRcbi8vICAgICBSZWFzb25hYmxlIHZhbHVlcyByYW5nZSBmcm9tIDAuOCB0byAyLjQuXG5cbi8vIE5PVEU6IElucHV0IGFycmF5IG11c3QgaGF2ZSBmbG9hdCB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAxIVxuLy8gTk9URTogZ2FtbWEgbXVzdCBiZSA+PSAwXG5jb25zdCBmcyA9IGBcXFxuI2RlZmluZSBlcHNpbG9uIDAuMDAwMDAwMDFcblxudW5pZm9ybSBmbG9hdCBnYW1tYTE7XG51bmlmb3JtIGZsb2F0IGdhbW1hMjtcbnVuaWZvcm0gZmxvYXQgZ2FtbWEzO1xudW5pZm9ybSBmbG9hdCBnYW1tYTQ7XG5cbmZsb2F0IGdhbW1hQ29udHJhc3QoZmxvYXQgYXJyLCBmbG9hdCBnKSB7XG4gIC8vIEdhbW1hIG11c3QgYmUgPiAwXG4gIGcgPSBjbGFtcChnLCBlcHNpbG9uLCBnKTtcblxuICByZXR1cm4gcG93KGFyciwgMS4wIC8gZyk7XG59XG5cbnZlYzQgZ2FtbWFDb250cmFzdCh2ZWM0IGFyciwgZmxvYXQgZzEsIGZsb2F0IGcyLCBmbG9hdCBnMywgZmxvYXQgZzQpIHtcbiAgYXJyLnIgPSBnYW1tYUNvbnRyYXN0KGFyci5yLCBnMSk7XG4gIGFyci5nID0gZ2FtbWFDb250cmFzdChhcnIuZywgZzIpO1xuICBhcnIuYiA9IGdhbW1hQ29udHJhc3QoYXJyLmIsIGczKTtcbiAgYXJyLmEgPSBnYW1tYUNvbnRyYXN0KGFyci5hLCBnNCk7XG5cbiAgcmV0dXJuIGFycjtcbn1cbmA7XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKFxuICBvcHRzOiB7XG4gICAgZ2FtbWFDb250cmFzdFZhbHVlPzogbnVtYmVyO1xuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTE/OiBudW1iZXI7XG4gICAgZ2FtbWFDb250cmFzdFZhbHVlMj86IG51bWJlcjtcbiAgICBnYW1tYUNvbnRyYXN0VmFsdWUzPzogbnVtYmVyO1xuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTQ/OiBudW1iZXI7XG4gIH0gPSB7fVxuKTogR2V0VW5pZm9ybXNPdXRwdXQge1xuICBjb25zdCB7XG4gICAgZ2FtbWFDb250cmFzdFZhbHVlLFxuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTEsXG4gICAgZ2FtbWFDb250cmFzdFZhbHVlMixcbiAgICBnYW1tYUNvbnRyYXN0VmFsdWUzLFxuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTRcbiAgfSA9IG9wdHM7XG5cbiAgLy8gR2FtbWEgbXVzdCBiZSA+IDAsIHNvIG5vdCB1c2luZyBOdW1iZXIuaXNGaW5pdGUgaXMgZmluZVxuXG4gIGlmIChnYW1tYUNvbnRyYXN0VmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2FtbWExOiBnYW1tYUNvbnRyYXN0VmFsdWUsXG4gICAgICBnYW1tYTI6IGdhbW1hQ29udHJhc3RWYWx1ZSxcbiAgICAgIGdhbW1hMzogZ2FtbWFDb250cmFzdFZhbHVlLFxuICAgICAgZ2FtbWE0OiBnYW1tYUNvbnRyYXN0VmFsdWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKFxuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTEgfHxcbiAgICBnYW1tYUNvbnRyYXN0VmFsdWUyIHx8XG4gICAgZ2FtbWFDb250cmFzdFZhbHVlMyB8fFxuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTRcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdhbW1hMTogZ2FtbWFDb250cmFzdFZhbHVlMSB8fCAxLFxuICAgICAgZ2FtbWEyOiBnYW1tYUNvbnRyYXN0VmFsdWUyIHx8IDEsXG4gICAgICBnYW1tYTM6IGdhbW1hQ29udHJhc3RWYWx1ZTMgfHwgMSxcbiAgICAgIGdhbW1hNDogZ2FtbWFDb250cmFzdFZhbHVlNCB8fCAxXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgY29uc3QgZ2FtbWFDb250cmFzdDogU2hhZGVyTW9kdWxlID0ge1xuICBuYW1lOiAnZ2FtbWFfY29udHJhc3QnLFxuICBmcyxcbiAgZ2V0VW5pZm9ybXMsXG4gIGluamVjdDoge1xuICAgICdmczpERUNLR0xfTVVUQVRFX0NPTE9SJzogYFxuICAgIGltYWdlID0gZ2FtbWFDb250cmFzdChpbWFnZSwgZ2FtbWExLCBnYW1tYTIsIGdhbW1hMywgZ2FtbWE0KTtcbiAgICBgXG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBTUEsRUFBRSxxZkF1QlA7QUFFRCxTQUFTQyxXQUFXQSxDQUFBLEVBUUM7RUFBQSxJQVBuQkMsSUFNQyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFFTixJQUNFRyxrQkFBa0IsR0FLaEJKLElBQUksQ0FMTkksa0JBQWtCO0lBQ2xCQyxtQkFBbUIsR0FJakJMLElBQUksQ0FKTkssbUJBQW1CO0lBQ25CQyxtQkFBbUIsR0FHakJOLElBQUksQ0FITk0sbUJBQW1CO0lBQ25CQyxtQkFBbUIsR0FFakJQLElBQUksQ0FGTk8sbUJBQW1CO0lBQ25CQyxtQkFBbUIsR0FDakJSLElBQUksQ0FETlEsbUJBQW1COztFQUdyQjs7RUFFQSxJQUFJSixrQkFBa0IsRUFBRTtJQUN0QixPQUFPO01BQ0xLLE1BQU0sRUFBRUwsa0JBQWtCO01BQzFCTSxNQUFNLEVBQUVOLGtCQUFrQjtNQUMxQk8sTUFBTSxFQUFFUCxrQkFBa0I7TUFDMUJRLE1BQU0sRUFBRVI7SUFDVixDQUFDO0VBQ0gsQ0FBQyxNQUFNLElBQ0xDLG1CQUFtQixJQUNuQkMsbUJBQW1CLElBQ25CQyxtQkFBbUIsSUFDbkJDLG1CQUFtQixFQUNuQjtJQUNBLE9BQU87TUFDTEMsTUFBTSxFQUFFSixtQkFBbUIsSUFBSSxDQUFDO01BQ2hDSyxNQUFNLEVBQUVKLG1CQUFtQixJQUFJLENBQUM7TUFDaENLLE1BQU0sRUFBRUosbUJBQW1CLElBQUksQ0FBQztNQUNoQ0ssTUFBTSxFQUFFSixtQkFBbUIsSUFBSTtJQUNqQyxDQUFDO0VBQ0g7RUFFQSxPQUFPLElBQUk7QUFDYjtBQUVPLElBQU1LLGFBQTJCLEdBQUFDLE9BQUEsQ0FBQUQsYUFBQSxHQUFHO0VBQ3pDRSxJQUFJLEVBQUUsZ0JBQWdCO0VBQ3RCakIsRUFBRSxFQUFGQSxFQUFFO0VBQ0ZDLFdBQVcsRUFBWEEsV0FBVztFQUNYaUIsTUFBTSxFQUFFO0lBQ04sd0JBQXdCO0VBRzFCO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImdhbW1hQ29udHJhc3RWYWx1ZSIsImdhbW1hQ29udHJhc3RWYWx1ZTEiLCJnYW1tYUNvbnRyYXN0VmFsdWUyIiwiZ2FtbWFDb250cmFzdFZhbHVlMyIsImdhbW1hQ29udHJhc3RWYWx1ZTQiLCJnYW1tYTEiLCJnYW1tYTIiLCJnYW1tYTMiLCJnYW1tYTQiLCJnYW1tYUNvbnRyYXN0IiwiZXhwb3J0cyIsIm5hbWUiLCJ1bmlmb3JtVHlwZXMiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL2NvbG9yL2dhbW1hLWNvbnRyYXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7R2V0VW5pZm9ybXNPdXRwdXQsIFNoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyBHYW1tYSBjb3JyZWN0aW9uIGlzIGEgbm9ubGluZWFyIG9wZXJhdGlvbiB0aGF0XG4vLyBhZGp1c3RzIHRoZSBpbWFnZSdzIGNoYW5uZWwgdmFsdWVzIHBpeGVsLWJ5LXBpeGVsIGFjY29yZGluZ1xuLy8gdG8gYSBwb3dlci1sYXc6XG4vL1xuLy8gLi4gbWF0aDo6IHBpeGVsX3tvdXR9ID0gcGl4ZWxfe2lufSBeIHtnYW1tYX1cbi8vXG4vLyBTZXR0aW5nIGdhbW1hICg6bWF0aDpnYW1tYSkgdG8gYmUgbGVzcyB0aGFuIDEuMCBkYXJrZW5zIHRoZSBpbWFnZSBhbmRcbi8vIHNldHRpbmcgZ2FtbWEgdG8gYmUgZ3JlYXRlciB0aGFuIDEuMCBsaWdodGVucyBpdC5cblxuLy8gUGFyYW1ldGVyc1xuLy8gLS0tLS0tLS0tLVxuLy8gZ2FtbWEgKDptYXRoOmdhbW1hKTogZmxvYXRcbi8vICAgICBSZWFzb25hYmxlIHZhbHVlcyByYW5nZSBmcm9tIDAuOCB0byAyLjQuXG5cbi8vIE5PVEU6IElucHV0IGFycmF5IG11c3QgaGF2ZSBmbG9hdCB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAxIVxuLy8gTk9URTogZ2FtbWEgbXVzdCBiZSA+PSAwXG5jb25zdCBmcyA9IGBcXFxuI2RlZmluZSBlcHNpbG9uIDAuMDAwMDAwMDFcblxudW5pZm9ybSBnYW1tYV9jb250cmFzdFVuaWZvcm1zIHtcbiAgZmxvYXQgZ2FtbWExO1xuICBmbG9hdCBnYW1tYTI7XG4gIGZsb2F0IGdhbW1hMztcbiAgZmxvYXQgZ2FtbWE0O1xufSBnYW1tYV9jb250cmFzdDtcblxuZmxvYXQgZ2FtbWFDb250cmFzdENhbGMoZmxvYXQgYXJyLCBmbG9hdCBnKSB7XG4gIC8vIEdhbW1hIG11c3QgYmUgPiAwXG4gIGcgPSBjbGFtcChnLCBlcHNpbG9uLCBnKTtcblxuICByZXR1cm4gcG93KGFyciwgMS4wIC8gZyk7XG59XG5cbnZlYzQgZ2FtbWFDb250cmFzdENhbGModmVjNCBhcnIsIGZsb2F0IGcxLCBmbG9hdCBnMiwgZmxvYXQgZzMsIGZsb2F0IGc0KSB7XG4gIGFyci5yID0gZ2FtbWFDb250cmFzdENhbGMoYXJyLnIsIGcxKTtcbiAgYXJyLmcgPSBnYW1tYUNvbnRyYXN0Q2FsYyhhcnIuZywgZzIpO1xuICBhcnIuYiA9IGdhbW1hQ29udHJhc3RDYWxjKGFyci5iLCBnMyk7XG4gIGFyci5hID0gZ2FtbWFDb250cmFzdENhbGMoYXJyLmEsIGc0KTtcblxuICByZXR1cm4gYXJyO1xufVxuYDtcblxuZnVuY3Rpb24gZ2V0VW5pZm9ybXMoXG4gIG9wdHM6IHtcbiAgICBnYW1tYUNvbnRyYXN0VmFsdWU/OiBudW1iZXI7XG4gICAgZ2FtbWFDb250cmFzdFZhbHVlMT86IG51bWJlcjtcbiAgICBnYW1tYUNvbnRyYXN0VmFsdWUyPzogbnVtYmVyO1xuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTM/OiBudW1iZXI7XG4gICAgZ2FtbWFDb250cmFzdFZhbHVlND86IG51bWJlcjtcbiAgfSA9IHt9XG4pOiBHZXRVbmlmb3Jtc091dHB1dCB7XG4gIGNvbnN0IHtcbiAgICBnYW1tYUNvbnRyYXN0VmFsdWUsXG4gICAgZ2FtbWFDb250cmFzdFZhbHVlMSxcbiAgICBnYW1tYUNvbnRyYXN0VmFsdWUyLFxuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTMsXG4gICAgZ2FtbWFDb250cmFzdFZhbHVlNFxuICB9ID0gb3B0cztcblxuICAvLyBHYW1tYSBtdXN0IGJlID4gMCwgc28gbm90IHVzaW5nIE51bWJlci5pc0Zpbml0ZSBpcyBmaW5lXG5cbiAgaWYgKGdhbW1hQ29udHJhc3RWYWx1ZSkge1xuICAgIHJldHVybiB7XG4gICAgICBnYW1tYTE6IGdhbW1hQ29udHJhc3RWYWx1ZSxcbiAgICAgIGdhbW1hMjogZ2FtbWFDb250cmFzdFZhbHVlLFxuICAgICAgZ2FtbWEzOiBnYW1tYUNvbnRyYXN0VmFsdWUsXG4gICAgICBnYW1tYTQ6IGdhbW1hQ29udHJhc3RWYWx1ZVxuICAgIH07XG4gIH0gZWxzZSBpZiAoXG4gICAgZ2FtbWFDb250cmFzdFZhbHVlMSB8fFxuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTIgfHxcbiAgICBnYW1tYUNvbnRyYXN0VmFsdWUzIHx8XG4gICAgZ2FtbWFDb250cmFzdFZhbHVlNFxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2FtbWExOiBnYW1tYUNvbnRyYXN0VmFsdWUxIHx8IDEsXG4gICAgICBnYW1tYTI6IGdhbW1hQ29udHJhc3RWYWx1ZTIgfHwgMSxcbiAgICAgIGdhbW1hMzogZ2FtbWFDb250cmFzdFZhbHVlMyB8fCAxLFxuICAgICAgZ2FtbWE0OiBnYW1tYUNvbnRyYXN0VmFsdWU0IHx8IDFcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBnYW1tYUNvbnRyYXN0OiBTaGFkZXJNb2R1bGUgPSB7XG4gIG5hbWU6ICdnYW1tYV9jb250cmFzdCcsXG4gIGZzLFxuICB1bmlmb3JtVHlwZXM6IHtcbiAgICBnYW1tYTE6ICdmMzInLFxuICAgIGdhbW1hMjogJ2YzMicsXG4gICAgZ2FtbWEzOiAnZjMyJyxcbiAgICBnYW1tYTQ6ICdmMzInXG4gIH0sXG4gIGdldFVuaWZvcm1zLFxuICBpbmplY3Q6IHtcbiAgICAnZnM6REVDS0dMX01VVEFURV9DT0xPUic6IGBcbiAgICBpbWFnZSA9IGdhbW1hQ29udHJhc3RDYWxjKGltYWdlLCBnYW1tYV9jb250cmFzdC5nYW1tYTEsIGdhbW1hX2NvbnRyYXN0LmdhbW1hMiwgZ2FtbWFfY29udHJhc3QuZ2FtbWEzLCBnYW1tYV9jb250cmFzdC5nYW1tYTQpO1xuICAgIGBcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFNQSxFQUFFLDBpQkF5QlA7QUFFRCxTQUFTQyxXQUFXQSxDQUFBLEVBUUM7RUFBQSxJQVBuQkMsSUFNQyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFFTixJQUNFRyxrQkFBa0IsR0FLaEJKLElBQUksQ0FMTkksa0JBQWtCO0lBQ2xCQyxtQkFBbUIsR0FJakJMLElBQUksQ0FKTkssbUJBQW1CO0lBQ25CQyxtQkFBbUIsR0FHakJOLElBQUksQ0FITk0sbUJBQW1CO0lBQ25CQyxtQkFBbUIsR0FFakJQLElBQUksQ0FGTk8sbUJBQW1CO0lBQ25CQyxtQkFBbUIsR0FDakJSLElBQUksQ0FETlEsbUJBQW1COztFQUdyQjs7RUFFQSxJQUFJSixrQkFBa0IsRUFBRTtJQUN0QixPQUFPO01BQ0xLLE1BQU0sRUFBRUwsa0JBQWtCO01BQzFCTSxNQUFNLEVBQUVOLGtCQUFrQjtNQUMxQk8sTUFBTSxFQUFFUCxrQkFBa0I7TUFDMUJRLE1BQU0sRUFBRVI7SUFDVixDQUFDO0VBQ0gsQ0FBQyxNQUFNLElBQ0xDLG1CQUFtQixJQUNuQkMsbUJBQW1CLElBQ25CQyxtQkFBbUIsSUFDbkJDLG1CQUFtQixFQUNuQjtJQUNBLE9BQU87TUFDTEMsTUFBTSxFQUFFSixtQkFBbUIsSUFBSSxDQUFDO01BQ2hDSyxNQUFNLEVBQUVKLG1CQUFtQixJQUFJLENBQUM7TUFDaENLLE1BQU0sRUFBRUosbUJBQW1CLElBQUksQ0FBQztNQUNoQ0ssTUFBTSxFQUFFSixtQkFBbUIsSUFBSTtJQUNqQyxDQUFDO0VBQ0g7RUFFQSxPQUFPLElBQUk7QUFDYjtBQUVPLElBQU1LLGFBQTJCLEdBQUFDLE9BQUEsQ0FBQUQsYUFBQSxHQUFHO0VBQ3pDRSxJQUFJLEVBQUUsZ0JBQWdCO0VBQ3RCakIsRUFBRSxFQUFGQSxFQUFFO0VBQ0ZrQixZQUFZLEVBQUU7SUFDWlAsTUFBTSxFQUFFLEtBQUs7SUFDYkMsTUFBTSxFQUFFLEtBQUs7SUFDYkMsTUFBTSxFQUFFLEtBQUs7SUFDYkMsTUFBTSxFQUFFO0VBQ1YsQ0FBQztFQUNEYixXQUFXLEVBQVhBLFdBQVc7RUFDWGtCLE1BQU0sRUFBRTtJQUNOLHdCQUF3QjtFQUcxQjtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -7,7 +7,7 @@ exports.linearRescale = void 0;
7
7
  // SPDX-License-Identifier: MIT
8
8
  // Copyright contributors to the kepler.gl project
9
9
 
10
- var fs = "uniform float linearRescaleScaler;\nuniform float linearRescaleOffset;\n\n// Perform a linear rescaling of image\nvec4 linear_rescale(vec4 arr, float scaler, float offset) {\n return arr * scaler + offset;\n}\n";
10
+ var fs = "uniform linear_rescaleUniforms {\n float scaler;\n float offset;\n} linear_rescale;\n\n// Perform a linear rescaling of image\nvec4 linear_rescale_fn(vec4 arr, float scaler, float offset) {\n return arr * scaler + offset;\n}\n";
11
11
  function getUniforms() {
12
12
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
13
13
  var linearRescaleScaler = opts.linearRescaleScaler,
@@ -16,16 +16,20 @@ function getUniforms() {
16
16
  return null;
17
17
  }
18
18
  return {
19
- linearRescaleScaler: Number.isFinite(linearRescaleScaler) ? linearRescaleScaler : 1,
20
- linearRescaleOffset: Number.isFinite(linearRescaleOffset) ? linearRescaleOffset : 0
19
+ scaler: Number.isFinite(linearRescaleScaler) ? linearRescaleScaler : 1,
20
+ offset: Number.isFinite(linearRescaleOffset) ? linearRescaleOffset : 0
21
21
  };
22
22
  }
23
23
  var linearRescale = exports.linearRescale = {
24
24
  name: 'linear_rescale',
25
25
  fs: fs,
26
+ uniformTypes: {
27
+ scaler: 'f32',
28
+ offset: 'f32'
29
+ },
26
30
  getUniforms: getUniforms,
27
31
  inject: {
28
- 'fs:DECKGL_MUTATE_COLOR': "\n image = linear_rescale(image, linearRescaleScaler, linearRescaleOffset);\n "
32
+ 'fs:DECKGL_MUTATE_COLOR': "\n image = linear_rescale_fn(image, linear_rescale.scaler, linear_rescale.offset);\n "
29
33
  }
30
34
  };
31
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImxpbmVhclJlc2NhbGVTY2FsZXIiLCJsaW5lYXJSZXNjYWxlT2Zmc2V0IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJsaW5lYXJSZXNjYWxlIiwiZXhwb3J0cyIsIm5hbWUiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL2NvbG9yL2xpbmVhci1yZXNjYWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7R2V0VW5pZm9ybXNPdXRwdXQsIFNoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBmcyA9IGBcXFxudW5pZm9ybSBmbG9hdCBsaW5lYXJSZXNjYWxlU2NhbGVyO1xudW5pZm9ybSBmbG9hdCBsaW5lYXJSZXNjYWxlT2Zmc2V0O1xuXG4vLyBQZXJmb3JtIGEgbGluZWFyIHJlc2NhbGluZyBvZiBpbWFnZVxudmVjNCBsaW5lYXJfcmVzY2FsZSh2ZWM0IGFyciwgZmxvYXQgc2NhbGVyLCBmbG9hdCBvZmZzZXQpIHtcbiAgcmV0dXJuIGFyciAqIHNjYWxlciArIG9mZnNldDtcbn1cbmA7XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKFxuICBvcHRzOiB7bGluZWFyUmVzY2FsZVNjYWxlcj86IG51bWJlcjsgbGluZWFyUmVzY2FsZU9mZnNldD86IG51bWJlcn0gPSB7fVxuKTogR2V0VW5pZm9ybXNPdXRwdXQge1xuICBjb25zdCB7bGluZWFyUmVzY2FsZVNjYWxlciwgbGluZWFyUmVzY2FsZU9mZnNldH0gPSBvcHRzO1xuXG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGxpbmVhclJlc2NhbGVTY2FsZXIpICYmICFOdW1iZXIuaXNGaW5pdGUobGluZWFyUmVzY2FsZU9mZnNldCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbGluZWFyUmVzY2FsZVNjYWxlcjogTnVtYmVyLmlzRmluaXRlKGxpbmVhclJlc2NhbGVTY2FsZXIpID8gbGluZWFyUmVzY2FsZVNjYWxlciA6IDEsXG4gICAgbGluZWFyUmVzY2FsZU9mZnNldDogTnVtYmVyLmlzRmluaXRlKGxpbmVhclJlc2NhbGVPZmZzZXQpID8gbGluZWFyUmVzY2FsZU9mZnNldCA6IDBcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGxpbmVhclJlc2NhbGU6IFNoYWRlck1vZHVsZSA9IHtcbiAgbmFtZTogJ2xpbmVhcl9yZXNjYWxlJyxcbiAgZnMsXG4gIGdldFVuaWZvcm1zLFxuICBpbmplY3Q6IHtcbiAgICAnZnM6REVDS0dMX01VVEFURV9DT0xPUic6IGBcbiAgICBpbWFnZSA9IGxpbmVhcl9yZXNjYWxlKGltYWdlLCBsaW5lYXJSZXNjYWxlU2NhbGVyLCBsaW5lYXJSZXNjYWxlT2Zmc2V0KTtcbiAgICBgXG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7O0FBSUEsSUFBTUEsRUFBRSx3TkFRUDtBQUVELFNBQVNDLFdBQVdBLENBQUEsRUFFQztFQUFBLElBRG5CQyxJQUFrRSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFFdkUsSUFBT0csbUJBQW1CLEdBQXlCSixJQUFJLENBQWhESSxtQkFBbUI7SUFBRUMsbUJBQW1CLEdBQUlMLElBQUksQ0FBM0JLLG1CQUFtQjtFQUUvQyxJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSCxtQkFBbUIsQ0FBQyxJQUFJLENBQUNFLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDRixtQkFBbUIsQ0FBQyxFQUFFO0lBQ2xGLE9BQU8sSUFBSTtFQUNiO0VBRUEsT0FBTztJQUNMRCxtQkFBbUIsRUFBRUUsTUFBTSxDQUFDQyxRQUFRLENBQUNILG1CQUFtQixDQUFDLEdBQUdBLG1CQUFtQixHQUFHLENBQUM7SUFDbkZDLG1CQUFtQixFQUFFQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0YsbUJBQW1CLENBQUMsR0FBR0EsbUJBQW1CLEdBQUc7RUFDcEYsQ0FBQztBQUNIO0FBRU8sSUFBTUcsYUFBMkIsR0FBQUMsT0FBQSxDQUFBRCxhQUFBLEdBQUc7RUFDekNFLElBQUksRUFBRSxnQkFBZ0I7RUFDdEJaLEVBQUUsRUFBRkEsRUFBRTtFQUNGQyxXQUFXLEVBQVhBLFdBQVc7RUFDWFksTUFBTSxFQUFFO0lBQ04sd0JBQXdCO0VBRzFCO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImxpbmVhclJlc2NhbGVTY2FsZXIiLCJsaW5lYXJSZXNjYWxlT2Zmc2V0IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJzY2FsZXIiLCJvZmZzZXQiLCJsaW5lYXJSZXNjYWxlIiwiZXhwb3J0cyIsIm5hbWUiLCJ1bmlmb3JtVHlwZXMiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL2NvbG9yL2xpbmVhci1yZXNjYWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7R2V0VW5pZm9ybXNPdXRwdXQsIFNoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBmcyA9IGBcXFxudW5pZm9ybSBsaW5lYXJfcmVzY2FsZVVuaWZvcm1zIHtcbiAgZmxvYXQgc2NhbGVyO1xuICBmbG9hdCBvZmZzZXQ7XG59IGxpbmVhcl9yZXNjYWxlO1xuXG4vLyBQZXJmb3JtIGEgbGluZWFyIHJlc2NhbGluZyBvZiBpbWFnZVxudmVjNCBsaW5lYXJfcmVzY2FsZV9mbih2ZWM0IGFyciwgZmxvYXQgc2NhbGVyLCBmbG9hdCBvZmZzZXQpIHtcbiAgcmV0dXJuIGFyciAqIHNjYWxlciArIG9mZnNldDtcbn1cbmA7XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKFxuICBvcHRzOiB7bGluZWFyUmVzY2FsZVNjYWxlcj86IG51bWJlcjsgbGluZWFyUmVzY2FsZU9mZnNldD86IG51bWJlcn0gPSB7fVxuKTogR2V0VW5pZm9ybXNPdXRwdXQge1xuICBjb25zdCB7bGluZWFyUmVzY2FsZVNjYWxlciwgbGluZWFyUmVzY2FsZU9mZnNldH0gPSBvcHRzO1xuXG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGxpbmVhclJlc2NhbGVTY2FsZXIpICYmICFOdW1iZXIuaXNGaW5pdGUobGluZWFyUmVzY2FsZU9mZnNldCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2NhbGVyOiBOdW1iZXIuaXNGaW5pdGUobGluZWFyUmVzY2FsZVNjYWxlcikgPyBsaW5lYXJSZXNjYWxlU2NhbGVyIDogMSxcbiAgICBvZmZzZXQ6IE51bWJlci5pc0Zpbml0ZShsaW5lYXJSZXNjYWxlT2Zmc2V0KSA/IGxpbmVhclJlc2NhbGVPZmZzZXQgOiAwXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBsaW5lYXJSZXNjYWxlOiBTaGFkZXJNb2R1bGUgPSB7XG4gIG5hbWU6ICdsaW5lYXJfcmVzY2FsZScsXG4gIGZzLFxuICB1bmlmb3JtVHlwZXM6IHtcbiAgICBzY2FsZXI6ICdmMzInLFxuICAgIG9mZnNldDogJ2YzMidcbiAgfSxcbiAgZ2V0VW5pZm9ybXMsXG4gIGluamVjdDoge1xuICAgICdmczpERUNLR0xfTVVUQVRFX0NPTE9SJzogYFxuICAgIGltYWdlID0gbGluZWFyX3Jlc2NhbGVfZm4oaW1hZ2UsIGxpbmVhcl9yZXNjYWxlLnNjYWxlciwgbGluZWFyX3Jlc2NhbGUub2Zmc2V0KTtcbiAgICBgXG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7O0FBSUEsSUFBTUEsRUFBRSwwT0FVUDtBQUVELFNBQVNDLFdBQVdBLENBQUEsRUFFQztFQUFBLElBRG5CQyxJQUFrRSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFFdkUsSUFBT0csbUJBQW1CLEdBQXlCSixJQUFJLENBQWhESSxtQkFBbUI7SUFBRUMsbUJBQW1CLEdBQUlMLElBQUksQ0FBM0JLLG1CQUFtQjtFQUUvQyxJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSCxtQkFBbUIsQ0FBQyxJQUFJLENBQUNFLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDRixtQkFBbUIsQ0FBQyxFQUFFO0lBQ2xGLE9BQU8sSUFBSTtFQUNiO0VBRUEsT0FBTztJQUNMRyxNQUFNLEVBQUVGLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSCxtQkFBbUIsQ0FBQyxHQUFHQSxtQkFBbUIsR0FBRyxDQUFDO0lBQ3RFSyxNQUFNLEVBQUVILE1BQU0sQ0FBQ0MsUUFBUSxDQUFDRixtQkFBbUIsQ0FBQyxHQUFHQSxtQkFBbUIsR0FBRztFQUN2RSxDQUFDO0FBQ0g7QUFFTyxJQUFNSyxhQUEyQixHQUFBQyxPQUFBLENBQUFELGFBQUEsR0FBRztFQUN6Q0UsSUFBSSxFQUFFLGdCQUFnQjtFQUN0QmQsRUFBRSxFQUFGQSxFQUFFO0VBQ0ZlLFlBQVksRUFBRTtJQUNaTCxNQUFNLEVBQUUsS0FBSztJQUNiQyxNQUFNLEVBQUU7RUFDVixDQUFDO0VBQ0RWLFdBQVcsRUFBWEEsV0FBVztFQUNYZSxNQUFNLEVBQUU7SUFDTix3QkFBd0I7RUFHMUI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -17,7 +17,7 @@ exports.saturation = void 0;
17
17
  *
18
18
  * @returns {vec3} The color with the saturation adjusted.
19
19
  */
20
- var fs = "uniform float uSaturationValue;\nvec3 saturate(vec3 rgb, float adjustment) {\n // Algorithm from Chapter 16 of OpenGL Shading Language\n const vec3 W = vec3(0.2125, 0.7154, 0.0721);\n vec3 intensity = vec3(dot(rgb, W));\n return mix(intensity, rgb, adjustment);\n}\n";
20
+ var fs = "uniform saturationUniforms {\n float value;\n} saturation;\n\nvec3 saturate(vec3 rgb, float adjustment) {\n // Algorithm from Chapter 16 of OpenGL Shading Language\n const vec3 W = vec3(0.2125, 0.7154, 0.0721);\n vec3 intensity = vec3(dot(rgb, W));\n return mix(intensity, rgb, adjustment);\n}\n";
21
21
  function getUniforms() {
22
22
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
23
23
  var saturationValue = opts.saturationValue;
@@ -25,15 +25,18 @@ function getUniforms() {
25
25
  return null;
26
26
  }
27
27
  return {
28
- uSaturationValue: Number.isFinite(saturationValue) ? saturationValue : 1
28
+ value: Number.isFinite(saturationValue) ? saturationValue : 1
29
29
  };
30
30
  }
31
31
  var saturation = exports.saturation = {
32
32
  name: 'saturation',
33
33
  fs: fs,
34
+ uniformTypes: {
35
+ value: 'f32'
36
+ },
34
37
  getUniforms: getUniforms,
35
38
  inject: {
36
- 'fs:DECKGL_MUTATE_COLOR': "\n image = vec4(saturate(image.rgb, uSaturationValue), image.a);\n "
39
+ 'fs:DECKGL_MUTATE_COLOR': "\n image = vec4(saturate(image.rgb, saturation.value), image.a);\n "
37
40
  }
38
41
  };
39
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInNhdHVyYXRpb25WYWx1ZSIsInVTYXR1cmF0aW9uVmFsdWUiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInNhdHVyYXRpb24iLCJleHBvcnRzIiwibmFtZSIsImluamVjdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9yYXN0ZXIvd2ViZ2wvY29sb3Ivc2F0dXJhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0dldFVuaWZvcm1zT3V0cHV0LCBTaGFkZXJNb2R1bGV9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBBZGp1c3RzIHRoZSBzYXR1cmF0aW9uIG9mIGEgY29sb3IuXG4gKiBGcm9tIGNlc2l1bTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9DZXNpdW1HUy9jZXNpdW0vYmxvYi9tYXN0ZXIvU291cmNlL1NoYWRlcnMvQnVpbHRpbi9GdW5jdGlvbnMvc2F0dXJhdGlvbi5nbHNsXG4gKlxuICogQHBhcmFtIHt2ZWMzfSByZ2IgVGhlIGNvbG9yLlxuICogQHBhcmFtIHtmbG9hdH0gYWRqdXN0bWVudCBUaGUgYW1vdW50IHRvIGFkanVzdCB0aGUgc2F0dXJhdGlvbiBvZiB0aGUgY29sb3IuIFVzdWFsbHkgYmV0d2VlbiAwIGFuZCAyLlxuICpcbiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3Igd2l0aCB0aGUgc2F0dXJhdGlvbiBhZGp1c3RlZC5cbiAqL1xuY29uc3QgZnMgPSBgXFxcbnVuaWZvcm0gZmxvYXQgdVNhdHVyYXRpb25WYWx1ZTtcbnZlYzMgc2F0dXJhdGUodmVjMyByZ2IsIGZsb2F0IGFkanVzdG1lbnQpIHtcbiAgICAvLyBBbGdvcml0aG0gZnJvbSBDaGFwdGVyIDE2IG9mIE9wZW5HTCBTaGFkaW5nIExhbmd1YWdlXG4gICAgY29uc3QgdmVjMyBXID0gdmVjMygwLjIxMjUsIDAuNzE1NCwgMC4wNzIxKTtcbiAgICB2ZWMzIGludGVuc2l0eSA9IHZlYzMoZG90KHJnYiwgVykpO1xuICAgIHJldHVybiBtaXgoaW50ZW5zaXR5LCByZ2IsIGFkanVzdG1lbnQpO1xufVxuYDtcblxuZnVuY3Rpb24gZ2V0VW5pZm9ybXMob3B0czoge3NhdHVyYXRpb25WYWx1ZT86IG51bWJlcn0gPSB7fSk6IEdldFVuaWZvcm1zT3V0cHV0IHtcbiAgY29uc3Qge3NhdHVyYXRpb25WYWx1ZX0gPSBvcHRzO1xuXG4gIGlmICghc2F0dXJhdGlvblZhbHVlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHVTYXR1cmF0aW9uVmFsdWU6IE51bWJlci5pc0Zpbml0ZShzYXR1cmF0aW9uVmFsdWUpID8gc2F0dXJhdGlvblZhbHVlIDogMVxuICB9O1xufVxuXG5leHBvcnQgY29uc3Qgc2F0dXJhdGlvbjogU2hhZGVyTW9kdWxlID0ge1xuICBuYW1lOiAnc2F0dXJhdGlvbicsXG4gIGZzLFxuICBnZXRVbmlmb3JtcyxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9NVVRBVEVfQ09MT1InOiBgXG4gICAgaW1hZ2UgPSB2ZWM0KHNhdHVyYXRlKGltYWdlLnJnYiwgdVNhdHVyYXRpb25WYWx1ZSksIGltYWdlLmEpO1xuICAgIGBcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1BLEVBQUUsMlJBUVA7QUFFRCxTQUFTQyxXQUFXQSxDQUFBLEVBQTJEO0VBQUEsSUFBMURDLElBQWdDLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUN4RCxJQUFPRyxlQUFlLEdBQUlKLElBQUksQ0FBdkJJLGVBQWU7RUFFdEIsSUFBSSxDQUFDQSxlQUFlLEVBQUU7SUFDcEIsT0FBTyxJQUFJO0VBQ2I7RUFFQSxPQUFPO0lBQ0xDLGdCQUFnQixFQUFFQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0gsZUFBZSxDQUFDLEdBQUdBLGVBQWUsR0FBRztFQUN6RSxDQUFDO0FBQ0g7QUFFTyxJQUFNSSxVQUF3QixHQUFBQyxPQUFBLENBQUFELFVBQUEsR0FBRztFQUN0Q0UsSUFBSSxFQUFFLFlBQVk7RUFDbEJaLEVBQUUsRUFBRkEsRUFBRTtFQUNGQyxXQUFXLEVBQVhBLFdBQVc7RUFDWFksTUFBTSxFQUFFO0lBQ04sd0JBQXdCO0VBRzFCO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInNhdHVyYXRpb25WYWx1ZSIsInZhbHVlIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJzYXR1cmF0aW9uIiwiZXhwb3J0cyIsIm5hbWUiLCJ1bmlmb3JtVHlwZXMiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL2NvbG9yL3NhdHVyYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtHZXRVbmlmb3Jtc091dHB1dCwgU2hhZGVyTW9kdWxlfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogQWRqdXN0cyB0aGUgc2F0dXJhdGlvbiBvZiBhIGNvbG9yLlxuICogRnJvbSBjZXNpdW06XG4gKiBodHRwczovL2dpdGh1Yi5jb20vQ2VzaXVtR1MvY2VzaXVtL2Jsb2IvbWFzdGVyL1NvdXJjZS9TaGFkZXJzL0J1aWx0aW4vRnVuY3Rpb25zL3NhdHVyYXRpb24uZ2xzbFxuICpcbiAqIEBwYXJhbSB7dmVjM30gcmdiIFRoZSBjb2xvci5cbiAqIEBwYXJhbSB7ZmxvYXR9IGFkanVzdG1lbnQgVGhlIGFtb3VudCB0byBhZGp1c3QgdGhlIHNhdHVyYXRpb24gb2YgdGhlIGNvbG9yLiBVc3VhbGx5IGJldHdlZW4gMCBhbmQgMi5cbiAqXG4gKiBAcmV0dXJucyB7dmVjM30gVGhlIGNvbG9yIHdpdGggdGhlIHNhdHVyYXRpb24gYWRqdXN0ZWQuXG4gKi9cbmNvbnN0IGZzID0gYFxcXG51bmlmb3JtIHNhdHVyYXRpb25Vbmlmb3JtcyB7XG4gIGZsb2F0IHZhbHVlO1xufSBzYXR1cmF0aW9uO1xuXG52ZWMzIHNhdHVyYXRlKHZlYzMgcmdiLCBmbG9hdCBhZGp1c3RtZW50KSB7XG4gICAgLy8gQWxnb3JpdGhtIGZyb20gQ2hhcHRlciAxNiBvZiBPcGVuR0wgU2hhZGluZyBMYW5ndWFnZVxuICAgIGNvbnN0IHZlYzMgVyA9IHZlYzMoMC4yMTI1LCAwLjcxNTQsIDAuMDcyMSk7XG4gICAgdmVjMyBpbnRlbnNpdHkgPSB2ZWMzKGRvdChyZ2IsIFcpKTtcbiAgICByZXR1cm4gbWl4KGludGVuc2l0eSwgcmdiLCBhZGp1c3RtZW50KTtcbn1cbmA7XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKG9wdHM6IHtzYXR1cmF0aW9uVmFsdWU/OiBudW1iZXJ9ID0ge30pOiBHZXRVbmlmb3Jtc091dHB1dCB7XG4gIGNvbnN0IHtzYXR1cmF0aW9uVmFsdWV9ID0gb3B0cztcblxuICBpZiAoIXNhdHVyYXRpb25WYWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogTnVtYmVyLmlzRmluaXRlKHNhdHVyYXRpb25WYWx1ZSkgPyBzYXR1cmF0aW9uVmFsdWUgOiAxXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBzYXR1cmF0aW9uOiBTaGFkZXJNb2R1bGUgPSB7XG4gIG5hbWU6ICdzYXR1cmF0aW9uJyxcbiAgZnMsXG4gIHVuaWZvcm1UeXBlczoge1xuICAgIHZhbHVlOiAnZjMyJ1xuICB9LFxuICBnZXRVbmlmb3JtcyxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9NVVRBVEVfQ09MT1InOiBgXG4gICAgaW1hZ2UgPSB2ZWM0KHNhdHVyYXRlKGltYWdlLnJnYiwgc2F0dXJhdGlvbi52YWx1ZSksIGltYWdlLmEpO1xuICAgIGBcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1BLEVBQUUseVRBV1A7QUFFRCxTQUFTQyxXQUFXQSxDQUFBLEVBQTJEO0VBQUEsSUFBMURDLElBQWdDLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUN4RCxJQUFPRyxlQUFlLEdBQUlKLElBQUksQ0FBdkJJLGVBQWU7RUFFdEIsSUFBSSxDQUFDQSxlQUFlLEVBQUU7SUFDcEIsT0FBTyxJQUFJO0VBQ2I7RUFFQSxPQUFPO0lBQ0xDLEtBQUssRUFBRUMsTUFBTSxDQUFDQyxRQUFRLENBQUNILGVBQWUsQ0FBQyxHQUFHQSxlQUFlLEdBQUc7RUFDOUQsQ0FBQztBQUNIO0FBRU8sSUFBTUksVUFBd0IsR0FBQUMsT0FBQSxDQUFBRCxVQUFBLEdBQUc7RUFDdENFLElBQUksRUFBRSxZQUFZO0VBQ2xCWixFQUFFLEVBQUZBLEVBQUU7RUFDRmEsWUFBWSxFQUFFO0lBQ1pOLEtBQUssRUFBRTtFQUNULENBQUM7RUFDRE4sV0FBVyxFQUFYQSxXQUFXO0VBQ1hhLE1BQU0sRUFBRTtJQUNOLHdCQUF3QjtFQUcxQjtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -40,7 +40,7 @@ exports.sigmoidalContrast = void 0;
40
40
  // ----------
41
41
  // .. [CT] Hany Farid "Fundamentals of Image Processing"
42
42
  // http://www.cs.dartmouth.edu/farid/downloads/tutorials/fip.pdf
43
- var fs = "#define epsilon 0.00000001\n\nuniform float sigmoidalContrast;\nuniform float sigmoidalBias;\n\n// NOTE: Input array must have float values between 0 and 1!\n// NOTE: bias must be a scalar float between 0 and 1!\nvec4 calculateSigmoidalContrast(vec4 arr, float contrast, float bias) {\n // We use the names alpha and beta to match documentation.\n float alpha = bias;\n float beta = contrast;\n\n // alpha must be >= 0\n alpha = clamp(alpha, epsilon, alpha);\n\n if (beta > 0.) {\n vec4 numerator = 1. / (1. + exp(beta * (alpha - arr))) - 1. / (\n 1. + exp(beta * alpha)\n );\n float denominator = 1. / (1. + exp(beta * (alpha - 1.))) - 1. / (\n 1. + exp(beta * alpha)\n );\n arr = numerator / denominator;\n } else if (beta < 0.) {\n arr = (\n (beta * alpha) - log(\n (\n 1.0 / (\n (arr / (1.0 + exp((beta * alpha) - beta))) -\n (arr / (1.0 + exp(beta * alpha))) +\n (1.0 / (1.0 + exp(beta * alpha)))\n )\n ) - 1.0)\n ) / beta;\n }\n\n return arr;\n}\n";
43
+ var fs = "#define epsilon 0.00000001\n\nuniform sigmoidalContrastUniforms {\n float contrast;\n float bias;\n} sigmoidalContrast;\n\n// NOTE: Input array must have float values between 0 and 1!\n// NOTE: bias must be a scalar float between 0 and 1!\nvec4 calculateSigmoidalContrast(vec4 arr, float contrast, float bias) {\n // We use the names alpha and beta to match documentation.\n float alpha = bias;\n float beta = contrast;\n\n // alpha must be >= 0\n alpha = clamp(alpha, epsilon, alpha);\n\n if (beta > 0.) {\n vec4 numerator = 1. / (1. + exp(beta * (alpha - arr))) - 1. / (\n 1. + exp(beta * alpha)\n );\n float denominator = 1. / (1. + exp(beta * (alpha - 1.))) - 1. / (\n 1. + exp(beta * alpha)\n );\n arr = numerator / denominator;\n } else if (beta < 0.) {\n arr = (\n (beta * alpha) - log(\n (\n 1.0 / (\n (arr / (1.0 + exp((beta * alpha) - beta))) -\n (arr / (1.0 + exp(beta * alpha))) +\n (1.0 / (1.0 + exp(beta * alpha)))\n )\n ) - 1.0)\n ) / beta;\n }\n\n return arr;\n}\n";
44
44
  function getUniforms() {
45
45
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
46
46
  var sigmoidalContrast = opts.sigmoidalContrast,
@@ -49,16 +49,20 @@ function getUniforms() {
49
49
  return null;
50
50
  }
51
51
  return {
52
- sigmoidalContrast: Number.isFinite(sigmoidalContrast) ? sigmoidalContrast : 0,
53
- sigmoidalBias: Number.isFinite(sigmoidalBias) ? sigmoidalBias : 0.5
52
+ contrast: Number.isFinite(sigmoidalContrast) ? sigmoidalContrast : 0,
53
+ bias: Number.isFinite(sigmoidalBias) ? sigmoidalBias : 0.5
54
54
  };
55
55
  }
56
56
  var sigmoidalContrast = exports.sigmoidalContrast = {
57
57
  name: 'sigmoidalContrast',
58
58
  fs: fs,
59
+ uniformTypes: {
60
+ contrast: 'f32',
61
+ bias: 'f32'
62
+ },
59
63
  getUniforms: getUniforms,
60
64
  inject: {
61
- 'fs:DECKGL_MUTATE_COLOR': "\n image = calculateSigmoidalContrast(image, sigmoidalContrast, sigmoidalBias);\n "
65
+ 'fs:DECKGL_MUTATE_COLOR': "\n image = calculateSigmoidalContrast(image, sigmoidalContrast.contrast, sigmoidalContrast.bias);\n "
62
66
  }
63
67
  };
64
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInNpZ21vaWRhbENvbnRyYXN0Iiwic2lnbW9pZGFsQmlhcyIsIk51bWJlciIsImlzRmluaXRlIiwiZXhwb3J0cyIsIm5hbWUiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL2NvbG9yL3NpZ21vaWRhbC1jb250cmFzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0dldFVuaWZvcm1zT3V0cHV0LCBTaGFkZXJNb2R1bGV9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gRnJvbSBtYXBib3gvcmlvLWNvbG9yIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuLy9cbi8vIFNpZ21vaWRhbCBjb250cmFzdCBpcyBhIHR5cGUgb2YgY29udHJhc3QgY29udHJvbCB0aGF0XG4vLyBhZGp1c3RzIHRoZSBjb250cmFzdCB3aXRob3V0IHNhdHVyYXRpbmcgaGlnaGxpZ2h0cyBvciBzaGFkb3dzLlxuLy8gSXQgYWxsb3dzIGNvbnRyb2wgb3ZlciB0d28gZmFjdG9yczpcbi8vIHRoZSBjb250cmFzdCByYW5nZSBmcm9tIGxpZ2h0IHRvIGRhcmssIGFuZCB3aGVyZSB0aGUgbWlkZGxlIHZhbHVlXG4vLyBvZiB0aGUgbWlkLXRvbmVzIGZhbGxzLiBUaGUgcmVzdWx0IGlzIGEgbm9uLWxpbmVhciBhbmQgc21vb3RoXG4vLyBjb250cmFzdCBjaGFuZ2UuXG4vLyBQYXJhbWV0ZXJzXG4vLyAtLS0tLS0tLS0tXG4vLyBhcnIgOiBuZGFycmF5LCBmbG9hdCwgMCAuLiAxXG4vLyAgICAgQXJyYXkgb2YgY29sb3IgdmFsdWVzIHRvIGFkanVzdFxuLy8gY29udHJhc3QgOiBpbnRlZ2VyXG4vLyAgICAgRW5oYW5jZXMgdGhlIGludGVuc2l0eSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBsaWdodGVyIGFuZCBkYXJrZXJcbi8vICAgICBlbGVtZW50cyBvZiB0aGUgaW1hZ2UuIEZvciBleGFtcGxlLCAwIGlzIG5vbmUsIDMgaXMgdHlwaWNhbCBhbmRcbi8vICAgICAyMCBpcyBhIGxvdC5cbi8vIGJpYXMgOiBmbG9hdCwgYmV0d2VlbiAwIGFuZCAxXG4vLyAgICAgVGhyZXNob2xkIGxldmVsIGZvciB0aGUgY29udHJhc3QgZnVuY3Rpb24gdG8gY2VudGVyIG9uXG4vLyAgICAgKHR5cGljYWxseSBjZW50ZXJlZCBhdCAwLjUpXG4vLyBOb3Rlc1xuLy8gLS0tLS0tLS0tLVxuLy8gU2lnbW9pZGFsIGNvbnRyYXN0IGlzIGJhc2VkIG9uIHRoZSBzaWdtb2lkYWwgdHJhbnNmZXIgZnVuY3Rpb246XG4vLyAuLiBtYXRoOjogZyh1KSA9ICggMS8oMSArIGVeey0gXFxhbHBoYSAqIHUgKyBcXGJldGEpfSlcbi8vIFRoaXMgc2lnbW9pZCBmdW5jdGlvbiBpcyBzY2FsZWQgc28gdGhhdCB0aGUgb3V0cHV0IGlzIGJvdW5kIGJ5XG4vLyB0aGUgaW50ZXJ2YWwgWzAsIDFdLlxuLy8gLi4gbWF0aDo6ICggMS8oMSArIGVeKFxcYmV0YSAqIChcXGFscGhhIC0gdSkpKSAtIDEvKDEgKyBlXihcXGJldGEgKiBcXGFscGhhKSkpL1xuLy8gICAgICggMS8oMSArIGVeKFxcYmV0YSooXFxhbHBoYSAtIDEpKSkgLSAxLygxICsgZV4oXFxiZXRhICogXFxhbHBoYSkpIClcbi8vIFdoZXJlIDptYXRoOiBgXFxhbHBoYWAgaXMgdGhlIHRocmVzaG9sZCBsZXZlbCwgYW5kIDptYXRoOiBgXFxiZXRhYCB0aGVcbi8vIGNvbnRyYXN0IGZhY3RvciB0byBiZSBhcHBsaWVkLlxuLy8gUmVmZXJlbmNlc1xuLy8gLS0tLS0tLS0tLVxuLy8gLi4gW0NUXSBIYW55IEZhcmlkIFwiRnVuZGFtZW50YWxzIG9mIEltYWdlIFByb2Nlc3NpbmdcIlxuLy8gICAgICAgICBodHRwOi8vd3d3LmNzLmRhcnRtb3V0aC5lZHUvZmFyaWQvZG93bmxvYWRzL3R1dG9yaWFscy9maXAucGRmXG5jb25zdCBmcyA9IGBcXFxuI2RlZmluZSBlcHNpbG9uIDAuMDAwMDAwMDFcblxudW5pZm9ybSBmbG9hdCBzaWdtb2lkYWxDb250cmFzdDtcbnVuaWZvcm0gZmxvYXQgc2lnbW9pZGFsQmlhcztcblxuLy8gTk9URTogSW5wdXQgYXJyYXkgbXVzdCBoYXZlIGZsb2F0IHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDEhXG4vLyBOT1RFOiBiaWFzIG11c3QgYmUgYSBzY2FsYXIgZmxvYXQgYmV0d2VlbiAwIGFuZCAxIVxudmVjNCBjYWxjdWxhdGVTaWdtb2lkYWxDb250cmFzdCh2ZWM0IGFyciwgZmxvYXQgY29udHJhc3QsIGZsb2F0IGJpYXMpIHtcbiAgLy8gV2UgdXNlIHRoZSBuYW1lcyBhbHBoYSBhbmQgYmV0YSB0byBtYXRjaCBkb2N1bWVudGF0aW9uLlxuICBmbG9hdCBhbHBoYSA9IGJpYXM7XG4gIGZsb2F0IGJldGEgPSBjb250cmFzdDtcblxuICAvLyBhbHBoYSBtdXN0IGJlID49IDBcbiAgYWxwaGEgPSBjbGFtcChhbHBoYSwgZXBzaWxvbiwgYWxwaGEpO1xuXG4gIGlmIChiZXRhID4gMC4pIHtcbiAgICB2ZWM0IG51bWVyYXRvciA9IDEuIC8gKDEuICsgZXhwKGJldGEgKiAoYWxwaGEgLSBhcnIpKSkgLSAxLiAvIChcbiAgICAgIDEuICsgZXhwKGJldGEgKiBhbHBoYSlcbiAgICApO1xuICAgIGZsb2F0IGRlbm9taW5hdG9yID0gMS4gLyAoMS4gKyBleHAoYmV0YSAqIChhbHBoYSAtIDEuKSkpIC0gMS4gLyAoXG4gICAgICAxLiArIGV4cChiZXRhICogYWxwaGEpXG4gICAgKTtcbiAgICBhcnIgPSBudW1lcmF0b3IgLyBkZW5vbWluYXRvcjtcbiAgfSBlbHNlIGlmIChiZXRhIDwgMC4pIHtcbiAgICBhcnIgPSAoXG4gICAgICAoYmV0YSAqIGFscGhhKSAtIGxvZyhcbiAgICAgICAgKFxuICAgICAgICAgIDEuMCAvIChcbiAgICAgICAgICAgIChhcnIgLyAoMS4wICsgZXhwKChiZXRhICogYWxwaGEpIC0gYmV0YSkpKSAtXG4gICAgICAgICAgICAoYXJyIC8gKDEuMCArIGV4cChiZXRhICogYWxwaGEpKSkgK1xuICAgICAgICAgICAgKDEuMCAvICgxLjAgKyBleHAoYmV0YSAqIGFscGhhKSkpXG4gICAgICAgICAgKVxuICAgICAgICApIC0gMS4wKVxuICAgICkgLyBiZXRhO1xuICB9XG5cbiAgcmV0dXJuIGFycjtcbn1cbmA7XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKFxuICBvcHRzOiB7c2lnbW9pZGFsQ29udHJhc3Q/OiBudW1iZXI7IHNpZ21vaWRhbEJpYXM/OiBudW1iZXJ9ID0ge31cbik6IEdldFVuaWZvcm1zT3V0cHV0IHtcbiAgY29uc3Qge3NpZ21vaWRhbENvbnRyYXN0LCBzaWdtb2lkYWxCaWFzfSA9IG9wdHM7XG5cbiAgaWYgKCEoTnVtYmVyLmlzRmluaXRlKHNpZ21vaWRhbENvbnRyYXN0KSB8fCBOdW1iZXIuaXNGaW5pdGUoc2lnbW9pZGFsQmlhcykpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNpZ21vaWRhbENvbnRyYXN0OiBOdW1iZXIuaXNGaW5pdGUoc2lnbW9pZGFsQ29udHJhc3QpID8gc2lnbW9pZGFsQ29udHJhc3QgOiAwLFxuICAgIHNpZ21vaWRhbEJpYXM6IE51bWJlci5pc0Zpbml0ZShzaWdtb2lkYWxCaWFzKSA/IHNpZ21vaWRhbEJpYXMgOiAwLjVcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IHNpZ21vaWRhbENvbnRyYXN0OiBTaGFkZXJNb2R1bGUgPSB7XG4gIG5hbWU6ICdzaWdtb2lkYWxDb250cmFzdCcsXG4gIGZzLFxuICBnZXRVbmlmb3JtcyxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9NVVRBVEVfQ09MT1InOiBgXG4gICAgaW1hZ2UgPSBjYWxjdWxhdGVTaWdtb2lkYWxDb250cmFzdChpbWFnZSwgc2lnbW9pZGFsQ29udHJhc3QsIHNpZ21vaWRhbEJpYXMpO1xuICAgIGBcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQSxFQUFFLDRpQ0F1Q1A7QUFFRCxTQUFTQyxXQUFXQSxDQUFBLEVBRUM7RUFBQSxJQURuQkMsSUFBMEQsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBRS9ELElBQU9HLGlCQUFpQixHQUFtQkosSUFBSSxDQUF4Q0ksaUJBQWlCO0lBQUVDLGFBQWEsR0FBSUwsSUFBSSxDQUFyQkssYUFBYTtFQUV2QyxJQUFJLEVBQUVDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSCxpQkFBaUIsQ0FBQyxJQUFJRSxNQUFNLENBQUNDLFFBQVEsQ0FBQ0YsYUFBYSxDQUFDLENBQUMsRUFBRTtJQUMzRSxPQUFPLElBQUk7RUFDYjtFQUVBLE9BQU87SUFDTEQsaUJBQWlCLEVBQUVFLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSCxpQkFBaUIsQ0FBQyxHQUFHQSxpQkFBaUIsR0FBRyxDQUFDO0lBQzdFQyxhQUFhLEVBQUVDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDRixhQUFhLENBQUMsR0FBR0EsYUFBYSxHQUFHO0VBQ2xFLENBQUM7QUFDSDtBQUVPLElBQU1ELGlCQUErQixHQUFBSSxPQUFBLENBQUFKLGlCQUFBLEdBQUc7RUFDN0NLLElBQUksRUFBRSxtQkFBbUI7RUFDekJYLEVBQUUsRUFBRkEsRUFBRTtFQUNGQyxXQUFXLEVBQVhBLFdBQVc7RUFDWFcsTUFBTSxFQUFFO0lBQ04sd0JBQXdCO0VBRzFCO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInNpZ21vaWRhbENvbnRyYXN0Iiwic2lnbW9pZGFsQmlhcyIsIk51bWJlciIsImlzRmluaXRlIiwiY29udHJhc3QiLCJiaWFzIiwiZXhwb3J0cyIsIm5hbWUiLCJ1bmlmb3JtVHlwZXMiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL2NvbG9yL3NpZ21vaWRhbC1jb250cmFzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0dldFVuaWZvcm1zT3V0cHV0LCBTaGFkZXJNb2R1bGV9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gRnJvbSBtYXBib3gvcmlvLWNvbG9yIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuLy9cbi8vIFNpZ21vaWRhbCBjb250cmFzdCBpcyBhIHR5cGUgb2YgY29udHJhc3QgY29udHJvbCB0aGF0XG4vLyBhZGp1c3RzIHRoZSBjb250cmFzdCB3aXRob3V0IHNhdHVyYXRpbmcgaGlnaGxpZ2h0cyBvciBzaGFkb3dzLlxuLy8gSXQgYWxsb3dzIGNvbnRyb2wgb3ZlciB0d28gZmFjdG9yczpcbi8vIHRoZSBjb250cmFzdCByYW5nZSBmcm9tIGxpZ2h0IHRvIGRhcmssIGFuZCB3aGVyZSB0aGUgbWlkZGxlIHZhbHVlXG4vLyBvZiB0aGUgbWlkLXRvbmVzIGZhbGxzLiBUaGUgcmVzdWx0IGlzIGEgbm9uLWxpbmVhciBhbmQgc21vb3RoXG4vLyBjb250cmFzdCBjaGFuZ2UuXG4vLyBQYXJhbWV0ZXJzXG4vLyAtLS0tLS0tLS0tXG4vLyBhcnIgOiBuZGFycmF5LCBmbG9hdCwgMCAuLiAxXG4vLyAgICAgQXJyYXkgb2YgY29sb3IgdmFsdWVzIHRvIGFkanVzdFxuLy8gY29udHJhc3QgOiBpbnRlZ2VyXG4vLyAgICAgRW5oYW5jZXMgdGhlIGludGVuc2l0eSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBsaWdodGVyIGFuZCBkYXJrZXJcbi8vICAgICBlbGVtZW50cyBvZiB0aGUgaW1hZ2UuIEZvciBleGFtcGxlLCAwIGlzIG5vbmUsIDMgaXMgdHlwaWNhbCBhbmRcbi8vICAgICAyMCBpcyBhIGxvdC5cbi8vIGJpYXMgOiBmbG9hdCwgYmV0d2VlbiAwIGFuZCAxXG4vLyAgICAgVGhyZXNob2xkIGxldmVsIGZvciB0aGUgY29udHJhc3QgZnVuY3Rpb24gdG8gY2VudGVyIG9uXG4vLyAgICAgKHR5cGljYWxseSBjZW50ZXJlZCBhdCAwLjUpXG4vLyBOb3Rlc1xuLy8gLS0tLS0tLS0tLVxuLy8gU2lnbW9pZGFsIGNvbnRyYXN0IGlzIGJhc2VkIG9uIHRoZSBzaWdtb2lkYWwgdHJhbnNmZXIgZnVuY3Rpb246XG4vLyAuLiBtYXRoOjogZyh1KSA9ICggMS8oMSArIGVeey0gXFxhbHBoYSAqIHUgKyBcXGJldGEpfSlcbi8vIFRoaXMgc2lnbW9pZCBmdW5jdGlvbiBpcyBzY2FsZWQgc28gdGhhdCB0aGUgb3V0cHV0IGlzIGJvdW5kIGJ5XG4vLyB0aGUgaW50ZXJ2YWwgWzAsIDFdLlxuLy8gLi4gbWF0aDo6ICggMS8oMSArIGVeKFxcYmV0YSAqIChcXGFscGhhIC0gdSkpKSAtIDEvKDEgKyBlXihcXGJldGEgKiBcXGFscGhhKSkpL1xuLy8gICAgICggMS8oMSArIGVeKFxcYmV0YSooXFxhbHBoYSAtIDEpKSkgLSAxLygxICsgZV4oXFxiZXRhICogXFxhbHBoYSkpIClcbi8vIFdoZXJlIDptYXRoOiBgXFxhbHBoYWAgaXMgdGhlIHRocmVzaG9sZCBsZXZlbCwgYW5kIDptYXRoOiBgXFxiZXRhYCB0aGVcbi8vIGNvbnRyYXN0IGZhY3RvciB0byBiZSBhcHBsaWVkLlxuLy8gUmVmZXJlbmNlc1xuLy8gLS0tLS0tLS0tLVxuLy8gLi4gW0NUXSBIYW55IEZhcmlkIFwiRnVuZGFtZW50YWxzIG9mIEltYWdlIFByb2Nlc3NpbmdcIlxuLy8gICAgICAgICBodHRwOi8vd3d3LmNzLmRhcnRtb3V0aC5lZHUvZmFyaWQvZG93bmxvYWRzL3R1dG9yaWFscy9maXAucGRmXG5jb25zdCBmcyA9IGBcXFxuI2RlZmluZSBlcHNpbG9uIDAuMDAwMDAwMDFcblxudW5pZm9ybSBzaWdtb2lkYWxDb250cmFzdFVuaWZvcm1zIHtcbiAgZmxvYXQgY29udHJhc3Q7XG4gIGZsb2F0IGJpYXM7XG59IHNpZ21vaWRhbENvbnRyYXN0O1xuXG4vLyBOT1RFOiBJbnB1dCBhcnJheSBtdXN0IGhhdmUgZmxvYXQgdmFsdWVzIGJldHdlZW4gMCBhbmQgMSFcbi8vIE5PVEU6IGJpYXMgbXVzdCBiZSBhIHNjYWxhciBmbG9hdCBiZXR3ZWVuIDAgYW5kIDEhXG52ZWM0IGNhbGN1bGF0ZVNpZ21vaWRhbENvbnRyYXN0KHZlYzQgYXJyLCBmbG9hdCBjb250cmFzdCwgZmxvYXQgYmlhcykge1xuICAvLyBXZSB1c2UgdGhlIG5hbWVzIGFscGhhIGFuZCBiZXRhIHRvIG1hdGNoIGRvY3VtZW50YXRpb24uXG4gIGZsb2F0IGFscGhhID0gYmlhcztcbiAgZmxvYXQgYmV0YSA9IGNvbnRyYXN0O1xuXG4gIC8vIGFscGhhIG11c3QgYmUgPj0gMFxuICBhbHBoYSA9IGNsYW1wKGFscGhhLCBlcHNpbG9uLCBhbHBoYSk7XG5cbiAgaWYgKGJldGEgPiAwLikge1xuICAgIHZlYzQgbnVtZXJhdG9yID0gMS4gLyAoMS4gKyBleHAoYmV0YSAqIChhbHBoYSAtIGFycikpKSAtIDEuIC8gKFxuICAgICAgMS4gKyBleHAoYmV0YSAqIGFscGhhKVxuICAgICk7XG4gICAgZmxvYXQgZGVub21pbmF0b3IgPSAxLiAvICgxLiArIGV4cChiZXRhICogKGFscGhhIC0gMS4pKSkgLSAxLiAvIChcbiAgICAgIDEuICsgZXhwKGJldGEgKiBhbHBoYSlcbiAgICApO1xuICAgIGFyciA9IG51bWVyYXRvciAvIGRlbm9taW5hdG9yO1xuICB9IGVsc2UgaWYgKGJldGEgPCAwLikge1xuICAgIGFyciA9IChcbiAgICAgIChiZXRhICogYWxwaGEpIC0gbG9nKFxuICAgICAgICAoXG4gICAgICAgICAgMS4wIC8gKFxuICAgICAgICAgICAgKGFyciAvICgxLjAgKyBleHAoKGJldGEgKiBhbHBoYSkgLSBiZXRhKSkpIC1cbiAgICAgICAgICAgIChhcnIgLyAoMS4wICsgZXhwKGJldGEgKiBhbHBoYSkpKSArXG4gICAgICAgICAgICAoMS4wIC8gKDEuMCArIGV4cChiZXRhICogYWxwaGEpKSlcbiAgICAgICAgICApXG4gICAgICAgICkgLSAxLjApXG4gICAgKSAvIGJldGE7XG4gIH1cblxuICByZXR1cm4gYXJyO1xufVxuYDtcblxuZnVuY3Rpb24gZ2V0VW5pZm9ybXMoXG4gIG9wdHM6IHtzaWdtb2lkYWxDb250cmFzdD86IG51bWJlcjsgc2lnbW9pZGFsQmlhcz86IG51bWJlcn0gPSB7fVxuKTogR2V0VW5pZm9ybXNPdXRwdXQge1xuICBjb25zdCB7c2lnbW9pZGFsQ29udHJhc3QsIHNpZ21vaWRhbEJpYXN9ID0gb3B0cztcblxuICBpZiAoIShOdW1iZXIuaXNGaW5pdGUoc2lnbW9pZGFsQ29udHJhc3QpIHx8IE51bWJlci5pc0Zpbml0ZShzaWdtb2lkYWxCaWFzKSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29udHJhc3Q6IE51bWJlci5pc0Zpbml0ZShzaWdtb2lkYWxDb250cmFzdCkgPyBzaWdtb2lkYWxDb250cmFzdCA6IDAsXG4gICAgYmlhczogTnVtYmVyLmlzRmluaXRlKHNpZ21vaWRhbEJpYXMpID8gc2lnbW9pZGFsQmlhcyA6IDAuNVxuICB9O1xufVxuXG5leHBvcnQgY29uc3Qgc2lnbW9pZGFsQ29udHJhc3Q6IFNoYWRlck1vZHVsZSA9IHtcbiAgbmFtZTogJ3NpZ21vaWRhbENvbnRyYXN0JyxcbiAgZnMsXG4gIHVuaWZvcm1UeXBlczoge1xuICAgIGNvbnRyYXN0OiAnZjMyJyxcbiAgICBiaWFzOiAnZjMyJ1xuICB9LFxuICBnZXRVbmlmb3JtcyxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9NVVRBVEVfQ09MT1InOiBgXG4gICAgaW1hZ2UgPSBjYWxjdWxhdGVTaWdtb2lkYWxDb250cmFzdChpbWFnZSwgc2lnbW9pZGFsQ29udHJhc3QuY29udHJhc3QsIHNpZ21vaWRhbENvbnRyYXN0LmJpYXMpO1xuICAgIGBcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQSxFQUFFLHlrQ0F5Q1A7QUFFRCxTQUFTQyxXQUFXQSxDQUFBLEVBRUM7RUFBQSxJQURuQkMsSUFBMEQsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBRS9ELElBQU9HLGlCQUFpQixHQUFtQkosSUFBSSxDQUF4Q0ksaUJBQWlCO0lBQUVDLGFBQWEsR0FBSUwsSUFBSSxDQUFyQkssYUFBYTtFQUV2QyxJQUFJLEVBQUVDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSCxpQkFBaUIsQ0FBQyxJQUFJRSxNQUFNLENBQUNDLFFBQVEsQ0FBQ0YsYUFBYSxDQUFDLENBQUMsRUFBRTtJQUMzRSxPQUFPLElBQUk7RUFDYjtFQUVBLE9BQU87SUFDTEcsUUFBUSxFQUFFRixNQUFNLENBQUNDLFFBQVEsQ0FBQ0gsaUJBQWlCLENBQUMsR0FBR0EsaUJBQWlCLEdBQUcsQ0FBQztJQUNwRUssSUFBSSxFQUFFSCxNQUFNLENBQUNDLFFBQVEsQ0FBQ0YsYUFBYSxDQUFDLEdBQUdBLGFBQWEsR0FBRztFQUN6RCxDQUFDO0FBQ0g7QUFFTyxJQUFNRCxpQkFBK0IsR0FBQU0sT0FBQSxDQUFBTixpQkFBQSxHQUFHO0VBQzdDTyxJQUFJLEVBQUUsbUJBQW1CO0VBQ3pCYixFQUFFLEVBQUZBLEVBQUU7RUFDRmMsWUFBWSxFQUFFO0lBQ1pKLFFBQVEsRUFBRSxLQUFLO0lBQ2ZDLElBQUksRUFBRTtFQUNSLENBQUM7RUFDRFYsV0FBVyxFQUFYQSxXQUFXO0VBQ1hjLE1BQU0sRUFBRTtJQUNOLHdCQUF3QjtFQUcxQjtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -13,8 +13,8 @@ exports.pansharpenBrovey = void 0;
13
13
  // multispectral intensities.
14
14
  // Original code from https://github.com/mapbox/rio-pansharpen
15
15
  //
16
- var fs1 = "uniform sampler2D bitmapTexturePan;\nuniform float panWeight;\n\nfloat pansharpen_brovey_ratio(vec4 rgb, float pan, float weight) {\n return pan / ((rgb.r + rgb.g + rgb.b * weight) / (2. + weight));\n}\n\nvec4 pansharpen_brovey_calc(vec4 rgb, float pan, float weight) {\n float ratio = pansharpen_brovey_ratio(rgb, pan, weight);\n return ratio * rgb;\n}\n";
17
- var fs2 = "precision mediump usampler2D;\n\n#ifdef SAMPLER_TYPE\n uniform SAMPLER_TYPE bitmapTexturePan;\n#else\n uniform sampler2D bitmapTexturePan;\n#endif\n\nuniform float panWeight;\n\nfloat pansharpen_brovey_ratio(vec4 rgb, float pan, float weight) {\n return pan / ((rgb.r + rgb.g + rgb.b * weight) / (2. + weight));\n}\n\nvec4 pansharpen_brovey_calc(vec4 rgb, float pan, float weight) {\n float ratio = pansharpen_brovey_ratio(rgb, pan, weight);\n return ratio * rgb;\n}\n";
16
+ var fs1 = "uniform sampler2D bitmapTexturePan;\n\nuniform pansharpen_broveyUniforms {\n float panWeight;\n} pansharpen_brovey;\n\nfloat pansharpen_brovey_ratio(vec4 rgb, float pan, float weight) {\n return pan / ((rgb.r + rgb.g + rgb.b * weight) / (2. + weight));\n}\n\nvec4 pansharpen_brovey_calc(vec4 rgb, float pan, float weight) {\n float ratio = pansharpen_brovey_ratio(rgb, pan, weight);\n return ratio * rgb;\n}\n";
17
+ var fs2 = "precision mediump usampler2D;\n\n#ifdef SAMPLER_TYPE\n uniform SAMPLER_TYPE bitmapTexturePan;\n#else\n uniform sampler2D bitmapTexturePan;\n#endif\n\nuniform pansharpen_broveyUniforms {\n float panWeight;\n} pansharpen_brovey;\n\nfloat pansharpen_brovey_ratio(vec4 rgb, float pan, float weight) {\n return pan / ((rgb.r + rgb.g + rgb.b * weight) / (2. + weight));\n}\n\nvec4 pansharpen_brovey_calc(vec4 rgb, float pan, float weight) {\n float ratio = pansharpen_brovey_ratio(rgb, pan, weight);\n return ratio * rgb;\n}\n";
18
18
  function getUniforms() {
19
19
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
20
20
  var imagePan = opts.imagePan,
@@ -32,12 +32,15 @@ var pansharpenBrovey = exports.pansharpenBrovey = {
32
32
  name: 'pansharpen_brovey',
33
33
  fs1: fs1,
34
34
  fs2: fs2,
35
+ uniformTypes: {
36
+ panWeight: 'f32'
37
+ },
35
38
  defines: {
36
39
  SAMPLER_TYPE: 'sampler2D'
37
40
  },
38
41
  getUniforms: getUniforms,
39
42
  inject: {
40
- 'fs:DECKGL_MUTATE_COLOR': "\n float pan_band = float(texture2D(bitmapTexturePan, coord).r);\n image = pansharpen_brovey_calc(image, pan_band, panWeight);\n "
43
+ 'fs:DECKGL_MUTATE_COLOR': "\n float pan_band = float(texture(bitmapTexturePan, coord).r);\n image = pansharpen_brovey_calc(image, pan_band, pansharpen_brovey.panWeight);\n "
41
44
  }
42
45
  };
43
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmczEiLCJmczIiLCJnZXRVbmlmb3JtcyIsIm9wdHMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJpbWFnZVBhbiIsIl9vcHRzJHBhbldlaWdodCIsInBhbldlaWdodCIsImJpdG1hcFRleHR1cmVQYW4iLCJwYW5zaGFycGVuQnJvdmV5IiwiZXhwb3J0cyIsIm5hbWUiLCJkZWZpbmVzIiwiU0FNUExFUl9UWVBFIiwiaW5qZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci93ZWJnbC9wYW5zaGFycGVuL3BhbnNoYXJwZW4tYnJvdmV5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7VGV4dHVyZTJEfSBmcm9tICdAbHVtYS5nbC93ZWJnbCc7XG5cbmltcG9ydCB7R2V0VW5pZm9ybXNPdXRwdXQsIFNoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyBCcm92ZXkgTWV0aG9kOiBFYWNoIHJlc2FtcGxlZCwgbXVsdGlzcGVjdHJhbCBwaXhlbCBpc1xuLy8gbXVsdGlwbGllZCBieSB0aGUgcmF0aW8gb2YgdGhlIGNvcnJlc3BvbmRpbmdcbi8vIHBhbmNocm9tYXRpYyBwaXhlbCBpbnRlbnNpdHkgdG8gdGhlIHN1bSBvZiBhbGwgdGhlXG4vLyBtdWx0aXNwZWN0cmFsIGludGVuc2l0aWVzLlxuLy8gT3JpZ2luYWwgY29kZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXBib3gvcmlvLXBhbnNoYXJwZW5cbi8vXG5jb25zdCBmczEgPSBgXFxcbnVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVQYW47XG51bmlmb3JtIGZsb2F0IHBhbldlaWdodDtcblxuZmxvYXQgcGFuc2hhcnBlbl9icm92ZXlfcmF0aW8odmVjNCByZ2IsIGZsb2F0IHBhbiwgZmxvYXQgd2VpZ2h0KSB7XG4gIHJldHVybiBwYW4gLyAoKHJnYi5yICsgcmdiLmcgKyByZ2IuYiAqIHdlaWdodCkgLyAoMi4gKyB3ZWlnaHQpKTtcbn1cblxudmVjNCBwYW5zaGFycGVuX2Jyb3ZleV9jYWxjKHZlYzQgcmdiLCBmbG9hdCBwYW4sIGZsb2F0IHdlaWdodCkge1xuICBmbG9hdCByYXRpbyA9IHBhbnNoYXJwZW5fYnJvdmV5X3JhdGlvKHJnYiwgcGFuLCB3ZWlnaHQpO1xuICByZXR1cm4gcmF0aW8gKiByZ2I7XG59XG5gO1xuXG5jb25zdCBmczIgPSBgXFxcbnByZWNpc2lvbiBtZWRpdW1wIHVzYW1wbGVyMkQ7XG5cbiNpZmRlZiBTQU1QTEVSX1RZUEVcbiAgdW5pZm9ybSBTQU1QTEVSX1RZUEUgYml0bWFwVGV4dHVyZVBhbjtcbiNlbHNlXG4gIHVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVQYW47XG4jZW5kaWZcblxudW5pZm9ybSBmbG9hdCBwYW5XZWlnaHQ7XG5cbmZsb2F0IHBhbnNoYXJwZW5fYnJvdmV5X3JhdGlvKHZlYzQgcmdiLCBmbG9hdCBwYW4sIGZsb2F0IHdlaWdodCkge1xuICByZXR1cm4gcGFuIC8gKChyZ2IuciArIHJnYi5nICsgcmdiLmIgKiB3ZWlnaHQpIC8gKDIuICsgd2VpZ2h0KSk7XG59XG5cbnZlYzQgcGFuc2hhcnBlbl9icm92ZXlfY2FsYyh2ZWM0IHJnYiwgZmxvYXQgcGFuLCBmbG9hdCB3ZWlnaHQpIHtcbiAgZmxvYXQgcmF0aW8gPSBwYW5zaGFycGVuX2Jyb3ZleV9yYXRpbyhyZ2IsIHBhbiwgd2VpZ2h0KTtcbiAgcmV0dXJuIHJhdGlvICogcmdiO1xufVxuYDtcblxuZnVuY3Rpb24gZ2V0VW5pZm9ybXMob3B0czoge2ltYWdlUGFuPzogVGV4dHVyZTJEOyBwYW5XZWlnaHQ/OiBudW1iZXJ9ID0ge30pOiBHZXRVbmlmb3Jtc091dHB1dCB7XG4gIGNvbnN0IHtpbWFnZVBhbiwgcGFuV2VpZ2h0ID0gMC4yfSA9IG9wdHM7XG5cbiAgaWYgKCFpbWFnZVBhbikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBiaXRtYXBUZXh0dXJlUGFuOiBpbWFnZVBhbixcbiAgICBwYW5XZWlnaHRcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IHBhbnNoYXJwZW5Ccm92ZXk6IFNoYWRlck1vZHVsZSA9IHtcbiAgbmFtZTogJ3BhbnNoYXJwZW5fYnJvdmV5JyxcbiAgZnMxLFxuICBmczIsXG4gIGRlZmluZXM6IHtcbiAgICBTQU1QTEVSX1RZUEU6ICdzYW1wbGVyMkQnXG4gIH0sXG4gIGdldFVuaWZvcm1zLFxuICBpbmplY3Q6IHtcbiAgICAnZnM6REVDS0dMX01VVEFURV9DT0xPUic6IGBcbiAgICBmbG9hdCBwYW5fYmFuZCA9IGZsb2F0KHRleHR1cmUyRChiaXRtYXBUZXh0dXJlUGFuLCBjb29yZCkucik7XG4gICAgaW1hZ2UgPSBwYW5zaGFycGVuX2Jyb3ZleV9jYWxjKGltYWdlLCBwYW5fYmFuZCwgcGFuV2VpZ2h0KTtcbiAgICBgXG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsR0FBRywyV0FZUjtBQUVELElBQU1DLEdBQUcsOGRBbUJSO0FBRUQsU0FBU0MsV0FBV0EsQ0FBQSxFQUEyRTtFQUFBLElBQTFFQyxJQUFnRCxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFDeEUsSUFBT0csUUFBUSxHQUFxQkosSUFBSSxDQUFqQ0ksUUFBUTtJQUFBQyxlQUFBLEdBQXFCTCxJQUFJLENBQXZCTSxTQUFTO0lBQVRBLFNBQVMsR0FBQUQsZUFBQSxjQUFHLEdBQUcsR0FBQUEsZUFBQTtFQUVoQyxJQUFJLENBQUNELFFBQVEsRUFBRTtJQUNiLE9BQU8sSUFBSTtFQUNiO0VBRUEsT0FBTztJQUNMRyxnQkFBZ0IsRUFBRUgsUUFBUTtJQUMxQkUsU0FBUyxFQUFUQTtFQUNGLENBQUM7QUFDSDtBQUVPLElBQU1FLGdCQUE4QixHQUFBQyxPQUFBLENBQUFELGdCQUFBLEdBQUc7RUFDNUNFLElBQUksRUFBRSxtQkFBbUI7RUFDekJiLEdBQUcsRUFBSEEsR0FBRztFQUNIQyxHQUFHLEVBQUhBLEdBQUc7RUFDSGEsT0FBTyxFQUFFO0lBQ1BDLFlBQVksRUFBRTtFQUNoQixDQUFDO0VBQ0RiLFdBQVcsRUFBWEEsV0FBVztFQUNYYyxNQUFNLEVBQUU7SUFDTix3QkFBd0I7RUFJMUI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
46
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmczEiLCJmczIiLCJnZXRVbmlmb3JtcyIsIm9wdHMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJpbWFnZVBhbiIsIl9vcHRzJHBhbldlaWdodCIsInBhbldlaWdodCIsImJpdG1hcFRleHR1cmVQYW4iLCJwYW5zaGFycGVuQnJvdmV5IiwiZXhwb3J0cyIsIm5hbWUiLCJ1bmlmb3JtVHlwZXMiLCJkZWZpbmVzIiwiU0FNUExFUl9UWVBFIiwiaW5qZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci93ZWJnbC9wYW5zaGFycGVuL3BhbnNoYXJwZW4tYnJvdmV5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB0eXBlIHtUZXh0dXJlfSBmcm9tICdAbHVtYS5nbC9jb3JlJztcbmltcG9ydCB7R2V0VW5pZm9ybXNPdXRwdXQsIFNoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyBCcm92ZXkgTWV0aG9kOiBFYWNoIHJlc2FtcGxlZCwgbXVsdGlzcGVjdHJhbCBwaXhlbCBpc1xuLy8gbXVsdGlwbGllZCBieSB0aGUgcmF0aW8gb2YgdGhlIGNvcnJlc3BvbmRpbmdcbi8vIHBhbmNocm9tYXRpYyBwaXhlbCBpbnRlbnNpdHkgdG8gdGhlIHN1bSBvZiBhbGwgdGhlXG4vLyBtdWx0aXNwZWN0cmFsIGludGVuc2l0aWVzLlxuLy8gT3JpZ2luYWwgY29kZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXBib3gvcmlvLXBhbnNoYXJwZW5cbi8vXG5jb25zdCBmczEgPSBgXFxcbnVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVQYW47XG5cbnVuaWZvcm0gcGFuc2hhcnBlbl9icm92ZXlVbmlmb3JtcyB7XG4gIGZsb2F0IHBhbldlaWdodDtcbn0gcGFuc2hhcnBlbl9icm92ZXk7XG5cbmZsb2F0IHBhbnNoYXJwZW5fYnJvdmV5X3JhdGlvKHZlYzQgcmdiLCBmbG9hdCBwYW4sIGZsb2F0IHdlaWdodCkge1xuICByZXR1cm4gcGFuIC8gKChyZ2IuciArIHJnYi5nICsgcmdiLmIgKiB3ZWlnaHQpIC8gKDIuICsgd2VpZ2h0KSk7XG59XG5cbnZlYzQgcGFuc2hhcnBlbl9icm92ZXlfY2FsYyh2ZWM0IHJnYiwgZmxvYXQgcGFuLCBmbG9hdCB3ZWlnaHQpIHtcbiAgZmxvYXQgcmF0aW8gPSBwYW5zaGFycGVuX2Jyb3ZleV9yYXRpbyhyZ2IsIHBhbiwgd2VpZ2h0KTtcbiAgcmV0dXJuIHJhdGlvICogcmdiO1xufVxuYDtcblxuY29uc3QgZnMyID0gYFxcXG5wcmVjaXNpb24gbWVkaXVtcCB1c2FtcGxlcjJEO1xuXG4jaWZkZWYgU0FNUExFUl9UWVBFXG4gIHVuaWZvcm0gU0FNUExFUl9UWVBFIGJpdG1hcFRleHR1cmVQYW47XG4jZWxzZVxuICB1bmlmb3JtIHNhbXBsZXIyRCBiaXRtYXBUZXh0dXJlUGFuO1xuI2VuZGlmXG5cbnVuaWZvcm0gcGFuc2hhcnBlbl9icm92ZXlVbmlmb3JtcyB7XG4gIGZsb2F0IHBhbldlaWdodDtcbn0gcGFuc2hhcnBlbl9icm92ZXk7XG5cbmZsb2F0IHBhbnNoYXJwZW5fYnJvdmV5X3JhdGlvKHZlYzQgcmdiLCBmbG9hdCBwYW4sIGZsb2F0IHdlaWdodCkge1xuICByZXR1cm4gcGFuIC8gKChyZ2IuciArIHJnYi5nICsgcmdiLmIgKiB3ZWlnaHQpIC8gKDIuICsgd2VpZ2h0KSk7XG59XG5cbnZlYzQgcGFuc2hhcnBlbl9icm92ZXlfY2FsYyh2ZWM0IHJnYiwgZmxvYXQgcGFuLCBmbG9hdCB3ZWlnaHQpIHtcbiAgZmxvYXQgcmF0aW8gPSBwYW5zaGFycGVuX2Jyb3ZleV9yYXRpbyhyZ2IsIHBhbiwgd2VpZ2h0KTtcbiAgcmV0dXJuIHJhdGlvICogcmdiO1xufVxuYDtcblxuZnVuY3Rpb24gZ2V0VW5pZm9ybXMob3B0czoge2ltYWdlUGFuPzogVGV4dHVyZTsgcGFuV2VpZ2h0PzogbnVtYmVyfSA9IHt9KTogR2V0VW5pZm9ybXNPdXRwdXQge1xuICBjb25zdCB7aW1hZ2VQYW4sIHBhbldlaWdodCA9IDAuMn0gPSBvcHRzO1xuXG4gIGlmICghaW1hZ2VQYW4pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYml0bWFwVGV4dHVyZVBhbjogaW1hZ2VQYW4sXG4gICAgcGFuV2VpZ2h0XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBwYW5zaGFycGVuQnJvdmV5OiBTaGFkZXJNb2R1bGUgPSB7XG4gIG5hbWU6ICdwYW5zaGFycGVuX2Jyb3ZleScsXG4gIGZzMSxcbiAgZnMyLFxuICB1bmlmb3JtVHlwZXM6IHtcbiAgICBwYW5XZWlnaHQ6ICdmMzInXG4gIH0sXG4gIGRlZmluZXM6IHtcbiAgICBTQU1QTEVSX1RZUEU6ICdzYW1wbGVyMkQnXG4gIH0sXG4gIGdldFVuaWZvcm1zLFxuICBpbmplY3Q6IHtcbiAgICAnZnM6REVDS0dMX01VVEFURV9DT0xPUic6IGBcbiAgICBmbG9hdCBwYW5fYmFuZCA9IGZsb2F0KHRleHR1cmUoYml0bWFwVGV4dHVyZVBhbiwgY29vcmQpLnIpO1xuICAgIGltYWdlID0gcGFuc2hhcnBlbl9icm92ZXlfY2FsYyhpbWFnZSwgcGFuX2JhbmQsIHBhbnNoYXJwZW5fYnJvdmV5LnBhbldlaWdodCk7XG4gICAgYFxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1BLEdBQUcsa2FBZVI7QUFFRCxJQUFNQyxHQUFHLG1oQkFxQlI7QUFFRCxTQUFTQyxXQUFXQSxDQUFBLEVBQXlFO0VBQUEsSUFBeEVDLElBQThDLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUN0RSxJQUFPRyxRQUFRLEdBQXFCSixJQUFJLENBQWpDSSxRQUFRO0lBQUFDLGVBQUEsR0FBcUJMLElBQUksQ0FBdkJNLFNBQVM7SUFBVEEsU0FBUyxHQUFBRCxlQUFBLGNBQUcsR0FBRyxHQUFBQSxlQUFBO0VBRWhDLElBQUksQ0FBQ0QsUUFBUSxFQUFFO0lBQ2IsT0FBTyxJQUFJO0VBQ2I7RUFFQSxPQUFPO0lBQ0xHLGdCQUFnQixFQUFFSCxRQUFRO0lBQzFCRSxTQUFTLEVBQVRBO0VBQ0YsQ0FBQztBQUNIO0FBRU8sSUFBTUUsZ0JBQThCLEdBQUFDLE9BQUEsQ0FBQUQsZ0JBQUEsR0FBRztFQUM1Q0UsSUFBSSxFQUFFLG1CQUFtQjtFQUN6QmIsR0FBRyxFQUFIQSxHQUFHO0VBQ0hDLEdBQUcsRUFBSEEsR0FBRztFQUNIYSxZQUFZLEVBQUU7SUFDWkwsU0FBUyxFQUFFO0VBQ2IsQ0FBQztFQUNETSxPQUFPLEVBQUU7SUFDUEMsWUFBWSxFQUFFO0VBQ2hCLENBQUM7RUFDRGQsV0FBVyxFQUFYQSxXQUFXO0VBQ1hlLE1BQU0sRUFBRTtJQUNOLHdCQUF3QjtFQUkxQjtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=