@antv/l7-layers 2.21.1 → 2.21.2

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 (393) hide show
  1. package/es/canvas/index.js +60 -113
  2. package/es/canvas/models/canvas.js +95 -135
  3. package/es/canvas/models/constants.js +1 -1
  4. package/es/citybuliding/building.js +20 -58
  5. package/es/citybuliding/models/build.js +142 -199
  6. package/es/core/BaseLayer.d.ts +1 -1
  7. package/es/core/BaseLayer.js +1113 -1412
  8. package/es/core/BaseModel.js +263 -317
  9. package/es/core/CommonStyleAttribute.js +25 -18
  10. package/es/core/LayerPickService.js +92 -141
  11. package/es/core/TextureService.js +58 -69
  12. package/es/core/constant.js +2 -2
  13. package/es/core/interface.js +5 -5
  14. package/es/core/line_trangluation.js +38 -43
  15. package/es/core/shape/Path.js +21 -12
  16. package/es/core/shape/arrow.js +50 -62
  17. package/es/core/shape/extrude.js +54 -62
  18. package/es/core/triangulation.js +192 -171
  19. package/es/core/utils.js +5 -5
  20. package/es/earth/index.js +35 -73
  21. package/es/earth/models/atmosphere.js +98 -148
  22. package/es/earth/models/base.js +148 -201
  23. package/es/earth/models/bloomsphere.js +97 -147
  24. package/es/earth/utils.js +37 -38
  25. package/es/geometry/index.js +36 -75
  26. package/es/geometry/models/billboard.js +147 -204
  27. package/es/geometry/models/index.js +1 -1
  28. package/es/geometry/models/plane.js +277 -357
  29. package/es/geometry/models/sprite.js +182 -240
  30. package/es/heatmap/index.js +72 -121
  31. package/es/heatmap/models/grid.js +66 -118
  32. package/es/heatmap/models/grid3d.js +101 -151
  33. package/es/heatmap/models/heatmap.js +398 -455
  34. package/es/heatmap/models/hexagon.js +67 -119
  35. package/es/heatmap/models/index.js +1 -1
  36. package/es/heatmap/triangulation.js +20 -20
  37. package/es/image/index.js +23 -62
  38. package/es/image/models/image.js +99 -163
  39. package/es/image/models/index.js +1 -1
  40. package/es/line/index.js +65 -106
  41. package/es/line/models/arc.js +200 -248
  42. package/es/line/models/arc_3d.js +190 -241
  43. package/es/line/models/flow.js +101 -153
  44. package/es/line/models/great_circle.js +183 -234
  45. package/es/line/models/index.js +1 -1
  46. package/es/line/models/line.js +230 -285
  47. package/es/line/models/simple_line.js +142 -192
  48. package/es/line/models/wall.js +221 -273
  49. package/es/mask/index.js +16 -53
  50. package/es/mask/models/fill.js +51 -108
  51. package/es/mask/models/index.js +1 -1
  52. package/es/plugins/DataMappingPlugin.js +205 -249
  53. package/es/plugins/DataSourcePlugin.js +64 -92
  54. package/es/plugins/FeatureScalePlugin.js +258 -302
  55. package/es/plugins/LayerAnimateStylePlugin.js +12 -22
  56. package/es/plugins/LayerMaskPlugin.js +15 -24
  57. package/es/plugins/LayerModelPlugin.js +52 -136
  58. package/es/plugins/LayerStylePlugin.js +14 -23
  59. package/es/plugins/LightingPlugin.js +26 -37
  60. package/es/plugins/MultiPassRendererPlugin.js +34 -39
  61. package/es/plugins/PixelPickingPlugin.js +129 -150
  62. package/es/plugins/RegisterStyleAttributePlugin.js +80 -96
  63. package/es/plugins/ShaderUniformPlugin.js +159 -131
  64. package/es/plugins/UpdateModelPlugin.js +16 -26
  65. package/es/plugins/UpdateStyleAttributePlugin.js +47 -65
  66. package/es/point/index.js +118 -182
  67. package/es/point/models/billboard_point.js +72 -127
  68. package/es/point/models/earthExtrude.js +170 -220
  69. package/es/point/models/earthFill.js +136 -192
  70. package/es/point/models/extrude.js +167 -217
  71. package/es/point/models/fill.js +152 -209
  72. package/es/point/models/fillImage.js +156 -211
  73. package/es/point/models/image.js +127 -180
  74. package/es/point/models/index.js +1 -1
  75. package/es/point/models/normal.js +67 -122
  76. package/es/point/models/radar.js +93 -148
  77. package/es/point/models/text.js +447 -578
  78. package/es/point/shape/extrude.js +19 -25
  79. package/es/polygon/index.js +61 -99
  80. package/es/polygon/models/extrude.js +208 -281
  81. package/es/polygon/models/extrusion.js +95 -142
  82. package/es/polygon/models/fill.js +102 -153
  83. package/es/polygon/models/index.js +1 -1
  84. package/es/polygon/models/ocean.js +139 -198
  85. package/es/polygon/models/water.js +120 -179
  86. package/es/raster/buffers/triangulation.js +13 -11
  87. package/es/raster/index.js +47 -88
  88. package/es/raster/models/index.js +1 -1
  89. package/es/raster/models/raster.js +134 -202
  90. package/es/raster/models/rasterRgb.js +134 -208
  91. package/es/raster/models/rasterTerrainRgb.js +98 -153
  92. package/es/tile/core/BaseLayer.d.ts +1 -0
  93. package/es/tile/core/BaseLayer.js +206 -282
  94. package/es/tile/core/TileDebugLayer.js +12 -46
  95. package/es/tile/interaction/getRasterData.js +24 -30
  96. package/es/tile/interaction/utils.js +15 -33
  97. package/es/tile/service/TileLayerService.js +104 -177
  98. package/es/tile/service/TilePickService.js +99 -156
  99. package/es/tile/service/TileSourceService.js +17 -26
  100. package/es/tile/tile/DebugTile.js +41 -78
  101. package/es/tile/tile/ImageTile.js +33 -66
  102. package/es/tile/tile/MaskTile.js +47 -81
  103. package/es/tile/tile/RasterRGBTile.js +40 -71
  104. package/es/tile/tile/RasterTerrainRGBTile.js +33 -66
  105. package/es/tile/tile/RasterTile.js +69 -104
  106. package/es/tile/tile/Tile.d.ts +1 -1
  107. package/es/tile/tile/Tile.js +151 -232
  108. package/es/tile/tile/VectorTile.js +77 -124
  109. package/es/tile/tile/index.js +4 -2
  110. package/es/tile/utils/constants.js +1 -1
  111. package/es/tile/utils/utils.js +2 -2
  112. package/es/utils/blend.js +52 -46
  113. package/es/utils/collision-index.js +62 -70
  114. package/es/utils/extrude_polyline.js +441 -471
  115. package/es/utils/grid-index.js +97 -123
  116. package/es/utils/identityScale.js +5 -5
  117. package/es/utils/load-image.js +15 -39
  118. package/es/utils/multiPassRender.js +7 -9
  119. package/es/utils/polylineNormal.js +40 -42
  120. package/es/utils/rampcolor_legend.js +5 -3
  121. package/es/utils/simpleLine.js +53 -66
  122. package/es/utils/symbol-layout.js +95 -117
  123. package/es/wind/index.js +28 -70
  124. package/es/wind/models/index.js +1 -1
  125. package/es/wind/models/utils.js +36 -34
  126. package/es/wind/models/wind.js +203 -260
  127. package/es/wind/models/windRender.js +258 -269
  128. package/es/wind/models/windShader.js +145 -6
  129. package/lib/canvas/index.d.ts +18 -0
  130. package/lib/canvas/index.js +64 -113
  131. package/lib/canvas/models/canvas.d.ts +23 -0
  132. package/lib/canvas/models/canvas.js +97 -136
  133. package/lib/canvas/models/constants.d.ts +2 -0
  134. package/lib/canvas/models/constants.js +1 -1
  135. package/lib/canvas/models/index.d.ts +2 -0
  136. package/lib/canvas/models/index.js +2 -2
  137. package/lib/citybuliding/building.d.ts +7 -0
  138. package/lib/citybuliding/building.js +22 -58
  139. package/lib/citybuliding/models/build.d.ts +17 -0
  140. package/lib/citybuliding/models/build.js +144 -199
  141. package/lib/core/BaseLayer.d.ts +247 -0
  142. package/lib/core/BaseLayer.js +1115 -1412
  143. package/lib/core/BaseModel.d.ts +82 -0
  144. package/lib/core/BaseModel.js +263 -315
  145. package/lib/core/CommonStyleAttribute.d.ts +20 -0
  146. package/lib/core/CommonStyleAttribute.js +25 -18
  147. package/lib/core/LayerPickService.d.ts +12 -0
  148. package/lib/core/LayerPickService.js +93 -140
  149. package/lib/core/TextureService.d.ts +15 -0
  150. package/lib/core/TextureService.js +59 -68
  151. package/lib/core/constant.d.ts +6 -0
  152. package/lib/core/constant.js +2 -2
  153. package/lib/core/interface.d.ts +282 -0
  154. package/lib/core/interface.js +5 -5
  155. package/lib/core/line_trangluation.d.ts +19 -0
  156. package/lib/core/line_trangluation.js +38 -43
  157. package/lib/core/schema.d.ts +27 -0
  158. package/lib/core/shape/Path.d.ts +39 -0
  159. package/lib/core/shape/Path.js +21 -13
  160. package/lib/core/shape/arrow.d.ts +25 -0
  161. package/lib/core/shape/arrow.js +50 -62
  162. package/lib/core/shape/extrude.d.ts +17 -0
  163. package/lib/core/shape/extrude.js +54 -62
  164. package/lib/core/triangulation.d.ts +136 -0
  165. package/lib/core/triangulation.js +194 -174
  166. package/lib/core/utils.d.ts +4 -0
  167. package/lib/core/utils.js +5 -5
  168. package/lib/earth/index.d.ts +22 -0
  169. package/lib/earth/index.js +37 -73
  170. package/lib/earth/models/atmosphere.d.ts +15 -0
  171. package/lib/earth/models/atmosphere.js +100 -148
  172. package/lib/earth/models/base.d.ts +22 -0
  173. package/lib/earth/models/base.js +150 -201
  174. package/lib/earth/models/bloomsphere.d.ts +15 -0
  175. package/lib/earth/models/bloomsphere.js +99 -147
  176. package/lib/earth/utils.d.ts +26 -0
  177. package/lib/earth/utils.js +37 -39
  178. package/lib/geometry/index.d.ts +22 -0
  179. package/lib/geometry/index.js +38 -75
  180. package/lib/geometry/models/billboard.d.ts +24 -0
  181. package/lib/geometry/models/billboard.js +149 -204
  182. package/lib/geometry/models/index.d.ts +5 -0
  183. package/lib/geometry/models/index.js +1 -1
  184. package/lib/geometry/models/plane.d.ts +43 -0
  185. package/lib/geometry/models/plane.js +280 -357
  186. package/lib/geometry/models/sprite.d.ts +48 -0
  187. package/lib/geometry/models/sprite.js +184 -240
  188. package/lib/heatmap/index.d.ts +13 -0
  189. package/lib/heatmap/index.js +74 -121
  190. package/lib/heatmap/models/grid.d.ts +15 -0
  191. package/lib/heatmap/models/grid.js +68 -118
  192. package/lib/heatmap/models/grid3d.d.ts +15 -0
  193. package/lib/heatmap/models/grid3d.js +103 -151
  194. package/lib/heatmap/models/heatmap.d.ts +27 -0
  195. package/lib/heatmap/models/heatmap.js +400 -455
  196. package/lib/heatmap/models/hexagon.d.ts +15 -0
  197. package/lib/heatmap/models/hexagon.js +69 -119
  198. package/lib/heatmap/models/index.d.ts +5 -0
  199. package/lib/heatmap/models/index.js +1 -1
  200. package/lib/heatmap/triangulation.d.ts +5 -0
  201. package/lib/heatmap/triangulation.js +20 -20
  202. package/lib/image/index.d.ts +9 -0
  203. package/lib/image/index.js +25 -62
  204. package/lib/image/models/image.d.ts +17 -0
  205. package/lib/image/models/image.js +101 -163
  206. package/lib/image/models/index.d.ts +5 -0
  207. package/lib/image/models/index.js +1 -1
  208. package/lib/index.d.ts +18 -0
  209. package/lib/index.js +17 -17
  210. package/lib/line/index.d.ts +36 -0
  211. package/lib/line/index.js +67 -106
  212. package/lib/line/models/arc.d.ts +22 -0
  213. package/lib/line/models/arc.js +202 -248
  214. package/lib/line/models/arc_3d.d.ts +22 -0
  215. package/lib/line/models/arc_3d.js +193 -241
  216. package/lib/line/models/flow.d.ts +14 -0
  217. package/lib/line/models/flow.js +103 -153
  218. package/lib/line/models/great_circle.d.ts +17 -0
  219. package/lib/line/models/great_circle.js +185 -234
  220. package/lib/line/models/index.d.ts +5 -0
  221. package/lib/line/models/index.js +1 -1
  222. package/lib/line/models/line.d.ts +27 -0
  223. package/lib/line/models/line.js +232 -285
  224. package/lib/line/models/simple_line.d.ts +19 -0
  225. package/lib/line/models/simple_line.js +144 -192
  226. package/lib/line/models/wall.d.ts +17 -0
  227. package/lib/line/models/wall.js +223 -273
  228. package/lib/mask/index.d.ts +16 -0
  229. package/lib/mask/index.js +18 -53
  230. package/lib/mask/models/fill.d.ts +18 -0
  231. package/lib/mask/models/fill.js +53 -108
  232. package/lib/mask/models/index.d.ts +5 -0
  233. package/lib/mask/models/index.js +1 -1
  234. package/lib/plugins/DataMappingPlugin.d.ts +13 -0
  235. package/lib/plugins/DataMappingPlugin.js +206 -248
  236. package/lib/plugins/DataSourcePlugin.d.ts +6 -0
  237. package/lib/plugins/DataSourcePlugin.js +65 -91
  238. package/lib/plugins/FeatureScalePlugin.d.ts +20 -0
  239. package/lib/plugins/FeatureScalePlugin.js +261 -304
  240. package/lib/plugins/LayerAnimateStylePlugin.d.ts +4 -0
  241. package/lib/plugins/LayerAnimateStylePlugin.js +13 -21
  242. package/lib/plugins/LayerMaskPlugin.d.ts +7 -0
  243. package/lib/plugins/LayerMaskPlugin.js +16 -24
  244. package/lib/plugins/LayerModelPlugin.d.ts +10 -0
  245. package/lib/plugins/LayerModelPlugin.js +53 -135
  246. package/lib/plugins/LayerStylePlugin.d.ts +7 -0
  247. package/lib/plugins/LayerStylePlugin.js +15 -23
  248. package/lib/plugins/LightingPlugin.d.ts +35 -0
  249. package/lib/plugins/LightingPlugin.js +27 -36
  250. package/lib/plugins/MultiPassRendererPlugin.d.ts +22 -0
  251. package/lib/plugins/MultiPassRendererPlugin.js +35 -38
  252. package/lib/plugins/PixelPickingPlugin.d.ts +11 -0
  253. package/lib/plugins/PixelPickingPlugin.js +130 -149
  254. package/lib/plugins/RegisterStyleAttributePlugin.d.ts +11 -0
  255. package/lib/plugins/RegisterStyleAttributePlugin.js +81 -96
  256. package/lib/plugins/ShaderUniformPlugin.d.ts +22 -0
  257. package/lib/plugins/ShaderUniformPlugin.js +160 -130
  258. package/lib/plugins/UpdateModelPlugin.d.ts +7 -0
  259. package/lib/plugins/UpdateModelPlugin.js +17 -26
  260. package/lib/plugins/UpdateStyleAttributePlugin.d.ts +9 -0
  261. package/lib/plugins/UpdateStyleAttributePlugin.js +48 -65
  262. package/lib/plugins/index.d.ts +15 -0
  263. package/lib/point/index.d.ts +33 -0
  264. package/lib/point/index.js +120 -182
  265. package/lib/point/models/billboard_point.d.ts +21 -0
  266. package/lib/point/models/billboard_point.js +74 -127
  267. package/lib/point/models/earthExtrude.d.ts +16 -0
  268. package/lib/point/models/earthExtrude.js +172 -220
  269. package/lib/point/models/earthFill.d.ts +15 -0
  270. package/lib/point/models/earthFill.js +138 -192
  271. package/lib/point/models/extrude.d.ts +16 -0
  272. package/lib/point/models/extrude.js +169 -217
  273. package/lib/point/models/fill.d.ts +31 -0
  274. package/lib/point/models/fill.js +154 -209
  275. package/lib/point/models/fillImage.d.ts +26 -0
  276. package/lib/point/models/fillImage.js +159 -211
  277. package/lib/point/models/image.d.ts +18 -0
  278. package/lib/point/models/image.js +129 -180
  279. package/lib/point/models/index.d.ts +5 -0
  280. package/lib/point/models/index.js +1 -1
  281. package/lib/point/models/normal.d.ts +22 -0
  282. package/lib/point/models/normal.js +69 -122
  283. package/lib/point/models/radar.d.ts +22 -0
  284. package/lib/point/models/radar.js +95 -148
  285. package/lib/point/models/text.d.ts +69 -0
  286. package/lib/point/models/text.js +449 -578
  287. package/lib/point/shape/extrude.d.ts +15 -0
  288. package/lib/point/shape/extrude.js +19 -25
  289. package/lib/polygon/index.d.ts +18 -0
  290. package/lib/polygon/index.js +63 -99
  291. package/lib/polygon/models/extrude.d.ts +25 -0
  292. package/lib/polygon/models/extrude.js +210 -281
  293. package/lib/polygon/models/extrusion.d.ts +24 -0
  294. package/lib/polygon/models/extrusion.js +97 -142
  295. package/lib/polygon/models/fill.d.ts +18 -0
  296. package/lib/polygon/models/fill.js +104 -153
  297. package/lib/polygon/models/index.d.ts +5 -0
  298. package/lib/polygon/models/index.js +1 -1
  299. package/lib/polygon/models/ocean.d.ts +23 -0
  300. package/lib/polygon/models/ocean.js +141 -198
  301. package/lib/polygon/models/water.d.ts +21 -0
  302. package/lib/polygon/models/water.js +122 -179
  303. package/lib/raster/buffers/triangulation.d.ts +6 -0
  304. package/lib/raster/buffers/triangulation.js +13 -11
  305. package/lib/raster/index.d.ts +11 -0
  306. package/lib/raster/index.js +49 -88
  307. package/lib/raster/models/index.d.ts +5 -0
  308. package/lib/raster/models/index.js +1 -1
  309. package/lib/raster/models/raster.d.ts +21 -0
  310. package/lib/raster/models/raster.js +136 -202
  311. package/lib/raster/models/rasterRgb.d.ts +21 -0
  312. package/lib/raster/models/rasterRgb.js +136 -208
  313. package/lib/raster/models/rasterTerrainRgb.d.ts +16 -0
  314. package/lib/raster/models/rasterTerrainRgb.js +100 -153
  315. package/lib/tile/core/BaseLayer.d.ts +48 -0
  316. package/lib/tile/core/BaseLayer.js +207 -281
  317. package/lib/tile/core/TileDebugLayer.d.ts +15 -0
  318. package/lib/tile/core/TileDebugLayer.js +14 -46
  319. package/lib/tile/interaction/getFeatureData.d.ts +0 -0
  320. package/lib/tile/interaction/getRasterData.d.ts +4 -0
  321. package/lib/tile/interaction/getRasterData.js +24 -31
  322. package/lib/tile/interaction/utils.d.ts +11 -0
  323. package/lib/tile/interaction/utils.js +15 -34
  324. package/lib/tile/interface.d.ts +29 -0
  325. package/lib/tile/service/TileLayerService.d.ts +33 -0
  326. package/lib/tile/service/TileLayerService.js +105 -177
  327. package/lib/tile/service/TilePickService.d.ts +26 -0
  328. package/lib/tile/service/TilePickService.js +100 -156
  329. package/lib/tile/service/TileSourceService.d.ts +7 -0
  330. package/lib/tile/service/TileSourceService.js +20 -29
  331. package/lib/tile/tile/DebugTile.d.ts +16 -0
  332. package/lib/tile/tile/DebugTile.js +43 -78
  333. package/lib/tile/tile/ImageTile.d.ts +14 -0
  334. package/lib/tile/tile/ImageTile.js +35 -66
  335. package/lib/tile/tile/MaskTile.d.ts +18 -0
  336. package/lib/tile/tile/MaskTile.js +49 -81
  337. package/lib/tile/tile/RasterRGBTile.d.ts +11 -0
  338. package/lib/tile/tile/RasterRGBTile.js +42 -71
  339. package/lib/tile/tile/RasterTerrainRGBTile.d.ts +14 -0
  340. package/lib/tile/tile/RasterTerrainRGBTile.js +35 -66
  341. package/lib/tile/tile/RasterTile.d.ts +18 -0
  342. package/lib/tile/tile/RasterTile.js +71 -104
  343. package/lib/tile/tile/Tile.d.ts +114 -0
  344. package/lib/tile/tile/Tile.js +152 -231
  345. package/lib/tile/tile/VectorTile.d.ts +26 -0
  346. package/lib/tile/tile/VectorTile.js +79 -124
  347. package/lib/tile/tile/index.d.ts +12 -0
  348. package/lib/tile/tile/index.js +6 -4
  349. package/lib/tile/tile/util.d.ts +5 -0
  350. package/lib/tile/utils/constants.d.ts +1 -0
  351. package/lib/tile/utils/constants.js +1 -1
  352. package/lib/tile/utils/utils.d.ts +8 -0
  353. package/lib/tile/utils/utils.js +2 -2
  354. package/lib/utils/blend.d.ts +2 -0
  355. package/lib/utils/blend.js +52 -47
  356. package/lib/utils/collision-index.d.ts +47 -0
  357. package/lib/utils/collision-index.js +64 -69
  358. package/lib/utils/extrude_polyline.d.ts +68 -0
  359. package/lib/utils/extrude_polyline.js +442 -470
  360. package/lib/utils/grid-index.d.ts +28 -0
  361. package/lib/utils/grid-index.js +97 -123
  362. package/lib/utils/identityScale.d.ts +8 -0
  363. package/lib/utils/identityScale.js +5 -5
  364. package/lib/utils/load-image.d.ts +1 -0
  365. package/lib/utils/load-image.js +15 -39
  366. package/lib/utils/multiPassRender.d.ts +16 -0
  367. package/lib/utils/multiPassRender.js +7 -10
  368. package/lib/utils/polylineNormal.d.ts +9 -0
  369. package/lib/utils/polylineNormal.js +40 -43
  370. package/lib/utils/rampcolor_legend.d.ts +6 -0
  371. package/lib/utils/rampcolor_legend.js +5 -4
  372. package/lib/utils/simpleLine.d.ts +23 -0
  373. package/lib/utils/simpleLine.js +54 -65
  374. package/lib/utils/stencil.d.ts +7 -0
  375. package/lib/utils/symbol-layout.d.ts +43 -0
  376. package/lib/utils/symbol-layout.js +95 -117
  377. package/lib/wind/index.d.ts +11 -0
  378. package/lib/wind/index.js +30 -70
  379. package/lib/wind/models/index.d.ts +5 -0
  380. package/lib/wind/models/index.js +1 -1
  381. package/lib/wind/models/utils.d.ts +19 -0
  382. package/lib/wind/models/utils.js +36 -34
  383. package/lib/wind/models/wind.d.ts +24 -0
  384. package/lib/wind/models/wind.js +205 -260
  385. package/lib/wind/models/windRender.d.ts +104 -0
  386. package/lib/wind/models/windRender.js +261 -272
  387. package/lib/wind/models/windShader.d.ts +12 -0
  388. package/lib/wind/models/windShader.js +145 -6
  389. package/package.json +16 -19
  390. package/CHANGELOG.md +0 -492
  391. package/LICENSE.md +0 -21
  392. package/es/glsl.d.ts +0 -5
  393. package/lib/glsl.d.ts +0 -5
@@ -1,26 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.Wind = void 0;
9
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
9
  var glUtils = _interopRequireWildcard(require("./utils"));
13
10
  var _windShader = require("./windShader");
14
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
15
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
13
  function getColorRamp(colors) {
17
- var canvas = document.createElement('canvas');
18
- var ctx = canvas.getContext('2d');
14
+ let canvas = document.createElement('canvas');
15
+ const ctx = canvas.getContext('2d');
19
16
  canvas.width = 256;
20
17
  canvas.height = 1;
21
- var gradient = ctx.createLinearGradient(0, 0, 256, 0);
22
- for (var _i = 0, _Object$keys = Object.keys(colors); _i < _Object$keys.length; _i++) {
23
- var stop = _Object$keys[_i];
18
+ const gradient = ctx.createLinearGradient(0, 0, 256, 0);
19
+ for (const stop of Object.keys(colors)) {
24
20
  gradient.addColorStop(+stop, colors[+stop]);
25
21
  }
26
22
  ctx.fillStyle = gradient;
@@ -41,12 +37,33 @@ function bindFramebuffer(gl, framebuffer, texture) {
41
37
  gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
42
38
  }
43
39
  }
44
- var Wind = exports.Wind = /*#__PURE__*/function () {
45
- function Wind(options) {
46
- (0, _classCallCheck2.default)(this, Wind);
40
+ class Wind {
41
+ constructor(options) {
47
42
  (0, _defineProperty2.default)(this, "width", 512);
48
43
  (0, _defineProperty2.default)(this, "height", 512);
44
+ (0, _defineProperty2.default)(this, "pixels", void 0);
45
+ (0, _defineProperty2.default)(this, "fadeOpacity", void 0);
46
+ (0, _defineProperty2.default)(this, "speedFactor", void 0);
47
+ (0, _defineProperty2.default)(this, "dropRate", void 0);
48
+ (0, _defineProperty2.default)(this, "dropRateBump", void 0);
49
+ (0, _defineProperty2.default)(this, "gl", void 0);
50
+ (0, _defineProperty2.default)(this, "drawProgram", void 0);
51
+ (0, _defineProperty2.default)(this, "fullScreenProgram", void 0);
52
+ (0, _defineProperty2.default)(this, "updateProgram", void 0);
53
+ (0, _defineProperty2.default)(this, "rampColors", void 0);
49
54
  (0, _defineProperty2.default)(this, "numParticles", 65536);
55
+ (0, _defineProperty2.default)(this, "numParticlesSize", void 0);
56
+ (0, _defineProperty2.default)(this, "particleStateResolution", void 0);
57
+ (0, _defineProperty2.default)(this, "quadBuffer", void 0);
58
+ (0, _defineProperty2.default)(this, "particleIndexBuffer", void 0);
59
+ (0, _defineProperty2.default)(this, "framebuffer", void 0);
60
+ (0, _defineProperty2.default)(this, "colorRampTexture", void 0);
61
+ (0, _defineProperty2.default)(this, "backgroundTexture", void 0);
62
+ (0, _defineProperty2.default)(this, "screenTexture", void 0);
63
+ (0, _defineProperty2.default)(this, "particleStateTexture0", void 0);
64
+ (0, _defineProperty2.default)(this, "particleStateTexture1", void 0);
65
+ (0, _defineProperty2.default)(this, "windTexture", void 0);
66
+ (0, _defineProperty2.default)(this, "windData", void 0);
50
67
  this.gl = options.glContext;
51
68
  this.width = options.imageWidth;
52
69
  this.height = options.imageHeight;
@@ -57,298 +74,270 @@ var Wind = exports.Wind = /*#__PURE__*/function () {
57
74
  this.rampColors = options.rampColors;
58
75
  this.init();
59
76
  }
60
- (0, _createClass2.default)(Wind, [{
61
- key: "init",
62
- value: function init() {
63
- var gl = this.gl;
64
- this.fadeOpacity = 0.996; // how fast the particle trails fade on each frame
65
- this.speedFactor = 0.25; // how fast the particles move
66
- this.dropRate = 0.003; // how often the particles move to a random place
67
- this.dropRateBump = 0.01; // drop rate increase relative to individual particle speed
77
+ init() {
78
+ const gl = this.gl;
79
+ this.fadeOpacity = 0.996; // how fast the particle trails fade on each frame
80
+ this.speedFactor = 0.25; // how fast the particles move
81
+ this.dropRate = 0.003; // how often the particles move to a random place
82
+ this.dropRateBump = 0.01; // drop rate increase relative to individual particle speed
68
83
 
69
- this.drawProgram = glUtils.createProgram(gl, _windShader.drawVert, _windShader.drawFrag);
70
- this.fullScreenProgram = glUtils.createProgram(gl, _windShader.fullScreenVert, _windShader.fullScreenFrag);
71
- this.updateProgram = glUtils.createProgram(gl, _windShader.updateVert, _windShader.updateFrag);
72
- this.quadBuffer = glUtils.createBuffer(gl, new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]));
73
- this.framebuffer = gl.createFramebuffer();
74
- this.colorRampTexture = glUtils.createTexture(this.gl, this.gl.LINEAR, getColorRamp(this.rampColors), 16, 16);
75
- var emptyPixels = new Uint8Array(this.width * this.height * 4);
84
+ this.drawProgram = glUtils.createProgram(gl, _windShader.drawVert, _windShader.drawFrag);
85
+ this.fullScreenProgram = glUtils.createProgram(gl, _windShader.fullScreenVert, _windShader.fullScreenFrag);
86
+ this.updateProgram = glUtils.createProgram(gl, _windShader.updateVert, _windShader.updateFrag);
87
+ this.quadBuffer = glUtils.createBuffer(gl, new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]));
88
+ this.framebuffer = gl.createFramebuffer();
89
+ this.colorRampTexture = glUtils.createTexture(this.gl, this.gl.LINEAR, getColorRamp(this.rampColors), 16, 16);
90
+ const emptyPixels = new Uint8Array(this.width * this.height * 4);
76
91
 
77
- // screen textures to hold the drawn screen for the previous and the current frame
92
+ // screen textures to hold the drawn screen for the previous and the current frame
78
93
 
79
- this.backgroundTexture = glUtils.createTexture(gl, gl.NEAREST, emptyPixels, this.width, this.height);
80
- this.screenTexture = glUtils.createTexture(gl, gl.NEAREST, emptyPixels, this.width, this.height);
94
+ this.backgroundTexture = glUtils.createTexture(gl, gl.NEAREST, emptyPixels, this.width, this.height);
95
+ this.screenTexture = glUtils.createTexture(gl, gl.NEAREST, emptyPixels, this.width, this.height);
96
+
97
+ // we create a square texture where each pixel will hold a particle position encoded as RGBA
98
+ const particleRes = this.particleStateResolution = Math.ceil(Math.sqrt(this.numParticles));
99
+ // particleRes size
100
+ this.numParticlesSize = particleRes * particleRes;
101
+ const particleState = new Uint8Array(this.numParticlesSize * 4);
102
+ for (let i = 0; i < particleState.length; i++) {
103
+ particleState[i] = Math.floor(Math.random() * 256); // randomize the initial particle positions
104
+ }
105
+ // textures to hold the particle state for the current and the next frame
106
+ this.particleStateTexture0 = glUtils.createTexture(gl, gl.NEAREST, particleState, particleRes, particleRes);
107
+ this.particleStateTexture1 = glUtils.createTexture(gl, gl.NEAREST, particleState, particleRes, particleRes);
108
+ const particleIndices = new Float32Array(this.numParticlesSize);
109
+ for (let i$1 = 0; i$1 < this.numParticlesSize; i$1++) {
110
+ particleIndices[i$1] = i$1;
111
+ }
112
+ this.particleIndexBuffer = glUtils.createBuffer(gl, particleIndices);
113
+ }
114
+ setWind(windData) {
115
+ this.windData = windData;
116
+ this.windTexture = glUtils.createDataTexture(this.gl, this.gl.LINEAR, windData.image);
117
+ }
118
+
119
+ /**
120
+ * 更新风场粒子数量
121
+ * @param num
122
+ */
123
+ updateParticelNum(num) {
124
+ const gl = this.gl;
125
+ if (num !== this.numParticles) {
126
+ this.numParticles = num; // params number
81
127
 
82
128
  // we create a square texture where each pixel will hold a particle position encoded as RGBA
83
- var particleRes = this.particleStateResolution = Math.ceil(Math.sqrt(this.numParticles));
84
- // particleRes size
129
+ const particleRes = this.particleStateResolution = Math.ceil(Math.sqrt(this.numParticles));
85
130
  this.numParticlesSize = particleRes * particleRes;
86
- var particleState = new Uint8Array(this.numParticlesSize * 4);
87
- for (var i = 0; i < particleState.length; i++) {
131
+ const particleState = new Uint8Array(this.numParticlesSize * 4);
132
+ for (let i = 0; i < particleState.length; i++) {
88
133
  particleState[i] = Math.floor(Math.random() * 256); // randomize the initial particle positions
89
134
  }
90
135
  // textures to hold the particle state for the current and the next frame
91
136
  this.particleStateTexture0 = glUtils.createTexture(gl, gl.NEAREST, particleState, particleRes, particleRes);
92
137
  this.particleStateTexture1 = glUtils.createTexture(gl, gl.NEAREST, particleState, particleRes, particleRes);
93
- var particleIndices = new Float32Array(this.numParticlesSize);
94
- for (var i$1 = 0; i$1 < this.numParticlesSize; i$1++) {
138
+ const particleIndices = new Float32Array(this.numParticlesSize);
139
+ for (let i$1 = 0; i$1 < this.numParticlesSize; i$1++) {
95
140
  particleIndices[i$1] = i$1;
96
141
  }
97
142
  this.particleIndexBuffer = glUtils.createBuffer(gl, particleIndices);
98
143
  }
99
- }, {
100
- key: "setWind",
101
- value: function setWind(windData) {
102
- this.windData = windData;
103
- this.windTexture = glUtils.createDataTexture(this.gl, this.gl.LINEAR, windData.image);
104
- }
105
-
106
- /**
107
- * 更新风场粒子数量
108
- * @param num
109
- */
110
- }, {
111
- key: "updateParticelNum",
112
- value: function updateParticelNum(num) {
113
- var gl = this.gl;
114
- if (num !== this.numParticles) {
115
- this.numParticles = num; // params number
144
+ }
116
145
 
117
- // we create a square texture where each pixel will hold a particle position encoded as RGBA
118
- var particleRes = this.particleStateResolution = Math.ceil(Math.sqrt(this.numParticles));
119
- this.numParticlesSize = particleRes * particleRes;
120
- var particleState = new Uint8Array(this.numParticlesSize * 4);
121
- for (var i = 0; i < particleState.length; i++) {
122
- particleState[i] = Math.floor(Math.random() * 256); // randomize the initial particle positions
123
- }
124
- // textures to hold the particle state for the current and the next frame
125
- this.particleStateTexture0 = glUtils.createTexture(gl, gl.NEAREST, particleState, particleRes, particleRes);
126
- this.particleStateTexture1 = glUtils.createTexture(gl, gl.NEAREST, particleState, particleRes, particleRes);
127
- var particleIndices = new Float32Array(this.numParticlesSize);
128
- for (var i$1 = 0; i$1 < this.numParticlesSize; i$1++) {
129
- particleIndices[i$1] = i$1;
130
- }
131
- this.particleIndexBuffer = glUtils.createBuffer(gl, particleIndices);
132
- }
133
- }
146
+ /**
147
+ * 更新风场风向风速
148
+ * @param uMin
149
+ * @param uMax
150
+ * @param vMin
151
+ * @param vMax
152
+ */
153
+ updateWindDir(uMin, uMax, vMin, vMax) {
154
+ this.windData.uMin = uMin;
155
+ this.windData.uMax = uMax;
156
+ this.windData.vMin = vMin;
157
+ this.windData.vMax = vMax;
158
+ }
134
159
 
135
- /**
136
- * 更新风场风向风速
137
- * @param uMin
138
- * @param uMax
139
- * @param vMin
140
- * @param vMax
141
- */
142
- }, {
143
- key: "updateWindDir",
144
- value: function updateWindDir(uMin, uMax, vMin, vMax) {
145
- this.windData.uMin = uMin;
146
- this.windData.uMax = uMax;
147
- this.windData.vMin = vMin;
148
- this.windData.vMax = vMax;
160
+ /**
161
+ * update rampColors
162
+ * @param rampColors
163
+ */
164
+ updateColorRampTexture(rampColors) {
165
+ if (this.isColorChanged(rampColors)) {
166
+ this.rampColors = rampColors;
167
+ const gl = this.gl;
168
+ gl.deleteTexture(this.colorRampTexture);
169
+ this.colorRampTexture = glUtils.createTexture(gl, gl.LINEAR, getColorRamp(rampColors), 16, 16);
149
170
  }
150
-
151
- /**
152
- * update rampColors
153
- * @param rampColors
154
- */
155
- }, {
156
- key: "updateColorRampTexture",
157
- value: function updateColorRampTexture(rampColors) {
158
- if (this.isColorChanged(rampColors)) {
159
- this.rampColors = rampColors;
160
- var gl = this.gl;
161
- gl.deleteTexture(this.colorRampTexture);
162
- this.colorRampTexture = glUtils.createTexture(gl, gl.LINEAR, getColorRamp(rampColors), 16, 16);
171
+ }
172
+ isColorChanged(rampColors) {
173
+ const keys = Object.keys(rampColors);
174
+ for (const item of keys) {
175
+ const key = Number(item);
176
+ // exist new key -> color need update
177
+ if (!this.rampColors[key]) {
178
+ return true;
163
179
  }
164
- }
165
- }, {
166
- key: "isColorChanged",
167
- value: function isColorChanged(rampColors) {
168
- var keys = Object.keys(rampColors);
169
- for (var _i2 = 0, _keys = keys; _i2 < _keys.length; _i2++) {
170
- var item = _keys[_i2];
171
- var _key = Number(item);
172
- // exist new key -> color need update
173
- if (!this.rampColors[_key]) {
174
- return true;
175
- }
176
- // value changed -> color need update
177
- if (this.rampColors[_key] && this.rampColors[_key] !== rampColors[_key]) {
178
- return true;
179
- }
180
+ // value changed -> color need update
181
+ if (this.rampColors[key] && this.rampColors[key] !== rampColors[key]) {
182
+ return true;
180
183
  }
181
- return false;
182
184
  }
183
- }, {
184
- key: "reSize",
185
- value: function reSize(width, height) {
186
- if (width !== this.width || height !== this.height) {
187
- var gl = this.gl;
188
- gl.deleteTexture(this.backgroundTexture);
189
- gl.deleteTexture(this.screenTexture);
190
- this.width = width;
191
- this.height = height;
192
- var emptyPixels = new Uint8Array(width * height * 4);
193
- // screen textures to hold the drawn screen for the previous and the current frame
194
- this.backgroundTexture = glUtils.createTexture(gl, gl.NEAREST, emptyPixels, width, height);
195
- this.screenTexture = glUtils.createTexture(gl, gl.NEAREST, emptyPixels, width, height);
196
- }
185
+ return false;
186
+ }
187
+ reSize(width, height) {
188
+ if (width !== this.width || height !== this.height) {
189
+ const gl = this.gl;
190
+ gl.deleteTexture(this.backgroundTexture);
191
+ gl.deleteTexture(this.screenTexture);
192
+ this.width = width;
193
+ this.height = height;
194
+ const emptyPixels = new Uint8Array(width * height * 4);
195
+ // screen textures to hold the drawn screen for the previous and the current frame
196
+ this.backgroundTexture = glUtils.createTexture(gl, gl.NEAREST, emptyPixels, width, height);
197
+ this.screenTexture = glUtils.createTexture(gl, gl.NEAREST, emptyPixels, width, height);
197
198
  }
198
- }, {
199
- key: "draw",
200
- value: function draw() {
201
- var _this$windData;
202
- if ((_this$windData = this.windData) !== null && _this$windData !== void 0 && _this$windData.image) {
203
- var gl = this.gl;
204
- glUtils.bindTexture(gl, this.windTexture, 0);
205
- glUtils.bindTexture(gl, this.particleStateTexture0, 1);
206
- this.drawScreen(); // draw Particles into framebuffer
207
- this.updateParticles();
208
- return {
209
- d: this.pixels,
210
- w: this.width,
211
- h: this.height
212
- };
213
- } else {
214
- return {
215
- d: new Uint8Array([0, 0, 0, 0]),
216
- w: 1,
217
- h: 1
218
- };
219
- }
199
+ }
200
+ draw() {
201
+ var _this$windData;
202
+ if ((_this$windData = this.windData) !== null && _this$windData !== void 0 && _this$windData.image) {
203
+ const gl = this.gl;
204
+ glUtils.bindTexture(gl, this.windTexture, 0);
205
+ glUtils.bindTexture(gl, this.particleStateTexture0, 1);
206
+ this.drawScreen(); // draw Particles into framebuffer
207
+ this.updateParticles();
208
+ return {
209
+ d: this.pixels,
210
+ w: this.width,
211
+ h: this.height
212
+ };
213
+ } else {
214
+ return {
215
+ d: new Uint8Array([0, 0, 0, 0]),
216
+ w: 1,
217
+ h: 1
218
+ };
220
219
  }
221
- }, {
222
- key: "drawScreen",
223
- value: function drawScreen() {
224
- var gl = this.gl;
220
+ }
221
+ drawScreen() {
222
+ const gl = this.gl;
225
223
 
226
- // draw the screen into a temporary framebuffer to retain it as the background on the next frame
227
- bindFramebuffer(gl, this.framebuffer, this.screenTexture);
228
- gl.viewport(0, 0, this.width, this.height);
229
- gl.disable(gl.BLEND);
230
- this.drawFullTexture(this.backgroundTexture, this.fadeOpacity);
231
- this.drawParticles();
232
- this.pixels = new Uint8Array(4 * this.width * this.height);
233
- gl.readPixels(0, 0, this.width, this.height, gl.RGBA, gl.UNSIGNED_BYTE, this.pixels);
234
- bindFramebuffer(gl, null, null);
235
- gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height);
224
+ // draw the screen into a temporary framebuffer to retain it as the background on the next frame
225
+ bindFramebuffer(gl, this.framebuffer, this.screenTexture);
226
+ gl.viewport(0, 0, this.width, this.height);
227
+ gl.disable(gl.BLEND);
228
+ this.drawFullTexture(this.backgroundTexture, this.fadeOpacity);
229
+ this.drawParticles();
230
+ this.pixels = new Uint8Array(4 * this.width * this.height);
231
+ gl.readPixels(0, 0, this.width, this.height, gl.RGBA, gl.UNSIGNED_BYTE, this.pixels);
232
+ bindFramebuffer(gl, null, null);
233
+ gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height);
236
234
 
237
- // save the current screen as the background for the next frame
238
- var temp = this.backgroundTexture;
239
- this.backgroundTexture = this.screenTexture;
240
- this.screenTexture = temp;
241
- }
242
- }, {
243
- key: "drawFullTexture",
244
- value: function drawFullTexture(texture, opacity) {
245
- var gl = this.gl;
246
- var program = this.fullScreenProgram;
247
- gl.useProgram(program);
235
+ // save the current screen as the background for the next frame
236
+ const temp = this.backgroundTexture;
237
+ this.backgroundTexture = this.screenTexture;
238
+ this.screenTexture = temp;
239
+ }
240
+ drawFullTexture(texture, opacity) {
241
+ const gl = this.gl;
242
+ const program = this.fullScreenProgram;
243
+ gl.useProgram(program);
248
244
 
249
- // bindAttribute(gl, this.quadBuffer, program.a_pos, 2);
245
+ // bindAttribute(gl, this.quadBuffer, program.a_pos, 2);
250
246
 
251
- gl.bindBuffer(gl.ARRAY_BUFFER, this.quadBuffer);
252
- gl.vertexAttribPointer(program.a_pos, 2, gl.FLOAT, false, 0, 0);
253
- gl.enableVertexAttribArray(program.a_pos);
254
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
255
- glUtils.bindTexture(gl, texture, 2);
256
- gl.uniform1i(program.u_screen, 2);
257
- gl.uniform1f(program.u_opacity, opacity);
258
- gl.drawArrays(gl.TRIANGLES, 0, 6);
259
- // gl.drawArrays(gl.POINTS, 0, 6);
260
- }
261
- }, {
262
- key: "drawParticles",
263
- value: function drawParticles() {
264
- var gl = this.gl;
265
- var program = this.drawProgram;
266
- gl.useProgram(program);
267
- bindAttribute(gl, this.particleIndexBuffer, program.a_index, 1);
268
- glUtils.bindTexture(gl, this.colorRampTexture, 2);
269
- gl.uniform1i(program.u_wind, 0);
270
- gl.uniform1i(program.u_particles, 1);
271
- gl.uniform1i(program.u_color_ramp, 2);
272
- gl.uniform1f(program.u_particles_res, this.particleStateResolution);
273
- gl.uniform2f(program.u_wind_min, this.windData.uMin, this.windData.vMin);
274
- gl.uniform2f(program.u_wind_max, this.windData.uMax, this.windData.vMax);
275
- gl.drawArrays(gl.POINTS, 0, this.numParticlesSize);
276
- }
277
- }, {
278
- key: "updateParticles",
279
- value: function updateParticles() {
280
- var gl = this.gl;
281
- bindFramebuffer(gl, this.framebuffer, this.particleStateTexture1);
282
- gl.viewport(0, 0, this.particleStateResolution, this.particleStateResolution);
283
- var program = this.updateProgram;
284
- gl.useProgram(program);
285
- bindAttribute(gl, this.quadBuffer, program.a_pos, 2);
286
- gl.uniform1i(program.u_wind, 0);
287
- gl.uniform1i(program.u_particles, 1);
288
- gl.uniform1f(program.u_rand_seed, Math.random());
289
- gl.uniform2f(program.u_wind_res, this.windData.image.width * 2, this.windData.image.height * 2);
290
- gl.uniform2f(program.u_wind_min, this.windData.uMin, this.windData.vMin);
291
- gl.uniform2f(program.u_wind_max, this.windData.uMax, this.windData.vMax);
292
- gl.uniform1f(program.u_speed_factor, this.speedFactor);
293
- gl.uniform1f(program.u_drop_rate, this.dropRate);
294
- gl.uniform1f(program.u_drop_rate_bump, this.dropRateBump);
295
- gl.drawArrays(gl.TRIANGLES, 0, 6);
247
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.quadBuffer);
248
+ gl.vertexAttribPointer(program.a_pos, 2, gl.FLOAT, false, 0, 0);
249
+ gl.enableVertexAttribArray(program.a_pos);
250
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
251
+ glUtils.bindTexture(gl, texture, 2);
252
+ gl.uniform1i(program.u_screen, 2);
253
+ gl.uniform1f(program.u_opacity, opacity);
254
+ gl.drawArrays(gl.TRIANGLES, 0, 6);
255
+ // gl.drawArrays(gl.POINTS, 0, 6);
256
+ }
257
+ drawParticles() {
258
+ const gl = this.gl;
259
+ const program = this.drawProgram;
260
+ gl.useProgram(program);
261
+ bindAttribute(gl, this.particleIndexBuffer, program.a_index, 1);
262
+ glUtils.bindTexture(gl, this.colorRampTexture, 2);
263
+ gl.uniform1i(program.u_wind, 0);
264
+ gl.uniform1i(program.u_particles, 1);
265
+ gl.uniform1i(program.u_color_ramp, 2);
266
+ gl.uniform1f(program.u_particles_res, this.particleStateResolution);
267
+ gl.uniform2f(program.u_wind_min, this.windData.uMin, this.windData.vMin);
268
+ gl.uniform2f(program.u_wind_max, this.windData.uMax, this.windData.vMax);
269
+ gl.drawArrays(gl.POINTS, 0, this.numParticlesSize);
270
+ }
271
+ updateParticles() {
272
+ const gl = this.gl;
273
+ bindFramebuffer(gl, this.framebuffer, this.particleStateTexture1);
274
+ gl.viewport(0, 0, this.particleStateResolution, this.particleStateResolution);
275
+ const program = this.updateProgram;
276
+ gl.useProgram(program);
277
+ bindAttribute(gl, this.quadBuffer, program.a_pos, 2);
278
+ gl.uniform1i(program.u_wind, 0);
279
+ gl.uniform1i(program.u_particles, 1);
280
+ gl.uniform1f(program.u_rand_seed, Math.random());
281
+ gl.uniform2f(program.u_wind_res, this.windData.image.width * 2, this.windData.image.height * 2);
282
+ gl.uniform2f(program.u_wind_min, this.windData.uMin, this.windData.vMin);
283
+ gl.uniform2f(program.u_wind_max, this.windData.uMax, this.windData.vMax);
284
+ gl.uniform1f(program.u_speed_factor, this.speedFactor);
285
+ gl.uniform1f(program.u_drop_rate, this.dropRate);
286
+ gl.uniform1f(program.u_drop_rate_bump, this.dropRateBump);
287
+ gl.drawArrays(gl.TRIANGLES, 0, 6);
296
288
 
297
- // swap the particle state textures so the new one becomes the current one
298
- var temp = this.particleStateTexture0;
299
- this.particleStateTexture0 = this.particleStateTexture1;
300
- this.particleStateTexture1 = temp;
301
- bindFramebuffer(gl, null, null);
289
+ // swap the particle state textures so the new one becomes the current one
290
+ const temp = this.particleStateTexture0;
291
+ this.particleStateTexture0 = this.particleStateTexture1;
292
+ this.particleStateTexture1 = temp;
293
+ bindFramebuffer(gl, null, null);
302
294
 
303
- // gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height);
304
- }
305
- }, {
306
- key: "destroy",
307
- value: function destroy() {
308
- // private drawProgram: WebGLProgram;
309
- // private fullScreenProgram: WebGLProgram;
310
- // private updateProgram: WebGLProgram;
295
+ // gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height);
296
+ }
297
+ destroy() {
298
+ // private drawProgram: WebGLProgram;
299
+ // private fullScreenProgram: WebGLProgram;
300
+ // private updateProgram: WebGLProgram;
311
301
 
312
- // private quadBuffer: WebGLBuffer | null;
313
- // private particleIndexBuffer: WebGLBuffer | null;
302
+ // private quadBuffer: WebGLBuffer | null;
303
+ // private particleIndexBuffer: WebGLBuffer | null;
314
304
 
315
- // private framebuffer: WebGLFramebuffer | null;
305
+ // private framebuffer: WebGLFramebuffer | null;
316
306
 
317
- // private colorRampTexture: WebGLTexture | null;
318
- // private backgroundTexture: WebGLTexture | null;
319
- // private screenTexture: WebGLTexture | null;
320
- // private particleStateTexture0: WebGLTexture | null;
321
- // private particleStateTexture1: WebGLTexture | null;
322
- // private windTexture: WebGLTexture | null;
307
+ // private colorRampTexture: WebGLTexture | null;
308
+ // private backgroundTexture: WebGLTexture | null;
309
+ // private screenTexture: WebGLTexture | null;
310
+ // private particleStateTexture0: WebGLTexture | null;
311
+ // private particleStateTexture1: WebGLTexture | null;
312
+ // private windTexture: WebGLTexture | null;
323
313
 
324
- this.gl.deleteBuffer(this.quadBuffer);
325
- this.gl.deleteBuffer(this.particleIndexBuffer);
326
- this.gl.deleteFramebuffer(this.framebuffer);
314
+ this.gl.deleteBuffer(this.quadBuffer);
315
+ this.gl.deleteBuffer(this.particleIndexBuffer);
316
+ this.gl.deleteFramebuffer(this.framebuffer);
327
317
 
328
- // @ts-ignore
329
- this.gl.deleteShader(this.drawProgram.vertexShader);
330
- // @ts-ignore
331
- this.gl.deleteShader(this.drawProgram.fragmentShader);
332
- this.gl.deleteProgram(this.drawProgram);
318
+ // @ts-ignore
319
+ this.gl.deleteShader(this.drawProgram.vertexShader);
320
+ // @ts-ignore
321
+ this.gl.deleteShader(this.drawProgram.fragmentShader);
322
+ this.gl.deleteProgram(this.drawProgram);
333
323
 
334
- // @ts-ignore
335
- this.gl.deleteShader(this.fullScreenProgram.vertexShader);
336
- // @ts-ignore
337
- this.gl.deleteShader(this.fullScreenProgram.fragmentShader);
338
- this.gl.deleteProgram(this.fullScreenProgram);
324
+ // @ts-ignore
325
+ this.gl.deleteShader(this.fullScreenProgram.vertexShader);
326
+ // @ts-ignore
327
+ this.gl.deleteShader(this.fullScreenProgram.fragmentShader);
328
+ this.gl.deleteProgram(this.fullScreenProgram);
339
329
 
340
- // @ts-ignore
341
- this.gl.deleteShader(this.updateProgram.vertexShader);
342
- // @ts-ignore
343
- this.gl.deleteShader(this.updateProgram.fragmentShader);
344
- this.gl.deleteProgram(this.updateProgram);
345
- this.gl.deleteTexture(this.colorRampTexture);
346
- this.gl.deleteTexture(this.backgroundTexture);
347
- this.gl.deleteTexture(this.screenTexture);
348
- this.gl.deleteTexture(this.particleStateTexture0);
349
- this.gl.deleteTexture(this.particleStateTexture1);
350
- this.gl.deleteTexture(this.windTexture);
351
- }
352
- }]);
353
- return Wind;
354
- }();
330
+ // @ts-ignore
331
+ this.gl.deleteShader(this.updateProgram.vertexShader);
332
+ // @ts-ignore
333
+ this.gl.deleteShader(this.updateProgram.fragmentShader);
334
+ this.gl.deleteProgram(this.updateProgram);
335
+ this.gl.deleteTexture(this.colorRampTexture);
336
+ this.gl.deleteTexture(this.backgroundTexture);
337
+ this.gl.deleteTexture(this.screenTexture);
338
+ this.gl.deleteTexture(this.particleStateTexture0);
339
+ this.gl.deleteTexture(this.particleStateTexture1);
340
+ this.gl.deleteTexture(this.windTexture);
341
+ }
342
+ }
343
+ exports.Wind = Wind;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * drawProgram drawVert drawFrag
3
+ * screenProgram screenVert screenFrag
4
+ * updateProgram updateVert updateFrag
5
+ * fullScreenProgram fullScreenVert fullScreenFrag
6
+ */
7
+ export declare const drawVert = "\n precision mediump float;\n\n attribute float a_index;\n\n uniform sampler2D u_particles;\n uniform float u_particles_res;\n\n varying vec2 v_particle_pos;\n\n void main() {\n vec4 color = texture2D(u_particles, vec2(\n fract(a_index / u_particles_res),\n floor(a_index / u_particles_res) / u_particles_res)\n );\n\n // decode current particle position from the pixel's RGBA value\n v_particle_pos = vec2( color.r / 255.0 + color.b, color.g / 255.0 + color.a);\n\n gl_PointSize = 1.0;\n gl_Position = vec4(2.0 * v_particle_pos.x - 1.0, 1.0 - 2.0 * v_particle_pos.y, 0, 1);\n }";
8
+ export declare const drawFrag = "\n precision mediump float;\n\n uniform sampler2D u_wind;\n uniform vec2 u_wind_min;\n uniform vec2 u_wind_max;\n uniform sampler2D u_color_ramp;\n\n varying vec2 v_particle_pos;\n\n void main() {\n vec2 velocity = mix(u_wind_min, u_wind_max, texture2D(u_wind, v_particle_pos).rg);\n float speed_t = length(velocity) / length(u_wind_max);\n\n // color ramp is encoded in a 16x16 texture\n vec2 ramp_pos = vec2( fract(16.0 * speed_t), floor(16.0 * speed_t) / 16.0);\n\n gl_FragColor = texture2D(u_color_ramp, ramp_pos);\n }";
9
+ export declare const updateVert = "\n precision mediump float;\n\n attribute vec2 a_pos;\n\n varying vec2 v_tex_pos;\n\n void main() {\n v_tex_pos = a_pos;\n gl_Position = vec4(1.0 - 2.0 * a_pos, 0, 1);\n // framebuffer \u59CB\u7EC8\u7528\u94FA\u6EE1\u5C4F\u5E55\u7684 texture\n }";
10
+ export declare const updateFrag = "\n precision highp float;\n\n uniform sampler2D u_particles;\n uniform sampler2D u_wind;\n uniform vec2 u_wind_res;\n uniform vec2 u_wind_min;\n uniform vec2 u_wind_max;\n uniform float u_rand_seed;\n uniform float u_speed_factor;\n uniform float u_drop_rate;\n uniform float u_drop_rate_bump;\n\n varying vec2 v_tex_pos;\n\n // pseudo-random generator\n const vec3 rand_constants = vec3(12.9898, 78.233, 4375.85453);\n float rand(const vec2 co) {\n float t = dot(rand_constants.xy, co);\n return fract(sin(t) * (rand_constants.z + t));\n }\n\n // wind speed lookup; use manual bilinear filtering based on 4 adjacent pixels for smooth interpolation\n vec2 lookup_wind(const vec2 uv) {\n // return texture2D(u_wind, uv).rg; // lower-res hardware filtering\n vec2 px = 1.0 / u_wind_res;\n vec2 vc = (floor(uv * u_wind_res)) * px;\n vec2 f = fract(uv * u_wind_res);\n vec2 tl = texture2D(u_wind, vc).rg;\n vec2 tr = texture2D(u_wind, vc + vec2(px.x, 0)).rg;\n vec2 bl = texture2D(u_wind, vc + vec2(0, px.y)).rg;\n vec2 br = texture2D(u_wind, vc + px).rg;\n return mix(mix(tl, tr, f.x), mix(bl, br, f.x), f.y);\n }\n\n void main() {\n vec4 color = texture2D(u_particles, v_tex_pos);\n vec2 pos = vec2(\n color.r / 255.0 + color.b,\n color.g / 255.0 + color.a); // decode particle position from pixel RGBA\n vec2 velocity = mix(u_wind_min, u_wind_max, lookup_wind(pos));\n float speed_t = length(velocity) / length(u_wind_max);\n\n // take EPSG:4236 distortion into account for calculating where the particle moved\n float distortion = cos(radians(pos.y * 180.0 - 90.0));\n vec2 offset = vec2(velocity.x / distortion, -velocity.y) * 0.0001 * u_speed_factor;\n\n // update particle position, wrapping around the date line\n pos = fract(1.0 + pos + offset);\n\n // a random seed to use for the particle drop\n vec2 seed = (pos + v_tex_pos) * u_rand_seed;\n\n // drop rate is a chance a particle will restart at random position, to avoid degeneration\n float drop_rate = u_drop_rate + speed_t * u_drop_rate_bump;\n float drop = step(1.0 - drop_rate, rand(seed));\n\n vec2 random_pos = vec2(\n rand(seed + 1.3),\n rand(seed + 2.1));\n pos = mix(pos, random_pos, drop);\n\n // encode the new particle position back into RGBA\n gl_FragColor = vec4(\n fract(pos * 255.0),\n floor(pos * 255.0) / 255.0);\n }";
11
+ export declare const fullScreenVert = "\n precision mediump float;\n\n attribute vec2 a_pos;\n\n varying vec2 v_tex_pos;\n\n void main() {\n v_tex_pos = a_pos;\n gl_Position = vec4(1.0 - 2.0 * a_pos, 0.0, 1.0);\n gl_PointSize = 100.0;\n }";
12
+ export declare const fullScreenFrag = "\n precision mediump float;\n\n uniform sampler2D u_screen;\n uniform float u_opacity;\n varying vec2 v_tex_pos;\n\n void main() {\n vec4 color = texture2D(u_screen, 1.0 - v_tex_pos);\n\n // a hack to guarantee opacity fade out even with a value close to 1.0\n gl_FragColor = vec4(floor(255.0 * color * u_opacity) / 255.0);\n }";