@pirireis/webglobeplugins 1.0.2 → 1.0.4

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 (277) hide show
  1. package/package.json +2 -2
  2. package/plugins/alarms/alarmFadeInFadeOutPlugin/AlarmTimeLineFadeInFadeOutPlugin.js +399 -0
  3. package/{Math/angle-calculation.ts → webglobeplugins/Math/angle-calculation.js} +14 -18
  4. package/{Math/arc-cdf-points.ts → webglobeplugins/Math/arc-cdf-points.js} +272 -329
  5. package/{Math/arc-generate-points-exponantial.ts → webglobeplugins/Math/arc-generate-points-exponantial.js} +254 -299
  6. package/{Math/arc.ts → webglobeplugins/Math/arc.js} +292 -421
  7. package/{Math → webglobeplugins/Math}/bounds/line-bbox.js +186 -225
  8. package/{Math/circle-cdf-points.ts → webglobeplugins/Math/circle-cdf-points.js} +78 -143
  9. package/{Math/circle.ts → webglobeplugins/Math/circle.js} +33 -49
  10. package/{Math/constants.ts → webglobeplugins/Math/constants.js} +4 -12
  11. package/{Math/contour/quadtreecontours.ts → webglobeplugins/Math/contour/quadtreecontours.js} +300 -371
  12. package/{Math → webglobeplugins/Math}/contour/quadtreecontours1.js +298 -336
  13. package/{Math/finite-line-2d.ts → webglobeplugins/Math/finite-line-2d.js} +58 -68
  14. package/{Math/haversine.ts → webglobeplugins/Math/haversine.js} +22 -33
  15. package/webglobeplugins/Math/index.js +1 -0
  16. package/{Math/juction/arc-plane.ts → webglobeplugins/Math/juction/arc-plane.js} +143 -203
  17. package/{Math/juction/line-sphere.ts → webglobeplugins/Math/juction/line-sphere.js} +22 -32
  18. package/{Math/juction/plane-plane.ts → webglobeplugins/Math/juction/plane-plane.js} +53 -62
  19. package/{Math/line.ts → webglobeplugins/Math/line.js} +52 -84
  20. package/webglobeplugins/Math/matrix4.js +1 -0
  21. package/{Math/methods.ts → webglobeplugins/Math/methods.js} +126 -182
  22. package/{Math/plane.ts → webglobeplugins/Math/plane.js} +56 -92
  23. package/{Math/quaternion.ts → webglobeplugins/Math/quaternion.js} +106 -128
  24. package/{Math/templete-shapes/grid-visually-equal.ts → webglobeplugins/Math/templete-shapes/grid-visually-equal.js} +65 -118
  25. package/webglobeplugins/Math/tessellation/constants.js +1 -0
  26. package/{Math/tessellation/methods.ts → webglobeplugins/Math/tessellation/methods.js} +49 -79
  27. package/{Math/tessellation/nearest-value-padding.ts → webglobeplugins/Math/tessellation/nearest-value-padding.js} +112 -147
  28. package/{Math/tessellation/spherical-triangle-area.ts → webglobeplugins/Math/tessellation/spherical-triangle-area.js} +99 -127
  29. package/{Math/tessellation/tile-merger.ts → webglobeplugins/Math/tessellation/tile-merger.js} +429 -578
  30. package/{Math/tessellation/triangle-tessellation.ts → webglobeplugins/Math/tessellation/triangle-tessellation.js} +464 -533
  31. package/webglobeplugins/Math/tessellation/types.js +1 -0
  32. package/webglobeplugins/Math/types.js +1 -0
  33. package/{Math → webglobeplugins/Math}/utils.js +2 -3
  34. package/{Math/vec3.ts → webglobeplugins/Math/vec3.js} +155 -227
  35. package/{Math/xyz-tile.ts → webglobeplugins/Math/xyz-tile.js} +18 -26
  36. package/{algorithms → webglobeplugins/algorithms}/search-binary.js +16 -14
  37. package/webglobeplugins/altitude-locator/adaptors.js +1 -0
  38. package/webglobeplugins/altitude-locator/keymethod.js +1 -0
  39. package/{altitude-locator → webglobeplugins/altitude-locator}/plugin.js +344 -445
  40. package/{altitude-locator → webglobeplugins/altitude-locator}/types.js +21 -26
  41. package/{compass-rose → webglobeplugins/compass-rose}/compass-rose-padding-flat.js +230 -274
  42. package/{compass-rose/compass-text-writer.ts → webglobeplugins/compass-rose/compass-text-writer.js} +155 -210
  43. package/{compass-rose → webglobeplugins/compass-rose}/index.js +3 -3
  44. package/{constants.ts → webglobeplugins/constants.js} +6 -8
  45. package/{heatwave → webglobeplugins/heatwave}/datamanager.js +149 -168
  46. package/{heatwave → webglobeplugins/heatwave}/heatwave.js +206 -261
  47. package/{heatwave → webglobeplugins/heatwave}/index.js +5 -5
  48. package/{heatwave → webglobeplugins/heatwave}/isobar.js +306 -340
  49. package/{heatwave/texture-point-sampler.ts → webglobeplugins/heatwave/texture-point-sampler.js} +187 -220
  50. package/webglobeplugins/investigation-tools/draw/tiles/adapters.js +67 -0
  51. package/{investigation-tools/draw/tiles/tiles.ts → webglobeplugins/investigation-tools/draw/tiles/tiles.js} +128 -162
  52. package/{jest.config.js → webglobeplugins/jest.config.js} +7 -6
  53. package/{pin → webglobeplugins/pin}/pin-object-array1.js +300 -381
  54. package/{pin → webglobeplugins/pin}/pin-point-totem1.js +60 -77
  55. package/{programs → webglobeplugins/programs}/arrowfield/arrow-field.js +60 -89
  56. package/{programs → webglobeplugins/programs}/arrowfield/logic.js +141 -173
  57. package/{programs → webglobeplugins/programs}/data2legend/density-to-legend.js +68 -86
  58. package/{programs → webglobeplugins/programs}/data2legend/point-to-density-texture.js +67 -84
  59. package/{programs → webglobeplugins/programs}/float2legendwithratio/index.js +2 -3
  60. package/{programs → webglobeplugins/programs}/float2legendwithratio/logic.js +118 -144
  61. package/{programs → webglobeplugins/programs}/float2legendwithratio/object.js +104 -141
  62. package/{programs → webglobeplugins/programs}/helpers/blender.js +58 -73
  63. package/{programs/helpers/fadeaway.ts → webglobeplugins/programs/helpers/fadeaway.js} +60 -73
  64. package/{programs → webglobeplugins/programs}/index.js +20 -19
  65. package/{programs → webglobeplugins/programs}/line-on-globe/circle-accurate-3d.js +85 -112
  66. package/{programs → webglobeplugins/programs}/line-on-globe/circle-accurate-flat.js +148 -200
  67. package/{programs → webglobeplugins/programs}/line-on-globe/degree-padding-around-circle-3d.js +102 -134
  68. package/webglobeplugins/programs/line-on-globe/index.js +1 -0
  69. package/{programs → webglobeplugins/programs}/line-on-globe/lines-color-instanced-flat.js +80 -99
  70. package/webglobeplugins/programs/line-on-globe/linestrip/data.js +4 -0
  71. package/{programs/line-on-globe/linestrip/linestrip.ts → webglobeplugins/programs/line-on-globe/linestrip/linestrip.js} +93 -152
  72. package/{programs/line-on-globe/naive-accurate-flexible.ts → webglobeplugins/programs/line-on-globe/naive-accurate-flexible.js} +126 -175
  73. package/{programs → webglobeplugins/programs}/line-on-globe/util.js +5 -8
  74. package/{programs → webglobeplugins/programs}/picking/pickable-polygon-renderer.js +98 -129
  75. package/{programs → webglobeplugins/programs}/picking/pickable-renderer.js +98 -130
  76. package/{programs → webglobeplugins/programs}/point-on-globe/element-globe-surface-glow.js +93 -122
  77. package/{programs → webglobeplugins/programs}/point-on-globe/element-point-glow.js +80 -114
  78. package/{programs → webglobeplugins/programs}/point-on-globe/square-pixel-point.js +121 -139
  79. package/{programs/polygon-on-globe/texture-dem-triangles.ts → webglobeplugins/programs/polygon-on-globe/texture-dem-triangles.js} +178 -209
  80. package/{programs/programcache.ts → webglobeplugins/programs/programcache.js} +126 -134
  81. package/webglobeplugins/programs/rings/index.js +1 -0
  82. package/{programs/rings/partial-ring/piece-of-pie.ts → webglobeplugins/programs/rings/partial-ring/piece-of-pie.js} +152 -222
  83. package/webglobeplugins/programs/totems/attachments/adaptive-opacity.js +131 -0
  84. package/{programs/totems/dem-textures-manager.ts → webglobeplugins/programs/totems/attachments/dem-textures-manager.js} +263 -360
  85. package/webglobeplugins/programs/totems/camera-totem-attactment-interface.js +1 -0
  86. package/{programs/totems/camerauniformblock.ts → webglobeplugins/programs/totems/camerauniformblock.js} +225 -310
  87. package/{programs/totems/canvas-webglobe-info.ts → webglobeplugins/programs/totems/canvas-webglobe-info.js} +132 -147
  88. package/{programs/totems/globe-changes.ts → webglobeplugins/programs/totems/globe-changes.js} +59 -79
  89. package/{programs → webglobeplugins/programs}/totems/gpu-selection-uniform-block.js +99 -127
  90. package/{programs/totems/index.ts → webglobeplugins/programs/totems/index.js} +2 -2
  91. package/{programs → webglobeplugins/programs}/two-d/pixel-padding-for-compass.js +87 -101
  92. package/{programs → webglobeplugins/programs}/util.js +14 -19
  93. package/{programs/vectorfields/logics/constants.ts → webglobeplugins/programs/vectorfields/logics/constants.js} +4 -5
  94. package/{programs/vectorfields/logics/drawrectangleparticles.ts → webglobeplugins/programs/vectorfields/logics/drawrectangleparticles.js} +107 -136
  95. package/{programs → webglobeplugins/programs}/vectorfields/logics/index.js +2 -4
  96. package/webglobeplugins/programs/vectorfields/logics/particle-ubo.js +19 -0
  97. package/{programs/vectorfields/logics/pixelbased.ts → webglobeplugins/programs/vectorfields/logics/pixelbased.js} +89 -122
  98. package/{programs → webglobeplugins/programs}/vectorfields/logics/ubo.js +51 -57
  99. package/{programs/vectorfields/pingpongbuffermanager.ts → webglobeplugins/programs/vectorfields/pingpongbuffermanager.js} +99 -113
  100. package/{range-tools-on-terrain/bearing-line/adapters.ts → webglobeplugins/range-tools-on-terrain/bearing-line/adapters.js} +114 -154
  101. package/{range-tools-on-terrain/bearing-line/plugin.ts → webglobeplugins/range-tools-on-terrain/bearing-line/plugin.js} +457 -569
  102. package/webglobeplugins/range-tools-on-terrain/bearing-line/types.js +1 -0
  103. package/{range-tools-on-terrain/circle-line-chain/adapters.ts → webglobeplugins/range-tools-on-terrain/circle-line-chain/adapters.js} +85 -104
  104. package/{range-tools-on-terrain/circle-line-chain/chain-list-map.ts → webglobeplugins/range-tools-on-terrain/circle-line-chain/chain-list-map.js} +382 -446
  105. package/{range-tools-on-terrain/circle-line-chain/plugin.ts → webglobeplugins/range-tools-on-terrain/circle-line-chain/plugin.js} +464 -607
  106. package/webglobeplugins/range-tools-on-terrain/circle-line-chain/types.js +1 -0
  107. package/{range-tools-on-terrain/range-ring/adapters.ts → webglobeplugins/range-tools-on-terrain/range-ring/adapters.js} +93 -114
  108. package/{range-tools-on-terrain/range-ring/enum.ts → webglobeplugins/range-tools-on-terrain/range-ring/enum.js} +2 -2
  109. package/{range-tools-on-terrain/range-ring/plugin.ts → webglobeplugins/range-tools-on-terrain/range-ring/plugin.js} +377 -444
  110. package/webglobeplugins/range-tools-on-terrain/range-ring/rangeringangletext.js +331 -0
  111. package/webglobeplugins/range-tools-on-terrain/range-ring/types.js +9 -0
  112. package/webglobeplugins/semiplugins/interface.js +1 -0
  113. package/{semiplugins/lightweight/line-plugin.ts → webglobeplugins/semiplugins/lightweight/line-plugin.js} +221 -342
  114. package/{semiplugins/lightweight/piece-of-pie-plugin.ts → webglobeplugins/semiplugins/lightweight/piece-of-pie-plugin.js} +200 -275
  115. package/{semiplugins/shape-on-terrain/arc-plugin.ts → webglobeplugins/semiplugins/shape-on-terrain/arc-plugin.js} +481 -616
  116. package/{semiplugins/shape-on-terrain/circle-plugin.ts → webglobeplugins/semiplugins/shape-on-terrain/circle-plugin.js} +444 -588
  117. package/{semiplugins/shape-on-terrain/padding-1-degree.ts → webglobeplugins/semiplugins/shape-on-terrain/padding-1-degree.js} +539 -713
  118. package/{semiplugins/shape-on-terrain/terrain-polygon/adapters.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/adapters.js} +55 -69
  119. package/{semiplugins/shape-on-terrain/terrain-polygon/data/cache.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/cache.js} +104 -149
  120. package/{semiplugins/shape-on-terrain/terrain-polygon/data/index-polygon-map.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/index-polygon-map.js} +45 -58
  121. package/{semiplugins/shape-on-terrain/terrain-polygon/data/manager.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/manager.js} +4 -4
  122. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.js +241 -0
  123. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/polygon-to-triangles.js +76 -0
  124. package/{semiplugins/shape-on-terrain/terrain-polygon/data/random.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/random.js} +121 -165
  125. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/types.js +1 -0
  126. package/{semiplugins/shape-on-terrain/terrain-polygon/data/worker-contact.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/worker-contact.js} +64 -81
  127. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/worker.js +162 -0
  128. package/{semiplugins/shape-on-terrain/terrain-polygon/terrain-polygon.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/terrain-polygon.js} +282 -265
  129. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/test-records.js +14 -0
  130. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/types.js +8 -0
  131. package/webglobeplugins/semiplugins/shell/bbox-renderer/index.js +2 -0
  132. package/{semiplugins/shell/bbox-renderer/logic.ts → webglobeplugins/semiplugins/shell/bbox-renderer/logic.js} +209 -273
  133. package/webglobeplugins/semiplugins/shell/bbox-renderer/object.js +78 -0
  134. package/webglobeplugins/semiplugins/type.js +1 -0
  135. package/{semiplugins/utility/container-plugin.ts → webglobeplugins/semiplugins/utility/container-plugin.js} +94 -126
  136. package/{semiplugins/utility/object-pass-container-plugin.ts → webglobeplugins/semiplugins/utility/object-pass-container-plugin.js} +80 -101
  137. package/{shaders → webglobeplugins/shaders}/fragment-toy/firework.js +1 -1
  138. package/{shaders → webglobeplugins/shaders}/fragment-toy/singularity.js +2 -5
  139. package/{tracks → webglobeplugins/tracks}/point-heat-map/adaptors/timetracksplugin-format-to-this.js +63 -78
  140. package/webglobeplugins/tracks/point-heat-map/index.js +1 -0
  141. package/{tracks → webglobeplugins/tracks}/point-heat-map/plugin-webworker.js +121 -148
  142. package/{tracks → webglobeplugins/tracks}/point-heat-map/point-to-heat-map-flow.js +121 -150
  143. package/{tracks → webglobeplugins/tracks}/point-tracks/key-methods.js +2 -3
  144. package/{tracks → webglobeplugins/tracks}/point-tracks/plugin.js +401 -487
  145. package/{tracks → webglobeplugins/tracks}/timetracks/adaptors-line-strip.js +65 -79
  146. package/{tracks → webglobeplugins/tracks}/timetracks/plugin-line-strip.js +240 -295
  147. package/{tracks → webglobeplugins/tracks}/timetracks/program-line-strip.js +413 -495
  148. package/{tracks → webglobeplugins/tracks}/timetracks/programpoint-line-strip.js +109 -137
  149. package/webglobeplugins/types.js +19 -0
  150. package/{util → webglobeplugins/util}/account/bufferoffsetmanager.js +176 -209
  151. package/webglobeplugins/util/account/create-buffermap-orchastration.js +39 -0
  152. package/{util → webglobeplugins/util}/account/index.js +3 -6
  153. package/{util/account/single-attribute-buffer-management/buffer-manager.ts → webglobeplugins/util/account/single-attribute-buffer-management/buffer-manager.js} +119 -151
  154. package/{util/account/single-attribute-buffer-management/buffer-orchestrator.ts → webglobeplugins/util/account/single-attribute-buffer-management/buffer-orchestrator.js} +212 -238
  155. package/{util/account/single-attribute-buffer-management/buffer-orchestrator1.ts → webglobeplugins/util/account/single-attribute-buffer-management/buffer-orchestrator1.js} +159 -184
  156. package/{util/account/single-attribute-buffer-management/index.ts → webglobeplugins/util/account/single-attribute-buffer-management/index.js} +4 -11
  157. package/{util/account/single-attribute-buffer-management/object-store.ts → webglobeplugins/util/account/single-attribute-buffer-management/object-store.js} +55 -76
  158. package/webglobeplugins/util/account/single-attribute-buffer-management/types.js +1 -0
  159. package/{util → webglobeplugins/util}/account/util.js +18 -22
  160. package/webglobeplugins/util/algorithms/index.js +1 -0
  161. package/{util → webglobeplugins/util}/algorithms/search-binary.js +25 -26
  162. package/{util/build-strategy/static-dynamic.ts → webglobeplugins/util/build-strategy/static-dynamic.js} +41 -50
  163. package/webglobeplugins/util/check/index.js +1 -0
  164. package/webglobeplugins/util/check/typecheck.js +66 -0
  165. package/{util/frame-counter-trigger.ts → webglobeplugins/util/frame-counter-trigger.js} +84 -99
  166. package/{util/geometry/index.ts → webglobeplugins/util/geometry/index.js} +121 -155
  167. package/webglobeplugins/util/gl-util/buffer/attribute-loader.js +74 -0
  168. package/{util/gl-util/buffer/index.ts → webglobeplugins/util/gl-util/buffer/index.js} +3 -6
  169. package/{util/gl-util/draw-options/methods.ts → webglobeplugins/util/gl-util/draw-options/methods.js} +32 -47
  170. package/{util/gl-util/uniform-block/manager.ts → webglobeplugins/util/gl-util/uniform-block/manager.js} +209 -232
  171. package/{util/globe-default-gl-states.ts → webglobeplugins/util/globe-default-gl-states.js} +4 -5
  172. package/{util/helper-methods.ts → webglobeplugins/util/helper-methods.js} +8 -9
  173. package/{util → webglobeplugins/util}/index.js +10 -9
  174. package/webglobeplugins/util/interpolation/index.js +1 -0
  175. package/webglobeplugins/util/interpolation/timetrack/index.js +2 -0
  176. package/{util → webglobeplugins/util}/interpolation/timetrack/timetrack-interpolator.js +79 -94
  177. package/{util → webglobeplugins/util}/interpolation/timetrack/web-worker.js +46 -51
  178. package/{util/picking/fence.ts → webglobeplugins/util/picking/fence.js} +43 -47
  179. package/{util/picking/picker-displayer.ts → webglobeplugins/util/picking/picker-displayer.js} +176 -226
  180. package/{util → webglobeplugins/util}/programs/draw-from-pixel-coords.js +164 -201
  181. package/{util/programs/draw-texture-on-canvas.ts → webglobeplugins/util/programs/draw-texture-on-canvas.js} +69 -91
  182. package/{util → webglobeplugins/util}/programs/supersampletotextures.js +97 -130
  183. package/{util/programs/texturetoglobe.js → webglobeplugins/util/programs/texturetoglobe_delete.js} +128 -153
  184. package/{util/shaderfunctions/geometrytransformations.ts → webglobeplugins/util/shaderfunctions/geometrytransformations.js} +44 -106
  185. package/{util → webglobeplugins/util}/shaderfunctions/index.js +2 -2
  186. package/{util → webglobeplugins/util}/shaderfunctions/nodata.js +2 -4
  187. package/{util → webglobeplugins/util}/shaderfunctions/noisefunctions.js +7 -10
  188. package/{util/webglobjectbuilders.ts → webglobeplugins/util/webglobjectbuilders.js} +358 -446
  189. package/{vectorfield → webglobeplugins/vectorfield}/arrowfield/adaptor.js +11 -11
  190. package/{vectorfield → webglobeplugins/vectorfield}/arrowfield/index.js +3 -3
  191. package/{vectorfield → webglobeplugins/vectorfield}/arrowfield/plugin.js +83 -128
  192. package/{vectorfield → webglobeplugins/vectorfield}/waveparticles/adaptor.js +15 -16
  193. package/{vectorfield → webglobeplugins/vectorfield}/waveparticles/index.js +3 -3
  194. package/{vectorfield/waveparticles/plugin.ts → webglobeplugins/vectorfield/waveparticles/plugin.js} +455 -506
  195. package/webglobeplugins/vectorfield/wind/adapters/image-to-fields.js +92 -0
  196. package/webglobeplugins/vectorfield/wind/adapters/types.js +1 -0
  197. package/{vectorfield/wind/imagetovectorfieldandmagnitude.ts → webglobeplugins/vectorfield/wind/imagetovectorfieldandmagnitude.js} +53 -78
  198. package/{vectorfield → webglobeplugins/vectorfield}/wind/index.js +5 -5
  199. package/{vectorfield/wind/plugin-persistant.ts → webglobeplugins/vectorfield/wind/plugin-persistant.js} +390 -483
  200. package/{vectorfield → webglobeplugins/vectorfield}/wind/plugin.js +685 -883
  201. package/{vectorfield → webglobeplugins/vectorfield}/wind/vectorfieldimage.js +23 -27
  202. package/{write-text/context-text-bulk.ts → webglobeplugins/write-text/context-text-bulk.js} +200 -285
  203. package/webglobeplugins/write-text/context-text3.js +167 -0
  204. package/{write-text/context-text4.ts → webglobeplugins/write-text/context-text4.js} +146 -231
  205. package/{write-text → webglobeplugins/write-text}/context-textDELETE.js +94 -125
  206. package/{write-text/objectarraylabels/index.ts → webglobeplugins/write-text/objectarraylabels/index.js} +2 -2
  207. package/{write-text → webglobeplugins/write-text}/objectarraylabels/objectarraylabels.js +200 -247
  208. package/Math/index.js +0 -0
  209. package/Math/matrix4.ts +0 -0
  210. package/Math/mesh/mapbox-delaunay.d.ts +0 -74
  211. package/Math/roadmap.md +0 -10
  212. package/Math/tessellation/constants.ts +0 -1
  213. package/Math/tessellation/roadmap.md +0 -48
  214. package/Math/tessellation/types.ts +0 -1
  215. package/Math/types.ts +0 -68
  216. package/altitude-locator/adaptors.js +0 -0
  217. package/altitude-locator/keymethod.js +0 -0
  218. package/investigation-tools/draw/tiles/adapters.ts +0 -133
  219. package/programs/line-on-globe/index.js +0 -0
  220. package/programs/line-on-globe/linestrip/data.ts +0 -29
  221. package/programs/polygon-on-globe/roadmap.md +0 -8
  222. package/programs/rings/index.js +0 -1
  223. package/programs/totems/camera-totem-attactment-interface.ts +0 -4
  224. package/programs/vectorfields/logics/particle-ubo.ts +0 -23
  225. package/publish.bat +0 -62
  226. package/range-tools-on-terrain/bearing-line/types.ts +0 -65
  227. package/range-tools-on-terrain/circle-line-chain/types.ts +0 -43
  228. package/range-tools-on-terrain/range-ring/rangeringangletext.ts +0 -396
  229. package/range-tools-on-terrain/range-ring/types.ts +0 -30
  230. package/semiplugins/interface.ts +0 -14
  231. package/semiplugins/shape-on-terrain/goal.md +0 -12
  232. package/semiplugins/shape-on-terrain/terrain-polygon/data/cache-shortcuts.md +0 -20
  233. package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.js +0 -196
  234. package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.ts +0 -209
  235. package/semiplugins/shape-on-terrain/terrain-polygon/data/polygon-to-triangles.ts +0 -144
  236. package/semiplugins/shape-on-terrain/terrain-polygon/data/readme.md +0 -5
  237. package/semiplugins/shape-on-terrain/terrain-polygon/data/types.ts +0 -37
  238. package/semiplugins/shape-on-terrain/terrain-polygon/data/worker.js +0 -146
  239. package/semiplugins/shape-on-terrain/terrain-polygon/notes.md +0 -90
  240. package/semiplugins/shape-on-terrain/terrain-polygon/types.ts +0 -69
  241. package/semiplugins/shell/bbox-renderer/index.ts +0 -2
  242. package/semiplugins/shell/bbox-renderer/object.ts +0 -129
  243. package/semiplugins/type.ts +0 -8
  244. package/terrain-plugin.mmd +0 -83
  245. package/tests/Math/arc-sampling-test.js +0 -367
  246. package/tests/Math/arc-sampling-test.ts +0 -429
  247. package/tests/Math/arc.test.ts +0 -77
  248. package/tests/Math/junction/arc-limit.test.ts +0 -7
  249. package/tests/Math/junction/arc-plane-points.test.ts +0 -196
  250. package/tests/Math/junction/arc-plane.test.ts +0 -172
  251. package/tests/Math/junction/line-sphere.test.ts +0 -127
  252. package/tests/Math/junction/plane-plane.test.ts +0 -91
  253. package/tests/Math/plane-test.ts +0 -17
  254. package/tests/Math/plane.test.ts +0 -43
  255. package/tests/Math/vec3.test.ts +0 -33
  256. package/tracks/point-heat-map/index.js +0 -0
  257. package/tracks/point-heat-map/readme.md +0 -15
  258. package/tracks/timetracks/readme.md +0 -1
  259. package/tsconfig.json +0 -22
  260. package/types/@pirireis/webglobe.d.ts +0 -102
  261. package/types/delaunator.d.ts +0 -40
  262. package/types/earcut.d.ts +0 -11
  263. package/types/rbush.d.ts +0 -57
  264. package/types.ts +0 -319
  265. package/util/account/create-buffermap-orchastration.ts +0 -85
  266. package/util/account/single-attribute-buffer-management/types.ts +0 -43
  267. package/util/algorithms/index.js +0 -0
  268. package/util/check/index.js +0 -0
  269. package/util/check/typecheck.ts +0 -74
  270. package/util/gl-util/buffer/attribute-loader.ts +0 -84
  271. package/util/interpolation/index.js +0 -0
  272. package/util/interpolation/timetrack/index.js +0 -9
  273. package/vectorfield/wind/adapters/image-to-fields.ts +0 -74
  274. package/vectorfield/wind/adapters/types.ts +0 -12
  275. package/vectorfield/wind/plugin-persistant copy.ts +0 -461
  276. package/write-text/context-text3.ts +0 -252
  277. package/write-text/objectarraylabels/objectarraylabels.d.ts +0 -72
@@ -1,17 +1,18 @@
1
- import { createProgram } from "../../../util/webglobjectbuilders";
2
- import { glProgramCache } from "../../programcache";
3
- import { ParticleUBO } from "./particle-ubo";
4
-
5
- /**
6
- * [+] ubo
7
- */
8
-
1
+ /**
2
+ * Author: Toprak Nihat Deniz Ozturk
3
+ */
4
+ import { createProgram } from "../../../util/webglobjectbuilders";
5
+ import { glProgramCache } from "../../programcache";
6
+ import { ParticleUBO } from "./particle-ubo";
7
+ /**
8
+ * [+] ubo
9
+ */
9
10
  const vertexShaderSource = `#version 300 es
10
11
  precision highp float;
11
- `+ ParticleUBO.glslCode() + `
12
+ ` + ParticleUBO.glslCode() + `
12
13
  uniform sampler2D u_vector_field;
13
14
  uniform sampler2D u_color_field;
14
- uniform sampler2D u_speed_field;
15
+ uniform sampler2D u_magnitude_field;
15
16
  in vec2 in_position;
16
17
  out vec4 base_color;
17
18
 
@@ -26,35 +27,38 @@ vec2 read_value(const vec2 uv) {
26
27
 
27
28
 
28
29
  vec2 lookup_wind(const vec2 uv) { // gerek kalmayabilir. sampler linear methodu ayni isi yapiyor
29
- // return texture(u_vector_field, uv).rg; // lower-res hardware filtering
30
- vec2 res = vec2(textureSize(u_vector_field, 0));
31
- vec2 px = 1.0 / res;
32
- vec2 vc = (floor(uv * res)) * px;
33
- vec2 f = fract(uv * res);
34
- vec2 tl = read_value(vc).rg;
35
- vec2 tr = read_value(vc + vec2(px.x, 0)).rg;
36
- vec2 bl = read_value(vc + vec2(0, px.y)).rg;
37
- vec2 br = read_value(vc + px).rg;
38
-
39
- return mix(mix(tl, tr, f.x), mix(bl, br, f.x), f.y);
30
+ vec2 value =texture(u_vector_field, uv).rg; // lower-res hardware filtering
31
+ // normalize value
32
+ float length = length(value);
33
+ if ( length == 0.0 || value.x == escape_value || value.y == escape_value) {
34
+ return vec2(0.0);
35
+ }
36
+ return value/length;
37
+
38
+ // vec2 res = vec2(textureSize(u_vector_field, 0));
39
+ // vec2 px = 1.0 / res;
40
+ // vec2 vc = (floor(uv * res)) * px;
41
+ // vec2 f = fract(uv * res);
42
+ // vec2 tl = read_value(vc).rg;
43
+ // vec2 tr = read_value(vc + vec2(px.x, 0)).rg;
44
+ // vec2 bl = read_value(vc + vec2(0, px.y)).rg;
45
+ // vec2 br = read_value(vc + px).rg;
46
+
47
+ // return mix(mix(tl, tr, f.x), mix(bl, br, f.x), f.y);
40
48
  }
41
49
 
42
50
 
43
51
  void main(){
44
- if ( use_speed_field != 0.0 ) {
45
- base_color = vec4(0.0);
46
- return;
47
- float speed = texture(u_speed_field, in_position).r;
48
- if ( speed < min_speed_threshold || speed > max_speed_threshold ) {
52
+ if ( use_magnitude_field > 0.5) {
53
+ float magnitude = texture(u_magnitude_field, in_position).r;
54
+
55
+ if ( magnitude < min_magnitude_threshold || magnitude > max_magnitude_threshold ) {
49
56
  base_color = vec4(0.0);
50
57
  return;
51
58
  }
52
59
  }
53
60
 
54
61
  vec2 direction_vector = lookup_wind(in_position);
55
- if (direction_vector.r == 0.0 && direction_vector.g == 0.0) return;
56
-
57
-
58
62
  vec2 limp;
59
63
  if ( 0 == gl_VertexID) { limp = -tail_wing_base_limp; }
60
64
  else if ( 1 == gl_VertexID) { limp = vec2( tail_wing_base_limp.x, -tail_wing_base_limp.y); }
@@ -67,116 +71,83 @@ void main(){
67
71
  vec2 pos = in_position * 2.0 - 1.0;
68
72
  gl_Position = vec4(pos + limp, 0.0, 1.0);
69
73
 
70
- base_color = use_color_field != 0.0 ? texture(u_color_field, in_position).rgba : vec4(color, 1.0);
71
- }`;
72
-
73
-
74
+ base_color = use_color_field != 0.0 ? texture(u_color_field, in_position).rgba : color;
75
+ }`;
74
76
  const fragmentShaderSource = `#version 300 es
75
77
  precision highp float;
76
78
  out vec4 outColor;
77
79
  in vec4 base_color;
78
80
  void main(){
79
81
  outColor = base_color;
80
- }`;
81
-
82
-
83
- export class DrawRectangleParticleProgram {
84
- private gl: WebGL2RenderingContext;
85
- private program: WebGLProgram;
86
- private _vector_field_location: WebGLUniformLocation;
87
- private _color_texture_location: WebGLUniformLocation;
88
- private _speed_field_location: WebGLUniformLocation;
89
- constructor(gl: WebGL2RenderingContext) {
90
- this.gl = gl;
91
- // this.decoyBuffer = new DecoyBufferManager(gl);
92
- const { program, _vector_field_location, _color_texture_location, _speed_field_location } = this._createProgram();
93
- this.program = program;
94
- this._vector_field_location = _vector_field_location;
95
- this._color_texture_location = _color_texture_location;
96
- this._speed_field_location = _speed_field_location;
97
- }
98
-
99
- private _createProgram(): {
100
- program: WebGLProgram;
101
- _vector_field_location: WebGLUniformLocation;
102
- _color_texture_location: WebGLUniformLocation;
103
- _speed_field_location: WebGLUniformLocation;
104
-
105
- } {
106
- const gl = this.gl;
107
- const program = createProgram(gl, vertexShaderSource, fragmentShaderSource);
108
- // ubo point
109
- // const ubo_location = gl.getUniformBlockIndex(program, 'UBO');
110
- // gl.uniformBlockBinding(program, ubo_location, UBO_BINDING_POINT);
111
- ParticleUBO.assignBindingPoint(gl, program);
112
- return {
113
- program,
114
- _vector_field_location: gl.getUniformLocation(program, 'u_vector_field')!,
115
- _color_texture_location: gl.getUniformLocation(program, 'u_color_field')!,
116
- _speed_field_location: gl.getUniformLocation(program, 'u_speed_field')!
117
- };
118
-
119
- }
120
-
121
- /**
122
- * @param bufferManager | PingPongBufferManager
123
- * @param vectorFieldTexture | RG32F texture R: x, G: y
124
- * @param uboManager | WaveParticalUboManager under ubo.js
125
- */
126
- draw(
127
- bufferManager: any,
128
- vectorFieldTexture: WebGLTexture,
129
- uboManager: any,
130
- colorFieldTexture: WebGLTexture | undefined | null,
131
- speedFieldTexture: WebGLTexture | undefined | null
132
- ): void {
133
- const { gl, program } = this;
134
- gl.useProgram(program);
135
- gl.bindVertexArray(bufferManager.getSourceVao());
136
- // gl.bindVertexArray(this.decoyBuffer.getSourceVao());
137
-
138
- uboManager.bind();
139
- if (colorFieldTexture) {
140
- gl.activeTexture(gl.TEXTURE1);
141
- gl.uniform1i(this._color_texture_location, 1);
142
- gl.bindTexture(
143
- gl.TEXTURE_2D,
144
- colorFieldTexture
145
- );
146
- }
147
- if (speedFieldTexture) {
148
- gl.activeTexture(gl.TEXTURE2);
149
- gl.uniform1i(this._speed_field_location, 2);
150
- gl.bindTexture(
151
- gl.TEXTURE_2D,
152
- speedFieldTexture
153
- );
154
- }
155
-
156
- gl.activeTexture(gl.TEXTURE0);
157
- gl.uniform1i(this._vector_field_location, 0);
158
- gl.bindTexture(
159
- gl.TEXTURE_2D,
160
- vectorFieldTexture
161
- );
162
-
163
- gl.drawArraysInstanced(gl.TRIANGLE_FAN, 0, 4, bufferManager.length);
164
- gl.drawArraysInstanced(gl.POINTS, 0, 4, bufferManager.length);
165
- gl.bindVertexArray(null);
166
- uboManager.unbind();
167
- }
168
-
169
- free(): void {
170
- this.gl.deleteProgram(this.program);
171
- this.program = null!;
172
- }
173
- }
174
-
175
- export const drawRectangleParticlesProgramCache = Object.freeze({
176
- getProgram: (gl: WebGL2RenderingContext): DrawRectangleParticleProgram => {
177
- return glProgramCache.getProgram(gl, DrawRectangleParticleProgram);
178
- },
179
- releaseProgram: (gl: WebGL2RenderingContext): void => {
180
- glProgramCache.releaseProgram(gl, DrawRectangleParticleProgram);
181
- }
182
- });
82
+ }`;
83
+ export class DrawRectangleParticleProgram {
84
+ gl;
85
+ program;
86
+ _vector_field_location;
87
+ _color_texture_location;
88
+ _magnitude_field_location;
89
+ constructor(gl) {
90
+ this.gl = gl;
91
+ // this.decoyBuffer = new DecoyBufferManager(gl);
92
+ const { program, _vector_field_location, _color_texture_location, _magnitude_field_location } = this._createProgram();
93
+ this.program = program;
94
+ this._vector_field_location = _vector_field_location;
95
+ this._color_texture_location = _color_texture_location;
96
+ this._magnitude_field_location = _magnitude_field_location;
97
+ }
98
+ _createProgram() {
99
+ const gl = this.gl;
100
+ const program = createProgram(gl, vertexShaderSource, fragmentShaderSource);
101
+ // ubo point
102
+ // const ubo_location = gl.getUniformBlockIndex(program, 'UBO');
103
+ // gl.uniformBlockBinding(program, ubo_location, UBO_BINDING_POINT);
104
+ ParticleUBO.assignBindingPoint(gl, program);
105
+ return {
106
+ program,
107
+ _vector_field_location: gl.getUniformLocation(program, 'u_vector_field'),
108
+ _color_texture_location: gl.getUniformLocation(program, 'u_color_field'),
109
+ _magnitude_field_location: gl.getUniformLocation(program, 'u_magnitude_field')
110
+ };
111
+ }
112
+ /**
113
+ * @param bufferManager | PingPongBufferManager
114
+ * @param vectorFieldTexture | RG32F texture R: x, G: y
115
+ * @param uboManager | WaveParticalUboManager under ubo.js
116
+ */
117
+ draw(bufferManager, vectorFieldTexture, uboManager, colorFieldTexture, magnitudeFieldTexture) {
118
+ const { gl, program } = this;
119
+ gl.useProgram(program);
120
+ gl.bindVertexArray(bufferManager.getSourceVao());
121
+ // gl.bindVertexArray(this.decoyBuffer.getSourceVao());
122
+ uboManager.bind();
123
+ if (colorFieldTexture) {
124
+ gl.activeTexture(gl.TEXTURE1);
125
+ gl.uniform1i(this._color_texture_location, 1);
126
+ gl.bindTexture(gl.TEXTURE_2D, colorFieldTexture);
127
+ }
128
+ if (magnitudeFieldTexture) {
129
+ gl.activeTexture(gl.TEXTURE2);
130
+ gl.uniform1i(this._magnitude_field_location, 2);
131
+ gl.bindTexture(gl.TEXTURE_2D, magnitudeFieldTexture);
132
+ }
133
+ gl.activeTexture(gl.TEXTURE0);
134
+ gl.uniform1i(this._vector_field_location, 0);
135
+ gl.bindTexture(gl.TEXTURE_2D, vectorFieldTexture);
136
+ gl.drawArraysInstanced(gl.TRIANGLE_FAN, 0, 4, bufferManager.length);
137
+ gl.drawArraysInstanced(gl.POINTS, 0, 4, bufferManager.length);
138
+ gl.bindVertexArray(null);
139
+ uboManager.unbind();
140
+ }
141
+ free() {
142
+ this.gl.deleteProgram(this.program);
143
+ this.program = null;
144
+ }
145
+ }
146
+ export const drawRectangleParticlesProgramCache = Object.freeze({
147
+ getProgram: (gl) => {
148
+ return glProgramCache.getProgram(gl, DrawRectangleParticleProgram);
149
+ },
150
+ releaseProgram: (gl) => {
151
+ glProgramCache.releaseProgram(gl, DrawRectangleParticleProgram);
152
+ }
153
+ });
@@ -1,4 +1,2 @@
1
-
2
- import { WaveParticalUboManager } from './ubo';
3
-
4
- export { WaveParticalUboManager };
1
+ import { WaveParticalUboManager } from './ubo';
2
+ export { WaveParticalUboManager };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Author: Toprak Nihat Deniz Ozturk
3
+ */
4
+ import { UBO_BINDING_POINTS } from "./constants";
5
+ import { UniformBlockManager } from "../../../util/gl-util/uniform-block/manager";
6
+ const INITIAL_UBO_DATA = /*@__PURE__*/ new Float32Array([93.17, 0.2, 1.0, 7.0, 1.0, 1.0, 1.0, 0.05, 2000, 2000, 0]);
7
+ export const ParticleUBO = /*@__PURE__*/ new UniformBlockManager("Seawave_UBO", [
8
+ { name: "color", type: "vec4", value: new Float32Array([1.0, 1.0, 1.0, 1.0]) },
9
+ { name: "tail_wing_base_limp", type: "vec2", value: INITIAL_UBO_DATA.slice(2, 4) },
10
+ { name: "draw_texture_size", type: "vec2", value: INITIAL_UBO_DATA.slice(8, 10) },
11
+ { name: "random_seed", type: "float", value: INITIAL_UBO_DATA.slice(0, 1) },
12
+ { name: "range", type: "float", value: INITIAL_UBO_DATA.slice(1, 2) },
13
+ { name: "escape_value", type: "float", value: INITIAL_UBO_DATA.slice(10, 11) },
14
+ { name: "drop_rate", type: "float", value: INITIAL_UBO_DATA.slice(7, 8) },
15
+ { name: "use_color_field", type: "float", value: new Float32Array([0]) },
16
+ { name: "use_magnitude_field", type: "float", value: new Float32Array([0]) },
17
+ { name: "min_magnitude_threshold", type: "float", value: new Float32Array([0]) },
18
+ { name: "max_magnitude_threshold", type: "float", value: new Float32Array([10000]) },
19
+ ], UBO_BINDING_POINTS.SEAWAVE);
@@ -1,19 +1,6 @@
1
- import { createShader } from "../../../util/webglobjectbuilders";
2
- import { glProgramCache } from "../../programcache";
3
- import { ParticleUBO } from "./particle-ubo";
4
-
5
- interface PingPongBufferManager {
6
- getSourceVao(): WebGLVertexArrayObject;
7
- getTargetTF(): WebGLTransformFeedback;
8
- length: number;
9
- }
10
-
11
- interface WaveParticalUboManager {
12
- bind(): void;
13
- unbind(): void;
14
- }
15
-
16
-
1
+ import { createShader } from "../../../util/webglobjectbuilders";
2
+ import { glProgramCache } from "../../programcache";
3
+ import { ParticleUBO } from "./particle-ubo";
17
4
  const vertexShaderSource = `#version 300 es
18
5
  ` + ParticleUBO.glslCode() + `
19
6
 
@@ -58,117 +45,97 @@ vec2 random_position(vec2 st){
58
45
 
59
46
  void main(){
60
47
  vec2 vec = lookup_wind(in_position).xy;
61
- if (vec.x == 0.0 && vec.y == 0.0){
62
- out_position = random_position(in_position);
63
- return;
64
- }
65
48
  float random_value = random(in_position + random_seed);
66
- if (random_value < drop_rate){
49
+ if (vec.x == 0.0 && vec.y == 0.0 || random_value < drop_rate) {
67
50
  out_position = random_position(in_position);
68
51
  return;
69
52
  }
70
- float speed_multiplier = use_speed_field != 0.0 ? texture(speed_field, in_position).r : 1.0;
71
- out_position = in_position + (vec / draw_texture_size) * range * speed_multiplier * tail_wing_base_limp.y;
53
+
54
+ out_position = in_position + (vec / draw_texture_size) * range * tail_wing_base_limp.x;
72
55
  }
73
- `;
74
-
56
+ `;
75
57
  const fragmentShaderSource = `#version 300 es
76
58
  precision highp float;
77
59
  void main(){
78
- }`;
79
-
80
- export class MoveParticalProgram {
81
- public readonly gl: WebGL2RenderingContext;
82
- public program: WebGLProgram | null;
83
- private readonly _vector_field_location!: WebGLUniformLocation;
84
- private readonly _speed_field_location!: WebGLUniformLocation;
85
- constructor(gl: WebGL2RenderingContext) {
86
- this.gl = gl;
87
- [this.program, this._vector_field_location, this._speed_field_location] = this._createProgram();
88
- }
89
-
90
- /**
91
- * @param bufferManager - PingPongBufferManager
92
- * @param vectorTexture - RG32F texture R: x, G: y
93
- * @param uboManager - WaveParticalUboManager under ubo.js
94
- */
95
- public move(
96
- bufferManager: PingPongBufferManager,
97
- vectorTexture: WebGLTexture,
98
- uboManager: WaveParticalUboManager,
99
- speedTexture?: WebGLTexture
100
- ): void {
101
- const { gl, program, _vector_field_location } = this;
102
- if (!program) return;
103
-
104
- gl.useProgram(program);
105
- gl.enable(gl.RASTERIZER_DISCARD);
106
- gl.bindVertexArray(bufferManager.getSourceVao());
107
- gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, bufferManager.getTargetTF());
108
- gl.beginTransformFeedback(gl.POINTS);
109
- uboManager.bind();
110
- if (speedTexture) {
111
- gl.activeTexture(gl.TEXTURE1);
112
- gl.bindTexture(gl.TEXTURE_2D, speedTexture);
113
- gl.uniform1i(this._speed_field_location, 1);
114
- }
115
- gl.activeTexture(gl.TEXTURE0);
116
- gl.bindTexture(gl.TEXTURE_2D, vectorTexture);
117
- gl.uniform1i(_vector_field_location, 0);
118
- gl.drawArraysInstanced(gl.POINTS, 0, 1, bufferManager.length);
119
- gl.endTransformFeedback();
120
- gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);
121
- gl.bindVertexArray(null);
122
- uboManager.unbind();
123
- gl.disable(gl.RASTERIZER_DISCARD);
124
- }
125
-
126
- public free(): void {
127
- if (this.program) {
128
- this.gl.deleteProgram(this.program);
129
- this.program = null;
130
- }
131
- }
132
-
133
- public getInPositionLocation(): number {
134
- if (!this.program) return -1;
135
- return this.gl.getAttribLocation(this.program, 'in_position');
136
- }
137
-
138
- // -- private methods
139
-
140
- private _createProgram(): [WebGLProgram, WebGLUniformLocation, WebGLUniformLocation] {
141
- const gl = this.gl;
142
- const vertexShader = createShader(gl, gl.VERTEX_SHADER, vertexShaderSource);
143
- const fragmentShader = createShader(gl, gl.FRAGMENT_SHADER, fragmentShaderSource);
144
- const program = gl.createProgram()!;
145
- gl.attachShader(program, vertexShader);
146
- gl.attachShader(program, fragmentShader);
147
- gl.transformFeedbackVaryings(
148
- program,
149
- ["out_position"],
150
- gl.SEPARATE_ATTRIBS
151
- );
152
- gl.linkProgram(program);
153
- if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
154
- throw new Error(gl.getProgramInfoLog(program) || 'Program link failed');
155
- }
156
- // const ubo_location = gl.getUniformBlockIndex(program, 'UBO');
157
- // gl.uniformBlockBinding(program, ubo_location, UBO_BINDING_POINT);
158
- ParticleUBO.assignBindingPoint(gl, program);
159
- return [
160
- program,
161
- gl.getUniformLocation(program, 'vector_field')!,
162
- gl.getUniformLocation(program, 'speed_field')!,
163
- ];
164
- }
165
- }
166
-
167
- export const pixelBasedMoveProgramCache = Object.freeze({
168
- getProgram: (gl: WebGL2RenderingContext): MoveParticalProgram => {
169
- return glProgramCache.getProgram(gl, MoveParticalProgram);
170
- },
171
- releaseProgram: (gl: WebGL2RenderingContext): void => {
172
- glProgramCache.releaseProgram(gl, MoveParticalProgram);
173
- }
174
- });
60
+ }`;
61
+ export class MoveParticalProgram {
62
+ gl;
63
+ program;
64
+ _vector_field_location;
65
+ _speed_field_location;
66
+ constructor(gl) {
67
+ this.gl = gl;
68
+ [this.program, this._vector_field_location, this._speed_field_location] = this._createProgram();
69
+ }
70
+ /**
71
+ * @param bufferManager - PingPongBufferManager
72
+ * @param vectorTexture - RG32F texture R: x, G: y
73
+ * @param uboManager - WaveParticalUboManager under ubo.js
74
+ */
75
+ move(bufferManager, vectorTexture, uboManager, speedTexture) {
76
+ const { gl, program, _vector_field_location } = this;
77
+ if (!program)
78
+ return;
79
+ gl.useProgram(program);
80
+ gl.enable(gl.RASTERIZER_DISCARD);
81
+ gl.bindVertexArray(bufferManager.getSourceVao());
82
+ gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, bufferManager.getTargetTF());
83
+ gl.beginTransformFeedback(gl.POINTS);
84
+ uboManager.bind();
85
+ if (speedTexture) {
86
+ gl.activeTexture(gl.TEXTURE1);
87
+ gl.bindTexture(gl.TEXTURE_2D, speedTexture);
88
+ gl.uniform1i(this._speed_field_location, 1);
89
+ }
90
+ gl.activeTexture(gl.TEXTURE0);
91
+ gl.bindTexture(gl.TEXTURE_2D, vectorTexture);
92
+ gl.uniform1i(_vector_field_location, 0);
93
+ gl.drawArraysInstanced(gl.POINTS, 0, 1, bufferManager.length);
94
+ gl.endTransformFeedback();
95
+ gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);
96
+ gl.bindVertexArray(null);
97
+ uboManager.unbind();
98
+ gl.disable(gl.RASTERIZER_DISCARD);
99
+ }
100
+ free() {
101
+ if (this.program) {
102
+ this.gl.deleteProgram(this.program);
103
+ this.program = null;
104
+ }
105
+ }
106
+ getInPositionLocation() {
107
+ if (!this.program)
108
+ return -1;
109
+ return this.gl.getAttribLocation(this.program, 'in_position');
110
+ }
111
+ // -- private methods
112
+ _createProgram() {
113
+ const gl = this.gl;
114
+ const vertexShader = createShader(gl, gl.VERTEX_SHADER, vertexShaderSource);
115
+ const fragmentShader = createShader(gl, gl.FRAGMENT_SHADER, fragmentShaderSource);
116
+ const program = gl.createProgram();
117
+ gl.attachShader(program, vertexShader);
118
+ gl.attachShader(program, fragmentShader);
119
+ gl.transformFeedbackVaryings(program, ["out_position"], gl.SEPARATE_ATTRIBS);
120
+ gl.linkProgram(program);
121
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
122
+ throw new Error(gl.getProgramInfoLog(program) || 'Program link failed');
123
+ }
124
+ // const ubo_location = gl.getUniformBlockIndex(program, 'UBO');
125
+ // gl.uniformBlockBinding(program, ubo_location, UBO_BINDING_POINT);
126
+ ParticleUBO.assignBindingPoint(gl, program);
127
+ return [
128
+ program,
129
+ gl.getUniformLocation(program, 'vector_field'),
130
+ gl.getUniformLocation(program, 'speed_field'),
131
+ ];
132
+ }
133
+ }
134
+ export const pixelBasedMoveProgramCache = Object.freeze({
135
+ getProgram: (gl) => {
136
+ return glProgramCache.getProgram(gl, MoveParticalProgram);
137
+ },
138
+ releaseProgram: (gl) => {
139
+ glProgramCache.releaseProgram(gl, MoveParticalProgram);
140
+ }
141
+ });
@@ -1,5 +1,5 @@
1
- const UBO_BINDING_POINT = 0;
2
- const INITIAL_UBO_DATA = new Float32Array([93.17, 0.2, 1.0, 7.0, 1.0, 1.0, 1.0, 0.05, 2000, 2000, -9999]);
1
+ const UBO_BINDING_POINT = 0;
2
+ const INITIAL_UBO_DATA = new Float32Array([93.17, 0.2, 1.0, 7.0, 1.0, 1.0, 1.0, 0.05, 2000, 2000, -9999]);
3
3
  const shaderUboSource = `
4
4
  layout(std140) uniform UBO {
5
5
  float random_seed;
@@ -9,58 +9,52 @@ layout(std140) uniform UBO {
9
9
  float drop_rate;
10
10
  vec2 draw_texture_size;
11
11
  float escape_value;
12
- };`;
13
-
14
- const UBO_SIZE = 44;
15
-
16
- class WaveParticalUboManager {
17
-
18
- constructor(gl) {
19
- this.gl = gl;
20
- this.ubo = this._createBuffer();
21
- this._data = null;
22
- }
23
-
24
-
25
- update({ range, random_seed, tail_wing_base_limp, draw_texture_size, drop_rate, color, escape_value }) {
26
- const { gl, ubo } = this;
27
- gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
28
- if (random_seed !== undefined) gl.bufferSubData(gl.UNIFORM_BUFFER, 0, new Float32Array([random_seed]));
29
- if (range !== undefined) gl.bufferSubData(gl.UNIFORM_BUFFER, 4, new Float32Array([range]));
30
- if (tail_wing_base_limp !== undefined) gl.bufferSubData(gl.UNIFORM_BUFFER, 8, new Float32Array(tail_wing_base_limp));
31
- if (color !== undefined) gl.bufferSubData(gl.UNIFORM_BUFFER, 16, new Float32Array(color));
32
- if (drop_rate !== undefined) gl.bufferSubData(gl.UNIFORM_BUFFER, 28, new Float32Array([drop_rate]));
33
- if (draw_texture_size !== undefined) gl.bufferSubData(gl.UNIFORM_BUFFER, 32, new Float32Array(draw_texture_size));
34
- if (escape_value !== undefined) gl.bufferSubData(gl.UNIFORM_BUFFER, 40, new Float32Array([escape_value]));
35
- gl.bindBuffer(gl.UNIFORM_BUFFER, null);
36
- }
37
-
38
-
39
-
40
- _createBuffer() {
41
- const gl = this.gl;
42
- const buffer = gl.createBuffer();
43
- gl.bindBuffer(gl.UNIFORM_BUFFER, buffer);
44
- gl.bufferData(gl.UNIFORM_BUFFER, INITIAL_UBO_DATA, gl.STATIC_DRAW);
45
- gl.bindBuffer(gl.UNIFORM_BUFFER, null);
46
- return buffer;
47
- }
48
-
49
-
50
- bind() {
51
- const { gl, ubo } = this;
52
- gl.bindBufferBase(gl.UNIFORM_BUFFER, UBO_BINDING_POINT, ubo);
53
- }
54
-
55
- unbind() {
56
- const gl = this.gl;
57
- gl.bindBufferBase(gl.UNIFORM_BUFFER, UBO_BINDING_POINT, null);
58
- }
59
-
60
- free() {
61
- const { gl, _buffer } = this;
62
- gl.deleteBuffer(_buffer);
63
- }
64
- }
65
-
66
- export { WaveParticalUboManager, UBO_SIZE, UBO_BINDING_POINT, shaderUboSource };
12
+ };`;
13
+ const UBO_SIZE = 44;
14
+ class WaveParticalUboManager {
15
+ constructor(gl) {
16
+ this.gl = gl;
17
+ this.ubo = this._createBuffer();
18
+ this._data = null;
19
+ }
20
+ update({ range, random_seed, tail_wing_base_limp, draw_texture_size, drop_rate, color, escape_value }) {
21
+ const { gl, ubo } = this;
22
+ gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
23
+ if (random_seed !== undefined)
24
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 0, new Float32Array([random_seed]));
25
+ if (range !== undefined)
26
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 4, new Float32Array([range]));
27
+ if (tail_wing_base_limp !== undefined)
28
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 8, new Float32Array(tail_wing_base_limp));
29
+ if (color !== undefined)
30
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 16, new Float32Array(color));
31
+ if (drop_rate !== undefined)
32
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 28, new Float32Array([drop_rate]));
33
+ if (draw_texture_size !== undefined)
34
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 32, new Float32Array(draw_texture_size));
35
+ if (escape_value !== undefined)
36
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 40, new Float32Array([escape_value]));
37
+ gl.bindBuffer(gl.UNIFORM_BUFFER, null);
38
+ }
39
+ _createBuffer() {
40
+ const gl = this.gl;
41
+ const buffer = gl.createBuffer();
42
+ gl.bindBuffer(gl.UNIFORM_BUFFER, buffer);
43
+ gl.bufferData(gl.UNIFORM_BUFFER, INITIAL_UBO_DATA, gl.STATIC_DRAW);
44
+ gl.bindBuffer(gl.UNIFORM_BUFFER, null);
45
+ return buffer;
46
+ }
47
+ bind() {
48
+ const { gl, ubo } = this;
49
+ gl.bindBufferBase(gl.UNIFORM_BUFFER, UBO_BINDING_POINT, ubo);
50
+ }
51
+ unbind() {
52
+ const gl = this.gl;
53
+ gl.bindBufferBase(gl.UNIFORM_BUFFER, UBO_BINDING_POINT, null);
54
+ }
55
+ free() {
56
+ const { gl, _buffer } = this;
57
+ gl.deleteBuffer(_buffer);
58
+ }
59
+ }
60
+ export { WaveParticalUboManager, UBO_SIZE, UBO_BINDING_POINT, shaderUboSource };