@kepler.gl/deckgl-layers 3.1.4 → 3.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.js +25 -2
  3. package/dist/raster/images.d.ts +9 -0
  4. package/dist/raster/images.js +165 -0
  5. package/dist/raster/raster-layer/raster-layer-webgl1.fs.d.ts +2 -0
  6. package/dist/raster/raster-layer/raster-layer-webgl1.fs.js +10 -0
  7. package/dist/raster/raster-layer/raster-layer-webgl1.vs.d.ts +2 -0
  8. package/dist/raster/raster-layer/raster-layer-webgl1.vs.js +10 -0
  9. package/dist/raster/raster-layer/raster-layer-webgl2.fs.d.ts +2 -0
  10. package/dist/raster/raster-layer/raster-layer-webgl2.fs.js +10 -0
  11. package/dist/raster/raster-layer/raster-layer-webgl2.vs.d.ts +2 -0
  12. package/dist/raster/raster-layer/raster-layer-webgl2.vs.js +10 -0
  13. package/dist/raster/raster-layer/raster-layer.d.ts +21 -0
  14. package/dist/raster/raster-layer/raster-layer.js +235 -0
  15. package/dist/raster/raster-mesh-layer/matrix.d.ts +2 -0
  16. package/dist/raster/raster-mesh-layer/matrix.js +18 -0
  17. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.d.ts +2 -0
  18. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +10 -0
  19. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.d.ts +2 -0
  20. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +10 -0
  21. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.d.ts +2 -0
  22. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +10 -0
  23. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.d.ts +2 -0
  24. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +10 -0
  25. package/dist/raster/raster-mesh-layer/raster-mesh-layer.d.ts +22 -0
  26. package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +263 -0
  27. package/dist/raster/types.d.ts +17 -0
  28. package/dist/raster/types.js +6 -0
  29. package/dist/raster/util.d.ts +10 -0
  30. package/dist/raster/util.js +29 -0
  31. package/dist/raster/webgl/color/colormap.d.ts +2 -0
  32. package/dist/raster/webgl/color/colormap.js +39 -0
  33. package/dist/raster/webgl/color/filter.d.ts +2 -0
  34. package/dist/raster/webgl/color/filter.js +48 -0
  35. package/dist/raster/webgl/color/gamma-contrast.d.ts +2 -0
  36. package/dist/raster/webgl/color/gamma-contrast.js +62 -0
  37. package/dist/raster/webgl/color/linear-rescale.d.ts +2 -0
  38. package/dist/raster/webgl/color/linear-rescale.js +31 -0
  39. package/dist/raster/webgl/color/saturation.d.ts +2 -0
  40. package/dist/raster/webgl/color/saturation.js +39 -0
  41. package/dist/raster/webgl/color/sigmoidal-contrast.d.ts +2 -0
  42. package/dist/raster/webgl/color/sigmoidal-contrast.js +64 -0
  43. package/dist/raster/webgl/index.d.ts +16 -0
  44. package/dist/raster/webgl/index.js +135 -0
  45. package/dist/raster/webgl/pansharpen/pansharpen-brovey.d.ts +2 -0
  46. package/dist/raster/webgl/pansharpen/pansharpen-brovey.js +43 -0
  47. package/dist/raster/webgl/spectral-indices/evi.d.ts +2 -0
  48. package/dist/raster/webgl/spectral-indices/evi.js +26 -0
  49. package/dist/raster/webgl/spectral-indices/msavi.d.ts +2 -0
  50. package/dist/raster/webgl/spectral-indices/msavi.js +25 -0
  51. package/dist/raster/webgl/spectral-indices/normalized-difference.d.ts +2 -0
  52. package/dist/raster/webgl/spectral-indices/normalized-difference.js +19 -0
  53. package/dist/raster/webgl/spectral-indices/savi.d.ts +2 -0
  54. package/dist/raster/webgl/spectral-indices/savi.js +21 -0
  55. package/dist/raster/webgl/texture/combine-bands.d.ts +4 -0
  56. package/dist/raster/webgl/texture/combine-bands.js +65 -0
  57. package/dist/raster/webgl/texture/mask.d.ts +4 -0
  58. package/dist/raster/webgl/texture/mask.js +58 -0
  59. package/dist/raster/webgl/texture/reorder-bands.d.ts +10 -0
  60. package/dist/raster/webgl/texture/reorder-bands.js +69 -0
  61. package/dist/raster/webgl/texture/rgba-image.d.ts +2 -0
  62. package/dist/raster/webgl/texture/rgba-image.js +34 -0
  63. package/dist/raster/webgl/types.d.ts +23 -0
  64. package/dist/raster/webgl/types.js +6 -0
  65. package/package.json +4 -4
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.saturation = void 0;
7
+ // SPDX-License-Identifier: MIT
8
+ // Copyright contributors to the kepler.gl project
9
+
10
+ /**
11
+ * Adjusts the saturation of a color.
12
+ * From cesium:
13
+ * https://github.com/CesiumGS/cesium/blob/master/Source/Shaders/Builtin/Functions/saturation.glsl
14
+ *
15
+ * @param {vec3} rgb The color.
16
+ * @param {float} adjustment The amount to adjust the saturation of the color. Usually between 0 and 2.
17
+ *
18
+ * @returns {vec3} The color with the saturation adjusted.
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";
21
+ function getUniforms() {
22
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
23
+ var saturationValue = opts.saturationValue;
24
+ if (!saturationValue) {
25
+ return null;
26
+ }
27
+ return {
28
+ uSaturationValue: Number.isFinite(saturationValue) ? saturationValue : 1
29
+ };
30
+ }
31
+ var saturation = exports.saturation = {
32
+ name: 'saturation',
33
+ fs: fs,
34
+ getUniforms: getUniforms,
35
+ inject: {
36
+ 'fs:DECKGL_MUTATE_COLOR': "\n image = vec4(saturate(image.rgb, uSaturationValue), image.a);\n "
37
+ }
38
+ };
39
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInNhdHVyYXRpb25WYWx1ZSIsInVTYXR1cmF0aW9uVmFsdWUiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInNhdHVyYXRpb24iLCJleHBvcnRzIiwibmFtZSIsImluamVjdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9yYXN0ZXIvd2ViZ2wvY29sb3Ivc2F0dXJhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0dldFVuaWZvcm1zT3V0cHV0LCBTaGFkZXJNb2R1bGV9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBBZGp1c3RzIHRoZSBzYXR1cmF0aW9uIG9mIGEgY29sb3IuXG4gKiBGcm9tIGNlc2l1bTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9DZXNpdW1HUy9jZXNpdW0vYmxvYi9tYXN0ZXIvU291cmNlL1NoYWRlcnMvQnVpbHRpbi9GdW5jdGlvbnMvc2F0dXJhdGlvbi5nbHNsXG4gKlxuICogQHBhcmFtIHt2ZWMzfSByZ2IgVGhlIGNvbG9yLlxuICogQHBhcmFtIHtmbG9hdH0gYWRqdXN0bWVudCBUaGUgYW1vdW50IHRvIGFkanVzdCB0aGUgc2F0dXJhdGlvbiBvZiB0aGUgY29sb3IuIFVzdWFsbHkgYmV0d2VlbiAwIGFuZCAyLlxuICpcbiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3Igd2l0aCB0aGUgc2F0dXJhdGlvbiBhZGp1c3RlZC5cbiAqL1xuY29uc3QgZnMgPSBgXFxcbnVuaWZvcm0gZmxvYXQgdVNhdHVyYXRpb25WYWx1ZTtcbnZlYzMgc2F0dXJhdGUodmVjMyByZ2IsIGZsb2F0IGFkanVzdG1lbnQpIHtcbiAgICAvLyBBbGdvcml0aG0gZnJvbSBDaGFwdGVyIDE2IG9mIE9wZW5HTCBTaGFkaW5nIExhbmd1YWdlXG4gICAgY29uc3QgdmVjMyBXID0gdmVjMygwLjIxMjUsIDAuNzE1NCwgMC4wNzIxKTtcbiAgICB2ZWMzIGludGVuc2l0eSA9IHZlYzMoZG90KHJnYiwgVykpO1xuICAgIHJldHVybiBtaXgoaW50ZW5zaXR5LCByZ2IsIGFkanVzdG1lbnQpO1xufVxuYDtcblxuZnVuY3Rpb24gZ2V0VW5pZm9ybXMob3B0czoge3NhdHVyYXRpb25WYWx1ZT86IG51bWJlcn0gPSB7fSk6IEdldFVuaWZvcm1zT3V0cHV0IHtcbiAgY29uc3Qge3NhdHVyYXRpb25WYWx1ZX0gPSBvcHRzO1xuXG4gIGlmICghc2F0dXJhdGlvblZhbHVlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHVTYXR1cmF0aW9uVmFsdWU6IE51bWJlci5pc0Zpbml0ZShzYXR1cmF0aW9uVmFsdWUpID8gc2F0dXJhdGlvblZhbHVlIDogMVxuICB9O1xufVxuXG5leHBvcnQgY29uc3Qgc2F0dXJhdGlvbjogU2hhZGVyTW9kdWxlID0ge1xuICBuYW1lOiAnc2F0dXJhdGlvbicsXG4gIGZzLFxuICBnZXRVbmlmb3JtcyxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9NVVRBVEVfQ09MT1InOiBgXG4gICAgaW1hZ2UgPSB2ZWM0KHNhdHVyYXRlKGltYWdlLnJnYiwgdVNhdHVyYXRpb25WYWx1ZSksIGltYWdlLmEpO1xuICAgIGBcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1BLEVBQUUsMlJBUVA7QUFFRCxTQUFTQyxXQUFXQSxDQUFBLEVBQTJEO0VBQUEsSUFBMURDLElBQWdDLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUN4RCxJQUFPRyxlQUFlLEdBQUlKLElBQUksQ0FBdkJJLGVBQWU7RUFFdEIsSUFBSSxDQUFDQSxlQUFlLEVBQUU7SUFDcEIsT0FBTyxJQUFJO0VBQ2I7RUFFQSxPQUFPO0lBQ0xDLGdCQUFnQixFQUFFQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0gsZUFBZSxDQUFDLEdBQUdBLGVBQWUsR0FBRztFQUN6RSxDQUFDO0FBQ0g7QUFFTyxJQUFNSSxVQUF3QixHQUFBQyxPQUFBLENBQUFELFVBQUEsR0FBRztFQUN0Q0UsSUFBSSxFQUFFLFlBQVk7RUFDbEJaLEVBQUUsRUFBRkEsRUFBRTtFQUNGQyxXQUFXLEVBQVhBLFdBQVc7RUFDWFksTUFBTSxFQUFFO0lBQ04sd0JBQXdCO0VBRzFCO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,2 @@
1
+ import { ShaderModule } from '../types';
2
+ export declare const sigmoidalContrast: ShaderModule;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.sigmoidalContrast = void 0;
7
+ // SPDX-License-Identifier: MIT
8
+ // Copyright contributors to the kepler.gl project
9
+
10
+ // From mapbox/rio-color under the MIT License
11
+ //
12
+ // Sigmoidal contrast is a type of contrast control that
13
+ // adjusts the contrast without saturating highlights or shadows.
14
+ // It allows control over two factors:
15
+ // the contrast range from light to dark, and where the middle value
16
+ // of the mid-tones falls. The result is a non-linear and smooth
17
+ // contrast change.
18
+ // Parameters
19
+ // ----------
20
+ // arr : ndarray, float, 0 .. 1
21
+ // Array of color values to adjust
22
+ // contrast : integer
23
+ // Enhances the intensity differences between the lighter and darker
24
+ // elements of the image. For example, 0 is none, 3 is typical and
25
+ // 20 is a lot.
26
+ // bias : float, between 0 and 1
27
+ // Threshold level for the contrast function to center on
28
+ // (typically centered at 0.5)
29
+ // Notes
30
+ // ----------
31
+ // Sigmoidal contrast is based on the sigmoidal transfer function:
32
+ // .. math:: g(u) = ( 1/(1 + e^{- \alpha * u + \beta)})
33
+ // This sigmoid function is scaled so that the output is bound by
34
+ // the interval [0, 1].
35
+ // .. math:: ( 1/(1 + e^(\beta * (\alpha - u))) - 1/(1 + e^(\beta * \alpha)))/
36
+ // ( 1/(1 + e^(\beta*(\alpha - 1))) - 1/(1 + e^(\beta * \alpha)) )
37
+ // Where :math: `\alpha` is the threshold level, and :math: `\beta` the
38
+ // contrast factor to be applied.
39
+ // References
40
+ // ----------
41
+ // .. [CT] Hany Farid "Fundamentals of Image Processing"
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";
44
+ function getUniforms() {
45
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
46
+ var sigmoidalContrast = opts.sigmoidalContrast,
47
+ sigmoidalBias = opts.sigmoidalBias;
48
+ if (!(Number.isFinite(sigmoidalContrast) || Number.isFinite(sigmoidalBias))) {
49
+ return null;
50
+ }
51
+ return {
52
+ sigmoidalContrast: Number.isFinite(sigmoidalContrast) ? sigmoidalContrast : 0,
53
+ sigmoidalBias: Number.isFinite(sigmoidalBias) ? sigmoidalBias : 0.5
54
+ };
55
+ }
56
+ var sigmoidalContrast = exports.sigmoidalContrast = {
57
+ name: 'sigmoidalContrast',
58
+ fs: fs,
59
+ getUniforms: getUniforms,
60
+ inject: {
61
+ 'fs:DECKGL_MUTATE_COLOR': "\n image = calculateSigmoidalContrast(image, sigmoidalContrast, sigmoidalBias);\n "
62
+ }
63
+ };
64
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInNpZ21vaWRhbENvbnRyYXN0Iiwic2lnbW9pZGFsQmlhcyIsIk51bWJlciIsImlzRmluaXRlIiwiZXhwb3J0cyIsIm5hbWUiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL2NvbG9yL3NpZ21vaWRhbC1jb250cmFzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0dldFVuaWZvcm1zT3V0cHV0LCBTaGFkZXJNb2R1bGV9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gRnJvbSBtYXBib3gvcmlvLWNvbG9yIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuLy9cbi8vIFNpZ21vaWRhbCBjb250cmFzdCBpcyBhIHR5cGUgb2YgY29udHJhc3QgY29udHJvbCB0aGF0XG4vLyBhZGp1c3RzIHRoZSBjb250cmFzdCB3aXRob3V0IHNhdHVyYXRpbmcgaGlnaGxpZ2h0cyBvciBzaGFkb3dzLlxuLy8gSXQgYWxsb3dzIGNvbnRyb2wgb3ZlciB0d28gZmFjdG9yczpcbi8vIHRoZSBjb250cmFzdCByYW5nZSBmcm9tIGxpZ2h0IHRvIGRhcmssIGFuZCB3aGVyZSB0aGUgbWlkZGxlIHZhbHVlXG4vLyBvZiB0aGUgbWlkLXRvbmVzIGZhbGxzLiBUaGUgcmVzdWx0IGlzIGEgbm9uLWxpbmVhciBhbmQgc21vb3RoXG4vLyBjb250cmFzdCBjaGFuZ2UuXG4vLyBQYXJhbWV0ZXJzXG4vLyAtLS0tLS0tLS0tXG4vLyBhcnIgOiBuZGFycmF5LCBmbG9hdCwgMCAuLiAxXG4vLyAgICAgQXJyYXkgb2YgY29sb3IgdmFsdWVzIHRvIGFkanVzdFxuLy8gY29udHJhc3QgOiBpbnRlZ2VyXG4vLyAgICAgRW5oYW5jZXMgdGhlIGludGVuc2l0eSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBsaWdodGVyIGFuZCBkYXJrZXJcbi8vICAgICBlbGVtZW50cyBvZiB0aGUgaW1hZ2UuIEZvciBleGFtcGxlLCAwIGlzIG5vbmUsIDMgaXMgdHlwaWNhbCBhbmRcbi8vICAgICAyMCBpcyBhIGxvdC5cbi8vIGJpYXMgOiBmbG9hdCwgYmV0d2VlbiAwIGFuZCAxXG4vLyAgICAgVGhyZXNob2xkIGxldmVsIGZvciB0aGUgY29udHJhc3QgZnVuY3Rpb24gdG8gY2VudGVyIG9uXG4vLyAgICAgKHR5cGljYWxseSBjZW50ZXJlZCBhdCAwLjUpXG4vLyBOb3Rlc1xuLy8gLS0tLS0tLS0tLVxuLy8gU2lnbW9pZGFsIGNvbnRyYXN0IGlzIGJhc2VkIG9uIHRoZSBzaWdtb2lkYWwgdHJhbnNmZXIgZnVuY3Rpb246XG4vLyAuLiBtYXRoOjogZyh1KSA9ICggMS8oMSArIGVeey0gXFxhbHBoYSAqIHUgKyBcXGJldGEpfSlcbi8vIFRoaXMgc2lnbW9pZCBmdW5jdGlvbiBpcyBzY2FsZWQgc28gdGhhdCB0aGUgb3V0cHV0IGlzIGJvdW5kIGJ5XG4vLyB0aGUgaW50ZXJ2YWwgWzAsIDFdLlxuLy8gLi4gbWF0aDo6ICggMS8oMSArIGVeKFxcYmV0YSAqIChcXGFscGhhIC0gdSkpKSAtIDEvKDEgKyBlXihcXGJldGEgKiBcXGFscGhhKSkpL1xuLy8gICAgICggMS8oMSArIGVeKFxcYmV0YSooXFxhbHBoYSAtIDEpKSkgLSAxLygxICsgZV4oXFxiZXRhICogXFxhbHBoYSkpIClcbi8vIFdoZXJlIDptYXRoOiBgXFxhbHBoYWAgaXMgdGhlIHRocmVzaG9sZCBsZXZlbCwgYW5kIDptYXRoOiBgXFxiZXRhYCB0aGVcbi8vIGNvbnRyYXN0IGZhY3RvciB0byBiZSBhcHBsaWVkLlxuLy8gUmVmZXJlbmNlc1xuLy8gLS0tLS0tLS0tLVxuLy8gLi4gW0NUXSBIYW55IEZhcmlkIFwiRnVuZGFtZW50YWxzIG9mIEltYWdlIFByb2Nlc3NpbmdcIlxuLy8gICAgICAgICBodHRwOi8vd3d3LmNzLmRhcnRtb3V0aC5lZHUvZmFyaWQvZG93bmxvYWRzL3R1dG9yaWFscy9maXAucGRmXG5jb25zdCBmcyA9IGBcXFxuI2RlZmluZSBlcHNpbG9uIDAuMDAwMDAwMDFcblxudW5pZm9ybSBmbG9hdCBzaWdtb2lkYWxDb250cmFzdDtcbnVuaWZvcm0gZmxvYXQgc2lnbW9pZGFsQmlhcztcblxuLy8gTk9URTogSW5wdXQgYXJyYXkgbXVzdCBoYXZlIGZsb2F0IHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDEhXG4vLyBOT1RFOiBiaWFzIG11c3QgYmUgYSBzY2FsYXIgZmxvYXQgYmV0d2VlbiAwIGFuZCAxIVxudmVjNCBjYWxjdWxhdGVTaWdtb2lkYWxDb250cmFzdCh2ZWM0IGFyciwgZmxvYXQgY29udHJhc3QsIGZsb2F0IGJpYXMpIHtcbiAgLy8gV2UgdXNlIHRoZSBuYW1lcyBhbHBoYSBhbmQgYmV0YSB0byBtYXRjaCBkb2N1bWVudGF0aW9uLlxuICBmbG9hdCBhbHBoYSA9IGJpYXM7XG4gIGZsb2F0IGJldGEgPSBjb250cmFzdDtcblxuICAvLyBhbHBoYSBtdXN0IGJlID49IDBcbiAgYWxwaGEgPSBjbGFtcChhbHBoYSwgZXBzaWxvbiwgYWxwaGEpO1xuXG4gIGlmIChiZXRhID4gMC4pIHtcbiAgICB2ZWM0IG51bWVyYXRvciA9IDEuIC8gKDEuICsgZXhwKGJldGEgKiAoYWxwaGEgLSBhcnIpKSkgLSAxLiAvIChcbiAgICAgIDEuICsgZXhwKGJldGEgKiBhbHBoYSlcbiAgICApO1xuICAgIGZsb2F0IGRlbm9taW5hdG9yID0gMS4gLyAoMS4gKyBleHAoYmV0YSAqIChhbHBoYSAtIDEuKSkpIC0gMS4gLyAoXG4gICAgICAxLiArIGV4cChiZXRhICogYWxwaGEpXG4gICAgKTtcbiAgICBhcnIgPSBudW1lcmF0b3IgLyBkZW5vbWluYXRvcjtcbiAgfSBlbHNlIGlmIChiZXRhIDwgMC4pIHtcbiAgICBhcnIgPSAoXG4gICAgICAoYmV0YSAqIGFscGhhKSAtIGxvZyhcbiAgICAgICAgKFxuICAgICAgICAgIDEuMCAvIChcbiAgICAgICAgICAgIChhcnIgLyAoMS4wICsgZXhwKChiZXRhICogYWxwaGEpIC0gYmV0YSkpKSAtXG4gICAgICAgICAgICAoYXJyIC8gKDEuMCArIGV4cChiZXRhICogYWxwaGEpKSkgK1xuICAgICAgICAgICAgKDEuMCAvICgxLjAgKyBleHAoYmV0YSAqIGFscGhhKSkpXG4gICAgICAgICAgKVxuICAgICAgICApIC0gMS4wKVxuICAgICkgLyBiZXRhO1xuICB9XG5cbiAgcmV0dXJuIGFycjtcbn1cbmA7XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKFxuICBvcHRzOiB7c2lnbW9pZGFsQ29udHJhc3Q/OiBudW1iZXI7IHNpZ21vaWRhbEJpYXM/OiBudW1iZXJ9ID0ge31cbik6IEdldFVuaWZvcm1zT3V0cHV0IHtcbiAgY29uc3Qge3NpZ21vaWRhbENvbnRyYXN0LCBzaWdtb2lkYWxCaWFzfSA9IG9wdHM7XG5cbiAgaWYgKCEoTnVtYmVyLmlzRmluaXRlKHNpZ21vaWRhbENvbnRyYXN0KSB8fCBOdW1iZXIuaXNGaW5pdGUoc2lnbW9pZGFsQmlhcykpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNpZ21vaWRhbENvbnRyYXN0OiBOdW1iZXIuaXNGaW5pdGUoc2lnbW9pZGFsQ29udHJhc3QpID8gc2lnbW9pZGFsQ29udHJhc3QgOiAwLFxuICAgIHNpZ21vaWRhbEJpYXM6IE51bWJlci5pc0Zpbml0ZShzaWdtb2lkYWxCaWFzKSA/IHNpZ21vaWRhbEJpYXMgOiAwLjVcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IHNpZ21vaWRhbENvbnRyYXN0OiBTaGFkZXJNb2R1bGUgPSB7XG4gIG5hbWU6ICdzaWdtb2lkYWxDb250cmFzdCcsXG4gIGZzLFxuICBnZXRVbmlmb3JtcyxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9NVVRBVEVfQ09MT1InOiBgXG4gICAgaW1hZ2UgPSBjYWxjdWxhdGVTaWdtb2lkYWxDb250cmFzdChpbWFnZSwgc2lnbW9pZGFsQ29udHJhc3QsIHNpZ21vaWRhbEJpYXMpO1xuICAgIGBcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQSxFQUFFLDRpQ0F1Q1A7QUFFRCxTQUFTQyxXQUFXQSxDQUFBLEVBRUM7RUFBQSxJQURuQkMsSUFBMEQsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBRS9ELElBQU9HLGlCQUFpQixHQUFtQkosSUFBSSxDQUF4Q0ksaUJBQWlCO0lBQUVDLGFBQWEsR0FBSUwsSUFBSSxDQUFyQkssYUFBYTtFQUV2QyxJQUFJLEVBQUVDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSCxpQkFBaUIsQ0FBQyxJQUFJRSxNQUFNLENBQUNDLFFBQVEsQ0FBQ0YsYUFBYSxDQUFDLENBQUMsRUFBRTtJQUMzRSxPQUFPLElBQUk7RUFDYjtFQUVBLE9BQU87SUFDTEQsaUJBQWlCLEVBQUVFLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSCxpQkFBaUIsQ0FBQyxHQUFHQSxpQkFBaUIsR0FBRyxDQUFDO0lBQzdFQyxhQUFhLEVBQUVDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDRixhQUFhLENBQUMsR0FBR0EsYUFBYSxHQUFHO0VBQ2xFLENBQUM7QUFDSDtBQUVPLElBQU1ELGlCQUErQixHQUFBSSxPQUFBLENBQUFKLGlCQUFBLEdBQUc7RUFDN0NLLElBQUksRUFBRSxtQkFBbUI7RUFDekJYLEVBQUUsRUFBRkEsRUFBRTtFQUNGQyxXQUFXLEVBQVhBLFdBQVc7RUFDWFcsTUFBTSxFQUFFO0lBQ04sd0JBQXdCO0VBRzFCO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,16 @@
1
+ export { combineBandsFloat, combineBandsUint, combineBandsInt } from './texture/combine-bands';
2
+ export { rgbaImage } from './texture/rgba-image';
3
+ export { maskFloat, maskUint, maskInt } from './texture/mask';
4
+ export { reorderBands } from './texture/reorder-bands';
5
+ export { colormap } from './color/colormap';
6
+ export { linearRescale } from './color/linear-rescale';
7
+ export { sigmoidalContrast } from './color/sigmoidal-contrast';
8
+ export { gammaContrast } from './color/gamma-contrast';
9
+ export { saturation } from './color/saturation';
10
+ export { filter } from './color/filter';
11
+ export { pansharpenBrovey } from './pansharpen/pansharpen-brovey';
12
+ export { enhancedVegetationIndex } from './spectral-indices/evi';
13
+ export { modifiedSoilAdjustedVegetationIndex } from './spectral-indices/msavi';
14
+ export { normalizedDifference } from './spectral-indices/normalized-difference';
15
+ export { soilAdjustedVegetationIndex } from './spectral-indices/savi';
16
+ export type { ShaderModule } from './types';
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "colormap", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _colormap.colormap;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "combineBandsFloat", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _combineBands.combineBandsFloat;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "combineBandsInt", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _combineBands.combineBandsInt;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "combineBandsUint", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _combineBands.combineBandsUint;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "enhancedVegetationIndex", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _evi.enhancedVegetationIndex;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "filter", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _filter.filter;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "gammaContrast", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _gammaContrast.gammaContrast;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "linearRescale", {
49
+ enumerable: true,
50
+ get: function get() {
51
+ return _linearRescale.linearRescale;
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "maskFloat", {
55
+ enumerable: true,
56
+ get: function get() {
57
+ return _mask.maskFloat;
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "maskInt", {
61
+ enumerable: true,
62
+ get: function get() {
63
+ return _mask.maskInt;
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "maskUint", {
67
+ enumerable: true,
68
+ get: function get() {
69
+ return _mask.maskUint;
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "modifiedSoilAdjustedVegetationIndex", {
73
+ enumerable: true,
74
+ get: function get() {
75
+ return _msavi.modifiedSoilAdjustedVegetationIndex;
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "normalizedDifference", {
79
+ enumerable: true,
80
+ get: function get() {
81
+ return _normalizedDifference.normalizedDifference;
82
+ }
83
+ });
84
+ Object.defineProperty(exports, "pansharpenBrovey", {
85
+ enumerable: true,
86
+ get: function get() {
87
+ return _pansharpenBrovey.pansharpenBrovey;
88
+ }
89
+ });
90
+ Object.defineProperty(exports, "reorderBands", {
91
+ enumerable: true,
92
+ get: function get() {
93
+ return _reorderBands.reorderBands;
94
+ }
95
+ });
96
+ Object.defineProperty(exports, "rgbaImage", {
97
+ enumerable: true,
98
+ get: function get() {
99
+ return _rgbaImage.rgbaImage;
100
+ }
101
+ });
102
+ Object.defineProperty(exports, "saturation", {
103
+ enumerable: true,
104
+ get: function get() {
105
+ return _saturation.saturation;
106
+ }
107
+ });
108
+ Object.defineProperty(exports, "sigmoidalContrast", {
109
+ enumerable: true,
110
+ get: function get() {
111
+ return _sigmoidalContrast.sigmoidalContrast;
112
+ }
113
+ });
114
+ Object.defineProperty(exports, "soilAdjustedVegetationIndex", {
115
+ enumerable: true,
116
+ get: function get() {
117
+ return _savi.soilAdjustedVegetationIndex;
118
+ }
119
+ });
120
+ var _combineBands = require("./texture/combine-bands");
121
+ var _rgbaImage = require("./texture/rgba-image");
122
+ var _mask = require("./texture/mask");
123
+ var _reorderBands = require("./texture/reorder-bands");
124
+ var _colormap = require("./color/colormap");
125
+ var _linearRescale = require("./color/linear-rescale");
126
+ var _sigmoidalContrast = require("./color/sigmoidal-contrast");
127
+ var _gammaContrast = require("./color/gamma-contrast");
128
+ var _saturation = require("./color/saturation");
129
+ var _filter = require("./color/filter");
130
+ var _pansharpenBrovey = require("./pansharpen/pansharpen-brovey");
131
+ var _evi = require("./spectral-indices/evi");
132
+ var _msavi = require("./spectral-indices/msavi");
133
+ var _normalizedDifference = require("./spectral-indices/normalized-difference");
134
+ var _savi = require("./spectral-indices/savi");
135
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tYmluZUJhbmRzIiwicmVxdWlyZSIsIl9yZ2JhSW1hZ2UiLCJfbWFzayIsIl9yZW9yZGVyQmFuZHMiLCJfY29sb3JtYXAiLCJfbGluZWFyUmVzY2FsZSIsIl9zaWdtb2lkYWxDb250cmFzdCIsIl9nYW1tYUNvbnRyYXN0IiwiX3NhdHVyYXRpb24iLCJfZmlsdGVyIiwiX3BhbnNoYXJwZW5Ccm92ZXkiLCJfZXZpIiwiX21zYXZpIiwiX25vcm1hbGl6ZWREaWZmZXJlbmNlIiwiX3NhdmkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIENyZWF0ZSB0ZXh0dXJlXG5leHBvcnQge2NvbWJpbmVCYW5kc0Zsb2F0LCBjb21iaW5lQmFuZHNVaW50LCBjb21iaW5lQmFuZHNJbnR9IGZyb20gJy4vdGV4dHVyZS9jb21iaW5lLWJhbmRzJztcbmV4cG9ydCB7cmdiYUltYWdlfSBmcm9tICcuL3RleHR1cmUvcmdiYS1pbWFnZSc7XG5leHBvcnQge21hc2tGbG9hdCwgbWFza1VpbnQsIG1hc2tJbnR9IGZyb20gJy4vdGV4dHVyZS9tYXNrJztcbmV4cG9ydCB7cmVvcmRlckJhbmRzfSBmcm9tICcuL3RleHR1cmUvcmVvcmRlci1iYW5kcyc7XG5cbi8vIENvbG9yIG9wZXJhdGlvbnNcbmV4cG9ydCB7Y29sb3JtYXB9IGZyb20gJy4vY29sb3IvY29sb3JtYXAnO1xuZXhwb3J0IHtsaW5lYXJSZXNjYWxlfSBmcm9tICcuL2NvbG9yL2xpbmVhci1yZXNjYWxlJztcbmV4cG9ydCB7c2lnbW9pZGFsQ29udHJhc3R9IGZyb20gJy4vY29sb3Ivc2lnbW9pZGFsLWNvbnRyYXN0JztcbmV4cG9ydCB7Z2FtbWFDb250cmFzdH0gZnJvbSAnLi9jb2xvci9nYW1tYS1jb250cmFzdCc7XG5leHBvcnQge3NhdHVyYXRpb259IGZyb20gJy4vY29sb3Ivc2F0dXJhdGlvbic7XG5leHBvcnQge2ZpbHRlcn0gZnJvbSAnLi9jb2xvci9maWx0ZXInO1xuXG4vLyBQYW5zaGFycGVuaW5nXG5leHBvcnQge3BhbnNoYXJwZW5Ccm92ZXl9IGZyb20gJy4vcGFuc2hhcnBlbi9wYW5zaGFycGVuLWJyb3ZleSc7XG5cbi8vIFNwZWN0cmFsIGluZGljZXNcbmV4cG9ydCB7ZW5oYW5jZWRWZWdldGF0aW9uSW5kZXh9IGZyb20gJy4vc3BlY3RyYWwtaW5kaWNlcy9ldmknO1xuZXhwb3J0IHttb2RpZmllZFNvaWxBZGp1c3RlZFZlZ2V0YXRpb25JbmRleH0gZnJvbSAnLi9zcGVjdHJhbC1pbmRpY2VzL21zYXZpJztcbmV4cG9ydCB7bm9ybWFsaXplZERpZmZlcmVuY2V9IGZyb20gJy4vc3BlY3RyYWwtaW5kaWNlcy9ub3JtYWxpemVkLWRpZmZlcmVuY2UnO1xuZXhwb3J0IHtzb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXh9IGZyb20gJy4vc3BlY3RyYWwtaW5kaWNlcy9zYXZpJztcblxuZXhwb3J0IHR5cGUge1NoYWRlck1vZHVsZX0gZnJvbSAnLi90eXBlcyc7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsYUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsYUFBQSxHQUFBSCxPQUFBO0FBR0EsSUFBQUksU0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssY0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sa0JBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGNBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFdBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLE9BQUEsR0FBQVQsT0FBQTtBQUdBLElBQUFVLGlCQUFBLEdBQUFWLE9BQUE7QUFHQSxJQUFBVyxJQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxNQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxxQkFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsS0FBQSxHQUFBZCxPQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,2 @@
1
+ import { ShaderModule } from '../types';
2
+ export declare const pansharpenBrovey: ShaderModule;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.pansharpenBrovey = void 0;
7
+ // SPDX-License-Identifier: MIT
8
+ // Copyright contributors to the kepler.gl project
9
+
10
+ // Brovey Method: Each resampled, multispectral pixel is
11
+ // multiplied by the ratio of the corresponding
12
+ // panchromatic pixel intensity to the sum of all the
13
+ // multispectral intensities.
14
+ // Original code from https://github.com/mapbox/rio-pansharpen
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";
18
+ function getUniforms() {
19
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
20
+ var imagePan = opts.imagePan,
21
+ _opts$panWeight = opts.panWeight,
22
+ panWeight = _opts$panWeight === void 0 ? 0.2 : _opts$panWeight;
23
+ if (!imagePan) {
24
+ return null;
25
+ }
26
+ return {
27
+ bitmapTexturePan: imagePan,
28
+ panWeight: panWeight
29
+ };
30
+ }
31
+ var pansharpenBrovey = exports.pansharpenBrovey = {
32
+ name: 'pansharpen_brovey',
33
+ fs1: fs1,
34
+ fs2: fs2,
35
+ defines: {
36
+ SAMPLER_TYPE: 'sampler2D'
37
+ },
38
+ getUniforms: getUniforms,
39
+ 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 "
41
+ }
42
+ };
43
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmczEiLCJmczIiLCJnZXRVbmlmb3JtcyIsIm9wdHMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJpbWFnZVBhbiIsIl9vcHRzJHBhbldlaWdodCIsInBhbldlaWdodCIsImJpdG1hcFRleHR1cmVQYW4iLCJwYW5zaGFycGVuQnJvdmV5IiwiZXhwb3J0cyIsIm5hbWUiLCJkZWZpbmVzIiwiU0FNUExFUl9UWVBFIiwiaW5qZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci93ZWJnbC9wYW5zaGFycGVuL3BhbnNoYXJwZW4tYnJvdmV5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7VGV4dHVyZTJEfSBmcm9tICdAbHVtYS5nbC93ZWJnbCc7XG5cbmltcG9ydCB7R2V0VW5pZm9ybXNPdXRwdXQsIFNoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyBCcm92ZXkgTWV0aG9kOiBFYWNoIHJlc2FtcGxlZCwgbXVsdGlzcGVjdHJhbCBwaXhlbCBpc1xuLy8gbXVsdGlwbGllZCBieSB0aGUgcmF0aW8gb2YgdGhlIGNvcnJlc3BvbmRpbmdcbi8vIHBhbmNocm9tYXRpYyBwaXhlbCBpbnRlbnNpdHkgdG8gdGhlIHN1bSBvZiBhbGwgdGhlXG4vLyBtdWx0aXNwZWN0cmFsIGludGVuc2l0aWVzLlxuLy8gT3JpZ2luYWwgY29kZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXBib3gvcmlvLXBhbnNoYXJwZW5cbi8vXG5jb25zdCBmczEgPSBgXFxcbnVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVQYW47XG51bmlmb3JtIGZsb2F0IHBhbldlaWdodDtcblxuZmxvYXQgcGFuc2hhcnBlbl9icm92ZXlfcmF0aW8odmVjNCByZ2IsIGZsb2F0IHBhbiwgZmxvYXQgd2VpZ2h0KSB7XG4gIHJldHVybiBwYW4gLyAoKHJnYi5yICsgcmdiLmcgKyByZ2IuYiAqIHdlaWdodCkgLyAoMi4gKyB3ZWlnaHQpKTtcbn1cblxudmVjNCBwYW5zaGFycGVuX2Jyb3ZleV9jYWxjKHZlYzQgcmdiLCBmbG9hdCBwYW4sIGZsb2F0IHdlaWdodCkge1xuICBmbG9hdCByYXRpbyA9IHBhbnNoYXJwZW5fYnJvdmV5X3JhdGlvKHJnYiwgcGFuLCB3ZWlnaHQpO1xuICByZXR1cm4gcmF0aW8gKiByZ2I7XG59XG5gO1xuXG5jb25zdCBmczIgPSBgXFxcbnByZWNpc2lvbiBtZWRpdW1wIHVzYW1wbGVyMkQ7XG5cbiNpZmRlZiBTQU1QTEVSX1RZUEVcbiAgdW5pZm9ybSBTQU1QTEVSX1RZUEUgYml0bWFwVGV4dHVyZVBhbjtcbiNlbHNlXG4gIHVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVQYW47XG4jZW5kaWZcblxudW5pZm9ybSBmbG9hdCBwYW5XZWlnaHQ7XG5cbmZsb2F0IHBhbnNoYXJwZW5fYnJvdmV5X3JhdGlvKHZlYzQgcmdiLCBmbG9hdCBwYW4sIGZsb2F0IHdlaWdodCkge1xuICByZXR1cm4gcGFuIC8gKChyZ2IuciArIHJnYi5nICsgcmdiLmIgKiB3ZWlnaHQpIC8gKDIuICsgd2VpZ2h0KSk7XG59XG5cbnZlYzQgcGFuc2hhcnBlbl9icm92ZXlfY2FsYyh2ZWM0IHJnYiwgZmxvYXQgcGFuLCBmbG9hdCB3ZWlnaHQpIHtcbiAgZmxvYXQgcmF0aW8gPSBwYW5zaGFycGVuX2Jyb3ZleV9yYXRpbyhyZ2IsIHBhbiwgd2VpZ2h0KTtcbiAgcmV0dXJuIHJhdGlvICogcmdiO1xufVxuYDtcblxuZnVuY3Rpb24gZ2V0VW5pZm9ybXMob3B0czoge2ltYWdlUGFuPzogVGV4dHVyZTJEOyBwYW5XZWlnaHQ/OiBudW1iZXJ9ID0ge30pOiBHZXRVbmlmb3Jtc091dHB1dCB7XG4gIGNvbnN0IHtpbWFnZVBhbiwgcGFuV2VpZ2h0ID0gMC4yfSA9IG9wdHM7XG5cbiAgaWYgKCFpbWFnZVBhbikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBiaXRtYXBUZXh0dXJlUGFuOiBpbWFnZVBhbixcbiAgICBwYW5XZWlnaHRcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IHBhbnNoYXJwZW5Ccm92ZXk6IFNoYWRlck1vZHVsZSA9IHtcbiAgbmFtZTogJ3BhbnNoYXJwZW5fYnJvdmV5JyxcbiAgZnMxLFxuICBmczIsXG4gIGRlZmluZXM6IHtcbiAgICBTQU1QTEVSX1RZUEU6ICdzYW1wbGVyMkQnXG4gIH0sXG4gIGdldFVuaWZvcm1zLFxuICBpbmplY3Q6IHtcbiAgICAnZnM6REVDS0dMX01VVEFURV9DT0xPUic6IGBcbiAgICBmbG9hdCBwYW5fYmFuZCA9IGZsb2F0KHRleHR1cmUyRChiaXRtYXBUZXh0dXJlUGFuLCBjb29yZCkucik7XG4gICAgaW1hZ2UgPSBwYW5zaGFycGVuX2Jyb3ZleV9jYWxjKGltYWdlLCBwYW5fYmFuZCwgcGFuV2VpZ2h0KTtcbiAgICBgXG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsR0FBRywyV0FZUjtBQUVELElBQU1DLEdBQUcsOGRBbUJSO0FBRUQsU0FBU0MsV0FBV0EsQ0FBQSxFQUEyRTtFQUFBLElBQTFFQyxJQUFnRCxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFDeEUsSUFBT0csUUFBUSxHQUFxQkosSUFBSSxDQUFqQ0ksUUFBUTtJQUFBQyxlQUFBLEdBQXFCTCxJQUFJLENBQXZCTSxTQUFTO0lBQVRBLFNBQVMsR0FBQUQsZUFBQSxjQUFHLEdBQUcsR0FBQUEsZUFBQTtFQUVoQyxJQUFJLENBQUNELFFBQVEsRUFBRTtJQUNiLE9BQU8sSUFBSTtFQUNiO0VBRUEsT0FBTztJQUNMRyxnQkFBZ0IsRUFBRUgsUUFBUTtJQUMxQkUsU0FBUyxFQUFUQTtFQUNGLENBQUM7QUFDSDtBQUVPLElBQU1FLGdCQUE4QixHQUFBQyxPQUFBLENBQUFELGdCQUFBLEdBQUc7RUFDNUNFLElBQUksRUFBRSxtQkFBbUI7RUFDekJiLEdBQUcsRUFBSEEsR0FBRztFQUNIQyxHQUFHLEVBQUhBLEdBQUc7RUFDSGEsT0FBTyxFQUFFO0lBQ1BDLFlBQVksRUFBRTtFQUNoQixDQUFDO0VBQ0RiLFdBQVcsRUFBWEEsV0FBVztFQUNYYyxNQUFNLEVBQUU7SUFDTix3QkFBd0I7RUFJMUI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,2 @@
1
+ import { ShaderModule } from '../types';
2
+ export declare const enhancedVegetationIndex: ShaderModule;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.enhancedVegetationIndex = void 0;
7
+ // SPDX-License-Identifier: MIT
8
+ // Copyright contributors to the kepler.gl project
9
+
10
+ // Calculate enhanced vegetation index
11
+ // Expected to be ordered:
12
+ // red: Landsat 8 band 5
13
+ // green: Landsat 8 band 4
14
+ // blue: Landsat 8 band 2
15
+ //
16
+ // EVI = 2.5 * ((Band 5 – Band 4) / (Band 5 + 6 * Band 4 – 7.5 * Band 2 + 1))
17
+ // https://www.usgs.gov/land-resources/nli/landsat/landsat-enhanced-vegetation-index
18
+ var fs = "float enhanced_vegetation_index_calc(vec4 image) {\n float band5 = image.r;\n float band4 = image.g;\n float band2 = image.b;\n\n float numerator = band5 - band4;\n float denominator = band5 + (6. * band4) - (7.5 * band2) + 1.;\n return 2.5 * (numerator / denominator);\n}\n";
19
+ var enhancedVegetationIndex = exports.enhancedVegetationIndex = {
20
+ name: 'enhanced_vegetation_index',
21
+ fs: fs,
22
+ inject: {
23
+ 'fs:DECKGL_MUTATE_COLOR': "\n image = vec4(enhanced_vegetation_index_calc(image), 0., 0., 0.);\n "
24
+ }
25
+ };
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImVuaGFuY2VkVmVnZXRhdGlvbkluZGV4IiwiZXhwb3J0cyIsIm5hbWUiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL3NwZWN0cmFsLWluZGljZXMvZXZpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7U2hhZGVyTW9kdWxlfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vIENhbGN1bGF0ZSBlbmhhbmNlZCB2ZWdldGF0aW9uIGluZGV4XG4vLyBFeHBlY3RlZCB0byBiZSBvcmRlcmVkOlxuLy8gcmVkOiBMYW5kc2F0IDggYmFuZCA1XG4vLyBncmVlbjogTGFuZHNhdCA4IGJhbmQgNFxuLy8gYmx1ZTogTGFuZHNhdCA4IGJhbmQgMlxuLy9cbi8vIEVWSSA9IDIuNSAqICgoQmFuZCA1IOKAkyBCYW5kIDQpIC8gKEJhbmQgNSArIDYgKiBCYW5kIDQg4oCTIDcuNSAqIEJhbmQgMiArIDEpKVxuLy8gaHR0cHM6Ly93d3cudXNncy5nb3YvbGFuZC1yZXNvdXJjZXMvbmxpL2xhbmRzYXQvbGFuZHNhdC1lbmhhbmNlZC12ZWdldGF0aW9uLWluZGV4XG5jb25zdCBmcyA9IGBcXFxuZmxvYXQgZW5oYW5jZWRfdmVnZXRhdGlvbl9pbmRleF9jYWxjKHZlYzQgaW1hZ2UpIHtcbiAgZmxvYXQgYmFuZDUgPSBpbWFnZS5yO1xuICBmbG9hdCBiYW5kNCA9IGltYWdlLmc7XG4gIGZsb2F0IGJhbmQyID0gaW1hZ2UuYjtcblxuICBmbG9hdCBudW1lcmF0b3IgPSBiYW5kNSAtIGJhbmQ0O1xuICBmbG9hdCBkZW5vbWluYXRvciA9IGJhbmQ1ICsgKDYuICogYmFuZDQpIC0gKDcuNSAqIGJhbmQyKSArIDEuO1xuICByZXR1cm4gMi41ICogKG51bWVyYXRvciAvIGRlbm9taW5hdG9yKTtcbn1cbmA7XG5cbmV4cG9ydCBjb25zdCBlbmhhbmNlZFZlZ2V0YXRpb25JbmRleDogU2hhZGVyTW9kdWxlID0ge1xuICBuYW1lOiAnZW5oYW5jZWRfdmVnZXRhdGlvbl9pbmRleCcsXG4gIGZzLFxuICBpbmplY3Q6IHtcbiAgICAnZnM6REVDS0dMX01VVEFURV9DT0xPUic6IGBcbiAgICBpbWFnZSA9IHZlYzQoZW5oYW5jZWRfdmVnZXRhdGlvbl9pbmRleF9jYWxjKGltYWdlKSwgMC4sIDAuLCAwLik7XG4gICAgYFxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQSxFQUFFLDZSQVVQO0FBRU0sSUFBTUMsdUJBQXFDLEdBQUFDLE9BQUEsQ0FBQUQsdUJBQUEsR0FBRztFQUNuREUsSUFBSSxFQUFFLDJCQUEyQjtFQUNqQ0gsRUFBRSxFQUFGQSxFQUFFO0VBQ0ZJLE1BQU0sRUFBRTtJQUNOLHdCQUF3QjtFQUcxQjtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,2 @@
1
+ import { ShaderModule } from '../types';
2
+ export declare const modifiedSoilAdjustedVegetationIndex: ShaderModule;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.modifiedSoilAdjustedVegetationIndex = void 0;
7
+ // SPDX-License-Identifier: MIT
8
+ // Copyright contributors to the kepler.gl project
9
+
10
+ // Calculate modified soil-adjusted vegetation index
11
+ // Expected to be ordered:
12
+ // red: Landsat 8 band 5
13
+ // green: Landsat 8 band 4
14
+ //
15
+ // MSAVI = (2 * Band 5 + 1 – sqrt ((2 * Band 5 + 1)^2 – 8 * (Band 5 – Band 4))) / 2
16
+ // https://www.usgs.gov/land-resources/nli/landsat/landsat-modified-soil-adjusted-vegetation-index
17
+ var fs = "float modified_soil_adjusted_vegetation_index_calc(vec4 image) {\n float band5 = image.r;\n float band4 = image.g;\n\n float to_sqrt = ((2. * band5 + 1.) * (2. * band5 + 1.)) - (8. * (band5 - band4));\n return ((2. * band5) + 1. - sqrt(to_sqrt)) / 2.;\n}\n";
18
+ var modifiedSoilAdjustedVegetationIndex = exports.modifiedSoilAdjustedVegetationIndex = {
19
+ name: 'modified_soil_adjusted_vegetation_index',
20
+ fs: fs,
21
+ inject: {
22
+ 'fs:DECKGL_MUTATE_COLOR': "\n image = vec4(modified_soil_adjusted_vegetation_index_calc(image), 0., 0., 0.);\n "
23
+ }
24
+ };
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsIm1vZGlmaWVkU29pbEFkanVzdGVkVmVnZXRhdGlvbkluZGV4IiwiZXhwb3J0cyIsIm5hbWUiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL3NwZWN0cmFsLWluZGljZXMvbXNhdmkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtTaGFkZXJNb2R1bGV9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gQ2FsY3VsYXRlIG1vZGlmaWVkIHNvaWwtYWRqdXN0ZWQgdmVnZXRhdGlvbiBpbmRleFxuLy8gRXhwZWN0ZWQgdG8gYmUgb3JkZXJlZDpcbi8vIHJlZDogTGFuZHNhdCA4IGJhbmQgNVxuLy8gZ3JlZW46IExhbmRzYXQgOCBiYW5kIDRcbi8vXG4vLyBNU0FWSSA9ICgyICogQmFuZCA1ICsgMSDigJMgc3FydCAoKDIgKiBCYW5kIDUgKyAxKV4yIOKAkyA4ICogKEJhbmQgNSDigJMgQmFuZCA0KSkpIC8gMlxuLy8gaHR0cHM6Ly93d3cudXNncy5nb3YvbGFuZC1yZXNvdXJjZXMvbmxpL2xhbmRzYXQvbGFuZHNhdC1tb2RpZmllZC1zb2lsLWFkanVzdGVkLXZlZ2V0YXRpb24taW5kZXhcbmNvbnN0IGZzID0gYFxcXG5mbG9hdCBtb2RpZmllZF9zb2lsX2FkanVzdGVkX3ZlZ2V0YXRpb25faW5kZXhfY2FsYyh2ZWM0IGltYWdlKSB7XG4gIGZsb2F0IGJhbmQ1ID0gaW1hZ2UucjtcbiAgZmxvYXQgYmFuZDQgPSBpbWFnZS5nO1xuXG4gIGZsb2F0IHRvX3NxcnQgPSAoKDIuICogYmFuZDUgKyAxLikgKiAoMi4gKiBiYW5kNSArIDEuKSkgLSAoOC4gKiAoYmFuZDUgLSBiYW5kNCkpO1xuICByZXR1cm4gKCgyLiAqIGJhbmQ1KSArIDEuIC0gc3FydCh0b19zcXJ0KSkgLyAyLjtcbn1cbmA7XG5cbmV4cG9ydCBjb25zdCBtb2RpZmllZFNvaWxBZGp1c3RlZFZlZ2V0YXRpb25JbmRleDogU2hhZGVyTW9kdWxlID0ge1xuICBuYW1lOiAnbW9kaWZpZWRfc29pbF9hZGp1c3RlZF92ZWdldGF0aW9uX2luZGV4JyxcbiAgZnMsXG4gIGluamVjdDoge1xuICAgICdmczpERUNLR0xfTVVUQVRFX0NPTE9SJzogYFxuICAgIGltYWdlID0gdmVjNChtb2RpZmllZF9zb2lsX2FkanVzdGVkX3ZlZ2V0YXRpb25faW5kZXhfY2FsYyhpbWFnZSksIDAuLCAwLiwgMC4pO1xuICAgIGBcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1BLEVBQUUseVFBUVA7QUFFTSxJQUFNQyxtQ0FBaUQsR0FBQUMsT0FBQSxDQUFBRCxtQ0FBQSxHQUFHO0VBQy9ERSxJQUFJLEVBQUUseUNBQXlDO0VBQy9DSCxFQUFFLEVBQUZBLEVBQUU7RUFDRkksTUFBTSxFQUFFO0lBQ04sd0JBQXdCO0VBRzFCO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,2 @@
1
+ import { ShaderModule } from '../types';
2
+ export declare const normalizedDifference: ShaderModule;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.normalizedDifference = void 0;
7
+ // SPDX-License-Identifier: MIT
8
+ // Copyright contributors to the kepler.gl project
9
+
10
+ // Calculate standard normalized difference
11
+ var fs = "float normalized_difference_calc(vec4 image) {\n return ((image.r - image.g) / (image.r + image.g));\n}\n";
12
+ var normalizedDifference = exports.normalizedDifference = {
13
+ name: 'normalized_difference',
14
+ fs: fs,
15
+ inject: {
16
+ 'fs:DECKGL_MUTATE_COLOR': "\n image = vec4(normalized_difference_calc(image), 0., 0., 0.);\n "
17
+ }
18
+ };
19
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsIm5vcm1hbGl6ZWREaWZmZXJlbmNlIiwiZXhwb3J0cyIsIm5hbWUiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL3NwZWN0cmFsLWluZGljZXMvbm9ybWFsaXplZC1kaWZmZXJlbmNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7U2hhZGVyTW9kdWxlfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vIENhbGN1bGF0ZSBzdGFuZGFyZCBub3JtYWxpemVkIGRpZmZlcmVuY2VcbmNvbnN0IGZzID0gYFxcXG5mbG9hdCBub3JtYWxpemVkX2RpZmZlcmVuY2VfY2FsYyh2ZWM0IGltYWdlKSB7XG4gIHJldHVybiAoKGltYWdlLnIgLSBpbWFnZS5nKSAvIChpbWFnZS5yICsgaW1hZ2UuZykpO1xufVxuYDtcblxuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZWREaWZmZXJlbmNlOiBTaGFkZXJNb2R1bGUgPSB7XG4gIG5hbWU6ICdub3JtYWxpemVkX2RpZmZlcmVuY2UnLFxuICBmcyxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9NVVRBVEVfQ09MT1InOiBgXG4gICAgaW1hZ2UgPSB2ZWM0KG5vcm1hbGl6ZWRfZGlmZmVyZW5jZV9jYWxjKGltYWdlKSwgMC4sIDAuLCAwLik7XG4gICAgYFxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQUlBO0FBQ0EsSUFBTUEsRUFBRSwrR0FJUDtBQUVNLElBQU1DLG9CQUFrQyxHQUFBQyxPQUFBLENBQUFELG9CQUFBLEdBQUc7RUFDaERFLElBQUksRUFBRSx1QkFBdUI7RUFDN0JILEVBQUUsRUFBRkEsRUFBRTtFQUNGSSxNQUFNLEVBQUU7SUFDTix3QkFBd0I7RUFHMUI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,2 @@
1
+ import { ShaderModule } from '../types';
2
+ export declare const soilAdjustedVegetationIndex: ShaderModule;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.soilAdjustedVegetationIndex = void 0;
7
+ // SPDX-License-Identifier: MIT
8
+ // Copyright contributors to the kepler.gl project
9
+
10
+ // Calculate soil-adjusted vegetation index
11
+ // SAVI = ((Band 5 – Band 4) / (Band 5 + Band 4 + 0.5)) * (1.5).
12
+ // https://www.usgs.gov/land-resources/nli/landsat/landsat-soil-adjusted-vegetation-index
13
+ var fs = "float soil_adjusted_vegetation_index_calc(vec4 image) {\n float band5 = image.r;\n float band4 = image.g;\n\n float numerator = band5 - band4;\n float denominator = (band5 + band4 + 0.5) * 1.5;\n return numerator / denominator;\n}\n";
14
+ var soilAdjustedVegetationIndex = exports.soilAdjustedVegetationIndex = {
15
+ name: 'soil_adjusted_vegetation_index',
16
+ fs: fs,
17
+ inject: {
18
+ 'fs:DECKGL_MUTATE_COLOR': "\n image = vec4(soil_adjusted_vegetation_index_calc(image), 0., 0., 0.);\n "
19
+ }
20
+ };
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsInNvaWxBZGp1c3RlZFZlZ2V0YXRpb25JbmRleCIsImV4cG9ydHMiLCJuYW1lIiwiaW5qZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci93ZWJnbC9zcGVjdHJhbC1pbmRpY2VzL3NhdmkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtTaGFkZXJNb2R1bGV9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gQ2FsY3VsYXRlIHNvaWwtYWRqdXN0ZWQgdmVnZXRhdGlvbiBpbmRleFxuLy8gU0FWSSA9ICgoQmFuZCA1IOKAkyBCYW5kIDQpIC8gKEJhbmQgNSArIEJhbmQgNCArIDAuNSkpICogKDEuNSkuXG4vLyBodHRwczovL3d3dy51c2dzLmdvdi9sYW5kLXJlc291cmNlcy9ubGkvbGFuZHNhdC9sYW5kc2F0LXNvaWwtYWRqdXN0ZWQtdmVnZXRhdGlvbi1pbmRleFxuY29uc3QgZnMgPSBgXFxcbmZsb2F0IHNvaWxfYWRqdXN0ZWRfdmVnZXRhdGlvbl9pbmRleF9jYWxjKHZlYzQgaW1hZ2UpIHtcbiAgZmxvYXQgYmFuZDUgPSBpbWFnZS5yO1xuICBmbG9hdCBiYW5kNCA9IGltYWdlLmc7XG5cbiAgZmxvYXQgbnVtZXJhdG9yID0gYmFuZDUgLSBiYW5kNDtcbiAgZmxvYXQgZGVub21pbmF0b3IgPSAoYmFuZDUgKyBiYW5kNCArIDAuNSkgKiAxLjU7XG4gIHJldHVybiBudW1lcmF0b3IgLyBkZW5vbWluYXRvcjtcbn1cbmA7XG5cbmV4cG9ydCBjb25zdCBzb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXg6IFNoYWRlck1vZHVsZSA9IHtcbiAgbmFtZTogJ3NvaWxfYWRqdXN0ZWRfdmVnZXRhdGlvbl9pbmRleCcsXG4gIGZzLFxuICBpbmplY3Q6IHtcbiAgICAnZnM6REVDS0dMX01VVEFURV9DT0xPUic6IGBcbiAgICBpbWFnZSA9IHZlYzQoc29pbF9hZGp1c3RlZF92ZWdldGF0aW9uX2luZGV4X2NhbGMoaW1hZ2UpLCAwLiwgMC4sIDAuKTtcbiAgICBgXG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7O0FBSUE7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsRUFBRSxrUEFTUDtBQUVNLElBQU1DLDJCQUF5QyxHQUFBQyxPQUFBLENBQUFELDJCQUFBLEdBQUc7RUFDdkRFLElBQUksRUFBRSxnQ0FBZ0M7RUFDdENILEVBQUUsRUFBRkEsRUFBRTtFQUNGSSxNQUFNLEVBQUU7SUFDTix3QkFBd0I7RUFHMUI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,4 @@
1
+ import { ShaderModule } from '../types';
2
+ export declare const combineBandsFloat: ShaderModule;
3
+ export declare const combineBandsUint: ShaderModule;
4
+ export declare const combineBandsInt: ShaderModule;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.combineBandsUint = exports.combineBandsInt = exports.combineBandsFloat = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
+ // SPDX-License-Identifier: MIT
13
+ // Copyright contributors to the kepler.gl project
14
+
15
+ function getUniforms() {
16
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
17
+ var imageBands = opts.imageBands;
18
+ if (!imageBands || imageBands.length === 0) {
19
+ return null;
20
+ }
21
+ var _imageBands = (0, _slicedToArray2["default"])(imageBands, 4),
22
+ bitmapTextureR = _imageBands[0],
23
+ bitmapTextureG = _imageBands[1],
24
+ bitmapTextureB = _imageBands[2],
25
+ bitmapTextureA = _imageBands[3];
26
+
27
+ // return default values to prevent deck.gl validation warnings.
28
+ // Note: all bands must be set for the shadow effect to work as expected.
29
+ return {
30
+ bitmapTextureR: bitmapTextureR || bitmapTextureR,
31
+ bitmapTextureG: bitmapTextureG || bitmapTextureR,
32
+ bitmapTextureB: bitmapTextureB || bitmapTextureR,
33
+ bitmapTextureA: bitmapTextureA || bitmapTextureR
34
+ };
35
+ }
36
+ var fs1 = "uniform sampler2D bitmapTextureR;\nuniform sampler2D bitmapTextureG;\nuniform sampler2D bitmapTextureB;\nuniform sampler2D bitmapTextureA;\n";
37
+ var fs2 = "precision mediump float;\nprecision mediump int;\nprecision mediump usampler2D;\n\n#ifdef SAMPLER_TYPE\n uniform SAMPLER_TYPE bitmapTextureR;\n uniform SAMPLER_TYPE bitmapTextureG;\n uniform SAMPLER_TYPE bitmapTextureB;\n uniform SAMPLER_TYPE bitmapTextureA;\n#else\n uniform sampler2D bitmapTextureR;\n uniform sampler2D bitmapTextureG;\n uniform sampler2D bitmapTextureB;\n uniform sampler2D bitmapTextureA;\n#endif\n";
38
+ var combineBands = {
39
+ name: 'combine-bands',
40
+ fs1: fs1,
41
+ fs2: fs2,
42
+ getUniforms: getUniforms,
43
+ defines: {
44
+ SAMPLER_TYPE: 'sampler2D'
45
+ },
46
+ inject: {
47
+ 'fs:DECKGL_CREATE_COLOR': "\n float channel1 = float(texture2D(bitmapTextureR, coord).r);\n float channel2 = float(texture2D(bitmapTextureG, coord).r);\n float channel3 = float(texture2D(bitmapTextureB, coord).r);\n float channel4 = float(texture2D(bitmapTextureA, coord).r);\n\n image = vec4(channel1, channel2, channel3, channel4);\n "
48
+ }
49
+ };
50
+ var combineBandsFloat = exports.combineBandsFloat = _objectSpread(_objectSpread({}, combineBands), {}, {
51
+ name: 'combine-bands-float'
52
+ });
53
+ var combineBandsUint = exports.combineBandsUint = _objectSpread(_objectSpread({}, combineBands), {}, {
54
+ name: 'combine-bands-uint',
55
+ defines: {
56
+ SAMPLER_TYPE: 'usampler2D'
57
+ }
58
+ });
59
+ var combineBandsInt = exports.combineBandsInt = _objectSpread(_objectSpread({}, combineBands), {}, {
60
+ name: 'combine-bands-int',
61
+ defines: {
62
+ SAMPLER_TYPE: 'isampler2D'
63
+ }
64
+ });
65
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRVbmlmb3JtcyIsIm9wdHMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJpbWFnZUJhbmRzIiwiX2ltYWdlQmFuZHMiLCJfc2xpY2VkVG9BcnJheTIiLCJiaXRtYXBUZXh0dXJlUiIsImJpdG1hcFRleHR1cmVHIiwiYml0bWFwVGV4dHVyZUIiLCJiaXRtYXBUZXh0dXJlQSIsImZzMSIsImZzMiIsImNvbWJpbmVCYW5kcyIsIm5hbWUiLCJkZWZpbmVzIiwiU0FNUExFUl9UWVBFIiwiaW5qZWN0IiwiY29tYmluZUJhbmRzRmxvYXQiLCJleHBvcnRzIiwiX29iamVjdFNwcmVhZCIsImNvbWJpbmVCYW5kc1VpbnQiLCJjb21iaW5lQmFuZHNJbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL3RleHR1cmUvY29tYmluZS1iYW5kcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1RleHR1cmUyRH0gZnJvbSAnQGx1bWEuZ2wvd2ViZ2wnO1xuXG5pbXBvcnQge0dldFVuaWZvcm1zT3V0cHV0LCBTaGFkZXJNb2R1bGV9IGZyb20gJy4uL3R5cGVzJztcblxuZnVuY3Rpb24gZ2V0VW5pZm9ybXMob3B0czoge2ltYWdlQmFuZHM/OiBUZXh0dXJlMkRbXX0gPSB7fSk6IEdldFVuaWZvcm1zT3V0cHV0IHtcbiAgY29uc3Qge2ltYWdlQmFuZHN9ID0gb3B0cztcblxuICBpZiAoIWltYWdlQmFuZHMgfHwgaW1hZ2VCYW5kcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IFtiaXRtYXBUZXh0dXJlUiwgYml0bWFwVGV4dHVyZUcsIGJpdG1hcFRleHR1cmVCLCBiaXRtYXBUZXh0dXJlQV0gPSBpbWFnZUJhbmRzO1xuXG4gIC8vIHJldHVybiBkZWZhdWx0IHZhbHVlcyB0byBwcmV2ZW50IGRlY2suZ2wgdmFsaWRhdGlvbiB3YXJuaW5ncy5cbiAgLy8gTm90ZTogYWxsIGJhbmRzIG11c3QgYmUgc2V0IGZvciB0aGUgc2hhZG93IGVmZmVjdCB0byB3b3JrIGFzIGV4cGVjdGVkLlxuICByZXR1cm4ge1xuICAgIGJpdG1hcFRleHR1cmVSOiBiaXRtYXBUZXh0dXJlUiB8fCBiaXRtYXBUZXh0dXJlUixcbiAgICBiaXRtYXBUZXh0dXJlRzogYml0bWFwVGV4dHVyZUcgfHwgYml0bWFwVGV4dHVyZVIsXG4gICAgYml0bWFwVGV4dHVyZUI6IGJpdG1hcFRleHR1cmVCIHx8IGJpdG1hcFRleHR1cmVSLFxuICAgIGJpdG1hcFRleHR1cmVBOiBiaXRtYXBUZXh0dXJlQSB8fCBiaXRtYXBUZXh0dXJlUlxuICB9O1xufVxuXG5jb25zdCBmczEgPSBgXFxcbnVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVSO1xudW5pZm9ybSBzYW1wbGVyMkQgYml0bWFwVGV4dHVyZUc7XG51bmlmb3JtIHNhbXBsZXIyRCBiaXRtYXBUZXh0dXJlQjtcbnVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVBO1xuYDtcblxuY29uc3QgZnMyID0gYFxcXG5wcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbnByZWNpc2lvbiBtZWRpdW1wIGludDtcbnByZWNpc2lvbiBtZWRpdW1wIHVzYW1wbGVyMkQ7XG5cbiNpZmRlZiBTQU1QTEVSX1RZUEVcbiAgdW5pZm9ybSBTQU1QTEVSX1RZUEUgYml0bWFwVGV4dHVyZVI7XG4gIHVuaWZvcm0gU0FNUExFUl9UWVBFIGJpdG1hcFRleHR1cmVHO1xuICB1bmlmb3JtIFNBTVBMRVJfVFlQRSBiaXRtYXBUZXh0dXJlQjtcbiAgdW5pZm9ybSBTQU1QTEVSX1RZUEUgYml0bWFwVGV4dHVyZUE7XG4jZWxzZVxuICB1bmlmb3JtIHNhbXBsZXIyRCBiaXRtYXBUZXh0dXJlUjtcbiAgdW5pZm9ybSBzYW1wbGVyMkQgYml0bWFwVGV4dHVyZUc7XG4gIHVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVCO1xuICB1bmlmb3JtIHNhbXBsZXIyRCBiaXRtYXBUZXh0dXJlQTtcbiNlbmRpZlxuYDtcblxuY29uc3QgY29tYmluZUJhbmRzOiBTaGFkZXJNb2R1bGUgPSB7XG4gIG5hbWU6ICdjb21iaW5lLWJhbmRzJyxcbiAgZnMxLFxuICBmczIsXG4gIGdldFVuaWZvcm1zLFxuICBkZWZpbmVzOiB7XG4gICAgU0FNUExFUl9UWVBFOiAnc2FtcGxlcjJEJ1xuICB9LFxuICBpbmplY3Q6IHtcbiAgICAnZnM6REVDS0dMX0NSRUFURV9DT0xPUic6IGBcbiAgICBmbG9hdCBjaGFubmVsMSA9IGZsb2F0KHRleHR1cmUyRChiaXRtYXBUZXh0dXJlUiwgY29vcmQpLnIpO1xuICAgIGZsb2F0IGNoYW5uZWwyID0gZmxvYXQodGV4dHVyZTJEKGJpdG1hcFRleHR1cmVHLCBjb29yZCkucik7XG4gICAgZmxvYXQgY2hhbm5lbDMgPSBmbG9hdCh0ZXh0dXJlMkQoYml0bWFwVGV4dHVyZUIsIGNvb3JkKS5yKTtcbiAgICBmbG9hdCBjaGFubmVsNCA9IGZsb2F0KHRleHR1cmUyRChiaXRtYXBUZXh0dXJlQSwgY29vcmQpLnIpO1xuXG4gICAgaW1hZ2UgPSB2ZWM0KGNoYW5uZWwxLCBjaGFubmVsMiwgY2hhbm5lbDMsIGNoYW5uZWw0KTtcbiAgICBgXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb21iaW5lQmFuZHNGbG9hdDogU2hhZGVyTW9kdWxlID0ge1xuICAuLi5jb21iaW5lQmFuZHMsXG4gIG5hbWU6ICdjb21iaW5lLWJhbmRzLWZsb2F0J1xufTtcbmV4cG9ydCBjb25zdCBjb21iaW5lQmFuZHNVaW50OiBTaGFkZXJNb2R1bGUgPSB7XG4gIC4uLmNvbWJpbmVCYW5kcyxcbiAgbmFtZTogJ2NvbWJpbmUtYmFuZHMtdWludCcsXG4gIGRlZmluZXM6IHtcbiAgICBTQU1QTEVSX1RZUEU6ICd1c2FtcGxlcjJEJ1xuICB9XG59O1xuZXhwb3J0IGNvbnN0IGNvbWJpbmVCYW5kc0ludDogU2hhZGVyTW9kdWxlID0ge1xuICAuLi5jb21iaW5lQmFuZHMsXG4gIG5hbWU6ICdjb21iaW5lLWJhbmRzLWludCcsXG4gIGRlZmluZXM6IHtcbiAgICBTQU1QTEVSX1RZUEU6ICdpc2FtcGxlcjJEJ1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQ0E7O0FBTUEsU0FBU0EsV0FBV0EsQ0FBQSxFQUEyRDtFQUFBLElBQTFEQyxJQUFnQyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFDeEQsSUFBT0csVUFBVSxHQUFJSixJQUFJLENBQWxCSSxVQUFVO0VBRWpCLElBQUksQ0FBQ0EsVUFBVSxJQUFJQSxVQUFVLENBQUNGLE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFDMUMsT0FBTyxJQUFJO0VBQ2I7RUFFQSxJQUFBRyxXQUFBLE9BQUFDLGVBQUEsYUFBeUVGLFVBQVU7SUFBNUVHLGNBQWMsR0FBQUYsV0FBQTtJQUFFRyxjQUFjLEdBQUFILFdBQUE7SUFBRUksY0FBYyxHQUFBSixXQUFBO0lBQUVLLGNBQWMsR0FBQUwsV0FBQTs7RUFFckU7RUFDQTtFQUNBLE9BQU87SUFDTEUsY0FBYyxFQUFFQSxjQUFjLElBQUlBLGNBQWM7SUFDaERDLGNBQWMsRUFBRUEsY0FBYyxJQUFJRCxjQUFjO0lBQ2hERSxjQUFjLEVBQUVBLGNBQWMsSUFBSUYsY0FBYztJQUNoREcsY0FBYyxFQUFFQSxjQUFjLElBQUlIO0VBQ3BDLENBQUM7QUFDSDtBQUVBLElBQU1JLEdBQUcsaUpBS1I7QUFFRCxJQUFNQyxHQUFHLGdiQWdCUjtBQUVELElBQU1DLFlBQTBCLEdBQUc7RUFDakNDLElBQUksRUFBRSxlQUFlO0VBQ3JCSCxHQUFHLEVBQUhBLEdBQUc7RUFDSEMsR0FBRyxFQUFIQSxHQUFHO0VBQ0hiLFdBQVcsRUFBWEEsV0FBVztFQUNYZ0IsT0FBTyxFQUFFO0lBQ1BDLFlBQVksRUFBRTtFQUNoQixDQUFDO0VBQ0RDLE1BQU0sRUFBRTtJQUNOLHdCQUF3QjtFQVExQjtBQUNGLENBQUM7QUFFTSxJQUFNQyxpQkFBK0IsR0FBQUMsT0FBQSxDQUFBRCxpQkFBQSxHQUFBRSxhQUFBLENBQUFBLGFBQUEsS0FDdkNQLFlBQVk7RUFDZkMsSUFBSSxFQUFFO0FBQXFCLEVBQzVCO0FBQ00sSUFBTU8sZ0JBQThCLEdBQUFGLE9BQUEsQ0FBQUUsZ0JBQUEsR0FBQUQsYUFBQSxDQUFBQSxhQUFBLEtBQ3RDUCxZQUFZO0VBQ2ZDLElBQUksRUFBRSxvQkFBb0I7RUFDMUJDLE9BQU8sRUFBRTtJQUNQQyxZQUFZLEVBQUU7RUFDaEI7QUFBQyxFQUNGO0FBQ00sSUFBTU0sZUFBNkIsR0FBQUgsT0FBQSxDQUFBRyxlQUFBLEdBQUFGLGFBQUEsQ0FBQUEsYUFBQSxLQUNyQ1AsWUFBWTtFQUNmQyxJQUFJLEVBQUUsbUJBQW1CO0VBQ3pCQyxPQUFPLEVBQUU7SUFDUEMsWUFBWSxFQUFFO0VBQ2hCO0FBQUMsRUFDRiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,4 @@
1
+ import { ShaderModule } from '../types';
2
+ export declare const maskFloat: ShaderModule;
3
+ export declare const maskUint: ShaderModule;
4
+ export declare const maskInt: ShaderModule;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.maskUint = exports.maskInt = exports.maskFloat = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
+ // SPDX-License-Identifier: MIT
12
+ // Copyright contributors to the kepler.gl project
13
+
14
+ var inf = Math.pow(2, 62);
15
+ function getUniforms() {
16
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
17
+ var imageMask = opts.imageMask,
18
+ maskKeepMin = opts.maskKeepMin,
19
+ maskKeepMax = opts.maskKeepMax;
20
+ if (!imageMask) {
21
+ return null;
22
+ }
23
+ return {
24
+ bitmapTextureMask: imageMask,
25
+ uMaskKeepMin: Number.isFinite(maskKeepMin) ? maskKeepMin : -inf,
26
+ uMaskKeepMax: Number.isFinite(maskKeepMax) ? maskKeepMax : inf
27
+ };
28
+ }
29
+ var fs1 = "uniform sampler2D bitmapTextureMask;\nuniform float uMaskKeepMin;\nuniform float uMaskKeepMax;\n";
30
+ var fs2 = "precision mediump float;\nprecision mediump int;\nprecision mediump usampler2D;\n\n#ifdef SAMPLER_TYPE\n uniform SAMPLER_TYPE bitmapTextureMask;\n#else\n uniform sampler2D bitmapTextureMask;\n#endif\n\nuniform float uMaskKeepMin;\nuniform float uMaskKeepMax;\n";
31
+ var mask = {
32
+ name: 'mask-image',
33
+ fs1: fs1,
34
+ fs2: fs2,
35
+ getUniforms: getUniforms,
36
+ defines: {
37
+ SAMPLER_TYPE: 'sampler2D'
38
+ },
39
+ inject: {
40
+ 'fs:DECKGL_CREATE_COLOR': "\n float mask_value = float(texture2D(bitmapTextureMask, coord).r);\n if (mask_value < uMaskKeepMin) discard;\n if (mask_value > uMaskKeepMax) discard;\n "
41
+ }
42
+ };
43
+ var maskFloat = exports.maskFloat = _objectSpread(_objectSpread({}, mask), {}, {
44
+ name: 'mask-image-float'
45
+ });
46
+ var maskUint = exports.maskUint = _objectSpread(_objectSpread({}, mask), {}, {
47
+ name: 'mask-image-uint',
48
+ defines: {
49
+ SAMPLER_TYPE: 'usampler2D'
50
+ }
51
+ });
52
+ var maskInt = exports.maskInt = _objectSpread(_objectSpread({}, mask), {}, {
53
+ name: 'mask-image-int',
54
+ defines: {
55
+ SAMPLER_TYPE: 'isampler2D'
56
+ }
57
+ });
58
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmYiLCJNYXRoIiwicG93IiwiZ2V0VW5pZm9ybXMiLCJvcHRzIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiaW1hZ2VNYXNrIiwibWFza0tlZXBNaW4iLCJtYXNrS2VlcE1heCIsImJpdG1hcFRleHR1cmVNYXNrIiwidU1hc2tLZWVwTWluIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJ1TWFza0tlZXBNYXgiLCJmczEiLCJmczIiLCJtYXNrIiwibmFtZSIsImRlZmluZXMiLCJTQU1QTEVSX1RZUEUiLCJpbmplY3QiLCJtYXNrRmxvYXQiLCJleHBvcnRzIiwiX29iamVjdFNwcmVhZCIsIm1hc2tVaW50IiwibWFza0ludCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9yYXN0ZXIvd2ViZ2wvdGV4dHVyZS9tYXNrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7VGV4dHVyZTJEfSBmcm9tICdAbHVtYS5nbC93ZWJnbCc7XG5cbmltcG9ydCB7R2V0VW5pZm9ybXNPdXRwdXQsIFNoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBpbmYgPSBNYXRoLnBvdygyLCA2Mik7XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKFxuICBvcHRzOiB7aW1hZ2VNYXNrPzogVGV4dHVyZTJEOyBtYXNrS2VlcE1pbj86IG51bWJlcjsgbWFza0tlZXBNYXg/OiBudW1iZXJ9ID0ge31cbik6IEdldFVuaWZvcm1zT3V0cHV0IHtcbiAgY29uc3Qge2ltYWdlTWFzaywgbWFza0tlZXBNaW4sIG1hc2tLZWVwTWF4fSA9IG9wdHM7XG4gIGlmICghaW1hZ2VNYXNrKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJpdG1hcFRleHR1cmVNYXNrOiBpbWFnZU1hc2ssXG4gICAgdU1hc2tLZWVwTWluOiBOdW1iZXIuaXNGaW5pdGUobWFza0tlZXBNaW4pID8gbWFza0tlZXBNaW4gOiAtaW5mLFxuICAgIHVNYXNrS2VlcE1heDogTnVtYmVyLmlzRmluaXRlKG1hc2tLZWVwTWF4KSA/IG1hc2tLZWVwTWF4IDogaW5mXG4gIH07XG59XG5cbmNvbnN0IGZzMSA9IGBcXFxudW5pZm9ybSBzYW1wbGVyMkQgYml0bWFwVGV4dHVyZU1hc2s7XG51bmlmb3JtIGZsb2F0IHVNYXNrS2VlcE1pbjtcbnVuaWZvcm0gZmxvYXQgdU1hc2tLZWVwTWF4O1xuYDtcblxuY29uc3QgZnMyID0gYFxcXG5wcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbnByZWNpc2lvbiBtZWRpdW1wIGludDtcbnByZWNpc2lvbiBtZWRpdW1wIHVzYW1wbGVyMkQ7XG5cbiNpZmRlZiBTQU1QTEVSX1RZUEVcbiAgdW5pZm9ybSBTQU1QTEVSX1RZUEUgYml0bWFwVGV4dHVyZU1hc2s7XG4jZWxzZVxuICB1bmlmb3JtIHNhbXBsZXIyRCBiaXRtYXBUZXh0dXJlTWFzaztcbiNlbmRpZlxuXG51bmlmb3JtIGZsb2F0IHVNYXNrS2VlcE1pbjtcbnVuaWZvcm0gZmxvYXQgdU1hc2tLZWVwTWF4O1xuYDtcblxuY29uc3QgbWFzazogU2hhZGVyTW9kdWxlID0ge1xuICBuYW1lOiAnbWFzay1pbWFnZScsXG4gIGZzMSxcbiAgZnMyLFxuICBnZXRVbmlmb3JtcyxcbiAgZGVmaW5lczoge1xuICAgIFNBTVBMRVJfVFlQRTogJ3NhbXBsZXIyRCdcbiAgfSxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9DUkVBVEVfQ09MT1InOiBgXG4gICAgZmxvYXQgbWFza192YWx1ZSA9IGZsb2F0KHRleHR1cmUyRChiaXRtYXBUZXh0dXJlTWFzaywgY29vcmQpLnIpO1xuICAgIGlmIChtYXNrX3ZhbHVlIDwgdU1hc2tLZWVwTWluKSBkaXNjYXJkO1xuICAgIGlmIChtYXNrX3ZhbHVlID4gdU1hc2tLZWVwTWF4KSBkaXNjYXJkO1xuICAgIGBcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG1hc2tGbG9hdDogU2hhZGVyTW9kdWxlID0ge1xuICAuLi5tYXNrLFxuICBuYW1lOiAnbWFzay1pbWFnZS1mbG9hdCdcbn07XG5leHBvcnQgY29uc3QgbWFza1VpbnQ6IFNoYWRlck1vZHVsZSA9IHtcbiAgLi4ubWFzayxcbiAgbmFtZTogJ21hc2staW1hZ2UtdWludCcsXG4gIGRlZmluZXM6IHtcbiAgICBTQU1QTEVSX1RZUEU6ICd1c2FtcGxlcjJEJ1xuICB9XG59O1xuZXhwb3J0IGNvbnN0IG1hc2tJbnQ6IFNoYWRlck1vZHVsZSA9IHtcbiAgLi4ubWFzayxcbiAgbmFtZTogJ21hc2staW1hZ2UtaW50JyxcbiAgZGVmaW5lczoge1xuICAgIFNBTVBMRVJfVFlQRTogJ2lzYW1wbGVyMkQnXG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQU1BLElBQU1BLEdBQUcsR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUUzQixTQUFTQyxXQUFXQSxDQUFBLEVBRUM7RUFBQSxJQURuQkMsSUFBeUUsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBRTlFLElBQU9HLFNBQVMsR0FBOEJKLElBQUksQ0FBM0NJLFNBQVM7SUFBRUMsV0FBVyxHQUFpQkwsSUFBSSxDQUFoQ0ssV0FBVztJQUFFQyxXQUFXLEdBQUlOLElBQUksQ0FBbkJNLFdBQVc7RUFDMUMsSUFBSSxDQUFDRixTQUFTLEVBQUU7SUFDZCxPQUFPLElBQUk7RUFDYjtFQUVBLE9BQU87SUFDTEcsaUJBQWlCLEVBQUVILFNBQVM7SUFDNUJJLFlBQVksRUFBRUMsTUFBTSxDQUFDQyxRQUFRLENBQUNMLFdBQVcsQ0FBQyxHQUFHQSxXQUFXLEdBQUcsQ0FBQ1QsR0FBRztJQUMvRGUsWUFBWSxFQUFFRixNQUFNLENBQUNDLFFBQVEsQ0FBQ0osV0FBVyxDQUFDLEdBQUdBLFdBQVcsR0FBR1Y7RUFDN0QsQ0FBQztBQUNIO0FBRUEsSUFBTWdCLEdBQUcscUdBSVI7QUFFRCxJQUFNQyxHQUFHLDJRQWFSO0FBRUQsSUFBTUMsSUFBa0IsR0FBRztFQUN6QkMsSUFBSSxFQUFFLFlBQVk7RUFDbEJILEdBQUcsRUFBSEEsR0FBRztFQUNIQyxHQUFHLEVBQUhBLEdBQUc7RUFDSGQsV0FBVyxFQUFYQSxXQUFXO0VBQ1hpQixPQUFPLEVBQUU7SUFDUEMsWUFBWSxFQUFFO0VBQ2hCLENBQUM7RUFDREMsTUFBTSxFQUFFO0lBQ04sd0JBQXdCO0VBSzFCO0FBQ0YsQ0FBQztBQUVNLElBQU1DLFNBQXVCLEdBQUFDLE9BQUEsQ0FBQUQsU0FBQSxHQUFBRSxhQUFBLENBQUFBLGFBQUEsS0FDL0JQLElBQUk7RUFDUEMsSUFBSSxFQUFFO0FBQWtCLEVBQ3pCO0FBQ00sSUFBTU8sUUFBc0IsR0FBQUYsT0FBQSxDQUFBRSxRQUFBLEdBQUFELGFBQUEsQ0FBQUEsYUFBQSxLQUM5QlAsSUFBSTtFQUNQQyxJQUFJLEVBQUUsaUJBQWlCO0VBQ3ZCQyxPQUFPLEVBQUU7SUFDUEMsWUFBWSxFQUFFO0VBQ2hCO0FBQUMsRUFDRjtBQUNNLElBQU1NLE9BQXFCLEdBQUFILE9BQUEsQ0FBQUcsT0FBQSxHQUFBRixhQUFBLENBQUFBLGFBQUEsS0FDN0JQLElBQUk7RUFDUEMsSUFBSSxFQUFFLGdCQUFnQjtFQUN0QkMsT0FBTyxFQUFFO0lBQ1BDLFlBQVksRUFBRTtFQUNoQjtBQUFDLEVBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,10 @@
1
+ import { ShaderModule } from '../types';
2
+ /**
3
+ * Construct permutation matrix from vector
4
+ *
5
+ * @param vector Vector describing how to reorder bands
6
+ *
7
+ * @return a mat4 permutation matrix representing how to reorder bands
8
+ */
9
+ export declare function constructPermutationMatrix(vector: number[]): number[];
10
+ export declare const reorderBands: ShaderModule;