UNPKG

kepler.gl

Version:

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

38 lines (34 loc) 7.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildRasterMeshFragmentShader = buildRasterMeshFragmentShader; exports.buildRasterMeshVertexShader = buildRasterMeshVertexShader; exports.rasterMeshUniforms = void 0; // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project var rasterMeshUniformBlock = "uniform rasterMeshUniforms {\n float meshOpacity;\n float meshFlatShading;\n} rasterMesh;\n"; var rasterMeshUniforms = exports.rasterMeshUniforms = { name: 'rasterMesh', vs: rasterMeshUniformBlock, fs: rasterMeshUniformBlock, uniformTypes: { meshOpacity: 'f32', meshFlatShading: 'f32' } }; /** * Build the vertex shader for the raster mesh layer. */ function buildRasterMeshVertexShader() { return "#version 300 es\n#define SHADER_NAME raster-mesh-layer-vs\n\nin vec3 positions;\nin vec3 positions64Low;\nin vec3 normals;\nin vec3 colors;\nin vec2 texCoords;\n\nout vec2 vTexCoord;\nout vec3 cameraPosition;\nout vec3 normals_commonspace;\nout vec4 position_commonspace;\nout vec4 vColor;\n\nconst vec3 pickingColor = vec3(1.0, 0.0, 0.0);\nconst vec3 defaultNormal = vec3(0.0, 0.0, 1.0);\n\nvoid main(void) {\n geometry.worldPosition = positions;\n geometry.uv = texCoords;\n geometry.pickingColor = pickingColor;\n\n normals_commonspace = project_normal(normals);\n geometry.normal = normals_commonspace;\n\n gl_Position = project_position_to_clipspace(positions, positions64Low, vec3(0.0), geometry.position);\n position_commonspace = geometry.position;\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n vTexCoord = texCoords;\n cameraPosition = project.cameraPosition;\n\n vColor = vec4(colors, 1.0);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n"; } /** * Build the fragment shader for the raster mesh layer. * Uses DECKGL_CREATE_COLOR and DECKGL_MUTATE_COLOR hooks registered with * the ShaderAssembler. Module inject code is assembled by luma.gl. */ function buildRasterMeshFragmentShader() { return "#version 300 es\n#define SHADER_NAME raster-mesh-layer-fs\n\nprecision highp float;\nprecision mediump int;\nprecision mediump usampler2D;\n\nin vec2 vTexCoord;\nin vec3 cameraPosition;\nin vec3 normals_commonspace;\nin vec4 position_commonspace;\nin vec4 vColor;\n\nout vec4 fragColor;\n\nvoid main(void) {\n geometry.uv = vTexCoord;\n vec2 coord = vTexCoord;\n vec4 image;\n\n DECKGL_CREATE_COLOR(image, coord);\n\n DECKGL_MUTATE_COLOR(image, coord);\n\n vec3 normal;\n if (rasterMesh.meshFlatShading > 0.5) {\n normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n } else {\n normal = normals_commonspace;\n }\n\n vec3 lightColor = lighting_getLightColor(image.rgb, cameraPosition, position_commonspace.xyz, normal);\n fragColor = vec4(lightColor, rasterMesh.meshOpacity);\n\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n"; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyYXN0ZXJNZXNoVW5pZm9ybUJsb2NrIiwicmFzdGVyTWVzaFVuaWZvcm1zIiwiZXhwb3J0cyIsIm5hbWUiLCJ2cyIsImZzIiwidW5pZm9ybVR5cGVzIiwibWVzaE9wYWNpdHkiLCJtZXNoRmxhdFNoYWRpbmciLCJidWlsZFJhc3Rlck1lc2hWZXJ0ZXhTaGFkZXIiLCJidWlsZFJhc3Rlck1lc2hGcmFnbWVudFNoYWRlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yYXN0ZXIvcmFzdGVyLW1lc2gtbGF5ZXIvcmFzdGVyLW1lc2gtbGF5ZXItc2hhZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5jb25zdCByYXN0ZXJNZXNoVW5pZm9ybUJsb2NrID0gYFxcXG51bmlmb3JtIHJhc3Rlck1lc2hVbmlmb3JtcyB7XG4gIGZsb2F0IG1lc2hPcGFjaXR5O1xuICBmbG9hdCBtZXNoRmxhdFNoYWRpbmc7XG59IHJhc3Rlck1lc2g7XG5gO1xuXG5leHBvcnQgY29uc3QgcmFzdGVyTWVzaFVuaWZvcm1zID0ge1xuICBuYW1lOiAncmFzdGVyTWVzaCcsXG4gIHZzOiByYXN0ZXJNZXNoVW5pZm9ybUJsb2NrLFxuICBmczogcmFzdGVyTWVzaFVuaWZvcm1CbG9jayxcbiAgdW5pZm9ybVR5cGVzOiB7XG4gICAgbWVzaE9wYWNpdHk6ICdmMzInLFxuICAgIG1lc2hGbGF0U2hhZGluZzogJ2YzMidcbiAgfVxufTtcblxuLyoqXG4gKiBCdWlsZCB0aGUgdmVydGV4IHNoYWRlciBmb3IgdGhlIHJhc3RlciBtZXNoIGxheWVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSYXN0ZXJNZXNoVmVydGV4U2hhZGVyKCk6IHN0cmluZyB7XG4gIHJldHVybiBgXFxcbiN2ZXJzaW9uIDMwMCBlc1xuI2RlZmluZSBTSEFERVJfTkFNRSByYXN0ZXItbWVzaC1sYXllci12c1xuXG5pbiB2ZWMzIHBvc2l0aW9ucztcbmluIHZlYzMgcG9zaXRpb25zNjRMb3c7XG5pbiB2ZWMzIG5vcm1hbHM7XG5pbiB2ZWMzIGNvbG9ycztcbmluIHZlYzIgdGV4Q29vcmRzO1xuXG5vdXQgdmVjMiB2VGV4Q29vcmQ7XG5vdXQgdmVjMyBjYW1lcmFQb3NpdGlvbjtcbm91dCB2ZWMzIG5vcm1hbHNfY29tbW9uc3BhY2U7XG5vdXQgdmVjNCBwb3NpdGlvbl9jb21tb25zcGFjZTtcbm91dCB2ZWM0IHZDb2xvcjtcblxuY29uc3QgdmVjMyBwaWNraW5nQ29sb3IgPSB2ZWMzKDEuMCwgMC4wLCAwLjApO1xuY29uc3QgdmVjMyBkZWZhdWx0Tm9ybWFsID0gdmVjMygwLjAsIDAuMCwgMS4wKTtcblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2VvbWV0cnkud29ybGRQb3NpdGlvbiA9IHBvc2l0aW9ucztcbiAgZ2VvbWV0cnkudXYgPSB0ZXhDb29yZHM7XG4gIGdlb21ldHJ5LnBpY2tpbmdDb2xvciA9IHBpY2tpbmdDb2xvcjtcblxuICBub3JtYWxzX2NvbW1vbnNwYWNlID0gcHJvamVjdF9ub3JtYWwobm9ybWFscyk7XG4gIGdlb21ldHJ5Lm5vcm1hbCA9IG5vcm1hbHNfY29tbW9uc3BhY2U7XG5cbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0X3Bvc2l0aW9uX3RvX2NsaXBzcGFjZShwb3NpdGlvbnMsIHBvc2l0aW9uczY0TG93LCB2ZWMzKDAuMCksIGdlb21ldHJ5LnBvc2l0aW9uKTtcbiAgcG9zaXRpb25fY29tbW9uc3BhY2UgPSBnZW9tZXRyeS5wb3NpdGlvbjtcbiAgREVDS0dMX0ZJTFRFUl9HTF9QT1NJVElPTihnbF9Qb3NpdGlvbiwgZ2VvbWV0cnkpO1xuXG4gIHZUZXhDb29yZCA9IHRleENvb3JkcztcbiAgY2FtZXJhUG9zaXRpb24gPSBwcm9qZWN0LmNhbWVyYVBvc2l0aW9uO1xuXG4gIHZDb2xvciA9IHZlYzQoY29sb3JzLCAxLjApO1xuICBERUNLR0xfRklMVEVSX0NPTE9SKHZDb2xvciwgZ2VvbWV0cnkpO1xufVxuYDtcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgZnJhZ21lbnQgc2hhZGVyIGZvciB0aGUgcmFzdGVyIG1lc2ggbGF5ZXIuXG4gKiBVc2VzIERFQ0tHTF9DUkVBVEVfQ09MT1IgYW5kIERFQ0tHTF9NVVRBVEVfQ09MT1IgaG9va3MgcmVnaXN0ZXJlZCB3aXRoXG4gKiB0aGUgU2hhZGVyQXNzZW1ibGVyLiBNb2R1bGUgaW5qZWN0IGNvZGUgaXMgYXNzZW1ibGVkIGJ5IGx1bWEuZ2wuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFJhc3Rlck1lc2hGcmFnbWVudFNoYWRlcigpOiBzdHJpbmcge1xuICByZXR1cm4gYFxcXG4jdmVyc2lvbiAzMDAgZXNcbiNkZWZpbmUgU0hBREVSX05BTUUgcmFzdGVyLW1lc2gtbGF5ZXItZnNcblxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xucHJlY2lzaW9uIG1lZGl1bXAgaW50O1xucHJlY2lzaW9uIG1lZGl1bXAgdXNhbXBsZXIyRDtcblxuaW4gdmVjMiB2VGV4Q29vcmQ7XG5pbiB2ZWMzIGNhbWVyYVBvc2l0aW9uO1xuaW4gdmVjMyBub3JtYWxzX2NvbW1vbnNwYWNlO1xuaW4gdmVjNCBwb3NpdGlvbl9jb21tb25zcGFjZTtcbmluIHZlYzQgdkNvbG9yO1xuXG5vdXQgdmVjNCBmcmFnQ29sb3I7XG5cbnZvaWQgbWFpbih2b2lkKSB7XG4gIGdlb21ldHJ5LnV2ID0gdlRleENvb3JkO1xuICB2ZWMyIGNvb3JkID0gdlRleENvb3JkO1xuICB2ZWM0IGltYWdlO1xuXG4gIERFQ0tHTF9DUkVBVEVfQ09MT1IoaW1hZ2UsIGNvb3JkKTtcblxuICBERUNLR0xfTVVUQVRFX0NPTE9SKGltYWdlLCBjb29yZCk7XG5cbiAgdmVjMyBub3JtYWw7XG4gIGlmIChyYXN0ZXJNZXNoLm1lc2hGbGF0U2hhZGluZyA+IDAuNSkge1xuICAgIG5vcm1hbCA9IG5vcm1hbGl6ZShjcm9zcyhkRmR4KHBvc2l0aW9uX2NvbW1vbnNwYWNlLnh5eiksIGRGZHkocG9zaXRpb25fY29tbW9uc3BhY2UueHl6KSkpO1xuICB9IGVsc2Uge1xuICAgIG5vcm1hbCA9IG5vcm1hbHNfY29tbW9uc3BhY2U7XG4gIH1cblxuICB2ZWMzIGxpZ2h0Q29sb3IgPSBsaWdodGluZ19nZXRMaWdodENvbG9yKGltYWdlLnJnYiwgY2FtZXJhUG9zaXRpb24sIHBvc2l0aW9uX2NvbW1vbnNwYWNlLnh5eiwgbm9ybWFsKTtcbiAgZnJhZ0NvbG9yID0gdmVjNChsaWdodENvbG9yLCByYXN0ZXJNZXNoLm1lc2hPcGFjaXR5KTtcblxuICBERUNLR0xfRklMVEVSX0NPTE9SKGZyYWdDb2xvciwgZ2VvbWV0cnkpO1xufVxuYDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBLElBQU1BLHNCQUFzQixrR0FLM0I7QUFFTSxJQUFNQyxrQkFBa0IsR0FBQUMsT0FBQSxDQUFBRCxrQkFBQSxHQUFHO0VBQ2hDRSxJQUFJLEVBQUUsWUFBWTtFQUNsQkMsRUFBRSxFQUFFSixzQkFBc0I7RUFDMUJLLEVBQUUsRUFBRUwsc0JBQXNCO0VBQzFCTSxZQUFZLEVBQUU7SUFDWkMsV0FBVyxFQUFFLEtBQUs7SUFDbEJDLGVBQWUsRUFBRTtFQUNuQjtBQUNGLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ08sU0FBU0MsMkJBQTJCQSxDQUFBLEVBQVc7RUFDcEQ7QUFzQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLDZCQUE2QkEsQ0FBQSxFQUFXO0VBQ3REO0FBc0NGIiwiaWdub3JlTGlzdCI6W119