kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
72 lines (67 loc) • 7.37 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 reorder_bandsUniforms {\n mat4 ordering;\n} reorder_bands;\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 {
ordering: 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,
uniformTypes: {
ordering: 'mat4x4<f32>'
},
getUniforms: getUniforms,
inject: {
'fs:DECKGL_MUTATE_COLOR': "\n image = reorder_image(image, reorder_bands.ordering);\n "
}
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIm9yZGVyaW5nIiwiY29uc3RydWN0UGVybXV0YXRpb25NYXRyaXgiLCJ2ZWN0b3IiLCJtYXQ0IiwiQXJyYXkiLCJmaWxsIiwicm93IiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJuIiwiZG9uZSIsImluZGV4IiwidmFsdWUiLCJlcnIiLCJlIiwiZiIsInIiLCJyZW9yZGVyQmFuZHMiLCJleHBvcnRzIiwibmFtZSIsInVuaWZvcm1UeXBlcyIsImluamVjdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9yYXN0ZXIvd2ViZ2wvdGV4dHVyZS9yZW9yZGVyLWJhbmRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7U2hhZGVyTW9kdWxlLCBHZXRVbmlmb3Jtc091dHB1dH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIFJlb3JkZXIgaW1hZ2UgYmFuZHMgb24gR1BVXG4gKiBVc2VzIGEgcGVybXV0YXRpb24gbWF0cml4IHRvIHJlb3JkZXIgYSB2ZWM0XG4gKi9cblxuY29uc3QgZnMgPSBgXFxcbnVuaWZvcm0gcmVvcmRlcl9iYW5kc1VuaWZvcm1zIHtcbiAgbWF0NCBvcmRlcmluZztcbn0gcmVvcmRlcl9iYW5kcztcblxudmVjNCByZW9yZGVyX2ltYWdlKHZlYzQgaW1hZ2UsIG1hdDQgb3JkZXJpbmcpIHtcbiAgcmV0dXJuIGltYWdlLnJnYmEgKiBvcmRlcmluZztcbn1cbmA7XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKG9wdHM6IHtvcmRlcmluZz86IG51bWJlcltdfSA9IHt9KTogR2V0VW5pZm9ybXNPdXRwdXQge1xuICBjb25zdCB7b3JkZXJpbmd9ID0gb3B0cztcblxuICBpZiAoIW9yZGVyaW5nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG9yZGVyaW5nOiBjb25zdHJ1Y3RQZXJtdXRhdGlvbk1hdHJpeChvcmRlcmluZylcbiAgfTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgcGVybXV0YXRpb24gbWF0cml4IGZyb20gdmVjdG9yXG4gKlxuICogQHBhcmFtIHZlY3RvciAgVmVjdG9yIGRlc2NyaWJpbmcgaG93IHRvIHJlb3JkZXIgYmFuZHNcbiAqXG4gKiBAcmV0dXJuIGEgbWF0NCBwZXJtdXRhdGlvbiBtYXRyaXggcmVwcmVzZW50aW5nIGhvdyB0byByZW9yZGVyIGJhbmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RQZXJtdXRhdGlvbk1hdHJpeCh2ZWN0b3I6IG51bWJlcltdKTogbnVtYmVyW10ge1xuICBjb25zdCBtYXQ0ID0gQXJyYXkoMTYpLmZpbGwoMCk7XG4gIGxldCByb3cgPSAwO1xuICBmb3IgKGNvbnN0IGluZGV4IG9mIHZlY3Rvcikge1xuICAgIG1hdDRbcm93ICogNCArIGluZGV4XSA9IDE7XG4gICAgcm93ICs9IDE7XG4gIH1cblxuICAvLyBJZiBpbnB1dCB2ZWN0b3Igd2Fzbid0IG9mIGxlbmd0aCA0LCBhZGQgaWRlbnRpdHkgaW4gZmluYWwgcGxhY2VzXG4gIGZvciAobGV0IHIgPSByb3c7IHIgPCA0OyByKyspIHtcbiAgICBtYXQ0W3IgKiA0ICsgcl0gPSAxO1xuICB9XG5cbiAgcmV0dXJuIG1hdDQ7XG59XG5cbmV4cG9ydCBjb25zdCByZW9yZGVyQmFuZHM6IFNoYWRlck1vZHVsZSA9IHtcbiAgbmFtZTogJ3Jlb3JkZXJfYmFuZHMnLFxuICBmcyxcbiAgdW5pZm9ybVR5cGVzOiB7XG4gICAgb3JkZXJpbmc6ICdtYXQ0eDQ8ZjMyPidcbiAgfSxcbiAgZ2V0VW5pZm9ybXMsXG4gIGluamVjdDoge1xuICAgICdmczpERUNLR0xfTVVUQVRFX0NPTE9SJzogYFxuICAgIGltYWdlID0gcmVvcmRlcl9pbWFnZShpbWFnZSwgcmVvcmRlcl9iYW5kcy5vcmRlcmluZyk7XG4gICAgYFxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFNQSxFQUFFLGlLQVFQO0FBRUQsU0FBU0MsV0FBV0EsQ0FBQSxFQUFzRDtFQUFBLElBQXJEQyxJQUEyQixHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFDbkQsSUFBT0csUUFBUSxHQUFJSixJQUFJLENBQWhCSSxRQUFRO0VBRWYsSUFBSSxDQUFDQSxRQUFRLEVBQUU7SUFDYixPQUFPLElBQUk7RUFDYjtFQUVBLE9BQU87SUFDTEEsUUFBUSxFQUFFQywwQkFBMEIsQ0FBQ0QsUUFBUTtFQUMvQyxDQUFDO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQywwQkFBMEJBLENBQUNDLE1BQWdCLEVBQVk7RUFDckUsSUFBTUMsSUFBSSxHQUFHQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDOUIsSUFBSUMsR0FBRyxHQUFHLENBQUM7RUFBQyxJQUFBQyxTQUFBLEdBQUFDLDBCQUFBLENBQ1FOLE1BQU07SUFBQU8sS0FBQTtFQUFBO0lBQTFCLEtBQUFGLFNBQUEsQ0FBQUcsQ0FBQSxNQUFBRCxLQUFBLEdBQUFGLFNBQUEsQ0FBQUksQ0FBQSxJQUFBQyxJQUFBLEdBQTRCO01BQUEsSUFBakJDLEtBQUssR0FBQUosS0FBQSxDQUFBSyxLQUFBO01BQ2RYLElBQUksQ0FBQ0csR0FBRyxHQUFHLENBQUMsR0FBR08sS0FBSyxDQUFDLEdBQUcsQ0FBQztNQUN6QlAsR0FBRyxJQUFJLENBQUM7SUFDVjs7SUFFQTtFQUFBLFNBQUFTLEdBQUE7SUFBQVIsU0FBQSxDQUFBUyxDQUFBLENBQUFELEdBQUE7RUFBQTtJQUFBUixTQUFBLENBQUFVLENBQUE7RUFBQTtFQUNBLEtBQUssSUFBSUMsQ0FBQyxHQUFHWixHQUFHLEVBQUVZLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsRUFBRSxFQUFFO0lBQzVCZixJQUFJLENBQUNlLENBQUMsR0FBRyxDQUFDLEdBQUdBLENBQUMsQ0FBQyxHQUFHLENBQUM7RUFDckI7RUFFQSxPQUFPZixJQUFJO0FBQ2I7QUFFTyxJQUFNZ0IsWUFBMEIsR0FBQUMsT0FBQSxDQUFBRCxZQUFBLEdBQUc7RUFDeENFLElBQUksRUFBRSxlQUFlO0VBQ3JCM0IsRUFBRSxFQUFGQSxFQUFFO0VBQ0Y0QixZQUFZLEVBQUU7SUFDWnRCLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREwsV0FBVyxFQUFYQSxXQUFXO0VBQ1g0QixNQUFNLEVBQUU7SUFDTix3QkFBd0I7RUFHMUI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119