UNPKG

kepler.gl

Version:

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

125 lines (110 loc) 12.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TOPOLOGY = exports.TEXTURE_USAGE = exports.TEXTURE_FORMAT = exports.GL_BLEND_FUNC_TO_WEBGPU = exports.GL_BLEND_EQ_TO_WEBGPU = exports.FILTER_MODE = exports.DEPTH_STENCIL_FORMAT = exports.CULL_MODE = exports.BLEND_PARAMS_ALPHA = exports.BLEND_OPERATION = exports.BLEND_FACTOR = exports.ADDRESS_MODE = void 0; // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project /** * WebGPU-style string constants for deck.gl 9 / luma.gl 9 render parameters. * These replace the old GL.* enum values that were used in deck.gl 8. */ // --- Blend factors --- var BLEND_FACTOR = exports.BLEND_FACTOR = { ZERO: 'zero', ONE: 'one', SRC: 'src', ONE_MINUS_SRC: 'one-minus-src', SRC_ALPHA: 'src-alpha', ONE_MINUS_SRC_ALPHA: 'one-minus-src-alpha', DST: 'dst', ONE_MINUS_DST: 'one-minus-dst', DST_ALPHA: 'dst-alpha', ONE_MINUS_DST_ALPHA: 'one-minus-dst-alpha' }; // --- Blend operations --- var BLEND_OPERATION = exports.BLEND_OPERATION = { ADD: 'add', SUBTRACT: 'subtract', REVERSE_SUBTRACT: 'reverse-subtract', MIN: 'min', MAX: 'max' }; // --- Cull modes --- var CULL_MODE = exports.CULL_MODE = { NONE: 'none', FRONT: 'front', BACK: 'back' }; // --- Texture filter modes --- var FILTER_MODE = exports.FILTER_MODE = { NEAREST: 'nearest', LINEAR: 'linear' }; // --- Texture address (wrap) modes --- var ADDRESS_MODE = exports.ADDRESS_MODE = { CLAMP_TO_EDGE: 'clamp-to-edge', REPEAT: 'repeat', MIRROR_REPEAT: 'mirror-repeat' }; // --- Texture formats --- var TEXTURE_FORMAT = exports.TEXTURE_FORMAT = { R8_UINT: 'r8uint', R16_UINT: 'r16uint', R32_UINT: 'r32uint', R8_SINT: 'r8sint', R16_SINT: 'r16sint', R32_SINT: 'r32sint', R32_FLOAT: 'r32float', RGBA8_UNORM: 'rgba8unorm' }; // --- Depth-stencil attachment formats --- var DEPTH_STENCIL_FORMAT = exports.DEPTH_STENCIL_FORMAT = { DEPTH24_PLUS: 'depth24plus' }; // --- Texture usage flags (mirroring luma.gl Texture static fields) --- var TEXTURE_USAGE = exports.TEXTURE_USAGE = { COPY_SRC: 0x01, COPY_DST: 0x02, SAMPLE: 0x04, RENDER_ATTACHMENT: 0x10 }; // --- Primitive topologies --- var TOPOLOGY = exports.TOPOLOGY = { TRIANGLE_LIST: 'triangle-list', TRIANGLE_STRIP: 'triangle-strip', LINE_LIST: 'line-list', LINE_STRIP: 'line-strip', POINT_LIST: 'point-list' }; // --- Precomposed parameter sets --- /** * Standard alpha blending: srcAlpha / oneMinusSrcAlpha for both color and alpha. * Include `blend: true` since per-layer parameters override global ones in deck.gl 9. */ var BLEND_PARAMS_ALPHA = exports.BLEND_PARAMS_ALPHA = { blend: true, blendColorSrcFactor: BLEND_FACTOR.SRC_ALPHA, blendColorDstFactor: BLEND_FACTOR.ONE_MINUS_SRC_ALPHA, blendAlphaSrcFactor: BLEND_FACTOR.ONE, blendAlphaDstFactor: BLEND_FACTOR.ONE_MINUS_SRC_ALPHA, blendColorOperation: BLEND_OPERATION.ADD, blendAlphaOperation: BLEND_OPERATION.ADD }; // --- Mapping tables (GL enum name → WebGPU string) used by gl-utils --- var GL_BLEND_FUNC_TO_WEBGPU = exports.GL_BLEND_FUNC_TO_WEBGPU = { SRC_ALPHA: BLEND_FACTOR.SRC_ALPHA, ONE_MINUS_SRC_ALPHA: BLEND_FACTOR.ONE_MINUS_SRC_ALPHA, DST_ALPHA: BLEND_FACTOR.DST_ALPHA, ONE: BLEND_FACTOR.ONE, ONE_MINUS_DST_COLOR: BLEND_FACTOR.ONE_MINUS_DST, DST_COLOR: BLEND_FACTOR.DST, ZERO: BLEND_FACTOR.ZERO, SRC_COLOR: BLEND_FACTOR.SRC }; var GL_BLEND_EQ_TO_WEBGPU = exports.GL_BLEND_EQ_TO_WEBGPU = { FUNC_ADD: BLEND_OPERATION.ADD, FUNC_SUBTRACT: BLEND_OPERATION.SUBTRACT, FUNC_REVERSE_SUBTRACT: BLEND_OPERATION.REVERSE_SUBTRACT }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCTEVORF9GQUNUT1IiLCJleHBvcnRzIiwiWkVSTyIsIk9ORSIsIlNSQyIsIk9ORV9NSU5VU19TUkMiLCJTUkNfQUxQSEEiLCJPTkVfTUlOVVNfU1JDX0FMUEhBIiwiRFNUIiwiT05FX01JTlVTX0RTVCIsIkRTVF9BTFBIQSIsIk9ORV9NSU5VU19EU1RfQUxQSEEiLCJCTEVORF9PUEVSQVRJT04iLCJBREQiLCJTVUJUUkFDVCIsIlJFVkVSU0VfU1VCVFJBQ1QiLCJNSU4iLCJNQVgiLCJDVUxMX01PREUiLCJOT05FIiwiRlJPTlQiLCJCQUNLIiwiRklMVEVSX01PREUiLCJORUFSRVNUIiwiTElORUFSIiwiQUREUkVTU19NT0RFIiwiQ0xBTVBfVE9fRURHRSIsIlJFUEVBVCIsIk1JUlJPUl9SRVBFQVQiLCJURVhUVVJFX0ZPUk1BVCIsIlI4X1VJTlQiLCJSMTZfVUlOVCIsIlIzMl9VSU5UIiwiUjhfU0lOVCIsIlIxNl9TSU5UIiwiUjMyX1NJTlQiLCJSMzJfRkxPQVQiLCJSR0JBOF9VTk9STSIsIkRFUFRIX1NURU5DSUxfRk9STUFUIiwiREVQVEgyNF9QTFVTIiwiVEVYVFVSRV9VU0FHRSIsIkNPUFlfU1JDIiwiQ09QWV9EU1QiLCJTQU1QTEUiLCJSRU5ERVJfQVRUQUNITUVOVCIsIlRPUE9MT0dZIiwiVFJJQU5HTEVfTElTVCIsIlRSSUFOR0xFX1NUUklQIiwiTElORV9MSVNUIiwiTElORV9TVFJJUCIsIlBPSU5UX0xJU1QiLCJCTEVORF9QQVJBTVNfQUxQSEEiLCJibGVuZCIsImJsZW5kQ29sb3JTcmNGYWN0b3IiLCJibGVuZENvbG9yRHN0RmFjdG9yIiwiYmxlbmRBbHBoYVNyY0ZhY3RvciIsImJsZW5kQWxwaGFEc3RGYWN0b3IiLCJibGVuZENvbG9yT3BlcmF0aW9uIiwiYmxlbmRBbHBoYU9wZXJhdGlvbiIsIkdMX0JMRU5EX0ZVTkNfVE9fV0VCR1BVIiwiT05FX01JTlVTX0RTVF9DT0xPUiIsIkRTVF9DT0xPUiIsIlNSQ19DT0xPUiIsIkdMX0JMRU5EX0VRX1RPX1dFQkdQVSIsIkZVTkNfQUREIiwiRlVOQ19TVUJUUkFDVCIsIkZVTkNfUkVWRVJTRV9TVUJUUkFDVCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ncHUtcGFyYW1ldGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKipcbiAqIFdlYkdQVS1zdHlsZSBzdHJpbmcgY29uc3RhbnRzIGZvciBkZWNrLmdsIDkgLyBsdW1hLmdsIDkgcmVuZGVyIHBhcmFtZXRlcnMuXG4gKiBUaGVzZSByZXBsYWNlIHRoZSBvbGQgR0wuKiBlbnVtIHZhbHVlcyB0aGF0IHdlcmUgdXNlZCBpbiBkZWNrLmdsIDguXG4gKi9cblxuLy8gLS0tIEJsZW5kIGZhY3RvcnMgLS0tXG5leHBvcnQgY29uc3QgQkxFTkRfRkFDVE9SID0ge1xuICBaRVJPOiAnemVybycsXG4gIE9ORTogJ29uZScsXG4gIFNSQzogJ3NyYycsXG4gIE9ORV9NSU5VU19TUkM6ICdvbmUtbWludXMtc3JjJyxcbiAgU1JDX0FMUEhBOiAnc3JjLWFscGhhJyxcbiAgT05FX01JTlVTX1NSQ19BTFBIQTogJ29uZS1taW51cy1zcmMtYWxwaGEnLFxuICBEU1Q6ICdkc3QnLFxuICBPTkVfTUlOVVNfRFNUOiAnb25lLW1pbnVzLWRzdCcsXG4gIERTVF9BTFBIQTogJ2RzdC1hbHBoYScsXG4gIE9ORV9NSU5VU19EU1RfQUxQSEE6ICdvbmUtbWludXMtZHN0LWFscGhhJ1xufSBhcyBjb25zdDtcblxuLy8gLS0tIEJsZW5kIG9wZXJhdGlvbnMgLS0tXG5leHBvcnQgY29uc3QgQkxFTkRfT1BFUkFUSU9OID0ge1xuICBBREQ6ICdhZGQnLFxuICBTVUJUUkFDVDogJ3N1YnRyYWN0JyxcbiAgUkVWRVJTRV9TVUJUUkFDVDogJ3JldmVyc2Utc3VidHJhY3QnLFxuICBNSU46ICdtaW4nLFxuICBNQVg6ICdtYXgnXG59IGFzIGNvbnN0O1xuXG4vLyAtLS0gQ3VsbCBtb2RlcyAtLS1cbmV4cG9ydCBjb25zdCBDVUxMX01PREUgPSB7XG4gIE5PTkU6ICdub25lJyxcbiAgRlJPTlQ6ICdmcm9udCcsXG4gIEJBQ0s6ICdiYWNrJ1xufSBhcyBjb25zdDtcblxuLy8gLS0tIFRleHR1cmUgZmlsdGVyIG1vZGVzIC0tLVxuZXhwb3J0IGNvbnN0IEZJTFRFUl9NT0RFID0ge1xuICBORUFSRVNUOiAnbmVhcmVzdCcsXG4gIExJTkVBUjogJ2xpbmVhcidcbn0gYXMgY29uc3Q7XG5cbi8vIC0tLSBUZXh0dXJlIGFkZHJlc3MgKHdyYXApIG1vZGVzIC0tLVxuZXhwb3J0IGNvbnN0IEFERFJFU1NfTU9ERSA9IHtcbiAgQ0xBTVBfVE9fRURHRTogJ2NsYW1wLXRvLWVkZ2UnLFxuICBSRVBFQVQ6ICdyZXBlYXQnLFxuICBNSVJST1JfUkVQRUFUOiAnbWlycm9yLXJlcGVhdCdcbn0gYXMgY29uc3Q7XG5cbi8vIC0tLSBUZXh0dXJlIGZvcm1hdHMgLS0tXG5leHBvcnQgY29uc3QgVEVYVFVSRV9GT1JNQVQgPSB7XG4gIFI4X1VJTlQ6ICdyOHVpbnQnLFxuICBSMTZfVUlOVDogJ3IxNnVpbnQnLFxuICBSMzJfVUlOVDogJ3IzMnVpbnQnLFxuICBSOF9TSU5UOiAncjhzaW50JyxcbiAgUjE2X1NJTlQ6ICdyMTZzaW50JyxcbiAgUjMyX1NJTlQ6ICdyMzJzaW50JyxcbiAgUjMyX0ZMT0FUOiAncjMyZmxvYXQnLFxuICBSR0JBOF9VTk9STTogJ3JnYmE4dW5vcm0nXG59IGFzIGNvbnN0O1xuXG4vLyAtLS0gRGVwdGgtc3RlbmNpbCBhdHRhY2htZW50IGZvcm1hdHMgLS0tXG5leHBvcnQgY29uc3QgREVQVEhfU1RFTkNJTF9GT1JNQVQgPSB7XG4gIERFUFRIMjRfUExVUzogJ2RlcHRoMjRwbHVzJ1xufSBhcyBjb25zdDtcblxuLy8gLS0tIFRleHR1cmUgdXNhZ2UgZmxhZ3MgKG1pcnJvcmluZyBsdW1hLmdsIFRleHR1cmUgc3RhdGljIGZpZWxkcykgLS0tXG5leHBvcnQgY29uc3QgVEVYVFVSRV9VU0FHRSA9IHtcbiAgQ09QWV9TUkM6IDB4MDEsXG4gIENPUFlfRFNUOiAweDAyLFxuICBTQU1QTEU6IDB4MDQsXG4gIFJFTkRFUl9BVFRBQ0hNRU5UOiAweDEwXG59IGFzIGNvbnN0O1xuXG4vLyAtLS0gUHJpbWl0aXZlIHRvcG9sb2dpZXMgLS0tXG5leHBvcnQgY29uc3QgVE9QT0xPR1kgPSB7XG4gIFRSSUFOR0xFX0xJU1Q6ICd0cmlhbmdsZS1saXN0JyxcbiAgVFJJQU5HTEVfU1RSSVA6ICd0cmlhbmdsZS1zdHJpcCcsXG4gIExJTkVfTElTVDogJ2xpbmUtbGlzdCcsXG4gIExJTkVfU1RSSVA6ICdsaW5lLXN0cmlwJyxcbiAgUE9JTlRfTElTVDogJ3BvaW50LWxpc3QnXG59IGFzIGNvbnN0O1xuXG4vLyAtLS0gUHJlY29tcG9zZWQgcGFyYW1ldGVyIHNldHMgLS0tXG5cbi8qKlxuICogU3RhbmRhcmQgYWxwaGEgYmxlbmRpbmc6IHNyY0FscGhhIC8gb25lTWludXNTcmNBbHBoYSBmb3IgYm90aCBjb2xvciBhbmQgYWxwaGEuXG4gKiBJbmNsdWRlIGBibGVuZDogdHJ1ZWAgc2luY2UgcGVyLWxheWVyIHBhcmFtZXRlcnMgb3ZlcnJpZGUgZ2xvYmFsIG9uZXMgaW4gZGVjay5nbCA5LlxuICovXG5leHBvcnQgY29uc3QgQkxFTkRfUEFSQU1TX0FMUEhBID0ge1xuICBibGVuZDogdHJ1ZSxcbiAgYmxlbmRDb2xvclNyY0ZhY3RvcjogQkxFTkRfRkFDVE9SLlNSQ19BTFBIQSxcbiAgYmxlbmRDb2xvckRzdEZhY3RvcjogQkxFTkRfRkFDVE9SLk9ORV9NSU5VU19TUkNfQUxQSEEsXG4gIGJsZW5kQWxwaGFTcmNGYWN0b3I6IEJMRU5EX0ZBQ1RPUi5PTkUsXG4gIGJsZW5kQWxwaGFEc3RGYWN0b3I6IEJMRU5EX0ZBQ1RPUi5PTkVfTUlOVVNfU1JDX0FMUEhBLFxuICBibGVuZENvbG9yT3BlcmF0aW9uOiBCTEVORF9PUEVSQVRJT04uQURELFxuICBibGVuZEFscGhhT3BlcmF0aW9uOiBCTEVORF9PUEVSQVRJT04uQUREXG59IGFzIGNvbnN0O1xuXG4vLyAtLS0gTWFwcGluZyB0YWJsZXMgKEdMIGVudW0gbmFtZSDihpIgV2ViR1BVIHN0cmluZykgdXNlZCBieSBnbC11dGlscyAtLS1cblxuZXhwb3J0IGNvbnN0IEdMX0JMRU5EX0ZVTkNfVE9fV0VCR1BVOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBTUkNfQUxQSEE6IEJMRU5EX0ZBQ1RPUi5TUkNfQUxQSEEsXG4gIE9ORV9NSU5VU19TUkNfQUxQSEE6IEJMRU5EX0ZBQ1RPUi5PTkVfTUlOVVNfU1JDX0FMUEhBLFxuICBEU1RfQUxQSEE6IEJMRU5EX0ZBQ1RPUi5EU1RfQUxQSEEsXG4gIE9ORTogQkxFTkRfRkFDVE9SLk9ORSxcbiAgT05FX01JTlVTX0RTVF9DT0xPUjogQkxFTkRfRkFDVE9SLk9ORV9NSU5VU19EU1QsXG4gIERTVF9DT0xPUjogQkxFTkRfRkFDVE9SLkRTVCxcbiAgWkVSTzogQkxFTkRfRkFDVE9SLlpFUk8sXG4gIFNSQ19DT0xPUjogQkxFTkRfRkFDVE9SLlNSQ1xufTtcblxuZXhwb3J0IGNvbnN0IEdMX0JMRU5EX0VRX1RPX1dFQkdQVTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgRlVOQ19BREQ6IEJMRU5EX09QRVJBVElPTi5BREQsXG4gIEZVTkNfU1VCVFJBQ1Q6IEJMRU5EX09QRVJBVElPTi5TVUJUUkFDVCxcbiAgRlVOQ19SRVZFUlNFX1NVQlRSQUNUOiBCTEVORF9PUEVSQVRJT04uUkVWRVJTRV9TVUJUUkFDVFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNPLElBQU1BLFlBQVksR0FBQUMsT0FBQSxDQUFBRCxZQUFBLEdBQUc7RUFDMUJFLElBQUksRUFBRSxNQUFNO0VBQ1pDLEdBQUcsRUFBRSxLQUFLO0VBQ1ZDLEdBQUcsRUFBRSxLQUFLO0VBQ1ZDLGFBQWEsRUFBRSxlQUFlO0VBQzlCQyxT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