@antv/l7-layers 2.9.19 → 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.
Files changed (710) hide show
  1. package/es/Geometry/index.js +4 -5
  2. package/es/Geometry/models/billboard.js +23 -9
  3. package/es/Geometry/models/index.js +4 -5
  4. package/es/Geometry/models/plane.js +25 -13
  5. package/es/Geometry/models/sprite.js +11 -21
  6. package/es/Geometry/shaders/billboard_frag.glsl +13 -0
  7. package/es/Geometry/shaders/billboard_vert.glsl +50 -0
  8. package/es/Geometry/shaders/plane_frag.glsl +22 -0
  9. package/es/Geometry/shaders/plane_vert.glsl +53 -0
  10. package/es/Geometry/shaders/sprite_frag.glsl +21 -0
  11. package/es/Geometry/shaders/sprite_vert.glsl +28 -0
  12. package/es/canvas/index.js +4 -5
  13. package/es/canvas/models/canvas.js +6 -12
  14. package/es/canvas/models/index.js +2 -3
  15. package/es/citybuliding/building.js +4 -5
  16. package/es/citybuliding/models/build.js +19 -22
  17. package/es/citybuliding/shaders/build_frag.glsl +117 -0
  18. package/es/citybuliding/shaders/build_vert.glsl +54 -0
  19. package/es/core/BaseLayer.js +205 -157
  20. package/es/core/BaseModel.js +135 -76
  21. package/es/core/interface.d.ts +11 -1
  22. package/es/core/interface.js +15 -2
  23. package/es/core/schema.js +4 -2
  24. package/es/core/shape/Path.js +8 -3
  25. package/es/core/shape/extrude.js +9 -4
  26. package/es/core/triangulation.d.ts +1 -0
  27. package/es/core/triangulation.js +123 -24
  28. package/es/earth/index.js +11 -7
  29. package/es/earth/models/atmosphere.js +15 -7
  30. package/es/earth/models/base.js +19 -7
  31. package/es/earth/models/bloomsphere.js +15 -7
  32. package/es/earth/shaders/atmosphere_frag.glsl +17 -0
  33. package/es/earth/shaders/atmosphere_vert.glsl +26 -0
  34. package/es/earth/shaders/base_frag.glsl +13 -0
  35. package/es/earth/shaders/base_vert.glsl +52 -0
  36. package/es/earth/shaders/bloomsphere_frag.glsl +15 -0
  37. package/es/earth/shaders/bloomsphere_vert.glsl +20 -0
  38. package/es/earth/utils.js +28 -5
  39. package/es/heatmap/index.js +8 -7
  40. package/es/heatmap/models/grid.js +11 -5
  41. package/es/heatmap/models/grid3d.js +18 -7
  42. package/es/heatmap/models/heatmap.js +45 -44
  43. package/es/heatmap/models/hexagon.js +14 -6
  44. package/es/heatmap/models/index.js +5 -6
  45. package/es/heatmap/shaders/grid_vert.glsl +42 -0
  46. package/es/heatmap/shaders/heatmap_3d_frag.glsl +14 -0
  47. package/es/heatmap/shaders/heatmap_3d_vert.glsl +46 -0
  48. package/es/heatmap/shaders/heatmap_frag.glsl +47 -0
  49. package/es/heatmap/shaders/heatmap_framebuffer_frag.glsl +10 -0
  50. package/es/heatmap/shaders/heatmap_framebuffer_vert.glsl +35 -0
  51. package/es/heatmap/shaders/heatmap_vert.glsl +10 -0
  52. package/es/heatmap/shaders/hexagon_3d_frag.glsl +0 -0
  53. package/es/heatmap/shaders/hexagon_3d_vert.glsl +64 -0
  54. package/es/heatmap/shaders/hexagon_frag.glsl +12 -0
  55. package/es/heatmap/shaders/hexagon_vert.glsl +41 -0
  56. package/es/heatmap/triangulation.js +2 -2
  57. package/es/image/index.js +4 -5
  58. package/es/image/models/dataImage.js +21 -31
  59. package/es/image/models/image.js +19 -25
  60. package/es/image/models/index.js +3 -4
  61. package/es/image/shaders/dataImage_frag.glsl +38 -0
  62. package/es/image/shaders/image_frag.glsl +9 -0
  63. package/es/image/shaders/image_vert.glsl +17 -0
  64. package/es/index.d.ts +2 -2
  65. package/es/index.js +92 -30
  66. package/es/line/index.js +4 -5
  67. package/es/line/models/arc.js +38 -15
  68. package/es/line/models/arc_3d.js +33 -14
  69. package/es/line/models/earthArc_3d.js +33 -14
  70. package/es/line/models/great_circle.js +25 -13
  71. package/es/line/models/half.js +33 -12
  72. package/es/line/models/index.js +12 -13
  73. package/es/line/models/line.js +57 -17
  74. package/es/line/models/linearline.js +32 -14
  75. package/es/line/models/simpleLine.js +26 -11
  76. package/es/line/models/tile.js +28 -10
  77. package/es/line/models/wall.js +30 -13
  78. package/es/line/shaders/arc_chunks.vert.glsl +21 -0
  79. package/es/line/shaders/dash/arc_dash_frag.glsl +28 -0
  80. package/es/line/shaders/dash/arc_dash_vert.glsl +148 -0
  81. package/es/line/shaders/dash/line_dash_frag.glsl +31 -0
  82. package/es/line/shaders/dash/line_dash_vert.glsl +93 -0
  83. package/es/line/shaders/half/line_half_frag.glsl +53 -0
  84. package/es/line/shaders/half/line_half_vert.glsl +169 -0
  85. package/es/line/shaders/line_arc2d_vert.glsl +114 -0
  86. package/es/line/shaders/line_arc_3d_frag.glsl +103 -0
  87. package/es/line/shaders/line_arc_3d_vert.glsl +207 -0
  88. package/es/line/shaders/line_arc_frag.glsl +89 -0
  89. package/es/line/shaders/line_arc_great_circle_frag.glsl +101 -0
  90. package/es/line/shaders/line_arc_great_circle_vert.glsl +215 -0
  91. package/es/line/shaders/line_arc_vert.glsl +174 -0
  92. package/es/line/shaders/line_bezier_vert.glsl +85 -0
  93. package/es/line/shaders/line_frag.glsl +100 -0
  94. package/es/line/shaders/line_vert.glsl +192 -0
  95. package/es/line/shaders/linear/arc3d_linear_frag.glsl +47 -0
  96. package/es/line/shaders/linear/arc3d_linear_vert.glsl +207 -0
  97. package/es/line/shaders/linear/arc_linear_frag.glsl +38 -0
  98. package/es/line/shaders/linear/arc_linear_vert.glsl +138 -0
  99. package/es/line/shaders/linear/line_linear_frag.glsl +27 -0
  100. package/es/line/shaders/linearLine/line_linear_frag.glsl +20 -0
  101. package/es/line/shaders/linearLine/line_linear_vert.glsl +112 -0
  102. package/es/line/shaders/simple/simpleline_frag.glsl +10 -0
  103. package/es/line/shaders/simple/simpleline_linear_frag.glsl +11 -0
  104. package/es/line/shaders/simple/simpleline_vert.glsl +78 -0
  105. package/es/line/shaders/tile/line_tile_frag.glsl +79 -0
  106. package/es/line/shaders/tile/line_tile_vert.glsl +210 -0
  107. package/es/line/shaders/wall_frag.glsl +93 -0
  108. package/es/line/shaders/wall_vert.glsl +111 -0
  109. package/es/mask/index.js +4 -5
  110. package/es/mask/models/fill.js +11 -8
  111. package/es/mask/models/index.js +2 -3
  112. package/es/mask/shaders/mask_frag.glsl +7 -0
  113. package/es/mask/shaders/mask_vert.glsl +22 -0
  114. package/es/plugins/DataMappingPlugin.js +71 -34
  115. package/es/plugins/DataSourcePlugin.js +12 -10
  116. package/es/plugins/FeatureScalePlugin.js +44 -24
  117. package/es/plugins/LayerAnimateStylePlugin.js +6 -7
  118. package/es/plugins/LayerModelPlugin.js +16 -7
  119. package/es/plugins/LayerStylePlugin.js +7 -3
  120. package/es/plugins/LightingPlugin.js +21 -13
  121. package/es/plugins/MultiPassRendererPlugin.js +21 -8
  122. package/es/plugins/PixelPickingPlugin.js +33 -11
  123. package/es/plugins/RegisterStyleAttributePlugin.js +10 -3
  124. package/es/plugins/ShaderUniformPlugin.js +24 -10
  125. package/es/plugins/UpdateModelPlugin.js +7 -3
  126. package/es/plugins/UpdateStyleAttributePlugin.js +20 -7
  127. package/es/point/index.js +12 -6
  128. package/es/point/models/earthExtrude.js +30 -12
  129. package/es/point/models/earthFill.js +25 -13
  130. package/es/point/models/extrude.js +30 -12
  131. package/es/point/models/fill.js +50 -15
  132. package/es/point/models/fillmage.js +46 -17
  133. package/es/point/models/image.js +20 -12
  134. package/es/point/models/index.js +14 -14
  135. package/es/point/models/normal.js +15 -7
  136. package/es/point/models/radar.js +33 -13
  137. package/es/point/models/simplePoint.js +17 -9
  138. package/es/point/models/text.js +77 -30
  139. package/es/point/models/tile.js +33 -12
  140. package/es/point/shaders/animate/wave_frag.glsl +65 -0
  141. package/es/point/shaders/earth/extrude_frag.glsl +44 -0
  142. package/es/point/shaders/earth/extrude_vert.glsl +140 -0
  143. package/es/point/shaders/earth/fill_frag.glsl +86 -0
  144. package/es/point/shaders/earth/fill_vert.glsl +126 -0
  145. package/es/point/shaders/extrude/extrude_frag.glsl +44 -0
  146. package/es/point/shaders/extrude/extrude_vert.glsl +121 -0
  147. package/es/point/shaders/fill_frag.glsl +84 -0
  148. package/es/point/shaders/fill_vert.glsl +182 -0
  149. package/es/point/shaders/image/fillImage_frag.glsl +20 -0
  150. package/es/point/shaders/image/fillImage_vert.glsl +108 -0
  151. package/es/point/shaders/image_frag.glsl +39 -0
  152. package/es/point/shaders/image_vert.glsl +81 -0
  153. package/es/point/shaders/normal_frag.glsl +15 -0
  154. package/es/point/shaders/normal_vert.glsl +79 -0
  155. package/es/point/shaders/radar/radar_frag.glsl +64 -0
  156. package/es/point/shaders/radar/radar_vert.glsl +120 -0
  157. package/es/point/shaders/simplePoint_frag.glsl +53 -0
  158. package/es/point/shaders/simplePoint_vert.glsl +79 -0
  159. package/es/point/shaders/text_frag.glsl +48 -0
  160. package/es/point/shaders/text_vert.glsl +131 -0
  161. package/es/point/shaders/tile/fill_tile_frag.glsl +83 -0
  162. package/es/point/shaders/tile/fill_tile_vert.glsl +181 -0
  163. package/es/point/shape/extrude.js +8 -3
  164. package/es/polygon/index.js +6 -5
  165. package/es/polygon/models/extrude.js +40 -31
  166. package/es/polygon/models/fill.js +19 -8
  167. package/es/polygon/models/index.js +14 -14
  168. package/es/polygon/models/ocean.js +25 -33
  169. package/es/polygon/models/tile.js +13 -7
  170. package/es/polygon/models/water.js +21 -25
  171. package/es/polygon/shaders/extrude/polygon_extrude_frag.glsl +44 -0
  172. package/es/polygon/shaders/extrude/polygon_extrude_picklight_frag.glsl +44 -0
  173. package/es/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +85 -0
  174. package/es/polygon/shaders/extrude/polygon_extrude_vert.glsl +90 -0
  175. package/es/polygon/shaders/extrude/polygon_extrudetex_frag.glsl +48 -0
  176. package/es/polygon/shaders/extrude/polygon_extrudetex_vert.glsl +93 -0
  177. package/es/polygon/shaders/polygon_frag.glsl +12 -0
  178. package/es/polygon/shaders/polygon_linear_frag.glsl +22 -0
  179. package/es/polygon/shaders/polygon_linear_vert.glsl +74 -0
  180. package/es/polygon/shaders/polygon_vert.glsl +66 -0
  181. package/es/polygon/shaders/tile/polygon_tile_frag.glsl +12 -0
  182. package/es/polygon/shaders/tile/polygon_tile_vert.glsl +82 -0
  183. package/es/polygon/shaders/water/polygon_ocean_frag.glsl +248 -0
  184. package/es/polygon/shaders/water/polygon_ocean_vert.glsl +52 -0
  185. package/es/polygon/shaders/water/polygon_water_frag.glsl +73 -0
  186. package/es/polygon/shaders/water/polygon_water_vert.glsl +55 -0
  187. package/es/raster/buffers/triangulation.js +2 -2
  188. package/es/raster/index.js +7 -6
  189. package/es/raster/models/index.js +3 -4
  190. package/es/raster/models/raster.js +15 -25
  191. package/es/raster/raster.js +9 -13
  192. package/es/raster/shaders/raster_2d_frag.glsl +28 -0
  193. package/es/raster/shaders/raster_2d_vert.glsl +18 -0
  194. package/es/raster/shaders/raster_frag.glsl +9 -0
  195. package/es/raster/shaders/raster_vert.glsl +44 -0
  196. package/es/tile/interface.js +1 -2
  197. package/es/tile/manager/tileConfigManager.js +6 -8
  198. package/es/tile/manager/tileLayerManager.js +19 -30
  199. package/es/tile/manager/tilePickerManager.js +14 -14
  200. package/es/tile/models/tileModel.js +6 -6
  201. package/es/tile/tileFactory/base.js +26 -32
  202. package/es/tile/tileFactory/index.js +6 -7
  203. package/es/tile/tileFactory/line.js +3 -9
  204. package/es/tile/tileFactory/point.js +3 -9
  205. package/es/tile/tileFactory/polygon.js +3 -9
  206. package/es/tile/tileFactory/raster.js +4 -10
  207. package/es/tile/tileFactory/rasterData.js +5 -11
  208. package/es/tile/tileFactory/rasterDataLayer.js +4 -5
  209. package/es/tile/tileFactory/vectorLayer.js +8 -9
  210. package/es/tile/tileLayer/baseTileLayer.js +67 -39
  211. package/es/tile/tmsTileLayer.js +5 -4
  212. package/es/tile/utils.js +5 -3
  213. package/es/utils/blend.js +1 -2
  214. package/es/utils/collision-index.js +36 -21
  215. package/es/utils/dataMappingStyle.js +71 -15
  216. package/es/utils/extrude_polyline.d.ts +15 -0
  217. package/es/utils/extrude_polyline.js +225 -51
  218. package/es/utils/grid-index.js +7 -21
  219. package/es/utils/layerData.js +41 -17
  220. package/es/utils/multiPassRender.js +21 -5
  221. package/es/utils/polylineNormal.js +40 -20
  222. package/es/utils/simpleLine.js +4 -6
  223. package/es/utils/symbol-layout.js +49 -10
  224. package/es/utils/updateShape.js +6 -3
  225. package/es/wind/index.js +5 -6
  226. package/es/wind/models/index.js +2 -3
  227. package/es/wind/models/utils.js +50 -26
  228. package/es/wind/models/wind.js +15 -18
  229. package/es/wind/models/windRender.js +89 -78
  230. package/es/wind/models/windShader.d.ts +6 -6
  231. package/es/wind/models/windShader.js +12 -7
  232. package/es/wind/shaders/wind_frag.glsl +9 -0
  233. package/es/wind/shaders/wind_vert.glsl +17 -0
  234. package/lib/Geometry/index.js +77 -115
  235. package/lib/Geometry/models/billboard.js +181 -218
  236. package/lib/Geometry/models/index.js +34 -19
  237. package/lib/Geometry/models/plane.js +278 -394
  238. package/lib/Geometry/models/sprite.js +189 -294
  239. package/lib/Geometry/shaders/billboard_frag.glsl +13 -0
  240. package/lib/Geometry/shaders/billboard_vert.glsl +50 -0
  241. package/lib/Geometry/shaders/plane_frag.glsl +22 -0
  242. package/lib/Geometry/shaders/plane_vert.glsl +53 -0
  243. package/lib/Geometry/shaders/sprite_frag.glsl +21 -0
  244. package/lib/Geometry/shaders/sprite_vert.glsl +28 -0
  245. package/lib/canvas/index.js +66 -102
  246. package/lib/canvas/models/canvas.js +140 -210
  247. package/lib/canvas/models/index.js +30 -13
  248. package/lib/citybuliding/building.js +63 -99
  249. package/lib/citybuliding/models/build.js +146 -196
  250. package/lib/citybuliding/shaders/build_frag.glsl +117 -0
  251. package/lib/citybuliding/shaders/build_vert.glsl +54 -0
  252. package/lib/core/BaseLayer.js +807 -1245
  253. package/lib/core/BaseModel.js +275 -375
  254. package/lib/core/interface.js +52 -20
  255. package/lib/core/schema.js +39 -18
  256. package/lib/core/shape/Path.js +78 -60
  257. package/lib/core/shape/extrude.js +90 -127
  258. package/lib/core/triangulation.js +208 -295
  259. package/lib/earth/index.js +62 -96
  260. package/lib/earth/models/atmosphere.js +112 -139
  261. package/lib/earth/models/base.js +150 -198
  262. package/lib/earth/models/bloomsphere.js +112 -139
  263. package/lib/earth/shaders/atmosphere_frag.glsl +17 -0
  264. package/lib/earth/shaders/atmosphere_vert.glsl +26 -0
  265. package/lib/earth/shaders/base_frag.glsl +13 -0
  266. package/lib/earth/shaders/base_vert.glsl +52 -0
  267. package/lib/earth/shaders/bloomsphere_frag.glsl +15 -0
  268. package/lib/earth/shaders/bloomsphere_vert.glsl +20 -0
  269. package/lib/earth/utils.js +89 -85
  270. package/lib/heatmap/index.js +92 -148
  271. package/lib/heatmap/models/grid.js +91 -113
  272. package/lib/heatmap/models/grid3d.js +123 -145
  273. package/lib/heatmap/models/heatmap.js +338 -470
  274. package/lib/heatmap/models/hexagon.js +92 -114
  275. package/lib/heatmap/models/index.js +37 -23
  276. package/lib/heatmap/shaders/grid_vert.glsl +42 -0
  277. package/lib/heatmap/shaders/heatmap_3d_frag.glsl +14 -0
  278. package/lib/heatmap/shaders/heatmap_3d_vert.glsl +46 -0
  279. package/lib/heatmap/shaders/heatmap_frag.glsl +47 -0
  280. package/lib/heatmap/shaders/heatmap_framebuffer_frag.glsl +10 -0
  281. package/lib/heatmap/shaders/heatmap_framebuffer_vert.glsl +35 -0
  282. package/lib/heatmap/shaders/heatmap_vert.glsl +10 -0
  283. package/lib/heatmap/shaders/hexagon_3d_frag.glsl +0 -0
  284. package/lib/heatmap/shaders/hexagon_3d_vert.glsl +64 -0
  285. package/lib/heatmap/shaders/hexagon_frag.glsl +12 -0
  286. package/lib/heatmap/shaders/hexagon_vert.glsl +41 -0
  287. package/lib/heatmap/triangulation.js +46 -30
  288. package/lib/image/index.js +74 -112
  289. package/lib/image/models/dataImage.js +173 -241
  290. package/lib/image/models/image.js +123 -177
  291. package/lib/image/models/index.js +32 -16
  292. package/lib/image/shaders/dataImage_frag.glsl +38 -0
  293. package/lib/image/shaders/image_frag.glsl +9 -0
  294. package/lib/image/shaders/image_vert.glsl +17 -0
  295. package/lib/index.js +96 -193
  296. package/lib/line/index.js +83 -128
  297. package/lib/line/models/arc.js +237 -328
  298. package/lib/line/models/arc_3d.js +228 -314
  299. package/lib/line/models/earthArc_3d.js +228 -316
  300. package/lib/line/models/great_circle.js +200 -279
  301. package/lib/line/models/half.js +201 -266
  302. package/lib/line/models/index.js +50 -43
  303. package/lib/line/models/line.js +299 -386
  304. package/lib/line/models/linearline.js +203 -258
  305. package/lib/line/models/simpleLine.js +175 -225
  306. package/lib/line/models/tile.js +237 -330
  307. package/lib/line/models/wall.js +235 -310
  308. package/lib/line/shaders/arc_chunks.vert.glsl +21 -0
  309. package/lib/line/shaders/dash/arc_dash_frag.glsl +28 -0
  310. package/lib/line/shaders/dash/arc_dash_vert.glsl +148 -0
  311. package/lib/line/shaders/dash/line_dash_frag.glsl +31 -0
  312. package/lib/line/shaders/dash/line_dash_vert.glsl +93 -0
  313. package/lib/line/shaders/half/line_half_frag.glsl +53 -0
  314. package/lib/line/shaders/half/line_half_vert.glsl +169 -0
  315. package/lib/line/shaders/line_arc2d_vert.glsl +114 -0
  316. package/lib/line/shaders/line_arc_3d_frag.glsl +103 -0
  317. package/lib/line/shaders/line_arc_3d_vert.glsl +207 -0
  318. package/lib/line/shaders/line_arc_frag.glsl +89 -0
  319. package/lib/line/shaders/line_arc_great_circle_frag.glsl +101 -0
  320. package/lib/line/shaders/line_arc_great_circle_vert.glsl +215 -0
  321. package/lib/line/shaders/line_arc_vert.glsl +174 -0
  322. package/lib/line/shaders/line_bezier_vert.glsl +85 -0
  323. package/lib/line/shaders/line_frag.glsl +100 -0
  324. package/lib/line/shaders/line_vert.glsl +192 -0
  325. package/lib/line/shaders/linear/arc3d_linear_frag.glsl +47 -0
  326. package/lib/line/shaders/linear/arc3d_linear_vert.glsl +207 -0
  327. package/lib/line/shaders/linear/arc_linear_frag.glsl +38 -0
  328. package/lib/line/shaders/linear/arc_linear_vert.glsl +138 -0
  329. package/lib/line/shaders/linear/line_linear_frag.glsl +27 -0
  330. package/lib/line/shaders/linearLine/line_linear_frag.glsl +20 -0
  331. package/lib/line/shaders/linearLine/line_linear_vert.glsl +112 -0
  332. package/lib/line/shaders/simple/simpleline_frag.glsl +10 -0
  333. package/lib/line/shaders/simple/simpleline_linear_frag.glsl +11 -0
  334. package/lib/line/shaders/simple/simpleline_vert.glsl +78 -0
  335. package/lib/line/shaders/tile/line_tile_frag.glsl +79 -0
  336. package/lib/line/shaders/tile/line_tile_vert.glsl +210 -0
  337. package/lib/line/shaders/wall_frag.glsl +93 -0
  338. package/lib/line/shaders/wall_vert.glsl +111 -0
  339. package/lib/mask/index.js +59 -93
  340. package/lib/mask/models/fill.js +82 -132
  341. package/lib/mask/models/index.js +30 -13
  342. package/lib/mask/shaders/mask_frag.glsl +7 -0
  343. package/lib/mask/shaders/mask_vert.glsl +22 -0
  344. package/lib/plugins/DataMappingPlugin.js +222 -304
  345. package/lib/plugins/DataSourcePlugin.js +87 -100
  346. package/lib/plugins/FeatureScalePlugin.js +239 -310
  347. package/lib/plugins/LayerAnimateStylePlugin.js +55 -61
  348. package/lib/plugins/LayerModelPlugin.js +72 -70
  349. package/lib/plugins/LayerStylePlugin.js +51 -44
  350. package/lib/plugins/LightingPlugin.js +68 -72
  351. package/lib/plugins/MultiPassRendererPlugin.js +65 -77
  352. package/lib/plugins/PixelPickingPlugin.js +109 -128
  353. package/lib/plugins/RegisterStyleAttributePlugin.js +110 -103
  354. package/lib/plugins/ShaderUniformPlugin.js +98 -103
  355. package/lib/plugins/UpdateModelPlugin.js +47 -36
  356. package/lib/plugins/UpdateStyleAttributePlugin.js +75 -80
  357. package/lib/point/index.js +147 -216
  358. package/lib/point/models/earthExtrude.js +201 -262
  359. package/lib/point/models/earthFill.js +202 -276
  360. package/lib/point/models/extrude.js +203 -282
  361. package/lib/point/models/fill.js +273 -369
  362. package/lib/point/models/fillmage.js +250 -327
  363. package/lib/point/models/image.js +163 -226
  364. package/lib/point/models/index.js +52 -46
  365. package/lib/point/models/normal.js +134 -176
  366. package/lib/point/models/radar.js +212 -286
  367. package/lib/point/models/simplePoint.js +142 -187
  368. package/lib/point/models/text.js +385 -559
  369. package/lib/point/models/tile.js +223 -294
  370. package/lib/point/shaders/animate/wave_frag.glsl +65 -0
  371. package/lib/point/shaders/earth/extrude_frag.glsl +44 -0
  372. package/lib/point/shaders/earth/extrude_vert.glsl +140 -0
  373. package/lib/point/shaders/earth/fill_frag.glsl +86 -0
  374. package/lib/point/shaders/earth/fill_vert.glsl +126 -0
  375. package/lib/point/shaders/extrude/extrude_frag.glsl +44 -0
  376. package/lib/point/shaders/extrude/extrude_vert.glsl +121 -0
  377. package/lib/point/shaders/fill_frag.glsl +84 -0
  378. package/lib/point/shaders/fill_vert.glsl +182 -0
  379. package/lib/point/shaders/image/fillImage_frag.glsl +20 -0
  380. package/lib/point/shaders/image/fillImage_vert.glsl +108 -0
  381. package/lib/point/shaders/image_frag.glsl +39 -0
  382. package/lib/point/shaders/image_vert.glsl +81 -0
  383. package/lib/point/shaders/normal_frag.glsl +15 -0
  384. package/lib/point/shaders/normal_vert.glsl +79 -0
  385. package/lib/point/shaders/radar/radar_frag.glsl +64 -0
  386. package/lib/point/shaders/radar/radar_vert.glsl +120 -0
  387. package/lib/point/shaders/simplePoint_frag.glsl +53 -0
  388. package/lib/point/shaders/simplePoint_vert.glsl +79 -0
  389. package/lib/point/shaders/text_frag.glsl +48 -0
  390. package/lib/point/shaders/text_vert.glsl +131 -0
  391. package/lib/point/shaders/tile/fill_tile_frag.glsl +83 -0
  392. package/lib/point/shaders/tile/fill_tile_vert.glsl +181 -0
  393. package/lib/point/shape/extrude.js +51 -51
  394. package/lib/polygon/index.js +100 -149
  395. package/lib/polygon/models/extrude.js +222 -303
  396. package/lib/polygon/models/fill.js +153 -205
  397. package/lib/polygon/models/index.js +52 -46
  398. package/lib/polygon/models/ocean.js +172 -251
  399. package/lib/polygon/models/tile.js +100 -139
  400. package/lib/polygon/models/water.js +152 -227
  401. package/lib/polygon/shaders/extrude/polygon_extrude_frag.glsl +44 -0
  402. package/lib/polygon/shaders/extrude/polygon_extrude_picklight_frag.glsl +44 -0
  403. package/lib/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +85 -0
  404. package/lib/polygon/shaders/extrude/polygon_extrude_vert.glsl +90 -0
  405. package/lib/polygon/shaders/extrude/polygon_extrudetex_frag.glsl +48 -0
  406. package/lib/polygon/shaders/extrude/polygon_extrudetex_vert.glsl +93 -0
  407. package/lib/polygon/shaders/polygon_frag.glsl +12 -0
  408. package/lib/polygon/shaders/polygon_linear_frag.glsl +22 -0
  409. package/lib/polygon/shaders/polygon_linear_vert.glsl +74 -0
  410. package/lib/polygon/shaders/polygon_vert.glsl +66 -0
  411. package/lib/polygon/shaders/tile/polygon_tile_frag.glsl +12 -0
  412. package/lib/polygon/shaders/tile/polygon_tile_vert.glsl +82 -0
  413. package/lib/polygon/shaders/water/polygon_ocean_frag.glsl +248 -0
  414. package/lib/polygon/shaders/water/polygon_ocean_vert.glsl +52 -0
  415. package/lib/polygon/shaders/water/polygon_water_frag.glsl +73 -0
  416. package/lib/polygon/shaders/water/polygon_water_vert.glsl +55 -0
  417. package/lib/raster/buffers/triangulation.js +39 -26
  418. package/lib/raster/index.js +73 -111
  419. package/lib/raster/models/index.js +33 -17
  420. package/lib/raster/models/raster.js +134 -187
  421. package/lib/raster/raster.js +132 -189
  422. package/lib/raster/shaders/raster_2d_frag.glsl +28 -0
  423. package/lib/raster/shaders/raster_2d_vert.glsl +18 -0
  424. package/lib/raster/shaders/raster_frag.glsl +9 -0
  425. package/lib/raster/shaders/raster_vert.glsl +44 -0
  426. package/lib/tile/interface.js +17 -2
  427. package/lib/tile/manager/tileConfigManager.js +86 -126
  428. package/lib/tile/manager/tileLayerManager.js +227 -312
  429. package/lib/tile/manager/tilePickerManager.js +123 -187
  430. package/lib/tile/models/tileModel.js +51 -70
  431. package/lib/tile/tileFactory/base.js +292 -403
  432. package/lib/tile/tileFactory/index.js +48 -51
  433. package/lib/tile/tileFactory/line.js +50 -71
  434. package/lib/tile/tileFactory/point.js +50 -71
  435. package/lib/tile/tileFactory/polygon.js +50 -71
  436. package/lib/tile/tileFactory/raster.js +54 -72
  437. package/lib/tile/tileFactory/rasterData.js +76 -94
  438. package/lib/tile/tileFactory/rasterDataLayer.js +62 -98
  439. package/lib/tile/tileFactory/vectorLayer.js +95 -148
  440. package/lib/tile/tileLayer/baseTileLayer.js +220 -380
  441. package/lib/tile/tmsTileLayer.js +67 -109
  442. package/lib/tile/utils.js +86 -101
  443. package/lib/utils/blend.js +79 -60
  444. package/lib/utils/collision-index.js +63 -83
  445. package/lib/utils/dataMappingStyle.js +59 -56
  446. package/lib/utils/extrude_polyline.js +405 -428
  447. package/lib/utils/grid-index.js +111 -168
  448. package/lib/utils/layerData.js +88 -95
  449. package/lib/utils/multiPassRender.js +38 -31
  450. package/lib/utils/polylineNormal.js +86 -118
  451. package/lib/utils/simpleLine.js +85 -101
  452. package/lib/utils/symbol-layout.js +109 -173
  453. package/lib/utils/updateShape.js +40 -11
  454. package/lib/wind/index.js +71 -110
  455. package/lib/wind/models/index.js +30 -13
  456. package/lib/wind/models/utils.js +89 -104
  457. package/lib/wind/models/wind.js +224 -332
  458. package/lib/wind/models/windRender.js +215 -293
  459. package/lib/wind/models/windShader.js +181 -17
  460. package/lib/wind/shaders/wind_frag.glsl +9 -0
  461. package/lib/wind/shaders/wind_vert.glsl +17 -0
  462. package/package.json +11 -9
  463. package/es/Geometry/index.js.map +0 -1
  464. package/es/Geometry/models/billboard.js.map +0 -1
  465. package/es/Geometry/models/index.js.map +0 -1
  466. package/es/Geometry/models/plane.js.map +0 -1
  467. package/es/Geometry/models/sprite.js.map +0 -1
  468. package/es/canvas/index.js.map +0 -1
  469. package/es/canvas/models/canvas.js.map +0 -1
  470. package/es/canvas/models/index.js.map +0 -1
  471. package/es/citybuliding/building.js.map +0 -1
  472. package/es/citybuliding/models/build.js.map +0 -1
  473. package/es/core/BaseLayer.js.map +0 -1
  474. package/es/core/BaseModel.js.map +0 -1
  475. package/es/core/interface.js.map +0 -1
  476. package/es/core/schema.js.map +0 -1
  477. package/es/core/shape/Path.js.map +0 -1
  478. package/es/core/shape/extrude.js.map +0 -1
  479. package/es/core/triangulation.js.map +0 -1
  480. package/es/earth/index.js.map +0 -1
  481. package/es/earth/models/atmosphere.js.map +0 -1
  482. package/es/earth/models/base.js.map +0 -1
  483. package/es/earth/models/bloomsphere.js.map +0 -1
  484. package/es/earth/utils.js.map +0 -1
  485. package/es/glsl.d.js +0 -2
  486. package/es/glsl.d.js.map +0 -1
  487. package/es/heatmap/index.js.map +0 -1
  488. package/es/heatmap/models/grid.js.map +0 -1
  489. package/es/heatmap/models/grid3d.js.map +0 -1
  490. package/es/heatmap/models/heatmap.js.map +0 -1
  491. package/es/heatmap/models/hexagon.js.map +0 -1
  492. package/es/heatmap/models/index.js.map +0 -1
  493. package/es/heatmap/triangulation.js.map +0 -1
  494. package/es/image/index.js.map +0 -1
  495. package/es/image/models/dataImage.js.map +0 -1
  496. package/es/image/models/image.js.map +0 -1
  497. package/es/image/models/index.js.map +0 -1
  498. package/es/index.js.map +0 -1
  499. package/es/line/index.js.map +0 -1
  500. package/es/line/models/arc.js.map +0 -1
  501. package/es/line/models/arc_3d.js.map +0 -1
  502. package/es/line/models/earthArc_3d.js.map +0 -1
  503. package/es/line/models/great_circle.js.map +0 -1
  504. package/es/line/models/half.js.map +0 -1
  505. package/es/line/models/index.js.map +0 -1
  506. package/es/line/models/line.js.map +0 -1
  507. package/es/line/models/linearline.js.map +0 -1
  508. package/es/line/models/simpleLine.js.map +0 -1
  509. package/es/line/models/tile.js.map +0 -1
  510. package/es/line/models/wall.js.map +0 -1
  511. package/es/mask/index.js.map +0 -1
  512. package/es/mask/models/fill.js.map +0 -1
  513. package/es/mask/models/index.js.map +0 -1
  514. package/es/plugins/DataMappingPlugin.js.map +0 -1
  515. package/es/plugins/DataSourcePlugin.js.map +0 -1
  516. package/es/plugins/FeatureScalePlugin.js.map +0 -1
  517. package/es/plugins/LayerAnimateStylePlugin.js.map +0 -1
  518. package/es/plugins/LayerModelPlugin.js.map +0 -1
  519. package/es/plugins/LayerStylePlugin.js.map +0 -1
  520. package/es/plugins/LightingPlugin.js.map +0 -1
  521. package/es/plugins/MultiPassRendererPlugin.js.map +0 -1
  522. package/es/plugins/PixelPickingPlugin.js.map +0 -1
  523. package/es/plugins/RegisterStyleAttributePlugin.js.map +0 -1
  524. package/es/plugins/ShaderUniformPlugin.js.map +0 -1
  525. package/es/plugins/UpdateModelPlugin.js.map +0 -1
  526. package/es/plugins/UpdateStyleAttributePlugin.js.map +0 -1
  527. package/es/point/index.js.map +0 -1
  528. package/es/point/models/earthExtrude.js.map +0 -1
  529. package/es/point/models/earthFill.js.map +0 -1
  530. package/es/point/models/extrude.js.map +0 -1
  531. package/es/point/models/fill.js.map +0 -1
  532. package/es/point/models/fillmage.js.map +0 -1
  533. package/es/point/models/image.js.map +0 -1
  534. package/es/point/models/index.js.map +0 -1
  535. package/es/point/models/normal.js.map +0 -1
  536. package/es/point/models/radar.js.map +0 -1
  537. package/es/point/models/simplePoint.js.map +0 -1
  538. package/es/point/models/text.js.map +0 -1
  539. package/es/point/models/tile.js.map +0 -1
  540. package/es/point/shape/extrude.js.map +0 -1
  541. package/es/polygon/index.js.map +0 -1
  542. package/es/polygon/models/extrude.js.map +0 -1
  543. package/es/polygon/models/fill.js.map +0 -1
  544. package/es/polygon/models/index.js.map +0 -1
  545. package/es/polygon/models/ocean.js.map +0 -1
  546. package/es/polygon/models/tile.js.map +0 -1
  547. package/es/polygon/models/water.js.map +0 -1
  548. package/es/raster/buffers/triangulation.js.map +0 -1
  549. package/es/raster/index.js.map +0 -1
  550. package/es/raster/models/index.js.map +0 -1
  551. package/es/raster/models/raster.js.map +0 -1
  552. package/es/raster/raster.js.map +0 -1
  553. package/es/tile/interface.js.map +0 -1
  554. package/es/tile/manager/tileConfigManager.js.map +0 -1
  555. package/es/tile/manager/tileLayerManager.js.map +0 -1
  556. package/es/tile/manager/tilePickerManager.js.map +0 -1
  557. package/es/tile/models/tileModel.js.map +0 -1
  558. package/es/tile/tileFactory/base.js.map +0 -1
  559. package/es/tile/tileFactory/index.js.map +0 -1
  560. package/es/tile/tileFactory/line.js.map +0 -1
  561. package/es/tile/tileFactory/point.js.map +0 -1
  562. package/es/tile/tileFactory/polygon.js.map +0 -1
  563. package/es/tile/tileFactory/raster.js.map +0 -1
  564. package/es/tile/tileFactory/rasterData.js.map +0 -1
  565. package/es/tile/tileFactory/rasterDataLayer.js.map +0 -1
  566. package/es/tile/tileFactory/vectorLayer.js.map +0 -1
  567. package/es/tile/tileLayer/baseTileLayer.js.map +0 -1
  568. package/es/tile/tmsTileLayer.js.map +0 -1
  569. package/es/tile/utils.js.map +0 -1
  570. package/es/utils/blend.js.map +0 -1
  571. package/es/utils/collision-index.js.map +0 -1
  572. package/es/utils/dataMappingStyle.js.map +0 -1
  573. package/es/utils/extrude_polyline.js.map +0 -1
  574. package/es/utils/grid-index.js.map +0 -1
  575. package/es/utils/layerData.js.map +0 -1
  576. package/es/utils/multiPassRender.js.map +0 -1
  577. package/es/utils/polylineNormal.js.map +0 -1
  578. package/es/utils/simpleLine.js.map +0 -1
  579. package/es/utils/symbol-layout.js.map +0 -1
  580. package/es/utils/updateShape.js.map +0 -1
  581. package/es/wind/index.js.map +0 -1
  582. package/es/wind/models/index.js.map +0 -1
  583. package/es/wind/models/utils.js.map +0 -1
  584. package/es/wind/models/wind.js.map +0 -1
  585. package/es/wind/models/windRender.js.map +0 -1
  586. package/es/wind/models/windShader.js.map +0 -1
  587. package/lib/Geometry/index.js.map +0 -1
  588. package/lib/Geometry/models/billboard.js.map +0 -1
  589. package/lib/Geometry/models/index.js.map +0 -1
  590. package/lib/Geometry/models/plane.js.map +0 -1
  591. package/lib/Geometry/models/sprite.js.map +0 -1
  592. package/lib/canvas/index.js.map +0 -1
  593. package/lib/canvas/models/canvas.js.map +0 -1
  594. package/lib/canvas/models/index.js.map +0 -1
  595. package/lib/citybuliding/building.js.map +0 -1
  596. package/lib/citybuliding/models/build.js.map +0 -1
  597. package/lib/core/BaseLayer.js.map +0 -1
  598. package/lib/core/BaseModel.js.map +0 -1
  599. package/lib/core/interface.js.map +0 -1
  600. package/lib/core/schema.js.map +0 -1
  601. package/lib/core/shape/Path.js.map +0 -1
  602. package/lib/core/shape/extrude.js.map +0 -1
  603. package/lib/core/triangulation.js.map +0 -1
  604. package/lib/earth/index.js.map +0 -1
  605. package/lib/earth/models/atmosphere.js.map +0 -1
  606. package/lib/earth/models/base.js.map +0 -1
  607. package/lib/earth/models/bloomsphere.js.map +0 -1
  608. package/lib/earth/utils.js.map +0 -1
  609. package/lib/glsl.d.js +0 -2
  610. package/lib/glsl.d.js.map +0 -1
  611. package/lib/heatmap/index.js.map +0 -1
  612. package/lib/heatmap/models/grid.js.map +0 -1
  613. package/lib/heatmap/models/grid3d.js.map +0 -1
  614. package/lib/heatmap/models/heatmap.js.map +0 -1
  615. package/lib/heatmap/models/hexagon.js.map +0 -1
  616. package/lib/heatmap/models/index.js.map +0 -1
  617. package/lib/heatmap/triangulation.js.map +0 -1
  618. package/lib/image/index.js.map +0 -1
  619. package/lib/image/models/dataImage.js.map +0 -1
  620. package/lib/image/models/image.js.map +0 -1
  621. package/lib/image/models/index.js.map +0 -1
  622. package/lib/index.js.map +0 -1
  623. package/lib/line/index.js.map +0 -1
  624. package/lib/line/models/arc.js.map +0 -1
  625. package/lib/line/models/arc_3d.js.map +0 -1
  626. package/lib/line/models/earthArc_3d.js.map +0 -1
  627. package/lib/line/models/great_circle.js.map +0 -1
  628. package/lib/line/models/half.js.map +0 -1
  629. package/lib/line/models/index.js.map +0 -1
  630. package/lib/line/models/line.js.map +0 -1
  631. package/lib/line/models/linearline.js.map +0 -1
  632. package/lib/line/models/simpleLine.js.map +0 -1
  633. package/lib/line/models/tile.js.map +0 -1
  634. package/lib/line/models/wall.js.map +0 -1
  635. package/lib/mask/index.js.map +0 -1
  636. package/lib/mask/models/fill.js.map +0 -1
  637. package/lib/mask/models/index.js.map +0 -1
  638. package/lib/plugins/DataMappingPlugin.js.map +0 -1
  639. package/lib/plugins/DataSourcePlugin.js.map +0 -1
  640. package/lib/plugins/FeatureScalePlugin.js.map +0 -1
  641. package/lib/plugins/LayerAnimateStylePlugin.js.map +0 -1
  642. package/lib/plugins/LayerModelPlugin.js.map +0 -1
  643. package/lib/plugins/LayerStylePlugin.js.map +0 -1
  644. package/lib/plugins/LightingPlugin.js.map +0 -1
  645. package/lib/plugins/MultiPassRendererPlugin.js.map +0 -1
  646. package/lib/plugins/PixelPickingPlugin.js.map +0 -1
  647. package/lib/plugins/RegisterStyleAttributePlugin.js.map +0 -1
  648. package/lib/plugins/ShaderUniformPlugin.js.map +0 -1
  649. package/lib/plugins/UpdateModelPlugin.js.map +0 -1
  650. package/lib/plugins/UpdateStyleAttributePlugin.js.map +0 -1
  651. package/lib/point/index.js.map +0 -1
  652. package/lib/point/models/earthExtrude.js.map +0 -1
  653. package/lib/point/models/earthFill.js.map +0 -1
  654. package/lib/point/models/extrude.js.map +0 -1
  655. package/lib/point/models/fill.js.map +0 -1
  656. package/lib/point/models/fillmage.js.map +0 -1
  657. package/lib/point/models/image.js.map +0 -1
  658. package/lib/point/models/index.js.map +0 -1
  659. package/lib/point/models/normal.js.map +0 -1
  660. package/lib/point/models/radar.js.map +0 -1
  661. package/lib/point/models/simplePoint.js.map +0 -1
  662. package/lib/point/models/text.js.map +0 -1
  663. package/lib/point/models/tile.js.map +0 -1
  664. package/lib/point/shape/extrude.js.map +0 -1
  665. package/lib/polygon/index.js.map +0 -1
  666. package/lib/polygon/models/extrude.js.map +0 -1
  667. package/lib/polygon/models/fill.js.map +0 -1
  668. package/lib/polygon/models/index.js.map +0 -1
  669. package/lib/polygon/models/ocean.js.map +0 -1
  670. package/lib/polygon/models/tile.js.map +0 -1
  671. package/lib/polygon/models/water.js.map +0 -1
  672. package/lib/raster/buffers/triangulation.js.map +0 -1
  673. package/lib/raster/index.js.map +0 -1
  674. package/lib/raster/models/index.js.map +0 -1
  675. package/lib/raster/models/raster.js.map +0 -1
  676. package/lib/raster/raster.js.map +0 -1
  677. package/lib/tile/interface.js.map +0 -1
  678. package/lib/tile/manager/tileConfigManager.js.map +0 -1
  679. package/lib/tile/manager/tileLayerManager.js.map +0 -1
  680. package/lib/tile/manager/tilePickerManager.js.map +0 -1
  681. package/lib/tile/models/tileModel.js.map +0 -1
  682. package/lib/tile/tileFactory/base.js.map +0 -1
  683. package/lib/tile/tileFactory/index.js.map +0 -1
  684. package/lib/tile/tileFactory/line.js.map +0 -1
  685. package/lib/tile/tileFactory/point.js.map +0 -1
  686. package/lib/tile/tileFactory/polygon.js.map +0 -1
  687. package/lib/tile/tileFactory/raster.js.map +0 -1
  688. package/lib/tile/tileFactory/rasterData.js.map +0 -1
  689. package/lib/tile/tileFactory/rasterDataLayer.js.map +0 -1
  690. package/lib/tile/tileFactory/vectorLayer.js.map +0 -1
  691. package/lib/tile/tileLayer/baseTileLayer.js.map +0 -1
  692. package/lib/tile/tmsTileLayer.js.map +0 -1
  693. package/lib/tile/utils.js.map +0 -1
  694. package/lib/utils/blend.js.map +0 -1
  695. package/lib/utils/collision-index.js.map +0 -1
  696. package/lib/utils/dataMappingStyle.js.map +0 -1
  697. package/lib/utils/extrude_polyline.js.map +0 -1
  698. package/lib/utils/grid-index.js.map +0 -1
  699. package/lib/utils/layerData.js.map +0 -1
  700. package/lib/utils/multiPassRender.js.map +0 -1
  701. package/lib/utils/polylineNormal.js.map +0 -1
  702. package/lib/utils/simpleLine.js.map +0 -1
  703. package/lib/utils/symbol-layout.js.map +0 -1
  704. package/lib/utils/updateShape.js.map +0 -1
  705. package/lib/wind/index.js.map +0 -1
  706. package/lib/wind/models/index.js.map +0 -1
  707. package/lib/wind/models/utils.js.map +0 -1
  708. package/lib/wind/models/wind.js.map +0 -1
  709. package/lib/wind/models/windRender.js.map +0 -1
  710. package/lib/wind/models/windShader.js.map +0 -1
@@ -5,7 +5,6 @@ import _inherits from "@babel/runtime/helpers/inherits";
5
5
  import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
6
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
7
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
- import _isNumber from "lodash/isNumber";
9
8
 
10
9
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
11
10
 
@@ -13,19 +12,28 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
13
12
 
14
13
  import { AttributeType, gl } from '@antv/l7-core';
15
14
  import { getMask, rgb2arr } from '@antv/l7-utils';
16
- import BaseModel from '../../core/BaseModel';
17
- import { LineArcTriangulation } from '../../core/triangulation';
18
- import { EARTH_RADIUS } from '../../earth/utils';
15
+ import { isNumber } from 'lodash';
16
+ import BaseModel from "../../core/BaseModel";
17
+ import { LineArcTriangulation } from "../../core/triangulation";
18
+ import { EARTH_RADIUS } from "../../earth/utils"; // arc3d line layer
19
+
20
+ /* babel-plugin-inline-import '../shaders/line_arc_3d_frag.glsl' */
19
21
  var arc3d_line_frag = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n#define LineTexture 1.0\n\nuniform float u_opacity;\nuniform float u_textureBlend;\nuniform float u_blur : 0.9;\nuniform float u_line_type: 0.0;\n// varying vec2 v_normal;\nvarying vec4 v_dash_array;\nvarying vec4 v_color;\n\nuniform float u_line_texture: 0.0;\nuniform sampler2D u_texture;\nuniform vec2 u_textSize;\nvarying float v_segmentIndex;\nuniform float segmentNumber;\n\nvarying vec2 v_iconMapUV;\n\nuniform float u_time;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\n\nvarying mat4 styleMappingMat;\n\n#pragma include \"picking\"\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float animateSpeed = 0.0; // \u8FD0\u52A8\u901F\u5EA6\n float d_distance_ratio = styleMappingMat[3].g; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n gl_FragColor = v_color;\n\n gl_FragColor.a *= opacity;\n if(u_line_type == LineTypeDash) {\n float flag = 0.;\n float dashLength = mod(d_distance_ratio, v_dash_array.x + v_dash_array.y + v_dash_array.z + v_dash_array.w);\n if(dashLength < v_dash_array.x || (dashLength > (v_dash_array.x + v_dash_array.y) && dashLength < v_dash_array.x + v_dash_array.y + v_dash_array.z)) {\n flag = 1.;\n }\n gl_FragColor.a *=flag;\n }\n\n if(u_aimate.x == Animate && u_line_texture != LineTexture) {\n animateSpeed = u_time / u_aimate.y;\n float alpha =1.0 - fract( mod(1.0- d_distance_ratio, u_aimate.z)* (1.0/ u_aimate.z) + u_time / u_aimate.y);\n\n alpha = (alpha + u_aimate.w -1.0) / u_aimate.w;\n // alpha = smoothstep(0., 1., alpha);\n alpha = clamp(alpha, 0.0, 1.0);\n gl_FragColor.a *= alpha;\n\n // u_aimate \n // x enable\n // y duration\n // z interval\n // w trailLength\n }\n\n if(u_line_texture == LineTexture && u_line_type != LineTypeDash) { // while load texture\n // float arcRadio = smoothstep( 0.0, 1.0, (v_segmentIndex / segmentNumber));\n float arcRadio = v_segmentIndex / (segmentNumber - 1.0);\n float count = styleMappingMat[3].b; // // \u8D34\u56FE\u5728\u5F27\u7EBF\u4E0A\u91CD\u590D\u7684\u6570\u91CF\n\n float time = 0.0;\n if(u_aimate.x == Animate) {\n time = u_time / u_aimate.y;\n }\n float redioCount = arcRadio * count;\n\n float u = fract(redioCount - time);\n\n float v = styleMappingMat[3].a; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n vec2 uv= v_iconMapUV / u_textSize + vec2(u, v) / u_textSize * 64.;\n vec4 pattern = texture2D(u_texture, uv);\n\n if(u_aimate.x == Animate) {\n float currentPlane = floor(redioCount - time);\n float textureStep = floor(count * u_aimate.z);\n float a = mod(currentPlane, textureStep);\n if(a < textureStep - 1.0) {\n pattern = vec4(0.0);\n }\n }\n\n if(u_textureBlend == 0.0) { // normal\n pattern.a = 0.0;\n gl_FragColor = filterColor(gl_FragColor + pattern);\n } else { // replace\n pattern.a *= opacity;\n if(gl_FragColor.a <= 0.0) {\n pattern.a = 0.0;\n discard;\n } else {\n gl_FragColor = filterColor(pattern);\n }\n }\n\n } else {\n gl_FragColor = filterColor(gl_FragColor);\n }\n}\n";
20
- var arc3d_line_vert = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n#define LineTexture 1.0\nattribute vec3 a_Position;\nattribute vec4 a_Instance;\nattribute vec4 a_Color;\nattribute float a_Size;\n\nuniform float u_globel;\nuniform float u_globel_radius;\nuniform float u_global_height: 10;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float segmentNumber;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\nvarying vec4 v_color;\n// varying vec2 v_normal;\nuniform float u_line_type: 0.0;\nuniform vec4 u_dash_array: [10.0, 5., 0, 0];\nvarying vec4 v_dash_array;\n\nuniform float u_icon_step: 100;\nuniform float u_line_texture: 0.0;\nvarying float v_segmentIndex;\n\nattribute vec2 a_iconMapUV;\nvarying vec2 v_iconMapUV;\n\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"project\"\n#pragma include \"picking\"\n\nfloat maps (float value, float start1, float stop1, float start2, float stop2) {\n return start2 + (stop2 - start2) * ((value - start1) / (stop1 - start1));\n}\n\nfloat getSegmentRatio(float index) {\n return smoothstep(0.0, 1.0, index / (segmentNumber - 1.0));\n}\n\nfloat paraboloid(vec2 source, vec2 target, float ratio) {\n vec2 x = mix(source, target, ratio);\n vec2 center = mix(source, target, 0.5);\n float dSourceCenter = distance(source, center);\n float dXCenter = distance(x, center);\n return (dSourceCenter + dXCenter) * (dSourceCenter - dXCenter);\n}\n\nvec3 getPos(vec2 source, vec2 target, float segmentRatio) {\n float vertex_height = paraboloid(source, target, segmentRatio);\n\n return vec3(\n mix(source, target, segmentRatio),\n sqrt(max(0.0, vertex_height))\n );\n}\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction) {\n // normalized direction of the line\n vec2 dir_screenspace = normalize(line_clipspace);\n // rotate by 90 degrees\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n\n vec2 offset = dir_screenspace * offset_direction * setPickingSize(a_Size) / 2.0;\n\n return offset;\n}\nvec2 getNormal(vec2 line_clipspace, float offset_direction) {\n // normalized direction of the line\n vec2 dir_screenspace = normalize(line_clipspace);\n // rotate by 90 degrees\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n return reverse_offset_normal(vec3(dir_screenspace,1.0)).xy * sign(offset_direction);\n}\n\nfloat torad(float deg) {\n return (deg / 180.0) * acos(-1.0);\n}\n\nvec3 lglt2xyz(vec2 lnglat) {\n float pi = 3.1415926;\n // TODO: + Math.PI/2 \u662F\u4E3A\u4E86\u5BF9\u9F50\u5750\u6807\n float lng = torad(lnglat.x) + pi / 2.0;\n float lat = torad(lnglat.y);\n\n // TODO: \u624B\u52A8\u589E\u52A0\u4E00\u4E9B\u504F\u79FB\uFF0C\u51CF\u8F7B\u9762\u7684\u51B2\u7A81\n float radius = u_globel_radius;\n\n float z = radius * cos(lat) * cos(lng);\n float x = radius * cos(lat) * sin(lng);\n float y = radius * sin(lat);\n return vec3(x, y, z);\n}\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // dataset \u6570\u636E\u96C6\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n v_color = a_Color;\n vec2 source = project_position(vec4(a_Instance.rg, 0, 0)).xy;\n vec2 target = project_position(vec4(a_Instance.ba, 0, 0)).xy;\n float segmentIndex = a_Position.x;\n float segmentRatio = getSegmentRatio(segmentIndex);\n float indexDir = mix(-1.0, 1.0, step(segmentIndex, 0.0));\n\n float d_distance_ratio;\n if(u_line_type == LineTypeDash) {\n d_distance_ratio = segmentIndex / segmentNumber;\n // float total_Distance = pixelDistance(a_Instance.rg, a_Instance.ba) / 2.0 * PI;\n vec2 s = source;\n vec2 t = target;\n \n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n s = unProjCustomCoord(source);\n t = unProjCustomCoord(target);\n }\n float total_Distance = pixelDistance(s, t) / 2.0 * PI;\n v_dash_array = pow(2.0, 20.0 - u_Zoom) * u_dash_array / (total_Distance / segmentNumber * segmentIndex);\n }\n if(u_aimate.x == Animate) {\n d_distance_ratio = segmentIndex / segmentNumber;\n }\n styleMappingMat[3].g = d_distance_ratio; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n\n float nextSegmentRatio = getSegmentRatio(segmentIndex + indexDir);\n vec3 curr = getPos(source, target, segmentRatio);\n vec3 next = getPos(source, target, nextSegmentRatio);\n vec2 offset = getExtrusionOffset((next.xy - curr.xy) * indexDir, a_Position.y);\n // v_normal = getNormal((next.xy - curr.xy) * indexDir, a_Position.y);\n\n\n v_segmentIndex = a_Position.x;\n if(LineTexture == u_line_texture && u_line_type != LineTypeDash) { // \u5F00\u542F\u8D34\u56FE\u6A21\u5F0F \n\n float arcDistrance = length(source - target);\n float pixelLen = project_pixel_texture(u_icon_step);\n styleMappingMat[3].b = floor(arcDistrance/pixelLen); // \u8D34\u56FE\u5728\u5F27\u7EBF\u4E0A\u91CD\u590D\u7684\u6570\u91CF\n\n vec2 projectOffset = project_pixel(offset);\n float lineOffsetWidth = length(projectOffset + projectOffset * sign(a_Position.y)); // \u7EBF\u6A2A\u5411\u504F\u79FB\u7684\u8DDD\u79BB\n float linePixelSize = project_pixel(a_Size); // \u5B9A\u70B9\u4F4D\u7F6E\u504F\u79FB\uFF0C\u6309\u5730\u56FE\u7B49\u7EA7\u7F29\u653E\u540E\u7684\u8DDD\u79BB\n styleMappingMat[3].a = lineOffsetWidth/linePixelSize; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n v_iconMapUV = a_iconMapUV;\n }\n \n\n // gl_Position = project_common_position_to_clipspace(vec4(curr.xy + project_pixel(offset), curr.z, 1.0));\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(curr.xy + project_pixel(offset), curr.z, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(curr.xy + project_pixel(offset), curr.z, 1.0));\n }\n\n // \u5730\u7403\u6A21\u5F0F\n if(u_globel > 0.0) {\n vec3 startLngLat = lglt2xyz(a_Instance.rg);\n vec3 endLngLat = lglt2xyz(a_Instance.ba);\n float globalRadius = length(startLngLat);\n\n vec3 lineDir = normalize(endLngLat - startLngLat);\n vec3 midPointDir = normalize((startLngLat + endLngLat)/2.0);\n\n // \u7EBF\u7684\u504F\u79FB\n vec3 lnglatOffset = cross(lineDir, midPointDir) * a_Position.y;\n // \u8BA1\u7B97\u8D77\u59CB\u70B9\u548C\u7EC8\u6B62\u70B9\u7684\u8DDD\u79BB\n float lnglatLength = length(a_Instance.rg - a_Instance.ba)/50.0;\n // \u8BA1\u7B97\u98DE\u7EBF\u5404\u4E2A\u8282\u70B9\u76F8\u5E94\u7684\u9AD8\u5EA6\n float lineHeight = u_global_height * (-4.0*segmentRatio*segmentRatio + 4.0 * segmentRatio) * lnglatLength;\n // \u5730\u7403\u70B9\u4F4D\n vec3 globalPoint = normalize(mix(startLngLat, endLngLat, segmentRatio)) * (globalRadius + lineHeight) + lnglatOffset * a_Size;\n \n gl_Position = u_ViewProjectionMatrix * vec4(globalPoint, 1.0);\n }\n \n\n setPickingColor(a_PickingColor);\n}\n";
22
+
23
+ /* babel-plugin-inline-import '../shaders/line_arc_3d_vert.glsl' */
24
+ var arc3d_line_vert = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n#define LineTexture 1.0\nattribute vec3 a_Position;\nattribute vec4 a_Instance;\nattribute vec4 a_Color;\nattribute float a_Size;\n\nuniform float u_globel;\nuniform float u_globel_radius;\nuniform float u_global_height: 10;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float segmentNumber;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\nvarying vec4 v_color;\n// varying vec2 v_normal;\nuniform float u_line_type: 0.0;\nuniform vec4 u_dash_array: [10.0, 5., 0, 0];\nvarying vec4 v_dash_array;\n\nuniform float u_icon_step: 100;\nuniform float u_line_texture: 0.0;\nvarying float v_segmentIndex;\n\nattribute vec2 a_iconMapUV;\nvarying vec2 v_iconMapUV;\n\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"project\"\n#pragma include \"picking\"\n\nfloat maps (float value, float start1, float stop1, float start2, float stop2) {\n return start2 + (stop2 - start2) * ((value - start1) / (stop1 - start1));\n}\n\nfloat getSegmentRatio(float index) {\n return smoothstep(0.0, 1.0, index / (segmentNumber - 1.0));\n}\n\nfloat paraboloid(vec2 source, vec2 target, float ratio) {\n vec2 x = mix(source, target, ratio);\n vec2 center = mix(source, target, 0.5);\n float dSourceCenter = distance(source, center);\n float dXCenter = distance(x, center);\n return (dSourceCenter + dXCenter) * (dSourceCenter - dXCenter);\n}\n\nvec3 getPos(vec2 source, vec2 target, float segmentRatio) {\n float vertex_height = paraboloid(source, target, segmentRatio);\n\n return vec3(\n mix(source, target, segmentRatio),\n sqrt(max(0.0, vertex_height))\n );\n}\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction) {\n // normalized direction of the line\n vec2 dir_screenspace = normalize(line_clipspace);\n // rotate by 90 degrees\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n\n vec2 offset = dir_screenspace * offset_direction * setPickingSize(a_Size) / 2.0;\n\n return offset;\n}\nvec2 getNormal(vec2 line_clipspace, float offset_direction) {\n // normalized direction of the line\n vec2 dir_screenspace = normalize(line_clipspace);\n // rotate by 90 degrees\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n return reverse_offset_normal(vec3(dir_screenspace,1.0)).xy * sign(offset_direction);\n}\n\nfloat torad(float deg) {\n return (deg / 180.0) * acos(-1.0);\n}\n\nvec3 lglt2xyz(vec2 lnglat) {\n float pi = 3.1415926;\n // TODO: + Math.PI/2 \u662F\u4E3A\u4E86\u5BF9\u9F50\u5750\u6807\n float lng = torad(lnglat.x) + pi / 2.0;\n float lat = torad(lnglat.y);\n\n // TODO: \u624B\u52A8\u589E\u52A0\u4E00\u4E9B\u504F\u79FB\uFF0C\u51CF\u8F7B\u9762\u7684\u51B2\u7A81\n float radius = u_globel_radius;\n\n float z = radius * cos(lat) * cos(lng);\n float x = radius * cos(lat) * sin(lng);\n float y = radius * sin(lat);\n return vec3(x, y, z);\n}\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // dataset \u6570\u636E\u96C6\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n v_color = a_Color;\n vec2 source = project_position(vec4(a_Instance.rg, 0, 0)).xy;\n vec2 target = project_position(vec4(a_Instance.ba, 0, 0)).xy;\n float segmentIndex = a_Position.x;\n float segmentRatio = getSegmentRatio(segmentIndex);\n float indexDir = mix(-1.0, 1.0, step(segmentIndex, 0.0));\n\n float d_distance_ratio;\n if(u_line_type == LineTypeDash) {\n d_distance_ratio = segmentIndex / segmentNumber;\n // float total_Distance = pixelDistance(a_Instance.rg, a_Instance.ba) / 2.0 * PI;\n vec2 s = source;\n vec2 t = target;\n \n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n s = unProjCustomCoord(source);\n t = unProjCustomCoord(target);\n }\n float total_Distance = pixelDistance(s, t) / 2.0 * PI;\n v_dash_array = pow(2.0, 20.0 - u_Zoom) * u_dash_array / (total_Distance / segmentNumber * segmentIndex);\n }\n if(u_aimate.x == Animate) {\n d_distance_ratio = segmentIndex / segmentNumber;\n }\n styleMappingMat[3].g = d_distance_ratio; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n\n float nextSegmentRatio = getSegmentRatio(segmentIndex + indexDir);\n vec3 curr = getPos(source, target, segmentRatio);\n vec3 next = getPos(source, target, nextSegmentRatio);\n vec2 offset = getExtrusionOffset((next.xy - curr.xy) * indexDir, a_Position.y);\n // v_normal = getNormal((next.xy - curr.xy) * indexDir, a_Position.y);\n\n\n v_segmentIndex = a_Position.x;\n if(LineTexture == u_line_texture && u_line_type != LineTypeDash) { // \u5F00\u542F\u8D34\u56FE\u6A21\u5F0F \n\n float arcDistrance = length(source - target);\n float pixelLen = project_pixel_texture(u_icon_step);\n styleMappingMat[3].b = floor(arcDistrance/pixelLen); // \u8D34\u56FE\u5728\u5F27\u7EBF\u4E0A\u91CD\u590D\u7684\u6570\u91CF\n\n vec2 projectOffset = project_pixel(offset);\n float lineOffsetWidth = length(projectOffset + projectOffset * sign(a_Position.y)); // \u7EBF\u6A2A\u5411\u504F\u79FB\u7684\u8DDD\u79BB\n float linePixelSize = project_pixel(a_Size); // \u5B9A\u70B9\u4F4D\u7F6E\u504F\u79FB\uFF0C\u6309\u5730\u56FE\u7B49\u7EA7\u7F29\u653E\u540E\u7684\u8DDD\u79BB\n styleMappingMat[3].a = lineOffsetWidth/linePixelSize; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n v_iconMapUV = a_iconMapUV;\n }\n \n\n // gl_Position = project_common_position_to_clipspace(vec4(curr.xy + project_pixel(offset), curr.z, 1.0));\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(curr.xy + project_pixel(offset), curr.z, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(curr.xy + project_pixel(offset), curr.z, 1.0));\n }\n\n // \u5730\u7403\u6A21\u5F0F\n if(u_globel > 0.0) {\n vec3 startLngLat = lglt2xyz(a_Instance.rg);\n vec3 endLngLat = lglt2xyz(a_Instance.ba);\n float globalRadius = length(startLngLat);\n\n vec3 lineDir = normalize(endLngLat - startLngLat);\n vec3 midPointDir = normalize((startLngLat + endLngLat)/2.0);\n\n // \u7EBF\u7684\u504F\u79FB\n vec3 lnglatOffset = cross(lineDir, midPointDir) * a_Position.y;\n // \u8BA1\u7B97\u8D77\u59CB\u70B9\u548C\u7EC8\u6B62\u70B9\u7684\u8DDD\u79BB\n float lnglatLength = length(a_Instance.rg - a_Instance.ba)/50.0;\n // \u8BA1\u7B97\u98DE\u7EBF\u5404\u4E2A\u8282\u70B9\u76F8\u5E94\u7684\u9AD8\u5EA6\n float lineHeight = u_global_height * (-4.0*segmentRatio*segmentRatio + 4.0 * segmentRatio) * lnglatLength;\n // \u5730\u7403\u70B9\u4F4D\n vec3 globalPoint = normalize(mix(startLngLat, endLngLat, segmentRatio)) * (globalRadius + lineHeight) + lnglatOffset * a_Size;\n \n gl_Position = u_ViewProjectionMatrix * vec4(globalPoint, 1.0);\n }\n \n\n setPickingColor(a_PickingColor);\n}\n"; // arc3d linear layer
25
+
26
+ /* babel-plugin-inline-import '../shaders/linear/arc3d_linear_frag.glsl' */
21
27
  var arc3d_linear_frag = "\n#define Animate 0.0\n\nuniform float u_opacity;\nuniform float u_blur : 0.9;\nvarying float v_segmentIndex;\nuniform float segmentNumber;\n\n\nuniform float u_time;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\n\nuniform float u_linearColor: 0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\n\nvarying mat4 styleMappingMat;\n\n#pragma include \"picking\"\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float animateSpeed = 0.0; // \u8FD0\u52A8\u901F\u5EA6\n float d_distance_ratio = styleMappingMat[3].g; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n\n gl_FragColor = mix(u_sourceColor, u_targetColor, v_segmentIndex/segmentNumber);\n\n gl_FragColor.a *= opacity;\n\n if(u_aimate.x == Animate) {\n animateSpeed = u_time / u_aimate.y;\n float alpha =1.0 - fract( mod(1.0- d_distance_ratio, u_aimate.z)* (1.0/ u_aimate.z) + u_time / u_aimate.y);\n\n alpha = (alpha + u_aimate.w -1.0) / u_aimate.w;\n // alpha = smoothstep(0., 1., alpha);\n alpha = clamp(alpha, 0.0, 1.0);\n gl_FragColor.a *= alpha;\n\n // u_aimate \n // x enable\n // y duration\n // z interval\n // w trailLength\n }\n\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
28
+
29
+ /* babel-plugin-inline-import '../shaders/linear/arc3d_linear_vert.glsl' */
22
30
  var arc3d_linear_vert = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n#define LineTexture 1.0\nattribute vec3 a_Position;\nattribute vec4 a_Instance;\nattribute vec4 a_Color;\nattribute float a_Size;\n\nuniform float u_globel;\nuniform float u_globel_radius;\nuniform float u_global_height: 10;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float segmentNumber;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\nvarying vec4 v_color;\n// varying vec2 v_normal;\nuniform float u_line_type: 0.0;\nuniform vec4 u_dash_array: [10.0, 5., 0, 0];\nvarying vec4 v_dash_array;\n\nuniform float u_icon_step: 100;\nuniform float u_line_texture: 0.0;\nvarying float v_segmentIndex;\n\nattribute vec2 a_iconMapUV;\nvarying vec2 v_iconMapUV;\n\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"project\"\n#pragma include \"picking\"\n\nfloat maps (float value, float start1, float stop1, float start2, float stop2) {\n return start2 + (stop2 - start2) * ((value - start1) / (stop1 - start1));\n}\n\nfloat getSegmentRatio(float index) {\n return smoothstep(0.0, 1.0, index / (segmentNumber - 1.0));\n}\n\nfloat paraboloid(vec2 source, vec2 target, float ratio) {\n vec2 x = mix(source, target, ratio);\n vec2 center = mix(source, target, 0.5);\n float dSourceCenter = distance(source, center);\n float dXCenter = distance(x, center);\n return (dSourceCenter + dXCenter) * (dSourceCenter - dXCenter);\n}\n\nvec3 getPos(vec2 source, vec2 target, float segmentRatio) {\n float vertex_height = paraboloid(source, target, segmentRatio);\n\n return vec3(\n mix(source, target, segmentRatio),\n sqrt(max(0.0, vertex_height))\n );\n}\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction) {\n // normalized direction of the line\n vec2 dir_screenspace = normalize(line_clipspace);\n // rotate by 90 degrees\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n\n vec2 offset = dir_screenspace * offset_direction * setPickingSize(a_Size) / 2.0;\n\n return offset;\n}\nvec2 getNormal(vec2 line_clipspace, float offset_direction) {\n // normalized direction of the line\n vec2 dir_screenspace = normalize(line_clipspace);\n // rotate by 90 degrees\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n return reverse_offset_normal(vec3(dir_screenspace,1.0)).xy * sign(offset_direction);\n}\n\nfloat torad(float deg) {\n return (deg / 180.0) * acos(-1.0);\n}\n\nvec3 lglt2xyz(vec2 lnglat) {\n float pi = 3.1415926;\n // TODO: + Math.PI/2 \u662F\u4E3A\u4E86\u5BF9\u9F50\u5750\u6807\n float lng = torad(lnglat.x) + pi / 2.0;\n float lat = torad(lnglat.y);\n\n // TODO: \u624B\u52A8\u589E\u52A0\u4E00\u4E9B\u504F\u79FB\uFF0C\u51CF\u8F7B\u9762\u7684\u51B2\u7A81\n float radius = u_globel_radius;\n\n float z = radius * cos(lat) * cos(lng);\n float x = radius * cos(lat) * sin(lng);\n float y = radius * sin(lat);\n return vec3(x, y, z);\n}\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // dataset \u6570\u636E\u96C6\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n v_color = a_Color;\n vec2 source = project_position(vec4(a_Instance.rg, 0, 0)).xy;\n vec2 target = project_position(vec4(a_Instance.ba, 0, 0)).xy;\n float segmentIndex = a_Position.x;\n float segmentRatio = getSegmentRatio(segmentIndex);\n float indexDir = mix(-1.0, 1.0, step(segmentIndex, 0.0));\n\n float d_distance_ratio;\n if(u_line_type == LineTypeDash) {\n d_distance_ratio = segmentIndex / segmentNumber;\n // float total_Distance = pixelDistance(a_Instance.rg, a_Instance.ba) / 2.0 * PI;\n vec2 s = source;\n vec2 t = target;\n \n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n s = unProjCustomCoord(source);\n t = unProjCustomCoord(target);\n }\n float total_Distance = pixelDistance(s, t) / 2.0 * PI;\n v_dash_array = pow(2.0, 20.0 - u_Zoom) * u_dash_array / (total_Distance / segmentNumber * segmentIndex);\n }\n if(u_aimate.x == Animate) {\n d_distance_ratio = segmentIndex / segmentNumber;\n }\n styleMappingMat[3].g = d_distance_ratio; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n\n float nextSegmentRatio = getSegmentRatio(segmentIndex + indexDir);\n vec3 curr = getPos(source, target, segmentRatio);\n vec3 next = getPos(source, target, nextSegmentRatio);\n vec2 offset = getExtrusionOffset((next.xy - curr.xy) * indexDir, a_Position.y);\n // v_normal = getNormal((next.xy - curr.xy) * indexDir, a_Position.y);\n\n\n v_segmentIndex = a_Position.x;\n if(LineTexture == u_line_texture && u_line_type != LineTypeDash) { // \u5F00\u542F\u8D34\u56FE\u6A21\u5F0F \n\n float arcDistrance = length(source - target);\n float pixelLen = project_pixel_texture(u_icon_step);\n styleMappingMat[3].b = floor(arcDistrance/pixelLen); // \u8D34\u56FE\u5728\u5F27\u7EBF\u4E0A\u91CD\u590D\u7684\u6570\u91CF\n\n vec2 projectOffset = project_pixel(offset);\n float lineOffsetWidth = length(projectOffset + projectOffset * sign(a_Position.y)); // \u7EBF\u6A2A\u5411\u504F\u79FB\u7684\u8DDD\u79BB\n float linePixelSize = project_pixel(a_Size); // \u5B9A\u70B9\u4F4D\u7F6E\u504F\u79FB\uFF0C\u6309\u5730\u56FE\u7B49\u7EA7\u7F29\u653E\u540E\u7684\u8DDD\u79BB\n styleMappingMat[3].a = lineOffsetWidth/linePixelSize; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n v_iconMapUV = a_iconMapUV;\n }\n \n\n // gl_Position = project_common_position_to_clipspace(vec4(curr.xy + project_pixel(offset), curr.z, 1.0));\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(curr.xy + project_pixel(offset), curr.z, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(curr.xy + project_pixel(offset), curr.z, 1.0));\n }\n\n // \u5730\u7403\u6A21\u5F0F\n if(u_globel > 0.0) {\n vec3 startLngLat = lglt2xyz(a_Instance.rg);\n vec3 endLngLat = lglt2xyz(a_Instance.ba);\n float globalRadius = length(startLngLat);\n\n vec3 lineDir = normalize(endLngLat - startLngLat);\n vec3 midPointDir = normalize((startLngLat + endLngLat)/2.0);\n\n // \u7EBF\u7684\u504F\u79FB\n vec3 lnglatOffset = cross(lineDir, midPointDir) * a_Position.y;\n // \u8BA1\u7B97\u8D77\u59CB\u70B9\u548C\u7EC8\u6B62\u70B9\u7684\u8DDD\u79BB\n float lnglatLength = length(a_Instance.rg - a_Instance.ba)/50.0;\n // \u8BA1\u7B97\u98DE\u7EBF\u5404\u4E2A\u8282\u70B9\u76F8\u5E94\u7684\u9AD8\u5EA6\n float lineHeight = u_global_height * (-4.0*segmentRatio*segmentRatio + 4.0 * segmentRatio) * lnglatLength;\n // \u5730\u7403\u70B9\u4F4D\n vec3 globalPoint = normalize(mix(startLngLat, endLngLat, segmentRatio)) * (globalRadius + lineHeight) + lnglatOffset * a_Size;\n \n gl_Position = u_ViewProjectionMatrix * vec4(globalPoint, 1.0);\n }\n \n\n setPickingColor(a_PickingColor);\n}\n";
23
31
  var lineStyleObj = {
24
32
  solid: 0.0,
25
33
  dash: 1.0
26
34
  };
27
35
 
28
- var Arc3DModel = function (_BaseModel) {
36
+ var Arc3DModel = /*#__PURE__*/function (_BaseModel) {
29
37
  _inherits(Arc3DModel, _BaseModel);
30
38
 
31
39
  var _super = _createSuper(Arc3DModel);
@@ -41,8 +49,6 @@ var Arc3DModel = function (_BaseModel) {
41
49
 
42
50
  _this = _super.call.apply(_super, [this].concat(args));
43
51
 
44
- _defineProperty(_assertThisInitialized(_this), "texture", void 0);
45
-
46
52
  _defineProperty(_assertThisInitialized(_this), "updateTexture", function () {
47
53
  var createTexture2D = _this.rendererService.createTexture2D;
48
54
 
@@ -94,9 +100,11 @@ var Arc3DModel = function (_BaseModel) {
94
100
 
95
101
  if (dashArray.length === 2) {
96
102
  dashArray.push(0, 0);
97
- }
103
+ } // 转化渐变色
104
+
105
+
106
+ var useLinearColor = 0; // 默认不生效
98
107
 
99
- var useLinearColor = 0;
100
108
  var sourceColorArr = [0, 0, 0, 0];
101
109
  var targetColorArr = [0, 0, 0, 0];
102
110
 
@@ -123,7 +131,8 @@ var Arc3DModel = function (_BaseModel) {
123
131
  width = _this$calDataFrame.width,
124
132
  height = _this$calDataFrame.height;
125
133
 
126
- this.rowCount = height;
134
+ this.rowCount = height; // 当前数据纹理有多少行
135
+
127
136
  this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
128
137
  flipY: true,
129
138
  data: data,
@@ -144,18 +153,24 @@ var Arc3DModel = function (_BaseModel) {
144
153
  return {
145
154
  u_globel: 1,
146
155
  u_globel_radius: EARTH_RADIUS,
156
+ // 地球半径
147
157
  u_global_height: globalArcHeight,
148
158
  u_dataTexture: this.dataTexture,
159
+ // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]
149
160
  u_cellTypeLayout: this.getCellTypeLayout(),
150
- u_opacity: _isNumber(opacity) ? opacity : 1.0,
161
+ u_opacity: isNumber(opacity) ? opacity : 1.0,
151
162
  u_textureBlend: textureBlend === 'normal' ? 0.0 : 1.0,
152
163
  segmentNumber: segmentNumber,
153
164
  u_line_type: lineStyleObj[lineType] || 0.0,
154
165
  u_dash_array: dashArray,
166
+ // 纹理支持参数
155
167
  u_texture: this.texture,
168
+ // 贴图
156
169
  u_line_texture: lineTexture ? 1.0 : 0.0,
170
+ // 传入线的标识
157
171
  u_icon_step: iconStep,
158
172
  u_textSize: [1024, this.iconService.canvasHeight || 128],
173
+ // 渐变色支持参数
159
174
  u_linearColor: useLinearColor,
160
175
  u_sourceColor: sourceColorArr,
161
176
  u_targetColor: targetColorArr
@@ -196,6 +211,7 @@ var Arc3DModel = function (_BaseModel) {
196
211
  targetColor = _ref3.targetColor;
197
212
 
198
213
  if (sourceColor && targetColor) {
214
+ // 分离 linear 功能
199
215
  return {
200
216
  frag: arc3d_linear_frag,
201
217
  vert: arc3d_linear_vert,
@@ -248,12 +264,14 @@ var Arc3DModel = function (_BaseModel) {
248
264
  value: function registerBuiltinAttributes() {
249
265
  var _this2 = this;
250
266
 
267
+ // point layer size;
251
268
  this.styleAttributeService.registerStyleAttribute({
252
269
  name: 'size',
253
270
  type: AttributeType.Attribute,
254
271
  descriptor: {
255
272
  name: 'a_Size',
256
273
  buffer: {
274
+ // give the WebGL driver a hint that this buffer may change
257
275
  usage: gl.DYNAMIC_DRAW,
258
276
  data: [],
259
277
  type: gl.FLOAT
@@ -268,6 +286,7 @@ var Arc3DModel = function (_BaseModel) {
268
286
  });
269
287
  this.styleAttributeService.registerStyleAttribute({
270
288
  name: 'instance',
289
+ // 弧线起始点信息
271
290
  type: AttributeType.Attribute,
272
291
  descriptor: {
273
292
  name: 'a_Instance',
@@ -288,6 +307,7 @@ var Arc3DModel = function (_BaseModel) {
288
307
  descriptor: {
289
308
  name: 'a_iconMapUV',
290
309
  buffer: {
310
+ // give the WebGL driver a hint that this buffer may change
291
311
  usage: gl.DYNAMIC_DRAW,
292
312
  data: [],
293
313
  type: gl.FLOAT
@@ -315,5 +335,4 @@ var Arc3DModel = function (_BaseModel) {
315
335
  return Arc3DModel;
316
336
  }(BaseModel);
317
337
 
318
- export { Arc3DModel as default };
319
- //# sourceMappingURL=earthArc_3d.js.map
338
+ export { Arc3DModel as default };
@@ -5,7 +5,6 @@ import _inherits from "@babel/runtime/helpers/inherits";
5
5
  import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
6
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
7
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
- import _isNumber from "lodash/isNumber";
9
8
 
10
9
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
11
10
 
@@ -13,16 +12,21 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
13
12
 
14
13
  import { AttributeType, gl } from '@antv/l7-core';
15
14
  import { getMask, rgb2arr } from '@antv/l7-utils';
16
- import BaseModel from '../../core/BaseModel';
17
- import { LineArcTriangulation } from '../../core/triangulation';
15
+ import { isNumber } from 'lodash';
16
+ import BaseModel from "../../core/BaseModel";
17
+ import { LineArcTriangulation } from "../../core/triangulation";
18
+
19
+ /* babel-plugin-inline-import '../shaders/line_arc_great_circle_frag.glsl' */
18
20
  var line_arc_frag = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n#define LineTexture 1.0\n\nuniform float u_opacity;\nuniform float u_textureBlend;\nuniform float u_blur : 0.9;\nuniform float u_line_type: 0.0;\n// varying vec2 v_normal;\nvarying vec4 v_dash_array;\nvarying float v_distance_ratio;\nvarying vec4 v_color;\n\nuniform float u_time;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\n\nuniform float u_line_texture: 0.0;\nuniform sampler2D u_texture;\nuniform vec2 u_textSize;\nuniform float segmentNumber;\n\nvarying vec2 v_iconMapUV;\n\nuniform float u_linearColor: 0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\n\nvarying mat4 styleMappingMat;\n\n#pragma include \"picking\"\n#pragma include \"project\"\n#pragma include \"projection\"\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float animateSpeed = 0.0;\n float d_segmentIndex = styleMappingMat[3].g;\n \n // \u8BBE\u7F6E\u5F27\u7EBF\u7684\u5E95\u8272\n if(u_linearColor == 1.0) { // \u4F7F\u7528\u6E10\u53D8\u989C\u8272\n gl_FragColor = mix(u_sourceColor, u_targetColor, d_segmentIndex/segmentNumber);\n } else { // \u4F7F\u7528 color \u65B9\u6CD5\u4F20\u5165\u7684\u989C\u8272\n gl_FragColor = v_color;\n }\n\n // float blur = 1.- smoothstep(u_blur, 1., length(v_normal.xy));\n // float blur = smoothstep(1.0, u_blur, length(v_normal.xy));\n gl_FragColor.a *= opacity;\n if(u_line_type == LineTypeDash) {\n float dashLength = mod(v_distance_ratio, v_dash_array.x + v_dash_array.y + v_dash_array.z + v_dash_array.w);\n if(dashLength < v_dash_array.x || (dashLength > (v_dash_array.x + v_dash_array.y) && dashLength < v_dash_array.x + v_dash_array.y + v_dash_array.z)) {\n // \u5B9E\u7EBF\u90E8\u5206\n } else {\n // \u865A\u7EBF\u90E8\u5206\n discard;\n };\n }\n\n // \u8BBE\u7F6E\u5F27\u7EBF\u7684\u52A8\u753B\u6A21\u5F0F\n if(u_aimate.x == Animate) {\n animateSpeed = u_time / u_aimate.y;\n float alpha =1.0 - fract( mod(1.0- v_distance_ratio, u_aimate.z)* (1.0/ u_aimate.z) + u_time / u_aimate.y);\n alpha = (alpha + u_aimate.w -1.0) / u_aimate.w;\n alpha = smoothstep(0., 1., alpha);\n gl_FragColor.a *= alpha;\n }\n\n // \u8BBE\u7F6E\u5F27\u7EBF\u7684\u8D34\u56FE\n if(LineTexture == u_line_texture && u_line_type != LineTypeDash) { \n float arcRadio = smoothstep( 0.0, 1.0, (d_segmentIndex / (segmentNumber - 1.0)));\n // float arcRadio = d_segmentIndex / (segmentNumber - 1.0);\n float count = styleMappingMat[3].b; // \u8D34\u56FE\u5728\u5F27\u7EBF\u4E0A\u91CD\u590D\u7684\u6570\u91CF\n float u = fract(arcRadio * count - animateSpeed * count);\n // float u = fract(arcRadio * count - animateSpeed);\n if(u_aimate.x == Animate) {\n u = gl_FragColor.a/opacity;\n }\n\n float v = styleMappingMat[3].a; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n vec2 uv= v_iconMapUV / u_textSize + vec2(u, v) / u_textSize * 64.;\n vec4 pattern = texture2D(u_texture, uv);\n \n // \u8BBE\u7F6E\u8D34\u56FE\u548C\u5E95\u8272\u7684\u53E0\u52A0\u6A21\u5F0F\n if(u_textureBlend == 0.0) { // normal\n pattern.a = 0.0;\n gl_FragColor = filterColor(gl_FragColor + pattern);\n } else { // replace\n pattern.a *= opacity;\n if(gl_FragColor.a <= 0.0) {\n pattern.a = 0.0;\n }\n gl_FragColor = filterColor(pattern);\n }\n } else {\n gl_FragColor = filterColor(gl_FragColor);\n }\n\n // gl_FragColor = filterColor(gl_FragColor);\n}";
21
+
22
+ /* babel-plugin-inline-import '../shaders/line_arc_great_circle_vert.glsl' */
19
23
  var line_arc2d_vert = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n#define LineTexture 1.0\n\nattribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec4 a_Instance;\nattribute float a_Size;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float segmentNumber;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\nvarying vec4 v_color;\n// varying vec2 v_normal;\n\nvarying float v_distance_ratio;\nuniform float u_line_type: 0.0;\nuniform vec4 u_dash_array: [10.0, 5., 0, 0];\nvarying vec4 v_dash_array;\n\nuniform float u_icon_step: 100;\nuniform float u_line_texture: 0.0;\n\nattribute vec2 a_iconMapUV;\nvarying vec2 v_iconMapUV;\n\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"project\"\n#pragma include \"picking\"\n\nfloat maps (float value, float start1, float stop1, float start2, float stop2) {\n return start2 + (stop2 - start2) * ((value - start1) / (stop1 - start1));\n}\n\nfloat getSegmentRatio(float index) {\n return index / (segmentNumber - 1.);\n}\n\nfloat paraboloid(vec2 source, vec2 target, float ratio) {\n vec2 x = mix(source, target, ratio);\n vec2 center = mix(source, target, 0.5);\n float dSourceCenter = distance(source, center);\n float dXCenter = distance(x, center);\n return (dSourceCenter + dXCenter) * (dSourceCenter - dXCenter);\n}\n\nvec3 getPos(vec2 source, vec2 target, float segmentRatio) {\n float vertex_height = paraboloid(source, target, segmentRatio);\n\n return vec3(\n mix(source, target, segmentRatio),\n sqrt(max(0.0, vertex_height))\n );\n}\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction) {\n // normalized direction of the line\n vec2 dir_screenspace = normalize(line_clipspace);\n // rotate by 90 degrees\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n vec2 offset = dir_screenspace * offset_direction * setPickingSize(a_Size)/ 2.0;\n return offset;\n}\nvec2 getNormal(vec2 line_clipspace, float offset_direction) {\n // normalized direction of the line\n vec2 dir_screenspace = normalize(line_clipspace);\n // rotate by 90 degrees\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n return reverse_offset_normal(vec3(dir_screenspace,1.0)).xy * sign(offset_direction);\n}\nfloat getAngularDist (vec2 source, vec2 target) {\n vec2 delta = source - target;\n vec2 sin_half_delta = sin(delta / 2.0);\n float a =\n sin_half_delta.y * sin_half_delta.y +\n cos(source.y) * cos(target.y) *\n sin_half_delta.x * sin_half_delta.x;\n return 2.0 * atan(sqrt(a), sqrt(1.0 - a));\n}\n\nvec2 midPoint(vec2 source, vec2 target) {\n vec2 center = target - source;\n float r = length(center);\n float theta = atan(center.y, center.x);\n float thetaOffset = 0.314;\n float r2 = r / 2.0 / cos(thetaOffset);\n float theta2 = theta + thetaOffset;\n vec2 mid = vec2(r2*cos(theta2) + source.x, r2*sin(theta2) + source.y);\n return mid;\n}\nfloat bezier3(vec3 arr, float t) {\n float ut = 1. - t;\n return (arr.x * ut + arr.y * t) * ut + (arr.y * ut + arr.z * t) * t;\n}\n\nvec2 interpolate (vec2 source, vec2 target, float angularDist, float t) {\n // if the angularDist is PI, linear interpolation is applied. otherwise, use spherical interpolation\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n vec2 mid = midPoint(source, target);\n vec3 x = vec3(source.x, mid.x, target.x);\n vec3 y = vec3(source.y, mid.y, target.y);\n return vec2(bezier3(x ,t), bezier3(y,t));\n }else {\n if(abs(angularDist - PI) < 0.001) {\n return (1.0 - t) * source + t * target;\n }\n float a = sin((1.0 - t) * angularDist) / sin(angularDist);\n float b = sin(t * angularDist) / sin(angularDist);\n vec2 sin_source = sin(source);\n vec2 cos_source = cos(source);\n vec2 sin_target = sin(target);\n vec2 cos_target = cos(target);\n float x = a * cos_source.y * cos_source.x + b * cos_target.y * cos_target.x;\n float y = a * cos_source.y * sin_source.x + b * cos_target.y * sin_target.x;\n float z = a * sin_source.y + b * sin_target.y;\n return vec2(atan(y, x), atan(z, sqrt(x * x + y * y)));\n }\n}\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // dataset \u6570\u636E\u96C6\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n v_color = a_Color;\n vec2 source = radians(a_Instance.rg);\n vec2 target = radians(a_Instance.ba);\n float angularDist = getAngularDist(source, target);\n float segmentIndex = a_Position.x;\n float segmentRatio = getSegmentRatio(segmentIndex);\n float indexDir = mix(-1.0, 1.0, step(segmentIndex, 0.0));\n\n if(u_line_type == LineTypeDash) {\n v_distance_ratio = segmentIndex / segmentNumber;\n vec2 s = source;\n vec2 t = target;\n \n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n s = unProjCustomCoord(source);\n t = unProjCustomCoord(target);\n }\n float total_Distance = pixelDistance(s, t) / 2.0 * PI;\n total_Distance = total_Distance*16.0; // total_Distance*16.0 \u8C03\u6574\u9ED8\u8BA4\u7684\u6548\u679C\n v_dash_array = pow(2.0, 20.0 - u_Zoom) * u_dash_array / total_Distance;\n }\n\n if(u_aimate.x == Animate) {\n v_distance_ratio = segmentIndex / segmentNumber;\n }\n\n float nextSegmentRatio = getSegmentRatio(segmentIndex + indexDir);\n v_distance_ratio = segmentIndex / segmentNumber;\n vec4 curr = project_position(vec4(degrees(interpolate(source, target, angularDist, segmentRatio)), 0.0, 1.0));\n vec4 next = project_position(vec4(degrees(interpolate(source, target, angularDist, nextSegmentRatio)), 0.0, 1.0));\n // v_normal = getNormal((next.xy - curr.xy) * indexDir, a_Position.y);\n vec2 offset = project_pixel(getExtrusionOffset((next.xy - curr.xy) * indexDir, a_Position.y));\n // vec4 project_pos = project_position(vec4(curr.xy, 0, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(curr.xy + offset, curr.z, 1.0));\n\n styleMappingMat[3].g = a_Position.x; // \u8BE5\u9876\u70B9\u5728\u5F27\u7EBF\u4E0A\u7684\u5206\u6BB5\u6392\u5E8F\n if(LineTexture == u_line_texture) { // \u5F00\u542F\u8D34\u56FE\u6A21\u5F0F \n // float mapZoomScale = u_CoordinateSystem !== COORDINATE_SYSTEM_P20_2?10000000.0:1.0;\n float d_arcDistrance = length(source - target);\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20) { // amap\n d_arcDistrance = d_arcDistrance * 1000000.0;\n }\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) { // mapbox\n d_arcDistrance = project_pixel_allmap(d_arcDistrance);\n }\n float d_pixelLen = project_pixel(u_icon_step)/8.0;\n styleMappingMat[3].b = floor(d_arcDistrance/d_pixelLen); // \u8D34\u56FE\u5728\u5F27\u7EBF\u4E0A\u91CD\u590D\u7684\u6570\u91CF\n\n float lineOffsetWidth = length(offset + offset * sign(a_Position.y)); // \u7EBF\u6A2A\u5411\u504F\u79FB\u7684\u8DDD\u79BB\n float linePixelSize = project_pixel(a_Size); // \u5B9A\u70B9\u4F4D\u7F6E\u504F\u79FB\uFF0C\u6309\u5730\u56FE\u7B49\u7EA7\u7F29\u653E\u540E\u7684\u8DDD\u79BB\n styleMappingMat[3].a = lineOffsetWidth/linePixelSize; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n v_iconMapUV = a_iconMapUV;\n }\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(curr.xy + offset, curr.z, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(curr.xy + offset, curr.z, 1.0));\n }\n setPickingColor(a_PickingColor);\n}\n\n";
20
24
  var lineStyleObj = {
21
25
  solid: 0.0,
22
26
  dash: 1.0
23
27
  };
24
28
 
25
- var GreatCircleModel = function (_BaseModel) {
29
+ var GreatCircleModel = /*#__PURE__*/function (_BaseModel) {
26
30
  _inherits(GreatCircleModel, _BaseModel);
27
31
 
28
32
  var _super = _createSuper(GreatCircleModel);
@@ -38,8 +42,6 @@ var GreatCircleModel = function (_BaseModel) {
38
42
 
39
43
  _this = _super.call.apply(_super, [this].concat(args));
40
44
 
41
- _defineProperty(_assertThisInitialized(_this), "texture", void 0);
42
-
43
45
  _defineProperty(_assertThisInitialized(_this), "updateTexture", function () {
44
46
  var createTexture2D = _this.rendererService.createTexture2D;
45
47
 
@@ -93,9 +95,11 @@ var GreatCircleModel = function (_BaseModel) {
93
95
 
94
96
  if (this.rendererService.getDirty()) {
95
97
  this.texture.bind();
96
- }
98
+ } // 转化渐变色
99
+
100
+
101
+ var useLinearColor = 0; // 默认不生效
97
102
 
98
- var useLinearColor = 0;
99
103
  var sourceColorArr = [0, 0, 0, 0];
100
104
  var targetColorArr = [0, 0, 0, 0];
101
105
 
@@ -118,7 +122,8 @@ var GreatCircleModel = function (_BaseModel) {
118
122
  width = _this$calDataFrame.width,
119
123
  height = _this$calDataFrame.height;
120
124
 
121
- this.rowCount = height;
125
+ this.rowCount = height; // 当前数据纹理有多少行
126
+
122
127
  this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
123
128
  flipY: true,
124
129
  data: data,
@@ -138,16 +143,21 @@ var GreatCircleModel = function (_BaseModel) {
138
143
 
139
144
  return {
140
145
  u_dataTexture: this.dataTexture,
146
+ // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]
141
147
  u_cellTypeLayout: this.getCellTypeLayout(),
142
- u_opacity: _isNumber(opacity) ? opacity : 1.0,
148
+ u_opacity: isNumber(opacity) ? opacity : 1.0,
143
149
  u_textureBlend: textureBlend === 'normal' ? 0.0 : 1.0,
144
150
  segmentNumber: segmentNumber,
145
151
  u_line_type: lineStyleObj[lineType] || 0.0,
146
152
  u_dash_array: dashArray,
153
+ // 纹理支持参数
147
154
  u_texture: this.texture,
155
+ // 贴图
148
156
  u_line_texture: lineTexture ? 1.0 : 0.0,
157
+ // 传入线的标识
149
158
  u_icon_step: iconStep,
150
159
  u_textSize: [1024, this.iconService.canvasHeight || 128],
160
+ // 渐变色支持参数
151
161
  u_linearColor: useLinearColor,
152
162
  u_sourceColor: sourceColorArr,
153
163
  u_targetColor: targetColorArr
@@ -217,6 +227,7 @@ var GreatCircleModel = function (_BaseModel) {
217
227
  descriptor: {
218
228
  name: 'a_Size',
219
229
  buffer: {
230
+ // give the WebGL driver a hint that this buffer may change
220
231
  usage: gl.DYNAMIC_DRAW,
221
232
  data: [],
222
233
  type: gl.FLOAT
@@ -231,6 +242,7 @@ var GreatCircleModel = function (_BaseModel) {
231
242
  });
232
243
  this.styleAttributeService.registerStyleAttribute({
233
244
  name: 'instance',
245
+ // 弧线起始点信息
234
246
  type: AttributeType.Attribute,
235
247
  descriptor: {
236
248
  name: 'a_Instance',
@@ -251,6 +263,7 @@ var GreatCircleModel = function (_BaseModel) {
251
263
  descriptor: {
252
264
  name: 'a_iconMapUV',
253
265
  buffer: {
266
+ // give the WebGL driver a hint that this buffer may change
254
267
  usage: gl.DYNAMIC_DRAW,
255
268
  data: [],
256
269
  type: gl.FLOAT
@@ -259,7 +272,7 @@ var GreatCircleModel = function (_BaseModel) {
259
272
  update: function update(feature, featureIdx, vertex, attributeIdx) {
260
273
  var iconMap = _this2.iconService.getIconMap();
261
274
 
262
- var texture = feature.texture;
275
+ var texture = feature.texture; // console.log('icon feature', feature)
263
276
 
264
277
  var _ref4 = iconMap[texture] || {
265
278
  x: 0,
@@ -278,5 +291,4 @@ var GreatCircleModel = function (_BaseModel) {
278
291
  return GreatCircleModel;
279
292
  }(BaseModel);
280
293
 
281
- export { GreatCircleModel as default };
282
- //# sourceMappingURL=great_circle.js.map
294
+ export { GreatCircleModel as default };
@@ -4,7 +4,6 @@ import _createClass from "@babel/runtime/helpers/createClass";
4
4
  import _inherits from "@babel/runtime/helpers/inherits";
5
5
  import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
6
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
- import _isNumber from "lodash/isNumber";
8
7
  import _regeneratorRuntime from "@babel/runtime/regenerator";
9
8
 
10
9
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
@@ -13,12 +12,17 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
13
12
 
14
13
  import { AttributeType, gl } from '@antv/l7-core';
15
14
  import { getMask, rgb2arr } from '@antv/l7-utils';
16
- import BaseModel from '../../core/BaseModel';
17
- import { LineTriangulation } from '../../core/triangulation';
15
+ import { isNumber } from 'lodash';
16
+ import BaseModel from "../../core/BaseModel";
17
+ import { LineTriangulation } from "../../core/triangulation";
18
+
19
+ /* babel-plugin-inline-import '../shaders/half/line_half_frag.glsl' */
18
20
  var line_half_frag = "#define COORDINATE_SYSTEM_LNGLAT 1.0 // mapbox\n#define COORDINATE_SYSTEM_LNGLAT_OFFSET 2.0 // mapbox offset\n#define COORDINATE_SYSTEM_VECTOR_TILE 3.0\n#define COORDINATE_SYSTEM_IDENTITY 4.0\n#define COORDINATE_SYSTEM_P20 5.0 // amap\n#define COORDINATE_SYSTEM_P20_OFFSET 6.0 // amap offset\n#define COORDINATE_SYSTEM_METER_OFFSET 7.0\n\n#define COORDINATE_SYSTEM_P20_2 8.0 // amap2.0\nuniform float u_CoordinateSystem;\nvarying vec4 v_color;\nuniform float u_arrow: 0.0;\nuniform float u_linearColor: 0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\n\n#pragma include \"picking\"\n\nvarying mat4 styleMappingMat;\nvoid main() {\n float distanceAndIndex = styleMappingMat[0][3];\n float miter = styleMappingMat[0][2];\n\n float opacity = styleMappingMat[0][0];\n float d_distance_ratio = styleMappingMat[3].r; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n\n\n if(u_arrow > 0.0 && distanceAndIndex < 2.0) { // arrow\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20 || u_CoordinateSystem == COORDINATE_SYSTEM_P20_OFFSET) { \n if(cross(vec3(styleMappingMat[1].rg, 0.0), vec3(styleMappingMat[1].ba, 0.0)).z < 0.0) { // amap\n discard;\n }\n } else { // amap2 mapbox map\n if(cross(vec3(styleMappingMat[1].rg, 0.0), vec3(styleMappingMat[1].ba, 0.0)).z > 0.0) { \n discard;\n }\n }\n } else { // line body\n if(miter < 0.0) {\n discard;\n }\n }\n\n\n if(u_linearColor == 1.0) { // \u4F7F\u7528\u6E10\u53D8\u989C\u8272\n gl_FragColor = mix(u_sourceColor, u_targetColor, d_distance_ratio);\n } else { // \u4F7F\u7528 color \u65B9\u6CD5\u4F20\u5165\u7684\u989C\u8272\n gl_FragColor = v_color;\n }\n\n gl_FragColor.a *= opacity; // \u5168\u5C40\u900F\u660E\u5EA6\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
21
+
22
+ /* babel-plugin-inline-import '../shaders/half/line_half_vert.glsl' */
19
23
  var line_half_vert = "attribute float a_Miter;\nattribute vec4 a_Color;\nattribute vec2 a_Size;\nattribute vec3 a_Normal;\nattribute vec3 a_Position;\n\n// dash line\nattribute vec4 a_dirPoints;\nattribute vec3 a_DistanceAndIndex;\n\nuniform vec4 u_lineDir;\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvarying vec4 v_color;\n\nuniform float u_linearColor: 0;\nuniform float u_arrow: 0.0;\nuniform float u_arrowHeight: 3.0;\nuniform float u_arrowWidth: 2.0;\nuniform float u_tailWidth: 1.0;\n\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\nvec2 calculateArrow(vec2 offset) {\n /*\n * \u5728\u652F\u6301\u7BAD\u5934\u7684\u65F6\u5019\uFF0C\u7B2C\u4E8C\u3001\u7B2C\u4E09\u7EC4\u9876\u70B9\u662F\u989D\u5916\u63D2\u5165\u7528\u4E8E\u6784\u5EFA\u9876\u70B9\u7684\n */\n float arrowFlag = -1.0;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n // \u9AD8\u5FB7 2.0 \u7684\u65CB\u8F6C\u89D2\u5EA6\u4E0D\u540C\n arrowFlag = 1.0;\n }\n float pi = arrowFlag * 3.1415926/2.;\n if(a_Miter < 0.) {\n // \u6839\u636E\u7EBF\u7684\u4E24\u4FA7\u504F\u79FB\u4E0D\u540C\u3001\u65CB\u8F6C\u7684\u65B9\u5411\u76F8\u53CD\n pi = -pi;\n }\n highp float angle_sin = sin(pi);\n highp float angle_cos = cos(pi);\n // \u8BA1\u7B97\u5782\u76F4\u4E0E\u7EBF\u65B9\u5411\u7684\u65CB\u8F6C\u77E9\u9635\n mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\n float arrowWidth = u_arrowWidth;\n float arrowHeight = u_arrowHeight;\n\n vec2 arrowOffset = vec2(0.0);\n /*\n * a_DistanceAndIndex.y \u7528\u4E8E\u6807\u8BB0\u5F53\u524D\u9876\u70B9\u5C5E\u4E8E\u54EA\u4E00\u7EC4\uFF08\u4E24\u4E2A\u9876\u70B9\u4E00\u7EC4\uFF0C\u6784\u6210\u7EBF\u7684\u5176\u5B9E\u662F\u77E9\u5F62\uFF0C\u6700\u7B80\u9700\u8981\u56DB\u4E2A\u9876\u70B9\u3001\u4E24\u7EC4\u9876\u70B9\u6784\u6210\uFF09\n */\n if(a_DistanceAndIndex.y == 0.0) {\n // \u7BAD\u5934\u5C16\u90E8\n offset = vec2(0.0);\n } else if(a_DistanceAndIndex.y == 1.0) {\n // \u7BAD\u5934\u4E24\u4FA7\n arrowOffset = rotation_matrix*(offset * arrowHeight);\n offset += arrowOffset; // \u6CBF\u7EBF\u504F\u79FB\n offset = offset * arrowWidth; // \u5782\u76F4\u7EBF\u5411\u5916\u504F\u79FB\uFF08\u662F\u6784\u5EFA\u7BAD\u5934\u4E24\u4FA7\u7684\u9876\u70B9\uFF09\n } else if(a_DistanceAndIndex.y == 2.0 || a_DistanceAndIndex.y == 3.0 || a_DistanceAndIndex.y == 4.0) {\n // \u504F\u79FB\u5176\u4F59\u7684\u70B9\u4F4D\uFF08\u5C06\u957F\u5EA6\u8BA9\u4F4D\u7ED9\u7BAD\u5934\uFF09\n arrowOffset = rotation_matrix*(offset * arrowHeight) * arrowWidth;\n offset += arrowOffset;// \u6CBF\u7EBF\u504F\u79FB\n }\n\n return offset;\n}\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - a_Miter - a_DistanceAndIndex\n 0.0, 0.0, 0.0, 0.0, // originX - originY - vectorX - vectorY\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // distance_ratio/distance/pixelLen/texV\n );\n styleMappingMat[0][3] = a_DistanceAndIndex.y;\n styleMappingMat[0][2] = a_Miter;\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n\n v_color = a_Color;\n\n vec3 size = a_Miter * setPickingSize(a_Size.x) * reverse_offset_normal(a_Normal);\n \n vec2 offset = project_pixel(size.xy);\n\n // styleMappingMat[1].rg = a_Position.xy + offset;\n\n vec2 copyOffset = vec2(offset.x, offset.y);\n\n float lineDistance = a_DistanceAndIndex.x;\n float total_Distance = a_DistanceAndIndex.z;\n float currentLinePointRatio = lineDistance / total_Distance;\n \n if(u_arrow > 0.0) {\n // \u8BA1\u7B97\u7BAD\u5934\n offset = calculateArrow(offset);\n\n if(a_DistanceAndIndex.y > 4.0) {\n offset *= mix(1.0, u_tailWidth, currentLinePointRatio);\n }\n }\n\n float lineOffsetWidth = length(offset + offset * sign(a_Miter)); // \u7EBF\u6A2A\u5411\u504F\u79FB\u7684\u8DDD\u79BB\uFF08\u5411\u4E24\u4FA7\u504F\u79FB\u7684\u548C\uFF09\n float linePixelSize = project_pixel(a_Size.x) * 2.0; // \u5B9A\u70B9\u4F4D\u7F6E\u504F\u79FB\uFF0C\u6309\u5730\u56FE\u7B49\u7EA7\u7F29\u653E\u540E\u7684\u8DDD\u79BB \u5355\u4FA7 * 2\n\n // \u8BBE\u7F6E\u6570\u636E\u96C6\u7684\u53C2\u6570\n styleMappingMat[3][0] = currentLinePointRatio; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n styleMappingMat[3][1] = lineDistance; // \u5F53\u524D\u9876\u70B9\u7684\u8DDD\u79BB\n\n vec4 project_pos = project_position(vec4(a_Position.xy, 0, 1.0));\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, a_Size.y, 1.0));\n\n float h = float(a_Position.z); // \u7EBF\u9876\u70B9\u7684\u9AD8\u5EA6 - \u517C\u5BB9\u4E0D\u5B58\u5728\u7B2C\u4E09\u4E2A\u6570\u503C\u7684\u60C5\u51B5 vertex height\n float lineHeight = a_Size.y; // size \u7B2C\u4E8C\u4E2A\u53C2\u6570\u4EE3\u8868\u7684\u9AD8\u5EA6 [linewidth, lineheight]\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n lineHeight *= 0.2; // \u4FDD\u6301\u548C amap/mapbox \u4E00\u81F4\u7684\u6548\u679C\n gl_Position = u_Mvp * (vec4(project_pos.xy + offset, lineHeight, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, lineHeight, 1.0));\n }\n \n if(u_arrow > 0.0 && a_DistanceAndIndex.y < 2.0) {\n vec2 startPoint = a_dirPoints.rg;\n vec2 endPoint = a_dirPoints.ba;\n vec4 t1 = project_position(vec4(startPoint, 0, 1.0));\n vec4 t2 = project_position(vec4(endPoint, 0, 1.0));\n // TODO\uFF1A \u540E\u7EED\u4F18\u5316\u53EF\u4EE5\u628A\u4F4D\u7F6E\u8BA1\u7B97\u653E\u5728 cpu \u4E2D\u5B8C\u6210\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n vec2 p1 = (u_Mvp * vec4(t1.xy, 0.0, 1.0)).xy;\n vec2 p2 = (u_Mvp * vec4(t2.xy, 0.0, 1.0)).xy;\n styleMappingMat[1].rg = normalize(p1 - p2);\n styleMappingMat[1].ba = normalize(gl_Position.xy - p2);\n } else {\n vec2 p1 = project_common_position_to_clipspace(vec4(t1.xy, 0.0, 1.0)).xy;\n vec2 p2 = project_common_position_to_clipspace(vec4(t2.xy, 0.0, 1.0)).xy;\n styleMappingMat[1].rg = normalize(p1 - p2);\n styleMappingMat[1].ba = normalize(gl_Position.xy - p2);\n }\n }\n\n setPickingColor(a_PickingColor);\n}\n";
20
24
 
21
- var LineModel = function (_BaseModel) {
25
+ var LineModel = /*#__PURE__*/function (_BaseModel) {
22
26
  _inherits(LineModel, _BaseModel);
23
27
 
24
28
  var _super = _createSuper(LineModel);
@@ -43,9 +47,11 @@ var LineModel = function (_BaseModel) {
43
47
  arrowWidth: 2,
44
48
  arrowHeight: 3,
45
49
  tailWidth: 1
46
- } : _ref$arrow;
50
+ } : _ref$arrow; // 转化渐变色
51
+
52
+
53
+ var useLinearColor = 0; // 默认不生效
47
54
 
48
- var useLinearColor = 0;
49
55
  var sourceColorArr = [0, 0, 0, 0];
50
56
  var targetColorArr = [0, 0, 0, 0];
51
57
 
@@ -68,7 +74,8 @@ var LineModel = function (_BaseModel) {
68
74
  width = _this$calDataFrame.width,
69
75
  height = _this$calDataFrame.height;
70
76
 
71
- this.rowCount = height;
77
+ this.rowCount = height; // 当前数据纹理有多少行
78
+
72
79
  this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
73
80
  flipY: true,
74
81
  data: data,
@@ -88,11 +95,14 @@ var LineModel = function (_BaseModel) {
88
95
 
89
96
  return {
90
97
  u_dataTexture: this.dataTexture,
98
+ // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]
91
99
  u_cellTypeLayout: this.getCellTypeLayout(),
92
- u_opacity: _isNumber(opacity) ? opacity : 1.0,
100
+ u_opacity: isNumber(opacity) ? opacity : 1.0,
101
+ // 渐变色支持参数
93
102
  u_linearColor: useLinearColor,
94
103
  u_sourceColor: sourceColorArr,
95
104
  u_targetColor: targetColorArr,
105
+ // arrow
96
106
  u_arrow: Number(arrow.enable),
97
107
  u_arrowHeight: arrow.arrowHeight || 3,
98
108
  u_arrowWidth: arrow.arrowWidth || 2,
@@ -114,7 +124,7 @@ var LineModel = function (_BaseModel) {
114
124
  }, {
115
125
  key: "buildModels",
116
126
  value: function () {
117
- var _buildModels = _asyncToGenerator(_regeneratorRuntime.mark(function _callee(callbackModel) {
127
+ var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(callbackModel) {
118
128
  var _ref2, _ref2$mask, mask, _ref2$maskInside, maskInside, _ref2$depth, depth, _this$getShaders, frag, vert;
119
129
 
120
130
  return _regeneratorRuntime.wrap(function _callee$(_context) {
@@ -155,6 +165,11 @@ var LineModel = function (_BaseModel) {
155
165
 
156
166
  return buildModels;
157
167
  }()
168
+ /**
169
+ * 根据参数获取不同的 shader 代码
170
+ * @returns
171
+ */
172
+
158
173
  }, {
159
174
  key: "getShaders",
160
175
  value: function getShaders() {
@@ -173,6 +188,7 @@ var LineModel = function (_BaseModel) {
173
188
  descriptor: {
174
189
  name: 'a_DistanceAndIndex',
175
190
  buffer: {
191
+ // give the WebGL driver a hint that this buffer may change
176
192
  usage: gl.STATIC_DRAW,
177
193
  data: [],
178
194
  type: gl.FLOAT
@@ -189,12 +205,14 @@ var LineModel = function (_BaseModel) {
189
205
  descriptor: {
190
206
  name: 'a_dirPoints',
191
207
  buffer: {
208
+ // give the WebGL driver a hint that this buffer may change
192
209
  usage: gl.STATIC_DRAW,
193
210
  data: [],
194
211
  type: gl.FLOAT
195
212
  },
196
213
  size: 4,
197
214
  update: function update(feature, featureIdx, vertex, attributeIdx) {
215
+ // console.log(feature)
198
216
  var startPoint = feature.coordinates[0] || [0, 0];
199
217
  var endPoint = feature.coordinates[3] || [0, 0];
200
218
  return [startPoint[0], startPoint[1], endPoint[0], endPoint[1]];
@@ -207,6 +225,7 @@ var LineModel = function (_BaseModel) {
207
225
  descriptor: {
208
226
  name: 'a_Size',
209
227
  buffer: {
228
+ // give the WebGL driver a hint that this buffer may change
210
229
  usage: gl.DYNAMIC_DRAW,
211
230
  data: [],
212
231
  type: gl.FLOAT
@@ -218,13 +237,15 @@ var LineModel = function (_BaseModel) {
218
237
  return Array.isArray(size) ? [size[0], size[1]] : [size, 0];
219
238
  }
220
239
  }
221
- });
240
+ }); // point layer size;
241
+
222
242
  this.styleAttributeService.registerStyleAttribute({
223
243
  name: 'normal',
224
244
  type: AttributeType.Attribute,
225
245
  descriptor: {
226
246
  name: 'a_Normal',
227
247
  buffer: {
248
+ // give the WebGL driver a hint that this buffer may change
228
249
  usage: gl.STATIC_DRAW,
229
250
  data: [],
230
251
  type: gl.FLOAT
@@ -241,6 +262,7 @@ var LineModel = function (_BaseModel) {
241
262
  descriptor: {
242
263
  name: 'a_Miter',
243
264
  buffer: {
265
+ // give the WebGL driver a hint that this buffer may change
244
266
  usage: gl.STATIC_DRAW,
245
267
  data: [],
246
268
  type: gl.FLOAT
@@ -257,5 +279,4 @@ var LineModel = function (_BaseModel) {
257
279
  return LineModel;
258
280
  }(BaseModel);
259
281
 
260
- export { LineModel as default };
261
- //# sourceMappingURL=half.js.map
282
+ export { LineModel as default };
@@ -1,14 +1,14 @@
1
- import LineTileModel from '../../tile/models/tileModel';
2
- import ArcModel from './arc';
3
- import Arc3DModel from './arc_3d';
4
- import EarthArc3DModel from './earthArc_3d';
5
- import GreatCircleModel from './great_circle';
6
- import LineHalfModel from './half';
7
- import LineModel from './line';
8
- import LinearLine from './linearline';
9
- import SimpleLineModel from './simpleLine';
10
- import TileLineModel from './tile';
11
- import LineWallModel from './wall';
1
+ import LineTileModel from "../../tile/models/tileModel";
2
+ import ArcModel from "./arc";
3
+ import Arc3DModel from "./arc_3d";
4
+ import EarthArc3DModel from "./earthArc_3d";
5
+ import GreatCircleModel from "./great_circle";
6
+ import LineHalfModel from "./half";
7
+ import LineModel from "./line";
8
+ import LinearLine from "./linearline";
9
+ import SimpleLineModel from "./simpleLine";
10
+ import TileLineModel from "./tile";
11
+ import LineWallModel from "./wall";
12
12
  var LineModels = {
13
13
  arc: ArcModel,
14
14
  arc3d: Arc3DModel,
@@ -22,5 +22,4 @@ var LineModels = {
22
22
  tileLine: TileLineModel,
23
23
  earthArc3d: EarthArc3DModel
24
24
  };
25
- export default LineModels;
26
- //# sourceMappingURL=index.js.map
25
+ export default LineModels;