kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
69 lines (64 loc) • 7.05 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.constructPermutationMatrix = constructPermutationMatrix;
exports.reorderBands = void 0;
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; } } }; }
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; } }
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
// Copyright contributors to the kepler.gl project
/**
* Reorder image bands on GPU
* Uses a permutation matrix to reorder a vec4
*/
var fs = "uniform mat4 uReorder;\n\nvec4 reorder_image(vec4 image, mat4 ordering) {\n return image.rgba * ordering;\n}\n";
function getUniforms() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var ordering = opts.ordering;
if (!ordering) {
return null;
}
return {
uReorder: constructPermutationMatrix(ordering)
};
}
/**
* Construct permutation matrix from vector
*
* @param vector Vector describing how to reorder bands
*
* @return a mat4 permutation matrix representing how to reorder bands
*/
function constructPermutationMatrix(vector) {
var mat4 = Array(16).fill(0);
var row = 0;
var _iterator = _createForOfIteratorHelper(vector),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var index = _step.value;
mat4[row * 4 + index] = 1;
row += 1;
}
// If input vector wasn't of length 4, add identity in final places
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
for (var r = row; r < 4; r++) {
mat4[r * 4 + r] = 1;
}
return mat4;
}
var reorderBands = exports.reorderBands = {
name: 'reorder-bands',
fs: fs,
getUniforms: getUniforms,
inject: {
'fs:DECKGL_MUTATE_COLOR': "\n image = reorder_image(image, uReorder);\n "
}
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIm9yZGVyaW5nIiwidVJlb3JkZXIiLCJjb25zdHJ1Y3RQZXJtdXRhdGlvbk1hdHJpeCIsInZlY3RvciIsIm1hdDQiLCJBcnJheSIsImZpbGwiLCJyb3ciLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJkb25lIiwiaW5kZXgiLCJ2YWx1ZSIsImVyciIsImUiLCJmIiwiciIsInJlb3JkZXJCYW5kcyIsImV4cG9ydHMiLCJuYW1lIiwiaW5qZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci93ZWJnbC90ZXh0dXJlL3Jlb3JkZXItYmFuZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtTaGFkZXJNb2R1bGUsIEdldFVuaWZvcm1zT3V0cHV0fSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogUmVvcmRlciBpbWFnZSBiYW5kcyBvbiBHUFVcbiAqIFVzZXMgYSBwZXJtdXRhdGlvbiBtYXRyaXggdG8gcmVvcmRlciBhIHZlYzRcbiAqL1xuXG5jb25zdCBmcyA9IGBcXFxudW5pZm9ybSBtYXQ0IHVSZW9yZGVyO1xuXG52ZWM0IHJlb3JkZXJfaW1hZ2UodmVjNCBpbWFnZSwgbWF0NCBvcmRlcmluZykge1xuICByZXR1cm4gaW1hZ2UucmdiYSAqIG9yZGVyaW5nO1xufVxuYDtcblxuZnVuY3Rpb24gZ2V0VW5pZm9ybXMob3B0czoge29yZGVyaW5nPzogbnVtYmVyW119ID0ge30pOiBHZXRVbmlmb3Jtc091dHB1dCB7XG4gIGNvbnN0IHtvcmRlcmluZ30gPSBvcHRzO1xuXG4gIGlmICghb3JkZXJpbmcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdVJlb3JkZXI6IGNvbnN0cnVjdFBlcm11dGF0aW9uTWF0cml4KG9yZGVyaW5nKVxuICB9O1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBwZXJtdXRhdGlvbiBtYXRyaXggZnJvbSB2ZWN0b3JcbiAqXG4gKiBAcGFyYW0gdmVjdG9yICBWZWN0b3IgZGVzY3JpYmluZyBob3cgdG8gcmVvcmRlciBiYW5kc1xuICpcbiAqIEByZXR1cm4gYSBtYXQ0IHBlcm11dGF0aW9uIG1hdHJpeCByZXByZXNlbnRpbmcgaG93IHRvIHJlb3JkZXIgYmFuZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdFBlcm11dGF0aW9uTWF0cml4KHZlY3RvcjogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IG1hdDQgPSBBcnJheSgxNikuZmlsbCgwKTtcbiAgbGV0IHJvdyA9IDA7XG4gIGZvciAoY29uc3QgaW5kZXggb2YgdmVjdG9yKSB7XG4gICAgbWF0NFtyb3cgKiA0ICsgaW5kZXhdID0gMTtcbiAgICByb3cgKz0gMTtcbiAgfVxuXG4gIC8vIElmIGlucHV0IHZlY3RvciB3YXNuJ3Qgb2YgbGVuZ3RoIDQsIGFkZCBpZGVudGl0eSBpbiBmaW5hbCBwbGFjZXNcbiAgZm9yIChsZXQgciA9IHJvdzsgciA8IDQ7IHIrKykge1xuICAgIG1hdDRbciAqIDQgKyByXSA9IDE7XG4gIH1cblxuICByZXR1cm4gbWF0NDtcbn1cblxuZXhwb3J0IGNvbnN0IHJlb3JkZXJCYW5kczogU2hhZGVyTW9kdWxlID0ge1xuICBuYW1lOiAncmVvcmRlci1iYW5kcycsXG4gIGZzLFxuICBnZXRVbmlmb3JtcyxcbiAgaW5qZWN0OiB7XG4gICAgJ2ZzOkRFQ0tHTF9NVVRBVEVfQ09MT1InOiBgXG4gICAgaW1hZ2UgPSByZW9yZGVyX2ltYWdlKGltYWdlLCB1UmVvcmRlcik7XG4gICAgYFxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFNQSxFQUFFLG9IQU1QO0FBRUQsU0FBU0MsV0FBV0EsQ0FBQSxFQUFzRDtFQUFBLElBQXJEQyxJQUEyQixHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFDbkQsSUFBT0csUUFBUSxHQUFJSixJQUFJLENBQWhCSSxRQUFRO0VBRWYsSUFBSSxDQUFDQSxRQUFRLEVBQUU7SUFDYixPQUFPLElBQUk7RUFDYjtFQUVBLE9BQU87SUFDTEMsUUFBUSxFQUFFQywwQkFBMEIsQ0FBQ0YsUUFBUTtFQUMvQyxDQUFDO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSwwQkFBMEJBLENBQUNDLE1BQWdCLEVBQVk7RUFDckUsSUFBTUMsSUFBSSxHQUFHQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDOUIsSUFBSUMsR0FBRyxHQUFHLENBQUM7RUFBQyxJQUFBQyxTQUFBLEdBQUFDLDBCQUFBLENBQ1FOLE1BQU07SUFBQU8sS0FBQTtFQUFBO0lBQTFCLEtBQUFGLFNBQUEsQ0FBQUcsQ0FBQSxNQUFBRCxLQUFBLEdBQUFGLFNBQUEsQ0FBQUksQ0FBQSxJQUFBQyxJQUFBLEdBQTRCO01BQUEsSUFBakJDLEtBQUssR0FBQUosS0FBQSxDQUFBSyxLQUFBO01BQ2RYLElBQUksQ0FBQ0csR0FBRyxHQUFHLENBQUMsR0FBR08sS0FBSyxDQUFDLEdBQUcsQ0FBQztNQUN6QlAsR0FBRyxJQUFJLENBQUM7SUFDVjs7SUFFQTtFQUFBLFNBQUFTLEdBQUE7SUFBQVIsU0FBQSxDQUFBUyxDQUFBLENBQUFELEdBQUE7RUFBQTtJQUFBUixTQUFBLENBQUFVLENBQUE7RUFBQTtFQUNBLEtBQUssSUFBSUMsQ0FBQyxHQUFHWixHQUFHLEVBQUVZLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsRUFBRSxFQUFFO0lBQzVCZixJQUFJLENBQUNlLENBQUMsR0FBRyxDQUFDLEdBQUdBLENBQUMsQ0FBQyxHQUFHLENBQUM7RUFDckI7RUFFQSxPQUFPZixJQUFJO0FBQ2I7QUFFTyxJQUFNZ0IsWUFBMEIsR0FBQUMsT0FBQSxDQUFBRCxZQUFBLEdBQUc7RUFDeENFLElBQUksRUFBRSxlQUFlO0VBQ3JCNUIsRUFBRSxFQUFGQSxFQUFFO0VBQ0ZDLFdBQVcsRUFBWEEsV0FBVztFQUNYNEIsTUFBTSxFQUFFO0lBQ04sd0JBQXdCO0VBRzFCO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
;