UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

62 lines (56 loc) 7.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.gammaContrast = void 0; // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project // Gamma correction is a nonlinear operation that // adjusts the image's channel values pixel-by-pixel according // to a power-law: // // .. math:: pixel_{out} = pixel_{in} ^ {gamma} // // Setting gamma (:math:gamma) to be less than 1.0 darkens the image and // setting gamma to be greater than 1.0 lightens it. // Parameters // ---------- // gamma (:math:gamma): float // Reasonable values range from 0.8 to 2.4. // NOTE: Input array must have float values between 0 and 1! // NOTE: gamma must be >= 0 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"; function getUniforms() { var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var gammaContrastValue = opts.gammaContrastValue, gammaContrastValue1 = opts.gammaContrastValue1, gammaContrastValue2 = opts.gammaContrastValue2, gammaContrastValue3 = opts.gammaContrastValue3, gammaContrastValue4 = opts.gammaContrastValue4; // Gamma must be > 0, so not using Number.isFinite is fine if (gammaContrastValue) { return { gamma1: gammaContrastValue, gamma2: gammaContrastValue, gamma3: gammaContrastValue, gamma4: gammaContrastValue }; } else if (gammaContrastValue1 || gammaContrastValue2 || gammaContrastValue3 || gammaContrastValue4) { return { gamma1: gammaContrastValue1 || 1, gamma2: gammaContrastValue2 || 1, gamma3: gammaContrastValue3 || 1, gamma4: gammaContrastValue4 || 1 }; } return null; } var gammaContrast = exports.gammaContrast = { name: 'gamma_contrast', fs: fs, getUniforms: getUniforms, inject: { 'fs:DECKGL_MUTATE_COLOR': "\n image = gammaContrast(image, gamma1, gamma2, gamma3, gamma4);\n " } }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImdldFVuaWZvcm1zIiwib3B0cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImdhbW1hQ29udHJhc3RWYWx1ZSIsImdhbW1hQ29udHJhc3RWYWx1ZTEiLCJnYW1tYUNvbnRyYXN0VmFsdWUyIiwiZ2FtbWFDb250cmFzdFZhbHVlMyIsImdhbW1hQ29udHJhc3RWYWx1ZTQiLCJnYW1tYTEiLCJnYW1tYTIiLCJnYW1tYTMiLCJnYW1tYTQiLCJnYW1tYUNvbnRyYXN0IiwiZXhwb3J0cyIsIm5hbWUiLCJpbmplY3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFzdGVyL3dlYmdsL2NvbG9yL2dhbW1hLWNvbnRyYXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7R2V0VW5pZm9ybXNPdXRwdXQsIFNoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyBHYW1tYSBjb3JyZWN0aW9uIGlzIGEgbm9ubGluZWFyIG9wZXJhdGlvbiB0aGF0XG4vLyBhZGp1c3RzIHRoZSBpbWFnZSdzIGNoYW5uZWwgdmFsdWVzIHBpeGVsLWJ5LXBpeGVsIGFjY29yZGluZ1xuLy8gdG8gYSBwb3dlci1sYXc6XG4vL1xuLy8gLi4gbWF0aDo6IHBpeGVsX3tvdXR9ID0gcGl4ZWxfe2lufSBeIHtnYW1tYX1cbi8vXG4vLyBTZXR0aW5nIGdhbW1hICg6bWF0aDpnYW1tYSkgdG8gYmUgbGVzcyB0aGFuIDEuMCBkYXJrZW5zIHRoZSBpbWFnZSBhbmRcbi8vIHNldHRpbmcgZ2FtbWEgdG8gYmUgZ3JlYXRlciB0aGFuIDEuMCBsaWdodGVucyBpdC5cblxuLy8gUGFyYW1ldGVyc1xuLy8gLS0tLS0tLS0tLVxuLy8gZ2FtbWEgKDptYXRoOmdhbW1hKTogZmxvYXRcbi8vICAgICBSZWFzb25hYmxlIHZhbHVlcyByYW5nZSBmcm9tIDAuOCB0byAyLjQuXG5cbi8vIE5PVEU6IElucHV0IGFycmF5IG11c3QgaGF2ZSBmbG9hdCB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAxIVxuLy8gTk9URTogZ2FtbWEgbXVzdCBiZSA+PSAwXG5jb25zdCBmcyA9IGBcXFxuI2RlZmluZSBlcHNpbG9uIDAuMDAwMDAwMDFcblxudW5pZm9ybSBmbG9hdCBnYW1tYTE7XG51bmlmb3JtIGZsb2F0IGdhbW1hMjtcbnVuaWZvcm0gZmxvYXQgZ2FtbWEzO1xudW5pZm9ybSBmbG9hdCBnYW1tYTQ7XG5cbmZsb2F0IGdhbW1hQ29udHJhc3QoZmxvYXQgYXJyLCBmbG9hdCBnKSB7XG4gIC8vIEdhbW1hIG11c3QgYmUgPiAwXG4gIGcgPSBjbGFtcChnLCBlcHNpbG9uLCBnKTtcblxuICByZXR1cm4gcG93KGFyciwgMS4wIC8gZyk7XG59XG5cbnZlYzQgZ2FtbWFDb250cmFzdCh2ZWM0IGFyciwgZmxvYXQgZzEsIGZsb2F0IGcyLCBmbG9hdCBnMywgZmxvYXQgZzQpIHtcbiAgYXJyLnIgPSBnYW1tYUNvbnRyYXN0KGFyci5yLCBnMSk7XG4gIGFyci5nID0gZ2FtbWFDb250cmFzdChhcnIuZywgZzIpO1xuICBhcnIuYiA9IGdhbW1hQ29udHJhc3QoYXJyLmIsIGczKTtcbiAgYXJyLmEgPSBnYW1tYUNvbnRyYXN0KGFyci5hLCBnNCk7XG5cbiAgcmV0dXJuIGFycjtcbn1cbmA7XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKFxuICBvcHRzOiB7XG4gICAgZ2FtbWFDb250cmFzdFZhbHVlPzogbnVtYmVyO1xuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTE/OiBudW1iZXI7XG4gICAgZ2FtbWFDb250cmFzdFZhbHVlMj86IG51bWJlcjtcbiAgICBnYW1tYUNvbnRyYXN0VmFsdWUzPzogbnVtYmVyO1xuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTQ/OiBudW1iZXI7XG4gIH0gPSB7fVxuKTogR2V0VW5pZm9ybXNPdXRwdXQge1xuICBjb25zdCB7XG4gICAgZ2FtbWFDb250cmFzdFZhbHVlLFxuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTEsXG4gICAgZ2FtbWFDb250cmFzdFZhbHVlMixcbiAgICBnYW1tYUNvbnRyYXN0VmFsdWUzLFxuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTRcbiAgfSA9IG9wdHM7XG5cbiAgLy8gR2FtbWEgbXVzdCBiZSA+IDAsIHNvIG5vdCB1c2luZyBOdW1iZXIuaXNGaW5pdGUgaXMgZmluZVxuXG4gIGlmIChnYW1tYUNvbnRyYXN0VmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2FtbWExOiBnYW1tYUNvbnRyYXN0VmFsdWUsXG4gICAgICBnYW1tYTI6IGdhbW1hQ29udHJhc3RWYWx1ZSxcbiAgICAgIGdhbW1hMzogZ2FtbWFDb250cmFzdFZhbHVlLFxuICAgICAgZ2FtbWE0OiBnYW1tYUNvbnRyYXN0VmFsdWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKFxuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTEgfHxcbiAgICBnYW1tYUNvbnRyYXN0VmFsdWUyIHx8XG4gICAgZ2FtbWFDb250cmFzdFZhbHVlMyB8fFxuICAgIGdhbW1hQ29udHJhc3RWYWx1ZTRcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdhbW1hMTogZ2FtbWFDb250cmFzdFZhbHVlMSB8fCAxLFxuICAgICAgZ2FtbWEyOiBnYW1tYUNvbnRyYXN0VmFsdWUyIHx8IDEsXG4gICAgICBnYW1tYTM6IGdhbW1hQ29udHJhc3RWYWx1ZTMgfHwgMSxcbiAgICAgIGdhbW1hNDogZ2FtbWFDb250cmFzdFZhbHVlNCB8fCAxXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgY29uc3QgZ2FtbWFDb250cmFzdDogU2hhZGVyTW9kdWxlID0ge1xuICBuYW1lOiAnZ2FtbWFfY29udHJhc3QnLFxuICBmcyxcbiAgZ2V0VW5pZm9ybXMsXG4gIGluamVjdDoge1xuICAgICdmczpERUNLR0xfTVVUQVRFX0NPTE9SJzogYFxuICAgIGltYWdlID0gZ2FtbWFDb250cmFzdChpbWFnZSwgZ2FtbWExLCBnYW1tYTIsIGdhbW1hMywgZ2FtbWE0KTtcbiAgICBgXG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBTUEsRUFBRSxxZkF1QlA7QUFFRCxTQUFTQyxXQUFXQSxDQUFBLEVBUUM7RUFBQSxJQVBuQkMsSUFNQyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFFTixJQUNFRyxrQkFBa0IsR0FLaEJKLElBQUksQ0FMTkksa0JBQWtCO0lBQ2xCQyxtQkFBbUIsR0FJakJMLElBQUksQ0FKTkssbUJBQW1CO0lBQ25CQyxtQkFBbUIsR0FHakJOLElBQUksQ0FITk0sbUJBQW1CO0lBQ25CQyxtQkFBbUIsR0FFakJQLElBQUksQ0FGTk8sbUJBQW1CO0lBQ25CQyxtQkFBbUIsR0FDakJSLElBQUksQ0FETlEsbUJBQW1COztFQUdyQjs7RUFFQSxJQUFJSixrQkFBa0IsRUFBRTtJQUN0QixPQUFPO01BQ0xLLE1BQU0sRUFBRUwsa0JBQWtCO01BQzFCTSxNQUFNLEVBQUVOLGtCQUFrQjtNQUMxQk8sTUFBTSxFQUFFUCxrQkFBa0I7TUFDMUJRLE1BQU0sRUFBRVI7SUFDVixDQUFDO0VBQ0gsQ0FBQyxNQUFNLElBQ0xDLG1CQUFtQixJQUNuQkMsbUJBQW1CLElBQ25CQyxtQkFBbUIsSUFDbkJDLG1CQUFtQixFQUNuQjtJQUNBLE9BQU87TUFDTEMsTUFBTSxFQUFFSixtQkFBbUIsSUFBSSxDQUFDO01BQ2hDSyxNQUFNLEVBQUVKLG1CQUFtQixJQUFJLENBQUM7TUFDaENLLE1BQU0sRUFBRUosbUJBQW1CLElBQUksQ0FBQztNQUNoQ0ssTUFBTSxFQUFFSixtQkFBbUIsSUFBSTtJQUNqQyxDQUFDO0VBQ0g7RUFFQSxPQUFPLElBQUk7QUFDYjtBQUVPLElBQU1LLGFBQTJCLEdBQUFDLE9BQUEsQ0FBQUQsYUFBQSxHQUFHO0VBQ3pDRSxJQUFJLEVBQUUsZ0JBQWdCO0VBQ3RCakIsRUFBRSxFQUFGQSxFQUFFO0VBQ0ZDLFdBQVcsRUFBWEEsV0FBVztFQUNYaUIsTUFBTSxFQUFFO0lBQ04sd0JBQXdCO0VBRzFCO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==