@antv/l7-layers 2.21.1 → 2.21.3
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/es/canvas/index.js +60 -113
- package/es/canvas/models/canvas.js +95 -135
- package/es/canvas/models/constants.js +1 -1
- package/es/citybuliding/building.js +20 -58
- package/es/citybuliding/models/build.js +142 -199
- package/es/core/BaseLayer.d.ts +1 -1
- package/es/core/BaseLayer.js +1113 -1412
- package/es/core/BaseModel.js +263 -317
- package/es/core/CommonStyleAttribute.js +25 -18
- package/es/core/LayerPickService.js +92 -141
- package/es/core/TextureService.js +58 -69
- package/es/core/constant.js +2 -2
- package/es/core/interface.js +5 -5
- package/es/core/line_trangluation.js +38 -43
- package/es/core/shape/Path.js +21 -12
- package/es/core/shape/arrow.js +50 -62
- package/es/core/shape/extrude.js +54 -62
- package/es/core/triangulation.js +192 -171
- package/es/core/utils.js +5 -5
- package/es/earth/index.js +35 -73
- package/es/earth/models/atmosphere.js +98 -148
- package/es/earth/models/base.js +148 -201
- package/es/earth/models/bloomsphere.js +97 -147
- package/es/earth/utils.js +37 -38
- package/es/geometry/index.js +36 -75
- package/es/geometry/models/billboard.js +147 -204
- package/es/geometry/models/index.js +1 -1
- package/es/geometry/models/plane.js +277 -357
- package/es/geometry/models/sprite.js +182 -240
- package/es/heatmap/index.js +72 -121
- package/es/heatmap/models/grid.js +66 -118
- package/es/heatmap/models/grid3d.js +101 -151
- package/es/heatmap/models/heatmap.js +398 -455
- package/es/heatmap/models/hexagon.js +67 -119
- package/es/heatmap/models/index.js +1 -1
- package/es/heatmap/triangulation.js +20 -20
- package/es/image/index.js +23 -62
- package/es/image/models/image.js +99 -163
- package/es/image/models/index.js +1 -1
- package/es/line/index.js +65 -106
- package/es/line/models/arc.js +200 -248
- package/es/line/models/arc_3d.js +190 -241
- package/es/line/models/flow.js +101 -153
- package/es/line/models/great_circle.js +183 -234
- package/es/line/models/index.js +1 -1
- package/es/line/models/line.js +230 -285
- package/es/line/models/simple_line.js +142 -192
- package/es/line/models/wall.js +221 -273
- package/es/mask/index.js +16 -53
- package/es/mask/models/fill.js +51 -108
- package/es/mask/models/index.js +1 -1
- package/es/plugins/DataMappingPlugin.js +205 -249
- package/es/plugins/DataSourcePlugin.js +64 -92
- package/es/plugins/FeatureScalePlugin.js +258 -302
- package/es/plugins/LayerAnimateStylePlugin.js +12 -22
- package/es/plugins/LayerMaskPlugin.js +15 -24
- package/es/plugins/LayerModelPlugin.js +52 -136
- package/es/plugins/LayerStylePlugin.js +14 -23
- package/es/plugins/LightingPlugin.js +26 -37
- package/es/plugins/MultiPassRendererPlugin.js +34 -39
- package/es/plugins/PixelPickingPlugin.js +129 -150
- package/es/plugins/RegisterStyleAttributePlugin.js +80 -96
- package/es/plugins/ShaderUniformPlugin.js +159 -131
- package/es/plugins/UpdateModelPlugin.js +16 -26
- package/es/plugins/UpdateStyleAttributePlugin.js +47 -65
- package/es/plugins/index.d.ts +1 -1
- package/es/point/index.js +118 -182
- package/es/point/models/billboard_point.js +72 -127
- package/es/point/models/earthExtrude.js +170 -220
- package/es/point/models/earthFill.js +136 -192
- package/es/point/models/extrude.js +167 -217
- package/es/point/models/fill.js +152 -209
- package/es/point/models/fillImage.js +156 -211
- package/es/point/models/image.js +127 -180
- package/es/point/models/index.js +1 -1
- package/es/point/models/normal.js +67 -122
- package/es/point/models/radar.js +93 -148
- package/es/point/models/text.js +447 -578
- package/es/point/shape/extrude.js +19 -25
- package/es/polygon/index.js +61 -99
- package/es/polygon/models/extrude.js +208 -281
- package/es/polygon/models/extrusion.js +95 -142
- package/es/polygon/models/fill.js +102 -153
- package/es/polygon/models/index.js +1 -1
- package/es/polygon/models/ocean.js +139 -198
- package/es/polygon/models/water.js +120 -179
- package/es/raster/buffers/triangulation.js +13 -11
- package/es/raster/index.js +47 -88
- package/es/raster/models/index.js +1 -1
- package/es/raster/models/raster.js +134 -202
- package/es/raster/models/rasterRgb.js +134 -208
- package/es/raster/models/rasterTerrainRgb.js +98 -153
- package/es/tile/core/BaseLayer.d.ts +1 -0
- package/es/tile/core/BaseLayer.js +206 -282
- package/es/tile/core/TileDebugLayer.js +12 -46
- package/es/tile/interaction/getRasterData.js +24 -30
- package/es/tile/interaction/utils.js +15 -33
- package/es/tile/service/TileLayerService.js +104 -177
- package/es/tile/service/TilePickService.js +99 -156
- package/es/tile/service/TileSourceService.js +17 -26
- package/es/tile/tile/DebugTile.js +41 -78
- package/es/tile/tile/ImageTile.js +33 -66
- package/es/tile/tile/MaskTile.js +47 -81
- package/es/tile/tile/RasterRGBTile.js +40 -71
- package/es/tile/tile/RasterTerrainRGBTile.js +33 -66
- package/es/tile/tile/RasterTile.js +69 -104
- package/es/tile/tile/Tile.d.ts +1 -1
- package/es/tile/tile/Tile.js +151 -232
- package/es/tile/tile/VectorTile.js +77 -124
- package/es/tile/tile/index.d.ts +1 -1
- package/es/tile/tile/index.js +4 -2
- package/es/tile/tile/util.d.ts +1 -1
- package/es/tile/utils/constants.js +1 -1
- package/es/tile/utils/utils.js +2 -2
- package/es/utils/blend.js +52 -46
- package/es/utils/collision-index.js +62 -70
- package/es/utils/extrude_polyline.js +441 -471
- package/es/utils/grid-index.js +97 -123
- package/es/utils/identityScale.js +5 -5
- package/es/utils/load-image.js +15 -39
- package/es/utils/multiPassRender.js +7 -9
- package/es/utils/polylineNormal.js +40 -42
- package/es/utils/rampcolor_legend.js +5 -3
- package/es/utils/simpleLine.js +53 -66
- package/es/utils/symbol-layout.js +95 -117
- package/es/wind/index.js +28 -70
- package/es/wind/models/index.js +1 -1
- package/es/wind/models/utils.js +36 -34
- package/es/wind/models/wind.js +203 -260
- package/es/wind/models/windRender.js +258 -269
- package/es/wind/models/windShader.js +145 -6
- package/lib/canvas/index.d.ts +18 -0
- package/lib/canvas/index.js +64 -113
- package/lib/canvas/models/canvas.d.ts +23 -0
- package/lib/canvas/models/canvas.js +97 -136
- package/lib/canvas/models/constants.d.ts +2 -0
- package/lib/canvas/models/constants.js +1 -1
- package/lib/canvas/models/index.d.ts +2 -0
- package/lib/canvas/models/index.js +2 -2
- package/lib/citybuliding/building.d.ts +7 -0
- package/lib/citybuliding/building.js +22 -58
- package/lib/citybuliding/models/build.d.ts +17 -0
- package/lib/citybuliding/models/build.js +144 -199
- package/lib/core/BaseLayer.d.ts +247 -0
- package/lib/core/BaseLayer.js +1115 -1412
- package/lib/core/BaseModel.d.ts +82 -0
- package/lib/core/BaseModel.js +263 -315
- package/lib/core/CommonStyleAttribute.d.ts +20 -0
- package/lib/core/CommonStyleAttribute.js +25 -18
- package/lib/core/LayerPickService.d.ts +12 -0
- package/lib/core/LayerPickService.js +93 -140
- package/lib/core/TextureService.d.ts +15 -0
- package/lib/core/TextureService.js +59 -68
- package/lib/core/constant.d.ts +6 -0
- package/lib/core/constant.js +2 -2
- package/lib/core/interface.d.ts +282 -0
- package/lib/core/interface.js +5 -5
- package/lib/core/line_trangluation.d.ts +19 -0
- package/lib/core/line_trangluation.js +38 -43
- package/lib/core/schema.d.ts +27 -0
- package/lib/core/shape/Path.d.ts +39 -0
- package/lib/core/shape/Path.js +21 -13
- package/lib/core/shape/arrow.d.ts +25 -0
- package/lib/core/shape/arrow.js +50 -62
- package/lib/core/shape/extrude.d.ts +17 -0
- package/lib/core/shape/extrude.js +54 -62
- package/lib/core/triangulation.d.ts +136 -0
- package/lib/core/triangulation.js +194 -174
- package/lib/core/utils.d.ts +4 -0
- package/lib/core/utils.js +5 -5
- package/lib/earth/index.d.ts +22 -0
- package/lib/earth/index.js +37 -73
- package/lib/earth/models/atmosphere.d.ts +15 -0
- package/lib/earth/models/atmosphere.js +100 -148
- package/lib/earth/models/base.d.ts +22 -0
- package/lib/earth/models/base.js +150 -201
- package/lib/earth/models/bloomsphere.d.ts +15 -0
- package/lib/earth/models/bloomsphere.js +99 -147
- package/lib/earth/utils.d.ts +26 -0
- package/lib/earth/utils.js +37 -39
- package/lib/geometry/index.d.ts +22 -0
- package/lib/geometry/index.js +38 -75
- package/lib/geometry/models/billboard.d.ts +24 -0
- package/lib/geometry/models/billboard.js +149 -204
- package/lib/geometry/models/index.d.ts +5 -0
- package/lib/geometry/models/index.js +1 -1
- package/lib/geometry/models/plane.d.ts +43 -0
- package/lib/geometry/models/plane.js +280 -357
- package/lib/geometry/models/sprite.d.ts +48 -0
- package/lib/geometry/models/sprite.js +184 -240
- package/lib/heatmap/index.d.ts +13 -0
- package/lib/heatmap/index.js +74 -121
- package/lib/heatmap/models/grid.d.ts +15 -0
- package/lib/heatmap/models/grid.js +68 -118
- package/lib/heatmap/models/grid3d.d.ts +15 -0
- package/lib/heatmap/models/grid3d.js +103 -151
- package/lib/heatmap/models/heatmap.d.ts +27 -0
- package/lib/heatmap/models/heatmap.js +400 -455
- package/lib/heatmap/models/hexagon.d.ts +15 -0
- package/lib/heatmap/models/hexagon.js +69 -119
- package/lib/heatmap/models/index.d.ts +5 -0
- package/lib/heatmap/models/index.js +1 -1
- package/lib/heatmap/triangulation.d.ts +5 -0
- package/lib/heatmap/triangulation.js +20 -20
- package/lib/image/index.d.ts +9 -0
- package/lib/image/index.js +25 -62
- package/lib/image/models/image.d.ts +17 -0
- package/lib/image/models/image.js +101 -163
- package/lib/image/models/index.d.ts +5 -0
- package/lib/image/models/index.js +1 -1
- package/lib/index.d.ts +18 -0
- package/lib/index.js +17 -17
- package/lib/line/index.d.ts +36 -0
- package/lib/line/index.js +67 -106
- package/lib/line/models/arc.d.ts +22 -0
- package/lib/line/models/arc.js +202 -248
- package/lib/line/models/arc_3d.d.ts +22 -0
- package/lib/line/models/arc_3d.js +193 -241
- package/lib/line/models/flow.d.ts +14 -0
- package/lib/line/models/flow.js +103 -153
- package/lib/line/models/great_circle.d.ts +17 -0
- package/lib/line/models/great_circle.js +185 -234
- package/lib/line/models/index.d.ts +5 -0
- package/lib/line/models/index.js +1 -1
- package/lib/line/models/line.d.ts +27 -0
- package/lib/line/models/line.js +232 -285
- package/lib/line/models/simple_line.d.ts +19 -0
- package/lib/line/models/simple_line.js +144 -192
- package/lib/line/models/wall.d.ts +17 -0
- package/lib/line/models/wall.js +223 -273
- package/lib/mask/index.d.ts +16 -0
- package/lib/mask/index.js +18 -53
- package/lib/mask/models/fill.d.ts +18 -0
- package/lib/mask/models/fill.js +53 -108
- package/lib/mask/models/index.d.ts +5 -0
- package/lib/mask/models/index.js +1 -1
- package/lib/plugins/DataMappingPlugin.d.ts +13 -0
- package/lib/plugins/DataMappingPlugin.js +206 -248
- package/lib/plugins/DataSourcePlugin.d.ts +6 -0
- package/lib/plugins/DataSourcePlugin.js +65 -91
- package/lib/plugins/FeatureScalePlugin.d.ts +20 -0
- package/lib/plugins/FeatureScalePlugin.js +261 -304
- package/lib/plugins/LayerAnimateStylePlugin.d.ts +4 -0
- package/lib/plugins/LayerAnimateStylePlugin.js +13 -21
- package/lib/plugins/LayerMaskPlugin.d.ts +7 -0
- package/lib/plugins/LayerMaskPlugin.js +16 -24
- package/lib/plugins/LayerModelPlugin.d.ts +10 -0
- package/lib/plugins/LayerModelPlugin.js +53 -135
- package/lib/plugins/LayerStylePlugin.d.ts +7 -0
- package/lib/plugins/LayerStylePlugin.js +15 -23
- package/lib/plugins/LightingPlugin.d.ts +35 -0
- package/lib/plugins/LightingPlugin.js +27 -36
- package/lib/plugins/MultiPassRendererPlugin.d.ts +22 -0
- package/lib/plugins/MultiPassRendererPlugin.js +35 -38
- package/lib/plugins/PixelPickingPlugin.d.ts +11 -0
- package/lib/plugins/PixelPickingPlugin.js +130 -149
- package/lib/plugins/RegisterStyleAttributePlugin.d.ts +11 -0
- package/lib/plugins/RegisterStyleAttributePlugin.js +81 -96
- package/lib/plugins/ShaderUniformPlugin.d.ts +22 -0
- package/lib/plugins/ShaderUniformPlugin.js +160 -130
- package/lib/plugins/UpdateModelPlugin.d.ts +7 -0
- package/lib/plugins/UpdateModelPlugin.js +17 -26
- package/lib/plugins/UpdateStyleAttributePlugin.d.ts +9 -0
- package/lib/plugins/UpdateStyleAttributePlugin.js +48 -65
- package/lib/plugins/index.d.ts +15 -0
- package/lib/point/index.d.ts +33 -0
- package/lib/point/index.js +120 -182
- package/lib/point/models/billboard_point.d.ts +21 -0
- package/lib/point/models/billboard_point.js +74 -127
- package/lib/point/models/earthExtrude.d.ts +16 -0
- package/lib/point/models/earthExtrude.js +172 -220
- package/lib/point/models/earthFill.d.ts +15 -0
- package/lib/point/models/earthFill.js +138 -192
- package/lib/point/models/extrude.d.ts +16 -0
- package/lib/point/models/extrude.js +169 -217
- package/lib/point/models/fill.d.ts +31 -0
- package/lib/point/models/fill.js +154 -209
- package/lib/point/models/fillImage.d.ts +26 -0
- package/lib/point/models/fillImage.js +159 -211
- package/lib/point/models/image.d.ts +18 -0
- package/lib/point/models/image.js +129 -180
- package/lib/point/models/index.d.ts +5 -0
- package/lib/point/models/index.js +1 -1
- package/lib/point/models/normal.d.ts +22 -0
- package/lib/point/models/normal.js +69 -122
- package/lib/point/models/radar.d.ts +22 -0
- package/lib/point/models/radar.js +95 -148
- package/lib/point/models/text.d.ts +69 -0
- package/lib/point/models/text.js +449 -578
- package/lib/point/shape/extrude.d.ts +15 -0
- package/lib/point/shape/extrude.js +19 -25
- package/lib/polygon/index.d.ts +18 -0
- package/lib/polygon/index.js +63 -99
- package/lib/polygon/models/extrude.d.ts +25 -0
- package/lib/polygon/models/extrude.js +210 -281
- package/lib/polygon/models/extrusion.d.ts +24 -0
- package/lib/polygon/models/extrusion.js +97 -142
- package/lib/polygon/models/fill.d.ts +18 -0
- package/lib/polygon/models/fill.js +104 -153
- package/lib/polygon/models/index.d.ts +5 -0
- package/lib/polygon/models/index.js +1 -1
- package/lib/polygon/models/ocean.d.ts +23 -0
- package/lib/polygon/models/ocean.js +141 -198
- package/lib/polygon/models/water.d.ts +21 -0
- package/lib/polygon/models/water.js +122 -179
- package/lib/raster/buffers/triangulation.d.ts +6 -0
- package/lib/raster/buffers/triangulation.js +13 -11
- package/lib/raster/index.d.ts +11 -0
- package/lib/raster/index.js +49 -88
- package/lib/raster/models/index.d.ts +5 -0
- package/lib/raster/models/index.js +1 -1
- package/lib/raster/models/raster.d.ts +21 -0
- package/lib/raster/models/raster.js +136 -202
- package/lib/raster/models/rasterRgb.d.ts +21 -0
- package/lib/raster/models/rasterRgb.js +136 -208
- package/lib/raster/models/rasterTerrainRgb.d.ts +16 -0
- package/lib/raster/models/rasterTerrainRgb.js +100 -153
- package/lib/tile/core/BaseLayer.d.ts +48 -0
- package/lib/tile/core/BaseLayer.js +207 -281
- package/lib/tile/core/TileDebugLayer.d.ts +15 -0
- package/lib/tile/core/TileDebugLayer.js +14 -46
- package/lib/tile/interaction/getFeatureData.d.ts +0 -0
- package/lib/tile/interaction/getRasterData.d.ts +4 -0
- package/lib/tile/interaction/getRasterData.js +24 -31
- package/lib/tile/interaction/utils.d.ts +11 -0
- package/lib/tile/interaction/utils.js +15 -34
- package/lib/tile/interface.d.ts +29 -0
- package/lib/tile/service/TileLayerService.d.ts +33 -0
- package/lib/tile/service/TileLayerService.js +105 -177
- package/lib/tile/service/TilePickService.d.ts +26 -0
- package/lib/tile/service/TilePickService.js +100 -156
- package/lib/tile/service/TileSourceService.d.ts +7 -0
- package/lib/tile/service/TileSourceService.js +20 -29
- package/lib/tile/tile/DebugTile.d.ts +16 -0
- package/lib/tile/tile/DebugTile.js +43 -78
- package/lib/tile/tile/ImageTile.d.ts +14 -0
- package/lib/tile/tile/ImageTile.js +35 -66
- package/lib/tile/tile/MaskTile.d.ts +18 -0
- package/lib/tile/tile/MaskTile.js +49 -81
- package/lib/tile/tile/RasterRGBTile.d.ts +11 -0
- package/lib/tile/tile/RasterRGBTile.js +42 -71
- package/lib/tile/tile/RasterTerrainRGBTile.d.ts +14 -0
- package/lib/tile/tile/RasterTerrainRGBTile.js +35 -66
- package/lib/tile/tile/RasterTile.d.ts +18 -0
- package/lib/tile/tile/RasterTile.js +71 -104
- package/lib/tile/tile/Tile.d.ts +114 -0
- package/lib/tile/tile/Tile.js +152 -231
- package/lib/tile/tile/VectorTile.d.ts +26 -0
- package/lib/tile/tile/VectorTile.js +79 -124
- package/lib/tile/tile/index.d.ts +12 -0
- package/lib/tile/tile/index.js +6 -4
- package/lib/tile/tile/util.d.ts +5 -0
- package/lib/tile/utils/constants.d.ts +1 -0
- package/lib/tile/utils/constants.js +1 -1
- package/lib/tile/utils/utils.d.ts +8 -0
- package/lib/tile/utils/utils.js +2 -2
- package/lib/utils/blend.d.ts +2 -0
- package/lib/utils/blend.js +52 -47
- package/lib/utils/collision-index.d.ts +47 -0
- package/lib/utils/collision-index.js +64 -69
- package/lib/utils/extrude_polyline.d.ts +68 -0
- package/lib/utils/extrude_polyline.js +442 -470
- package/lib/utils/grid-index.d.ts +28 -0
- package/lib/utils/grid-index.js +97 -123
- package/lib/utils/identityScale.d.ts +8 -0
- package/lib/utils/identityScale.js +5 -5
- package/lib/utils/load-image.d.ts +1 -0
- package/lib/utils/load-image.js +15 -39
- package/lib/utils/multiPassRender.d.ts +16 -0
- package/lib/utils/multiPassRender.js +7 -10
- package/lib/utils/polylineNormal.d.ts +9 -0
- package/lib/utils/polylineNormal.js +40 -43
- package/lib/utils/rampcolor_legend.d.ts +6 -0
- package/lib/utils/rampcolor_legend.js +5 -4
- package/lib/utils/simpleLine.d.ts +23 -0
- package/lib/utils/simpleLine.js +54 -65
- package/lib/utils/stencil.d.ts +7 -0
- package/lib/utils/symbol-layout.d.ts +43 -0
- package/lib/utils/symbol-layout.js +95 -117
- package/lib/wind/index.d.ts +11 -0
- package/lib/wind/index.js +30 -70
- package/lib/wind/models/index.d.ts +5 -0
- package/lib/wind/models/index.js +1 -1
- package/lib/wind/models/utils.d.ts +19 -0
- package/lib/wind/models/utils.js +36 -34
- package/lib/wind/models/wind.d.ts +24 -0
- package/lib/wind/models/wind.js +205 -260
- package/lib/wind/models/windRender.d.ts +104 -0
- package/lib/wind/models/windRender.js +261 -272
- package/lib/wind/models/windShader.d.ts +12 -0
- package/lib/wind/models/windShader.js +145 -6
- package/package.json +16 -19
- package/es/glsl.d.ts +0 -5
- package/lib/glsl.d.ts +0 -5
|
@@ -4,9 +4,148 @@
|
|
|
4
4
|
* updateProgram updateVert updateFrag
|
|
5
5
|
* fullScreenProgram fullScreenVert fullScreenFrag
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
export const drawVert = `
|
|
8
|
+
precision mediump float;
|
|
9
|
+
|
|
10
|
+
attribute float a_index;
|
|
11
|
+
|
|
12
|
+
uniform sampler2D u_particles;
|
|
13
|
+
uniform float u_particles_res;
|
|
14
|
+
|
|
15
|
+
varying vec2 v_particle_pos;
|
|
16
|
+
|
|
17
|
+
void main() {
|
|
18
|
+
vec4 color = texture2D(u_particles, vec2(
|
|
19
|
+
fract(a_index / u_particles_res),
|
|
20
|
+
floor(a_index / u_particles_res) / u_particles_res)
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
// decode current particle position from the pixel's RGBA value
|
|
24
|
+
v_particle_pos = vec2( color.r / 255.0 + color.b, color.g / 255.0 + color.a);
|
|
25
|
+
|
|
26
|
+
gl_PointSize = 1.0;
|
|
27
|
+
gl_Position = vec4(2.0 * v_particle_pos.x - 1.0, 1.0 - 2.0 * v_particle_pos.y, 0, 1);
|
|
28
|
+
}`;
|
|
29
|
+
export const drawFrag = `
|
|
30
|
+
precision mediump float;
|
|
31
|
+
|
|
32
|
+
uniform sampler2D u_wind;
|
|
33
|
+
uniform vec2 u_wind_min;
|
|
34
|
+
uniform vec2 u_wind_max;
|
|
35
|
+
uniform sampler2D u_color_ramp;
|
|
36
|
+
|
|
37
|
+
varying vec2 v_particle_pos;
|
|
38
|
+
|
|
39
|
+
void main() {
|
|
40
|
+
vec2 velocity = mix(u_wind_min, u_wind_max, texture2D(u_wind, v_particle_pos).rg);
|
|
41
|
+
float speed_t = length(velocity) / length(u_wind_max);
|
|
42
|
+
|
|
43
|
+
// color ramp is encoded in a 16x16 texture
|
|
44
|
+
vec2 ramp_pos = vec2( fract(16.0 * speed_t), floor(16.0 * speed_t) / 16.0);
|
|
45
|
+
|
|
46
|
+
gl_FragColor = texture2D(u_color_ramp, ramp_pos);
|
|
47
|
+
}`;
|
|
48
|
+
export const updateVert = `
|
|
49
|
+
precision mediump float;
|
|
50
|
+
|
|
51
|
+
attribute vec2 a_pos;
|
|
52
|
+
|
|
53
|
+
varying vec2 v_tex_pos;
|
|
54
|
+
|
|
55
|
+
void main() {
|
|
56
|
+
v_tex_pos = a_pos;
|
|
57
|
+
gl_Position = vec4(1.0 - 2.0 * a_pos, 0, 1);
|
|
58
|
+
// framebuffer 始终用铺满屏幕的 texture
|
|
59
|
+
}`;
|
|
60
|
+
export const updateFrag = `
|
|
61
|
+
precision highp float;
|
|
62
|
+
|
|
63
|
+
uniform sampler2D u_particles;
|
|
64
|
+
uniform sampler2D u_wind;
|
|
65
|
+
uniform vec2 u_wind_res;
|
|
66
|
+
uniform vec2 u_wind_min;
|
|
67
|
+
uniform vec2 u_wind_max;
|
|
68
|
+
uniform float u_rand_seed;
|
|
69
|
+
uniform float u_speed_factor;
|
|
70
|
+
uniform float u_drop_rate;
|
|
71
|
+
uniform float u_drop_rate_bump;
|
|
72
|
+
|
|
73
|
+
varying vec2 v_tex_pos;
|
|
74
|
+
|
|
75
|
+
// pseudo-random generator
|
|
76
|
+
const vec3 rand_constants = vec3(12.9898, 78.233, 4375.85453);
|
|
77
|
+
float rand(const vec2 co) {
|
|
78
|
+
float t = dot(rand_constants.xy, co);
|
|
79
|
+
return fract(sin(t) * (rand_constants.z + t));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// wind speed lookup; use manual bilinear filtering based on 4 adjacent pixels for smooth interpolation
|
|
83
|
+
vec2 lookup_wind(const vec2 uv) {
|
|
84
|
+
// return texture2D(u_wind, uv).rg; // lower-res hardware filtering
|
|
85
|
+
vec2 px = 1.0 / u_wind_res;
|
|
86
|
+
vec2 vc = (floor(uv * u_wind_res)) * px;
|
|
87
|
+
vec2 f = fract(uv * u_wind_res);
|
|
88
|
+
vec2 tl = texture2D(u_wind, vc).rg;
|
|
89
|
+
vec2 tr = texture2D(u_wind, vc + vec2(px.x, 0)).rg;
|
|
90
|
+
vec2 bl = texture2D(u_wind, vc + vec2(0, px.y)).rg;
|
|
91
|
+
vec2 br = texture2D(u_wind, vc + px).rg;
|
|
92
|
+
return mix(mix(tl, tr, f.x), mix(bl, br, f.x), f.y);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
void main() {
|
|
96
|
+
vec4 color = texture2D(u_particles, v_tex_pos);
|
|
97
|
+
vec2 pos = vec2(
|
|
98
|
+
color.r / 255.0 + color.b,
|
|
99
|
+
color.g / 255.0 + color.a); // decode particle position from pixel RGBA
|
|
100
|
+
vec2 velocity = mix(u_wind_min, u_wind_max, lookup_wind(pos));
|
|
101
|
+
float speed_t = length(velocity) / length(u_wind_max);
|
|
102
|
+
|
|
103
|
+
// take EPSG:4236 distortion into account for calculating where the particle moved
|
|
104
|
+
float distortion = cos(radians(pos.y * 180.0 - 90.0));
|
|
105
|
+
vec2 offset = vec2(velocity.x / distortion, -velocity.y) * 0.0001 * u_speed_factor;
|
|
106
|
+
|
|
107
|
+
// update particle position, wrapping around the date line
|
|
108
|
+
pos = fract(1.0 + pos + offset);
|
|
109
|
+
|
|
110
|
+
// a random seed to use for the particle drop
|
|
111
|
+
vec2 seed = (pos + v_tex_pos) * u_rand_seed;
|
|
112
|
+
|
|
113
|
+
// drop rate is a chance a particle will restart at random position, to avoid degeneration
|
|
114
|
+
float drop_rate = u_drop_rate + speed_t * u_drop_rate_bump;
|
|
115
|
+
float drop = step(1.0 - drop_rate, rand(seed));
|
|
116
|
+
|
|
117
|
+
vec2 random_pos = vec2(
|
|
118
|
+
rand(seed + 1.3),
|
|
119
|
+
rand(seed + 2.1));
|
|
120
|
+
pos = mix(pos, random_pos, drop);
|
|
121
|
+
|
|
122
|
+
// encode the new particle position back into RGBA
|
|
123
|
+
gl_FragColor = vec4(
|
|
124
|
+
fract(pos * 255.0),
|
|
125
|
+
floor(pos * 255.0) / 255.0);
|
|
126
|
+
}`;
|
|
127
|
+
export const fullScreenVert = `
|
|
128
|
+
precision mediump float;
|
|
129
|
+
|
|
130
|
+
attribute vec2 a_pos;
|
|
131
|
+
|
|
132
|
+
varying vec2 v_tex_pos;
|
|
133
|
+
|
|
134
|
+
void main() {
|
|
135
|
+
v_tex_pos = a_pos;
|
|
136
|
+
gl_Position = vec4(1.0 - 2.0 * a_pos, 0.0, 1.0);
|
|
137
|
+
gl_PointSize = 100.0;
|
|
138
|
+
}`;
|
|
139
|
+
export const fullScreenFrag = `
|
|
140
|
+
precision mediump float;
|
|
141
|
+
|
|
142
|
+
uniform sampler2D u_screen;
|
|
143
|
+
uniform float u_opacity;
|
|
144
|
+
varying vec2 v_tex_pos;
|
|
145
|
+
|
|
146
|
+
void main() {
|
|
147
|
+
vec4 color = texture2D(u_screen, 1.0 - v_tex_pos);
|
|
148
|
+
|
|
149
|
+
// a hack to guarantee opacity fade out even with a value close to 1.0
|
|
150
|
+
gl_FragColor = vec4(floor(255.0 * color * u_opacity) / 255.0);
|
|
151
|
+
}`;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import BaseLayer from '../core/BaseLayer';
|
|
2
|
+
import type { ICanvasLayerOptions } from '../core/interface';
|
|
3
|
+
import type { CanvasModelType } from './models';
|
|
4
|
+
import { CanvasModel } from './models';
|
|
5
|
+
export default class CanvasLayer extends BaseLayer<ICanvasLayerOptions> {
|
|
6
|
+
type: string;
|
|
7
|
+
layerModel: CanvasModel;
|
|
8
|
+
protected getDefaultConfig(): Partial<ICanvasLayerOptions>;
|
|
9
|
+
buildModels(): Promise<void>;
|
|
10
|
+
getModelType(): CanvasModelType;
|
|
11
|
+
draw(draw: ICanvasLayerOptions['draw']): this;
|
|
12
|
+
getLayerConfig(): any;
|
|
13
|
+
render(): this;
|
|
14
|
+
getCanvas(): HTMLCanvasElement | null;
|
|
15
|
+
show(): this;
|
|
16
|
+
hide(): this;
|
|
17
|
+
destroy(): void;
|
|
18
|
+
}
|
package/lib/canvas/index.js
CHANGED
|
@@ -5,124 +5,75 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
10
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
14
|
-
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
15
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
16
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
18
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
19
|
-
var
|
|
11
|
+
var _BaseLayer = _interopRequireDefault(require("../core/BaseLayer"));
|
|
20
12
|
var _models = require("./models");
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
var _this;
|
|
28
|
-
(0, _classCallCheck2.default)(this, CanvasLayer);
|
|
29
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
30
|
-
args[_key] = arguments[_key];
|
|
31
|
-
}
|
|
32
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
33
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "type", 'CanvasLayer');
|
|
34
|
-
return _this;
|
|
13
|
+
// import type { ILayerConfig } from '@antv/l7-core';
|
|
14
|
+
|
|
15
|
+
class CanvasLayer extends _BaseLayer.default {
|
|
16
|
+
constructor(...args) {
|
|
17
|
+
super(...args);
|
|
18
|
+
(0, _defineProperty2.default)(this, "type", 'CanvasLayer');
|
|
35
19
|
}
|
|
36
|
-
(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
return buildModels;
|
|
65
|
-
}()
|
|
66
|
-
}, {
|
|
67
|
-
key: "getModelType",
|
|
68
|
-
value: function getModelType() {
|
|
69
|
-
return this.getLayerConfig().contextType || 'canvas2d';
|
|
70
|
-
}
|
|
71
|
-
}, {
|
|
72
|
-
key: "draw",
|
|
73
|
-
value: function draw(_draw) {
|
|
74
|
-
this.updateLayerConfig({
|
|
75
|
-
draw: _draw
|
|
76
|
-
});
|
|
77
|
-
this.render();
|
|
78
|
-
return this;
|
|
79
|
-
}
|
|
80
|
-
}, {
|
|
81
|
-
key: "getLayerConfig",
|
|
82
|
-
value: function getLayerConfig() {
|
|
83
|
-
var config = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, this.getDefaultConfig()), (0, _get2.default)((0, _getPrototypeOf2.default)(CanvasLayer.prototype), "getLayerConfig", this).call(this));
|
|
84
|
-
if (config.zIndex < 3) {
|
|
85
|
-
config.zIndex = 3;
|
|
86
|
-
}
|
|
87
|
-
return config;
|
|
88
|
-
}
|
|
89
|
-
}, {
|
|
90
|
-
key: "render",
|
|
91
|
-
value: function render() {
|
|
92
|
-
var _this$layerModel;
|
|
93
|
-
(_this$layerModel = this.layerModel) === null || _this$layerModel === void 0 || _this$layerModel.renderCanvas();
|
|
94
|
-
return this;
|
|
95
|
-
}
|
|
96
|
-
}, {
|
|
97
|
-
key: "getCanvas",
|
|
98
|
-
value: function getCanvas() {
|
|
99
|
-
var _this$layerModel2;
|
|
100
|
-
return (_this$layerModel2 = this.layerModel) === null || _this$layerModel2 === void 0 ? void 0 : _this$layerModel2.canvas;
|
|
101
|
-
}
|
|
102
|
-
}, {
|
|
103
|
-
key: "show",
|
|
104
|
-
value: function show() {
|
|
105
|
-
var canvas = this.getCanvas();
|
|
106
|
-
if (canvas) {
|
|
107
|
-
canvas.style.display = 'unset';
|
|
108
|
-
}
|
|
109
|
-
return this;
|
|
20
|
+
getDefaultConfig() {
|
|
21
|
+
return {
|
|
22
|
+
zIndex: 3,
|
|
23
|
+
contextType: 'canvas2d',
|
|
24
|
+
trigger: 'change'
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
buildModels() {
|
|
28
|
+
var _this = this;
|
|
29
|
+
return (0, _asyncToGenerator2.default)(function* () {
|
|
30
|
+
_this.layerModel = new _models.CanvasModel(_this);
|
|
31
|
+
yield _this.initLayerModels();
|
|
32
|
+
})();
|
|
33
|
+
}
|
|
34
|
+
getModelType() {
|
|
35
|
+
return this.getLayerConfig().contextType || 'canvas2d';
|
|
36
|
+
}
|
|
37
|
+
draw(draw) {
|
|
38
|
+
this.updateLayerConfig({
|
|
39
|
+
draw
|
|
40
|
+
});
|
|
41
|
+
this.render();
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
getLayerConfig() {
|
|
45
|
+
const config = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, this.getDefaultConfig()), super.getLayerConfig());
|
|
46
|
+
if (config.zIndex < 3) {
|
|
47
|
+
config.zIndex = 3;
|
|
110
48
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
49
|
+
return config;
|
|
50
|
+
}
|
|
51
|
+
render() {
|
|
52
|
+
var _this$layerModel;
|
|
53
|
+
(_this$layerModel = this.layerModel) === null || _this$layerModel === void 0 || _this$layerModel.renderCanvas();
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
getCanvas() {
|
|
57
|
+
var _this$layerModel2;
|
|
58
|
+
return (_this$layerModel2 = this.layerModel) === null || _this$layerModel2 === void 0 ? void 0 : _this$layerModel2.canvas;
|
|
59
|
+
}
|
|
60
|
+
show() {
|
|
61
|
+
const canvas = this.getCanvas();
|
|
62
|
+
if (canvas) {
|
|
63
|
+
canvas.style.display = 'unset';
|
|
119
64
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
hide() {
|
|
68
|
+
const canvas = this.getCanvas();
|
|
69
|
+
if (canvas) {
|
|
70
|
+
canvas.style.display = 'none';
|
|
125
71
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
destroy() {
|
|
75
|
+
this.layerModel.removeCanvas();
|
|
76
|
+
super.destroy();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.default = CanvasLayer;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import BaseModel from '../../core/BaseModel';
|
|
2
|
+
import { type ICanvasLayerOptions } from '../../core/interface';
|
|
3
|
+
export declare class CanvasModel extends BaseModel {
|
|
4
|
+
canvas: HTMLCanvasElement | null;
|
|
5
|
+
ctx: any;
|
|
6
|
+
ctxType: string;
|
|
7
|
+
viewportSize: [number, number];
|
|
8
|
+
get layerConfig(): ICanvasLayerOptions;
|
|
9
|
+
initModels(): Promise<never[]>;
|
|
10
|
+
initCanvas: () => void;
|
|
11
|
+
resetViewportSize: () => void;
|
|
12
|
+
resetCanvasSize: () => void;
|
|
13
|
+
renderCanvas: () => void;
|
|
14
|
+
removeCanvas: () => void;
|
|
15
|
+
onMapResize: () => void;
|
|
16
|
+
bindListeners(): void;
|
|
17
|
+
unbindListeners(): void;
|
|
18
|
+
lngLatToContainer: (lngLat: [number, number]) => {
|
|
19
|
+
x: number;
|
|
20
|
+
y: number;
|
|
21
|
+
};
|
|
22
|
+
registerBuiltinAttributes(): void;
|
|
23
|
+
}
|