@antv/l7-layers 2.9.18 → 2.9.19

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 (354) hide show
  1. package/es/Geometry/index.js +12 -2
  2. package/es/Geometry/index.js.map +1 -1
  3. package/es/Geometry/models/billboard.d.ts +3 -3
  4. package/es/Geometry/models/billboard.js +11 -6
  5. package/es/Geometry/models/billboard.js.map +1 -1
  6. package/es/Geometry/models/plane.d.ts +3 -3
  7. package/es/Geometry/models/plane.js +12 -7
  8. package/es/Geometry/models/plane.js.map +1 -1
  9. package/es/Geometry/models/sprite.d.ts +3 -3
  10. package/es/Geometry/models/sprite.js +11 -6
  11. package/es/Geometry/models/sprite.js.map +1 -1
  12. package/es/canvas/index.js +12 -2
  13. package/es/canvas/index.js.map +1 -1
  14. package/es/citybuliding/building.js +12 -2
  15. package/es/citybuliding/building.js.map +1 -1
  16. package/es/citybuliding/models/build.d.ts +2 -1
  17. package/es/citybuliding/models/build.js +16 -3
  18. package/es/citybuliding/models/build.js.map +1 -1
  19. package/es/core/BaseLayer.d.ts +1 -1
  20. package/es/core/BaseLayer.js +105 -62
  21. package/es/core/BaseLayer.js.map +1 -1
  22. package/es/core/BaseModel.d.ts +2 -2
  23. package/es/core/BaseModel.js +2 -2
  24. package/es/core/BaseModel.js.map +1 -1
  25. package/es/core/interface.d.ts +2 -0
  26. package/es/core/interface.js.map +1 -1
  27. package/es/core/triangulation.js +1 -2
  28. package/es/core/triangulation.js.map +1 -1
  29. package/es/earth/index.js +8 -2
  30. package/es/earth/index.js.map +1 -1
  31. package/es/earth/models/atmosphere.d.ts +2 -2
  32. package/es/earth/models/atmosphere.js +11 -6
  33. package/es/earth/models/atmosphere.js.map +1 -1
  34. package/es/earth/models/base.d.ts +2 -2
  35. package/es/earth/models/base.js +11 -6
  36. package/es/earth/models/base.js.map +1 -1
  37. package/es/earth/models/bloomsphere.d.ts +2 -2
  38. package/es/earth/models/bloomsphere.js +11 -6
  39. package/es/earth/models/bloomsphere.js.map +1 -1
  40. package/es/heatmap/index.js +17 -5
  41. package/es/heatmap/index.js.map +1 -1
  42. package/es/heatmap/models/grid.d.ts +2 -2
  43. package/es/heatmap/models/grid.js +12 -8
  44. package/es/heatmap/models/grid.js.map +1 -1
  45. package/es/heatmap/models/grid3d.d.ts +2 -2
  46. package/es/heatmap/models/grid3d.js +12 -6
  47. package/es/heatmap/models/grid3d.js.map +1 -1
  48. package/es/heatmap/models/heatmap.d.ts +2 -2
  49. package/es/heatmap/models/heatmap.js +112 -62
  50. package/es/heatmap/models/heatmap.js.map +1 -1
  51. package/es/heatmap/models/hexagon.d.ts +2 -2
  52. package/es/heatmap/models/hexagon.js +11 -6
  53. package/es/heatmap/models/hexagon.js.map +1 -1
  54. package/es/image/index.js +12 -2
  55. package/es/image/index.js.map +1 -1
  56. package/es/image/models/dataImage.d.ts +3 -3
  57. package/es/image/models/dataImage.js +10 -5
  58. package/es/image/models/dataImage.js.map +1 -1
  59. package/es/image/models/image.d.ts +3 -3
  60. package/es/image/models/image.js +11 -7
  61. package/es/image/models/image.js.map +1 -1
  62. package/es/line/index.d.ts +0 -2
  63. package/es/line/index.js +12 -5
  64. package/es/line/index.js.map +1 -1
  65. package/es/line/models/arc.d.ts +2 -2
  66. package/es/line/models/arc.js +14 -9
  67. package/es/line/models/arc.js.map +1 -1
  68. package/es/line/models/arc_3d.d.ts +2 -2
  69. package/es/line/models/arc_3d.js +13 -8
  70. package/es/line/models/arc_3d.js.map +1 -1
  71. package/es/line/models/earthArc_3d.d.ts +2 -2
  72. package/es/line/models/earthArc_3d.js +17 -9
  73. package/es/line/models/earthArc_3d.js.map +1 -1
  74. package/es/line/models/great_circle.d.ts +2 -2
  75. package/es/line/models/great_circle.js +11 -6
  76. package/es/line/models/great_circle.js.map +1 -1
  77. package/es/line/models/half.d.ts +2 -2
  78. package/es/line/models/half.js +46 -29
  79. package/es/line/models/half.js.map +1 -1
  80. package/es/line/models/index.d.ts +1 -1
  81. package/es/line/models/index.js +0 -2
  82. package/es/line/models/index.js.map +1 -1
  83. package/es/line/models/line.d.ts +2 -2
  84. package/es/line/models/line.js +27 -15
  85. package/es/line/models/line.js.map +1 -1
  86. package/es/line/models/linearline.d.ts +2 -11
  87. package/es/line/models/linearline.js +14 -24
  88. package/es/line/models/linearline.js.map +1 -1
  89. package/es/line/models/simpleLine.d.ts +2 -2
  90. package/es/line/models/simpleLine.js +13 -8
  91. package/es/line/models/simpleLine.js.map +1 -1
  92. package/es/line/models/tile.d.ts +2 -11
  93. package/es/line/models/tile.js +45 -39
  94. package/es/line/models/tile.js.map +1 -1
  95. package/es/line/models/wall.d.ts +2 -2
  96. package/es/line/models/wall.js +13 -9
  97. package/es/line/models/wall.js.map +1 -1
  98. package/es/mask/index.js +12 -2
  99. package/es/mask/index.js.map +1 -1
  100. package/es/mask/models/fill.d.ts +2 -2
  101. package/es/mask/models/fill.js +53 -27
  102. package/es/mask/models/fill.js.map +1 -1
  103. package/es/plugins/DataMappingPlugin.js +29 -8
  104. package/es/plugins/DataMappingPlugin.js.map +1 -1
  105. package/es/plugins/DataSourcePlugin.js +14 -5
  106. package/es/plugins/DataSourcePlugin.js.map +1 -1
  107. package/es/plugins/LayerModelPlugin.d.ts +2 -0
  108. package/es/plugins/LayerModelPlugin.js +35 -7
  109. package/es/plugins/LayerModelPlugin.js.map +1 -1
  110. package/es/plugins/PixelPickingPlugin.js +16 -13
  111. package/es/plugins/PixelPickingPlugin.js.map +1 -1
  112. package/es/point/index.d.ts +1 -1
  113. package/es/point/index.js +26 -15
  114. package/es/point/index.js.map +1 -1
  115. package/es/point/models/earthExtrude.d.ts +2 -2
  116. package/es/point/models/earthExtrude.js +16 -14
  117. package/es/point/models/earthExtrude.js.map +1 -1
  118. package/es/point/models/earthFill.d.ts +2 -11
  119. package/es/point/models/earthFill.js +13 -22
  120. package/es/point/models/earthFill.js.map +1 -1
  121. package/es/point/models/extrude.d.ts +2 -2
  122. package/es/point/models/extrude.js +49 -27
  123. package/es/point/models/extrude.js.map +1 -1
  124. package/es/point/models/fill.d.ts +2 -2
  125. package/es/point/models/fill.js +59 -41
  126. package/es/point/models/fill.js.map +1 -1
  127. package/es/point/models/fillmage.d.ts +2 -7
  128. package/es/point/models/fillmage.js +13 -22
  129. package/es/point/models/fillmage.js.map +1 -1
  130. package/es/point/models/image.d.ts +2 -2
  131. package/es/point/models/image.js +11 -6
  132. package/es/point/models/image.js.map +1 -1
  133. package/es/point/models/index.d.ts +1 -1
  134. package/es/point/models/index.js +0 -2
  135. package/es/point/models/index.js.map +1 -1
  136. package/es/point/models/normal.d.ts +2 -2
  137. package/es/point/models/normal.js +11 -6
  138. package/es/point/models/normal.js.map +1 -1
  139. package/es/point/models/radar.d.ts +2 -11
  140. package/es/point/models/radar.js +13 -22
  141. package/es/point/models/radar.js.map +1 -1
  142. package/es/point/models/simplePoint.d.ts +2 -2
  143. package/es/point/models/simplePoint.js +11 -6
  144. package/es/point/models/simplePoint.js.map +1 -1
  145. package/es/point/models/text.d.ts +3 -2
  146. package/es/point/models/text.js +110 -75
  147. package/es/point/models/text.js.map +1 -1
  148. package/es/point/models/tile.d.ts +2 -11
  149. package/es/point/models/tile.js +22 -25
  150. package/es/point/models/tile.js.map +1 -1
  151. package/es/polygon/index.js +12 -2
  152. package/es/polygon/index.js.map +1 -1
  153. package/es/polygon/models/extrude.d.ts +2 -2
  154. package/es/polygon/models/extrude.js +10 -5
  155. package/es/polygon/models/extrude.js.map +1 -1
  156. package/es/polygon/models/fill.d.ts +2 -2
  157. package/es/polygon/models/fill.js +27 -13
  158. package/es/polygon/models/fill.js.map +1 -1
  159. package/es/polygon/models/ocean.d.ts +2 -2
  160. package/es/polygon/models/ocean.js +12 -6
  161. package/es/polygon/models/ocean.js.map +1 -1
  162. package/es/polygon/models/tile.d.ts +2 -3
  163. package/es/polygon/models/tile.js +17 -27
  164. package/es/polygon/models/tile.js.map +1 -1
  165. package/es/polygon/models/water.d.ts +2 -2
  166. package/es/polygon/models/water.js +12 -6
  167. package/es/polygon/models/water.js.map +1 -1
  168. package/es/raster/index.js +12 -2
  169. package/es/raster/index.js.map +1 -1
  170. package/es/raster/models/raster.d.ts +3 -3
  171. package/es/raster/models/raster.js +11 -7
  172. package/es/raster/models/raster.js.map +1 -1
  173. package/es/tile/manager/tileLayerManager.js +3 -0
  174. package/es/tile/manager/tileLayerManager.js.map +1 -1
  175. package/es/tile/manager/tilePickerManager.js +1 -0
  176. package/es/tile/manager/tilePickerManager.js.map +1 -1
  177. package/es/tile/tileFactory/base.js.map +1 -1
  178. package/es/tile/tileFactory/point.js.map +1 -1
  179. package/es/tile/tileFactory/rasterDataLayer.js +12 -2
  180. package/es/tile/tileFactory/rasterDataLayer.js.map +1 -1
  181. package/es/tile/tileFactory/vectorLayer.js +12 -2
  182. package/es/tile/tileFactory/vectorLayer.js.map +1 -1
  183. package/es/wind/index.js +12 -2
  184. package/es/wind/index.js.map +1 -1
  185. package/es/wind/models/wind.d.ts +4 -2
  186. package/es/wind/models/wind.js +50 -18
  187. package/es/wind/models/wind.js.map +1 -1
  188. package/es/wind/models/windRender.js +1 -1
  189. package/es/wind/models/windRender.js.map +1 -1
  190. package/lib/Geometry/index.js +12 -2
  191. package/lib/Geometry/index.js.map +1 -1
  192. package/lib/Geometry/models/billboard.js +11 -6
  193. package/lib/Geometry/models/billboard.js.map +1 -1
  194. package/lib/Geometry/models/plane.js +12 -7
  195. package/lib/Geometry/models/plane.js.map +1 -1
  196. package/lib/Geometry/models/sprite.js +11 -6
  197. package/lib/Geometry/models/sprite.js.map +1 -1
  198. package/lib/canvas/index.js +12 -2
  199. package/lib/canvas/index.js.map +1 -1
  200. package/lib/citybuliding/building.js +12 -2
  201. package/lib/citybuliding/building.js.map +1 -1
  202. package/lib/citybuliding/models/build.js +16 -3
  203. package/lib/citybuliding/models/build.js.map +1 -1
  204. package/lib/core/BaseLayer.js +104 -61
  205. package/lib/core/BaseLayer.js.map +1 -1
  206. package/lib/core/BaseModel.js +2 -2
  207. package/lib/core/BaseModel.js.map +1 -1
  208. package/lib/core/interface.js.map +1 -1
  209. package/lib/core/triangulation.js +4 -6
  210. package/lib/core/triangulation.js.map +1 -1
  211. package/lib/earth/index.js +8 -2
  212. package/lib/earth/index.js.map +1 -1
  213. package/lib/earth/models/atmosphere.js +11 -6
  214. package/lib/earth/models/atmosphere.js.map +1 -1
  215. package/lib/earth/models/base.js +11 -6
  216. package/lib/earth/models/base.js.map +1 -1
  217. package/lib/earth/models/bloomsphere.js +11 -6
  218. package/lib/earth/models/bloomsphere.js.map +1 -1
  219. package/lib/heatmap/index.js +17 -5
  220. package/lib/heatmap/index.js.map +1 -1
  221. package/lib/heatmap/models/grid.js +12 -8
  222. package/lib/heatmap/models/grid.js.map +1 -1
  223. package/lib/heatmap/models/grid3d.js +12 -6
  224. package/lib/heatmap/models/grid3d.js.map +1 -1
  225. package/lib/heatmap/models/heatmap.js +113 -62
  226. package/lib/heatmap/models/heatmap.js.map +1 -1
  227. package/lib/heatmap/models/hexagon.js +11 -6
  228. package/lib/heatmap/models/hexagon.js.map +1 -1
  229. package/lib/image/index.js +12 -2
  230. package/lib/image/index.js.map +1 -1
  231. package/lib/image/models/dataImage.js +10 -5
  232. package/lib/image/models/dataImage.js.map +1 -1
  233. package/lib/image/models/image.js +11 -7
  234. package/lib/image/models/image.js.map +1 -1
  235. package/lib/line/index.js +12 -5
  236. package/lib/line/index.js.map +1 -1
  237. package/lib/line/models/arc.js +14 -9
  238. package/lib/line/models/arc.js.map +1 -1
  239. package/lib/line/models/arc_3d.js +13 -8
  240. package/lib/line/models/arc_3d.js.map +1 -1
  241. package/lib/line/models/earthArc_3d.js +17 -9
  242. package/lib/line/models/earthArc_3d.js.map +1 -1
  243. package/lib/line/models/great_circle.js +11 -6
  244. package/lib/line/models/great_circle.js.map +1 -1
  245. package/lib/line/models/half.js +48 -29
  246. package/lib/line/models/half.js.map +1 -1
  247. package/lib/line/models/index.js +0 -3
  248. package/lib/line/models/index.js.map +1 -1
  249. package/lib/line/models/line.js +28 -17
  250. package/lib/line/models/line.js.map +1 -1
  251. package/lib/line/models/linearline.js +14 -24
  252. package/lib/line/models/linearline.js.map +1 -1
  253. package/lib/line/models/simpleLine.js +13 -8
  254. package/lib/line/models/simpleLine.js.map +1 -1
  255. package/lib/line/models/tile.js +47 -39
  256. package/lib/line/models/tile.js.map +1 -1
  257. package/lib/line/models/wall.js +13 -9
  258. package/lib/line/models/wall.js.map +1 -1
  259. package/lib/mask/index.js +12 -2
  260. package/lib/mask/index.js.map +1 -1
  261. package/lib/mask/models/fill.js +55 -27
  262. package/lib/mask/models/fill.js.map +1 -1
  263. package/lib/plugins/DataMappingPlugin.js +29 -8
  264. package/lib/plugins/DataMappingPlugin.js.map +1 -1
  265. package/lib/plugins/DataSourcePlugin.js +13 -4
  266. package/lib/plugins/DataSourcePlugin.js.map +1 -1
  267. package/lib/plugins/LayerModelPlugin.js +35 -7
  268. package/lib/plugins/LayerModelPlugin.js.map +1 -1
  269. package/lib/plugins/PixelPickingPlugin.js +16 -13
  270. package/lib/plugins/PixelPickingPlugin.js.map +1 -1
  271. package/lib/point/index.js +26 -15
  272. package/lib/point/index.js.map +1 -1
  273. package/lib/point/models/earthExtrude.js +16 -15
  274. package/lib/point/models/earthExtrude.js.map +1 -1
  275. package/lib/point/models/earthFill.js +13 -22
  276. package/lib/point/models/earthFill.js.map +1 -1
  277. package/lib/point/models/extrude.js +51 -28
  278. package/lib/point/models/extrude.js.map +1 -1
  279. package/lib/point/models/fill.js +61 -42
  280. package/lib/point/models/fill.js.map +1 -1
  281. package/lib/point/models/fillmage.js +13 -22
  282. package/lib/point/models/fillmage.js.map +1 -1
  283. package/lib/point/models/image.js +11 -6
  284. package/lib/point/models/image.js.map +1 -1
  285. package/lib/point/models/index.js +0 -3
  286. package/lib/point/models/index.js.map +1 -1
  287. package/lib/point/models/normal.js +11 -6
  288. package/lib/point/models/normal.js.map +1 -1
  289. package/lib/point/models/radar.js +13 -22
  290. package/lib/point/models/radar.js.map +1 -1
  291. package/lib/point/models/simplePoint.js +11 -6
  292. package/lib/point/models/simplePoint.js.map +1 -1
  293. package/lib/point/models/text.js +112 -78
  294. package/lib/point/models/text.js.map +1 -1
  295. package/lib/point/models/tile.js +22 -25
  296. package/lib/point/models/tile.js.map +1 -1
  297. package/lib/polygon/index.js +12 -2
  298. package/lib/polygon/index.js.map +1 -1
  299. package/lib/polygon/models/extrude.js +10 -5
  300. package/lib/polygon/models/extrude.js.map +1 -1
  301. package/lib/polygon/models/fill.js +25 -11
  302. package/lib/polygon/models/fill.js.map +1 -1
  303. package/lib/polygon/models/ocean.js +12 -6
  304. package/lib/polygon/models/ocean.js.map +1 -1
  305. package/lib/polygon/models/tile.js +17 -27
  306. package/lib/polygon/models/tile.js.map +1 -1
  307. package/lib/polygon/models/water.js +12 -6
  308. package/lib/polygon/models/water.js.map +1 -1
  309. package/lib/raster/index.js +12 -2
  310. package/lib/raster/index.js.map +1 -1
  311. package/lib/raster/models/raster.js +11 -7
  312. package/lib/raster/models/raster.js.map +1 -1
  313. package/lib/tile/manager/tileLayerManager.js +3 -0
  314. package/lib/tile/manager/tileLayerManager.js.map +1 -1
  315. package/lib/tile/manager/tilePickerManager.js +1 -0
  316. package/lib/tile/manager/tilePickerManager.js.map +1 -1
  317. package/lib/tile/tileFactory/base.js.map +1 -1
  318. package/lib/tile/tileFactory/point.js.map +1 -1
  319. package/lib/tile/tileFactory/rasterDataLayer.js +12 -2
  320. package/lib/tile/tileFactory/rasterDataLayer.js.map +1 -1
  321. package/lib/tile/tileFactory/vectorLayer.js +12 -2
  322. package/lib/tile/tileFactory/vectorLayer.js.map +1 -1
  323. package/lib/wind/index.js +12 -2
  324. package/lib/wind/index.js.map +1 -1
  325. package/lib/wind/models/wind.js +49 -18
  326. package/lib/wind/models/wind.js.map +1 -1
  327. package/lib/wind/models/windRender.js +1 -1
  328. package/lib/wind/models/windRender.js.map +1 -1
  329. package/package.json +9 -8
  330. package/es/line/models/arcmini.d.ts +0 -9
  331. package/es/line/models/arcmini.js +0 -145
  332. package/es/line/models/arcmini.js.map +0 -1
  333. package/es/point/models/icon-font.d.ts +0 -11
  334. package/es/point/models/icon-font.js +0 -181
  335. package/es/point/models/icon-font.js.map +0 -1
  336. package/es/raster/image.d.ts +0 -0
  337. package/es/raster/image.js +0 -2
  338. package/es/raster/image.js.map +0 -1
  339. package/es/raster/raster2d.d.ts +0 -27
  340. package/es/raster/raster2d.js +0 -158
  341. package/es/raster/raster2d.js.map +0 -1
  342. package/es/utils/geo.d.ts +0 -12
  343. package/es/utils/geo.js +0 -53
  344. package/es/utils/geo.js.map +0 -1
  345. package/lib/line/models/arcmini.js +0 -161
  346. package/lib/line/models/arcmini.js.map +0 -1
  347. package/lib/point/models/icon-font.js +0 -196
  348. package/lib/point/models/icon-font.js.map +0 -1
  349. package/lib/raster/image.js +0 -2
  350. package/lib/raster/image.js.map +0 -1
  351. package/lib/raster/raster2d.js +0 -172
  352. package/lib/raster/raster2d.js.map +0 -1
  353. package/lib/utils/geo.js +0 -65
  354. package/lib/utils/geo.js.map +0 -1
@@ -51,14 +51,24 @@ var RasterTiffLayer = function (_BaseLayer) {
51
51
  (0, _createClass2.default)(RasterTiffLayer, [{
52
52
  key: "buildModels",
53
53
  value: function buildModels() {
54
+ var _this2 = this;
55
+
54
56
  var model = this.getModelType();
55
57
  this.layerModel = new model(this);
56
- this.models = this.layerModel.initModels();
58
+ this.layerModel.initModels(function (models) {
59
+ _this2.models = models;
60
+
61
+ _this2.renderLayers();
62
+ });
57
63
  }
58
64
  }, {
59
65
  key: "rebuildModels",
60
66
  value: function rebuildModels() {
61
- this.models = this.layerModel.buildModels();
67
+ var _this3 = this;
68
+
69
+ this.layerModel.buildModels(function (models) {
70
+ return _this3.models = models;
71
+ });
62
72
  }
63
73
  }, {
64
74
  key: "getModelType",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile/tileFactory/rasterDataLayer.ts"],"names":["RasterTiffLayer","layerType","model","getModelType","layerModel","models","initModels","buildModels","RasterModel","properties","opacity","type","minimum","maximum","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;IAEqBA,e;;;;;;;;;;;;;;;uFAGG,MAAKC,S;;;;;;WAC3B,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIF,KAAJ,CAAU,IAAV,CAAlB;AACA,WAAKG,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WAED,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKD,UAAL,CAAgBG,WAAhB,EAAd;AACD;;;WAED,wBAAyB;AACvB,aAAOC,eAAP;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,4BAA6B;AAC3B,aAAO,EAAP;AACD;;;EA/B0CC,mB","sourcesContent":["import BaseLayer from '../../core/BaseLayer';\nimport { IRasterLayerStyleOptions } from '../../core/interface';\nimport RasterModel from '../../raster/models/raster';\n\nexport default class RasterTiffLayer extends BaseLayer<\n Partial<IRasterLayerStyleOptions>\n> {\n public type: string = this.layerType as string;\n public buildModels() {\n const model = this.getModelType();\n this.layerModel = new model(this);\n this.models = this.layerModel.initModels();\n }\n\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n protected getModelType() {\n return RasterModel;\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getDefaultConfig() {\n return {};\n }\n}\n"],"file":"rasterDataLayer.js"}
1
+ {"version":3,"sources":["../../../src/tile/tileFactory/rasterDataLayer.ts"],"names":["RasterTiffLayer","layerType","model","getModelType","layerModel","initModels","models","renderLayers","buildModels","RasterModel","properties","opacity","type","minimum","maximum","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;IAEqBA,e;;;;;;;;;;;;;;;uFAGG,MAAKC,S;;;;;;WAC3B,uBAAqB;AAAA;;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIF,KAAJ,CAAU,IAAV,CAAlB;AACA,WAAKE,UAAL,CAAgBC,UAAhB,CAA2B,UAACC,MAAD,EAAY;AACrC,QAAA,MAAI,CAACA,MAAL,GAAcA,MAAd;;AACA,QAAA,MAAI,CAACC,YAAL;AACD,OAHD;AAID;;;WAED,yBAAuB;AAAA;;AACrB,WAAKH,UAAL,CAAgBI,WAAhB,CAA4B,UAACF,MAAD;AAAA,eAAa,MAAI,CAACA,MAAL,GAAcA,MAA3B;AAAA,OAA5B;AACD;;;WAED,wBAAyB;AACvB,aAAOG,eAAP;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,4BAA6B;AAC3B,aAAO,EAAP;AACD;;;EAlC0CC,mB","sourcesContent":["import BaseLayer from '../../core/BaseLayer';\nimport { IRasterLayerStyleOptions } from '../../core/interface';\nimport RasterModel from '../../raster/models/raster';\n\nexport default class RasterTiffLayer extends BaseLayer<\n Partial<IRasterLayerStyleOptions>\n> {\n public type: string = this.layerType as string;\n public buildModels() {\n const model = this.getModelType();\n this.layerModel = new model(this);\n this.layerModel.initModels((models) => {\n this.models = models;\n this.renderLayers();\n });\n }\n\n public rebuildModels() {\n this.layerModel.buildModels((models) => (this.models = models));\n }\n\n protected getModelType() {\n return RasterModel;\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getDefaultConfig() {\n return {};\n }\n}\n"],"file":"rasterDataLayer.js"}
@@ -69,14 +69,24 @@ var VectorLayer = function (_BaseLayer) {
69
69
  }, {
70
70
  key: "buildModels",
71
71
  value: function buildModels() {
72
+ var _this2 = this;
73
+
72
74
  var model = this.getModelType();
73
75
  this.layerModel = new model(this);
74
- this.models = this.layerModel.initModels();
76
+ this.layerModel.initModels(function (models) {
77
+ _this2.models = models;
78
+
79
+ _this2.renderLayers();
80
+ });
75
81
  }
76
82
  }, {
77
83
  key: "rebuildModels",
78
84
  value: function rebuildModels() {
79
- this.models = this.layerModel.buildModels();
85
+ var _this3 = this;
86
+
87
+ this.layerModel.buildModels(function (models) {
88
+ return _this3.models = models;
89
+ });
80
90
  }
81
91
  }, {
82
92
  key: "getModelType",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile/tileFactory/vectorLayer.ts"],"names":["VectorLayer","layerType","pickedID","model","getModelType","layerModel","models","initModels","buildModels","polygonFillModel","lineFillModel","getPointModel","pointFillModel","layerData","getEncodedData","getLayerConfig","shape2d","item","find","fe","hasOwnProperty","shape","indexOf","pointTextModel","properties","opacity","type","minimum","maximum","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;AAMA;;AACA;;AACA;;AACA;;;;;;IAEqBA,W;;;;;;;;;;;;;;;2FAKQ,I;uFACL,MAAKC,S;2FAEO,I;;;;;;WAElC,qBAAmB;AACjB,aAAO,KAAKC,QAAZ;AACD;;;WAED,qBAAmB;AACjB,aAAO,KAAKA,QAAZ;AACD;;;WAED,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIF,KAAJ,CAAU,IAAV,CAAlB;AACA,WAAKG,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WAED,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKD,UAAL,CAAgBG,WAAhB,EAAd;AACD;;;WAED,wBAAyB;AACvB,cAAQ,KAAKP,SAAb;AACE,aAAK,cAAL;AACE,iBAAOQ,cAAP;;AACF,aAAK,WAAL;AACE,iBAAOC,aAAP;;AACF,aAAK,YAAL;AACE,iBAAO,KAAKC,aAAL,EAAP;;AACF;AACE,iBAAOC,cAAP;AARJ;AAUD;;;WAED,yBAA0B;AACxB,UAAMC,SAAS,GAAG,KAAKC,cAAL,EAAlB;;AACA,iCAAoB,KAAKC,cAAL,EAApB;AAAA,UAAQC,OAAR,wBAAQA,OAAR;;AACA,UAAMC,IAAI,GAAGJ,SAAS,CAACK,IAAV,CAAe,UAACC,EAAD,EAAwB;AAClD,eAAOA,EAAE,CAACC,cAAH,CAAkB,OAAlB,CAAP;AACD,OAFY,CAAb;;AAIA,UAAIH,IAAJ,EAAU;AACR,YAAMI,KAAK,GAAGJ,IAAI,CAACI,KAAnB;;AACA,YAAI,CAAAL,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEM,OAAT,CAAiBD,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAOT,cAAP;AACD,SAFD,MAEO;AACL,iBAAOW,aAAP;AACD;AACF,OAPD,MAOO;AACL,eAAOX,cAAP;AACD;AACF;;;WAED,2BAA4B;AAC1B,aAAO;AACLY,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,4BAA6B;AAC3B,aAAO,EAAP;AACD;;;EA1EsCC,mB","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../../core/BaseLayer';\nimport {\n ILineLayerStyleOptions,\n IPointLayerStyleOptions,\n IPolygonLayerStyleOptions,\n} from '../../core/interface';\nimport lineFillModel from '../../line/models/tile';\nimport pointTextModel from '../../point/models/text';\nimport pointFillModel from '../../point/models/tile';\nimport polygonFillModel from '../../polygon/models/tile';\n\nexport default class VectorLayer extends BaseLayer<\n Partial<\n IPolygonLayerStyleOptions & ILineLayerStyleOptions & IPointLayerStyleOptions\n >\n> {\n public isVector: boolean = true;\n public type: string = this.layerType as string;\n // Tip: 单独被 tile 瓦片的渲染链路使用(用于优化性能)\n private pickedID: number | null = null;\n\n public getPickID() {\n return this.pickedID;\n }\n\n public setPickID() {\n return this.pickedID;\n }\n\n public buildModels() {\n const model = this.getModelType();\n this.layerModel = new model(this);\n this.models = this.layerModel.initModels();\n }\n\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n protected getModelType() {\n switch (this.layerType) {\n case 'PolygonLayer':\n return polygonFillModel;\n case 'LineLayer':\n return lineFillModel;\n case 'PointLayer':\n return this.getPointModel();\n default:\n return pointFillModel;\n }\n }\n\n protected getPointModel() {\n const layerData = this.getEncodedData();\n const { shape2d } = this.getLayerConfig();\n const item = layerData.find((fe: IEncodeFeature) => {\n return fe.hasOwnProperty('shape');\n });\n // only support pointFill & pointText now\n if (item) {\n const shape = item.shape;\n if (shape2d?.indexOf(shape as string) !== -1) {\n return pointFillModel;\n } else {\n return pointTextModel;\n }\n } else {\n return pointFillModel;\n }\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getDefaultConfig() {\n return {};\n }\n}\n"],"file":"vectorLayer.js"}
1
+ {"version":3,"sources":["../../../src/tile/tileFactory/vectorLayer.ts"],"names":["VectorLayer","layerType","pickedID","model","getModelType","layerModel","initModels","models","renderLayers","buildModels","polygonFillModel","lineFillModel","getPointModel","pointFillModel","layerData","getEncodedData","getLayerConfig","shape2d","item","find","fe","hasOwnProperty","shape","indexOf","pointTextModel","properties","opacity","type","minimum","maximum","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;AAMA;;AACA;;AACA;;AACA;;;;;;IAEqBA,W;;;;;;;;;;;;;;;2FAKQ,I;uFACL,MAAKC,S;2FAEO,I;;;;;;WAElC,qBAAmB;AACjB,aAAO,KAAKC,QAAZ;AACD;;;WAED,qBAAmB;AACjB,aAAO,KAAKA,QAAZ;AACD;;;WAED,uBAAqB;AAAA;;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIF,KAAJ,CAAU,IAAV,CAAlB;AACA,WAAKE,UAAL,CAAgBC,UAAhB,CAA2B,UAACC,MAAD,EAAY;AACrC,QAAA,MAAI,CAACA,MAAL,GAAcA,MAAd;;AACA,QAAA,MAAI,CAACC,YAAL;AACD,OAHD;AAID;;;WAED,yBAAuB;AAAA;;AACrB,WAAKH,UAAL,CAAgBI,WAAhB,CAA4B,UAACF,MAAD;AAAA,eAAa,MAAI,CAACA,MAAL,GAAcA,MAA3B;AAAA,OAA5B;AACD;;;WAED,wBAAyB;AACvB,cAAQ,KAAKN,SAAb;AACE,aAAK,cAAL;AACE,iBAAOS,cAAP;;AACF,aAAK,WAAL;AACE,iBAAOC,aAAP;;AACF,aAAK,YAAL;AACE,iBAAO,KAAKC,aAAL,EAAP;;AACF;AACE,iBAAOC,cAAP;AARJ;AAUD;;;WAED,yBAA0B;AACxB,UAAMC,SAAS,GAAG,KAAKC,cAAL,EAAlB;;AACA,iCAAoB,KAAKC,cAAL,EAApB;AAAA,UAAQC,OAAR,wBAAQA,OAAR;;AACA,UAAMC,IAAI,GAAGJ,SAAS,CAACK,IAAV,CAAe,UAACC,EAAD,EAAwB;AAClD,eAAOA,EAAE,CAACC,cAAH,CAAkB,OAAlB,CAAP;AACD,OAFY,CAAb;;AAIA,UAAIH,IAAJ,EAAU;AACR,YAAMI,KAAK,GAAGJ,IAAI,CAACI,KAAnB;;AACA,YAAI,CAAAL,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEM,OAAT,CAAiBD,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAOT,cAAP;AACD,SAFD,MAEO;AACL,iBAAOW,aAAP;AACD;AACF,OAPD,MAOO;AACL,eAAOX,cAAP;AACD;AACF;;;WAED,2BAA4B;AAC1B,aAAO;AACLY,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,4BAA6B;AAC3B,aAAO,EAAP;AACD;;;EA7EsCC,mB","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../../core/BaseLayer';\nimport {\n ILineLayerStyleOptions,\n IPointLayerStyleOptions,\n IPolygonLayerStyleOptions,\n} from '../../core/interface';\nimport lineFillModel from '../../line/models/tile';\nimport pointTextModel from '../../point/models/text';\nimport pointFillModel from '../../point/models/tile';\nimport polygonFillModel from '../../polygon/models/tile';\n\nexport default class VectorLayer extends BaseLayer<\n Partial<\n IPolygonLayerStyleOptions & ILineLayerStyleOptions & IPointLayerStyleOptions\n >\n> {\n public isVector: boolean = true;\n public type: string = this.layerType as string;\n // Tip: 单独被 tile 瓦片的渲染链路使用(用于优化性能)\n private pickedID: number | null = null;\n\n public getPickID() {\n return this.pickedID;\n }\n\n public setPickID() {\n return this.pickedID;\n }\n\n public buildModels() {\n const model = this.getModelType();\n this.layerModel = new model(this);\n this.layerModel.initModels((models) => {\n this.models = models;\n this.renderLayers();\n });\n }\n\n public rebuildModels() {\n this.layerModel.buildModels((models) => (this.models = models));\n }\n\n protected getModelType() {\n switch (this.layerType) {\n case 'PolygonLayer':\n return polygonFillModel;\n case 'LineLayer':\n return lineFillModel;\n case 'PointLayer':\n return this.getPointModel();\n default:\n return pointFillModel;\n }\n }\n\n protected getPointModel() {\n const layerData = this.getEncodedData();\n const { shape2d } = this.getLayerConfig();\n const item = layerData.find((fe: IEncodeFeature) => {\n return fe.hasOwnProperty('shape');\n });\n // only support pointFill & pointText now\n if (item) {\n const shape = item.shape;\n if (shape2d?.indexOf(shape as string) !== -1) {\n return pointFillModel;\n } else {\n return pointTextModel;\n }\n } else {\n return pointFillModel;\n }\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getDefaultConfig() {\n return {};\n }\n}\n"],"file":"vectorLayer.js"}
package/lib/wind/index.js CHANGED
@@ -51,14 +51,24 @@ var WindLayer = function (_BaseLayer) {
51
51
  (0, _createClass2.default)(WindLayer, [{
52
52
  key: "buildModels",
53
53
  value: function buildModels() {
54
+ var _this2 = this;
55
+
54
56
  var modelType = this.getModelType();
55
57
  this.layerModel = new _models.default[modelType](this);
56
- this.models = this.layerModel.initModels();
58
+ this.layerModel.initModels(function (models) {
59
+ _this2.models = models;
60
+
61
+ _this2.renderLayers();
62
+ });
57
63
  }
58
64
  }, {
59
65
  key: "rebuildModels",
60
66
  value: function rebuildModels() {
61
- this.models = this.layerModel.buildModels();
67
+ var _this3 = this;
68
+
69
+ this.layerModel.buildModels(function (models) {
70
+ return _this3.models = models;
71
+ });
62
72
  }
63
73
  }, {
64
74
  key: "renderModels",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/wind/index.ts"],"names":["WindLayer","modelType","getModelType","layerModel","WindModels","models","initModels","buildModels","render","properties","opacity","type","minimum","maximum","defaultConfig","wind","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;IACqBA,S;;;;;;;;;;;;;;;uFACG,W;;;;;;WACtB,uBAAqB;AACnB,UAAMC,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,WAAKC,UAAL,GAAkB,IAAIC,gBAAWH,SAAX,CAAJ,CAA0B,IAA1B,CAAlB;AACA,WAAKI,MAAL,GAAc,KAAKF,UAAL,CAAgBG,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKF,UAAL,CAAgBI,WAAhB,EAAd;AACD;;;WAED,wBAAsB;AACpB,UAAI,KAAKJ,UAAT,EAAqB;AACnB,aAAKA,UAAL,CAAgBK,MAAhB;AACD;;AAED,aAAO,IAAP;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKT,YAAL,EAAb;AACA,UAAMY,aAAa,GAAG;AACpBC,QAAAA,IAAI,EAAE;AADc,OAAtB;AAGA,aAAOD,aAAa,CAACH,IAAD,CAApB;AACD;;;WAED,wBAAwC;AACtC,aAAO,MAAP;AACD;;;EAvCoCK,mB","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport { IWindLayerStyleOptions } from '../core/interface';\nimport WindModels, { WindModelType } from './models';\nexport default class WindLayer extends BaseLayer<IWindLayerStyleOptions> {\n public type: string = 'WindLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new WindModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n public renderModels() {\n if (this.layerModel) {\n this.layerModel.render(); // 独立的渲染流程\n }\n\n return this;\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n wind: {},\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): WindModelType {\n return 'wind';\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/wind/index.ts"],"names":["WindLayer","modelType","getModelType","layerModel","WindModels","initModels","models","renderLayers","buildModels","render","properties","opacity","type","minimum","maximum","defaultConfig","wind","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;IACqBA,S;;;;;;;;;;;;;;;uFACG,W;;;;;;WACtB,uBAAqB;AAAA;;AACnB,UAAMC,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,WAAKC,UAAL,GAAkB,IAAIC,gBAAWH,SAAX,CAAJ,CAA0B,IAA1B,CAAlB;AACA,WAAKE,UAAL,CAAgBE,UAAhB,CAA2B,UAACC,MAAD,EAAY;AACrC,QAAA,MAAI,CAACA,MAAL,GAAcA,MAAd;;AACA,QAAA,MAAI,CAACC,YAAL;AACD,OAHD;AAID;;;WACD,yBAAuB;AAAA;;AACrB,WAAKJ,UAAL,CAAgBK,WAAhB,CAA4B,UAACF,MAAD;AAAA,eAAa,MAAI,CAACA,MAAL,GAAcA,MAA3B;AAAA,OAA5B;AACD;;;WAED,wBAAsB;AACpB,UAAI,KAAKH,UAAT,EAAqB;AACnB,aAAKA,UAAL,CAAgBM,MAAhB;AACD;;AAED,aAAO,IAAP;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKV,YAAL,EAAb;AACA,UAAMa,aAAa,GAAG;AACpBC,QAAAA,IAAI,EAAE;AADc,OAAtB;AAGA,aAAOD,aAAa,CAACH,IAAD,CAApB;AACD;;;WAED,wBAAwC;AACtC,aAAO,MAAP;AACD;;;EA1CoCK,mB","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport { IWindLayerStyleOptions } from '../core/interface';\nimport WindModels, { WindModelType } from './models';\nexport default class WindLayer extends BaseLayer<IWindLayerStyleOptions> {\n public type: string = 'WindLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new WindModels[modelType](this);\n this.layerModel.initModels((models) => {\n this.models = models;\n this.renderLayers();\n });\n }\n public rebuildModels() {\n this.layerModel.buildModels((models) => (this.models = models));\n }\n\n public renderModels() {\n if (this.layerModel) {\n this.layerModel.render(); // 独立的渲染流程\n }\n\n return this;\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n wind: {},\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): WindModelType {\n return 'wind';\n }\n}\n"],"file":"index.js"}
@@ -69,6 +69,7 @@ var WindModel = function (_BaseModel) {
69
69
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "imageCoords", void 0);
70
70
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sizeScale", 0.5);
71
71
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "frequency", new _l7Utils.FrequencyController(7.2));
72
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "cacheZoom", void 0);
72
73
  return _this;
73
74
  }
74
75
 
@@ -89,8 +90,11 @@ var WindModel = function (_BaseModel) {
89
90
  }
90
91
  }, {
91
92
  key: "initModels",
92
- value: function initModels() {
93
- var _this3 = this;
93
+ value: function initModels(callbackModel) {
94
+ var _source$data,
95
+ _source$data2,
96
+ _source$data2$images,
97
+ _this3 = this;
94
98
 
95
99
  var _ref = this.layer.getLayerConfig(),
96
100
  _ref$uMin = _ref.uMin,
@@ -124,10 +128,13 @@ var WindModel = function (_BaseModel) {
124
128
  height: 0,
125
129
  width: 0
126
130
  });
131
+ this.cacheZoom = Math.floor(this.mapService.getZoom());
127
132
  var glContext = this.rendererService.getGLContext();
128
- this.imageCoords = source.data.dataArray[0].coordinates;
129
- source.data.images.then(function (imageData) {
130
- _this3.sizeScale = sizeScale;
133
+ this.imageCoords = (_source$data = source.data) === null || _source$data === void 0 ? void 0 : _source$data.dataArray[0].coordinates;
134
+ (_source$data2 = source.data) === null || _source$data2 === void 0 ? void 0 : (_source$data2$images = _source$data2.images) === null || _source$data2$images === void 0 ? void 0 : _source$data2$images.then(function (imageData) {
135
+ var _this3$texture;
136
+
137
+ _this3.sizeScale = sizeScale * _this3.getZoomScale();
131
138
 
132
139
  var _this3$getWindSize = _this3.getWindSize(),
133
140
  imageWidth = _this3$getWindSize.imageWidth,
@@ -153,18 +160,18 @@ var WindModel = function (_BaseModel) {
153
160
  image: imageData[0]
154
161
  });
155
162
 
163
+ (_this3$texture = _this3.texture) === null || _this3$texture === void 0 ? void 0 : _this3$texture.destroy();
156
164
  _this3.texture = createTexture2D({
157
- data: imageData[0],
158
- width: imageData[0].width,
159
- height: imageData[0].height
165
+ width: imageWidth,
166
+ height: imageHeight
160
167
  });
161
168
 
162
169
  _this3.layerService.updateLayerRenderList();
163
170
 
164
171
  _this3.layerService.renderLayers();
165
172
  });
166
- this.colorModel = this.layer.buildLayerModel({
167
- moduleName: 'WindLayer',
173
+ this.layer.buildLayerModel({
174
+ moduleName: 'wind',
168
175
  vertexShader: WindVert,
169
176
  fragmentShader: WindFrag,
170
177
  triangulation: _triangulation.RasterImageTriangulation,
@@ -173,16 +180,21 @@ var WindModel = function (_BaseModel) {
173
180
  enable: false
174
181
  },
175
182
  blend: this.getBlend()
183
+ }).then(function (model) {
184
+ _this3.colorModel = model;
185
+ callbackModel([model]);
186
+ }).catch(function (err) {
187
+ console.warn(err);
188
+ callbackModel([]);
176
189
  });
177
- return [this.colorModel];
178
190
  }
179
191
  }, {
180
192
  key: "getWindSize",
181
193
  value: function getWindSize() {
182
194
  var p1 = this.mapService.lngLatToPixel(this.imageCoords[0]);
183
195
  var p2 = this.mapService.lngLatToPixel(this.imageCoords[1]);
184
- var imageWidth = Math.floor((p2.x - p1.x) * this.sizeScale);
185
- var imageHeight = Math.floor((p1.y - p2.y) * this.sizeScale);
196
+ var imageWidth = Math.min(Math.floor((p2.x - p1.x) * this.sizeScale), 2048);
197
+ var imageHeight = Math.min(Math.floor((p1.y - p2.y) * this.sizeScale), 2048);
186
198
  return {
187
199
  imageWidth: imageWidth,
188
200
  imageHeight: imageHeight
@@ -190,8 +202,8 @@ var WindModel = function (_BaseModel) {
190
202
  }
191
203
  }, {
192
204
  key: "buildModels",
193
- value: function buildModels() {
194
- return this.initModels();
205
+ value: function buildModels(callbackModel) {
206
+ this.initModels(callbackModel);
195
207
  }
196
208
  }, {
197
209
  key: "clearModels",
@@ -234,6 +246,11 @@ var WindModel = function (_BaseModel) {
234
246
  }
235
247
  });
236
248
  }
249
+ }, {
250
+ key: "getZoomScale",
251
+ value: function getZoomScale() {
252
+ return Math.min((this.cacheZoom + 4) / 30 * 2, 2);
253
+ }
237
254
  }, {
238
255
  key: "drawWind",
239
256
  value: function drawWind() {
@@ -262,18 +279,24 @@ var WindModel = function (_BaseModel) {
262
279
  _ref2$sizeScale = _ref2.sizeScale,
263
280
  sizeScale = _ref2$sizeScale === void 0 ? 0.5 : _ref2$sizeScale;
264
281
 
265
- if (typeof sizeScale === 'number' && sizeScale !== this.sizeScale) {
282
+ var newNumParticles = numParticles;
283
+ var currentZoom = Math.floor(this.mapService.getZoom());
284
+
285
+ if (typeof sizeScale === 'number' && sizeScale !== this.sizeScale || currentZoom !== this.cacheZoom) {
286
+ var zoomScale = this.getZoomScale();
266
287
  this.sizeScale = sizeScale;
288
+ newNumParticles *= zoomScale;
267
289
 
268
290
  var _this$getWindSize = this.getWindSize(),
269
291
  imageWidth = _this$getWindSize.imageWidth,
270
292
  imageHeight = _this$getWindSize.imageHeight;
271
293
 
272
294
  this.wind.reSize(imageWidth, imageHeight);
295
+ this.cacheZoom = currentZoom;
273
296
  }
274
297
 
275
298
  this.wind.updateWindDir(uMin, uMax, vMin, vMax);
276
- this.wind.updateParticelNum(numParticles);
299
+ this.wind.updateParticelNum(newNumParticles);
277
300
  this.wind.updateColorRampTexture(rampColors);
278
301
  this.wind.fadeOpacity = fadeOpacity;
279
302
  this.wind.speedFactor = speedFactor;
@@ -296,10 +319,18 @@ var WindModel = function (_BaseModel) {
296
319
  }, {
297
320
  key: "drawColorMode",
298
321
  value: function drawColorMode() {
322
+ var _this$colorModel;
323
+
299
324
  var _ref3 = this.layer.getLayerConfig(),
300
325
  opacity = _ref3.opacity;
301
326
 
302
- this.colorModel.draw({
327
+ this.layer.masks.map(function (m) {
328
+ m.hooks.beforeRenderData.call();
329
+ m.hooks.beforeRender.call();
330
+ m.render();
331
+ m.hooks.afterRender.call();
332
+ });
333
+ (_this$colorModel = this.colorModel) === null || _this$colorModel === void 0 ? void 0 : _this$colorModel.draw({
303
334
  uniforms: {
304
335
  u_opacity: opacity || 1.0,
305
336
  u_texture: this.texture
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/wind/models/wind.ts"],"names":["defaultRampColors","WindModel","FrequencyController","frequency","run","drawWind","drawColorMode","Error","layer","getLayerConfig","uMin","uMax","vMin","vMax","fadeOpacity","speedFactor","dropRate","dropRateBump","rampColors","sizeScale","mask","maskInside","createTexture2D","rendererService","source","getSource","texture","height","width","glContext","getGLContext","imageCoords","data","dataArray","coordinates","images","then","imageData","getWindSize","imageWidth","imageHeight","options","wind","Wind","setWind","image","layerService","updateLayerRenderList","renderLayers","colorModel","buildLayerModel","moduleName","vertexShader","WindVert","fragmentShader","WindFrag","triangulation","RasterImageTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","p1","mapService","lngLatToPixel","p2","Math","floor","x","y","initModels","destroy","properties","opacity","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","numParticles","reSize","updateWindDir","updateParticelNum","updateColorRampTexture","draw","d","w","h","setBaseState","uniforms","u_opacity","u_texture","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AASA;;AACA;;AAEA;;AAGA;;;;;;;;AAEA,IAAMA,iBAAiB,GAAG;AACxB,OAAK,SADmB;AAExB,OAAK,SAFmB;AAGxB,OAAK,SAHmB;AAIxB,OAAK,SAJmB;AAKxB,OAAK,SALmB;AAMxB,OAAK,SANmB;AAOxB,OAAK,SAPmB;AAQxB,OAAK;AARmB,CAA1B;;IAWqBC,S;;;;;;;;;;;;;;;;;;;4FAKS,G;4FAIR,IAAIC,4BAAJ,CAAwB,GAAxB,C;;;;;;WAEpB,kBAAgB;AAAA;;AAEd,WAAKC,SAAL,CAAeC,GAAf,CAAmB,YAAM;AACvB,QAAA,MAAI,CAACC,QAAL;AACD,OAFD;AAGA,WAAKC,aAAL;AACD;;;WAED,wBAAqC;AACnC,YAAM,IAAIC,KAAJ,CAAU,yBAAV,CAAN;AACD;;;WAED,sBAAoB;AAAA;;AAClB,iBAcI,KAAKC,KAAL,CAAWC,cAAX,EAdJ;AAAA,2BACEC,IADF;AAAA,UACEA,IADF,0BACS,CAAC,KADV;AAAA,2BAEEC,IAFF;AAAA,UAEEA,IAFF,0BAES,IAFT;AAAA,2BAGEC,IAHF;AAAA,UAGEA,IAHF,0BAGS,CAAC,KAHV;AAAA,2BAIEC,IAJF;AAAA,UAIEA,IAJF,0BAIS,KAJT;AAAA,kCAKEC,WALF;AAAA,UAKEA,WALF,iCAKgB,KALhB;AAAA,kCAMEC,WANF;AAAA,UAMEA,WANF,iCAMgB,IANhB;AAAA,+BAOEC,QAPF;AAAA,UAOEA,QAPF,8BAOa,KAPb;AAAA,mCAQEC,YARF;AAAA,UAQEA,YARF,kCAQiB,IARjB;AAAA,iCASEC,UATF;AAAA,UASEA,UATF,gCASelB,iBATf;AAAA,gCAUEmB,SAVF;AAAA,UAUEA,SAVF,+BAUc,GAVd;AAAA,2BAYEC,IAZF;AAAA,UAYEA,IAZF,0BAYS,KAZT;AAAA,iCAaEC,UAbF;AAAA,UAaEA,UAbF,gCAae,IAbf;;AAeA,UAAQC,eAAR,GAA4B,KAAKC,eAAjC,CAAQD,eAAR;AACA,UAAME,MAAM,GAAG,KAAKhB,KAAL,CAAWiB,SAAX,EAAf;AACA,WAAKC,OAAL,GAAeJ,eAAe,CAAC;AAC7BK,QAAAA,MAAM,EAAE,CADqB;AAE7BC,QAAAA,KAAK,EAAE;AAFsB,OAAD,CAA9B;AAKA,UAAMC,SAAS,GAAG,KAAKN,eAAL,CAAqBO,YAArB,EAAlB;AACA,WAAKC,WAAL,GAAmBP,MAAM,CAACQ,IAAP,CAAYC,SAAZ,CAAsB,CAAtB,EAAyBC,WAA5C;AAEAV,MAAAA,MAAM,CAACQ,IAAP,CAAYG,MAAZ,CAAmBC,IAAnB,CAAwB,UAACC,SAAD,EAAmC;AACzD,QAAA,MAAI,CAAClB,SAAL,GAAiBA,SAAjB;;AAEA,iCAAoC,MAAI,CAACmB,WAAL,EAApC;AAAA,YAAQC,UAAR,sBAAQA,UAAR;AAAA,YAAoBC,WAApB,sBAAoBA,WAApB;;AAEA,YAAMC,OAAmB,GAAG;AAC1BZ,UAAAA,SAAS,EAATA,SAD0B;AAE1BU,UAAAA,UAAU,EAAVA,UAF0B;AAG1BC,UAAAA,WAAW,EAAXA,WAH0B;AAI1B1B,UAAAA,WAAW,EAAXA,WAJ0B;AAK1BC,UAAAA,WAAW,EAAXA,WAL0B;AAM1BC,UAAAA,QAAQ,EAARA,QAN0B;AAO1BC,UAAAA,YAAY,EAAZA,YAP0B;AAQ1BC,UAAAA,UAAU,EAAVA;AAR0B,SAA5B;AAWA,QAAA,MAAI,CAACwB,IAAL,GAAY,IAAIC,gBAAJ,CAASF,OAAT,CAAZ;;AAGA,QAAA,MAAI,CAACC,IAAL,CAAUE,OAAV,CAAkB;AAChBlC,UAAAA,IAAI,EAAJA,IADgB;AAEhBC,UAAAA,IAAI,EAAJA,IAFgB;AAGhBC,UAAAA,IAAI,EAAJA,IAHgB;AAIhBC,UAAAA,IAAI,EAAJA,IAJgB;AAKhBgC,UAAAA,KAAK,EAAER,SAAS,CAAC,CAAD;AALA,SAAlB;;AAQA,QAAA,MAAI,CAACX,OAAL,GAAeJ,eAAe,CAAC;AAC7BU,UAAAA,IAAI,EAAEK,SAAS,CAAC,CAAD,CADc;AAE7BT,UAAAA,KAAK,EAAES,SAAS,CAAC,CAAD,CAAT,CAAaT,KAFS;AAG7BD,UAAAA,MAAM,EAAEU,SAAS,CAAC,CAAD,CAAT,CAAaV;AAHQ,SAAD,CAA9B;;AAMA,QAAA,MAAI,CAACmB,YAAL,CAAkBC,qBAAlB;;AACA,QAAA,MAAI,CAACD,YAAL,CAAkBE,YAAlB;AACD,OAnCD;AAqCA,WAAKC,UAAL,GAAkB,KAAKzC,KAAL,CAAW0C,eAAX,CAA2B;AAC3CC,QAAAA,UAAU,EAAE,WAD+B;AAE3CC,QAAAA,YAAY,EAAEC,QAF6B;AAG3CC,QAAAA,cAAc,EAAEC,QAH2B;AAI3CC,QAAAA,aAAa,EAAEC,uCAJ4B;AAK3CC,QAAAA,SAAS,EAAEC,WAAGC,SAL6B;AAM3CC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,MAAM,EAAE;AAAV,SANoC;AAO3CC,QAAAA,KAAK,EAAE,KAAKC,QAAL;AAPoC,OAA3B,CAAlB;AAWA,aAAO,CAAC,KAAKf,UAAN,CAAP;AACD;;;WAED,uBAAqB;AACnB,UAAMgB,EAAE,GAAG,KAAKC,UAAL,CAAgBC,aAAhB,CAA8B,KAAKpC,WAAL,CAAiB,CAAjB,CAA9B,CAAX;AACA,UAAMqC,EAAE,GAAG,KAAKF,UAAL,CAAgBC,aAAhB,CAA8B,KAAKpC,WAAL,CAAiB,CAAjB,CAA9B,CAAX;AAEA,UAAMQ,UAAU,GAAG8B,IAAI,CAACC,KAAL,CAAW,CAACF,EAAE,CAACG,CAAH,GAAON,EAAE,CAACM,CAAX,IAAgB,KAAKpD,SAAhC,CAAnB;AACA,UAAMqB,WAAW,GAAG6B,IAAI,CAACC,KAAL,CAAW,CAACL,EAAE,CAACO,CAAH,GAAOJ,EAAE,CAACI,CAAX,IAAgB,KAAKrD,SAAhC,CAApB;AACA,aAAO;AAAEoB,QAAAA,UAAU,EAAVA,UAAF;AAAcC,QAAAA,WAAW,EAAXA;AAAd,OAAP;AACD;;;WAED,uBAAqB;AACnB,aAAO,KAAKiC,UAAL,EAAP;AACD;;;WAED,uBAA2B;AAAA;;AACzB,4BAAK/C,OAAL,gEAAcgD,OAAd;AACA,yBAAKhC,IAAL,0DAAWgC,OAAX;AACD;;;WAED,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,qCAAsC;AAEpC,WAAKC,qBAAL,CAA2BC,sBAA3B,CAAkD;AAChDC,QAAAA,IAAI,EAAE,IAD0C;AAEhDL,QAAAA,IAAI,EAAEM,sBAAcC,SAF4B;AAGhDC,QAAAA,UAAU,EAAE;AACVH,UAAAA,IAAI,EAAE,MADI;AAEVI,UAAAA,MAAM,EAAE;AAENC,YAAAA,KAAK,EAAE5B,WAAG6B,YAFJ;AAGNxD,YAAAA,IAAI,EAAE,EAHA;AAIN6C,YAAAA,IAAI,EAAElB,WAAG8B;AAJH,WAFE;AAQVC,UAAAA,IAAI,EAAE,CARI;AASVC,UAAAA,MAAM,EAAE,gBACNC,OADM,EAENC,UAFM,EAGNC,MAHM,EAINC,YAJM,EAKH;AACH,mBAAO,CAACD,MAAM,CAAC,CAAD,CAAP,EAAYA,MAAM,CAAC,CAAD,CAAlB,CAAP;AACD;AAhBS;AAHoC,OAAlD;AAsBD;;;WAED,oBAAmB;AACjB,UAAI,KAAKpD,IAAT,EAAe;AACb,oBAYI,KAAKlC,KAAL,CAAWC,cAAX,EAZJ;AAAA,+BACEC,IADF;AAAA,YACEA,IADF,2BACS,CAAC,KADV;AAAA,+BAEEC,IAFF;AAAA,YAEEA,IAFF,2BAES,IAFT;AAAA,+BAGEC,IAHF;AAAA,YAGEA,IAHF,2BAGS,CAAC,KAHV;AAAA,+BAIEC,IAJF;AAAA,YAIEA,IAJF,2BAIS,KAJT;AAAA,uCAKEmF,YALF;AAAA,YAKEA,YALF,mCAKiB,KALjB;AAAA,sCAMElF,WANF;AAAA,YAMEA,WANF,kCAMgB,KANhB;AAAA,sCAOEC,WAPF;AAAA,YAOEA,WAPF,kCAOgB,IAPhB;AAAA,mCAQEC,QARF;AAAA,YAQEA,QARF,+BAQa,KARb;AAAA,uCASEC,YATF;AAAA,YASEA,YATF,mCASiB,IATjB;AAAA,qCAUEC,UAVF;AAAA,YAUEA,UAVF,iCAUelB,iBAVf;AAAA,oCAWEmB,SAXF;AAAA,YAWEA,SAXF,gCAWc,GAXd;;AAaA,YAAI,OAAOA,SAAP,KAAqB,QAArB,IAAiCA,SAAS,KAAK,KAAKA,SAAxD,EAAmE;AACjE,eAAKA,SAAL,GAAiBA,SAAjB;;AACA,kCAAoC,KAAKmB,WAAL,EAApC;AAAA,cAAQC,UAAR,qBAAQA,UAAR;AAAA,cAAoBC,WAApB,qBAAoBA,WAApB;;AACA,eAAKE,IAAL,CAAUuD,MAAV,CAAiB1D,UAAjB,EAA6BC,WAA7B;AACD;;AAED,aAAKE,IAAL,CAAUwD,aAAV,CAAwBxF,IAAxB,EAA8BC,IAA9B,EAAoCC,IAApC,EAA0CC,IAA1C;AAEA,aAAK6B,IAAL,CAAUyD,iBAAV,CAA4BH,YAA5B;AAEA,aAAKtD,IAAL,CAAU0D,sBAAV,CAAiClF,UAAjC;AAEA,aAAKwB,IAAL,CAAU5B,WAAV,GAAwBA,WAAxB;AACA,aAAK4B,IAAL,CAAU3B,WAAV,GAAwBA,WAAxB;AACA,aAAK2B,IAAL,CAAU1B,QAAV,GAAqBA,QAArB;AACA,aAAK0B,IAAL,CAAUzB,YAAV,GAAyBA,YAAzB;;AAEA,8BAAoB,KAAKyB,IAAL,CAAU2D,IAAV,EAApB;AAAA,YAAQC,CAAR,mBAAQA,CAAR;AAAA,YAAWC,CAAX,mBAAWA,CAAX;AAAA,YAAcC,CAAd,mBAAcA,CAAd;;AAEA,aAAKjF,eAAL,CAAqBkF,YAArB;AACA,aAAK/E,OAAL,CAAaiE,MAAb,CAAoB;AAClB3D,UAAAA,IAAI,EAAEsE,CADY;AAElB1E,UAAAA,KAAK,EAAE2E,CAFW;AAGlB5E,UAAAA,MAAM,EAAE6E;AAHU,SAApB;AAKD;AACF;;;WAED,yBAAwB;AACtB,kBAAoB,KAAKhG,KAAL,CAAWC,cAAX,EAApB;AAAA,UAAQmE,OAAR,SAAQA,OAAR;;AACA,WAAK3B,UAAL,CAAgBoD,IAAhB,CAAqB;AACnBK,QAAAA,QAAQ,EAAE;AACRC,UAAAA,SAAS,EAAE/B,OAAO,IAAI,GADd;AAERgC,UAAAA,SAAS,EAAE,KAAKlF;AAFR;AADS,OAArB;AAMD;;;EA/MoCmF,mB","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n Point,\n} from '@antv/l7-core';\nimport { FrequencyController, getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IWindLayerStyleOptions } from '../../core/interface';\nimport { RasterImageTriangulation } from '../../core/triangulation';\nimport WindFrag from '../shaders/wind_frag.glsl';\nimport WindVert from '../shaders/wind_vert.glsl';\nimport { IWind, IWindProps, Wind } from './windRender';\n\nconst defaultRampColors = {\n 0.0: '#3288bd',\n 0.1: '#66c2a5',\n 0.2: '#abdda4',\n 0.3: '#e6f598',\n 0.4: '#fee08b',\n 0.5: '#fdae61',\n 0.6: '#f46d43',\n 1.0: '#d53e4f',\n};\n\nexport default class WindModel extends BaseModel {\n protected texture: ITexture2D;\n private colorModel: IModel;\n private wind: IWind;\n private imageCoords: [Point, Point];\n private sizeScale: number = 0.5;\n // https://mapbox.github.io/webgl-wind/demo/\n // source: 'http://nomads.ncep.noaa.gov',\n\n private frequency = new FrequencyController(7.2);\n\n public render() {\n // TODO: 控制风场的平均更新频率\n this.frequency.run(() => {\n this.drawWind();\n });\n this.drawColorMode();\n }\n\n public getUninforms(): IModelUniform {\n throw new Error('Method not implemented.');\n }\n\n public initModels() {\n const {\n uMin = -21.32,\n uMax = 26.8,\n vMin = -21.57,\n vMax = 21.42,\n fadeOpacity = 0.996,\n speedFactor = 0.25,\n dropRate = 0.003,\n dropRateBump = 0.01,\n rampColors = defaultRampColors,\n sizeScale = 0.5,\n // mask\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IWindLayerStyleOptions;\n const { createTexture2D } = this.rendererService;\n const source = this.layer.getSource();\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n\n const glContext = this.rendererService.getGLContext();\n this.imageCoords = source.data.dataArray[0].coordinates as [Point, Point];\n\n source.data.images.then((imageData: HTMLImageElement[]) => {\n this.sizeScale = sizeScale;\n\n const { imageWidth, imageHeight } = this.getWindSize();\n\n const options: IWindProps = {\n glContext,\n imageWidth,\n imageHeight,\n fadeOpacity,\n speedFactor,\n dropRate,\n dropRateBump,\n rampColors,\n };\n\n this.wind = new Wind(options);\n\n // imageData[0] 风场图\n this.wind.setWind({\n uMin,\n uMax,\n vMin,\n vMax,\n image: imageData[0],\n });\n\n this.texture = createTexture2D({\n data: imageData[0],\n width: imageData[0].width,\n height: imageData[0].height,\n });\n\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n });\n\n this.colorModel = this.layer.buildLayerModel({\n moduleName: 'WindLayer',\n vertexShader: WindVert,\n fragmentShader: WindFrag,\n triangulation: RasterImageTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: false },\n blend: this.getBlend(),\n // stencil: getMask(mask, maskInside),\n });\n\n return [this.colorModel];\n }\n\n public getWindSize() {\n const p1 = this.mapService.lngLatToPixel(this.imageCoords[0]);\n const p2 = this.mapService.lngLatToPixel(this.imageCoords[1]);\n\n const imageWidth = Math.floor((p2.x - p1.x) * this.sizeScale);\n const imageHeight = Math.floor((p1.y - p2.y) * this.sizeScale);\n return { imageWidth, imageHeight };\n }\n\n public buildModels() {\n return this.initModels();\n }\n\n public clearModels(): void {\n this.texture?.destroy();\n this.wind?.destroy();\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n\n private drawWind() {\n if (this.wind) {\n const {\n uMin = -21.32,\n uMax = 26.8,\n vMin = -21.57,\n vMax = 21.42,\n numParticles = 65535,\n fadeOpacity = 0.996,\n speedFactor = 0.25,\n dropRate = 0.003,\n dropRateBump = 0.01,\n rampColors = defaultRampColors,\n sizeScale = 0.5,\n } = this.layer.getLayerConfig() as IWindLayerStyleOptions;\n if (typeof sizeScale === 'number' && sizeScale !== this.sizeScale) {\n this.sizeScale = sizeScale;\n const { imageWidth, imageHeight } = this.getWindSize();\n this.wind.reSize(imageWidth, imageHeight);\n }\n\n this.wind.updateWindDir(uMin, uMax, vMin, vMax);\n\n this.wind.updateParticelNum(numParticles);\n\n this.wind.updateColorRampTexture(rampColors);\n\n this.wind.fadeOpacity = fadeOpacity;\n this.wind.speedFactor = speedFactor;\n this.wind.dropRate = dropRate;\n this.wind.dropRateBump = dropRateBump;\n\n const { d, w, h } = this.wind.draw();\n // TODO: 恢复 L7 渲染流程中 gl 状态\n this.rendererService.setBaseState();\n this.texture.update({\n data: d,\n width: w,\n height: h,\n });\n }\n }\n\n private drawColorMode() {\n const { opacity } = this.layer.getLayerConfig() as IWindLayerStyleOptions;\n this.colorModel.draw({\n uniforms: {\n u_opacity: opacity || 1.0,\n u_texture: this.texture,\n },\n });\n }\n}\n"],"file":"wind.js"}
1
+ {"version":3,"sources":["../../../src/wind/models/wind.ts"],"names":["defaultRampColors","WindModel","FrequencyController","frequency","run","drawWind","drawColorMode","Error","callbackModel","layer","getLayerConfig","uMin","uMax","vMin","vMax","fadeOpacity","speedFactor","dropRate","dropRateBump","rampColors","sizeScale","mask","maskInside","createTexture2D","rendererService","source","getSource","texture","height","width","cacheZoom","Math","floor","mapService","getZoom","glContext","getGLContext","imageCoords","data","dataArray","coordinates","images","then","imageData","getZoomScale","getWindSize","imageWidth","imageHeight","options","wind","Wind","setWind","image","destroy","layerService","updateLayerRenderList","renderLayers","buildLayerModel","moduleName","vertexShader","WindVert","fragmentShader","WindFrag","triangulation","RasterImageTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","model","colorModel","catch","err","console","warn","p1","lngLatToPixel","p2","min","x","y","initModels","properties","opacity","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","numParticles","newNumParticles","currentZoom","zoomScale","reSize","updateWindDir","updateParticelNum","updateColorRampTexture","draw","d","w","h","setBaseState","masks","map","m","hooks","beforeRenderData","call","beforeRender","render","afterRender","uniforms","u_opacity","u_texture","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n Point,\n} from '@antv/l7-core';\nimport { FrequencyController, getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IWindLayerStyleOptions } from '../../core/interface';\nimport { RasterImageTriangulation } from '../../core/triangulation';\nimport WindFrag from '../shaders/wind_frag.glsl';\nimport WindVert from '../shaders/wind_vert.glsl';\nimport { IWind, IWindProps, Wind } from './windRender';\n\nconst defaultRampColors = {\n 0.0: '#3288bd',\n 0.1: '#66c2a5',\n 0.2: '#abdda4',\n 0.3: '#e6f598',\n 0.4: '#fee08b',\n 0.5: '#fdae61',\n 0.6: '#f46d43',\n 1.0: '#d53e4f',\n};\n\nexport default class WindModel extends BaseModel {\n protected texture: ITexture2D;\n private colorModel: IModel;\n private wind: IWind;\n private imageCoords: [Point, Point];\n private sizeScale: number = 0.5;\n // https://mapbox.github.io/webgl-wind/demo/\n // source: 'http://nomads.ncep.noaa.gov',\n\n private frequency = new FrequencyController(7.2);\n private cacheZoom: number;\n\n public render() {\n // Tip: 控制风场的平均更新频率\n this.frequency.run(() => {\n this.drawWind();\n });\n this.drawColorMode();\n }\n\n public getUninforms(): IModelUniform {\n throw new Error('Method not implemented.');\n }\n\n public initModels(callbackModel: (models: IModel[]) => void) {\n const {\n uMin = -21.32,\n uMax = 26.8,\n vMin = -21.57,\n vMax = 21.42,\n fadeOpacity = 0.996,\n speedFactor = 0.25,\n dropRate = 0.003,\n dropRateBump = 0.01,\n rampColors = defaultRampColors,\n sizeScale = 0.5,\n // mask\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IWindLayerStyleOptions;\n const { createTexture2D } = this.rendererService;\n const source = this.layer.getSource();\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n this.cacheZoom = Math.floor(this.mapService.getZoom());\n\n const glContext = this.rendererService.getGLContext();\n this.imageCoords = source.data?.dataArray[0].coordinates as [Point, Point];\n\n source.data?.images?.then((imageData: HTMLImageElement[]) => {\n this.sizeScale = sizeScale * this.getZoomScale();\n\n const { imageWidth, imageHeight } = this.getWindSize();\n\n const options: IWindProps = {\n glContext,\n imageWidth,\n imageHeight,\n fadeOpacity,\n speedFactor,\n dropRate,\n dropRateBump,\n rampColors,\n };\n\n this.wind = new Wind(options);\n\n // imageData[0] 风场图\n this.wind.setWind({\n uMin,\n uMax,\n vMin,\n vMax,\n image: imageData[0],\n });\n this.texture?.destroy();\n\n this.texture = createTexture2D({\n width: imageWidth,\n height: imageHeight,\n });\n\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n });\n\n this.layer\n .buildLayerModel({\n moduleName: 'wind',\n vertexShader: WindVert,\n fragmentShader: WindFrag,\n triangulation: RasterImageTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: false },\n blend: this.getBlend(),\n })\n .then((model) => {\n this.colorModel = model;\n callbackModel([model]);\n })\n .catch((err) => {\n console.warn(err);\n callbackModel([]);\n });\n }\n\n public getWindSize() {\n const p1 = this.mapService.lngLatToPixel(this.imageCoords[0]);\n const p2 = this.mapService.lngLatToPixel(this.imageCoords[1]);\n\n const imageWidth = Math.min(\n Math.floor((p2.x - p1.x) * this.sizeScale),\n 2048,\n );\n const imageHeight = Math.min(\n Math.floor((p1.y - p2.y) * this.sizeScale),\n 2048,\n );\n return { imageWidth, imageHeight };\n }\n\n public buildModels(callbackModel: (models: IModel[]) => void) {\n this.initModels(callbackModel);\n }\n\n public clearModels(): void {\n this.texture?.destroy();\n this.wind?.destroy();\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n\n private getZoomScale() {\n return Math.min(((this.cacheZoom + 4) / 30) * 2, 2);\n }\n\n private drawWind() {\n if (this.wind) {\n const {\n uMin = -21.32,\n uMax = 26.8,\n vMin = -21.57,\n vMax = 21.42,\n numParticles = 65535,\n fadeOpacity = 0.996,\n speedFactor = 0.25,\n dropRate = 0.003,\n dropRateBump = 0.01,\n rampColors = defaultRampColors,\n sizeScale = 0.5,\n } = this.layer.getLayerConfig() as IWindLayerStyleOptions;\n let newNumParticles = numParticles;\n const currentZoom = Math.floor(this.mapService.getZoom());\n if (\n (typeof sizeScale === 'number' && sizeScale !== this.sizeScale) ||\n currentZoom !== this.cacheZoom\n ) {\n const zoomScale = this.getZoomScale();\n this.sizeScale = sizeScale;\n newNumParticles *= zoomScale;\n const { imageWidth, imageHeight } = this.getWindSize();\n this.wind.reSize(imageWidth, imageHeight);\n this.cacheZoom = currentZoom;\n }\n\n this.wind.updateWindDir(uMin, uMax, vMin, vMax);\n\n this.wind.updateParticelNum(newNumParticles);\n\n this.wind.updateColorRampTexture(rampColors);\n\n this.wind.fadeOpacity = fadeOpacity;\n this.wind.speedFactor = speedFactor;\n this.wind.dropRate = dropRate;\n this.wind.dropRateBump = dropRateBump;\n\n const { d, w, h } = this.wind.draw();\n // TODO: 恢复 L7 渲染流程中 gl 状态\n this.rendererService.setBaseState();\n this.texture.update({\n data: d,\n width: w,\n height: h,\n });\n }\n }\n\n private drawColorMode() {\n const { opacity } = this.layer.getLayerConfig() as IWindLayerStyleOptions;\n\n this.layer.masks.map((m) => {\n m.hooks.beforeRenderData.call();\n m.hooks.beforeRender.call();\n m.render();\n m.hooks.afterRender.call();\n });\n\n this.colorModel?.draw({\n uniforms: {\n u_opacity: opacity || 1.0,\n u_texture: this.texture,\n },\n });\n }\n}\n"],"file":"wind.js"}
@@ -244,9 +244,9 @@ var Wind = function () {
244
244
  var gl = this.gl;
245
245
  bindFramebuffer(gl, this.framebuffer, this.screenTexture);
246
246
  gl.viewport(0, 0, this.width, this.height);
247
+ gl.disable(gl.BLEND);
247
248
  this.drawFullTexture(this.backgroundTexture, this.fadeOpacity);
248
249
  this.drawParticles();
249
- gl.disable(gl.BLEND);
250
250
  this.pixels = new Uint8Array(4 * this.width * this.height);
251
251
  gl.readPixels(0, 0, this.width, this.height, gl.RGBA, gl.UNSIGNED_BYTE, this.pixels);
252
252
  bindFramebuffer(gl, null, null);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/wind/models/windRender.ts"],"names":["getColorRamp","colors","canvas","document","createElement","ctx","getContext","width","height","gradient","createLinearGradient","Object","keys","stop","addColorStop","fillStyle","fillRect","Uint8Array","getImageData","data","bindAttribute","gl","buffer","attribute","numComponents","bindBuffer","ARRAY_BUFFER","enableVertexAttribArray","vertexAttribPointer","FLOAT","bindFramebuffer","framebuffer","texture","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","TEXTURE_2D","Wind","options","glContext","imageWidth","imageHeight","fadeOpacity","speedFactor","dropRate","dropRateBump","rampColors","init","drawProgram","glUtils","createProgram","drawVert","drawFrag","fullScreenProgram","fullScreenVert","fullScreenFrag","updateProgram","updateVert","updateFrag","quadBuffer","createBuffer","Float32Array","createFramebuffer","colorRampTexture","createTexture","LINEAR","emptyPixels","backgroundTexture","NEAREST","screenTexture","particleRes","particleStateResolution","Math","ceil","sqrt","numParticles","numParticlesSize","particleState","i","length","floor","random","particleStateTexture0","particleStateTexture1","particleIndices","i$1","particleIndexBuffer","windData","windTexture","createDataTexture","image","num","uMin","uMax","vMin","vMax","isColorChanged","deleteTexture","item","key","Number","bindTexture","drawScreen","updateParticles","d","pixels","w","h","viewport","drawFullTexture","drawParticles","disable","BLEND","readPixels","RGBA","UNSIGNED_BYTE","temp","opacity","program","useProgram","a_pos","uniform1i","u_screen","uniform1f","u_opacity","drawArrays","TRIANGLES","a_index","u_wind","u_particles","u_color_ramp","u_particles_res","uniform2f","u_wind_min","u_wind_max","POINTS","u_rand_seed","u_wind_res","u_speed_factor","u_drop_rate","u_drop_rate_bump","deleteBuffer","deleteFramebuffer","deleteShader","vertexShader","fragmentShader","deleteProgram"],"mappings":"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","sourcesContent":["import * as glUtils from './utils';\nimport {\n drawFrag,\n drawVert,\n fullScreenFrag,\n fullScreenVert,\n updateFrag,\n updateVert,\n} from './windShader';\n\nfunction getColorRamp(colors: { [key: number]: string }) {\n let canvas = document.createElement('canvas') as HTMLCanvasElement;\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n\n canvas.width = 256;\n canvas.height = 1;\n\n const gradient = ctx.createLinearGradient(0, 0, 256, 0);\n for (const stop of Object.keys(colors)) {\n gradient.addColorStop(+stop, colors[+stop]);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, 256, 1);\n\n // @ts-ignore dispose canvas element\n canvas = null;\n\n return new Uint8Array(ctx.getImageData(0, 0, 256, 1).data);\n}\n\nfunction bindAttribute(\n gl: WebGLRenderingContext,\n buffer: any,\n attribute: any,\n numComponents: any,\n) {\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.enableVertexAttribArray(attribute);\n gl.vertexAttribPointer(attribute, numComponents, gl.FLOAT, false, 0, 0);\n}\n\nfunction bindFramebuffer(\n gl: WebGLRenderingContext,\n framebuffer: any,\n texture: any,\n) {\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n if (texture) {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0,\n );\n }\n}\n\nexport interface IWindData {\n uMin: number;\n uMax: number;\n vMin: number;\n vMax: number;\n image: HTMLImageElement;\n}\n\nexport interface IWind {\n width: number;\n height: number;\n\n fadeOpacity: number;\n speedFactor: number;\n dropRate: number;\n dropRateBump: number;\n\n setWind: (windData: IWindData) => void;\n draw: () => { d: Uint8Array; w: number; h: number };\n updateParticelNum: (num: number) => void;\n updateWindDir: (\n uMin: number,\n uMax: number,\n vMin: number,\n vMax: number,\n ) => void;\n updateColorRampTexture: (rampColors: { [key: number]: string }) => void;\n\n reSize: (width: number, height: number) => void;\n destroy: () => void;\n}\n\nexport interface IWindProps {\n glContext: WebGLRenderingContext;\n imageWidth: number;\n imageHeight: number;\n fadeOpacity: number;\n speedFactor: number;\n dropRate: number;\n dropRateBump: number;\n rampColors: { [key: number]: string };\n}\n\nexport class Wind {\n public width: number = 512;\n public height: number = 512;\n\n public pixels: Uint8Array;\n\n public fadeOpacity: number;\n public speedFactor: number;\n public dropRate: number;\n public dropRateBump: number;\n private gl: WebGLRenderingContext;\n private drawProgram: WebGLProgram;\n private fullScreenProgram: WebGLProgram;\n private updateProgram: WebGLProgram;\n\n private rampColors: { [key: number]: string };\n\n private numParticles: number = 65536;\n private numParticlesSize: number;\n private particleStateResolution: number;\n\n private quadBuffer: WebGLBuffer | null;\n private particleIndexBuffer: WebGLBuffer | null;\n\n private framebuffer: WebGLFramebuffer | null;\n\n private colorRampTexture: WebGLTexture | null;\n private backgroundTexture: WebGLTexture | null;\n private screenTexture: WebGLTexture | null;\n private particleStateTexture0: WebGLTexture | null;\n private particleStateTexture1: WebGLTexture | null;\n private windTexture: WebGLTexture | null;\n\n private windData: IWindData;\n\n constructor(options: IWindProps) {\n this.gl = options.glContext;\n this.width = options.imageWidth;\n this.height = options.imageHeight;\n this.fadeOpacity = options.fadeOpacity;\n this.speedFactor = options.speedFactor;\n this.dropRate = options.dropRate;\n this.dropRateBump = options.dropRateBump;\n\n this.rampColors = options.rampColors;\n this.init();\n }\n\n public init() {\n const gl = this.gl;\n\n this.fadeOpacity = 0.996; // how fast the particle trails fade on each frame\n this.speedFactor = 0.25; // how fast the particles move\n this.dropRate = 0.003; // how often the particles move to a random place\n this.dropRateBump = 0.01; // drop rate increase relative to individual particle speed\n\n this.drawProgram = glUtils.createProgram(\n gl,\n drawVert,\n drawFrag,\n ) as WebGLProgram;\n this.fullScreenProgram = glUtils.createProgram(\n gl,\n fullScreenVert,\n fullScreenFrag,\n ) as WebGLProgram;\n this.updateProgram = glUtils.createProgram(\n gl,\n updateVert,\n updateFrag,\n ) as WebGLProgram;\n\n this.quadBuffer = glUtils.createBuffer(\n gl,\n new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]),\n );\n\n this.framebuffer = gl.createFramebuffer();\n\n this.colorRampTexture = glUtils.createTexture(\n this.gl,\n this.gl.LINEAR,\n getColorRamp(this.rampColors),\n 16,\n 16,\n );\n\n const emptyPixels = new Uint8Array(this.width * this.height * 4);\n\n // screen textures to hold the drawn screen for the previous and the current frame\n\n this.backgroundTexture = glUtils.createTexture(\n gl,\n gl.NEAREST,\n emptyPixels,\n this.width,\n this.height,\n );\n this.screenTexture = glUtils.createTexture(\n gl,\n gl.NEAREST,\n emptyPixels,\n this.width,\n this.height,\n );\n\n // we create a square texture where each pixel will hold a particle position encoded as RGBA\n const particleRes = (this.particleStateResolution = Math.ceil(\n Math.sqrt(this.numParticles),\n ));\n // particleRes size\n this.numParticlesSize = particleRes * particleRes;\n\n const particleState = new Uint8Array(this.numParticlesSize * 4);\n for (let i = 0; i < particleState.length; i++) {\n particleState[i] = Math.floor(Math.random() * 256); // randomize the initial particle positions\n }\n // textures to hold the particle state for the current and the next frame\n this.particleStateTexture0 = glUtils.createTexture(\n gl,\n gl.NEAREST,\n particleState,\n particleRes,\n particleRes,\n );\n this.particleStateTexture1 = glUtils.createTexture(\n gl,\n gl.NEAREST,\n particleState,\n particleRes,\n particleRes,\n );\n\n const particleIndices = new Float32Array(this.numParticlesSize);\n for (let i$1 = 0; i$1 < this.numParticlesSize; i$1++) {\n particleIndices[i$1] = i$1;\n }\n this.particleIndexBuffer = glUtils.createBuffer(gl, particleIndices);\n }\n\n public setWind(windData: IWindData) {\n this.windData = windData;\n this.windTexture = glUtils.createDataTexture(\n this.gl,\n this.gl.LINEAR,\n windData.image,\n );\n }\n\n /**\n * 更新风场粒子数量\n * @param num\n */\n public updateParticelNum(num: number) {\n const gl = this.gl;\n if (num !== this.numParticles) {\n this.numParticles = num; // params number\n\n // we create a square texture where each pixel will hold a particle position encoded as RGBA\n const particleRes = (this.particleStateResolution = Math.ceil(\n Math.sqrt(this.numParticles),\n ));\n this.numParticlesSize = particleRes * particleRes;\n\n const particleState = new Uint8Array(this.numParticlesSize * 4);\n for (let i = 0; i < particleState.length; i++) {\n particleState[i] = Math.floor(Math.random() * 256); // randomize the initial particle positions\n }\n // textures to hold the particle state for the current and the next frame\n this.particleStateTexture0 = glUtils.createTexture(\n gl,\n gl.NEAREST,\n particleState,\n particleRes,\n particleRes,\n );\n this.particleStateTexture1 = glUtils.createTexture(\n gl,\n gl.NEAREST,\n particleState,\n particleRes,\n particleRes,\n );\n\n const particleIndices = new Float32Array(this.numParticlesSize);\n for (let i$1 = 0; i$1 < this.numParticlesSize; i$1++) {\n particleIndices[i$1] = i$1;\n }\n this.particleIndexBuffer = glUtils.createBuffer(gl, particleIndices);\n }\n }\n\n /**\n * 更新风场风向风速\n * @param uMin\n * @param uMax\n * @param vMin\n * @param vMax\n */\n public updateWindDir(uMin: number, uMax: number, vMin: number, vMax: number) {\n this.windData.uMin = uMin;\n this.windData.uMax = uMax;\n this.windData.vMin = vMin;\n this.windData.vMax = vMax;\n }\n\n /**\n * update rampColors\n * @param rampColors\n */\n public updateColorRampTexture(rampColors: { [key: number]: string }) {\n if (this.isColorChanged(rampColors)) {\n this.rampColors = rampColors;\n\n const gl = this.gl;\n gl.deleteTexture(this.colorRampTexture);\n this.colorRampTexture = glUtils.createTexture(\n gl,\n gl.LINEAR,\n getColorRamp(rampColors),\n 16,\n 16,\n );\n }\n }\n\n public isColorChanged(rampColors: { [key: number]: string }): boolean {\n const keys = Object.keys(rampColors);\n for (const item of keys) {\n const key = Number(item);\n // exist new key -> color need update\n if (!this.rampColors[key]) {\n return true;\n }\n // value changed -> color need update\n if (this.rampColors[key] && this.rampColors[key] !== rampColors[key]) {\n return true;\n }\n }\n return false;\n }\n\n public reSize(width: number, height: number) {\n if (width !== this.width || height !== this.height) {\n const gl = this.gl;\n gl.deleteTexture(this.backgroundTexture);\n gl.deleteTexture(this.screenTexture);\n\n this.width = width;\n this.height = height;\n const emptyPixels = new Uint8Array(width * height * 4);\n // screen textures to hold the drawn screen for the previous and the current frame\n this.backgroundTexture = glUtils.createTexture(\n gl,\n gl.NEAREST,\n emptyPixels,\n width,\n height,\n );\n this.screenTexture = glUtils.createTexture(\n gl,\n gl.NEAREST,\n emptyPixels,\n width,\n height,\n );\n }\n }\n\n public draw() {\n if (this.windData?.image) {\n const gl = this.gl;\n\n glUtils.bindTexture(gl, this.windTexture as WebGLTexture, 0);\n glUtils.bindTexture(gl, this.particleStateTexture0 as WebGLTexture, 1);\n\n this.drawScreen(); // draw Particles into framebuffer\n this.updateParticles();\n\n return { d: this.pixels, w: this.width, h: this.height };\n } else {\n return { d: new Uint8Array([0, 0, 0, 0]), w: 1, h: 1 };\n }\n }\n\n public drawScreen() {\n const gl = this.gl;\n\n // draw the screen into a temporary framebuffer to retain it as the background on the next frame\n bindFramebuffer(gl, this.framebuffer, this.screenTexture);\n\n gl.viewport(0, 0, this.width, this.height);\n\n this.drawFullTexture(this.backgroundTexture, this.fadeOpacity);\n this.drawParticles();\n\n gl.disable(gl.BLEND);\n\n this.pixels = new Uint8Array(4 * this.width * this.height);\n gl.readPixels(\n 0,\n 0,\n this.width,\n this.height,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n this.pixels,\n );\n\n bindFramebuffer(gl, null, null);\n gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height);\n\n // save the current screen as the background for the next frame\n const temp = this.backgroundTexture;\n this.backgroundTexture = this.screenTexture;\n this.screenTexture = temp;\n }\n\n public drawFullTexture(texture: any, opacity: number) {\n const gl = this.gl;\n const program = this.fullScreenProgram as any;\n gl.useProgram(program);\n\n // bindAttribute(gl, this.quadBuffer, program.a_pos, 2);\n\n gl.bindBuffer(gl.ARRAY_BUFFER, this.quadBuffer);\n gl.vertexAttribPointer(program.a_pos, 2, gl.FLOAT, false, 0, 0);\n gl.enableVertexAttribArray(program.a_pos);\n\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\n\n glUtils.bindTexture(gl, texture, 2);\n gl.uniform1i(program.u_screen, 2);\n gl.uniform1f(program.u_opacity, opacity);\n\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n // gl.drawArrays(gl.POINTS, 0, 6);\n }\n\n public drawParticles() {\n const gl = this.gl;\n const program = this.drawProgram as any;\n gl.useProgram(program);\n\n bindAttribute(gl, this.particleIndexBuffer, program.a_index, 1);\n glUtils.bindTexture(gl, this.colorRampTexture as WebGLTexture, 2);\n\n gl.uniform1i(program.u_wind, 0);\n gl.uniform1i(program.u_particles, 1);\n gl.uniform1i(program.u_color_ramp, 2);\n\n gl.uniform1f(program.u_particles_res, this.particleStateResolution);\n gl.uniform2f(program.u_wind_min, this.windData.uMin, this.windData.vMin);\n gl.uniform2f(program.u_wind_max, this.windData.uMax, this.windData.vMax);\n\n gl.drawArrays(gl.POINTS, 0, this.numParticlesSize);\n }\n\n public updateParticles() {\n const gl = this.gl;\n bindFramebuffer(gl, this.framebuffer, this.particleStateTexture1);\n gl.viewport(\n 0,\n 0,\n this.particleStateResolution,\n this.particleStateResolution,\n );\n\n const program = this.updateProgram as any;\n gl.useProgram(program);\n\n bindAttribute(gl, this.quadBuffer, program.a_pos, 2);\n\n gl.uniform1i(program.u_wind, 0);\n gl.uniform1i(program.u_particles, 1);\n\n gl.uniform1f(program.u_rand_seed, Math.random());\n gl.uniform2f(\n program.u_wind_res,\n this.windData.image.width * 2,\n this.windData.image.height * 2,\n );\n gl.uniform2f(program.u_wind_min, this.windData.uMin, this.windData.vMin);\n gl.uniform2f(program.u_wind_max, this.windData.uMax, this.windData.vMax);\n gl.uniform1f(program.u_speed_factor, this.speedFactor);\n gl.uniform1f(program.u_drop_rate, this.dropRate);\n gl.uniform1f(program.u_drop_rate_bump, this.dropRateBump);\n\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n\n // swap the particle state textures so the new one becomes the current one\n const temp = this.particleStateTexture0;\n this.particleStateTexture0 = this.particleStateTexture1;\n this.particleStateTexture1 = temp;\n\n bindFramebuffer(gl, null, null);\n\n // gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height);\n }\n\n public destroy() {\n // private drawProgram: WebGLProgram;\n // private fullScreenProgram: WebGLProgram;\n // private updateProgram: WebGLProgram;\n\n // private quadBuffer: WebGLBuffer | null;\n // private particleIndexBuffer: WebGLBuffer | null;\n\n // private framebuffer: WebGLFramebuffer | null;\n\n // private colorRampTexture: WebGLTexture | null;\n // private backgroundTexture: WebGLTexture | null;\n // private screenTexture: WebGLTexture | null;\n // private particleStateTexture0: WebGLTexture | null;\n // private particleStateTexture1: WebGLTexture | null;\n // private windTexture: WebGLTexture | null;\n\n this.gl.deleteBuffer(this.quadBuffer);\n this.gl.deleteBuffer(this.particleIndexBuffer);\n\n this.gl.deleteFramebuffer(this.framebuffer);\n\n // @ts-ignore\n this.gl.deleteShader(this.drawProgram.vertexShader);\n // @ts-ignore\n this.gl.deleteShader(this.drawProgram.fragmentShader);\n this.gl.deleteProgram(this.drawProgram);\n\n // @ts-ignore\n this.gl.deleteShader(this.fullScreenProgram.vertexShader);\n // @ts-ignore\n this.gl.deleteShader(this.fullScreenProgram.fragmentShader);\n this.gl.deleteProgram(this.fullScreenProgram);\n\n // @ts-ignore\n this.gl.deleteShader(this.updateProgram.vertexShader);\n // @ts-ignore\n this.gl.deleteShader(this.updateProgram.fragmentShader);\n this.gl.deleteProgram(this.updateProgram);\n\n this.gl.deleteTexture(this.colorRampTexture);\n this.gl.deleteTexture(this.backgroundTexture);\n this.gl.deleteTexture(this.screenTexture);\n this.gl.deleteTexture(this.particleStateTexture0);\n this.gl.deleteTexture(this.particleStateTexture1);\n this.gl.deleteTexture(this.windTexture);\n }\n}\n"],"file":"windRender.js"}
1
+ {"version":3,"sources":["../../../src/wind/models/windRender.ts"],"names":["getColorRamp","colors","canvas","document","createElement","ctx","getContext","width","height","gradient","createLinearGradient","Object","keys","stop","addColorStop","fillStyle","fillRect","Uint8Array","getImageData","data","bindAttribute","gl","buffer","attribute","numComponents","bindBuffer","ARRAY_BUFFER","enableVertexAttribArray","vertexAttribPointer","FLOAT","bindFramebuffer","framebuffer","texture","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","TEXTURE_2D","Wind","options","glContext","imageWidth","imageHeight","fadeOpacity","speedFactor","dropRate","dropRateBump","rampColors","init","drawProgram","glUtils","createProgram","drawVert","drawFrag","fullScreenProgram","fullScreenVert","fullScreenFrag","updateProgram","updateVert","updateFrag","quadBuffer","createBuffer","Float32Array","createFramebuffer","colorRampTexture","createTexture","LINEAR","emptyPixels","backgroundTexture","NEAREST","screenTexture","particleRes","particleStateResolution","Math","ceil","sqrt","numParticles","numParticlesSize","particleState","i","length","floor","random","particleStateTexture0","particleStateTexture1","particleIndices","i$1","particleIndexBuffer","windData","windTexture","createDataTexture","image","num","uMin","uMax","vMin","vMax","isColorChanged","deleteTexture","item","key","Number","bindTexture","drawScreen","updateParticles","d","pixels","w","h","viewport","disable","BLEND","drawFullTexture","drawParticles","readPixels","RGBA","UNSIGNED_BYTE","temp","opacity","program","useProgram","a_pos","uniform1i","u_screen","uniform1f","u_opacity","drawArrays","TRIANGLES","a_index","u_wind","u_particles","u_color_ramp","u_particles_res","uniform2f","u_wind_min","u_wind_max","POINTS","u_rand_seed","u_wind_res","u_speed_factor","u_drop_rate","u_drop_rate_bump","deleteBuffer","deleteFramebuffer","deleteShader","vertexShader","fragmentShader","deleteProgram"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;AASA,SAASA,YAAT,CAAsBC,MAAtB,EAAyD;AACvD,MAAIC,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAb;AACA,MAAMC,GAAG,GAAGH,MAAM,CAACI,UAAP,CAAkB,IAAlB,CAAZ;AAEAJ,EAAAA,MAAM,CAACK,KAAP,GAAe,GAAf;AACAL,EAAAA,MAAM,CAACM,MAAP,GAAgB,CAAhB;AAEA,MAAMC,QAAQ,GAAGJ,GAAG,CAACK,oBAAJ,CAAyB,CAAzB,EAA4B,CAA5B,EAA+B,GAA/B,EAAoC,CAApC,CAAjB;;AACA,kCAAmBC,MAAM,CAACC,IAAP,CAAYX,MAAZ,CAAnB,kCAAwC;AAAnC,QAAMY,IAAI,mBAAV;AACHJ,IAAAA,QAAQ,CAACK,YAAT,CAAsB,CAACD,IAAvB,EAA6BZ,MAAM,CAAC,CAACY,IAAF,CAAnC;AACD;;AAEDR,EAAAA,GAAG,CAACU,SAAJ,GAAgBN,QAAhB;AACAJ,EAAAA,GAAG,CAACW,QAAJ,CAAa,CAAb,EAAgB,CAAhB,EAAmB,GAAnB,EAAwB,CAAxB;AAGAd,EAAAA,MAAM,GAAG,IAAT;AAEA,SAAO,IAAIe,UAAJ,CAAeZ,GAAG,CAACa,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,GAAvB,EAA4B,CAA5B,EAA+BC,IAA9C,CAAP;AACD;;AAED,SAASC,aAAT,CACEC,EADF,EAEEC,MAFF,EAGEC,SAHF,EAIEC,aAJF,EAKE;AACAH,EAAAA,EAAE,CAACI,UAAH,CAAcJ,EAAE,CAACK,YAAjB,EAA+BJ,MAA/B;AACAD,EAAAA,EAAE,CAACM,uBAAH,CAA2BJ,SAA3B;AACAF,EAAAA,EAAE,CAACO,mBAAH,CAAuBL,SAAvB,EAAkCC,aAAlC,EAAiDH,EAAE,CAACQ,KAApD,EAA2D,KAA3D,EAAkE,CAAlE,EAAqE,CAArE;AACD;;AAED,SAASC,eAAT,CACET,EADF,EAEEU,WAFF,EAGEC,OAHF,EAIE;AACAX,EAAAA,EAAE,CAACS,eAAH,CAAmBT,EAAE,CAACY,WAAtB,EAAmCF,WAAnC;;AACA,MAAIC,OAAJ,EAAa;AACXX,IAAAA,EAAE,CAACa,oBAAH,CACEb,EAAE,CAACY,WADL,EAEEZ,EAAE,CAACc,iBAFL,EAGEd,EAAE,CAACe,UAHL,EAIEJ,OAJF,EAKE,CALF;AAOD;AACF;;IA6CYK,I;AAmCX,gBAAYC,OAAZ,EAAiC;AAAA;AAAA,iDAlCV,GAkCU;AAAA,kDAjCT,GAiCS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wDAlBF,KAkBE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC/B,SAAKjB,EAAL,GAAUiB,OAAO,CAACC,SAAlB;AACA,SAAKhC,KAAL,GAAa+B,OAAO,CAACE,UAArB;AACA,SAAKhC,MAAL,GAAc8B,OAAO,CAACG,WAAtB;AACA,SAAKC,WAAL,GAAmBJ,OAAO,CAACI,WAA3B;AACA,SAAKC,WAAL,GAAmBL,OAAO,CAACK,WAA3B;AACA,SAAKC,QAAL,GAAgBN,OAAO,CAACM,QAAxB;AACA,SAAKC,YAAL,GAAoBP,OAAO,CAACO,YAA5B;AAEA,SAAKC,UAAL,GAAkBR,OAAO,CAACQ,UAA1B;AACA,SAAKC,IAAL;AACD;;;;WAED,gBAAc;AACZ,UAAM1B,EAAE,GAAG,KAAKA,EAAhB;AAEA,WAAKqB,WAAL,GAAmB,KAAnB;AACA,WAAKC,WAAL,GAAmB,IAAnB;AACA,WAAKC,QAAL,GAAgB,KAAhB;AACA,WAAKC,YAAL,GAAoB,IAApB;AAEA,WAAKG,WAAL,GAAmBC,OAAO,CAACC,aAAR,CACjB7B,EADiB,EAEjB8B,oBAFiB,EAGjBC,oBAHiB,CAAnB;AAKA,WAAKC,iBAAL,GAAyBJ,OAAO,CAACC,aAAR,CACvB7B,EADuB,EAEvBiC,0BAFuB,EAGvBC,0BAHuB,CAAzB;AAKA,WAAKC,aAAL,GAAqBP,OAAO,CAACC,aAAR,CACnB7B,EADmB,EAEnBoC,sBAFmB,EAGnBC,sBAHmB,CAArB;AAMA,WAAKC,UAAL,GAAkBV,OAAO,CAACW,YAAR,CAChBvC,EADgB,EAEhB,IAAIwC,YAAJ,CAAiB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,CAAjB,CAFgB,CAAlB;AAKA,WAAK9B,WAAL,GAAmBV,EAAE,CAACyC,iBAAH,EAAnB;AAEA,WAAKC,gBAAL,GAAwBd,OAAO,CAACe,aAAR,CACtB,KAAK3C,EADiB,EAEtB,KAAKA,EAAL,CAAQ4C,MAFc,EAGtBjE,YAAY,CAAC,KAAK8C,UAAN,CAHU,EAItB,EAJsB,EAKtB,EALsB,CAAxB;AAQA,UAAMoB,WAAW,GAAG,IAAIjD,UAAJ,CAAe,KAAKV,KAAL,GAAa,KAAKC,MAAlB,GAA2B,CAA1C,CAApB;AAIA,WAAK2D,iBAAL,GAAyBlB,OAAO,CAACe,aAAR,CACvB3C,EADuB,EAEvBA,EAAE,CAAC+C,OAFoB,EAGvBF,WAHuB,EAIvB,KAAK3D,KAJkB,EAKvB,KAAKC,MALkB,CAAzB;AAOA,WAAK6D,aAAL,GAAqBpB,OAAO,CAACe,aAAR,CACnB3C,EADmB,EAEnBA,EAAE,CAAC+C,OAFgB,EAGnBF,WAHmB,EAInB,KAAK3D,KAJc,EAKnB,KAAKC,MALc,CAArB;AASA,UAAM8D,WAAW,GAAI,KAAKC,uBAAL,GAA+BC,IAAI,CAACC,IAAL,CAClDD,IAAI,CAACE,IAAL,CAAU,KAAKC,YAAf,CADkD,CAApD;AAIA,WAAKC,gBAAL,GAAwBN,WAAW,GAAGA,WAAtC;AAEA,UAAMO,aAAa,GAAG,IAAI5D,UAAJ,CAAe,KAAK2D,gBAAL,GAAwB,CAAvC,CAAtB;;AACA,WAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,aAAa,CAACE,MAAlC,EAA0CD,CAAC,EAA3C,EAA+C;AAC7CD,QAAAA,aAAa,CAACC,CAAD,CAAb,GAAmBN,IAAI,CAACQ,KAAL,CAAWR,IAAI,CAACS,MAAL,KAAgB,GAA3B,CAAnB;AACD;;AAED,WAAKC,qBAAL,GAA6BjC,OAAO,CAACe,aAAR,CAC3B3C,EAD2B,EAE3BA,EAAE,CAAC+C,OAFwB,EAG3BS,aAH2B,EAI3BP,WAJ2B,EAK3BA,WAL2B,CAA7B;AAOA,WAAKa,qBAAL,GAA6BlC,OAAO,CAACe,aAAR,CAC3B3C,EAD2B,EAE3BA,EAAE,CAAC+C,OAFwB,EAG3BS,aAH2B,EAI3BP,WAJ2B,EAK3BA,WAL2B,CAA7B;AAQA,UAAMc,eAAe,GAAG,IAAIvB,YAAJ,CAAiB,KAAKe,gBAAtB,CAAxB;;AACA,WAAK,IAAIS,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,KAAKT,gBAA7B,EAA+CS,GAAG,EAAlD,EAAsD;AACpDD,QAAAA,eAAe,CAACC,GAAD,CAAf,GAAuBA,GAAvB;AACD;;AACD,WAAKC,mBAAL,GAA2BrC,OAAO,CAACW,YAAR,CAAqBvC,EAArB,EAAyB+D,eAAzB,CAA3B;AACD;;;WAED,iBAAeG,QAAf,EAAoC;AAClC,WAAKA,QAAL,GAAgBA,QAAhB;AACA,WAAKC,WAAL,GAAmBvC,OAAO,CAACwC,iBAAR,CACjB,KAAKpE,EADY,EAEjB,KAAKA,EAAL,CAAQ4C,MAFS,EAGjBsB,QAAQ,CAACG,KAHQ,CAAnB;AAKD;;;WAMD,2BAAyBC,GAAzB,EAAsC;AACpC,UAAMtE,EAAE,GAAG,KAAKA,EAAhB;;AACA,UAAIsE,GAAG,KAAK,KAAKhB,YAAjB,EAA+B;AAC7B,aAAKA,YAAL,GAAoBgB,GAApB;AAGA,YAAMrB,WAAW,GAAI,KAAKC,uBAAL,GAA+BC,IAAI,CAACC,IAAL,CAClDD,IAAI,CAACE,IAAL,CAAU,KAAKC,YAAf,CADkD,CAApD;AAGA,aAAKC,gBAAL,GAAwBN,WAAW,GAAGA,WAAtC;AAEA,YAAMO,aAAa,GAAG,IAAI5D,UAAJ,CAAe,KAAK2D,gBAAL,GAAwB,CAAvC,CAAtB;;AACA,aAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,aAAa,CAACE,MAAlC,EAA0CD,CAAC,EAA3C,EAA+C;AAC7CD,UAAAA,aAAa,CAACC,CAAD,CAAb,GAAmBN,IAAI,CAACQ,KAAL,CAAWR,IAAI,CAACS,MAAL,KAAgB,GAA3B,CAAnB;AACD;;AAED,aAAKC,qBAAL,GAA6BjC,OAAO,CAACe,aAAR,CAC3B3C,EAD2B,EAE3BA,EAAE,CAAC+C,OAFwB,EAG3BS,aAH2B,EAI3BP,WAJ2B,EAK3BA,WAL2B,CAA7B;AAOA,aAAKa,qBAAL,GAA6BlC,OAAO,CAACe,aAAR,CAC3B3C,EAD2B,EAE3BA,EAAE,CAAC+C,OAFwB,EAG3BS,aAH2B,EAI3BP,WAJ2B,EAK3BA,WAL2B,CAA7B;AAQA,YAAMc,eAAe,GAAG,IAAIvB,YAAJ,CAAiB,KAAKe,gBAAtB,CAAxB;;AACA,aAAK,IAAIS,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,KAAKT,gBAA7B,EAA+CS,GAAG,EAAlD,EAAsD;AACpDD,UAAAA,eAAe,CAACC,GAAD,CAAf,GAAuBA,GAAvB;AACD;;AACD,aAAKC,mBAAL,GAA2BrC,OAAO,CAACW,YAAR,CAAqBvC,EAArB,EAAyB+D,eAAzB,CAA3B;AACD;AACF;;;WASD,uBAAqBQ,IAArB,EAAmCC,IAAnC,EAAiDC,IAAjD,EAA+DC,IAA/D,EAA6E;AAC3E,WAAKR,QAAL,CAAcK,IAAd,GAAqBA,IAArB;AACA,WAAKL,QAAL,CAAcM,IAAd,GAAqBA,IAArB;AACA,WAAKN,QAAL,CAAcO,IAAd,GAAqBA,IAArB;AACA,WAAKP,QAAL,CAAcQ,IAAd,GAAqBA,IAArB;AACD;;;WAMD,gCAA8BjD,UAA9B,EAAqE;AACnE,UAAI,KAAKkD,cAAL,CAAoBlD,UAApB,CAAJ,EAAqC;AACnC,aAAKA,UAAL,GAAkBA,UAAlB;AAEA,YAAMzB,EAAE,GAAG,KAAKA,EAAhB;AACAA,QAAAA,EAAE,CAAC4E,aAAH,CAAiB,KAAKlC,gBAAtB;AACA,aAAKA,gBAAL,GAAwBd,OAAO,CAACe,aAAR,CACtB3C,EADsB,EAEtBA,EAAE,CAAC4C,MAFmB,EAGtBjE,YAAY,CAAC8C,UAAD,CAHU,EAItB,EAJsB,EAKtB,EALsB,CAAxB;AAOD;AACF;;;WAED,wBAAsBA,UAAtB,EAAsE;AACpE,UAAMlC,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYkC,UAAZ,CAAb;;AACA,gCAAmBlC,IAAnB,6BAAyB;AAApB,YAAMsF,IAAI,aAAV;;AACH,YAAMC,IAAG,GAAGC,MAAM,CAACF,IAAD,CAAlB;;AAEA,YAAI,CAAC,KAAKpD,UAAL,CAAgBqD,IAAhB,CAAL,EAA2B;AACzB,iBAAO,IAAP;AACD;;AAED,YAAI,KAAKrD,UAAL,CAAgBqD,IAAhB,KAAwB,KAAKrD,UAAL,CAAgBqD,IAAhB,MAAyBrD,UAAU,CAACqD,IAAD,CAA/D,EAAsE;AACpE,iBAAO,IAAP;AACD;AACF;;AACD,aAAO,KAAP;AACD;;;WAED,gBAAc5F,KAAd,EAA6BC,MAA7B,EAA6C;AAC3C,UAAID,KAAK,KAAK,KAAKA,KAAf,IAAwBC,MAAM,KAAK,KAAKA,MAA5C,EAAoD;AAClD,YAAMa,EAAE,GAAG,KAAKA,EAAhB;AACAA,QAAAA,EAAE,CAAC4E,aAAH,CAAiB,KAAK9B,iBAAtB;AACA9C,QAAAA,EAAE,CAAC4E,aAAH,CAAiB,KAAK5B,aAAtB;AAEA,aAAK9D,KAAL,GAAaA,KAAb;AACA,aAAKC,MAAL,GAAcA,MAAd;AACA,YAAM0D,WAAW,GAAG,IAAIjD,UAAJ,CAAeV,KAAK,GAAGC,MAAR,GAAiB,CAAhC,CAApB;AAEA,aAAK2D,iBAAL,GAAyBlB,OAAO,CAACe,aAAR,CACvB3C,EADuB,EAEvBA,EAAE,CAAC+C,OAFoB,EAGvBF,WAHuB,EAIvB3D,KAJuB,EAKvBC,MALuB,CAAzB;AAOA,aAAK6D,aAAL,GAAqBpB,OAAO,CAACe,aAAR,CACnB3C,EADmB,EAEnBA,EAAE,CAAC+C,OAFgB,EAGnBF,WAHmB,EAInB3D,KAJmB,EAKnBC,MALmB,CAArB;AAOD;AACF;;;WACD,gBAAc;AAAA;;AACZ,4BAAI,KAAK+E,QAAT,2CAAI,eAAeG,KAAnB,EAA0B;AACxB,YAAMrE,EAAE,GAAG,KAAKA,EAAhB;AAEA4B,QAAAA,OAAO,CAACoD,WAAR,CAAoBhF,EAApB,EAAwB,KAAKmE,WAA7B,EAA0D,CAA1D;AACAvC,QAAAA,OAAO,CAACoD,WAAR,CAAoBhF,EAApB,EAAwB,KAAK6D,qBAA7B,EAAoE,CAApE;AAEA,aAAKoB,UAAL;AACA,aAAKC,eAAL;AAEA,eAAO;AAAEC,UAAAA,CAAC,EAAE,KAAKC,MAAV;AAAkBC,UAAAA,CAAC,EAAE,KAAKnG,KAA1B;AAAiCoG,UAAAA,CAAC,EAAE,KAAKnG;AAAzC,SAAP;AACD,OAVD,MAUO;AACL,eAAO;AAAEgG,UAAAA,CAAC,EAAE,IAAIvF,UAAJ,CAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAf,CAAL;AAAmCyF,UAAAA,CAAC,EAAE,CAAtC;AAAyCC,UAAAA,CAAC,EAAE;AAA5C,SAAP;AACD;AACF;;;WAED,sBAAoB;AAClB,UAAMtF,EAAE,GAAG,KAAKA,EAAhB;AAGAS,MAAAA,eAAe,CAACT,EAAD,EAAK,KAAKU,WAAV,EAAuB,KAAKsC,aAA5B,CAAf;AAEAhD,MAAAA,EAAE,CAACuF,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkB,KAAKrG,KAAvB,EAA8B,KAAKC,MAAnC;AAEAa,MAAAA,EAAE,CAACwF,OAAH,CAAWxF,EAAE,CAACyF,KAAd;AACA,WAAKC,eAAL,CAAqB,KAAK5C,iBAA1B,EAA6C,KAAKzB,WAAlD;AACA,WAAKsE,aAAL;AAEA,WAAKP,MAAL,GAAc,IAAIxF,UAAJ,CAAe,IAAI,KAAKV,KAAT,GAAiB,KAAKC,MAArC,CAAd;AACAa,MAAAA,EAAE,CAAC4F,UAAH,CACE,CADF,EAEE,CAFF,EAGE,KAAK1G,KAHP,EAIE,KAAKC,MAJP,EAKEa,EAAE,CAAC6F,IALL,EAME7F,EAAE,CAAC8F,aANL,EAOE,KAAKV,MAPP;AAUA3E,MAAAA,eAAe,CAACT,EAAD,EAAK,IAAL,EAAW,IAAX,CAAf;AACAA,MAAAA,EAAE,CAACuF,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkB,KAAKvF,EAAL,CAAQnB,MAAR,CAAeK,KAAjC,EAAwC,KAAKc,EAAL,CAAQnB,MAAR,CAAeM,MAAvD;AAGA,UAAM4G,IAAI,GAAG,KAAKjD,iBAAlB;AACA,WAAKA,iBAAL,GAAyB,KAAKE,aAA9B;AACA,WAAKA,aAAL,GAAqB+C,IAArB;AACD;;;WAED,yBAAuBpF,OAAvB,EAAqCqF,OAArC,EAAsD;AACpD,UAAMhG,EAAE,GAAG,KAAKA,EAAhB;AACA,UAAMiG,OAAO,GAAG,KAAKjE,iBAArB;AACAhC,MAAAA,EAAE,CAACkG,UAAH,CAAcD,OAAd;AAIAjG,MAAAA,EAAE,CAACI,UAAH,CAAcJ,EAAE,CAACK,YAAjB,EAA+B,KAAKiC,UAApC;AACAtC,MAAAA,EAAE,CAACO,mBAAH,CAAuB0F,OAAO,CAACE,KAA/B,EAAsC,CAAtC,EAAyCnG,EAAE,CAACQ,KAA5C,EAAmD,KAAnD,EAA0D,CAA1D,EAA6D,CAA7D;AACAR,MAAAA,EAAE,CAACM,uBAAH,CAA2B2F,OAAO,CAACE,KAAnC;AAEAnG,MAAAA,EAAE,CAACI,UAAH,CAAcJ,EAAE,CAACK,YAAjB,EAA+B,IAA/B;AAEAuB,MAAAA,OAAO,CAACoD,WAAR,CAAoBhF,EAApB,EAAwBW,OAAxB,EAAiC,CAAjC;AACAX,MAAAA,EAAE,CAACoG,SAAH,CAAaH,OAAO,CAACI,QAArB,EAA+B,CAA/B;AACArG,MAAAA,EAAE,CAACsG,SAAH,CAAaL,OAAO,CAACM,SAArB,EAAgCP,OAAhC;AAEAhG,MAAAA,EAAE,CAACwG,UAAH,CAAcxG,EAAE,CAACyG,SAAjB,EAA4B,CAA5B,EAA+B,CAA/B;AAED;;;WAED,yBAAuB;AACrB,UAAMzG,EAAE,GAAG,KAAKA,EAAhB;AACA,UAAMiG,OAAO,GAAG,KAAKtE,WAArB;AACA3B,MAAAA,EAAE,CAACkG,UAAH,CAAcD,OAAd;AAEAlG,MAAAA,aAAa,CAACC,EAAD,EAAK,KAAKiE,mBAAV,EAA+BgC,OAAO,CAACS,OAAvC,EAAgD,CAAhD,CAAb;AACA9E,MAAAA,OAAO,CAACoD,WAAR,CAAoBhF,EAApB,EAAwB,KAAK0C,gBAA7B,EAA+D,CAA/D;AAEA1C,MAAAA,EAAE,CAACoG,SAAH,CAAaH,OAAO,CAACU,MAArB,EAA6B,CAA7B;AACA3G,MAAAA,EAAE,CAACoG,SAAH,CAAaH,OAAO,CAACW,WAArB,EAAkC,CAAlC;AACA5G,MAAAA,EAAE,CAACoG,SAAH,CAAaH,OAAO,CAACY,YAArB,EAAmC,CAAnC;AAEA7G,MAAAA,EAAE,CAACsG,SAAH,CAAaL,OAAO,CAACa,eAArB,EAAsC,KAAK5D,uBAA3C;AACAlD,MAAAA,EAAE,CAAC+G,SAAH,CAAad,OAAO,CAACe,UAArB,EAAiC,KAAK9C,QAAL,CAAcK,IAA/C,EAAqD,KAAKL,QAAL,CAAcO,IAAnE;AACAzE,MAAAA,EAAE,CAAC+G,SAAH,CAAad,OAAO,CAACgB,UAArB,EAAiC,KAAK/C,QAAL,CAAcM,IAA/C,EAAqD,KAAKN,QAAL,CAAcQ,IAAnE;AAEA1E,MAAAA,EAAE,CAACwG,UAAH,CAAcxG,EAAE,CAACkH,MAAjB,EAAyB,CAAzB,EAA4B,KAAK3D,gBAAjC;AACD;;;WAED,2BAAyB;AACvB,UAAMvD,EAAE,GAAG,KAAKA,EAAhB;AACAS,MAAAA,eAAe,CAACT,EAAD,EAAK,KAAKU,WAAV,EAAuB,KAAKoD,qBAA5B,CAAf;AACA9D,MAAAA,EAAE,CAACuF,QAAH,CACE,CADF,EAEE,CAFF,EAGE,KAAKrC,uBAHP,EAIE,KAAKA,uBAJP;AAOA,UAAM+C,OAAO,GAAG,KAAK9D,aAArB;AACAnC,MAAAA,EAAE,CAACkG,UAAH,CAAcD,OAAd;AAEAlG,MAAAA,aAAa,CAACC,EAAD,EAAK,KAAKsC,UAAV,EAAsB2D,OAAO,CAACE,KAA9B,EAAqC,CAArC,CAAb;AAEAnG,MAAAA,EAAE,CAACoG,SAAH,CAAaH,OAAO,CAACU,MAArB,EAA6B,CAA7B;AACA3G,MAAAA,EAAE,CAACoG,SAAH,CAAaH,OAAO,CAACW,WAArB,EAAkC,CAAlC;AAEA5G,MAAAA,EAAE,CAACsG,SAAH,CAAaL,OAAO,CAACkB,WAArB,EAAkChE,IAAI,CAACS,MAAL,EAAlC;AACA5D,MAAAA,EAAE,CAAC+G,SAAH,CACEd,OAAO,CAACmB,UADV,EAEE,KAAKlD,QAAL,CAAcG,KAAd,CAAoBnF,KAApB,GAA4B,CAF9B,EAGE,KAAKgF,QAAL,CAAcG,KAAd,CAAoBlF,MAApB,GAA6B,CAH/B;AAKAa,MAAAA,EAAE,CAAC+G,SAAH,CAAad,OAAO,CAACe,UAArB,EAAiC,KAAK9C,QAAL,CAAcK,IAA/C,EAAqD,KAAKL,QAAL,CAAcO,IAAnE;AACAzE,MAAAA,EAAE,CAAC+G,SAAH,CAAad,OAAO,CAACgB,UAArB,EAAiC,KAAK/C,QAAL,CAAcM,IAA/C,EAAqD,KAAKN,QAAL,CAAcQ,IAAnE;AACA1E,MAAAA,EAAE,CAACsG,SAAH,CAAaL,OAAO,CAACoB,cAArB,EAAqC,KAAK/F,WAA1C;AACAtB,MAAAA,EAAE,CAACsG,SAAH,CAAaL,OAAO,CAACqB,WAArB,EAAkC,KAAK/F,QAAvC;AACAvB,MAAAA,EAAE,CAACsG,SAAH,CAAaL,OAAO,CAACsB,gBAArB,EAAuC,KAAK/F,YAA5C;AAEAxB,MAAAA,EAAE,CAACwG,UAAH,CAAcxG,EAAE,CAACyG,SAAjB,EAA4B,CAA5B,EAA+B,CAA/B;AAGA,UAAMV,IAAI,GAAG,KAAKlC,qBAAlB;AACA,WAAKA,qBAAL,GAA6B,KAAKC,qBAAlC;AACA,WAAKA,qBAAL,GAA6BiC,IAA7B;AAEAtF,MAAAA,eAAe,CAACT,EAAD,EAAK,IAAL,EAAW,IAAX,CAAf;AAGD;;;WAED,mBAAiB;AAiBf,WAAKA,EAAL,CAAQwH,YAAR,CAAqB,KAAKlF,UAA1B;AACA,WAAKtC,EAAL,CAAQwH,YAAR,CAAqB,KAAKvD,mBAA1B;AAEA,WAAKjE,EAAL,CAAQyH,iBAAR,CAA0B,KAAK/G,WAA/B;AAGA,WAAKV,EAAL,CAAQ0H,YAAR,CAAqB,KAAK/F,WAAL,CAAiBgG,YAAtC;AAEA,WAAK3H,EAAL,CAAQ0H,YAAR,CAAqB,KAAK/F,WAAL,CAAiBiG,cAAtC;AACA,WAAK5H,EAAL,CAAQ6H,aAAR,CAAsB,KAAKlG,WAA3B;AAGA,WAAK3B,EAAL,CAAQ0H,YAAR,CAAqB,KAAK1F,iBAAL,CAAuB2F,YAA5C;AAEA,WAAK3H,EAAL,CAAQ0H,YAAR,CAAqB,KAAK1F,iBAAL,CAAuB4F,cAA5C;AACA,WAAK5H,EAAL,CAAQ6H,aAAR,CAAsB,KAAK7F,iBAA3B;AAGA,WAAKhC,EAAL,CAAQ0H,YAAR,CAAqB,KAAKvF,aAAL,CAAmBwF,YAAxC;AAEA,WAAK3H,EAAL,CAAQ0H,YAAR,CAAqB,KAAKvF,aAAL,CAAmByF,cAAxC;AACA,WAAK5H,EAAL,CAAQ6H,aAAR,CAAsB,KAAK1F,aAA3B;AAEA,WAAKnC,EAAL,CAAQ4E,aAAR,CAAsB,KAAKlC,gBAA3B;AACA,WAAK1C,EAAL,CAAQ4E,aAAR,CAAsB,KAAK9B,iBAA3B;AACA,WAAK9C,EAAL,CAAQ4E,aAAR,CAAsB,KAAK5B,aAA3B;AACA,WAAKhD,EAAL,CAAQ4E,aAAR,CAAsB,KAAKf,qBAA3B;AACA,WAAK7D,EAAL,CAAQ4E,aAAR,CAAsB,KAAKd,qBAA3B;AACA,WAAK9D,EAAL,CAAQ4E,aAAR,CAAsB,KAAKT,WAA3B;AACD","sourcesContent":["import * as glUtils from './utils';\nimport {\n drawFrag,\n drawVert,\n fullScreenFrag,\n fullScreenVert,\n updateFrag,\n updateVert,\n} from './windShader';\n\nfunction getColorRamp(colors: { [key: number]: string }) {\n let canvas = document.createElement('canvas') as HTMLCanvasElement;\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n\n canvas.width = 256;\n canvas.height = 1;\n\n const gradient = ctx.createLinearGradient(0, 0, 256, 0);\n for (const stop of Object.keys(colors)) {\n gradient.addColorStop(+stop, colors[+stop]);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, 256, 1);\n\n // @ts-ignore dispose canvas element\n canvas = null;\n\n return new Uint8Array(ctx.getImageData(0, 0, 256, 1).data);\n}\n\nfunction bindAttribute(\n gl: WebGLRenderingContext,\n buffer: any,\n attribute: any,\n numComponents: any,\n) {\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.enableVertexAttribArray(attribute);\n gl.vertexAttribPointer(attribute, numComponents, gl.FLOAT, false, 0, 0);\n}\n\nfunction bindFramebuffer(\n gl: WebGLRenderingContext,\n framebuffer: any,\n texture: any,\n) {\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n if (texture) {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0,\n );\n }\n}\n\nexport interface IWindData {\n uMin: number;\n uMax: number;\n vMin: number;\n vMax: number;\n image: HTMLImageElement;\n}\n\nexport interface IWind {\n width: number;\n height: number;\n\n fadeOpacity: number;\n speedFactor: number;\n dropRate: number;\n dropRateBump: number;\n\n setWind: (windData: IWindData) => void;\n draw: () => { d: Uint8Array; w: number; h: number };\n updateParticelNum: (num: number) => void;\n updateWindDir: (\n uMin: number,\n uMax: number,\n vMin: number,\n vMax: number,\n ) => void;\n updateColorRampTexture: (rampColors: { [key: number]: string }) => void;\n\n reSize: (width: number, height: number) => void;\n destroy: () => void;\n}\n\nexport interface IWindProps {\n glContext: WebGLRenderingContext;\n imageWidth: number;\n imageHeight: number;\n fadeOpacity: number;\n speedFactor: number;\n dropRate: number;\n dropRateBump: number;\n rampColors: { [key: number]: string };\n}\n\nexport class Wind {\n public width: number = 512;\n public height: number = 512;\n\n public pixels: Uint8Array;\n\n public fadeOpacity: number;\n public speedFactor: number;\n public dropRate: number;\n public dropRateBump: number;\n private gl: WebGLRenderingContext;\n private drawProgram: WebGLProgram;\n private fullScreenProgram: WebGLProgram;\n private updateProgram: WebGLProgram;\n\n private rampColors: { [key: number]: string };\n\n private numParticles: number = 65536;\n private numParticlesSize: number;\n private particleStateResolution: number;\n\n private quadBuffer: WebGLBuffer | null;\n private particleIndexBuffer: WebGLBuffer | null;\n\n private framebuffer: WebGLFramebuffer | null;\n\n private colorRampTexture: WebGLTexture | null;\n private backgroundTexture: WebGLTexture | null;\n private screenTexture: WebGLTexture | null;\n private particleStateTexture0: WebGLTexture | null;\n private particleStateTexture1: WebGLTexture | null;\n private windTexture: WebGLTexture | null;\n\n private windData: IWindData;\n\n constructor(options: IWindProps) {\n this.gl = options.glContext;\n this.width = options.imageWidth;\n this.height = options.imageHeight;\n this.fadeOpacity = options.fadeOpacity;\n this.speedFactor = options.speedFactor;\n this.dropRate = options.dropRate;\n this.dropRateBump = options.dropRateBump;\n\n this.rampColors = options.rampColors;\n this.init();\n }\n\n public init() {\n const gl = this.gl;\n\n this.fadeOpacity = 0.996; // how fast the particle trails fade on each frame\n this.speedFactor = 0.25; // how fast the particles move\n this.dropRate = 0.003; // how often the particles move to a random place\n this.dropRateBump = 0.01; // drop rate increase relative to individual particle speed\n\n this.drawProgram = glUtils.createProgram(\n gl,\n drawVert,\n drawFrag,\n ) as WebGLProgram;\n this.fullScreenProgram = glUtils.createProgram(\n gl,\n fullScreenVert,\n fullScreenFrag,\n ) as WebGLProgram;\n this.updateProgram = glUtils.createProgram(\n gl,\n updateVert,\n updateFrag,\n ) as WebGLProgram;\n\n this.quadBuffer = glUtils.createBuffer(\n gl,\n new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]),\n );\n\n this.framebuffer = gl.createFramebuffer();\n\n this.colorRampTexture = glUtils.createTexture(\n this.gl,\n this.gl.LINEAR,\n getColorRamp(this.rampColors),\n 16,\n 16,\n );\n\n const emptyPixels = new Uint8Array(this.width * this.height * 4);\n\n // screen textures to hold the drawn screen for the previous and the current frame\n\n this.backgroundTexture = glUtils.createTexture(\n gl,\n gl.NEAREST,\n emptyPixels,\n this.width,\n this.height,\n );\n this.screenTexture = glUtils.createTexture(\n gl,\n gl.NEAREST,\n emptyPixels,\n this.width,\n this.height,\n );\n\n // we create a square texture where each pixel will hold a particle position encoded as RGBA\n const particleRes = (this.particleStateResolution = Math.ceil(\n Math.sqrt(this.numParticles),\n ));\n // particleRes size\n this.numParticlesSize = particleRes * particleRes;\n\n const particleState = new Uint8Array(this.numParticlesSize * 4);\n for (let i = 0; i < particleState.length; i++) {\n particleState[i] = Math.floor(Math.random() * 256); // randomize the initial particle positions\n }\n // textures to hold the particle state for the current and the next frame\n this.particleStateTexture0 = glUtils.createTexture(\n gl,\n gl.NEAREST,\n particleState,\n particleRes,\n particleRes,\n );\n this.particleStateTexture1 = glUtils.createTexture(\n gl,\n gl.NEAREST,\n particleState,\n particleRes,\n particleRes,\n );\n\n const particleIndices = new Float32Array(this.numParticlesSize);\n for (let i$1 = 0; i$1 < this.numParticlesSize; i$1++) {\n particleIndices[i$1] = i$1;\n }\n this.particleIndexBuffer = glUtils.createBuffer(gl, particleIndices);\n }\n\n public setWind(windData: IWindData) {\n this.windData = windData;\n this.windTexture = glUtils.createDataTexture(\n this.gl,\n this.gl.LINEAR,\n windData.image,\n );\n }\n\n /**\n * 更新风场粒子数量\n * @param num\n */\n public updateParticelNum(num: number) {\n const gl = this.gl;\n if (num !== this.numParticles) {\n this.numParticles = num; // params number\n\n // we create a square texture where each pixel will hold a particle position encoded as RGBA\n const particleRes = (this.particleStateResolution = Math.ceil(\n Math.sqrt(this.numParticles),\n ));\n this.numParticlesSize = particleRes * particleRes;\n\n const particleState = new Uint8Array(this.numParticlesSize * 4);\n for (let i = 0; i < particleState.length; i++) {\n particleState[i] = Math.floor(Math.random() * 256); // randomize the initial particle positions\n }\n // textures to hold the particle state for the current and the next frame\n this.particleStateTexture0 = glUtils.createTexture(\n gl,\n gl.NEAREST,\n particleState,\n particleRes,\n particleRes,\n );\n this.particleStateTexture1 = glUtils.createTexture(\n gl,\n gl.NEAREST,\n particleState,\n particleRes,\n particleRes,\n );\n\n const particleIndices = new Float32Array(this.numParticlesSize);\n for (let i$1 = 0; i$1 < this.numParticlesSize; i$1++) {\n particleIndices[i$1] = i$1;\n }\n this.particleIndexBuffer = glUtils.createBuffer(gl, particleIndices);\n }\n }\n\n /**\n * 更新风场风向风速\n * @param uMin\n * @param uMax\n * @param vMin\n * @param vMax\n */\n public updateWindDir(uMin: number, uMax: number, vMin: number, vMax: number) {\n this.windData.uMin = uMin;\n this.windData.uMax = uMax;\n this.windData.vMin = vMin;\n this.windData.vMax = vMax;\n }\n\n /**\n * update rampColors\n * @param rampColors\n */\n public updateColorRampTexture(rampColors: { [key: number]: string }) {\n if (this.isColorChanged(rampColors)) {\n this.rampColors = rampColors;\n\n const gl = this.gl;\n gl.deleteTexture(this.colorRampTexture);\n this.colorRampTexture = glUtils.createTexture(\n gl,\n gl.LINEAR,\n getColorRamp(rampColors),\n 16,\n 16,\n );\n }\n }\n\n public isColorChanged(rampColors: { [key: number]: string }): boolean {\n const keys = Object.keys(rampColors);\n for (const item of keys) {\n const key = Number(item);\n // exist new key -> color need update\n if (!this.rampColors[key]) {\n return true;\n }\n // value changed -> color need update\n if (this.rampColors[key] && this.rampColors[key] !== rampColors[key]) {\n return true;\n }\n }\n return false;\n }\n\n public reSize(width: number, height: number) {\n if (width !== this.width || height !== this.height) {\n const gl = this.gl;\n gl.deleteTexture(this.backgroundTexture);\n gl.deleteTexture(this.screenTexture);\n\n this.width = width;\n this.height = height;\n const emptyPixels = new Uint8Array(width * height * 4);\n // screen textures to hold the drawn screen for the previous and the current frame\n this.backgroundTexture = glUtils.createTexture(\n gl,\n gl.NEAREST,\n emptyPixels,\n width,\n height,\n );\n this.screenTexture = glUtils.createTexture(\n gl,\n gl.NEAREST,\n emptyPixels,\n width,\n height,\n );\n }\n }\n public draw() {\n if (this.windData?.image) {\n const gl = this.gl;\n\n glUtils.bindTexture(gl, this.windTexture as WebGLTexture, 0);\n glUtils.bindTexture(gl, this.particleStateTexture0 as WebGLTexture, 1);\n\n this.drawScreen(); // draw Particles into framebuffer\n this.updateParticles();\n\n return { d: this.pixels, w: this.width, h: this.height };\n } else {\n return { d: new Uint8Array([0, 0, 0, 0]), w: 1, h: 1 };\n }\n }\n\n public drawScreen() {\n const gl = this.gl;\n\n // draw the screen into a temporary framebuffer to retain it as the background on the next frame\n bindFramebuffer(gl, this.framebuffer, this.screenTexture);\n\n gl.viewport(0, 0, this.width, this.height);\n\n gl.disable(gl.BLEND);\n this.drawFullTexture(this.backgroundTexture, this.fadeOpacity);\n this.drawParticles();\n\n this.pixels = new Uint8Array(4 * this.width * this.height);\n gl.readPixels(\n 0,\n 0,\n this.width,\n this.height,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n this.pixels,\n );\n\n bindFramebuffer(gl, null, null);\n gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height);\n\n // save the current screen as the background for the next frame\n const temp = this.backgroundTexture;\n this.backgroundTexture = this.screenTexture;\n this.screenTexture = temp;\n }\n\n public drawFullTexture(texture: any, opacity: number) {\n const gl = this.gl;\n const program = this.fullScreenProgram as any;\n gl.useProgram(program);\n\n // bindAttribute(gl, this.quadBuffer, program.a_pos, 2);\n\n gl.bindBuffer(gl.ARRAY_BUFFER, this.quadBuffer);\n gl.vertexAttribPointer(program.a_pos, 2, gl.FLOAT, false, 0, 0);\n gl.enableVertexAttribArray(program.a_pos);\n\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\n\n glUtils.bindTexture(gl, texture, 2);\n gl.uniform1i(program.u_screen, 2);\n gl.uniform1f(program.u_opacity, opacity);\n\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n // gl.drawArrays(gl.POINTS, 0, 6);\n }\n\n public drawParticles() {\n const gl = this.gl;\n const program = this.drawProgram as any;\n gl.useProgram(program);\n\n bindAttribute(gl, this.particleIndexBuffer, program.a_index, 1);\n glUtils.bindTexture(gl, this.colorRampTexture as WebGLTexture, 2);\n\n gl.uniform1i(program.u_wind, 0);\n gl.uniform1i(program.u_particles, 1);\n gl.uniform1i(program.u_color_ramp, 2);\n\n gl.uniform1f(program.u_particles_res, this.particleStateResolution);\n gl.uniform2f(program.u_wind_min, this.windData.uMin, this.windData.vMin);\n gl.uniform2f(program.u_wind_max, this.windData.uMax, this.windData.vMax);\n\n gl.drawArrays(gl.POINTS, 0, this.numParticlesSize);\n }\n\n public updateParticles() {\n const gl = this.gl;\n bindFramebuffer(gl, this.framebuffer, this.particleStateTexture1);\n gl.viewport(\n 0,\n 0,\n this.particleStateResolution,\n this.particleStateResolution,\n );\n\n const program = this.updateProgram as any;\n gl.useProgram(program);\n\n bindAttribute(gl, this.quadBuffer, program.a_pos, 2);\n\n gl.uniform1i(program.u_wind, 0);\n gl.uniform1i(program.u_particles, 1);\n\n gl.uniform1f(program.u_rand_seed, Math.random());\n gl.uniform2f(\n program.u_wind_res,\n this.windData.image.width * 2,\n this.windData.image.height * 2,\n );\n gl.uniform2f(program.u_wind_min, this.windData.uMin, this.windData.vMin);\n gl.uniform2f(program.u_wind_max, this.windData.uMax, this.windData.vMax);\n gl.uniform1f(program.u_speed_factor, this.speedFactor);\n gl.uniform1f(program.u_drop_rate, this.dropRate);\n gl.uniform1f(program.u_drop_rate_bump, this.dropRateBump);\n\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n\n // swap the particle state textures so the new one becomes the current one\n const temp = this.particleStateTexture0;\n this.particleStateTexture0 = this.particleStateTexture1;\n this.particleStateTexture1 = temp;\n\n bindFramebuffer(gl, null, null);\n\n // gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height);\n }\n\n public destroy() {\n // private drawProgram: WebGLProgram;\n // private fullScreenProgram: WebGLProgram;\n // private updateProgram: WebGLProgram;\n\n // private quadBuffer: WebGLBuffer | null;\n // private particleIndexBuffer: WebGLBuffer | null;\n\n // private framebuffer: WebGLFramebuffer | null;\n\n // private colorRampTexture: WebGLTexture | null;\n // private backgroundTexture: WebGLTexture | null;\n // private screenTexture: WebGLTexture | null;\n // private particleStateTexture0: WebGLTexture | null;\n // private particleStateTexture1: WebGLTexture | null;\n // private windTexture: WebGLTexture | null;\n\n this.gl.deleteBuffer(this.quadBuffer);\n this.gl.deleteBuffer(this.particleIndexBuffer);\n\n this.gl.deleteFramebuffer(this.framebuffer);\n\n // @ts-ignore\n this.gl.deleteShader(this.drawProgram.vertexShader);\n // @ts-ignore\n this.gl.deleteShader(this.drawProgram.fragmentShader);\n this.gl.deleteProgram(this.drawProgram);\n\n // @ts-ignore\n this.gl.deleteShader(this.fullScreenProgram.vertexShader);\n // @ts-ignore\n this.gl.deleteShader(this.fullScreenProgram.fragmentShader);\n this.gl.deleteProgram(this.fullScreenProgram);\n\n // @ts-ignore\n this.gl.deleteShader(this.updateProgram.vertexShader);\n // @ts-ignore\n this.gl.deleteShader(this.updateProgram.fragmentShader);\n this.gl.deleteProgram(this.updateProgram);\n\n this.gl.deleteTexture(this.colorRampTexture);\n this.gl.deleteTexture(this.backgroundTexture);\n this.gl.deleteTexture(this.screenTexture);\n this.gl.deleteTexture(this.particleStateTexture0);\n this.gl.deleteTexture(this.particleStateTexture1);\n this.gl.deleteTexture(this.windTexture);\n }\n}\n"],"file":"windRender.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antv/l7-layers",
3
- "version": "2.9.18",
3
+ "version": "2.9.19",
4
4
  "description": "L7's collection of built-in layers",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -9,6 +9,7 @@
9
9
  "./es/index.js"
10
10
  ],
11
11
  "files": [
12
+ "dist",
12
13
  "lib",
13
14
  "es",
14
15
  "README.md"
@@ -17,17 +18,17 @@
17
18
  "tsc": "tsc --project tsconfig.build.json",
18
19
  "clean": "rimraf dist; rimraf es; rimraf lib;",
19
20
  "build": "run-p build:*",
20
- "build:cjs": "BABEL_ENV=cjs babel src --root-mode upward --out-dir lib --source-maps --extensions .ts,.tsx --delete-dir-on-start --no-comments",
21
- "build:esm": "BABEL_ENV=esm babel src --root-mode upward --out-dir es --source-maps --extensions .ts,.tsx --delete-dir-on-start --no-comments",
22
- "watch": "BABEL_ENV=cjs babel src --watch --root-mode upward --out-dir lib --source-maps --extensions .ts,.tsx --delete-dir-on-start --no-comments",
21
+ "build:cjs": "cross-env BABEL_ENV=cjs NODE_ENV=production babel src --root-mode upward --out-dir lib --source-maps --extensions .ts,.tsx --delete-dir-on-start --no-comments",
22
+ "build:esm": "cross-env BABEL_ENV=esm NODE_ENV=production babel src --root-mode upward --out-dir es --source-maps --extensions .ts,.tsx --delete-dir-on-start --no-comments",
23
+ "watch": "cross-env BABEL_ENV=cjs NODE_ENV=production babel src --watch --root-mode upward --out-dir lib --source-maps --extensions .ts,.tsx --delete-dir-on-start --no-comments",
23
24
  "sync": "tnpm sync"
24
25
  },
25
26
  "author": "xiaoiver",
26
27
  "license": "ISC",
27
28
  "dependencies": {
28
- "@antv/l7-core": "2.9.18",
29
- "@antv/l7-source": "2.9.18",
30
- "@antv/l7-utils": "2.9.18",
29
+ "@antv/l7-core": "2.9.19",
30
+ "@antv/l7-source": "2.9.19",
31
+ "@antv/l7-utils": "2.9.19",
31
32
  "@babel/runtime": "^7.7.7",
32
33
  "@mapbox/martini": "^0.2.0",
33
34
  "@turf/helpers": "^6.1.4",
@@ -57,7 +58,7 @@
57
58
  "@types/gl-matrix": "^2.4.5",
58
59
  "@types/lodash": "^4.14.138"
59
60
  },
60
- "gitHead": "8f65189c3e6bcd423c4ae3481bc99527501134c9",
61
+ "gitHead": "f17d96188a5b36cecaa057a476a4c6e1c4249235",
61
62
  "publishConfig": {
62
63
  "access": "public"
63
64
  }
@@ -1,9 +0,0 @@
1
- import { IModel, IModelUniform } from '@antv/l7-core';
2
- import BaseModel from '../../core/BaseModel';
3
- export default class ArcMiniModel extends BaseModel {
4
- getUninforms(): IModelUniform;
5
- getAnimateUniforms(): IModelUniform;
6
- initModels(): IModel[];
7
- buildModels(): IModel[];
8
- protected registerBuiltinAttributes(): void;
9
- }