@antv/l7-layers 2.9.21 → 2.9.22-alpha.0
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/Geometry/index.js +4 -5
- package/es/Geometry/models/billboard.js +23 -9
- package/es/Geometry/models/index.js +4 -5
- package/es/Geometry/models/plane.js +25 -13
- package/es/Geometry/models/sprite.js +11 -21
- package/es/Geometry/shaders/billboard_frag.glsl +13 -0
- package/es/Geometry/shaders/billboard_vert.glsl +50 -0
- package/es/Geometry/shaders/plane_frag.glsl +22 -0
- package/es/Geometry/shaders/plane_vert.glsl +53 -0
- package/es/Geometry/shaders/sprite_frag.glsl +21 -0
- package/es/Geometry/shaders/sprite_vert.glsl +28 -0
- package/es/canvas/index.js +4 -5
- package/es/canvas/models/canvas.js +6 -12
- package/es/canvas/models/index.js +2 -3
- package/es/citybuliding/building.js +4 -5
- package/es/citybuliding/models/build.js +19 -22
- package/es/citybuliding/shaders/build_frag.glsl +117 -0
- package/es/citybuliding/shaders/build_vert.glsl +54 -0
- package/es/core/BaseLayer.js +205 -157
- package/es/core/BaseModel.js +135 -76
- package/es/core/interface.js +1 -2
- package/es/core/schema.js +4 -2
- package/es/core/shape/Path.js +8 -3
- package/es/core/shape/extrude.js +9 -4
- package/es/core/triangulation.js +89 -17
- package/es/earth/index.js +11 -7
- package/es/earth/models/atmosphere.js +15 -7
- package/es/earth/models/base.js +19 -7
- package/es/earth/models/bloomsphere.js +15 -7
- package/es/earth/shaders/atmosphere_frag.glsl +17 -0
- package/es/earth/shaders/atmosphere_vert.glsl +26 -0
- package/es/earth/shaders/base_frag.glsl +13 -0
- package/es/earth/shaders/base_vert.glsl +52 -0
- package/es/earth/shaders/bloomsphere_frag.glsl +15 -0
- package/es/earth/shaders/bloomsphere_vert.glsl +20 -0
- package/es/earth/utils.js +28 -5
- package/es/heatmap/index.js +8 -7
- package/es/heatmap/models/grid.js +11 -5
- package/es/heatmap/models/grid3d.js +18 -7
- package/es/heatmap/models/heatmap.js +45 -44
- package/es/heatmap/models/hexagon.js +14 -6
- package/es/heatmap/models/index.js +5 -6
- package/es/heatmap/shaders/grid_vert.glsl +42 -0
- package/es/heatmap/shaders/heatmap_3d_frag.glsl +14 -0
- package/es/heatmap/shaders/heatmap_3d_vert.glsl +46 -0
- package/es/heatmap/shaders/heatmap_frag.glsl +47 -0
- package/es/heatmap/shaders/heatmap_framebuffer_frag.glsl +10 -0
- package/es/heatmap/shaders/heatmap_framebuffer_vert.glsl +35 -0
- package/es/heatmap/shaders/heatmap_vert.glsl +10 -0
- package/es/heatmap/shaders/hexagon_3d_frag.glsl +0 -0
- package/es/heatmap/shaders/hexagon_3d_vert.glsl +64 -0
- package/es/heatmap/shaders/hexagon_frag.glsl +12 -0
- package/es/heatmap/shaders/hexagon_vert.glsl +41 -0
- package/es/heatmap/triangulation.js +2 -2
- package/es/image/index.js +4 -5
- package/es/image/models/dataImage.js +21 -31
- package/es/image/models/image.js +19 -25
- package/es/image/models/index.js +3 -4
- package/es/image/shaders/dataImage_frag.glsl +38 -0
- package/es/image/shaders/image_frag.glsl +9 -0
- package/es/image/shaders/image_vert.glsl +17 -0
- package/es/index.d.ts +2 -2
- package/es/index.js +92 -30
- package/es/line/index.js +4 -5
- package/es/line/models/arc.js +38 -15
- package/es/line/models/arc_3d.js +33 -14
- package/es/line/models/earthArc_3d.js +33 -14
- package/es/line/models/great_circle.js +25 -13
- package/es/line/models/half.js +33 -12
- package/es/line/models/index.js +12 -13
- package/es/line/models/line.js +48 -15
- package/es/line/models/linearline.js +26 -12
- package/es/line/models/simpleLine.js +26 -11
- package/es/line/models/tile.js +28 -10
- package/es/line/models/wall.js +30 -13
- package/es/line/shaders/arc_chunks.vert.glsl +21 -0
- package/es/line/shaders/dash/arc_dash_frag.glsl +28 -0
- package/es/line/shaders/dash/arc_dash_vert.glsl +148 -0
- package/es/line/shaders/dash/line_dash_frag.glsl +31 -0
- package/es/line/shaders/dash/line_dash_vert.glsl +93 -0
- package/es/line/shaders/half/line_half_frag.glsl +53 -0
- package/es/line/shaders/half/line_half_vert.glsl +169 -0
- package/es/line/shaders/line_arc2d_vert.glsl +114 -0
- package/es/line/shaders/line_arc_3d_frag.glsl +103 -0
- package/es/line/shaders/line_arc_3d_vert.glsl +207 -0
- package/es/line/shaders/line_arc_frag.glsl +89 -0
- package/es/line/shaders/line_arc_great_circle_frag.glsl +101 -0
- package/es/line/shaders/line_arc_great_circle_vert.glsl +215 -0
- package/es/line/shaders/line_arc_vert.glsl +174 -0
- package/es/line/shaders/line_bezier_vert.glsl +85 -0
- package/es/line/shaders/line_frag.glsl +100 -0
- package/es/line/shaders/line_vert.glsl +192 -0
- package/es/line/shaders/linear/arc3d_linear_frag.glsl +47 -0
- package/es/line/shaders/linear/arc3d_linear_vert.glsl +207 -0
- package/es/line/shaders/linear/arc_linear_frag.glsl +38 -0
- package/es/line/shaders/linear/arc_linear_vert.glsl +138 -0
- package/es/line/shaders/linear/line_linear_frag.glsl +27 -0
- package/es/line/shaders/linearLine/line_linear_frag.glsl +20 -0
- package/es/line/shaders/linearLine/line_linear_vert.glsl +112 -0
- package/es/line/shaders/simple/simpleline_frag.glsl +10 -0
- package/es/line/shaders/simple/simpleline_linear_frag.glsl +11 -0
- package/es/line/shaders/simple/simpleline_vert.glsl +78 -0
- package/es/line/shaders/tile/line_tile_frag.glsl +79 -0
- package/es/line/shaders/tile/line_tile_vert.glsl +210 -0
- package/es/line/shaders/wall_frag.glsl +93 -0
- package/es/line/shaders/wall_vert.glsl +111 -0
- package/es/mask/index.js +4 -5
- package/es/mask/models/fill.js +11 -8
- package/es/mask/models/index.js +2 -3
- package/es/mask/shaders/mask_frag.glsl +7 -0
- package/es/mask/shaders/mask_vert.glsl +22 -0
- package/es/plugins/DataMappingPlugin.js +71 -34
- package/es/plugins/DataSourcePlugin.js +12 -10
- package/es/plugins/FeatureScalePlugin.js +44 -24
- package/es/plugins/LayerAnimateStylePlugin.js +6 -7
- package/es/plugins/LayerModelPlugin.js +16 -7
- package/es/plugins/LayerStylePlugin.js +7 -3
- package/es/plugins/LightingPlugin.js +21 -13
- package/es/plugins/MultiPassRendererPlugin.js +21 -8
- package/es/plugins/PixelPickingPlugin.js +33 -11
- package/es/plugins/RegisterStyleAttributePlugin.js +10 -3
- package/es/plugins/ShaderUniformPlugin.js +24 -10
- package/es/plugins/UpdateModelPlugin.js +7 -3
- package/es/plugins/UpdateStyleAttributePlugin.js +20 -7
- package/es/point/index.js +12 -6
- package/es/point/models/earthExtrude.js +30 -12
- package/es/point/models/earthFill.js +25 -13
- package/es/point/models/extrude.js +30 -12
- package/es/point/models/fill.js +50 -15
- package/es/point/models/fillmage.js +46 -17
- package/es/point/models/image.js +20 -12
- package/es/point/models/index.js +14 -14
- package/es/point/models/normal.js +15 -7
- package/es/point/models/radar.js +33 -13
- package/es/point/models/simplePoint.js +17 -9
- package/es/point/models/text.js +77 -30
- package/es/point/models/tile.js +33 -12
- package/es/point/shaders/animate/wave_frag.glsl +65 -0
- package/es/point/shaders/earth/extrude_frag.glsl +44 -0
- package/es/point/shaders/earth/extrude_vert.glsl +140 -0
- package/es/point/shaders/earth/fill_frag.glsl +86 -0
- package/es/point/shaders/earth/fill_vert.glsl +126 -0
- package/es/point/shaders/extrude/extrude_frag.glsl +44 -0
- package/es/point/shaders/extrude/extrude_vert.glsl +121 -0
- package/es/point/shaders/fill_frag.glsl +84 -0
- package/es/point/shaders/fill_vert.glsl +182 -0
- package/es/point/shaders/image/fillImage_frag.glsl +20 -0
- package/es/point/shaders/image/fillImage_vert.glsl +108 -0
- package/es/point/shaders/image_frag.glsl +39 -0
- package/es/point/shaders/image_vert.glsl +81 -0
- package/es/point/shaders/normal_frag.glsl +15 -0
- package/es/point/shaders/normal_vert.glsl +79 -0
- package/es/point/shaders/radar/radar_frag.glsl +64 -0
- package/es/point/shaders/radar/radar_vert.glsl +120 -0
- package/es/point/shaders/simplePoint_frag.glsl +53 -0
- package/es/point/shaders/simplePoint_vert.glsl +79 -0
- package/es/point/shaders/text_frag.glsl +48 -0
- package/es/point/shaders/text_vert.glsl +131 -0
- package/es/point/shaders/tile/fill_tile_frag.glsl +83 -0
- package/es/point/shaders/tile/fill_tile_vert.glsl +181 -0
- package/es/point/shape/extrude.js +8 -3
- package/es/polygon/index.js +6 -5
- package/es/polygon/models/extrude.js +40 -31
- package/es/polygon/models/fill.js +19 -8
- package/es/polygon/models/index.js +14 -14
- package/es/polygon/models/ocean.js +25 -33
- package/es/polygon/models/tile.js +13 -7
- package/es/polygon/models/water.js +21 -25
- package/es/polygon/shaders/extrude/polygon_extrude_frag.glsl +44 -0
- package/es/polygon/shaders/extrude/polygon_extrude_picklight_frag.glsl +44 -0
- package/es/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +85 -0
- package/es/polygon/shaders/extrude/polygon_extrude_vert.glsl +90 -0
- package/es/polygon/shaders/extrude/polygon_extrudetex_frag.glsl +48 -0
- package/es/polygon/shaders/extrude/polygon_extrudetex_vert.glsl +93 -0
- package/es/polygon/shaders/polygon_frag.glsl +12 -0
- package/es/polygon/shaders/polygon_linear_frag.glsl +22 -0
- package/es/polygon/shaders/polygon_linear_vert.glsl +74 -0
- package/es/polygon/shaders/polygon_vert.glsl +66 -0
- package/es/polygon/shaders/tile/polygon_tile_frag.glsl +12 -0
- package/es/polygon/shaders/tile/polygon_tile_vert.glsl +82 -0
- package/es/polygon/shaders/water/polygon_ocean_frag.glsl +248 -0
- package/es/polygon/shaders/water/polygon_ocean_vert.glsl +52 -0
- package/es/polygon/shaders/water/polygon_water_frag.glsl +73 -0
- package/es/polygon/shaders/water/polygon_water_vert.glsl +55 -0
- package/es/raster/buffers/triangulation.js +2 -2
- package/es/raster/index.js +7 -6
- package/es/raster/models/index.js +3 -4
- package/es/raster/models/raster.js +15 -25
- package/es/raster/raster.js +9 -13
- package/es/raster/shaders/raster_2d_frag.glsl +28 -0
- package/es/raster/shaders/raster_2d_vert.glsl +18 -0
- package/es/raster/shaders/raster_frag.glsl +9 -0
- package/es/raster/shaders/raster_vert.glsl +44 -0
- package/es/tile/interface.js +1 -2
- package/es/tile/manager/tileConfigManager.js +6 -8
- package/es/tile/manager/tileLayerManager.js +19 -30
- package/es/tile/manager/tilePickerManager.js +14 -14
- package/es/tile/models/tileModel.js +6 -6
- package/es/tile/tileFactory/base.js +26 -32
- package/es/tile/tileFactory/index.js +6 -7
- package/es/tile/tileFactory/line.js +3 -9
- package/es/tile/tileFactory/point.js +3 -9
- package/es/tile/tileFactory/polygon.js +3 -9
- package/es/tile/tileFactory/raster.js +4 -10
- package/es/tile/tileFactory/rasterData.js +5 -11
- package/es/tile/tileFactory/rasterDataLayer.js +4 -5
- package/es/tile/tileFactory/vectorLayer.js +8 -9
- package/es/tile/tileLayer/baseTileLayer.js +67 -39
- package/es/tile/tmsTileLayer.js +5 -4
- package/es/tile/utils.js +5 -3
- package/es/utils/blend.js +1 -2
- package/es/utils/collision-index.js +36 -21
- package/es/utils/dataMappingStyle.js +71 -15
- package/es/utils/extrude_polyline.js +90 -48
- package/es/utils/grid-index.js +7 -21
- package/es/utils/layerData.js +41 -17
- package/es/utils/multiPassRender.js +21 -5
- package/es/utils/polylineNormal.js +40 -20
- package/es/utils/simpleLine.js +4 -6
- package/es/utils/symbol-layout.js +49 -10
- package/es/utils/updateShape.js +6 -3
- package/es/wind/index.js +5 -6
- package/es/wind/models/index.js +2 -3
- package/es/wind/models/utils.js +50 -26
- package/es/wind/models/wind.js +15 -18
- package/es/wind/models/windRender.js +89 -78
- package/es/wind/models/windShader.d.ts +6 -6
- package/es/wind/models/windShader.js +12 -7
- package/es/wind/shaders/wind_frag.glsl +9 -0
- package/es/wind/shaders/wind_vert.glsl +17 -0
- package/lib/Geometry/index.js +77 -115
- package/lib/Geometry/models/billboard.js +181 -218
- package/lib/Geometry/models/index.js +34 -19
- package/lib/Geometry/models/plane.js +278 -394
- package/lib/Geometry/models/sprite.js +189 -294
- package/lib/Geometry/shaders/billboard_frag.glsl +13 -0
- package/lib/Geometry/shaders/billboard_vert.glsl +50 -0
- package/lib/Geometry/shaders/plane_frag.glsl +22 -0
- package/lib/Geometry/shaders/plane_vert.glsl +53 -0
- package/lib/Geometry/shaders/sprite_frag.glsl +21 -0
- package/lib/Geometry/shaders/sprite_vert.glsl +28 -0
- package/lib/canvas/index.js +66 -102
- package/lib/canvas/models/canvas.js +140 -210
- package/lib/canvas/models/index.js +30 -13
- package/lib/citybuliding/building.js +63 -99
- package/lib/citybuliding/models/build.js +146 -196
- package/lib/citybuliding/shaders/build_frag.glsl +117 -0
- package/lib/citybuliding/shaders/build_vert.glsl +54 -0
- package/lib/core/BaseLayer.js +807 -1245
- package/lib/core/BaseModel.js +275 -375
- package/lib/core/interface.js +53 -37
- package/lib/core/schema.js +39 -18
- package/lib/core/shape/Path.js +78 -60
- package/lib/core/shape/extrude.js +90 -127
- package/lib/core/triangulation.js +191 -304
- package/lib/earth/index.js +62 -96
- package/lib/earth/models/atmosphere.js +112 -139
- package/lib/earth/models/base.js +150 -198
- package/lib/earth/models/bloomsphere.js +112 -139
- package/lib/earth/shaders/atmosphere_frag.glsl +17 -0
- package/lib/earth/shaders/atmosphere_vert.glsl +26 -0
- package/lib/earth/shaders/base_frag.glsl +13 -0
- package/lib/earth/shaders/base_vert.glsl +52 -0
- package/lib/earth/shaders/bloomsphere_frag.glsl +15 -0
- package/lib/earth/shaders/bloomsphere_vert.glsl +20 -0
- package/lib/earth/utils.js +89 -85
- package/lib/heatmap/index.js +92 -148
- package/lib/heatmap/models/grid.js +91 -113
- package/lib/heatmap/models/grid3d.js +123 -145
- package/lib/heatmap/models/heatmap.js +338 -470
- package/lib/heatmap/models/hexagon.js +92 -114
- package/lib/heatmap/models/index.js +37 -23
- package/lib/heatmap/shaders/grid_vert.glsl +42 -0
- package/lib/heatmap/shaders/heatmap_3d_frag.glsl +14 -0
- package/lib/heatmap/shaders/heatmap_3d_vert.glsl +46 -0
- package/lib/heatmap/shaders/heatmap_frag.glsl +47 -0
- package/lib/heatmap/shaders/heatmap_framebuffer_frag.glsl +10 -0
- package/lib/heatmap/shaders/heatmap_framebuffer_vert.glsl +35 -0
- package/lib/heatmap/shaders/heatmap_vert.glsl +10 -0
- package/lib/heatmap/shaders/hexagon_3d_frag.glsl +0 -0
- package/lib/heatmap/shaders/hexagon_3d_vert.glsl +64 -0
- package/lib/heatmap/shaders/hexagon_frag.glsl +12 -0
- package/lib/heatmap/shaders/hexagon_vert.glsl +41 -0
- package/lib/heatmap/triangulation.js +46 -30
- package/lib/image/index.js +74 -112
- package/lib/image/models/dataImage.js +173 -241
- package/lib/image/models/image.js +123 -177
- package/lib/image/models/index.js +32 -16
- package/lib/image/shaders/dataImage_frag.glsl +38 -0
- package/lib/image/shaders/image_frag.glsl +9 -0
- package/lib/image/shaders/image_vert.glsl +17 -0
- package/lib/index.js +96 -193
- package/lib/line/index.js +83 -128
- package/lib/line/models/arc.js +237 -328
- package/lib/line/models/arc_3d.js +228 -314
- package/lib/line/models/earthArc_3d.js +228 -316
- package/lib/line/models/great_circle.js +200 -279
- package/lib/line/models/half.js +201 -266
- package/lib/line/models/index.js +50 -43
- package/lib/line/models/line.js +299 -394
- package/lib/line/models/linearline.js +203 -263
- package/lib/line/models/simpleLine.js +175 -225
- package/lib/line/models/tile.js +237 -330
- package/lib/line/models/wall.js +235 -310
- package/lib/line/shaders/arc_chunks.vert.glsl +21 -0
- package/lib/line/shaders/dash/arc_dash_frag.glsl +28 -0
- package/lib/line/shaders/dash/arc_dash_vert.glsl +148 -0
- package/lib/line/shaders/dash/line_dash_frag.glsl +31 -0
- package/lib/line/shaders/dash/line_dash_vert.glsl +93 -0
- package/lib/line/shaders/half/line_half_frag.glsl +53 -0
- package/lib/line/shaders/half/line_half_vert.glsl +169 -0
- package/lib/line/shaders/line_arc2d_vert.glsl +114 -0
- package/lib/line/shaders/line_arc_3d_frag.glsl +103 -0
- package/lib/line/shaders/line_arc_3d_vert.glsl +207 -0
- package/lib/line/shaders/line_arc_frag.glsl +89 -0
- package/lib/line/shaders/line_arc_great_circle_frag.glsl +101 -0
- package/lib/line/shaders/line_arc_great_circle_vert.glsl +215 -0
- package/lib/line/shaders/line_arc_vert.glsl +174 -0
- package/lib/line/shaders/line_bezier_vert.glsl +85 -0
- package/lib/line/shaders/line_frag.glsl +100 -0
- package/lib/line/shaders/line_vert.glsl +192 -0
- package/lib/line/shaders/linear/arc3d_linear_frag.glsl +47 -0
- package/lib/line/shaders/linear/arc3d_linear_vert.glsl +207 -0
- package/lib/line/shaders/linear/arc_linear_frag.glsl +38 -0
- package/lib/line/shaders/linear/arc_linear_vert.glsl +138 -0
- package/lib/line/shaders/linear/line_linear_frag.glsl +27 -0
- package/lib/line/shaders/linearLine/line_linear_frag.glsl +20 -0
- package/lib/line/shaders/linearLine/line_linear_vert.glsl +112 -0
- package/lib/line/shaders/simple/simpleline_frag.glsl +10 -0
- package/lib/line/shaders/simple/simpleline_linear_frag.glsl +11 -0
- package/lib/line/shaders/simple/simpleline_vert.glsl +78 -0
- package/lib/line/shaders/tile/line_tile_frag.glsl +79 -0
- package/lib/line/shaders/tile/line_tile_vert.glsl +210 -0
- package/lib/line/shaders/wall_frag.glsl +93 -0
- package/lib/line/shaders/wall_vert.glsl +111 -0
- package/lib/mask/index.js +59 -93
- package/lib/mask/models/fill.js +82 -132
- package/lib/mask/models/index.js +30 -13
- package/lib/mask/shaders/mask_frag.glsl +7 -0
- package/lib/mask/shaders/mask_vert.glsl +22 -0
- package/lib/plugins/DataMappingPlugin.js +222 -304
- package/lib/plugins/DataSourcePlugin.js +87 -100
- package/lib/plugins/FeatureScalePlugin.js +239 -310
- package/lib/plugins/LayerAnimateStylePlugin.js +55 -61
- package/lib/plugins/LayerModelPlugin.js +72 -70
- package/lib/plugins/LayerStylePlugin.js +51 -44
- package/lib/plugins/LightingPlugin.js +68 -72
- package/lib/plugins/MultiPassRendererPlugin.js +65 -77
- package/lib/plugins/PixelPickingPlugin.js +109 -128
- package/lib/plugins/RegisterStyleAttributePlugin.js +110 -103
- package/lib/plugins/ShaderUniformPlugin.js +98 -103
- package/lib/plugins/UpdateModelPlugin.js +47 -36
- package/lib/plugins/UpdateStyleAttributePlugin.js +75 -80
- package/lib/point/index.js +147 -216
- package/lib/point/models/earthExtrude.js +201 -262
- package/lib/point/models/earthFill.js +202 -276
- package/lib/point/models/extrude.js +203 -282
- package/lib/point/models/fill.js +273 -369
- package/lib/point/models/fillmage.js +250 -327
- package/lib/point/models/image.js +163 -226
- package/lib/point/models/index.js +52 -46
- package/lib/point/models/normal.js +134 -176
- package/lib/point/models/radar.js +212 -286
- package/lib/point/models/simplePoint.js +142 -187
- package/lib/point/models/text.js +385 -559
- package/lib/point/models/tile.js +223 -294
- package/lib/point/shaders/animate/wave_frag.glsl +65 -0
- package/lib/point/shaders/earth/extrude_frag.glsl +44 -0
- package/lib/point/shaders/earth/extrude_vert.glsl +140 -0
- package/lib/point/shaders/earth/fill_frag.glsl +86 -0
- package/lib/point/shaders/earth/fill_vert.glsl +126 -0
- package/lib/point/shaders/extrude/extrude_frag.glsl +44 -0
- package/lib/point/shaders/extrude/extrude_vert.glsl +121 -0
- package/lib/point/shaders/fill_frag.glsl +84 -0
- package/lib/point/shaders/fill_vert.glsl +182 -0
- package/lib/point/shaders/image/fillImage_frag.glsl +20 -0
- package/lib/point/shaders/image/fillImage_vert.glsl +108 -0
- package/lib/point/shaders/image_frag.glsl +39 -0
- package/lib/point/shaders/image_vert.glsl +81 -0
- package/lib/point/shaders/normal_frag.glsl +15 -0
- package/lib/point/shaders/normal_vert.glsl +79 -0
- package/lib/point/shaders/radar/radar_frag.glsl +64 -0
- package/lib/point/shaders/radar/radar_vert.glsl +120 -0
- package/lib/point/shaders/simplePoint_frag.glsl +53 -0
- package/lib/point/shaders/simplePoint_vert.glsl +79 -0
- package/lib/point/shaders/text_frag.glsl +48 -0
- package/lib/point/shaders/text_vert.glsl +131 -0
- package/lib/point/shaders/tile/fill_tile_frag.glsl +83 -0
- package/lib/point/shaders/tile/fill_tile_vert.glsl +181 -0
- package/lib/point/shape/extrude.js +51 -51
- package/lib/polygon/index.js +100 -149
- package/lib/polygon/models/extrude.js +222 -303
- package/lib/polygon/models/fill.js +153 -205
- package/lib/polygon/models/index.js +52 -46
- package/lib/polygon/models/ocean.js +172 -251
- package/lib/polygon/models/tile.js +100 -139
- package/lib/polygon/models/water.js +152 -227
- package/lib/polygon/shaders/extrude/polygon_extrude_frag.glsl +44 -0
- package/lib/polygon/shaders/extrude/polygon_extrude_picklight_frag.glsl +44 -0
- package/lib/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +85 -0
- package/lib/polygon/shaders/extrude/polygon_extrude_vert.glsl +90 -0
- package/lib/polygon/shaders/extrude/polygon_extrudetex_frag.glsl +48 -0
- package/lib/polygon/shaders/extrude/polygon_extrudetex_vert.glsl +93 -0
- package/lib/polygon/shaders/polygon_frag.glsl +12 -0
- package/lib/polygon/shaders/polygon_linear_frag.glsl +22 -0
- package/lib/polygon/shaders/polygon_linear_vert.glsl +74 -0
- package/lib/polygon/shaders/polygon_vert.glsl +66 -0
- package/lib/polygon/shaders/tile/polygon_tile_frag.glsl +12 -0
- package/lib/polygon/shaders/tile/polygon_tile_vert.glsl +82 -0
- package/lib/polygon/shaders/water/polygon_ocean_frag.glsl +248 -0
- package/lib/polygon/shaders/water/polygon_ocean_vert.glsl +52 -0
- package/lib/polygon/shaders/water/polygon_water_frag.glsl +73 -0
- package/lib/polygon/shaders/water/polygon_water_vert.glsl +55 -0
- package/lib/raster/buffers/triangulation.js +39 -26
- package/lib/raster/index.js +73 -111
- package/lib/raster/models/index.js +33 -17
- package/lib/raster/models/raster.js +134 -187
- package/lib/raster/raster.js +132 -189
- package/lib/raster/shaders/raster_2d_frag.glsl +28 -0
- package/lib/raster/shaders/raster_2d_vert.glsl +18 -0
- package/lib/raster/shaders/raster_frag.glsl +9 -0
- package/lib/raster/shaders/raster_vert.glsl +44 -0
- package/lib/tile/interface.js +17 -2
- package/lib/tile/manager/tileConfigManager.js +86 -126
- package/lib/tile/manager/tileLayerManager.js +227 -312
- package/lib/tile/manager/tilePickerManager.js +123 -187
- package/lib/tile/models/tileModel.js +51 -70
- package/lib/tile/tileFactory/base.js +292 -403
- package/lib/tile/tileFactory/index.js +48 -51
- package/lib/tile/tileFactory/line.js +50 -71
- package/lib/tile/tileFactory/point.js +50 -71
- package/lib/tile/tileFactory/polygon.js +50 -71
- package/lib/tile/tileFactory/raster.js +54 -72
- package/lib/tile/tileFactory/rasterData.js +76 -94
- package/lib/tile/tileFactory/rasterDataLayer.js +62 -98
- package/lib/tile/tileFactory/vectorLayer.js +95 -148
- package/lib/tile/tileLayer/baseTileLayer.js +220 -380
- package/lib/tile/tmsTileLayer.js +67 -109
- package/lib/tile/utils.js +86 -101
- package/lib/utils/blend.js +79 -60
- package/lib/utils/collision-index.js +63 -83
- package/lib/utils/dataMappingStyle.js +59 -56
- package/lib/utils/extrude_polyline.js +397 -554
- package/lib/utils/grid-index.js +111 -168
- package/lib/utils/layerData.js +88 -95
- package/lib/utils/multiPassRender.js +38 -31
- package/lib/utils/polylineNormal.js +86 -118
- package/lib/utils/simpleLine.js +85 -101
- package/lib/utils/symbol-layout.js +109 -173
- package/lib/utils/updateShape.js +40 -11
- package/lib/wind/index.js +71 -110
- package/lib/wind/models/index.js +30 -13
- package/lib/wind/models/utils.js +89 -104
- package/lib/wind/models/wind.js +224 -332
- package/lib/wind/models/windRender.js +215 -293
- package/lib/wind/models/windShader.js +181 -17
- package/lib/wind/shaders/wind_frag.glsl +9 -0
- package/lib/wind/shaders/wind_vert.glsl +17 -0
- package/package.json +11 -9
- package/es/Geometry/index.js.map +0 -1
- package/es/Geometry/models/billboard.js.map +0 -1
- package/es/Geometry/models/index.js.map +0 -1
- package/es/Geometry/models/plane.js.map +0 -1
- package/es/Geometry/models/sprite.js.map +0 -1
- package/es/canvas/index.js.map +0 -1
- package/es/canvas/models/canvas.js.map +0 -1
- package/es/canvas/models/index.js.map +0 -1
- package/es/citybuliding/building.js.map +0 -1
- package/es/citybuliding/models/build.js.map +0 -1
- package/es/core/BaseLayer.js.map +0 -1
- package/es/core/BaseModel.js.map +0 -1
- package/es/core/interface.js.map +0 -1
- package/es/core/schema.js.map +0 -1
- package/es/core/shape/Path.js.map +0 -1
- package/es/core/shape/extrude.js.map +0 -1
- package/es/core/triangulation.js.map +0 -1
- package/es/earth/index.js.map +0 -1
- package/es/earth/models/atmosphere.js.map +0 -1
- package/es/earth/models/base.js.map +0 -1
- package/es/earth/models/bloomsphere.js.map +0 -1
- package/es/earth/utils.js.map +0 -1
- package/es/glsl.d.js +0 -2
- package/es/glsl.d.js.map +0 -1
- package/es/heatmap/index.js.map +0 -1
- package/es/heatmap/models/grid.js.map +0 -1
- package/es/heatmap/models/grid3d.js.map +0 -1
- package/es/heatmap/models/heatmap.js.map +0 -1
- package/es/heatmap/models/hexagon.js.map +0 -1
- package/es/heatmap/models/index.js.map +0 -1
- package/es/heatmap/triangulation.js.map +0 -1
- package/es/image/index.js.map +0 -1
- package/es/image/models/dataImage.js.map +0 -1
- package/es/image/models/image.js.map +0 -1
- package/es/image/models/index.js.map +0 -1
- package/es/index.js.map +0 -1
- package/es/line/index.js.map +0 -1
- package/es/line/models/arc.js.map +0 -1
- package/es/line/models/arc_3d.js.map +0 -1
- package/es/line/models/earthArc_3d.js.map +0 -1
- package/es/line/models/great_circle.js.map +0 -1
- package/es/line/models/half.js.map +0 -1
- package/es/line/models/index.js.map +0 -1
- package/es/line/models/line.js.map +0 -1
- package/es/line/models/linearline.js.map +0 -1
- package/es/line/models/simpleLine.js.map +0 -1
- package/es/line/models/tile.js.map +0 -1
- package/es/line/models/wall.js.map +0 -1
- package/es/mask/index.js.map +0 -1
- package/es/mask/models/fill.js.map +0 -1
- package/es/mask/models/index.js.map +0 -1
- package/es/plugins/DataMappingPlugin.js.map +0 -1
- package/es/plugins/DataSourcePlugin.js.map +0 -1
- package/es/plugins/FeatureScalePlugin.js.map +0 -1
- package/es/plugins/LayerAnimateStylePlugin.js.map +0 -1
- package/es/plugins/LayerModelPlugin.js.map +0 -1
- package/es/plugins/LayerStylePlugin.js.map +0 -1
- package/es/plugins/LightingPlugin.js.map +0 -1
- package/es/plugins/MultiPassRendererPlugin.js.map +0 -1
- package/es/plugins/PixelPickingPlugin.js.map +0 -1
- package/es/plugins/RegisterStyleAttributePlugin.js.map +0 -1
- package/es/plugins/ShaderUniformPlugin.js.map +0 -1
- package/es/plugins/UpdateModelPlugin.js.map +0 -1
- package/es/plugins/UpdateStyleAttributePlugin.js.map +0 -1
- package/es/point/index.js.map +0 -1
- package/es/point/models/earthExtrude.js.map +0 -1
- package/es/point/models/earthFill.js.map +0 -1
- package/es/point/models/extrude.js.map +0 -1
- package/es/point/models/fill.js.map +0 -1
- package/es/point/models/fillmage.js.map +0 -1
- package/es/point/models/image.js.map +0 -1
- package/es/point/models/index.js.map +0 -1
- package/es/point/models/normal.js.map +0 -1
- package/es/point/models/radar.js.map +0 -1
- package/es/point/models/simplePoint.js.map +0 -1
- package/es/point/models/text.js.map +0 -1
- package/es/point/models/tile.js.map +0 -1
- package/es/point/shape/extrude.js.map +0 -1
- package/es/polygon/index.js.map +0 -1
- package/es/polygon/models/extrude.js.map +0 -1
- package/es/polygon/models/fill.js.map +0 -1
- package/es/polygon/models/index.js.map +0 -1
- package/es/polygon/models/ocean.js.map +0 -1
- package/es/polygon/models/tile.js.map +0 -1
- package/es/polygon/models/water.js.map +0 -1
- package/es/raster/buffers/triangulation.js.map +0 -1
- package/es/raster/index.js.map +0 -1
- package/es/raster/models/index.js.map +0 -1
- package/es/raster/models/raster.js.map +0 -1
- package/es/raster/raster.js.map +0 -1
- package/es/tile/interface.js.map +0 -1
- package/es/tile/manager/tileConfigManager.js.map +0 -1
- package/es/tile/manager/tileLayerManager.js.map +0 -1
- package/es/tile/manager/tilePickerManager.js.map +0 -1
- package/es/tile/models/tileModel.js.map +0 -1
- package/es/tile/tileFactory/base.js.map +0 -1
- package/es/tile/tileFactory/index.js.map +0 -1
- package/es/tile/tileFactory/line.js.map +0 -1
- package/es/tile/tileFactory/point.js.map +0 -1
- package/es/tile/tileFactory/polygon.js.map +0 -1
- package/es/tile/tileFactory/raster.js.map +0 -1
- package/es/tile/tileFactory/rasterData.js.map +0 -1
- package/es/tile/tileFactory/rasterDataLayer.js.map +0 -1
- package/es/tile/tileFactory/vectorLayer.js.map +0 -1
- package/es/tile/tileLayer/baseTileLayer.js.map +0 -1
- package/es/tile/tmsTileLayer.js.map +0 -1
- package/es/tile/utils.js.map +0 -1
- package/es/utils/blend.js.map +0 -1
- package/es/utils/collision-index.js.map +0 -1
- package/es/utils/dataMappingStyle.js.map +0 -1
- package/es/utils/extrude_polyline.js.map +0 -1
- package/es/utils/grid-index.js.map +0 -1
- package/es/utils/layerData.js.map +0 -1
- package/es/utils/multiPassRender.js.map +0 -1
- package/es/utils/polylineNormal.js.map +0 -1
- package/es/utils/simpleLine.js.map +0 -1
- package/es/utils/symbol-layout.js.map +0 -1
- package/es/utils/updateShape.js.map +0 -1
- package/es/wind/index.js.map +0 -1
- package/es/wind/models/index.js.map +0 -1
- package/es/wind/models/utils.js.map +0 -1
- package/es/wind/models/wind.js.map +0 -1
- package/es/wind/models/windRender.js.map +0 -1
- package/es/wind/models/windShader.js.map +0 -1
- package/lib/Geometry/index.js.map +0 -1
- package/lib/Geometry/models/billboard.js.map +0 -1
- package/lib/Geometry/models/index.js.map +0 -1
- package/lib/Geometry/models/plane.js.map +0 -1
- package/lib/Geometry/models/sprite.js.map +0 -1
- package/lib/canvas/index.js.map +0 -1
- package/lib/canvas/models/canvas.js.map +0 -1
- package/lib/canvas/models/index.js.map +0 -1
- package/lib/citybuliding/building.js.map +0 -1
- package/lib/citybuliding/models/build.js.map +0 -1
- package/lib/core/BaseLayer.js.map +0 -1
- package/lib/core/BaseModel.js.map +0 -1
- package/lib/core/interface.js.map +0 -1
- package/lib/core/schema.js.map +0 -1
- package/lib/core/shape/Path.js.map +0 -1
- package/lib/core/shape/extrude.js.map +0 -1
- package/lib/core/triangulation.js.map +0 -1
- package/lib/earth/index.js.map +0 -1
- package/lib/earth/models/atmosphere.js.map +0 -1
- package/lib/earth/models/base.js.map +0 -1
- package/lib/earth/models/bloomsphere.js.map +0 -1
- package/lib/earth/utils.js.map +0 -1
- package/lib/glsl.d.js +0 -2
- package/lib/glsl.d.js.map +0 -1
- package/lib/heatmap/index.js.map +0 -1
- package/lib/heatmap/models/grid.js.map +0 -1
- package/lib/heatmap/models/grid3d.js.map +0 -1
- package/lib/heatmap/models/heatmap.js.map +0 -1
- package/lib/heatmap/models/hexagon.js.map +0 -1
- package/lib/heatmap/models/index.js.map +0 -1
- package/lib/heatmap/triangulation.js.map +0 -1
- package/lib/image/index.js.map +0 -1
- package/lib/image/models/dataImage.js.map +0 -1
- package/lib/image/models/image.js.map +0 -1
- package/lib/image/models/index.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/line/index.js.map +0 -1
- package/lib/line/models/arc.js.map +0 -1
- package/lib/line/models/arc_3d.js.map +0 -1
- package/lib/line/models/earthArc_3d.js.map +0 -1
- package/lib/line/models/great_circle.js.map +0 -1
- package/lib/line/models/half.js.map +0 -1
- package/lib/line/models/index.js.map +0 -1
- package/lib/line/models/line.js.map +0 -1
- package/lib/line/models/linearline.js.map +0 -1
- package/lib/line/models/simpleLine.js.map +0 -1
- package/lib/line/models/tile.js.map +0 -1
- package/lib/line/models/wall.js.map +0 -1
- package/lib/mask/index.js.map +0 -1
- package/lib/mask/models/fill.js.map +0 -1
- package/lib/mask/models/index.js.map +0 -1
- package/lib/plugins/DataMappingPlugin.js.map +0 -1
- package/lib/plugins/DataSourcePlugin.js.map +0 -1
- package/lib/plugins/FeatureScalePlugin.js.map +0 -1
- package/lib/plugins/LayerAnimateStylePlugin.js.map +0 -1
- package/lib/plugins/LayerModelPlugin.js.map +0 -1
- package/lib/plugins/LayerStylePlugin.js.map +0 -1
- package/lib/plugins/LightingPlugin.js.map +0 -1
- package/lib/plugins/MultiPassRendererPlugin.js.map +0 -1
- package/lib/plugins/PixelPickingPlugin.js.map +0 -1
- package/lib/plugins/RegisterStyleAttributePlugin.js.map +0 -1
- package/lib/plugins/ShaderUniformPlugin.js.map +0 -1
- package/lib/plugins/UpdateModelPlugin.js.map +0 -1
- package/lib/plugins/UpdateStyleAttributePlugin.js.map +0 -1
- package/lib/point/index.js.map +0 -1
- package/lib/point/models/earthExtrude.js.map +0 -1
- package/lib/point/models/earthFill.js.map +0 -1
- package/lib/point/models/extrude.js.map +0 -1
- package/lib/point/models/fill.js.map +0 -1
- package/lib/point/models/fillmage.js.map +0 -1
- package/lib/point/models/image.js.map +0 -1
- package/lib/point/models/index.js.map +0 -1
- package/lib/point/models/normal.js.map +0 -1
- package/lib/point/models/radar.js.map +0 -1
- package/lib/point/models/simplePoint.js.map +0 -1
- package/lib/point/models/text.js.map +0 -1
- package/lib/point/models/tile.js.map +0 -1
- package/lib/point/shape/extrude.js.map +0 -1
- package/lib/polygon/index.js.map +0 -1
- package/lib/polygon/models/extrude.js.map +0 -1
- package/lib/polygon/models/fill.js.map +0 -1
- package/lib/polygon/models/index.js.map +0 -1
- package/lib/polygon/models/ocean.js.map +0 -1
- package/lib/polygon/models/tile.js.map +0 -1
- package/lib/polygon/models/water.js.map +0 -1
- package/lib/raster/buffers/triangulation.js.map +0 -1
- package/lib/raster/index.js.map +0 -1
- package/lib/raster/models/index.js.map +0 -1
- package/lib/raster/models/raster.js.map +0 -1
- package/lib/raster/raster.js.map +0 -1
- package/lib/tile/interface.js.map +0 -1
- package/lib/tile/manager/tileConfigManager.js.map +0 -1
- package/lib/tile/manager/tileLayerManager.js.map +0 -1
- package/lib/tile/manager/tilePickerManager.js.map +0 -1
- package/lib/tile/models/tileModel.js.map +0 -1
- package/lib/tile/tileFactory/base.js.map +0 -1
- package/lib/tile/tileFactory/index.js.map +0 -1
- package/lib/tile/tileFactory/line.js.map +0 -1
- package/lib/tile/tileFactory/point.js.map +0 -1
- package/lib/tile/tileFactory/polygon.js.map +0 -1
- package/lib/tile/tileFactory/raster.js.map +0 -1
- package/lib/tile/tileFactory/rasterData.js.map +0 -1
- package/lib/tile/tileFactory/rasterDataLayer.js.map +0 -1
- package/lib/tile/tileFactory/vectorLayer.js.map +0 -1
- package/lib/tile/tileLayer/baseTileLayer.js.map +0 -1
- package/lib/tile/tmsTileLayer.js.map +0 -1
- package/lib/tile/utils.js.map +0 -1
- package/lib/utils/blend.js.map +0 -1
- package/lib/utils/collision-index.js.map +0 -1
- package/lib/utils/dataMappingStyle.js.map +0 -1
- package/lib/utils/extrude_polyline.js.map +0 -1
- package/lib/utils/grid-index.js.map +0 -1
- package/lib/utils/layerData.js.map +0 -1
- package/lib/utils/multiPassRender.js.map +0 -1
- package/lib/utils/polylineNormal.js.map +0 -1
- package/lib/utils/simpleLine.js.map +0 -1
- package/lib/utils/symbol-layout.js.map +0 -1
- package/lib/utils/updateShape.js.map +0 -1
- package/lib/wind/index.js.map +0 -1
- package/lib/wind/models/index.js.map +0 -1
- package/lib/wind/models/utils.js.map +0 -1
- package/lib/wind/models/wind.js.map +0 -1
- package/lib/wind/models/windRender.js.map +0 -1
- package/lib/wind/models/windShader.js.map +0 -1
package/es/wind/models/utils.js
CHANGED
|
@@ -1,21 +1,29 @@
|
|
|
1
1
|
export function createProgram(gl, vshader, fshader) {
|
|
2
|
-
|
|
3
|
-
var
|
|
2
|
+
// Create shader object
|
|
3
|
+
var vertexShader = loadShader(gl, gl.VERTEX_SHADER, vshader); // 创建顶点着色器对象
|
|
4
|
+
|
|
5
|
+
var fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fshader); // 创建片元着色器对象
|
|
4
6
|
|
|
5
7
|
if (!vertexShader || !fragmentShader) {
|
|
6
8
|
return null;
|
|
7
|
-
}
|
|
9
|
+
} // Create a program object
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
|
|
12
|
+
var program = gl.createProgram(); // 创建程序对象
|
|
10
13
|
|
|
11
14
|
if (!program) {
|
|
12
15
|
return null;
|
|
13
|
-
}
|
|
16
|
+
} // Attach the shader objects
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
gl.attachShader(program, vertexShader); // 绑定着色器对象
|
|
20
|
+
|
|
21
|
+
gl.attachShader(program, fragmentShader); // Link the program object
|
|
14
22
|
|
|
15
|
-
gl.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
|
|
23
|
+
gl.linkProgram(program); // 链接着色器对象
|
|
24
|
+
// Check the result of linking
|
|
25
|
+
|
|
26
|
+
var linked = gl.getProgramParameter(program, gl.LINK_STATUS); // 判断着色器对象是否链接成功
|
|
19
27
|
|
|
20
28
|
if (!linked) {
|
|
21
29
|
var error = gl.getProgramInfoLog(program);
|
|
@@ -29,32 +37,43 @@ export function createProgram(gl, vshader, fshader) {
|
|
|
29
37
|
var numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
|
|
30
38
|
|
|
31
39
|
for (var i = 0; i < numAttributes; i++) {
|
|
32
|
-
var attribute = gl.getActiveAttrib(program, i);
|
|
40
|
+
var attribute = gl.getActiveAttrib(program, i); // @ts-ignore
|
|
41
|
+
|
|
33
42
|
program[attribute.name] = gl.getAttribLocation(program, attribute.name);
|
|
34
43
|
}
|
|
35
44
|
|
|
36
45
|
var numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);
|
|
37
46
|
|
|
38
47
|
for (var i$1 = 0; i$1 < numUniforms; i$1++) {
|
|
39
|
-
var uniform = gl.getActiveUniform(program, i$1);
|
|
48
|
+
var uniform = gl.getActiveUniform(program, i$1); // @ts-ignore
|
|
49
|
+
|
|
40
50
|
program[uniform.name] = gl.getUniformLocation(program, uniform.name);
|
|
41
|
-
}
|
|
51
|
+
} // @ts-ignore
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
program.vertexShader = vertexShader; // @ts-ignore
|
|
42
55
|
|
|
43
|
-
program.vertexShader = vertexShader;
|
|
44
56
|
program.fragmentShader = fragmentShader;
|
|
45
57
|
return program;
|
|
46
58
|
}
|
|
47
59
|
export function loadShader(gl, type, source) {
|
|
48
|
-
|
|
60
|
+
// Create shader object
|
|
61
|
+
var shader = gl.createShader(type); // 生成着色器对象
|
|
49
62
|
|
|
50
63
|
if (shader == null) {
|
|
51
64
|
console.warn('unable to create shader');
|
|
52
65
|
return null;
|
|
53
|
-
}
|
|
66
|
+
} // Set the shader program
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
gl.shaderSource(shader, source); // 载入着色器
|
|
70
|
+
// Compile the shader
|
|
71
|
+
|
|
72
|
+
gl.compileShader(shader); // 编译着色器代码
|
|
73
|
+
// Check the result of compilation
|
|
54
74
|
|
|
55
|
-
gl.
|
|
56
|
-
gl.
|
|
57
|
-
var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
|
|
75
|
+
var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); // 判断着色器对象是否生成成功
|
|
76
|
+
// gl.SHADER_TYPE、gl.DELETE_STATUS、gl.COMPILE_STATUS
|
|
58
77
|
|
|
59
78
|
if (!compiled) {
|
|
60
79
|
var error = gl.getShaderInfoLog(shader);
|
|
@@ -104,8 +123,10 @@ export function bindAttriBuffer(gl, attrName, vertices, count, program) {
|
|
|
104
123
|
console.warn('failed create vertex buffer');
|
|
105
124
|
}
|
|
106
125
|
|
|
107
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
108
|
-
|
|
126
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, buffer); // 将缓冲区对象绑定到目标
|
|
127
|
+
|
|
128
|
+
gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); // 向缓冲区对象中写入数据
|
|
129
|
+
|
|
109
130
|
var attr = gl.getAttribLocation(program, attrName);
|
|
110
131
|
gl.vertexAttribPointer(attr, count, gl.FLOAT, false, 0, 0);
|
|
111
132
|
gl.enableVertexAttribArray(attr);
|
|
@@ -158,7 +179,8 @@ export function setUnifrom(gl, location, data, vec) {
|
|
|
158
179
|
break;
|
|
159
180
|
|
|
160
181
|
case 'bool':
|
|
161
|
-
gl.uniform1i(location, data);
|
|
182
|
+
gl.uniform1i(location, data); // 1 - true 0 - false
|
|
183
|
+
|
|
162
184
|
break;
|
|
163
185
|
|
|
164
186
|
case 'sampler2d':
|
|
@@ -180,9 +202,12 @@ export function initFramebuffer(gl) {
|
|
|
180
202
|
gl.bindRenderbuffer(gl.RENDERBUFFER, depthbuffer);
|
|
181
203
|
gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, OFFER_SCREEN_WIDTH, OFFER_SCREEN_HEIGHT);
|
|
182
204
|
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, depthbuffer);
|
|
183
|
-
var texture = gl.createTexture();
|
|
184
|
-
|
|
185
|
-
FRAMEBUFFER.
|
|
205
|
+
var texture = gl.createTexture(); // @ts-ignore
|
|
206
|
+
|
|
207
|
+
FRAMEBUFFER.texture = texture; // @ts-ignore
|
|
208
|
+
|
|
209
|
+
FRAMEBUFFER.width = OFFER_SCREEN_WIDTH; // @ts-ignore
|
|
210
|
+
|
|
186
211
|
FRAMEBUFFER.height = OFFER_SCREEN_HEIGHT;
|
|
187
212
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
188
213
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
|
|
@@ -198,5 +223,4 @@ export function initFramebuffer(gl) {
|
|
|
198
223
|
OFFER_SCREEN_WIDTH: OFFER_SCREEN_WIDTH,
|
|
199
224
|
OFFER_SCREEN_HEIGHT: OFFER_SCREEN_HEIGHT
|
|
200
225
|
};
|
|
201
|
-
}
|
|
202
|
-
//# sourceMappingURL=utils.js.map
|
|
226
|
+
}
|
package/es/wind/models/wind.js
CHANGED
|
@@ -12,11 +12,15 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
|
|
|
12
12
|
|
|
13
13
|
import { AttributeType, gl } from '@antv/l7-core';
|
|
14
14
|
import { FrequencyController } from '@antv/l7-utils';
|
|
15
|
-
import BaseModel from
|
|
16
|
-
import { RasterImageTriangulation } from
|
|
15
|
+
import BaseModel from "../../core/BaseModel";
|
|
16
|
+
import { RasterImageTriangulation } from "../../core/triangulation";
|
|
17
|
+
|
|
18
|
+
/* babel-plugin-inline-import '../shaders/wind_frag.glsl' */
|
|
17
19
|
var WindFrag = "precision mediump float;\nuniform float u_opacity: 1.0;\nuniform sampler2D u_texture;\nvarying vec2 v_texCoord;\nvoid main() {\n vec4 color = texture2D(u_texture,vec2(v_texCoord.x,v_texCoord.y));\n gl_FragColor = color;\n gl_FragColor.a *= u_opacity;\n}\n";
|
|
20
|
+
|
|
21
|
+
/* babel-plugin-inline-import '../shaders/wind_vert.glsl' */
|
|
18
22
|
var WindVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nattribute vec3 a_Position;\nattribute vec2 a_Uv;\nvarying vec2 v_texCoord;\n#pragma include \"projection\"\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xy,0., 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n }\n}\n";
|
|
19
|
-
import { Wind } from
|
|
23
|
+
import { Wind } from "./windRender";
|
|
20
24
|
var defaultRampColors = {
|
|
21
25
|
0.0: '#3288bd',
|
|
22
26
|
0.1: '#66c2a5',
|
|
@@ -28,7 +32,7 @@ var defaultRampColors = {
|
|
|
28
32
|
1.0: '#d53e4f'
|
|
29
33
|
};
|
|
30
34
|
|
|
31
|
-
var WindModel = function (_BaseModel) {
|
|
35
|
+
var WindModel = /*#__PURE__*/function (_BaseModel) {
|
|
32
36
|
_inherits(WindModel, _BaseModel);
|
|
33
37
|
|
|
34
38
|
var _super = _createSuper(WindModel);
|
|
@@ -44,20 +48,10 @@ var WindModel = function (_BaseModel) {
|
|
|
44
48
|
|
|
45
49
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
46
50
|
|
|
47
|
-
_defineProperty(_assertThisInitialized(_this), "texture", void 0);
|
|
48
|
-
|
|
49
|
-
_defineProperty(_assertThisInitialized(_this), "colorModel", void 0);
|
|
50
|
-
|
|
51
|
-
_defineProperty(_assertThisInitialized(_this), "wind", void 0);
|
|
52
|
-
|
|
53
|
-
_defineProperty(_assertThisInitialized(_this), "imageCoords", void 0);
|
|
54
|
-
|
|
55
51
|
_defineProperty(_assertThisInitialized(_this), "sizeScale", 0.5);
|
|
56
52
|
|
|
57
53
|
_defineProperty(_assertThisInitialized(_this), "frequency", new FrequencyController(7.2));
|
|
58
54
|
|
|
59
|
-
_defineProperty(_assertThisInitialized(_this), "cacheZoom", void 0);
|
|
60
|
-
|
|
61
55
|
return _this;
|
|
62
56
|
}
|
|
63
57
|
|
|
@@ -66,6 +60,7 @@ var WindModel = function (_BaseModel) {
|
|
|
66
60
|
value: function render() {
|
|
67
61
|
var _this2 = this;
|
|
68
62
|
|
|
63
|
+
// Tip: 控制风场的平均更新频率
|
|
69
64
|
this.frequency.run(function () {
|
|
70
65
|
_this2.drawWind();
|
|
71
66
|
});
|
|
@@ -138,7 +133,7 @@ var WindModel = function (_BaseModel) {
|
|
|
138
133
|
dropRateBump: dropRateBump,
|
|
139
134
|
rampColors: rampColors
|
|
140
135
|
};
|
|
141
|
-
_this3.wind = new Wind(options);
|
|
136
|
+
_this3.wind = new Wind(options); // imageData[0] 风场图
|
|
142
137
|
|
|
143
138
|
_this3.wind.setWind({
|
|
144
139
|
uMin: uMin,
|
|
@@ -217,12 +212,14 @@ var WindModel = function (_BaseModel) {
|
|
|
217
212
|
}, {
|
|
218
213
|
key: "registerBuiltinAttributes",
|
|
219
214
|
value: function registerBuiltinAttributes() {
|
|
215
|
+
// point layer size;
|
|
220
216
|
this.styleAttributeService.registerStyleAttribute({
|
|
221
217
|
name: 'uv',
|
|
222
218
|
type: AttributeType.Attribute,
|
|
223
219
|
descriptor: {
|
|
224
220
|
name: 'a_Uv',
|
|
225
221
|
buffer: {
|
|
222
|
+
// give the WebGL driver a hint that this buffer may change
|
|
226
223
|
usage: gl.DYNAMIC_DRAW,
|
|
227
224
|
data: [],
|
|
228
225
|
type: gl.FLOAT
|
|
@@ -294,7 +291,8 @@ var WindModel = function (_BaseModel) {
|
|
|
294
291
|
var _this$wind$draw = this.wind.draw(),
|
|
295
292
|
d = _this$wind$draw.d,
|
|
296
293
|
w = _this$wind$draw.w,
|
|
297
|
-
h = _this$wind$draw.h;
|
|
294
|
+
h = _this$wind$draw.h; // TODO: 恢复 L7 渲染流程中 gl 状态
|
|
295
|
+
|
|
298
296
|
|
|
299
297
|
this.rendererService.setBaseState();
|
|
300
298
|
this.texture.update({
|
|
@@ -330,5 +328,4 @@ var WindModel = function (_BaseModel) {
|
|
|
330
328
|
return WindModel;
|
|
331
329
|
}(BaseModel);
|
|
332
330
|
|
|
333
|
-
export { WindModel as default };
|
|
334
|
-
//# sourceMappingURL=wind.js.map
|
|
331
|
+
export { WindModel as default };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
2
2
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
3
3
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
|
-
import * as glUtils from
|
|
5
|
-
import { drawFrag, drawVert, fullScreenFrag, fullScreenVert, updateFrag, updateVert } from
|
|
4
|
+
import * as glUtils from "./utils";
|
|
5
|
+
import { drawFrag, drawVert, fullScreenFrag, fullScreenVert, updateFrag, updateVert } from "./windShader";
|
|
6
6
|
|
|
7
7
|
function getColorRamp(colors) {
|
|
8
8
|
var canvas = document.createElement('canvas');
|
|
@@ -17,7 +17,8 @@ function getColorRamp(colors) {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
ctx.fillStyle = gradient;
|
|
20
|
-
ctx.fillRect(0, 0, 256, 1);
|
|
20
|
+
ctx.fillRect(0, 0, 256, 1); // @ts-ignore dispose canvas element
|
|
21
|
+
|
|
21
22
|
canvas = null;
|
|
22
23
|
return new Uint8Array(ctx.getImageData(0, 0, 256, 1).data);
|
|
23
24
|
}
|
|
@@ -36,7 +37,7 @@ function bindFramebuffer(gl, framebuffer, texture) {
|
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
39
|
|
|
39
|
-
export var Wind = function () {
|
|
40
|
+
export var Wind = /*#__PURE__*/function () {
|
|
40
41
|
function Wind(options) {
|
|
41
42
|
_classCallCheck(this, Wind);
|
|
42
43
|
|
|
@@ -44,52 +45,8 @@ export var Wind = function () {
|
|
|
44
45
|
|
|
45
46
|
_defineProperty(this, "height", 512);
|
|
46
47
|
|
|
47
|
-
_defineProperty(this, "pixels", void 0);
|
|
48
|
-
|
|
49
|
-
_defineProperty(this, "fadeOpacity", void 0);
|
|
50
|
-
|
|
51
|
-
_defineProperty(this, "speedFactor", void 0);
|
|
52
|
-
|
|
53
|
-
_defineProperty(this, "dropRate", void 0);
|
|
54
|
-
|
|
55
|
-
_defineProperty(this, "dropRateBump", void 0);
|
|
56
|
-
|
|
57
|
-
_defineProperty(this, "gl", void 0);
|
|
58
|
-
|
|
59
|
-
_defineProperty(this, "drawProgram", void 0);
|
|
60
|
-
|
|
61
|
-
_defineProperty(this, "fullScreenProgram", void 0);
|
|
62
|
-
|
|
63
|
-
_defineProperty(this, "updateProgram", void 0);
|
|
64
|
-
|
|
65
|
-
_defineProperty(this, "rampColors", void 0);
|
|
66
|
-
|
|
67
48
|
_defineProperty(this, "numParticles", 65536);
|
|
68
49
|
|
|
69
|
-
_defineProperty(this, "numParticlesSize", void 0);
|
|
70
|
-
|
|
71
|
-
_defineProperty(this, "particleStateResolution", void 0);
|
|
72
|
-
|
|
73
|
-
_defineProperty(this, "quadBuffer", void 0);
|
|
74
|
-
|
|
75
|
-
_defineProperty(this, "particleIndexBuffer", void 0);
|
|
76
|
-
|
|
77
|
-
_defineProperty(this, "framebuffer", void 0);
|
|
78
|
-
|
|
79
|
-
_defineProperty(this, "colorRampTexture", void 0);
|
|
80
|
-
|
|
81
|
-
_defineProperty(this, "backgroundTexture", void 0);
|
|
82
|
-
|
|
83
|
-
_defineProperty(this, "screenTexture", void 0);
|
|
84
|
-
|
|
85
|
-
_defineProperty(this, "particleStateTexture0", void 0);
|
|
86
|
-
|
|
87
|
-
_defineProperty(this, "particleStateTexture1", void 0);
|
|
88
|
-
|
|
89
|
-
_defineProperty(this, "windTexture", void 0);
|
|
90
|
-
|
|
91
|
-
_defineProperty(this, "windData", void 0);
|
|
92
|
-
|
|
93
50
|
this.gl = options.glContext;
|
|
94
51
|
this.width = options.imageWidth;
|
|
95
52
|
this.height = options.imageHeight;
|
|
@@ -105,26 +62,34 @@ export var Wind = function () {
|
|
|
105
62
|
key: "init",
|
|
106
63
|
value: function init() {
|
|
107
64
|
var gl = this.gl;
|
|
108
|
-
this.fadeOpacity = 0.996;
|
|
109
|
-
|
|
110
|
-
this.
|
|
111
|
-
|
|
65
|
+
this.fadeOpacity = 0.996; // how fast the particle trails fade on each frame
|
|
66
|
+
|
|
67
|
+
this.speedFactor = 0.25; // how fast the particles move
|
|
68
|
+
|
|
69
|
+
this.dropRate = 0.003; // how often the particles move to a random place
|
|
70
|
+
|
|
71
|
+
this.dropRateBump = 0.01; // drop rate increase relative to individual particle speed
|
|
72
|
+
|
|
112
73
|
this.drawProgram = glUtils.createProgram(gl, drawVert, drawFrag);
|
|
113
74
|
this.fullScreenProgram = glUtils.createProgram(gl, fullScreenVert, fullScreenFrag);
|
|
114
75
|
this.updateProgram = glUtils.createProgram(gl, updateVert, updateFrag);
|
|
115
76
|
this.quadBuffer = glUtils.createBuffer(gl, new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]));
|
|
116
77
|
this.framebuffer = gl.createFramebuffer();
|
|
117
78
|
this.colorRampTexture = glUtils.createTexture(this.gl, this.gl.LINEAR, getColorRamp(this.rampColors), 16, 16);
|
|
118
|
-
var emptyPixels = new Uint8Array(this.width * this.height * 4);
|
|
79
|
+
var emptyPixels = new Uint8Array(this.width * this.height * 4); // screen textures to hold the drawn screen for the previous and the current frame
|
|
80
|
+
|
|
119
81
|
this.backgroundTexture = glUtils.createTexture(gl, gl.NEAREST, emptyPixels, this.width, this.height);
|
|
120
|
-
this.screenTexture = glUtils.createTexture(gl, gl.NEAREST, emptyPixels, this.width, this.height);
|
|
121
|
-
|
|
82
|
+
this.screenTexture = glUtils.createTexture(gl, gl.NEAREST, emptyPixels, this.width, this.height); // we create a square texture where each pixel will hold a particle position encoded as RGBA
|
|
83
|
+
|
|
84
|
+
var particleRes = this.particleStateResolution = Math.ceil(Math.sqrt(this.numParticles)); // particleRes size
|
|
85
|
+
|
|
122
86
|
this.numParticlesSize = particleRes * particleRes;
|
|
123
87
|
var particleState = new Uint8Array(this.numParticlesSize * 4);
|
|
124
88
|
|
|
125
89
|
for (var i = 0; i < particleState.length; i++) {
|
|
126
|
-
particleState[i] = Math.floor(Math.random() * 256);
|
|
127
|
-
}
|
|
90
|
+
particleState[i] = Math.floor(Math.random() * 256); // randomize the initial particle positions
|
|
91
|
+
} // textures to hold the particle state for the current and the next frame
|
|
92
|
+
|
|
128
93
|
|
|
129
94
|
this.particleStateTexture0 = glUtils.createTexture(gl, gl.NEAREST, particleState, particleRes, particleRes);
|
|
130
95
|
this.particleStateTexture1 = glUtils.createTexture(gl, gl.NEAREST, particleState, particleRes, particleRes);
|
|
@@ -142,20 +107,28 @@ export var Wind = function () {
|
|
|
142
107
|
this.windData = windData;
|
|
143
108
|
this.windTexture = glUtils.createDataTexture(this.gl, this.gl.LINEAR, windData.image);
|
|
144
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* 更新风场粒子数量
|
|
112
|
+
* @param num
|
|
113
|
+
*/
|
|
114
|
+
|
|
145
115
|
}, {
|
|
146
116
|
key: "updateParticelNum",
|
|
147
117
|
value: function updateParticelNum(num) {
|
|
148
118
|
var gl = this.gl;
|
|
149
119
|
|
|
150
120
|
if (num !== this.numParticles) {
|
|
151
|
-
this.numParticles = num;
|
|
121
|
+
this.numParticles = num; // params number
|
|
122
|
+
// we create a square texture where each pixel will hold a particle position encoded as RGBA
|
|
123
|
+
|
|
152
124
|
var particleRes = this.particleStateResolution = Math.ceil(Math.sqrt(this.numParticles));
|
|
153
125
|
this.numParticlesSize = particleRes * particleRes;
|
|
154
126
|
var particleState = new Uint8Array(this.numParticlesSize * 4);
|
|
155
127
|
|
|
156
128
|
for (var i = 0; i < particleState.length; i++) {
|
|
157
|
-
particleState[i] = Math.floor(Math.random() * 256);
|
|
158
|
-
}
|
|
129
|
+
particleState[i] = Math.floor(Math.random() * 256); // randomize the initial particle positions
|
|
130
|
+
} // textures to hold the particle state for the current and the next frame
|
|
131
|
+
|
|
159
132
|
|
|
160
133
|
this.particleStateTexture0 = glUtils.createTexture(gl, gl.NEAREST, particleState, particleRes, particleRes);
|
|
161
134
|
this.particleStateTexture1 = glUtils.createTexture(gl, gl.NEAREST, particleState, particleRes, particleRes);
|
|
@@ -168,6 +141,14 @@ export var Wind = function () {
|
|
|
168
141
|
this.particleIndexBuffer = glUtils.createBuffer(gl, particleIndices);
|
|
169
142
|
}
|
|
170
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* 更新风场风向风速
|
|
146
|
+
* @param uMin
|
|
147
|
+
* @param uMax
|
|
148
|
+
* @param vMin
|
|
149
|
+
* @param vMax
|
|
150
|
+
*/
|
|
151
|
+
|
|
171
152
|
}, {
|
|
172
153
|
key: "updateWindDir",
|
|
173
154
|
value: function updateWindDir(uMin, uMax, vMin, vMax) {
|
|
@@ -176,6 +157,11 @@ export var Wind = function () {
|
|
|
176
157
|
this.windData.vMin = vMin;
|
|
177
158
|
this.windData.vMax = vMax;
|
|
178
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* update rampColors
|
|
162
|
+
* @param rampColors
|
|
163
|
+
*/
|
|
164
|
+
|
|
179
165
|
}, {
|
|
180
166
|
key: "updateColorRampTexture",
|
|
181
167
|
value: function updateColorRampTexture(rampColors) {
|
|
@@ -194,11 +180,13 @@ export var Wind = function () {
|
|
|
194
180
|
for (var _i2 = 0, _keys = keys; _i2 < _keys.length; _i2++) {
|
|
195
181
|
var item = _keys[_i2];
|
|
196
182
|
|
|
197
|
-
var _key = Number(item);
|
|
183
|
+
var _key = Number(item); // exist new key -> color need update
|
|
184
|
+
|
|
198
185
|
|
|
199
186
|
if (!this.rampColors[_key]) {
|
|
200
187
|
return true;
|
|
201
|
-
}
|
|
188
|
+
} // value changed -> color need update
|
|
189
|
+
|
|
202
190
|
|
|
203
191
|
if (this.rampColors[_key] && this.rampColors[_key] !== rampColors[_key]) {
|
|
204
192
|
return true;
|
|
@@ -216,7 +204,8 @@ export var Wind = function () {
|
|
|
216
204
|
gl.deleteTexture(this.screenTexture);
|
|
217
205
|
this.width = width;
|
|
218
206
|
this.height = height;
|
|
219
|
-
var emptyPixels = new Uint8Array(width * height * 4);
|
|
207
|
+
var emptyPixels = new Uint8Array(width * height * 4); // screen textures to hold the drawn screen for the previous and the current frame
|
|
208
|
+
|
|
220
209
|
this.backgroundTexture = glUtils.createTexture(gl, gl.NEAREST, emptyPixels, width, height);
|
|
221
210
|
this.screenTexture = glUtils.createTexture(gl, gl.NEAREST, emptyPixels, width, height);
|
|
222
211
|
}
|
|
@@ -230,7 +219,8 @@ export var Wind = function () {
|
|
|
230
219
|
var gl = this.gl;
|
|
231
220
|
glUtils.bindTexture(gl, this.windTexture, 0);
|
|
232
221
|
glUtils.bindTexture(gl, this.particleStateTexture0, 1);
|
|
233
|
-
this.drawScreen();
|
|
222
|
+
this.drawScreen(); // draw Particles into framebuffer
|
|
223
|
+
|
|
234
224
|
this.updateParticles();
|
|
235
225
|
return {
|
|
236
226
|
d: this.pixels,
|
|
@@ -248,7 +238,8 @@ export var Wind = function () {
|
|
|
248
238
|
}, {
|
|
249
239
|
key: "drawScreen",
|
|
250
240
|
value: function drawScreen() {
|
|
251
|
-
var gl = this.gl;
|
|
241
|
+
var gl = this.gl; // draw the screen into a temporary framebuffer to retain it as the background on the next frame
|
|
242
|
+
|
|
252
243
|
bindFramebuffer(gl, this.framebuffer, this.screenTexture);
|
|
253
244
|
gl.viewport(0, 0, this.width, this.height);
|
|
254
245
|
gl.disable(gl.BLEND);
|
|
@@ -257,7 +248,8 @@ export var Wind = function () {
|
|
|
257
248
|
this.pixels = new Uint8Array(4 * this.width * this.height);
|
|
258
249
|
gl.readPixels(0, 0, this.width, this.height, gl.RGBA, gl.UNSIGNED_BYTE, this.pixels);
|
|
259
250
|
bindFramebuffer(gl, null, null);
|
|
260
|
-
gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height);
|
|
251
|
+
gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height); // save the current screen as the background for the next frame
|
|
252
|
+
|
|
261
253
|
var temp = this.backgroundTexture;
|
|
262
254
|
this.backgroundTexture = this.screenTexture;
|
|
263
255
|
this.screenTexture = temp;
|
|
@@ -267,7 +259,8 @@ export var Wind = function () {
|
|
|
267
259
|
value: function drawFullTexture(texture, opacity) {
|
|
268
260
|
var gl = this.gl;
|
|
269
261
|
var program = this.fullScreenProgram;
|
|
270
|
-
gl.useProgram(program);
|
|
262
|
+
gl.useProgram(program); // bindAttribute(gl, this.quadBuffer, program.a_pos, 2);
|
|
263
|
+
|
|
271
264
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.quadBuffer);
|
|
272
265
|
gl.vertexAttribPointer(program.a_pos, 2, gl.FLOAT, false, 0, 0);
|
|
273
266
|
gl.enableVertexAttribArray(program.a_pos);
|
|
@@ -275,7 +268,7 @@ export var Wind = function () {
|
|
|
275
268
|
glUtils.bindTexture(gl, texture, 2);
|
|
276
269
|
gl.uniform1i(program.u_screen, 2);
|
|
277
270
|
gl.uniform1f(program.u_opacity, opacity);
|
|
278
|
-
gl.drawArrays(gl.TRIANGLES, 0, 6);
|
|
271
|
+
gl.drawArrays(gl.TRIANGLES, 0, 6); // gl.drawArrays(gl.POINTS, 0, 6);
|
|
279
272
|
}
|
|
280
273
|
}, {
|
|
281
274
|
key: "drawParticles",
|
|
@@ -311,25 +304,44 @@ export var Wind = function () {
|
|
|
311
304
|
gl.uniform1f(program.u_speed_factor, this.speedFactor);
|
|
312
305
|
gl.uniform1f(program.u_drop_rate, this.dropRate);
|
|
313
306
|
gl.uniform1f(program.u_drop_rate_bump, this.dropRateBump);
|
|
314
|
-
gl.drawArrays(gl.TRIANGLES, 0, 6);
|
|
307
|
+
gl.drawArrays(gl.TRIANGLES, 0, 6); // swap the particle state textures so the new one becomes the current one
|
|
308
|
+
|
|
315
309
|
var temp = this.particleStateTexture0;
|
|
316
310
|
this.particleStateTexture0 = this.particleStateTexture1;
|
|
317
311
|
this.particleStateTexture1 = temp;
|
|
318
|
-
bindFramebuffer(gl, null, null);
|
|
312
|
+
bindFramebuffer(gl, null, null); // gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height);
|
|
319
313
|
}
|
|
320
314
|
}, {
|
|
321
315
|
key: "destroy",
|
|
322
316
|
value: function destroy() {
|
|
317
|
+
// private drawProgram: WebGLProgram;
|
|
318
|
+
// private fullScreenProgram: WebGLProgram;
|
|
319
|
+
// private updateProgram: WebGLProgram;
|
|
320
|
+
// private quadBuffer: WebGLBuffer | null;
|
|
321
|
+
// private particleIndexBuffer: WebGLBuffer | null;
|
|
322
|
+
// private framebuffer: WebGLFramebuffer | null;
|
|
323
|
+
// private colorRampTexture: WebGLTexture | null;
|
|
324
|
+
// private backgroundTexture: WebGLTexture | null;
|
|
325
|
+
// private screenTexture: WebGLTexture | null;
|
|
326
|
+
// private particleStateTexture0: WebGLTexture | null;
|
|
327
|
+
// private particleStateTexture1: WebGLTexture | null;
|
|
328
|
+
// private windTexture: WebGLTexture | null;
|
|
323
329
|
this.gl.deleteBuffer(this.quadBuffer);
|
|
324
330
|
this.gl.deleteBuffer(this.particleIndexBuffer);
|
|
325
|
-
this.gl.deleteFramebuffer(this.framebuffer);
|
|
326
|
-
|
|
331
|
+
this.gl.deleteFramebuffer(this.framebuffer); // @ts-ignore
|
|
332
|
+
|
|
333
|
+
this.gl.deleteShader(this.drawProgram.vertexShader); // @ts-ignore
|
|
334
|
+
|
|
327
335
|
this.gl.deleteShader(this.drawProgram.fragmentShader);
|
|
328
|
-
this.gl.deleteProgram(this.drawProgram);
|
|
329
|
-
|
|
336
|
+
this.gl.deleteProgram(this.drawProgram); // @ts-ignore
|
|
337
|
+
|
|
338
|
+
this.gl.deleteShader(this.fullScreenProgram.vertexShader); // @ts-ignore
|
|
339
|
+
|
|
330
340
|
this.gl.deleteShader(this.fullScreenProgram.fragmentShader);
|
|
331
|
-
this.gl.deleteProgram(this.fullScreenProgram);
|
|
332
|
-
|
|
341
|
+
this.gl.deleteProgram(this.fullScreenProgram); // @ts-ignore
|
|
342
|
+
|
|
343
|
+
this.gl.deleteShader(this.updateProgram.vertexShader); // @ts-ignore
|
|
344
|
+
|
|
333
345
|
this.gl.deleteShader(this.updateProgram.fragmentShader);
|
|
334
346
|
this.gl.deleteProgram(this.updateProgram);
|
|
335
347
|
this.gl.deleteTexture(this.colorRampTexture);
|
|
@@ -342,5 +354,4 @@ export var Wind = function () {
|
|
|
342
354
|
}]);
|
|
343
355
|
|
|
344
356
|
return Wind;
|
|
345
|
-
}();
|
|
346
|
-
//# sourceMappingURL=windRender.js.map
|
|
357
|
+
}();
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* updateProgram updateVert updateFrag
|
|
5
5
|
* fullScreenProgram fullScreenVert fullScreenFrag
|
|
6
6
|
*/
|
|
7
|
-
export declare const drawVert = "\n precision mediump float;\n
|
|
8
|
-
export declare const drawFrag = "\n precision mediump float;\n
|
|
9
|
-
export declare const updateVert = "\n precision mediump float;\n
|
|
10
|
-
export declare const updateFrag = "\n precision highp float;\n
|
|
11
|
-
export declare const fullScreenVert = "\n precision mediump float;\n
|
|
12
|
-
export declare const fullScreenFrag = "\n precision mediump float;\n
|
|
7
|
+
export declare const drawVert = "\n precision mediump float;\n\n attribute float a_index;\n\n uniform sampler2D u_particles;\n uniform float u_particles_res;\n\n varying vec2 v_particle_pos;\n\n void main() {\n vec4 color = texture2D(u_particles, vec2(\n fract(a_index / u_particles_res),\n floor(a_index / u_particles_res) / u_particles_res)\n );\n\n // decode current particle position from the pixel's RGBA value\n v_particle_pos = vec2( color.r / 255.0 + color.b, color.g / 255.0 + color.a);\n\n gl_PointSize = 1.0;\n gl_Position = vec4(2.0 * v_particle_pos.x - 1.0, 1.0 - 2.0 * v_particle_pos.y, 0, 1);\n }";
|
|
8
|
+
export declare const drawFrag = "\n precision mediump float;\n\n uniform sampler2D u_wind;\n uniform vec2 u_wind_min;\n uniform vec2 u_wind_max;\n uniform sampler2D u_color_ramp;\n\n varying vec2 v_particle_pos;\n\n void main() {\n vec2 velocity = mix(u_wind_min, u_wind_max, texture2D(u_wind, v_particle_pos).rg);\n float speed_t = length(velocity) / length(u_wind_max);\n\n // color ramp is encoded in a 16x16 texture\n vec2 ramp_pos = vec2( fract(16.0 * speed_t), floor(16.0 * speed_t) / 16.0);\n\n gl_FragColor = texture2D(u_color_ramp, ramp_pos);\n }";
|
|
9
|
+
export declare const updateVert = "\n precision mediump float;\n\n attribute vec2 a_pos;\n\n varying vec2 v_tex_pos;\n\n void main() {\n v_tex_pos = a_pos;\n gl_Position = vec4(1.0 - 2.0 * a_pos, 0, 1);\n // framebuffer \u59CB\u7EC8\u7528\u94FA\u6EE1\u5C4F\u5E55\u7684 texture\n }";
|
|
10
|
+
export declare const updateFrag = "\n precision highp float;\n\n uniform sampler2D u_particles;\n uniform sampler2D u_wind;\n uniform vec2 u_wind_res;\n uniform vec2 u_wind_min;\n uniform vec2 u_wind_max;\n uniform float u_rand_seed;\n uniform float u_speed_factor;\n uniform float u_drop_rate;\n uniform float u_drop_rate_bump;\n\n varying vec2 v_tex_pos;\n\n // pseudo-random generator\n const vec3 rand_constants = vec3(12.9898, 78.233, 4375.85453);\n float rand(const vec2 co) {\n float t = dot(rand_constants.xy, co);\n return fract(sin(t) * (rand_constants.z + t));\n }\n\n // wind speed lookup; use manual bilinear filtering based on 4 adjacent pixels for smooth interpolation\n vec2 lookup_wind(const vec2 uv) {\n // return texture2D(u_wind, uv).rg; // lower-res hardware filtering\n vec2 px = 1.0 / u_wind_res;\n vec2 vc = (floor(uv * u_wind_res)) * px;\n vec2 f = fract(uv * u_wind_res);\n vec2 tl = texture2D(u_wind, vc).rg;\n vec2 tr = texture2D(u_wind, vc + vec2(px.x, 0)).rg;\n vec2 bl = texture2D(u_wind, vc + vec2(0, px.y)).rg;\n vec2 br = texture2D(u_wind, vc + px).rg;\n return mix(mix(tl, tr, f.x), mix(bl, br, f.x), f.y);\n }\n\n void main() {\n vec4 color = texture2D(u_particles, v_tex_pos);\n vec2 pos = vec2(\n color.r / 255.0 + color.b,\n color.g / 255.0 + color.a); // decode particle position from pixel RGBA\n vec2 velocity = mix(u_wind_min, u_wind_max, lookup_wind(pos));\n float speed_t = length(velocity) / length(u_wind_max);\n\n // take EPSG:4236 distortion into account for calculating where the particle moved\n float distortion = cos(radians(pos.y * 180.0 - 90.0));\n vec2 offset = vec2(velocity.x / distortion, -velocity.y) * 0.0001 * u_speed_factor;\n\n // update particle position, wrapping around the date line\n pos = fract(1.0 + pos + offset);\n\n // a random seed to use for the particle drop\n vec2 seed = (pos + v_tex_pos) * u_rand_seed;\n\n // drop rate is a chance a particle will restart at random position, to avoid degeneration\n float drop_rate = u_drop_rate + speed_t * u_drop_rate_bump;\n float drop = step(1.0 - drop_rate, rand(seed));\n\n vec2 random_pos = vec2(\n rand(seed + 1.3),\n rand(seed + 2.1));\n pos = mix(pos, random_pos, drop);\n\n // encode the new particle position back into RGBA\n gl_FragColor = vec4(\n fract(pos * 255.0),\n floor(pos * 255.0) / 255.0);\n }";
|
|
11
|
+
export declare const fullScreenVert = "\n precision mediump float;\n\n attribute vec2 a_pos;\n\n varying vec2 v_tex_pos;\n\n void main() {\n v_tex_pos = a_pos;\n gl_Position = vec4(1.0 - 2.0 * a_pos, 0.0, 1.0);\n gl_PointSize = 100.0;\n }";
|
|
12
|
+
export declare const fullScreenFrag = "\n precision mediump float;\n\n uniform sampler2D u_screen;\n uniform float u_opacity;\n varying vec2 v_tex_pos;\n\n void main() {\n vec4 color = texture2D(u_screen, 1.0 - v_tex_pos);\n\n // a hack to guarantee opacity fade out even with a value close to 1.0\n gl_FragColor = vec4(floor(255.0 * color * u_opacity) / 255.0);\n }";
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
/**
|
|
2
|
+
* drawProgram drawVert drawFrag
|
|
3
|
+
* screenProgram screenVert screenFrag
|
|
4
|
+
* updateProgram updateVert updateFrag
|
|
5
|
+
* fullScreenProgram fullScreenVert fullScreenFrag
|
|
6
|
+
*/
|
|
7
|
+
export var drawVert = "\n precision mediump float;\n\n attribute float a_index;\n\n uniform sampler2D u_particles;\n uniform float u_particles_res;\n\n varying vec2 v_particle_pos;\n\n void main() {\n vec4 color = texture2D(u_particles, vec2(\n fract(a_index / u_particles_res),\n floor(a_index / u_particles_res) / u_particles_res)\n );\n\n // decode current particle position from the pixel's RGBA value\n v_particle_pos = vec2( color.r / 255.0 + color.b, color.g / 255.0 + color.a);\n\n gl_PointSize = 1.0;\n gl_Position = vec4(2.0 * v_particle_pos.x - 1.0, 1.0 - 2.0 * v_particle_pos.y, 0, 1);\n }";
|
|
8
|
+
export var drawFrag = "\n precision mediump float;\n\n uniform sampler2D u_wind;\n uniform vec2 u_wind_min;\n uniform vec2 u_wind_max;\n uniform sampler2D u_color_ramp;\n\n varying vec2 v_particle_pos;\n\n void main() {\n vec2 velocity = mix(u_wind_min, u_wind_max, texture2D(u_wind, v_particle_pos).rg);\n float speed_t = length(velocity) / length(u_wind_max);\n\n // color ramp is encoded in a 16x16 texture\n vec2 ramp_pos = vec2( fract(16.0 * speed_t), floor(16.0 * speed_t) / 16.0);\n\n gl_FragColor = texture2D(u_color_ramp, ramp_pos);\n }";
|
|
9
|
+
export var updateVert = "\n precision mediump float;\n\n attribute vec2 a_pos;\n\n varying vec2 v_tex_pos;\n\n void main() {\n v_tex_pos = a_pos;\n gl_Position = vec4(1.0 - 2.0 * a_pos, 0, 1);\n // framebuffer \u59CB\u7EC8\u7528\u94FA\u6EE1\u5C4F\u5E55\u7684 texture\n }";
|
|
10
|
+
export var updateFrag = "\n precision highp float;\n\n uniform sampler2D u_particles;\n uniform sampler2D u_wind;\n uniform vec2 u_wind_res;\n uniform vec2 u_wind_min;\n uniform vec2 u_wind_max;\n uniform float u_rand_seed;\n uniform float u_speed_factor;\n uniform float u_drop_rate;\n uniform float u_drop_rate_bump;\n\n varying vec2 v_tex_pos;\n\n // pseudo-random generator\n const vec3 rand_constants = vec3(12.9898, 78.233, 4375.85453);\n float rand(const vec2 co) {\n float t = dot(rand_constants.xy, co);\n return fract(sin(t) * (rand_constants.z + t));\n }\n\n // wind speed lookup; use manual bilinear filtering based on 4 adjacent pixels for smooth interpolation\n vec2 lookup_wind(const vec2 uv) {\n // return texture2D(u_wind, uv).rg; // lower-res hardware filtering\n vec2 px = 1.0 / u_wind_res;\n vec2 vc = (floor(uv * u_wind_res)) * px;\n vec2 f = fract(uv * u_wind_res);\n vec2 tl = texture2D(u_wind, vc).rg;\n vec2 tr = texture2D(u_wind, vc + vec2(px.x, 0)).rg;\n vec2 bl = texture2D(u_wind, vc + vec2(0, px.y)).rg;\n vec2 br = texture2D(u_wind, vc + px).rg;\n return mix(mix(tl, tr, f.x), mix(bl, br, f.x), f.y);\n }\n\n void main() {\n vec4 color = texture2D(u_particles, v_tex_pos);\n vec2 pos = vec2(\n color.r / 255.0 + color.b,\n color.g / 255.0 + color.a); // decode particle position from pixel RGBA\n vec2 velocity = mix(u_wind_min, u_wind_max, lookup_wind(pos));\n float speed_t = length(velocity) / length(u_wind_max);\n\n // take EPSG:4236 distortion into account for calculating where the particle moved\n float distortion = cos(radians(pos.y * 180.0 - 90.0));\n vec2 offset = vec2(velocity.x / distortion, -velocity.y) * 0.0001 * u_speed_factor;\n\n // update particle position, wrapping around the date line\n pos = fract(1.0 + pos + offset);\n\n // a random seed to use for the particle drop\n vec2 seed = (pos + v_tex_pos) * u_rand_seed;\n\n // drop rate is a chance a particle will restart at random position, to avoid degeneration\n float drop_rate = u_drop_rate + speed_t * u_drop_rate_bump;\n float drop = step(1.0 - drop_rate, rand(seed));\n\n vec2 random_pos = vec2(\n rand(seed + 1.3),\n rand(seed + 2.1));\n pos = mix(pos, random_pos, drop);\n\n // encode the new particle position back into RGBA\n gl_FragColor = vec4(\n fract(pos * 255.0),\n floor(pos * 255.0) / 255.0);\n }";
|
|
11
|
+
export var fullScreenVert = "\n precision mediump float;\n\n attribute vec2 a_pos;\n\n varying vec2 v_tex_pos;\n\n void main() {\n v_tex_pos = a_pos;\n gl_Position = vec4(1.0 - 2.0 * a_pos, 0.0, 1.0);\n gl_PointSize = 100.0;\n }";
|
|
12
|
+
export var fullScreenFrag = "\n precision mediump float;\n\n uniform sampler2D u_screen;\n uniform float u_opacity;\n varying vec2 v_tex_pos;\n\n void main() {\n vec4 color = texture2D(u_screen, 1.0 - v_tex_pos);\n\n // a hack to guarantee opacity fade out even with a value close to 1.0\n gl_FragColor = vec4(floor(255.0 * color * u_opacity) / 255.0);\n }";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
precision highp float;
|
|
2
|
+
uniform mat4 u_ModelMatrix;
|
|
3
|
+
uniform mat4 u_Mvp;
|
|
4
|
+
attribute vec3 a_Position;
|
|
5
|
+
attribute vec2 a_Uv;
|
|
6
|
+
varying vec2 v_texCoord;
|
|
7
|
+
#pragma include "projection"
|
|
8
|
+
void main() {
|
|
9
|
+
v_texCoord = a_Uv;
|
|
10
|
+
vec4 project_pos = project_position(vec4(a_Position, 1.0));
|
|
11
|
+
// gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));
|
|
12
|
+
if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x
|
|
13
|
+
gl_Position = u_Mvp * (vec4(project_pos.xy,0., 1.0));
|
|
14
|
+
} else {
|
|
15
|
+
gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));
|
|
16
|
+
}
|
|
17
|
+
}
|