@kepler.gl/deckgl-layers 3.3.0-alpha.5 → 3.3.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/3d-building-layer/3d-building-layer.js +66 -0
- package/dist/cjs/3d-building-layer/3d-building-utils.js +166 -0
- package/dist/cjs/3d-building-layer/types.js +6 -0
- package/dist/cjs/cluster-layer/cluster-layer.js +292 -0
- package/dist/cjs/column-layer/enhanced-column-layer.js +160 -0
- package/dist/{deckgl-extensions → cjs/deckgl-extensions}/filter-arrow-layer.js +1 -1
- package/dist/cjs/deckgl-extensions/filter-shader-module.js +26 -0
- package/dist/cjs/globe/atmosphere-layer.js +341 -0
- package/dist/cjs/globe/enhanced-multi-icon-layer.js +63 -0
- package/dist/cjs/globe/globe-depth-disk-layer.js +145 -0
- package/dist/cjs/globe/globe-layers.js +574 -0
- package/dist/cjs/globe/globe-stars-layer.js +99 -0
- package/dist/cjs/globe/globe-stars-layer.spec.js +42 -0
- package/dist/cjs/globe/globe-view.js +404 -0
- package/dist/{globe → cjs/globe}/index.js +19 -1
- package/dist/cjs/globe/mvt-label-layer.js +190 -0
- package/dist/cjs/grid-layer/enhanced-cpu-grid-layer.js +116 -0
- package/dist/cjs/hexagon-layer/enhanced-hexagon-layer.js +134 -0
- package/dist/{index.js → cjs/index.js} +1 -1
- package/dist/cjs/layer-utils/aggregation-utils.js +181 -0
- package/dist/cjs/layer-utils/cluster-utils.js +93 -0
- package/dist/cjs/layer-utils/cpu-aggregator.js +798 -0
- package/dist/cjs/layer-utils/globe-cell-utils.js +173 -0
- package/dist/cjs/layer-utils/shader-utils.js +38 -0
- package/dist/cjs/line-layer/line-layer.js +95 -0
- package/dist/cjs/raster/images.js +271 -0
- package/dist/cjs/raster/pipeline-validation-patch.js +101 -0
- package/dist/cjs/raster/raster-layer/raster-layer-shaders.js +163 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl1.fs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl1.vs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl2.fs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl2.vs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer.js +287 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +38 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer.js +321 -0
- package/dist/cjs/raster/raster-processing-uniforms.js +124 -0
- package/dist/cjs/raster/types.js +6 -0
- package/dist/cjs/raster/util.js +139 -0
- package/dist/cjs/raster/webgl/color/colormap.js +45 -0
- package/dist/cjs/raster/webgl/color/filter.js +58 -0
- package/dist/cjs/raster/webgl/color/gamma-contrast.js +68 -0
- package/dist/cjs/raster/webgl/color/linear-rescale.js +35 -0
- package/dist/cjs/raster/webgl/color/saturation.js +42 -0
- package/dist/cjs/raster/webgl/color/sigmoidal-contrast.js +68 -0
- package/dist/{raster → cjs/raster}/webgl/index.js +1 -1
- package/dist/cjs/raster/webgl/pansharpen/pansharpen-brovey.js +46 -0
- package/dist/cjs/raster/webgl/spectral-indices/evi.js +26 -0
- package/dist/cjs/raster/webgl/spectral-indices/msavi.js +25 -0
- package/dist/cjs/raster/webgl/spectral-indices/normalized-difference.js +19 -0
- package/dist/cjs/raster/webgl/spectral-indices/savi.js +21 -0
- package/dist/cjs/raster/webgl/texture/combine-bands.js +65 -0
- package/dist/cjs/raster/webgl/texture/mask.js +50 -0
- package/dist/cjs/raster/webgl/texture/reorder-bands.js +72 -0
- package/dist/cjs/raster/webgl/texture/rgba-image.js +34 -0
- package/dist/cjs/raster/webgl/types.js +6 -0
- package/dist/cjs/svg-icon-layer/scatterplot-icon-layer.js +88 -0
- package/dist/cjs/svg-icon-layer/svg-icon-layer.js +104 -0
- package/dist/cjs/wms/wms-layer.js +624 -0
- package/dist/esm/3d-building-layer/3d-building-layer.js +62 -0
- package/dist/esm/3d-building-layer/3d-building-utils.js +157 -0
- package/dist/esm/3d-building-layer/types.js +3 -0
- package/dist/esm/cluster-layer/cluster-layer.js +286 -0
- package/dist/esm/column-layer/enhanced-column-layer.js +156 -0
- package/dist/esm/deckgl-extensions/filter-arrow-layer.js +64 -0
- package/dist/esm/deckgl-extensions/filter-shader-module.js +20 -0
- package/dist/esm/globe/atmosphere-layer.js +335 -0
- package/dist/esm/globe/enhanced-multi-icon-layer.js +60 -0
- package/dist/esm/globe/globe-depth-disk-layer.js +140 -0
- package/dist/esm/globe/globe-layers.js +566 -0
- package/dist/esm/globe/globe-stars-layer.js +92 -0
- package/dist/esm/globe/globe-stars-layer.spec.js +40 -0
- package/dist/esm/globe/globe-view.js +398 -0
- package/dist/esm/globe/index.js +26 -0
- package/dist/esm/globe/mvt-label-layer.js +187 -0
- package/dist/esm/grid-layer/enhanced-cpu-grid-layer.js +112 -0
- package/dist/esm/hexagon-layer/enhanced-hexagon-layer.js +130 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/layer-utils/aggregation-utils.js +172 -0
- package/dist/esm/layer-utils/cluster-utils.js +86 -0
- package/dist/esm/layer-utils/cpu-aggregator.js +788 -0
- package/dist/esm/layer-utils/globe-cell-utils.js +167 -0
- package/dist/esm/layer-utils/shader-utils.js +32 -0
- package/dist/esm/line-layer/line-layer.js +91 -0
- package/dist/esm/raster/images.js +267 -0
- package/dist/esm/raster/pipeline-validation-patch.js +94 -0
- package/dist/esm/raster/raster-layer/raster-layer-shaders.js +153 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl1.fs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl1.vs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl2.fs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl2.vs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer.js +283 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +30 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer.js +318 -0
- package/dist/esm/raster/raster-processing-uniforms.js +118 -0
- package/dist/esm/raster/types.js +3 -0
- package/dist/esm/raster/util.js +134 -0
- package/dist/esm/raster/webgl/color/colormap.js +39 -0
- package/dist/esm/raster/webgl/color/filter.js +52 -0
- package/dist/esm/raster/webgl/color/gamma-contrast.js +62 -0
- package/dist/esm/raster/webgl/color/linear-rescale.js +29 -0
- package/dist/esm/raster/webgl/color/saturation.js +36 -0
- package/dist/esm/raster/webgl/color/sigmoidal-contrast.js +62 -0
- package/dist/esm/raster/webgl/index.js +26 -0
- package/dist/esm/raster/webgl/pansharpen/pansharpen-brovey.js +40 -0
- package/dist/esm/raster/webgl/spectral-indices/evi.js +20 -0
- package/dist/esm/raster/webgl/spectral-indices/msavi.js +19 -0
- package/dist/esm/raster/webgl/spectral-indices/normalized-difference.js +13 -0
- package/dist/esm/raster/webgl/spectral-indices/savi.js +15 -0
- package/dist/esm/raster/webgl/texture/combine-bands.js +58 -0
- package/dist/esm/raster/webgl/texture/mask.js +44 -0
- package/dist/esm/raster/webgl/texture/reorder-bands.js +65 -0
- package/dist/esm/raster/webgl/texture/rgba-image.js +28 -0
- package/dist/esm/raster/webgl/types.js +3 -0
- package/dist/esm/svg-icon-layer/scatterplot-icon-layer.js +84 -0
- package/dist/esm/svg-icon-layer/svg-icon-layer.js +101 -0
- package/dist/esm/wms/wms-layer.js +619 -0
- package/dist/globe/atmosphere-layer.d.ts +22 -1
- package/dist/globe/globe-stars-layer.d.ts +5 -0
- package/dist/globe/globe-stars-layer.spec.d.ts +1 -0
- package/dist/globe/index.d.ts +2 -2
- package/dist/wms/wms-layer.d.ts +8 -0
- package/package.json +19 -10
- package/dist/3d-building-layer/3d-building-layer.js +0 -66
- package/dist/3d-building-layer/3d-building-utils.js +0 -166
- package/dist/3d-building-layer/types.js +0 -6
- package/dist/cluster-layer/cluster-layer.js +0 -292
- package/dist/column-layer/enhanced-column-layer.js +0 -160
- package/dist/deckgl-extensions/filter-shader-module.js +0 -26
- package/dist/globe/atmosphere-layer.js +0 -220
- package/dist/globe/enhanced-multi-icon-layer.js +0 -63
- package/dist/globe/globe-depth-disk-layer.js +0 -145
- package/dist/globe/globe-layers.js +0 -569
- package/dist/globe/globe-stars-layer.js +0 -69
- package/dist/globe/globe-view.js +0 -404
- package/dist/globe/mvt-label-layer.js +0 -190
- package/dist/grid-layer/enhanced-cpu-grid-layer.js +0 -116
- package/dist/hexagon-layer/enhanced-hexagon-layer.js +0 -134
- package/dist/layer-utils/aggregation-utils.js +0 -181
- package/dist/layer-utils/cluster-utils.js +0 -93
- package/dist/layer-utils/cpu-aggregator.js +0 -798
- package/dist/layer-utils/globe-cell-utils.js +0 -173
- package/dist/layer-utils/shader-utils.js +0 -38
- package/dist/line-layer/line-layer.js +0 -95
- package/dist/raster/images.js +0 -271
- package/dist/raster/pipeline-validation-patch.js +0 -101
- package/dist/raster/raster-layer/raster-layer-shaders.js +0 -163
- package/dist/raster/raster-layer/raster-layer-webgl1.fs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl1.vs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl2.fs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl2.vs.js +0 -10
- package/dist/raster/raster-layer/raster-layer.js +0 -287
- package/dist/raster/raster-mesh-layer/matrix.d.ts +0 -4
- package/dist/raster/raster-mesh-layer/matrix.js +0 -18
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +0 -38
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +0 -321
- package/dist/raster/raster-processing-uniforms.js +0 -124
- package/dist/raster/types.js +0 -6
- package/dist/raster/util.js +0 -139
- package/dist/raster/webgl/color/colormap.js +0 -45
- package/dist/raster/webgl/color/filter.js +0 -58
- package/dist/raster/webgl/color/gamma-contrast.js +0 -68
- package/dist/raster/webgl/color/linear-rescale.js +0 -35
- package/dist/raster/webgl/color/saturation.js +0 -42
- package/dist/raster/webgl/color/sigmoidal-contrast.js +0 -68
- package/dist/raster/webgl/pansharpen/pansharpen-brovey.js +0 -46
- package/dist/raster/webgl/spectral-indices/evi.js +0 -26
- package/dist/raster/webgl/spectral-indices/msavi.js +0 -25
- package/dist/raster/webgl/spectral-indices/normalized-difference.js +0 -19
- package/dist/raster/webgl/spectral-indices/savi.js +0 -21
- package/dist/raster/webgl/texture/combine-bands.js +0 -65
- package/dist/raster/webgl/texture/mask.js +0 -50
- package/dist/raster/webgl/texture/reorder-bands.js +0 -72
- package/dist/raster/webgl/texture/rgba-image.js +0 -34
- package/dist/raster/webgl/types.js +0 -6
- package/dist/svg-icon-layer/scatterplot-icon-layer.js +0 -88
- package/dist/svg-icon-layer/svg-icon-layer.js +0 -104
- package/dist/wms/wms-layer.js +0 -594
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
export default "#define SHADER_NAME raster-layer-vertex-shader\n\nattribute vec2 texCoords;\nattribute vec3 positions;\nattribute vec3 positions64Low;\n\nvarying vec2 vTexCoord;\nvarying vec2 vTexPos;\n\nuniform float coordinateConversion;\n\nconst vec3 pickingColor = vec3(1.0, 0.0, 0.0);\n\nvoid main(void) {\n geometry.worldPosition = positions;\n geometry.uv = texCoords;\n geometry.pickingColor = pickingColor;\n\n gl_Position = project_position_to_clipspace(positions, positions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n vTexCoord = texCoords;\n\n if (coordinateConversion < -0.5) {\n vTexPos = geometry.position.xy;\n } else if (coordinateConversion > 0.5) {\n vTexPos = geometry.worldPosition.xy;\n }\n\n vec4 color = vec4(0.0);\n DECKGL_FILTER_COLOR(color, geometry);\n}\n";
|
|
5
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci9yYXN0ZXItbGF5ZXIvcmFzdGVyLWxheWVyLXdlYmdsMS52cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5leHBvcnQgZGVmYXVsdCBgXFxcbiNkZWZpbmUgU0hBREVSX05BTUUgcmFzdGVyLWxheWVyLXZlcnRleC1zaGFkZXJcblxuYXR0cmlidXRlIHZlYzIgdGV4Q29vcmRzO1xuYXR0cmlidXRlIHZlYzMgcG9zaXRpb25zO1xuYXR0cmlidXRlIHZlYzMgcG9zaXRpb25zNjRMb3c7XG5cbnZhcnlpbmcgdmVjMiB2VGV4Q29vcmQ7XG52YXJ5aW5nIHZlYzIgdlRleFBvcztcblxudW5pZm9ybSBmbG9hdCBjb29yZGluYXRlQ29udmVyc2lvbjtcblxuY29uc3QgdmVjMyBwaWNraW5nQ29sb3IgPSB2ZWMzKDEuMCwgMC4wLCAwLjApO1xuXG52b2lkIG1haW4odm9pZCkge1xuICBnZW9tZXRyeS53b3JsZFBvc2l0aW9uID0gcG9zaXRpb25zO1xuICBnZW9tZXRyeS51diA9IHRleENvb3JkcztcbiAgZ2VvbWV0cnkucGlja2luZ0NvbG9yID0gcGlja2luZ0NvbG9yO1xuXG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdF9wb3NpdGlvbl90b19jbGlwc3BhY2UocG9zaXRpb25zLCBwb3NpdGlvbnM2NExvdywgdmVjMygwLjApLCBnZW9tZXRyeS5wb3NpdGlvbik7XG4gIERFQ0tHTF9GSUxURVJfR0xfUE9TSVRJT04oZ2xfUG9zaXRpb24sIGdlb21ldHJ5KTtcblxuICB2VGV4Q29vcmQgPSB0ZXhDb29yZHM7XG5cbiAgaWYgKGNvb3JkaW5hdGVDb252ZXJzaW9uIDwgLTAuNSkge1xuICAgIHZUZXhQb3MgPSBnZW9tZXRyeS5wb3NpdGlvbi54eTtcbiAgfSBlbHNlIGlmIChjb29yZGluYXRlQ29udmVyc2lvbiA+IDAuNSkge1xuICAgIHZUZXhQb3MgPSBnZW9tZXRyeS53b3JsZFBvc2l0aW9uLnh5O1xuICB9XG5cbiAgdmVjNCBjb2xvciA9IHZlYzQoMC4wKTtcbiAgREVDS0dMX0ZJTFRFUl9DT0xPUihjb2xvciwgZ2VvbWV0cnkpO1xufVxuYDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
export default "#version 300 es\n#define SHADER_NAME raster-layer-fragment-shader\n\n// Ref https://www.khronos.org/registry/OpenGL/specs/es/3.0/GLSL_ES_Specification_3.00.pdf#page=60\nprecision mediump float;\nprecision mediump int;\nprecision mediump usampler2D;\n\nin vec2 vTexCoord;\nin vec2 vTexPos;\n\nout vec4 color;\n\nuniform float desaturate;\nuniform vec4 transparentColor;\nuniform vec3 tintColor;\nuniform float opacity;\n\nuniform float coordinateConversion;\nuniform vec4 bounds;\n\n/* projection utils */\nconst float TILE_SIZE = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE = TILE_SIZE / PI / 2.0;\n\n// from degrees to Web Mercator\nvec2 lnglat_to_mercator(vec2 lnglat) {\n float x = lnglat.x;\n float y = clamp(lnglat.y, -89.9, 89.9);\n return vec2(\n radians(x) + PI,\n PI + log(tan(PI * 0.25 + radians(y) * 0.5))\n ) * WORLD_SCALE;\n}\n\n// from Web Mercator to degrees\nvec2 mercator_to_lnglat(vec2 xy) {\n xy /= WORLD_SCALE;\n return degrees(vec2(\n xy.x - PI,\n atan(exp(xy.y - PI)) * 2.0 - PI * 0.5\n ));\n}\n/* End projection utils */\n\n// apply desaturation\nvec3 color_desaturate(vec3 color) {\n float luminance = (color.r + color.g + color.b) * 0.333333333;\n return mix(color, vec3(luminance), desaturate);\n}\n\n// apply tint\nvec3 color_tint(vec3 color) {\n return color * tintColor;\n}\n\n// blend with background color\nvec4 apply_opacity(vec3 color, float alpha) {\n if (transparentColor.a == 0.0) {\n return vec4(color, alpha);\n }\n float blendedAlpha = alpha + transparentColor.a * (1.0 - alpha);\n float highLightRatio = alpha / blendedAlpha;\n vec3 blendedRGB = mix(transparentColor.rgb, color, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n}\n\nvec2 getUV(vec2 pos) {\n return vec2(\n (pos.x - bounds[0]) / (bounds[2] - bounds[0]),\n (pos.y - bounds[3]) / (bounds[1] - bounds[3])\n );\n}\n\nvoid main(void) {\n vec2 uv = vTexCoord;\n if (coordinateConversion < -0.5) {\n vec2 lnglat = mercator_to_lnglat(vTexPos);\n uv = getUV(lnglat);\n } else if (coordinateConversion > 0.5) {\n vec2 commonPos = lnglat_to_mercator(vTexPos);\n uv = getUV(commonPos);\n }\n\n vec4 image;\n DECKGL_CREATE_COLOR(image, vTexCoord);\n\n DECKGL_MUTATE_COLOR(image, vTexCoord);\n\n color = apply_opacity(color_tint(color_desaturate(image.rgb)), opacity);\n\n geometry.uv = uv;\n DECKGL_FILTER_COLOR(color, geometry);\n}\n";
|
|
5
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci9yYXN0ZXItbGF5ZXIvcmFzdGVyLWxheWVyLXdlYmdsMi5mcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5leHBvcnQgZGVmYXVsdCBgXFxcbiN2ZXJzaW9uIDMwMCBlc1xuI2RlZmluZSBTSEFERVJfTkFNRSByYXN0ZXItbGF5ZXItZnJhZ21lbnQtc2hhZGVyXG5cbi8vIFJlZiBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9PcGVuR0wvc3BlY3MvZXMvMy4wL0dMU0xfRVNfU3BlY2lmaWNhdGlvbl8zLjAwLnBkZiNwYWdlPTYwXG5wcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbnByZWNpc2lvbiBtZWRpdW1wIGludDtcbnByZWNpc2lvbiBtZWRpdW1wIHVzYW1wbGVyMkQ7XG5cbmluIHZlYzIgdlRleENvb3JkO1xuaW4gdmVjMiB2VGV4UG9zO1xuXG5vdXQgdmVjNCBjb2xvcjtcblxudW5pZm9ybSBmbG9hdCBkZXNhdHVyYXRlO1xudW5pZm9ybSB2ZWM0IHRyYW5zcGFyZW50Q29sb3I7XG51bmlmb3JtIHZlYzMgdGludENvbG9yO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuXG51bmlmb3JtIGZsb2F0IGNvb3JkaW5hdGVDb252ZXJzaW9uO1xudW5pZm9ybSB2ZWM0IGJvdW5kcztcblxuLyogcHJvamVjdGlvbiB1dGlscyAqL1xuY29uc3QgZmxvYXQgVElMRV9TSVpFID0gNTEyLjA7XG5jb25zdCBmbG9hdCBQSSA9IDMuMTQxNTkyNjUzNjtcbmNvbnN0IGZsb2F0IFdPUkxEX1NDQUxFID0gVElMRV9TSVpFIC8gUEkgLyAyLjA7XG5cbi8vIGZyb20gZGVncmVlcyB0byBXZWIgTWVyY2F0b3JcbnZlYzIgbG5nbGF0X3RvX21lcmNhdG9yKHZlYzIgbG5nbGF0KSB7XG4gIGZsb2F0IHggPSBsbmdsYXQueDtcbiAgZmxvYXQgeSA9IGNsYW1wKGxuZ2xhdC55LCAtODkuOSwgODkuOSk7XG4gIHJldHVybiB2ZWMyKFxuICAgIHJhZGlhbnMoeCkgKyBQSSxcbiAgICBQSSArIGxvZyh0YW4oUEkgKiAwLjI1ICsgcmFkaWFucyh5KSAqIDAuNSkpXG4gICkgKiBXT1JMRF9TQ0FMRTtcbn1cblxuLy8gZnJvbSBXZWIgTWVyY2F0b3IgdG8gZGVncmVlc1xudmVjMiBtZXJjYXRvcl90b19sbmdsYXQodmVjMiB4eSkge1xuICB4eSAvPSBXT1JMRF9TQ0FMRTtcbiAgcmV0dXJuIGRlZ3JlZXModmVjMihcbiAgICB4eS54IC0gUEksXG4gICAgYXRhbihleHAoeHkueSAtIFBJKSkgKiAyLjAgLSBQSSAqIDAuNVxuICApKTtcbn1cbi8qIEVuZCBwcm9qZWN0aW9uIHV0aWxzICovXG5cbi8vIGFwcGx5IGRlc2F0dXJhdGlvblxudmVjMyBjb2xvcl9kZXNhdHVyYXRlKHZlYzMgY29sb3IpIHtcbiAgZmxvYXQgbHVtaW5hbmNlID0gKGNvbG9yLnIgKyBjb2xvci5nICsgY29sb3IuYikgKiAwLjMzMzMzMzMzMztcbiAgcmV0dXJuIG1peChjb2xvciwgdmVjMyhsdW1pbmFuY2UpLCBkZXNhdHVyYXRlKTtcbn1cblxuLy8gYXBwbHkgdGludFxudmVjMyBjb2xvcl90aW50KHZlYzMgY29sb3IpIHtcbiAgcmV0dXJuIGNvbG9yICogdGludENvbG9yO1xufVxuXG4vLyBibGVuZCB3aXRoIGJhY2tncm91bmQgY29sb3JcbnZlYzQgYXBwbHlfb3BhY2l0eSh2ZWMzIGNvbG9yLCBmbG9hdCBhbHBoYSkge1xuICBpZiAodHJhbnNwYXJlbnRDb2xvci5hID09IDAuMCkge1xuICAgIHJldHVybiB2ZWM0KGNvbG9yLCBhbHBoYSk7XG4gIH1cbiAgZmxvYXQgYmxlbmRlZEFscGhhID0gYWxwaGEgKyB0cmFuc3BhcmVudENvbG9yLmEgKiAoMS4wIC0gYWxwaGEpO1xuICBmbG9hdCBoaWdoTGlnaHRSYXRpbyA9IGFscGhhIC8gYmxlbmRlZEFscGhhO1xuICB2ZWMzIGJsZW5kZWRSR0IgPSBtaXgodHJhbnNwYXJlbnRDb2xvci5yZ2IsIGNvbG9yLCBoaWdoTGlnaHRSYXRpbyk7XG4gIHJldHVybiB2ZWM0KGJsZW5kZWRSR0IsIGJsZW5kZWRBbHBoYSk7XG59XG5cbnZlYzIgZ2V0VVYodmVjMiBwb3MpIHtcbiAgcmV0dXJuIHZlYzIoXG4gICAgKHBvcy54IC0gYm91bmRzWzBdKSAvIChib3VuZHNbMl0gLSBib3VuZHNbMF0pLFxuICAgIChwb3MueSAtIGJvdW5kc1szXSkgLyAoYm91bmRzWzFdIC0gYm91bmRzWzNdKVxuICApO1xufVxuXG52b2lkIG1haW4odm9pZCkge1xuICB2ZWMyIHV2ID0gdlRleENvb3JkO1xuICBpZiAoY29vcmRpbmF0ZUNvbnZlcnNpb24gPCAtMC41KSB7XG4gICAgdmVjMiBsbmdsYXQgPSBtZXJjYXRvcl90b19sbmdsYXQodlRleFBvcyk7XG4gICAgdXYgPSBnZXRVVihsbmdsYXQpO1xuICB9IGVsc2UgaWYgKGNvb3JkaW5hdGVDb252ZXJzaW9uID4gMC41KSB7XG4gICAgdmVjMiBjb21tb25Qb3MgPSBsbmdsYXRfdG9fbWVyY2F0b3IodlRleFBvcyk7XG4gICAgdXYgPSBnZXRVVihjb21tb25Qb3MpO1xuICB9XG5cbiAgdmVjNCBpbWFnZTtcbiAgREVDS0dMX0NSRUFURV9DT0xPUihpbWFnZSwgdlRleENvb3JkKTtcblxuICBERUNLR0xfTVVUQVRFX0NPTE9SKGltYWdlLCB2VGV4Q29vcmQpO1xuXG4gIGNvbG9yID0gYXBwbHlfb3BhY2l0eShjb2xvcl90aW50KGNvbG9yX2Rlc2F0dXJhdGUoaW1hZ2UucmdiKSksIG9wYWNpdHkpO1xuXG4gIGdlb21ldHJ5LnV2ID0gdXY7XG4gIERFQ0tHTF9GSUxURVJfQ09MT1IoY29sb3IsIGdlb21ldHJ5KTtcbn1cbmA7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
export default "#version 300 es\n#define SHADER_NAME raster-layer-vertex-shader\n\nprecision mediump float;\n\nin vec2 texCoords;\nin vec3 positions;\nin vec3 positions64Low;\n\nout vec2 vTexCoord;\nout vec2 vTexPos;\n\nuniform float coordinateConversion;\n\nconst vec3 pickingColor = vec3(1.0, 0.0, 0.0);\n\nvoid main(void) {\n geometry.worldPosition = positions;\n geometry.uv = texCoords;\n geometry.pickingColor = pickingColor;\n\n gl_Position = project_position_to_clipspace(positions, positions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n vTexCoord = texCoords;\n\n if (coordinateConversion < -0.5) {\n vTexPos = geometry.position.xy;\n } else if (coordinateConversion > 0.5) {\n vTexPos = geometry.worldPosition.xy;\n }\n\n vec4 color = vec4(0.0);\n DECKGL_FILTER_COLOR(color, geometry);\n}\n";
|
|
5
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci9yYXN0ZXItbGF5ZXIvcmFzdGVyLWxheWVyLXdlYmdsMi52cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5leHBvcnQgZGVmYXVsdCBgXFxcbiN2ZXJzaW9uIDMwMCBlc1xuI2RlZmluZSBTSEFERVJfTkFNRSByYXN0ZXItbGF5ZXItdmVydGV4LXNoYWRlclxuXG5wcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblxuaW4gdmVjMiB0ZXhDb29yZHM7XG5pbiB2ZWMzIHBvc2l0aW9ucztcbmluIHZlYzMgcG9zaXRpb25zNjRMb3c7XG5cbm91dCB2ZWMyIHZUZXhDb29yZDtcbm91dCB2ZWMyIHZUZXhQb3M7XG5cbnVuaWZvcm0gZmxvYXQgY29vcmRpbmF0ZUNvbnZlcnNpb247XG5cbmNvbnN0IHZlYzMgcGlja2luZ0NvbG9yID0gdmVjMygxLjAsIDAuMCwgMC4wKTtcblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2VvbWV0cnkud29ybGRQb3NpdGlvbiA9IHBvc2l0aW9ucztcbiAgZ2VvbWV0cnkudXYgPSB0ZXhDb29yZHM7XG4gIGdlb21ldHJ5LnBpY2tpbmdDb2xvciA9IHBpY2tpbmdDb2xvcjtcblxuICBnbF9Qb3NpdGlvbiA9IHByb2plY3RfcG9zaXRpb25fdG9fY2xpcHNwYWNlKHBvc2l0aW9ucywgcG9zaXRpb25zNjRMb3csIHZlYzMoMC4wKSwgZ2VvbWV0cnkucG9zaXRpb24pO1xuICBERUNLR0xfRklMVEVSX0dMX1BPU0lUSU9OKGdsX1Bvc2l0aW9uLCBnZW9tZXRyeSk7XG5cbiAgdlRleENvb3JkID0gdGV4Q29vcmRzO1xuXG4gIGlmIChjb29yZGluYXRlQ29udmVyc2lvbiA8IC0wLjUpIHtcbiAgICB2VGV4UG9zID0gZ2VvbWV0cnkucG9zaXRpb24ueHk7XG4gIH0gZWxzZSBpZiAoY29vcmRpbmF0ZUNvbnZlcnNpb24gPiAwLjUpIHtcbiAgICB2VGV4UG9zID0gZ2VvbWV0cnkud29ybGRQb3NpdGlvbi54eTtcbiAgfVxuXG4gIHZlYzQgY29sb3IgPSB2ZWM0KDAuMCk7XG4gIERFQ0tHTF9GSUxURVJfQ09MT1IoY29sb3IsIGdlb21ldHJ5KTtcbn1cbmA7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
3
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
4
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
5
|
+
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
6
|
+
import _get from "@babel/runtime/helpers/esm/get";
|
|
7
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
8
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
9
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
10
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
11
|
+
function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
|
|
12
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
|
+
// SPDX-License-Identifier: MIT
|
|
15
|
+
// Copyright contributors to the kepler.gl project
|
|
16
|
+
|
|
17
|
+
import { BitmapLayer } from '@deck.gl/layers';
|
|
18
|
+
import { buildRasterFragmentShader, buildRasterVertexShader, rasterUniforms, ensureRasterHooksRegistered, prepareLumaModules } from './raster-layer-shaders';
|
|
19
|
+
import { loadImages } from '../images';
|
|
20
|
+
import { modulesEqual, applyModuleUniforms } from '../util';
|
|
21
|
+
import { patchPipelineValidation } from '../pipeline-validation-patch';
|
|
22
|
+
import { rasterProcessingUniforms } from '../raster-processing-uniforms';
|
|
23
|
+
var defaultProps = _objectSpread(_objectSpread({}, BitmapLayer.defaultProps), {}, {
|
|
24
|
+
modules: {
|
|
25
|
+
type: 'array',
|
|
26
|
+
value: [],
|
|
27
|
+
compare: true
|
|
28
|
+
},
|
|
29
|
+
images: {
|
|
30
|
+
type: 'object',
|
|
31
|
+
value: {},
|
|
32
|
+
compare: true
|
|
33
|
+
},
|
|
34
|
+
moduleProps: {
|
|
35
|
+
type: 'object',
|
|
36
|
+
value: {},
|
|
37
|
+
compare: true
|
|
38
|
+
},
|
|
39
|
+
onRedrawNeeded: {
|
|
40
|
+
type: 'function',
|
|
41
|
+
value: null,
|
|
42
|
+
compare: false
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
var RasterLayer = /*#__PURE__*/function (_BitmapLayer) {
|
|
46
|
+
function RasterLayer() {
|
|
47
|
+
var _this;
|
|
48
|
+
_classCallCheck(this, RasterLayer);
|
|
49
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
50
|
+
args[_key] = arguments[_key];
|
|
51
|
+
}
|
|
52
|
+
_this = _callSuper(this, RasterLayer, [].concat(args));
|
|
53
|
+
_defineProperty(_this, "_redrawScheduled", false);
|
|
54
|
+
_defineProperty(_this, "_pendingImageRetry", null);
|
|
55
|
+
/** How many consecutive frames have retried a failed texture upload. */
|
|
56
|
+
_defineProperty(_this, "_imageRetryCount", 0);
|
|
57
|
+
return _this;
|
|
58
|
+
}
|
|
59
|
+
_inherits(RasterLayer, _BitmapLayer);
|
|
60
|
+
return _createClass(RasterLayer, [{
|
|
61
|
+
key: "initializeState",
|
|
62
|
+
value: function initializeState() {
|
|
63
|
+
patchPipelineValidation();
|
|
64
|
+
ensureRasterHooksRegistered();
|
|
65
|
+
this.setState({
|
|
66
|
+
images: {}
|
|
67
|
+
});
|
|
68
|
+
_superPropGet(RasterLayer, "initializeState", this, 3)([]);
|
|
69
|
+
}
|
|
70
|
+
}, {
|
|
71
|
+
key: "draw",
|
|
72
|
+
value: function draw(_opts) {
|
|
73
|
+
var _this$props$opacity;
|
|
74
|
+
// If a previous frame had failed texture uploads, retry them now before
|
|
75
|
+
// checking whether the images state is complete. Pass oldImagesData: {} so
|
|
76
|
+
// all keys are treated as new and bypass the isEqual skip-check.
|
|
77
|
+
// Retries are bounded to MAX_IMAGE_RETRY_ATTEMPTS to avoid an infinite
|
|
78
|
+
// redraw loop when image data is permanently invalid.
|
|
79
|
+
if (this._pendingImageRetry) {
|
|
80
|
+
var _this$context$device;
|
|
81
|
+
var retry = this._pendingImageRetry;
|
|
82
|
+
this._pendingImageRetry = null;
|
|
83
|
+
var _loadImages = loadImages({
|
|
84
|
+
gl: ((_this$context$device = this.context.device) === null || _this$context$device === void 0 ? void 0 : _this$context$device.gl) || this.context.gl,
|
|
85
|
+
device: this.context.device,
|
|
86
|
+
images: this.state.images,
|
|
87
|
+
imagesData: retry,
|
|
88
|
+
oldImagesData: {}
|
|
89
|
+
}),
|
|
90
|
+
newImages = _loadImages.images,
|
|
91
|
+
hasPendingUploads = _loadImages.hasPendingUploads;
|
|
92
|
+
if (newImages) {
|
|
93
|
+
this.setState({
|
|
94
|
+
images: newImages
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
if (hasPendingUploads) {
|
|
98
|
+
this._imageRetryCount++;
|
|
99
|
+
if (this._imageRetryCount < RasterLayer.MAX_IMAGE_RETRY_ATTEMPTS) {
|
|
100
|
+
this._pendingImageRetry = retry;
|
|
101
|
+
this._scheduleRedraw();
|
|
102
|
+
} else {
|
|
103
|
+
console.warn("RasterLayer: texture upload failed after ".concat(RasterLayer.MAX_IMAGE_RETRY_ATTEMPTS, " attempts, giving up."));
|
|
104
|
+
this._imageRetryCount = 0;
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
this._imageRetryCount = 0;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
var _this$state = this.state,
|
|
111
|
+
model = _this$state.model,
|
|
112
|
+
images = _this$state.images,
|
|
113
|
+
coordinateConversion = _this$state.coordinateConversion,
|
|
114
|
+
bounds = _this$state.bounds;
|
|
115
|
+
var _this$props = this.props,
|
|
116
|
+
desaturate = _this$props.desaturate,
|
|
117
|
+
transparentColor = _this$props.transparentColor,
|
|
118
|
+
tintColor = _this$props.tintColor,
|
|
119
|
+
moduleProps = _this$props.moduleProps;
|
|
120
|
+
if (!model || !images || Object.keys(images).length === 0 || !Object.values(images).every(function (item) {
|
|
121
|
+
return item;
|
|
122
|
+
})) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Set UBO uniforms for the raster module
|
|
127
|
+
model.shaderInputs.setProps({
|
|
128
|
+
raster: {
|
|
129
|
+
desaturate: desaturate || 0,
|
|
130
|
+
transparentColor: (transparentColor || [0, 0, 0, 0]).map(function (x) {
|
|
131
|
+
return x ? x / 255 : 0;
|
|
132
|
+
}),
|
|
133
|
+
tintColor: (tintColor || [255, 255, 255]).slice(0, 3).map(function (x) {
|
|
134
|
+
return x / 255;
|
|
135
|
+
}),
|
|
136
|
+
coordinateConversion: coordinateConversion || 0,
|
|
137
|
+
bounds: bounds || [0, 0, 0, 0],
|
|
138
|
+
opacity: (_this$props$opacity = this.props.opacity) !== null && _this$props$opacity !== void 0 ? _this$props$opacity : 1
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
// Apply each custom module's uniforms/bindings to shaderInputs directly.
|
|
143
|
+
// We call getUniforms once per module and write the results into
|
|
144
|
+
// shaderInputs.moduleUniforms/moduleBindings, bypassing setProps() which
|
|
145
|
+
// would call getUniforms a second time on already-transformed values.
|
|
146
|
+
var allModuleProps = _objectSpread(_objectSpread({}, moduleProps), images);
|
|
147
|
+
var modules = this.props.modules || [];
|
|
148
|
+
applyModuleUniforms(model.shaderInputs, modules, allModuleProps);
|
|
149
|
+
var drawSuccess = model.draw(this.context.renderPass);
|
|
150
|
+
if (!drawSuccess) {
|
|
151
|
+
this._scheduleRedraw();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}, {
|
|
155
|
+
key: "_scheduleRedraw",
|
|
156
|
+
value: function _scheduleRedraw() {
|
|
157
|
+
var _this2 = this;
|
|
158
|
+
if (this._redrawScheduled) return;
|
|
159
|
+
this._redrawScheduled = true;
|
|
160
|
+
requestAnimationFrame(function () {
|
|
161
|
+
var _this2$context$layerM;
|
|
162
|
+
_this2._redrawScheduled = false;
|
|
163
|
+
if (_this2.context.deck) {
|
|
164
|
+
// @ts-expect-error accessing private deck.gl property
|
|
165
|
+
_this2.context.deck._needsRedraw = 'RasterLayer pipeline pending';
|
|
166
|
+
}
|
|
167
|
+
(_this2$context$layerM = _this2.context.layerManager) === null || _this2$context$layerM === void 0 || _this2$context$layerM.setNeedsRedraw('RasterLayer pipeline pending');
|
|
168
|
+
if (typeof _this2.props.onRedrawNeeded === 'function') {
|
|
169
|
+
_this2.props.onRedrawNeeded();
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}, {
|
|
174
|
+
key: "getShaders",
|
|
175
|
+
value: function getShaders() {
|
|
176
|
+
var _this$props$modules = this.props.modules,
|
|
177
|
+
modules = _this$props$modules === void 0 ? [] : _this$props$modules;
|
|
178
|
+
var lumaModules = prepareLumaModules(modules);
|
|
179
|
+
var parentShaders = _superPropGet(RasterLayer, "getShaders", this, 3)([]);
|
|
180
|
+
return _objectSpread(_objectSpread({}, parentShaders), {}, {
|
|
181
|
+
vs: buildRasterVertexShader(),
|
|
182
|
+
fs: buildRasterFragmentShader(),
|
|
183
|
+
modules: [].concat(_toConsumableArray(parentShaders.modules || []), [rasterUniforms, rasterProcessingUniforms], _toConsumableArray(lumaModules))
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// eslint-disable-next-line complexity
|
|
188
|
+
}, {
|
|
189
|
+
key: "updateState",
|
|
190
|
+
value: function updateState(params) {
|
|
191
|
+
var props = params.props,
|
|
192
|
+
oldProps = params.oldProps,
|
|
193
|
+
changeFlags = params.changeFlags;
|
|
194
|
+
var modules = props && props.modules;
|
|
195
|
+
var oldModules = oldProps && oldProps.modules;
|
|
196
|
+
if (changeFlags.extensionsChanged || !modulesEqual(modules, oldModules)) {
|
|
197
|
+
var _this$state$model, _this$state$model$des, _this$getAttributeMan;
|
|
198
|
+
(_this$state$model = this.state.model) === null || _this$state$model === void 0 || (_this$state$model$des = _this$state$model.destroy) === null || _this$state$model$des === void 0 || _this$state$model$des.call(_this$state$model);
|
|
199
|
+
// @ts-expect-error _getModel is internal to BitmapLayer
|
|
200
|
+
this.state.model = this._getModel(this.context.device || this.context.gl);
|
|
201
|
+
(_this$getAttributeMan = this.getAttributeManager()) === null || _this$getAttributeMan === void 0 || _this$getAttributeMan.invalidateAll();
|
|
202
|
+
}
|
|
203
|
+
if (props && props.images) {
|
|
204
|
+
this.updateImages({
|
|
205
|
+
props: props,
|
|
206
|
+
oldProps: oldProps
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
var attributeManager = this.getAttributeManager();
|
|
210
|
+
if (props.bounds !== oldProps.bounds) {
|
|
211
|
+
var _this$state$model2;
|
|
212
|
+
var oldMesh = this.state.mesh;
|
|
213
|
+
var mesh = this._createMesh();
|
|
214
|
+
(_this$state$model2 = this.state.model) === null || _this$state$model2 === void 0 || _this$state$model2.setVertexCount(mesh.vertexCount);
|
|
215
|
+
for (var key in mesh) {
|
|
216
|
+
if (oldMesh && oldMesh[key] !== mesh[key]) {
|
|
217
|
+
attributeManager === null || attributeManager === void 0 || attributeManager.invalidate(key);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
this.setState(_objectSpread({
|
|
221
|
+
mesh: mesh
|
|
222
|
+
}, this._getCoordinateUniforms()));
|
|
223
|
+
} else if (props._imageCoordinateSystem !== oldProps._imageCoordinateSystem) {
|
|
224
|
+
this.setState(this._getCoordinateUniforms());
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}, {
|
|
228
|
+
key: "updateImages",
|
|
229
|
+
value: function updateImages(_ref) {
|
|
230
|
+
var props = _ref.props,
|
|
231
|
+
oldProps = _ref.oldProps;
|
|
232
|
+
var images = this.state.images;
|
|
233
|
+
var device = this.context.device;
|
|
234
|
+
var gl = (device === null || device === void 0 ? void 0 : device.gl) || this.context.gl;
|
|
235
|
+
var _loadImages2 = loadImages({
|
|
236
|
+
gl: gl,
|
|
237
|
+
device: device,
|
|
238
|
+
images: images,
|
|
239
|
+
imagesData: props.images,
|
|
240
|
+
oldImagesData: oldProps.images
|
|
241
|
+
}),
|
|
242
|
+
newImages = _loadImages2.images,
|
|
243
|
+
hasPendingUploads = _loadImages2.hasPendingUploads;
|
|
244
|
+
if (newImages) {
|
|
245
|
+
this.setState({
|
|
246
|
+
images: newImages
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
// If any texture upload failed (device not ready / createTexture threw),
|
|
250
|
+
// stash the imagesData and schedule a retry next frame. The retry passes
|
|
251
|
+
// oldImagesData: {} so all keys bypass the isEqual skip-check.
|
|
252
|
+
if (hasPendingUploads) {
|
|
253
|
+
this._pendingImageRetry = props.images;
|
|
254
|
+
this._imageRetryCount = 0;
|
|
255
|
+
this._scheduleRedraw();
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}, {
|
|
259
|
+
key: "finalizeState",
|
|
260
|
+
value: function finalizeState() {
|
|
261
|
+
_superPropGet(RasterLayer, "finalizeState", this, 3)([this.context]);
|
|
262
|
+
if (this.state.images) {
|
|
263
|
+
for (var _i = 0, _Object$values = Object.values(this.state.images); _i < _Object$values.length; _i++) {
|
|
264
|
+
var image = _Object$values[_i];
|
|
265
|
+
if (Array.isArray(image)) {
|
|
266
|
+
image.map(function (x) {
|
|
267
|
+
var _x$delete;
|
|
268
|
+
return x && (x.destroy ? x.destroy() : (_x$delete = x["delete"]) === null || _x$delete === void 0 ? void 0 : _x$delete.call(x));
|
|
269
|
+
});
|
|
270
|
+
} else if (image) {
|
|
271
|
+
var _image$delete;
|
|
272
|
+
image.destroy ? image.destroy() : (_image$delete = image["delete"]) === null || _image$delete === void 0 ? void 0 : _image$delete.call(image);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}]);
|
|
278
|
+
}(BitmapLayer);
|
|
279
|
+
_defineProperty(RasterLayer, "MAX_IMAGE_RETRY_ATTEMPTS", 3);
|
|
280
|
+
export { RasterLayer as default };
|
|
281
|
+
RasterLayer.defaultProps = defaultProps;
|
|
282
|
+
RasterLayer.layerName = 'RasterLayer';
|
|
283
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCaXRtYXBMYXllciIsImJ1aWxkUmFzdGVyRnJhZ21lbnRTaGFkZXIiLCJidWlsZFJhc3RlclZlcnRleFNoYWRlciIsInJhc3RlclVuaWZvcm1zIiwiZW5zdXJlUmFzdGVySG9va3NSZWdpc3RlcmVkIiwicHJlcGFyZUx1bWFNb2R1bGVzIiwibG9hZEltYWdlcyIsIm1vZHVsZXNFcXVhbCIsImFwcGx5TW9kdWxlVW5pZm9ybXMiLCJwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbiIsInJhc3RlclByb2Nlc3NpbmdVbmlmb3JtcyIsImRlZmF1bHRQcm9wcyIsIl9vYmplY3RTcHJlYWQiLCJtb2R1bGVzIiwidHlwZSIsInZhbHVlIiwiY29tcGFyZSIsImltYWdlcyIsIm1vZHVsZVByb3BzIiwib25SZWRyYXdOZWVkZWQiLCJSYXN0ZXJMYXllciIsIl9CaXRtYXBMYXllciIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJfY2FsbFN1cGVyIiwiY29uY2F0IiwiX2RlZmluZVByb3BlcnR5IiwiX2luaGVyaXRzIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwiaW5pdGlhbGl6ZVN0YXRlIiwic2V0U3RhdGUiLCJfc3VwZXJQcm9wR2V0IiwiZHJhdyIsIl9vcHRzIiwiX3RoaXMkcHJvcHMkb3BhY2l0eSIsIl9wZW5kaW5nSW1hZ2VSZXRyeSIsIl90aGlzJGNvbnRleHQkZGV2aWNlIiwicmV0cnkiLCJfbG9hZEltYWdlcyIsImdsIiwiY29udGV4dCIsImRldmljZSIsInN0YXRlIiwiaW1hZ2VzRGF0YSIsIm9sZEltYWdlc0RhdGEiLCJuZXdJbWFnZXMiLCJoYXNQZW5kaW5nVXBsb2FkcyIsIl9pbWFnZVJldHJ5Q291bnQiLCJNQVhfSU1BR0VfUkVUUllfQVRURU1QVFMiLCJfc2NoZWR1bGVSZWRyYXciLCJjb25zb2xlIiwid2FybiIsIl90aGlzJHN0YXRlIiwibW9kZWwiLCJjb29yZGluYXRlQ29udmVyc2lvbiIsImJvdW5kcyIsIl90aGlzJHByb3BzIiwicHJvcHMiLCJkZXNhdHVyYXRlIiwidHJhbnNwYXJlbnRDb2xvciIsInRpbnRDb2xvciIsIk9iamVjdCIsImtleXMiLCJ2YWx1ZXMiLCJldmVyeSIsIml0ZW0iLCJzaGFkZXJJbnB1dHMiLCJzZXRQcm9wcyIsInJhc3RlciIsIm1hcCIsIngiLCJzbGljZSIsIm9wYWNpdHkiLCJhbGxNb2R1bGVQcm9wcyIsImRyYXdTdWNjZXNzIiwicmVuZGVyUGFzcyIsIl90aGlzMiIsIl9yZWRyYXdTY2hlZHVsZWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJfdGhpczIkY29udGV4dCRsYXllck0iLCJkZWNrIiwiX25lZWRzUmVkcmF3IiwibGF5ZXJNYW5hZ2VyIiwic2V0TmVlZHNSZWRyYXciLCJnZXRTaGFkZXJzIiwiX3RoaXMkcHJvcHMkbW9kdWxlcyIsImx1bWFNb2R1bGVzIiwicGFyZW50U2hhZGVycyIsInZzIiwiZnMiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJ1cGRhdGVTdGF0ZSIsInBhcmFtcyIsIm9sZFByb3BzIiwiY2hhbmdlRmxhZ3MiLCJvbGRNb2R1bGVzIiwiZXh0ZW5zaW9uc0NoYW5nZWQiLCJfdGhpcyRzdGF0ZSRtb2RlbCIsIl90aGlzJHN0YXRlJG1vZGVsJGRlcyIsIl90aGlzJGdldEF0dHJpYnV0ZU1hbiIsImRlc3Ryb3kiLCJjYWxsIiwiX2dldE1vZGVsIiwiZ2V0QXR0cmlidXRlTWFuYWdlciIsImludmFsaWRhdGVBbGwiLCJ1cGRhdGVJbWFnZXMiLCJhdHRyaWJ1dGVNYW5hZ2VyIiwiX3RoaXMkc3RhdGUkbW9kZWwyIiwib2xkTWVzaCIsIm1lc2giLCJfY3JlYXRlTWVzaCIsInNldFZlcnRleENvdW50IiwidmVydGV4Q291bnQiLCJpbnZhbGlkYXRlIiwiX2dldENvb3JkaW5hdGVVbmlmb3JtcyIsIl9pbWFnZUNvb3JkaW5hdGVTeXN0ZW0iLCJfcmVmIiwiX2xvYWRJbWFnZXMyIiwiZmluYWxpemVTdGF0ZSIsIl9pIiwiX09iamVjdCR2YWx1ZXMiLCJpbWFnZSIsImlzQXJyYXkiLCJfeCRkZWxldGUiLCJfaW1hZ2UkZGVsZXRlIiwiZGVmYXVsdCIsImxheWVyTmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9yYXN0ZXIvcmFzdGVyLWxheWVyL3Jhc3Rlci1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1VwZGF0ZVBhcmFtZXRlcnN9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtCaXRtYXBMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IHtcbiAgYnVpbGRSYXN0ZXJGcmFnbWVudFNoYWRlcixcbiAgYnVpbGRSYXN0ZXJWZXJ0ZXhTaGFkZXIsXG4gIHJhc3RlclVuaWZvcm1zLFxuICBlbnN1cmVSYXN0ZXJIb29rc1JlZ2lzdGVyZWQsXG4gIHByZXBhcmVMdW1hTW9kdWxlc1xufSBmcm9tICcuL3Jhc3Rlci1sYXllci1zaGFkZXJzJztcbmltcG9ydCB7bG9hZEltYWdlc30gZnJvbSAnLi4vaW1hZ2VzJztcbmltcG9ydCB0eXBlIHtSYXN0ZXJMYXllckFkZGVkUHJvcHMsIEltYWdlU3RhdGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7bW9kdWxlc0VxdWFsLCBhcHBseU1vZHVsZVVuaWZvcm1zfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7cGF0Y2hQaXBlbGluZVZhbGlkYXRpb259IGZyb20gJy4uL3BpcGVsaW5lLXZhbGlkYXRpb24tcGF0Y2gnO1xuaW1wb3J0IHtyYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXN9IGZyb20gJy4uL3Jhc3Rlci1wcm9jZXNzaW5nLXVuaWZvcm1zJztcblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAuLi5CaXRtYXBMYXllci5kZWZhdWx0UHJvcHMsXG4gIG1vZHVsZXM6IHt0eXBlOiAnYXJyYXknLCB2YWx1ZTogW10sIGNvbXBhcmU6IHRydWV9LFxuICBpbWFnZXM6IHt0eXBlOiAnb2JqZWN0JywgdmFsdWU6IHt9LCBjb21wYXJlOiB0cnVlfSxcbiAgbW9kdWxlUHJvcHM6IHt0eXBlOiAnb2JqZWN0JywgdmFsdWU6IHt9LCBjb21wYXJlOiB0cnVlfSxcbiAgb25SZWRyYXdOZWVkZWQ6IHt0eXBlOiAnZnVuY3Rpb24nLCB2YWx1ZTogbnVsbCwgY29tcGFyZTogZmFsc2V9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYXN0ZXJMYXllciBleHRlbmRzIEJpdG1hcExheWVyPFJhc3RlckxheWVyQWRkZWRQcm9wcz4ge1xuICBkZWNsYXJlIHN0YXRlOiBCaXRtYXBMYXllcjxSYXN0ZXJMYXllckFkZGVkUHJvcHM+WydzdGF0ZSddICYge1xuICAgIGltYWdlczogSW1hZ2VTdGF0ZTtcbiAgfTtcblxuICBfcmVkcmF3U2NoZWR1bGVkID0gZmFsc2U7XG4gIF9wZW5kaW5nSW1hZ2VSZXRyeTogUmFzdGVyTGF5ZXJBZGRlZFByb3BzWydpbWFnZXMnXSB8IG51bGwgPSBudWxsO1xuICAvKiogSG93IG1hbnkgY29uc2VjdXRpdmUgZnJhbWVzIGhhdmUgcmV0cmllZCBhIGZhaWxlZCB0ZXh0dXJlIHVwbG9hZC4gKi9cbiAgX2ltYWdlUmV0cnlDb3VudCA9IDA7XG4gIHN0YXRpYyByZWFkb25seSBNQVhfSU1BR0VfUkVUUllfQVRURU1QVFMgPSAzO1xuXG4gIGluaXRpYWxpemVTdGF0ZSgpOiB2b2lkIHtcbiAgICBwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbigpO1xuICAgIGVuc3VyZVJhc3Rlckhvb2tzUmVnaXN0ZXJlZCgpO1xuICAgIHRoaXMuc2V0U3RhdGUoe2ltYWdlczoge319KTtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcbiAgfVxuXG4gIGRyYXcoX29wdHM6IHtzaGFkZXJNb2R1bGVQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj59KTogdm9pZCB7XG4gICAgLy8gSWYgYSBwcmV2aW91cyBmcmFtZSBoYWQgZmFpbGVkIHRleHR1cmUgdXBsb2FkcywgcmV0cnkgdGhlbSBub3cgYmVmb3JlXG4gICAgLy8gY2hlY2tpbmcgd2hldGhlciB0aGUgaW1hZ2VzIHN0YXRlIGlzIGNvbXBsZXRlLiBQYXNzIG9sZEltYWdlc0RhdGE6IHt9IHNvXG4gICAgLy8gYWxsIGtleXMgYXJlIHRyZWF0ZWQgYXMgbmV3IGFuZCBieXBhc3MgdGhlIGlzRXF1YWwgc2tpcC1jaGVjay5cbiAgICAvLyBSZXRyaWVzIGFyZSBib3VuZGVkIHRvIE1BWF9JTUFHRV9SRVRSWV9BVFRFTVBUUyB0byBhdm9pZCBhbiBpbmZpbml0ZVxuICAgIC8vIHJlZHJhdyBsb29wIHdoZW4gaW1hZ2UgZGF0YSBpcyBwZXJtYW5lbnRseSBpbnZhbGlkLlxuICAgIGlmICh0aGlzLl9wZW5kaW5nSW1hZ2VSZXRyeSkge1xuICAgICAgY29uc3QgcmV0cnkgPSB0aGlzLl9wZW5kaW5nSW1hZ2VSZXRyeTtcbiAgICAgIHRoaXMuX3BlbmRpbmdJbWFnZVJldHJ5ID0gbnVsbDtcbiAgICAgIGNvbnN0IHtpbWFnZXM6IG5ld0ltYWdlcywgaGFzUGVuZGluZ1VwbG9hZHN9ID0gbG9hZEltYWdlcyh7XG4gICAgICAgIGdsOiB0aGlzLmNvbnRleHQuZGV2aWNlPy5nbCB8fCB0aGlzLmNvbnRleHQuZ2wsXG4gICAgICAgIGRldmljZTogdGhpcy5jb250ZXh0LmRldmljZSxcbiAgICAgICAgaW1hZ2VzOiB0aGlzLnN0YXRlLmltYWdlcyxcbiAgICAgICAgaW1hZ2VzRGF0YTogcmV0cnksXG4gICAgICAgIG9sZEltYWdlc0RhdGE6IHt9XG4gICAgICB9KTtcbiAgICAgIGlmIChuZXdJbWFnZXMpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aW1hZ2VzOiBuZXdJbWFnZXN9KTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNQZW5kaW5nVXBsb2Fkcykge1xuICAgICAgICB0aGlzLl9pbWFnZVJldHJ5Q291bnQrKztcbiAgICAgICAgaWYgKHRoaXMuX2ltYWdlUmV0cnlDb3VudCA8IFJhc3RlckxheWVyLk1BWF9JTUFHRV9SRVRSWV9BVFRFTVBUUykge1xuICAgICAgICAgIHRoaXMuX3BlbmRpbmdJbWFnZVJldHJ5ID0gcmV0cnk7XG4gICAgICAgICAgdGhpcy5fc2NoZWR1bGVSZWRyYXcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgUmFzdGVyTGF5ZXI6IHRleHR1cmUgdXBsb2FkIGZhaWxlZCBhZnRlciAke1Jhc3RlckxheWVyLk1BWF9JTUFHRV9SRVRSWV9BVFRFTVBUU30gYXR0ZW1wdHMsIGdpdmluZyB1cC5gXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLl9pbWFnZVJldHJ5Q291bnQgPSAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pbWFnZVJldHJ5Q291bnQgPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHttb2RlbCwgaW1hZ2VzLCBjb29yZGluYXRlQ29udmVyc2lvbiwgYm91bmRzfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qge2Rlc2F0dXJhdGUsIHRyYW5zcGFyZW50Q29sb3IsIHRpbnRDb2xvciwgbW9kdWxlUHJvcHN9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmIChcbiAgICAgICFtb2RlbCB8fFxuICAgICAgIWltYWdlcyB8fFxuICAgICAgT2JqZWN0LmtleXMoaW1hZ2VzKS5sZW5ndGggPT09IDAgfHxcbiAgICAgICFPYmplY3QudmFsdWVzKGltYWdlcykuZXZlcnkoaXRlbSA9PiBpdGVtKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNldCBVQk8gdW5pZm9ybXMgZm9yIHRoZSByYXN0ZXIgbW9kdWxlXG4gICAgbW9kZWwuc2hhZGVySW5wdXRzLnNldFByb3BzKHtcbiAgICAgIHJhc3Rlcjoge1xuICAgICAgICBkZXNhdHVyYXRlOiBkZXNhdHVyYXRlIHx8IDAsXG4gICAgICAgIHRyYW5zcGFyZW50Q29sb3I6ICh0cmFuc3BhcmVudENvbG9yIHx8IFswLCAwLCAwLCAwXSkubWFwKHggPT4gKHggPyB4IC8gMjU1IDogMCkpLFxuICAgICAgICB0aW50Q29sb3I6ICh0aW50Q29sb3IgfHwgWzI1NSwgMjU1LCAyNTVdKS5zbGljZSgwLCAzKS5tYXAoeCA9PiB4IC8gMjU1KSxcbiAgICAgICAgY29vcmRpbmF0ZUNvbnZlcnNpb246IGNvb3JkaW5hdGVDb252ZXJzaW9uIHx8IDAsXG4gICAgICAgIGJvdW5kczogYm91bmRzIHx8IFswLCAwLCAwLCAwXSxcbiAgICAgICAgb3BhY2l0eTogdGhpcy5wcm9wcy5vcGFjaXR5ID8/IDFcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEFwcGx5IGVhY2ggY3VzdG9tIG1vZHVsZSdzIHVuaWZvcm1zL2JpbmRpbmdzIHRvIHNoYWRlcklucHV0cyBkaXJlY3RseS5cbiAgICAvLyBXZSBjYWxsIGdldFVuaWZvcm1zIG9uY2UgcGVyIG1vZHVsZSBhbmQgd3JpdGUgdGhlIHJlc3VsdHMgaW50b1xuICAgIC8vIHNoYWRlcklucHV0cy5tb2R1bGVVbmlmb3Jtcy9tb2R1bGVCaW5kaW5ncywgYnlwYXNzaW5nIHNldFByb3BzKCkgd2hpY2hcbiAgICAvLyB3b3VsZCBjYWxsIGdldFVuaWZvcm1zIGEgc2Vjb25kIHRpbWUgb24gYWxyZWFkeS10cmFuc2Zvcm1lZCB2YWx1ZXMuXG4gICAgY29uc3QgYWxsTW9kdWxlUHJvcHMgPSB7Li4ubW9kdWxlUHJvcHMsIC4uLmltYWdlc307XG4gICAgY29uc3QgbW9kdWxlcyA9IHRoaXMucHJvcHMubW9kdWxlcyB8fCBbXTtcbiAgICBhcHBseU1vZHVsZVVuaWZvcm1zKG1vZGVsLnNoYWRlcklucHV0cywgbW9kdWxlcywgYWxsTW9kdWxlUHJvcHMpO1xuXG4gICAgY29uc3QgZHJhd1N1Y2Nlc3MgPSBtb2RlbC5kcmF3KHRoaXMuY29udGV4dC5yZW5kZXJQYXNzKTtcbiAgICBpZiAoIWRyYXdTdWNjZXNzKSB7XG4gICAgICB0aGlzLl9zY2hlZHVsZVJlZHJhdygpO1xuICAgIH1cbiAgfVxuXG4gIF9zY2hlZHVsZVJlZHJhdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVkcmF3U2NoZWR1bGVkKSByZXR1cm47XG4gICAgdGhpcy5fcmVkcmF3U2NoZWR1bGVkID0gdHJ1ZTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fcmVkcmF3U2NoZWR1bGVkID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5jb250ZXh0LmRlY2spIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBhY2Nlc3NpbmcgcHJpdmF0ZSBkZWNrLmdsIHByb3BlcnR5XG4gICAgICAgIHRoaXMuY29udGV4dC5kZWNrLl9uZWVkc1JlZHJhdyA9ICdSYXN0ZXJMYXllciBwaXBlbGluZSBwZW5kaW5nJztcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGV4dC5sYXllck1hbmFnZXI/LnNldE5lZWRzUmVkcmF3KCdSYXN0ZXJMYXllciBwaXBlbGluZSBwZW5kaW5nJyk7XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25SZWRyYXdOZWVkZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblJlZHJhd05lZWRlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U2hhZGVycygpOiBhbnkge1xuICAgIGNvbnN0IHttb2R1bGVzID0gW119ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IGx1bWFNb2R1bGVzID0gcHJlcGFyZUx1bWFNb2R1bGVzKG1vZHVsZXMpO1xuICAgIGNvbnN0IHBhcmVudFNoYWRlcnMgPSBzdXBlci5nZXRTaGFkZXJzKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGFyZW50U2hhZGVycyxcbiAgICAgIHZzOiBidWlsZFJhc3RlclZlcnRleFNoYWRlcigpLFxuICAgICAgZnM6IGJ1aWxkUmFzdGVyRnJhZ21lbnRTaGFkZXIoKSxcbiAgICAgIG1vZHVsZXM6IFtcbiAgICAgICAgLi4uKHBhcmVudFNoYWRlcnMubW9kdWxlcyB8fCBbXSksXG4gICAgICAgIHJhc3RlclVuaWZvcm1zLFxuICAgICAgICByYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXMsXG4gICAgICAgIC4uLmx1bWFNb2R1bGVzXG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG4gIHVwZGF0ZVN0YXRlKHBhcmFtczogVXBkYXRlUGFyYW1ldGVyczxCaXRtYXBMYXllcjxSYXN0ZXJMYXllckFkZGVkUHJvcHM+Pik6IHZvaWQge1xuICAgIGNvbnN0IHtwcm9wcywgb2xkUHJvcHMsIGNoYW5nZUZsYWdzfSA9IHBhcmFtcztcbiAgICBjb25zdCBtb2R1bGVzID0gcHJvcHMgJiYgcHJvcHMubW9kdWxlcztcbiAgICBjb25zdCBvbGRNb2R1bGVzID0gb2xkUHJvcHMgJiYgb2xkUHJvcHMubW9kdWxlcztcblxuICAgIGlmIChjaGFuZ2VGbGFncy5leHRlbnNpb25zQ2hhbmdlZCB8fCAhbW9kdWxlc0VxdWFsKG1vZHVsZXMsIG9sZE1vZHVsZXMpKSB7XG4gICAgICB0aGlzLnN0YXRlLm1vZGVsPy5kZXN0cm95Py4oKTtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgX2dldE1vZGVsIGlzIGludGVybmFsIHRvIEJpdG1hcExheWVyXG4gICAgICB0aGlzLnN0YXRlLm1vZGVsID0gdGhpcy5fZ2V0TW9kZWwodGhpcy5jb250ZXh0LmRldmljZSB8fCB0aGlzLmNvbnRleHQuZ2wpO1xuICAgICAgdGhpcy5nZXRBdHRyaWJ1dGVNYW5hZ2VyKCk/LmludmFsaWRhdGVBbGwoKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMgJiYgcHJvcHMuaW1hZ2VzKSB7XG4gICAgICB0aGlzLnVwZGF0ZUltYWdlcyh7cHJvcHMsIG9sZFByb3BzfSk7XG4gICAgfVxuXG4gICAgY29uc3QgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpO1xuXG4gICAgaWYgKHByb3BzLmJvdW5kcyAhPT0gb2xkUHJvcHMuYm91bmRzKSB7XG4gICAgICBjb25zdCBvbGRNZXNoID0gdGhpcy5zdGF0ZS5tZXNoO1xuICAgICAgY29uc3QgbWVzaCA9IHRoaXMuX2NyZWF0ZU1lc2goKTtcbiAgICAgIHRoaXMuc3RhdGUubW9kZWw/LnNldFZlcnRleENvdW50KG1lc2gudmVydGV4Q291bnQpO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWVzaCkge1xuICAgICAgICBpZiAob2xkTWVzaCAmJiBvbGRNZXNoW2tleV0gIT09IG1lc2hba2V5XSkge1xuICAgICAgICAgIGF0dHJpYnV0ZU1hbmFnZXI/LmludmFsaWRhdGUoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7bWVzaCwgLi4udGhpcy5fZ2V0Q29vcmRpbmF0ZVVuaWZvcm1zKCl9KTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLl9pbWFnZUNvb3JkaW5hdGVTeXN0ZW0gIT09IG9sZFByb3BzLl9pbWFnZUNvb3JkaW5hdGVTeXN0ZW0pIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUodGhpcy5fZ2V0Q29vcmRpbmF0ZVVuaWZvcm1zKCkpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUltYWdlcyh7XG4gICAgcHJvcHMsXG4gICAgb2xkUHJvcHNcbiAgfToge1xuICAgIHByb3BzOiBSYXN0ZXJMYXllckFkZGVkUHJvcHM7XG4gICAgb2xkUHJvcHM6IFJhc3RlckxheWVyQWRkZWRQcm9wcztcbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IHtpbWFnZXN9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBkZXZpY2UgPSB0aGlzLmNvbnRleHQuZGV2aWNlO1xuICAgIGNvbnN0IGdsID0gZGV2aWNlPy5nbCB8fCB0aGlzLmNvbnRleHQuZ2w7XG5cbiAgICBjb25zdCB7aW1hZ2VzOiBuZXdJbWFnZXMsIGhhc1BlbmRpbmdVcGxvYWRzfSA9IGxvYWRJbWFnZXMoe1xuICAgICAgZ2wsXG4gICAgICBkZXZpY2UsXG4gICAgICBpbWFnZXMsXG4gICAgICBpbWFnZXNEYXRhOiBwcm9wcy5pbWFnZXMsXG4gICAgICBvbGRJbWFnZXNEYXRhOiBvbGRQcm9wcy5pbWFnZXNcbiAgICB9KTtcbiAgICBpZiAobmV3SW1hZ2VzKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtpbWFnZXM6IG5ld0ltYWdlc30pO1xuICAgIH1cbiAgICAvLyBJZiBhbnkgdGV4dHVyZSB1cGxvYWQgZmFpbGVkIChkZXZpY2Ugbm90IHJlYWR5IC8gY3JlYXRlVGV4dHVyZSB0aHJldyksXG4gICAgLy8gc3Rhc2ggdGhlIGltYWdlc0RhdGEgYW5kIHNjaGVkdWxlIGEgcmV0cnkgbmV4dCBmcmFtZS4gVGhlIHJldHJ5IHBhc3Nlc1xuICAgIC8vIG9sZEltYWdlc0RhdGE6IHt9IHNvIGFsbCBrZXlzIGJ5cGFzcyB0aGUgaXNFcXVhbCBza2lwLWNoZWNrLlxuICAgIGlmIChoYXNQZW5kaW5nVXBsb2Fkcykge1xuICAgICAgdGhpcy5fcGVuZGluZ0ltYWdlUmV0cnkgPSBwcm9wcy5pbWFnZXM7XG4gICAgICB0aGlzLl9pbWFnZVJldHJ5Q291bnQgPSAwO1xuICAgICAgdGhpcy5fc2NoZWR1bGVSZWRyYXcoKTtcbiAgICB9XG4gIH1cblxuICBmaW5hbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLmZpbmFsaXplU3RhdGUodGhpcy5jb250ZXh0KTtcblxuICAgIGlmICh0aGlzLnN0YXRlLmltYWdlcykge1xuICAgICAgZm9yIChjb25zdCBpbWFnZSBvZiBPYmplY3QudmFsdWVzKHRoaXMuc3RhdGUuaW1hZ2VzKSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZSkpIHtcbiAgICAgICAgICBpbWFnZS5tYXAoeCA9PiB4ICYmICh4LmRlc3Ryb3kgPyB4LmRlc3Ryb3koKSA6IHguZGVsZXRlPy4oKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGltYWdlKSB7XG4gICAgICAgICAgaW1hZ2UuZGVzdHJveSA/IGltYWdlLmRlc3Ryb3koKSA6IGltYWdlLmRlbGV0ZT8uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmFzdGVyTGF5ZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuUmFzdGVyTGF5ZXIubGF5ZXJOYW1lID0gJ1Jhc3RlckxheWVyJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7O0FBR0EsU0FBUUEsV0FBVyxRQUFPLGlCQUFpQjtBQUUzQyxTQUNFQyx5QkFBeUIsRUFDekJDLHVCQUF1QixFQUN2QkMsY0FBYyxFQUNkQywyQkFBMkIsRUFDM0JDLGtCQUFrQixRQUNiLHdCQUF3QjtBQUMvQixTQUFRQyxVQUFVLFFBQU8sV0FBVztBQUVwQyxTQUFRQyxZQUFZLEVBQUVDLG1CQUFtQixRQUFPLFNBQVM7QUFDekQsU0FBUUMsdUJBQXVCLFFBQU8sOEJBQThCO0FBQ3BFLFNBQVFDLHdCQUF3QixRQUFPLCtCQUErQjtBQUV0RSxJQUFNQyxZQUFZLEdBQUFDLGFBQUEsQ0FBQUEsYUFBQSxLQUNiWixXQUFXLENBQUNXLFlBQVk7RUFDM0JFLE9BQU8sRUFBRTtJQUFDQyxJQUFJLEVBQUUsT0FBTztJQUFFQyxLQUFLLEVBQUUsRUFBRTtJQUFFQyxPQUFPLEVBQUU7RUFBSSxDQUFDO0VBQ2xEQyxNQUFNLEVBQUU7SUFBQ0gsSUFBSSxFQUFFLFFBQVE7SUFBRUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUFFQyxPQUFPLEVBQUU7RUFBSSxDQUFDO0VBQ2xERSxXQUFXLEVBQUU7SUFBQ0osSUFBSSxFQUFFLFFBQVE7SUFBRUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUFFQyxPQUFPLEVBQUU7RUFBSSxDQUFDO0VBQ3ZERyxjQUFjLEVBQUU7SUFBQ0wsSUFBSSxFQUFFLFVBQVU7SUFBRUMsS0FBSyxFQUFFLElBQUk7SUFBRUMsT0FBTyxFQUFFO0VBQUs7QUFBQyxFQUNoRTtBQUFDLElBRW1CSSxXQUFXLDBCQUFBQyxZQUFBO0VBQUEs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
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
var rasterMeshUniformBlock = "uniform rasterMeshUniforms {\n float meshOpacity;\n float meshFlatShading;\n} rasterMesh;\n";
|
|
5
|
+
export var rasterMeshUniforms = {
|
|
6
|
+
name: 'rasterMesh',
|
|
7
|
+
vs: rasterMeshUniformBlock,
|
|
8
|
+
fs: rasterMeshUniformBlock,
|
|
9
|
+
uniformTypes: {
|
|
10
|
+
meshOpacity: 'f32',
|
|
11
|
+
meshFlatShading: 'f32'
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Build the vertex shader for the raster mesh layer.
|
|
17
|
+
*/
|
|
18
|
+
export function buildRasterMeshVertexShader() {
|
|
19
|
+
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";
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Build the fragment shader for the raster mesh layer.
|
|
24
|
+
* Uses DECKGL_CREATE_COLOR and DECKGL_MUTATE_COLOR hooks registered with
|
|
25
|
+
* the ShaderAssembler. Module inject code is assembled by luma.gl.
|
|
26
|
+
*/
|
|
27
|
+
export function buildRasterMeshFragmentShader() {
|
|
28
|
+
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";
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyYXN0ZXJNZXNoVW5pZm9ybUJsb2NrIiwicmFzdGVyTWVzaFVuaWZvcm1zIiwibmFtZSIsInZzIiwiZnMiLCJ1bmlmb3JtVHlwZXMiLCJtZXNoT3BhY2l0eSIsIm1lc2hGbGF0U2hhZGluZyIsImJ1aWxkUmFzdGVyTWVzaFZlcnRleFNoYWRlciIsImJ1aWxkUmFzdGVyTWVzaEZyYWdtZW50U2hhZGVyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci9yYXN0ZXItbWVzaC1sYXllci9yYXN0ZXItbWVzaC1sYXllci1zaGFkZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmNvbnN0IHJhc3Rlck1lc2hVbmlmb3JtQmxvY2sgPSBgXFxcbnVuaWZvcm0gcmFzdGVyTWVzaFVuaWZvcm1zIHtcbiAgZmxvYXQgbWVzaE9wYWNpdHk7XG4gIGZsb2F0IG1lc2hGbGF0U2hhZGluZztcbn0gcmFzdGVyTWVzaDtcbmA7XG5cbmV4cG9ydCBjb25zdCByYXN0ZXJNZXNoVW5pZm9ybXMgPSB7XG4gIG5hbWU6ICdyYXN0ZXJNZXNoJyxcbiAgdnM6IHJhc3Rlck1lc2hVbmlmb3JtQmxvY2ssXG4gIGZzOiByYXN0ZXJNZXNoVW5pZm9ybUJsb2NrLFxuICB1bmlmb3JtVHlwZXM6IHtcbiAgICBtZXNoT3BhY2l0eTogJ2YzMicsXG4gICAgbWVzaEZsYXRTaGFkaW5nOiAnZjMyJ1xuICB9XG59O1xuXG4vKipcbiAqIEJ1aWxkIHRoZSB2ZXJ0ZXggc2hhZGVyIGZvciB0aGUgcmFzdGVyIG1lc2ggbGF5ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFJhc3Rlck1lc2hWZXJ0ZXhTaGFkZXIoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBcXFxuI3ZlcnNpb24gMzAwIGVzXG4jZGVmaW5lIFNIQURFUl9OQU1FIHJhc3Rlci1tZXNoLWxheWVyLXZzXG5cbmluIHZlYzMgcG9zaXRpb25zO1xuaW4gdmVjMyBwb3NpdGlvbnM2NExvdztcbmluIHZlYzMgbm9ybWFscztcbmluIHZlYzMgY29sb3JzO1xuaW4gdmVjMiB0ZXhDb29yZHM7XG5cbm91dCB2ZWMyIHZUZXhDb29yZDtcbm91dCB2ZWMzIGNhbWVyYVBvc2l0aW9uO1xub3V0IHZlYzMgbm9ybWFsc19jb21tb25zcGFjZTtcbm91dCB2ZWM0IHBvc2l0aW9uX2NvbW1vbnNwYWNlO1xub3V0IHZlYzQgdkNvbG9yO1xuXG5jb25zdCB2ZWMzIHBpY2tpbmdDb2xvciA9IHZlYzMoMS4wLCAwLjAsIDAuMCk7XG5jb25zdCB2ZWMzIGRlZmF1bHROb3JtYWwgPSB2ZWMzKDAuMCwgMC4wLCAxLjApO1xuXG52b2lkIG1haW4odm9pZCkge1xuICBnZW9tZXRyeS53b3JsZFBvc2l0aW9uID0gcG9zaXRpb25zO1xuICBnZW9tZXRyeS51diA9IHRleENvb3JkcztcbiAgZ2VvbWV0cnkucGlja2luZ0NvbG9yID0gcGlja2luZ0NvbG9yO1xuXG4gIG5vcm1hbHNfY29tbW9uc3BhY2UgPSBwcm9qZWN0X25vcm1hbChub3JtYWxzKTtcbiAgZ2VvbWV0cnkubm9ybWFsID0gbm9ybWFsc19jb21tb25zcGFjZTtcblxuICBnbF9Qb3NpdGlvbiA9IHByb2plY3RfcG9zaXRpb25fdG9fY2xpcHNwYWNlKHBvc2l0aW9ucywgcG9zaXRpb25zNjRMb3csIHZlYzMoMC4wKSwgZ2VvbWV0cnkucG9zaXRpb24pO1xuICBwb3NpdGlvbl9jb21tb25zcGFjZSA9IGdlb21ldHJ5LnBvc2l0aW9uO1xuICBERUNLR0xfRklMVEVSX0dMX1BPU0lUSU9OKGdsX1Bvc2l0aW9uLCBnZW9tZXRyeSk7XG5cbiAgdlRleENvb3JkID0gdGV4Q29vcmRzO1xuICBjYW1lcmFQb3NpdGlvbiA9IHByb2plY3QuY2FtZXJhUG9zaXRpb247XG5cbiAgdkNvbG9yID0gdmVjNChjb2xvcnMsIDEuMCk7XG4gIERFQ0tHTF9GSUxURVJfQ09MT1IodkNvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBmcmFnbWVudCBzaGFkZXIgZm9yIHRoZSByYXN0ZXIgbWVzaCBsYXllci5cbiAqIFVzZXMgREVDS0dMX0NSRUFURV9DT0xPUiBhbmQgREVDS0dMX01VVEFURV9DT0xPUiBob29rcyByZWdpc3RlcmVkIHdpdGhcbiAqIHRoZSBTaGFkZXJBc3NlbWJsZXIuIE1vZHVsZSBpbmplY3QgY29kZSBpcyBhc3NlbWJsZWQgYnkgbHVtYS5nbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUmFzdGVyTWVzaEZyYWdtZW50U2hhZGVyKCk6IHN0cmluZyB7XG4gIHJldHVybiBgXFxcbiN2ZXJzaW9uIDMwMCBlc1xuI2RlZmluZSBTSEFERVJfTkFNRSByYXN0ZXItbWVzaC1sYXllci1mc1xuXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5wcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5wcmVjaXNpb24gbWVkaXVtcCB1c2FtcGxlcjJEO1xuXG5pbiB2ZWMyIHZUZXhDb29yZDtcbmluIHZlYzMgY2FtZXJhUG9zaXRpb247XG5pbiB2ZWMzIG5vcm1hbHNfY29tbW9uc3BhY2U7XG5pbiB2ZWM0IHBvc2l0aW9uX2NvbW1vbnNwYWNlO1xuaW4gdmVjNCB2Q29sb3I7XG5cbm91dCB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2VvbWV0cnkudXYgPSB2VGV4Q29vcmQ7XG4gIHZlYzIgY29vcmQgPSB2VGV4Q29vcmQ7XG4gIHZlYzQgaW1hZ2U7XG5cbiAgREVDS0dMX0NSRUFURV9DT0xPUihpbWFnZSwgY29vcmQpO1xuXG4gIERFQ0tHTF9NVVRBVEVfQ09MT1IoaW1hZ2UsIGNvb3JkKTtcblxuICB2ZWMzIG5vcm1hbDtcbiAgaWYgKHJhc3Rlck1lc2gubWVzaEZsYXRTaGFkaW5nID4gMC41KSB7XG4gICAgbm9ybWFsID0gbm9ybWFsaXplKGNyb3NzKGRGZHgocG9zaXRpb25fY29tbW9uc3BhY2UueHl6KSwgZEZkeShwb3NpdGlvbl9jb21tb25zcGFjZS54eXopKSk7XG4gIH0gZWxzZSB7XG4gICAgbm9ybWFsID0gbm9ybWFsc19jb21tb25zcGFjZTtcbiAgfVxuXG4gIHZlYzMgbGlnaHRDb2xvciA9IGxpZ2h0aW5nX2dldExpZ2h0Q29sb3IoaW1hZ2UucmdiLCBjYW1lcmFQb3NpdGlvbiwgcG9zaXRpb25fY29tbW9uc3BhY2UueHl6LCBub3JtYWwpO1xuICBmcmFnQ29sb3IgPSB2ZWM0KGxpZ2h0Q29sb3IsIHJhc3Rlck1lc2gubWVzaE9wYWNpdHkpO1xuXG4gIERFQ0tHTF9GSUxURVJfQ09MT1IoZnJhZ0NvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBLElBQU1BLHNCQUFzQixrR0FLM0I7QUFFRCxPQUFPLElBQU1DLGtCQUFrQixHQUFHO0VBQ2hDQyxJQUFJLEVBQUUsWUFBWTtFQUNsQkMsRUFBRSxFQUFFSCxzQkFBc0I7RUFDMUJJLEVBQUUsRUFBRUosc0JBQXNCO0VBQzFCSyxZQUFZLEVBQUU7SUFDWkMsV0FBVyxFQUFFLEtBQUs7SUFDbEJDLGVBQWUsRUFBRTtFQUNuQjtBQUNGLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTQywyQkFBMkJBLENBQUEsRUFBVztFQUNwRDtBQXNDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTQyw2QkFBNkJBLENBQUEsRUFBVztFQUN0RDtBQXNDRiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
export default "#define SHADER_NAME raster-mesh-layer-fs\n\nprecision highp float;\n\nuniform bool hasTexture;\n\nuniform bool flatShading;\nuniform float opacity;\n\nvarying vec2 vTexCoord;\nvarying vec3 cameraPosition;\nvarying vec3 normals_commonspace;\nvarying vec4 position_commonspace;\nvarying vec4 vColor;\n\nvoid main(void) {\n geometry.uv = vTexCoord;\n vec4 image;\n DECKGL_CREATE_COLOR(image, vTexCoord);\n\n DECKGL_MUTATE_COLOR(image, vTexCoord);\n\n vec3 normal;\n if (flatShading) {\n\n// This is necessary because\n// headless.gl reports the extension as\n// available but does not support it in\n// the shader.\n#ifdef DERIVATIVES_AVAILABLE\n normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n#else\n normal = vec3(0.0, 0.0, 1.0);\n#endif\n } else {\n normal = normals_commonspace;\n }\n\n vec3 lightColor = lighting_getLightColor(image.rgb, cameraPosition, position_commonspace.xyz, normal);\n gl_FragColor = vec4(lightColor, opacity);\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n";
|
|
5
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci9yYXN0ZXItbWVzaC1sYXllci9yYXN0ZXItbWVzaC1sYXllci13ZWJnbDEuZnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuZXhwb3J0IGRlZmF1bHQgYFxcXG4jZGVmaW5lIFNIQURFUl9OQU1FIHJhc3Rlci1tZXNoLWxheWVyLWZzXG5cbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxudW5pZm9ybSBib29sIGhhc1RleHR1cmU7XG5cbnVuaWZvcm0gYm9vbCBmbGF0U2hhZGluZztcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcblxudmFyeWluZyB2ZWMyIHZUZXhDb29yZDtcbnZhcnlpbmcgdmVjMyBjYW1lcmFQb3NpdGlvbjtcbnZhcnlpbmcgdmVjMyBub3JtYWxzX2NvbW1vbnNwYWNlO1xudmFyeWluZyB2ZWM0IHBvc2l0aW9uX2NvbW1vbnNwYWNlO1xudmFyeWluZyB2ZWM0IHZDb2xvcjtcblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2VvbWV0cnkudXYgPSB2VGV4Q29vcmQ7XG4gIHZlYzQgaW1hZ2U7XG4gIERFQ0tHTF9DUkVBVEVfQ09MT1IoaW1hZ2UsIHZUZXhDb29yZCk7XG5cbiAgREVDS0dMX01VVEFURV9DT0xPUihpbWFnZSwgdlRleENvb3JkKTtcblxuICB2ZWMzIG5vcm1hbDtcbiAgaWYgKGZsYXRTaGFkaW5nKSB7XG5cbi8vIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Vcbi8vIGhlYWRsZXNzLmdsIHJlcG9ydHMgdGhlIGV4dGVuc2lvbiBhc1xuLy8gYXZhaWxhYmxlIGJ1dCBkb2VzIG5vdCBzdXBwb3J0IGl0IGluXG4vLyB0aGUgc2hhZGVyLlxuI2lmZGVmIERFUklWQVRJVkVTX0FWQUlMQUJMRVxuICAgIG5vcm1hbCA9IG5vcm1hbGl6ZShjcm9zcyhkRmR4KHBvc2l0aW9uX2NvbW1vbnNwYWNlLnh5eiksIGRGZHkocG9zaXRpb25fY29tbW9uc3BhY2UueHl6KSkpO1xuI2Vsc2VcbiAgICBub3JtYWwgPSB2ZWMzKDAuMCwgMC4wLCAxLjApO1xuI2VuZGlmXG4gIH0gZWxzZSB7XG4gICAgbm9ybWFsID0gbm9ybWFsc19jb21tb25zcGFjZTtcbiAgfVxuXG4gIHZlYzMgbGlnaHRDb2xvciA9IGxpZ2h0aW5nX2dldExpZ2h0Q29sb3IoaW1hZ2UucmdiLCBjYW1lcmFQb3NpdGlvbiwgcG9zaXRpb25fY29tbW9uc3BhY2UueHl6LCBub3JtYWwpO1xuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGxpZ2h0Q29sb3IsIG9wYWNpdHkpO1xuXG4gIERFQ0tHTF9GSUxURVJfQ09MT1IoZ2xfRnJhZ0NvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
export default "#define SHADER_NAME raster-mesh-layer-vs\n\n// Scale the model\nuniform float sizeScale;\nuniform bool composeModelMatrix;\n\n// Primitive attributes\nattribute vec3 positions;\nattribute vec3 normals;\nattribute vec3 colors;\nattribute vec2 texCoords;\n\n// Instance attributes\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\nattribute mat3 instanceModelMatrix;\nattribute vec3 instanceTranslation;\n\n// Outputs to fragment shader\nvarying vec2 vTexCoord;\nvarying vec3 cameraPosition;\nvarying vec3 normals_commonspace;\nvarying vec4 position_commonspace;\nvarying vec4 vColor;\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = texCoords;\n geometry.pickingColor = instancePickingColors;\n\n vTexCoord = texCoords;\n cameraPosition = project_uCameraPosition;\n normals_commonspace = project_normal(instanceModelMatrix * normals);\n vColor = vec4(colors * instanceColors.rgb, instanceColors.a);\n geometry.normal = normals_commonspace;\n\n vec3 pos = (instanceModelMatrix * positions) * sizeScale + instanceTranslation;\n\n if (composeModelMatrix) {\n DECKGL_FILTER_SIZE(pos, geometry);\n gl_Position = project_position_to_clipspace(pos + instancePositions, instancePositions64Low, vec3(0.0), position_commonspace);\n }\n else {\n pos = project_size(pos);\n DECKGL_FILTER_SIZE(pos, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, pos, position_commonspace);\n }\n\n geometry.position = position_commonspace;\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
|
5
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci9yYXN0ZXItbWVzaC1sYXllci9yYXN0ZXItbWVzaC1sYXllci13ZWJnbDEudnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuZXhwb3J0IGRlZmF1bHQgYFxcXG4jZGVmaW5lIFNIQURFUl9OQU1FIHJhc3Rlci1tZXNoLWxheWVyLXZzXG5cbi8vIFNjYWxlIHRoZSBtb2RlbFxudW5pZm9ybSBmbG9hdCBzaXplU2NhbGU7XG51bmlmb3JtIGJvb2wgY29tcG9zZU1vZGVsTWF0cml4O1xuXG4vLyBQcmltaXRpdmUgYXR0cmlidXRlc1xuYXR0cmlidXRlIHZlYzMgcG9zaXRpb25zO1xuYXR0cmlidXRlIHZlYzMgbm9ybWFscztcbmF0dHJpYnV0ZSB2ZWMzIGNvbG9ycztcbmF0dHJpYnV0ZSB2ZWMyIHRleENvb3JkcztcblxuLy8gSW5zdGFuY2UgYXR0cmlidXRlc1xuYXR0cmlidXRlIHZlYzMgaW5zdGFuY2VQb3NpdGlvbnM7XG5hdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZVBvc2l0aW9uczY0TG93O1xuYXR0cmlidXRlIHZlYzQgaW5zdGFuY2VDb2xvcnM7XG5hdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZVBpY2tpbmdDb2xvcnM7XG5hdHRyaWJ1dGUgbWF0MyBpbnN0YW5jZU1vZGVsTWF0cml4O1xuYXR0cmlidXRlIHZlYzMgaW5zdGFuY2VUcmFuc2xhdGlvbjtcblxuLy8gT3V0cHV0cyB0byBmcmFnbWVudCBzaGFkZXJcbnZhcnlpbmcgdmVjMiB2VGV4Q29vcmQ7XG52YXJ5aW5nIHZlYzMgY2FtZXJhUG9zaXRpb247XG52YXJ5aW5nIHZlYzMgbm9ybWFsc19jb21tb25zcGFjZTtcbnZhcnlpbmcgdmVjNCBwb3NpdGlvbl9jb21tb25zcGFjZTtcbnZhcnlpbmcgdmVjNCB2Q29sb3I7XG5cbnZvaWQgbWFpbih2b2lkKSB7XG4gIGdlb21ldHJ5LndvcmxkUG9zaXRpb24gPSBpbnN0YW5jZVBvc2l0aW9ucztcbiAgZ2VvbWV0cnkudXYgPSB0ZXhDb29yZHM7XG4gIGdlb21ldHJ5LnBpY2tpbmdDb2xvciA9IGluc3RhbmNlUGlja2luZ0NvbG9ycztcblxuICB2VGV4Q29vcmQgPSB0ZXhDb29yZHM7XG4gIGNhbWVyYVBvc2l0aW9uID0gcHJvamVjdF91Q2FtZXJhUG9zaXRpb247XG4gIG5vcm1hbHNfY29tbW9uc3BhY2UgPSBwcm9qZWN0X25vcm1hbChpbnN0YW5jZU1vZGVsTWF0cml4ICogbm9ybWFscyk7XG4gIHZDb2xvciA9IHZlYzQoY29sb3JzICogaW5zdGFuY2VDb2xvcnMucmdiLCBpbnN0YW5jZUNvbG9ycy5hKTtcbiAgZ2VvbWV0cnkubm9ybWFsID0gbm9ybWFsc19jb21tb25zcGFjZTtcblxuICB2ZWMzIHBvcyA9IChpbnN0YW5jZU1vZGVsTWF0cml4ICogcG9zaXRpb25zKSAqIHNpemVTY2FsZSArIGluc3RhbmNlVHJhbnNsYXRpb247XG5cbiAgaWYgKGNvbXBvc2VNb2RlbE1hdHJpeCkge1xuICAgIERFQ0tHTF9GSUxURVJfU0laRShwb3MsIGdlb21ldHJ5KTtcbiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3RfcG9zaXRpb25fdG9fY2xpcHNwYWNlKHBvcyArIGluc3RhbmNlUG9zaXRpb25zLCBpbnN0YW5jZVBvc2l0aW9uczY0TG93LCB2ZWMzKDAuMCksIHBvc2l0aW9uX2NvbW1vbnNwYWNlKTtcbiAgfVxuICBlbHNlIHtcbiAgICBwb3MgPSBwcm9qZWN0X3NpemUocG9zKTtcbiAgICBERUNLR0xfRklMVEVSX1NJWkUocG9zLCBnZW9tZXRyeSk7XG4gICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0X3Bvc2l0aW9uX3RvX2NsaXBzcGFjZShpbnN0YW5jZVBvc2l0aW9ucywgaW5zdGFuY2VQb3NpdGlvbnM2NExvdywgcG9zLCBwb3NpdGlvbl9jb21tb25zcGFjZSk7XG4gIH1cblxuICBnZW9tZXRyeS5wb3NpdGlvbiA9IHBvc2l0aW9uX2NvbW1vbnNwYWNlO1xuICBERUNLR0xfRklMVEVSX0dMX1BPU0lUSU9OKGdsX1Bvc2l0aW9uLCBnZW9tZXRyeSk7XG5cbiAgREVDS0dMX0ZJTFRFUl9DT0xPUih2Q29sb3IsIGdlb21ldHJ5KTtcbn1cbmA7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
export default "#version 300 es\n#define SHADER_NAME raster-mesh-layer-fs\n\nprecision highp float;\n\nuniform bool hasTexture;\n\nuniform bool flatShading;\nuniform float opacity;\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 vec4 image;\n DECKGL_CREATE_COLOR(image, vTexCoord);\n\n DECKGL_MUTATE_COLOR(image, vTexCoord);\n\n vec3 normal;\n if (flatShading) {\n\n// This is necessary because\n// headless.gl reports the extension as\n// available but does not support it in\n// the shader.\n#ifdef DERIVATIVES_AVAILABLE\n normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n#else\n normal = vec3(0.0, 0.0, 1.0);\n#endif\n } else {\n normal = normals_commonspace;\n }\n\n vec3 lightColor = lighting_getLightColor(image.rgb, cameraPosition, position_commonspace.xyz, normal);\n fragColor = vec4(lightColor, opacity);\n\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n";
|
|
5
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci9yYXN0ZXItbWVzaC1sYXllci9yYXN0ZXItbWVzaC1sYXllci13ZWJnbDIuZnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuZXhwb3J0IGRlZmF1bHQgYFxcXG4jdmVyc2lvbiAzMDAgZXNcbiNkZWZpbmUgU0hBREVSX05BTUUgcmFzdGVyLW1lc2gtbGF5ZXItZnNcblxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuXG51bmlmb3JtIGJvb2wgaGFzVGV4dHVyZTtcblxudW5pZm9ybSBib29sIGZsYXRTaGFkaW5nO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuXG5pbiB2ZWMyIHZUZXhDb29yZDtcbmluIHZlYzMgY2FtZXJhUG9zaXRpb247XG5pbiB2ZWMzIG5vcm1hbHNfY29tbW9uc3BhY2U7XG5pbiB2ZWM0IHBvc2l0aW9uX2NvbW1vbnNwYWNlO1xuaW4gdmVjNCB2Q29sb3I7XG5cbm91dCB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2VvbWV0cnkudXYgPSB2VGV4Q29vcmQ7XG4gIHZlYzQgaW1hZ2U7XG4gIERFQ0tHTF9DUkVBVEVfQ09MT1IoaW1hZ2UsIHZUZXhDb29yZCk7XG5cbiAgREVDS0dMX01VVEFURV9DT0xPUihpbWFnZSwgdlRleENvb3JkKTtcblxuICB2ZWMzIG5vcm1hbDtcbiAgaWYgKGZsYXRTaGFkaW5nKSB7XG5cbi8vIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Vcbi8vIGhlYWRsZXNzLmdsIHJlcG9ydHMgdGhlIGV4dGVuc2lvbiBhc1xuLy8gYXZhaWxhYmxlIGJ1dCBkb2VzIG5vdCBzdXBwb3J0IGl0IGluXG4vLyB0aGUgc2hhZGVyLlxuI2lmZGVmIERFUklWQVRJVkVTX0FWQUlMQUJMRVxuICAgIG5vcm1hbCA9IG5vcm1hbGl6ZShjcm9zcyhkRmR4KHBvc2l0aW9uX2NvbW1vbnNwYWNlLnh5eiksIGRGZHkocG9zaXRpb25fY29tbW9uc3BhY2UueHl6KSkpO1xuI2Vsc2VcbiAgICBub3JtYWwgPSB2ZWMzKDAuMCwgMC4wLCAxLjApO1xuI2VuZGlmXG4gIH0gZWxzZSB7XG4gICAgbm9ybWFsID0gbm9ybWFsc19jb21tb25zcGFjZTtcbiAgfVxuXG4gIHZlYzMgbGlnaHRDb2xvciA9IGxpZ2h0aW5nX2dldExpZ2h0Q29sb3IoaW1hZ2UucmdiLCBjYW1lcmFQb3NpdGlvbiwgcG9zaXRpb25fY29tbW9uc3BhY2UueHl6LCBub3JtYWwpO1xuICBmcmFnQ29sb3IgPSB2ZWM0KGxpZ2h0Q29sb3IsIG9wYWNpdHkpO1xuXG4gIERFQ0tHTF9GSUxURVJfQ09MT1IoZnJhZ0NvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
export default "#version 300 es\n#define SHADER_NAME raster-mesh-layer-vs\n\n// Primitive attributes\nin vec3 positions;\nin vec3 positions64Low;\nin vec3 normals;\nin vec3 colors;\nin vec2 texCoords;\n\n// Outputs to fragment shader\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 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_uCameraPosition;\n \n vColor = vec4(colors, 1.0);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
|
5
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci9yYXN0ZXItbWVzaC1sYXllci9yYXN0ZXItbWVzaC1sYXllci13ZWJnbDIudnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuZXhwb3J0IGRlZmF1bHQgYFxcXG4jdmVyc2lvbiAzMDAgZXNcbiNkZWZpbmUgU0hBREVSX05BTUUgcmFzdGVyLW1lc2gtbGF5ZXItdnNcblxuLy8gUHJpbWl0aXZlIGF0dHJpYnV0ZXNcbmluIHZlYzMgcG9zaXRpb25zO1xuaW4gdmVjMyBwb3NpdGlvbnM2NExvdztcbmluIHZlYzMgbm9ybWFscztcbmluIHZlYzMgY29sb3JzO1xuaW4gdmVjMiB0ZXhDb29yZHM7XG5cbi8vIE91dHB1dHMgdG8gZnJhZ21lbnQgc2hhZGVyXG5vdXQgdmVjMiB2VGV4Q29vcmQ7XG5vdXQgdmVjMyBjYW1lcmFQb3NpdGlvbjtcbm91dCB2ZWMzIG5vcm1hbHNfY29tbW9uc3BhY2U7XG5vdXQgdmVjNCBwb3NpdGlvbl9jb21tb25zcGFjZTtcbm91dCB2ZWM0IHZDb2xvcjtcblxuY29uc3QgdmVjMyBwaWNraW5nQ29sb3IgPSB2ZWMzKDEuMCwgMC4wLCAwLjApO1xuY29uc3QgdmVjMyBkZWZhdWx0Tm9ybWFsID0gdmVjMygwLjAsIDAuMCwgMS4wKTtcblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2VvbWV0cnkud29ybGRQb3NpdGlvbiA9IHBvc2l0aW9ucztcbiAgZ2VvbWV0cnkudXYgPSB0ZXhDb29yZHM7XG4gIGdlb21ldHJ5LnBpY2tpbmdDb2xvciA9IHBpY2tpbmdDb2xvcjtcblxuICBnbF9Qb3NpdGlvbiA9IHByb2plY3RfcG9zaXRpb25fdG9fY2xpcHNwYWNlKHBvc2l0aW9ucywgcG9zaXRpb25zNjRMb3csIHZlYzMoMC4wKSwgZ2VvbWV0cnkucG9zaXRpb24pO1xuICBwb3NpdGlvbl9jb21tb25zcGFjZSA9IGdlb21ldHJ5LnBvc2l0aW9uO1xuICBERUNLR0xfRklMVEVSX0dMX1BPU0lUSU9OKGdsX1Bvc2l0aW9uLCBnZW9tZXRyeSk7XG5cbiAgdlRleENvb3JkID0gdGV4Q29vcmRzO1xuICBjYW1lcmFQb3NpdGlvbiA9IHByb2plY3RfdUNhbWVyYVBvc2l0aW9uO1xuICBcbiAgdkNvbG9yID0gdmVjNChjb2xvcnMsIDEuMCk7XG4gIERFQ0tHTF9GSUxURVJfQ09MT1IodkNvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBIiwiaWdub3JlTGlzdCI6W119
|