@pirireis/webglobeplugins 0.9.6 → 0.9.8

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 (304) hide show
  1. package/{Math → dist/Math}/angle-calculation.js +15 -14
  2. package/dist/Math/arc.js +65 -0
  3. package/{Math → dist/Math}/bounds/line-bbox.js +188 -225
  4. package/dist/Math/constants.js +9 -0
  5. package/{Math/frustum/camera.ts → dist/Math/frustum/camera.js} +24 -32
  6. package/{Math/frustum/from-globeinfo.ts → dist/Math/frustum/from-globeinfo.js} +48 -63
  7. package/dist/Math/frustum/types.js +2 -0
  8. package/{Math/globe-util/horizon-plane.ts → dist/Math/globe-util/horizon-plane.js} +112 -137
  9. package/dist/Math/index.js +1 -0
  10. package/dist/Math/juction/arc-plane.js +83 -0
  11. package/dist/Math/juction/line-sphere.js +25 -0
  12. package/{Math/juction/plane-plane.ts → dist/Math/juction/plane-plane.js} +58 -66
  13. package/dist/Math/line.js +56 -0
  14. package/dist/Math/matrix4.js +1 -0
  15. package/{Math → dist/Math}/methods.js +201 -237
  16. package/dist/Math/plane.js +60 -0
  17. package/{Math/quaternion.ts → dist/Math/quaternion.js} +104 -120
  18. package/dist/Math/types.js +2 -0
  19. package/dist/Math/utils.js +4 -0
  20. package/{Math/vec3.ts → dist/Math/vec3.js} +126 -155
  21. package/dist/algorithms/search-binary.js +19 -0
  22. package/dist/altitude-locator/adaptors.js +1 -0
  23. package/{altitude-locator → dist/altitude-locator}/draw-subset-obj.js +18 -27
  24. package/dist/altitude-locator/keymethod.js +1 -0
  25. package/{altitude-locator → dist/altitude-locator}/plugin.js +341 -439
  26. package/{altitude-locator → dist/altitude-locator}/types.js +23 -26
  27. package/{arrowfield → dist/arrowfield}/adaptor.js +14 -11
  28. package/dist/arrowfield/index.js +10 -0
  29. package/{arrowfield → dist/arrowfield}/plugin.js +86 -128
  30. package/dist/bearing-line/index.js +8 -0
  31. package/{bearing-line → dist/bearing-line}/plugin.js +449 -512
  32. package/{circle-line-chain → dist/circle-line-chain}/chain-list-map.js +205 -221
  33. package/dist/circle-line-chain/init.js +1 -0
  34. package/{circle-line-chain → dist/circle-line-chain}/plugin.js +424 -469
  35. package/dist/circle-line-chain/util.js +5 -0
  36. package/{compass-rose → dist/compass-rose}/compass-rose-padding-flat.js +225 -266
  37. package/{compass-rose → dist/compass-rose}/compass-text-writer.js +153 -173
  38. package/dist/compass-rose/index.js +7 -0
  39. package/{compassrose → dist/compassrose}/compassrose.js +296 -341
  40. package/dist/compassrose/index.js +8 -0
  41. package/dist/globe-types.js +1 -0
  42. package/dist/heatwave/index.js +10 -0
  43. package/{heatwave → dist/heatwave}/isobar/objectarraylabels.js +202 -247
  44. package/{heatwave → dist/heatwave}/isobar/plugin.js +343 -340
  45. package/{heatwave → dist/heatwave}/isobar/quadtreecontours.js +300 -336
  46. package/{heatwave → dist/heatwave}/plugins/heatwaveglobeshell.js +206 -258
  47. package/dist/index.js +58 -0
  48. package/{jest.config.js → dist/jest.config.js} +7 -6
  49. package/{partialrings → dist/partialrings}/buffer-manager.js +81 -89
  50. package/dist/partialrings/index.js +41 -0
  51. package/{partialrings → dist/partialrings}/plugin.js +135 -160
  52. package/{partialrings → dist/partialrings}/program.js +204 -242
  53. package/{pin → dist/pin}/pin-object-array.js +305 -381
  54. package/{pin → dist/pin}/pin-point-totem.js +60 -77
  55. package/{point-heat-map → dist/point-heat-map}/adaptors/timetracksplugin-format-to-this.js +66 -78
  56. package/dist/point-heat-map/index.js +1 -0
  57. package/{point-heat-map → dist/point-heat-map}/plugin-webworker.js +126 -151
  58. package/{point-heat-map → dist/point-heat-map}/point-to-heat-map-flow.js +127 -150
  59. package/dist/point-tracks/key-methods.js +5 -0
  60. package/{point-tracks → dist/point-tracks}/plugin.js +338 -394
  61. package/dist/programs/arrowfield/index.js +7 -0
  62. package/{programs → dist/programs}/arrowfield/logic.js +144 -173
  63. package/{programs → dist/programs}/arrowfield/object.js +66 -89
  64. package/{programs → dist/programs}/data2legend/density-to-legend.js +76 -90
  65. package/{programs → dist/programs}/data2legend/point-to-density-texture.js +76 -90
  66. package/dist/programs/float2legendwithratio/index.js +8 -0
  67. package/{programs → dist/programs}/float2legendwithratio/logic.js +122 -145
  68. package/{programs → dist/programs}/float2legendwithratio/object.js +110 -141
  69. package/{programs → dist/programs}/globe-util/is-globe-moved.js +21 -27
  70. package/dist/programs/globeshell/index.js +8 -0
  71. package/dist/programs/globeshell/noise/noises.js +1 -0
  72. package/dist/programs/globeshell/wiggle/index.js +8 -0
  73. package/{programs → dist/programs}/globeshell/wiggle/logic.js +246 -272
  74. package/{programs → dist/programs}/globeshell/wiggle/object.js +72 -93
  75. package/dist/programs/helpers/blender/index.js +1 -0
  76. package/{programs → dist/programs}/helpers/blender/program.js +61 -73
  77. package/dist/programs/helpers/fadeaway/index.js +7 -0
  78. package/{programs → dist/programs}/helpers/fadeaway/logic.js +49 -53
  79. package/dist/programs/helpers/fadeaway/object.js +20 -0
  80. package/dist/programs/helpers/index.js +8 -0
  81. package/dist/programs/index.js +58 -0
  82. package/dist/programs/interface.js +1 -0
  83. package/{programs → dist/programs}/line-on-globe/angled-line.js +125 -155
  84. package/{programs → dist/programs}/line-on-globe/circle-accurate-3d.js +95 -121
  85. package/{programs → dist/programs}/line-on-globe/circle-accurate-flat.js +158 -204
  86. package/{programs → dist/programs}/line-on-globe/circle-accurate.js +117 -141
  87. package/{programs → dist/programs}/line-on-globe/circle.js +111 -135
  88. package/{programs → dist/programs}/line-on-globe/degree-padding-around-circle-3d.js +111 -140
  89. package/dist/programs/line-on-globe/index.js +1 -0
  90. package/{programs → dist/programs}/line-on-globe/lines-color-instanced-flat.js +91 -106
  91. package/{programs/line-on-globe/linestrip.ts → dist/programs/line-on-globe/linestrip.js} +108 -165
  92. package/{programs → dist/programs}/line-on-globe/naive-accurate-flexible.js +127 -171
  93. package/{programs → dist/programs}/line-on-globe/to-the-surface.js +83 -101
  94. package/dist/programs/line-on-globe/util.js +8 -0
  95. package/{programs → dist/programs}/picking/pickable-renderer.js +107 -135
  96. package/{programs → dist/programs}/point-on-globe/element-globe-surface-glow.js +101 -127
  97. package/{programs → dist/programs}/point-on-globe/element-point-glow.js +88 -119
  98. package/{programs → dist/programs}/point-on-globe/square-pixel-point.js +126 -141
  99. package/{programs/programcache.ts → dist/programs/programcache.js} +131 -131
  100. package/{programs → dist/programs}/rings/distancering/circleflatprogram.js +115 -95
  101. package/{programs → dist/programs}/rings/distancering/circlepaddingfreeangleprogram.js +320 -329
  102. package/{programs → dist/programs}/rings/distancering/circlepaddysharedbuffer.js +357 -420
  103. package/dist/programs/rings/distancering/index.js +14 -0
  104. package/{programs → dist/programs}/rings/distancering/paddyflatprogram.js +120 -94
  105. package/{programs → dist/programs}/rings/distancering/paddyflatprogram2d.js +122 -98
  106. package/{programs → dist/programs}/rings/distancering/paddyflatprogram3d.js +120 -94
  107. package/dist/programs/rings/distancering/shader.js +1 -0
  108. package/dist/programs/rings/index.js +17 -0
  109. package/{programs → dist/programs}/rings/partial-ring/piece-of-pie.js +181 -221
  110. package/{programs → dist/programs}/totems/camerauniformblock.js +147 -184
  111. package/{programs → dist/programs}/totems/canvas-webglobe-info.js +102 -128
  112. package/{programs → dist/programs}/totems/gpu-selection-uniform-block.js +104 -128
  113. package/dist/programs/totems/index.js +40 -0
  114. package/dist/programs/two-d/pixel-circle.js +1 -0
  115. package/{programs → dist/programs}/two-d/pixel-padding-for-compass.js +101 -113
  116. package/{programs → dist/programs}/util.js +17 -20
  117. package/dist/programs/vectorfields/index.js +23 -0
  118. package/{programs → dist/programs}/vectorfields/logics/drawrectangleparticles.js +65 -83
  119. package/dist/programs/vectorfields/logics/index.js +12 -0
  120. package/{programs → dist/programs}/vectorfields/logics/pixelbased.js +84 -103
  121. package/{programs → dist/programs}/vectorfields/logics/ubo.js +55 -56
  122. package/{programs → dist/programs}/vectorfields/pingpongbuffermanager.js +76 -80
  123. package/dist/rangerings/enum.js +5 -0
  124. package/dist/rangerings/index.js +15 -0
  125. package/{rangerings → dist/rangerings}/plugin.js +560 -649
  126. package/{rangerings → dist/rangerings}/rangeringangletext.js +329 -368
  127. package/{rangerings → dist/rangerings}/ring-account.js +117 -129
  128. package/{shaders → dist/shaders}/fragment-toy/firework.js +5 -2
  129. package/{shaders → dist/shaders}/fragment-toy/singularity.js +5 -5
  130. package/{shape-on-terrain/arc/naive/plugin.ts → dist/shape-on-terrain/arc/naive/plugin.js} +252 -304
  131. package/{timetracks → dist/timetracks}/adaptors-line-strip.js +71 -80
  132. package/{timetracks → dist/timetracks}/adaptors.js +122 -133
  133. package/dist/timetracks/index.js +19 -0
  134. package/{timetracks → dist/timetracks}/plugin-line-strip.js +250 -295
  135. package/{timetracks → dist/timetracks}/plugin.js +258 -304
  136. package/{timetracks → dist/timetracks}/program-line-strip.js +416 -493
  137. package/{timetracks → dist/timetracks}/program.js +464 -542
  138. package/{timetracks → dist/timetracks}/programpoint-line-strip.js +101 -122
  139. package/{timetracks → dist/timetracks}/programpoint.js +101 -122
  140. package/{types.ts → dist/types.js} +15 -17
  141. package/{util → dist/util}/account/bufferoffsetmanager.js +179 -209
  142. package/dist/util/account/index.js +23 -0
  143. package/{util/account/single-attribute-buffer-management/buffer-manager.ts → dist/util/account/single-attribute-buffer-management/buffer-manager.js} +108 -119
  144. package/{util/account/single-attribute-buffer-management/buffer-orchestrator.ts → dist/util/account/single-attribute-buffer-management/buffer-orchestrator.js} +150 -173
  145. package/dist/util/account/single-attribute-buffer-management/index.js +9 -0
  146. package/{util/account/single-attribute-buffer-management/object-store.ts → dist/util/account/single-attribute-buffer-management/object-store.js} +51 -65
  147. package/dist/util/account/single-attribute-buffer-management/types.js +2 -0
  148. package/{util → dist/util}/account/util.js +22 -22
  149. package/dist/util/algorithms/index.js +1 -0
  150. package/{util → dist/util}/algorithms/search-binary.js +28 -26
  151. package/dist/util/check/get.js +18 -0
  152. package/dist/util/check/index.js +1 -0
  153. package/dist/util/check/typecheck.js +49 -0
  154. package/{util → dist/util}/geometry/index.js +51 -53
  155. package/{util/gl-util/buffer/attribute-loader.ts → dist/util/gl-util/buffer/attribute-loader.js} +69 -85
  156. package/dist/util/gl-util/buffer/index.js +6 -0
  157. package/dist/util/gl-util/buffer/types.js +1 -0
  158. package/dist/util/gl-util/draw-options/methods.js +38 -0
  159. package/dist/util/gl-util/draw-options/types.js +15 -0
  160. package/{util/gl-util/uniform-block/manager.ts → dist/util/gl-util/uniform-block/manager.js} +156 -187
  161. package/dist/util/gl-util/uniform-block/shader.js +1 -0
  162. package/dist/util/gl-util/uniform-block/types.js +8 -0
  163. package/{util → dist/util}/heatwavedatamanager/datamanager.js +152 -168
  164. package/dist/util/heatwavedatamanager/index.js +10 -0
  165. package/{util → dist/util}/heatwavedatamanager/pointcoordinatesdatacalculator.js +122 -133
  166. package/{util → dist/util}/heatwavedatamanager/pointcoordsmeta.js +20 -22
  167. package/dist/util/index.js +57 -0
  168. package/dist/util/interpolation/index.js +1 -0
  169. package/dist/util/interpolation/timetrack/index.js +5 -0
  170. package/{util → dist/util}/interpolation/timetrack/timetrack-interpolator.js +79 -88
  171. package/{util → dist/util}/interpolation/timetrack/web-worker-str.js +5 -2
  172. package/{util → dist/util}/interpolation/timetrack/web-worker.js +48 -51
  173. package/{util → dist/util}/jshelpers/data-filler.js +20 -19
  174. package/{util → dist/util}/jshelpers/equality.js +20 -17
  175. package/dist/util/jshelpers/index.js +37 -0
  176. package/{util → dist/util}/jshelpers/timefilters.js +32 -32
  177. package/{util → dist/util}/picking/fence.js +46 -46
  178. package/{util → dist/util}/picking/picker-displayer.js +139 -177
  179. package/{util → dist/util}/programs/draw-texture-on-canvas.js +69 -82
  180. package/dist/util/programs/index.js +17 -0
  181. package/{util → dist/util}/programs/shapesonglobe.js +174 -206
  182. package/{util → dist/util}/programs/supersampletotextures.js +103 -132
  183. package/{util → dist/util}/programs/texturetoglobe.js +133 -154
  184. package/{util/shaderfunctions/geometrytransformations.ts → dist/util/shaderfunctions/geometrytransformations.js} +68 -116
  185. package/dist/util/shaderfunctions/index.js +18 -0
  186. package/{util → dist/util}/shaderfunctions/nodata.js +5 -4
  187. package/{util → dist/util}/shaderfunctions/noisefunctions.js +9 -10
  188. package/{util/surface-line-data/arc-bboxes.ts → dist/util/surface-line-data/arc-bboxes.js} +25 -42
  189. package/{util → dist/util}/surface-line-data/arcs-to-cuts.js +50 -74
  190. package/dist/util/surface-line-data/cut-arc.js +1 -0
  191. package/{util/surface-line-data/flow.ts → dist/util/surface-line-data/flow.js} +28 -52
  192. package/dist/util/surface-line-data/rbush-manager.js +1 -0
  193. package/dist/util/surface-line-data/types.js +1 -0
  194. package/dist/util/surface-line-data/web-worker.js +1 -0
  195. package/dist/util/webglobe/gldefaultstates.js +7 -0
  196. package/dist/util/webglobe/index.js +18 -0
  197. package/{util → dist/util}/webglobe/rasteroverlay.js +78 -96
  198. package/{util/webglobjectbuilders.ts → dist/util/webglobjectbuilders.js} +388 -456
  199. package/{util → dist/util}/webglobjectbuilders1.js +237 -271
  200. package/{waveparticles → dist/waveparticles}/adaptor.js +17 -16
  201. package/dist/waveparticles/index.js +10 -0
  202. package/{waveparticles → dist/waveparticles}/plugin.js +266 -313
  203. package/{wind → dist/wind}/imagetovectorfieldandmagnitude.js +35 -39
  204. package/dist/wind/index.js +14 -0
  205. package/{wind → dist/wind}/plugin.js +681 -812
  206. package/{wind → dist/wind}/vectorfieldimage.js +25 -27
  207. package/{write-text → dist/write-text}/attached-text-writer.js +91 -105
  208. package/{write-text → dist/write-text}/context-text.js +98 -125
  209. package/{write-text → dist/write-text}/context-text3.js +155 -178
  210. package/dist/write-text/index.js +5 -0
  211. package/{write-text → dist/write-text}/writer-plugin.js +8 -7
  212. package/package.json +5 -2
  213. package/Math/arc.ts +0 -76
  214. package/Math/constants.ts +0 -11
  215. package/Math/frustum/types.ts +0 -11
  216. package/Math/index.js +0 -0
  217. package/Math/juction/arc-plane.ts +0 -114
  218. package/Math/juction/line-sphere.ts +0 -30
  219. package/Math/line.ts +0 -70
  220. package/Math/matrix4.ts +0 -0
  221. package/Math/plane.ts +0 -86
  222. package/Math/roadmap.md +0 -10
  223. package/Math/types.ts +0 -45
  224. package/Math/utils.js +0 -3
  225. package/algorithms/search-binary.js +0 -14
  226. package/altitude-locator/adaptors.js +0 -0
  227. package/altitude-locator/keymethod.js +0 -0
  228. package/arrowfield/index.js +0 -3
  229. package/bearing-line/index.js +0 -2
  230. package/circle-line-chain/init.js +0 -0
  231. package/circle-line-chain/readme.md +0 -57
  232. package/circle-line-chain/util.js +0 -1
  233. package/compass-rose/index.js +0 -3
  234. package/compassrose/index.js +0 -2
  235. package/depth-locator/readme.md +0 -26
  236. package/globe-types.ts +0 -13
  237. package/heatwave/index.js +0 -4
  238. package/partialrings/goals.md +0 -17
  239. package/partialrings/index.js +0 -3
  240. package/point-heat-map/index.js +0 -0
  241. package/point-heat-map/readme.md +0 -15
  242. package/point-tracks/key-methods.js +0 -3
  243. package/programs/arrowfield/index.js +0 -2
  244. package/programs/float2legendwithratio/index.js +0 -3
  245. package/programs/globeshell/index.js +0 -2
  246. package/programs/globeshell/noise/noises.js +0 -0
  247. package/programs/globeshell/wiggle/index.js +0 -6
  248. package/programs/helpers/blender/index.js +0 -0
  249. package/programs/helpers/fadeaway/index.js +0 -3
  250. package/programs/helpers/fadeaway/object.js +0 -20
  251. package/programs/helpers/index.js +0 -2
  252. package/programs/index.js +0 -21
  253. package/programs/interface.ts +0 -7
  254. package/programs/line-on-globe/index.js +0 -0
  255. package/programs/line-on-globe/util.js +0 -8
  256. package/programs/rings/distancering/index.js +0 -5
  257. package/programs/rings/distancering/shader.js +0 -0
  258. package/programs/rings/index.js +0 -1
  259. package/programs/totems/camerauniformblock.d.ts +0 -48
  260. package/programs/totems/index.ts +0 -2
  261. package/programs/two-d/pixel-circle.js +0 -0
  262. package/programs/vectorfields/index.js +0 -3
  263. package/programs/vectorfields/logics/index.js +0 -5
  264. package/publish.bat +0 -60
  265. package/rangerings/enum.js +0 -3
  266. package/rangerings/index.js +0 -5
  267. package/shape-on-terrain/goal.md +0 -12
  268. package/tests/Math/junction/arc-plane.test.ts +0 -133
  269. package/tests/Math/junction/plane-plane.test.ts +0 -82
  270. package/tests/Math/plane.test.ts +0 -43
  271. package/tests/Math/vec3.test.ts +0 -14
  272. package/timetracks/index.js +0 -6
  273. package/timetracks/readme.md +0 -1
  274. package/tsconfig.json +0 -22
  275. package/util/account/index.js +0 -6
  276. package/util/account/single-attribute-buffer-management/index.ts +0 -13
  277. package/util/account/single-attribute-buffer-management/types.ts +0 -39
  278. package/util/algorithms/index.js +0 -0
  279. package/util/check/get.js +0 -13
  280. package/util/check/index.js +0 -0
  281. package/util/check/typecheck.js +0 -39
  282. package/util/gl-util/buffer/index.ts +0 -6
  283. package/util/gl-util/buffer/types.ts +0 -13
  284. package/util/gl-util/draw-options/methods.ts +0 -66
  285. package/util/gl-util/draw-options/types.ts +0 -28
  286. package/util/gl-util/uniform-block/roadmap.md +0 -70
  287. package/util/gl-util/uniform-block/shader.js +0 -0
  288. package/util/gl-util/uniform-block/types.ts +0 -27
  289. package/util/heatwavedatamanager/index.js +0 -3
  290. package/util/index.js +0 -13
  291. package/util/interpolation/index.js +0 -0
  292. package/util/interpolation/timetrack/index.js +0 -9
  293. package/util/jshelpers/index.js +0 -1
  294. package/util/programs/index.js +0 -1
  295. package/util/shaderfunctions/index.js +0 -2
  296. package/util/surface-line-data/cut-arc.js +0 -0
  297. package/util/surface-line-data/rbush-manager.js +0 -0
  298. package/util/surface-line-data/types.ts +0 -27
  299. package/util/surface-line-data/web-worker.js +0 -0
  300. package/util/webglobe/gldefaultstates.js +0 -5
  301. package/util/webglobe/index.js +0 -2
  302. package/waveparticles/index.js +0 -3
  303. package/wind/index.js +0 -5
  304. package/write-text/index.js +0 -1
@@ -1,13 +1,14 @@
1
- import { createProgram } from "../../util";
2
- import { CameraUniformBlockTotemCache, CameraUniformBlockString } from "../totems";
3
- import { mercatorXYToGLPosition, cartesian3DToGLPosition } from "../../util/shaderfunctions/geometrytransformations";
4
- import { noRegisterGlobeProgramCache } from "../programcache";
5
-
6
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PointOnGlobeProgramCache = void 0;
4
+ const util_1 = require("../../util");
5
+ const totems_1 = require("../totems");
6
+ const geometrytransformations_1 = require("../../util/shaderfunctions/geometrytransformations");
7
+ const programcache_1 = require("../programcache");
7
8
  const vs = `#version 300 es
8
- ${CameraUniformBlockString}
9
- ${mercatorXYToGLPosition}
10
- ${cartesian3DToGLPosition}
9
+ ${totems_1.CameraUniformBlockString}
10
+ ${geometrytransformations_1.mercatorXYToGLPosition}
11
+ ${geometrytransformations_1.cartesian3DToGLPosition}
11
12
  precision highp float;
12
13
  precision highp int;
13
14
 
@@ -40,8 +41,7 @@ void main() {
40
41
  }
41
42
  v_rgba = rgba;
42
43
  vVertexID = gl_VertexID;
43
- }`;
44
-
44
+ }`;
45
45
  const fs = `#version 300 es
46
46
  precision highp float;
47
47
 
@@ -57,133 +57,118 @@ void main() {
57
57
  vertexID = vVertexID;
58
58
  fragColor = v_rgba;
59
59
  fragColor.a *= opacity;
60
- }`;
61
-
62
-
63
- class PointOnGlobeProgram {
64
-
65
- constructor(globe) {
66
-
67
- this.globe = globe;
68
- this.gl = globe.gl;
69
-
70
- this.program = createProgram(this.gl, vs, fs);
71
-
72
- const { gl, program } = this;
73
-
74
-
75
- this.uniforms = {
76
- opacity: gl.getUniformLocation(program, "opacity"),
77
- hovered_vertexID: gl.getUniformLocation(program, "hovered_vertexID"),
78
- hoveredPointSize: gl.getUniformLocation(program, "hoveredPointSize"),
79
- pointSize: gl.getUniformLocation(program, "pointSize"),
80
- }
81
-
82
- // eslint-disable-next-line
83
- { // assign opacity
84
- this._lastOpacity = 1.0;
85
- this._lastPointSize = 2.0;
86
- this._lastHoveredPointSize = 4.0;
87
- this._lastHoveredID = -1;
88
- const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
89
- gl.useProgram(program);
90
- gl.uniform1f(this.uniforms.opacity, this._lastOpacity);
91
- gl.uniform1f(this.uniforms.pointSize, this._lastPointSize);
92
- gl.uniform1f(this.uniforms.hoveredPointSize, this._lastHoveredPointSize);
93
- gl.uniform1i(this.uniforms.hovered_vertexID, this._lastHoveredID);
94
- gl.useProgram(currentProgram);
95
- }
96
- // eslint-disable-next-line
97
- { // assign attribute locations
98
- gl.bindAttribLocation(program, 0, "pos3D");
99
- gl.bindAttribLocation(program, 1, "pos2D");
100
- gl.bindAttribLocation(program, 2, "rgba");
101
- }
102
- // eslint-disable-next-line
103
- { // arrange camera uniform block
104
- this.cameraBlockBingingPoint = 0;
105
- this.cameraBlockTotem = CameraUniformBlockTotemCache.get(globe);
106
- const cameraBlockIndex = gl.getUniformBlockIndex(program, "CameraUniformBlock");
107
- gl.uniformBlockBinding(program, cameraBlockIndex, this.cameraBlockBingingPoint);
108
- }
109
- }
110
-
111
-
112
- createVAO(pos3DBuffer, pos2DBuffer, rgbaBuffer) {
113
- const { gl } = this;
114
- const vao = gl.createVertexArray();
115
- gl.bindVertexArray(vao);
116
- // eslint-disable-next-line
117
- {
118
- gl.bindBuffer(gl.ARRAY_BUFFER, pos3DBuffer);
119
- gl.enableVertexAttribArray(0);
120
- gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0);
121
- }
122
- // eslint-disable-next-line
123
- {
124
- gl.bindBuffer(gl.ARRAY_BUFFER, pos2DBuffer);
125
- gl.enableVertexAttribArray(1);
126
- gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 0, 0);
127
- }
128
- // eslint-disable-next-line
129
- {
130
- gl.bindBuffer(gl.ARRAY_BUFFER, rgbaBuffer);
131
- gl.enableVertexAttribArray(2);
132
- gl.vertexAttribPointer(2, 4, gl.FLOAT, false, 0, 0);
133
- }
134
-
135
- gl.bindVertexArray(null);
136
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
137
- return vao;
138
- }
139
-
140
-
141
- draw(vao, length, { opacity = 1.0, hoveredID = -1, pointSize = 2.0, hoveredPointSize = 4.0, elementBuffer = null } = {}) {
142
- if (length === 0 || opacity === 0) return;
143
- const { gl, program, uniforms } = this;
144
- gl.useProgram(program);
145
- if (this._lastOpacity !== opacity) {
146
- gl.uniform1f(uniforms.opacity, opacity);
147
- this._lastOpacity = opacity;
148
- }
149
- if (this._lastPointSize !== pointSize) {
150
- gl.uniform1f(uniforms.pointSize, pointSize);
151
- this._lastPointSize = pointSize;
152
- }
153
- if (this._lastHoveredPointSize !== hoveredPointSize) {
154
- gl.uniform1f(uniforms.hoveredPointSize, hoveredPointSize);
155
- this._lastHoveredPointSize = hoveredPointSize;
156
- }
157
- if (this._lastHoveredID !== hoveredID) {
158
- gl.uniform1i(uniforms.hovered_vertexID, hoveredID);
159
- this._lastHoveredID = hoveredID;
160
- }
161
- gl.bindVertexArray(vao);
162
- this.cameraBlockTotem.bind(this.cameraBlockBingingPoint);
163
- if (elementBuffer) {
164
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, elementBuffer);
165
- gl.drawElements(gl.POINTS, length, gl.UNSIGNED_INT, 0);
166
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
167
- } else {
168
- gl.drawArrays(gl.POINTS, 0, length);
169
- }
170
- this.cameraBlockTotem.unbind(this.cameraBlockBingingPoint);
171
- gl.bindVertexArray(null);
172
- }
173
-
174
- free() {
175
- if (this._isFreed) return;
176
- const { gl, globe } = this;
177
- CameraUniformBlockTotemCache.release(globe);
178
- gl.deleteProgram(this.program);
179
- this._isFreed = true;
180
- }
181
- }
182
-
183
-
184
- const PointOnGlobeProgramCache = Object.freeze({
185
- get: (globe) => noRegisterGlobeProgramCache.getProgram(globe, PointOnGlobeProgram),
186
- release: (globe) => noRegisterGlobeProgramCache.releaseProgram(globe, PointOnGlobeProgram)
187
- });
188
-
189
- export { PointOnGlobeProgramCache };
60
+ }`;
61
+ class PointOnGlobeProgram {
62
+ constructor(globe) {
63
+ this.globe = globe;
64
+ this.gl = globe.gl;
65
+ this.program = (0, util_1.createProgram)(this.gl, vs, fs);
66
+ const { gl, program } = this;
67
+ this.uniforms = {
68
+ opacity: gl.getUniformLocation(program, "opacity"),
69
+ hovered_vertexID: gl.getUniformLocation(program, "hovered_vertexID"),
70
+ hoveredPointSize: gl.getUniformLocation(program, "hoveredPointSize"),
71
+ pointSize: gl.getUniformLocation(program, "pointSize"),
72
+ };
73
+ // eslint-disable-next-line
74
+ { // assign opacity
75
+ this._lastOpacity = 1.0;
76
+ this._lastPointSize = 2.0;
77
+ this._lastHoveredPointSize = 4.0;
78
+ this._lastHoveredID = -1;
79
+ const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
80
+ gl.useProgram(program);
81
+ gl.uniform1f(this.uniforms.opacity, this._lastOpacity);
82
+ gl.uniform1f(this.uniforms.pointSize, this._lastPointSize);
83
+ gl.uniform1f(this.uniforms.hoveredPointSize, this._lastHoveredPointSize);
84
+ gl.uniform1i(this.uniforms.hovered_vertexID, this._lastHoveredID);
85
+ gl.useProgram(currentProgram);
86
+ }
87
+ // eslint-disable-next-line
88
+ { // assign attribute locations
89
+ gl.bindAttribLocation(program, 0, "pos3D");
90
+ gl.bindAttribLocation(program, 1, "pos2D");
91
+ gl.bindAttribLocation(program, 2, "rgba");
92
+ }
93
+ // eslint-disable-next-line
94
+ { // arrange camera uniform block
95
+ this.cameraBlockBingingPoint = 0;
96
+ this.cameraBlockTotem = totems_1.CameraUniformBlockTotemCache.get(globe);
97
+ const cameraBlockIndex = gl.getUniformBlockIndex(program, "CameraUniformBlock");
98
+ gl.uniformBlockBinding(program, cameraBlockIndex, this.cameraBlockBingingPoint);
99
+ }
100
+ }
101
+ createVAO(pos3DBuffer, pos2DBuffer, rgbaBuffer) {
102
+ const { gl } = this;
103
+ const vao = gl.createVertexArray();
104
+ gl.bindVertexArray(vao);
105
+ // eslint-disable-next-line
106
+ {
107
+ gl.bindBuffer(gl.ARRAY_BUFFER, pos3DBuffer);
108
+ gl.enableVertexAttribArray(0);
109
+ gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0);
110
+ }
111
+ // eslint-disable-next-line
112
+ {
113
+ gl.bindBuffer(gl.ARRAY_BUFFER, pos2DBuffer);
114
+ gl.enableVertexAttribArray(1);
115
+ gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 0, 0);
116
+ }
117
+ // eslint-disable-next-line
118
+ {
119
+ gl.bindBuffer(gl.ARRAY_BUFFER, rgbaBuffer);
120
+ gl.enableVertexAttribArray(2);
121
+ gl.vertexAttribPointer(2, 4, gl.FLOAT, false, 0, 0);
122
+ }
123
+ gl.bindVertexArray(null);
124
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
125
+ return vao;
126
+ }
127
+ draw(vao, length, { opacity = 1.0, hoveredID = -1, pointSize = 2.0, hoveredPointSize = 4.0, elementBuffer = null } = {}) {
128
+ if (length === 0 || opacity === 0)
129
+ return;
130
+ const { gl, program, uniforms } = this;
131
+ gl.useProgram(program);
132
+ if (this._lastOpacity !== opacity) {
133
+ gl.uniform1f(uniforms.opacity, opacity);
134
+ this._lastOpacity = opacity;
135
+ }
136
+ if (this._lastPointSize !== pointSize) {
137
+ gl.uniform1f(uniforms.pointSize, pointSize);
138
+ this._lastPointSize = pointSize;
139
+ }
140
+ if (this._lastHoveredPointSize !== hoveredPointSize) {
141
+ gl.uniform1f(uniforms.hoveredPointSize, hoveredPointSize);
142
+ this._lastHoveredPointSize = hoveredPointSize;
143
+ }
144
+ if (this._lastHoveredID !== hoveredID) {
145
+ gl.uniform1i(uniforms.hovered_vertexID, hoveredID);
146
+ this._lastHoveredID = hoveredID;
147
+ }
148
+ gl.bindVertexArray(vao);
149
+ this.cameraBlockTotem.bind(this.cameraBlockBingingPoint);
150
+ if (elementBuffer) {
151
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, elementBuffer);
152
+ gl.drawElements(gl.POINTS, length, gl.UNSIGNED_INT, 0);
153
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
154
+ }
155
+ else {
156
+ gl.drawArrays(gl.POINTS, 0, length);
157
+ }
158
+ this.cameraBlockTotem.unbind(this.cameraBlockBingingPoint);
159
+ gl.bindVertexArray(null);
160
+ }
161
+ free() {
162
+ if (this._isFreed)
163
+ return;
164
+ const { gl, globe } = this;
165
+ totems_1.CameraUniformBlockTotemCache.release(globe);
166
+ gl.deleteProgram(this.program);
167
+ this._isFreed = true;
168
+ }
169
+ }
170
+ const PointOnGlobeProgramCache = Object.freeze({
171
+ get: (globe) => programcache_1.noRegisterGlobeProgramCache.getProgram(globe, PointOnGlobeProgram),
172
+ release: (globe) => programcache_1.noRegisterGlobeProgramCache.releaseProgram(globe, PointOnGlobeProgram)
173
+ });
174
+ exports.PointOnGlobeProgramCache = PointOnGlobeProgramCache;
@@ -1,131 +1,131 @@
1
- /**
2
- * @module programcache
3
- * @description This module provides a cache for programs. It is used to avoid creating the same program multiple times.
4
- *
5
- * # globeProgramCache
6
- * Creates and registers programs to the globe. To the 1st object in the draw order.
7
- * The programs are generally sets sets a global uniform block.
8
- *
9
- * # glProgramCache
10
- * Creates and manages programs that are not related to the globe but to the WebGL context.
11
- * The programs created by are lightweight absraction of program logic with `constructer(gl)`.
12
- * These programs are generally wrapped by another class with more functionality.
13
- */
14
-
15
- const globeProgramCache = (function () {
16
-
17
- const cache = new Map();
18
-
19
- function getProgram(globe: any, ProgramClass: any) {
20
- if (!cache.has(globe)) { cache.set(globe, new Map()) };
21
- if (!cache.get(globe).has(ProgramClass)) {
22
- cache.get(globe).set(ProgramClass, {
23
- program: new ProgramClass(),
24
- count: 1
25
- })
26
- const firstObject = globe.DrawOrder.GetObj(0)
27
- globe.api_RegisterPlugin(cache.get(globe).get(ProgramClass).program, firstObject);
28
- } else {
29
- cache.get(globe).get(ProgramClass).count++;
30
- }
31
- return cache.get(globe).get(ProgramClass).program;
32
- };
33
-
34
- function releaseProgram(globe: any, ProgramClass: any) {
35
- if (cache.has(globe) && cache.get(globe).has(ProgramClass)) {
36
- if (cache.get(globe).get(ProgramClass).count === 0) {
37
- throw new Error("The program counter is already 0, cannot release program");
38
- }
39
- cache.get(globe).get(ProgramClass).count--;
40
- if (cache.get(globe).get(ProgramClass).count === 0) {
41
- globe.api_UnRegisterPlugin(cache.get(globe).get(ProgramClass).program.id); // it calls program.free()
42
- cache.get(globe).delete(ProgramClass);
43
- }
44
- }
45
- };
46
-
47
- return Object.freeze({
48
- getProgram,
49
- releaseProgram
50
- });
51
-
52
- })();
53
-
54
-
55
- const glProgramCache = (function () {
56
-
57
- const cache = new Map();
58
-
59
- function getProgram(gl: WebGL2RenderingContext | WebGLRenderingContext, ProgramClass: any) {
60
- if (!cache.has(gl)) { cache.set(gl, new Map()) };
61
- if (!cache.get(gl).has(ProgramClass)) {
62
- cache.get(gl).set(ProgramClass, {
63
- program: new ProgramClass(gl),
64
- count: 1
65
- })
66
- } else {
67
- cache.get(gl).get(ProgramClass).count++;
68
- }
69
- return cache.get(gl).get(ProgramClass).program;
70
- };
71
-
72
- function releaseProgram(gl: WebGL2RenderingContext | WebGLRenderingContext, ProgramClass: any) {
73
- if (cache.has(gl) && cache.get(gl).has(ProgramClass)) {
74
- if (cache.get(gl).get(ProgramClass).count === 0) {
75
- throw new Error("The program counter is already 0, cannot release program");
76
- }
77
- cache.get(gl).get(ProgramClass).count--;
78
- if (cache.get(gl).get(ProgramClass).count === 0) {
79
- cache.get(gl).get(ProgramClass).program.free();
80
- cache.get(gl).delete(ProgramClass);
81
- }
82
- }
83
- };
84
-
85
- return Object.freeze({
86
- getProgram,
87
- releaseProgram
88
- });
89
-
90
- })();
91
-
92
-
93
- const noRegisterGlobeProgramCache = (function () {
94
-
95
- const cache = new Map();
96
-
97
- function getProgram(globe: any, ProgramClass: any) {
98
- if (!cache.has(globe)) { cache.set(globe, new Map()) };
99
- if (!cache.get(globe).has(ProgramClass)) {
100
- cache.get(globe).set(ProgramClass, {
101
- program: new ProgramClass(globe),
102
- count: 1
103
- })
104
- } else {
105
- cache.get(globe).get(ProgramClass).count++;
106
- }
107
- return cache.get(globe).get(ProgramClass).program;
108
- };
109
-
110
- function releaseProgram(globe: any, ProgramClass: any) {
111
- if (cache.has(globe) && cache.get(globe).has(ProgramClass)) {
112
- if (cache.get(globe).get(ProgramClass).count === 0) {
113
- throw new Error("The program counter is already 0, cannot release program");
114
- }
115
- cache.get(globe).get(ProgramClass).count--;
116
- if (cache.get(globe).get(ProgramClass).count === 0) {
117
- cache.get(globe).get(ProgramClass).program.free();
118
- cache.get(globe).delete(ProgramClass);
119
- }
120
- }
121
- }
122
-
123
-
124
- return Object.freeze({
125
- getProgram,
126
- releaseProgram
127
- });
128
-
129
- })();
130
-
131
- export { globeProgramCache, glProgramCache, noRegisterGlobeProgramCache };
1
+ "use strict";
2
+ /**
3
+ * @module programcache
4
+ * @description This module provides a cache for programs. It is used to avoid creating the same program multiple times.
5
+ *
6
+ * # globeProgramCache
7
+ * Creates and registers programs to the globe. To the 1st object in the draw order.
8
+ * The programs are generally sets sets a global uniform block.
9
+ *
10
+ * # glProgramCache
11
+ * Creates and manages programs that are not related to the globe but to the WebGL context.
12
+ * The programs created by are lightweight absraction of program logic with `constructer(gl)`.
13
+ * These programs are generally wrapped by another class with more functionality.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.noRegisterGlobeProgramCache = exports.glProgramCache = exports.globeProgramCache = void 0;
17
+ const globeProgramCache = (function () {
18
+ const cache = new Map();
19
+ function getProgram(globe, ProgramClass) {
20
+ if (!cache.has(globe)) {
21
+ cache.set(globe, new Map());
22
+ }
23
+ ;
24
+ if (!cache.get(globe).has(ProgramClass)) {
25
+ cache.get(globe).set(ProgramClass, {
26
+ program: new ProgramClass(),
27
+ count: 1
28
+ });
29
+ const firstObject = globe.DrawOrder.GetObj(0);
30
+ globe.api_RegisterPlugin(cache.get(globe).get(ProgramClass).program, firstObject);
31
+ }
32
+ else {
33
+ cache.get(globe).get(ProgramClass).count++;
34
+ }
35
+ return cache.get(globe).get(ProgramClass).program;
36
+ }
37
+ ;
38
+ function releaseProgram(globe, ProgramClass) {
39
+ if (cache.has(globe) && cache.get(globe).has(ProgramClass)) {
40
+ if (cache.get(globe).get(ProgramClass).count === 0) {
41
+ throw new Error("The program counter is already 0, cannot release program");
42
+ }
43
+ cache.get(globe).get(ProgramClass).count--;
44
+ if (cache.get(globe).get(ProgramClass).count === 0) {
45
+ globe.api_UnRegisterPlugin(cache.get(globe).get(ProgramClass).program.id); // it calls program.free()
46
+ cache.get(globe).delete(ProgramClass);
47
+ }
48
+ }
49
+ }
50
+ ;
51
+ return Object.freeze({
52
+ getProgram,
53
+ releaseProgram
54
+ });
55
+ })();
56
+ exports.globeProgramCache = globeProgramCache;
57
+ const glProgramCache = (function () {
58
+ const cache = new Map();
59
+ function getProgram(gl, ProgramClass) {
60
+ if (!cache.has(gl)) {
61
+ cache.set(gl, new Map());
62
+ }
63
+ ;
64
+ if (!cache.get(gl).has(ProgramClass)) {
65
+ cache.get(gl).set(ProgramClass, {
66
+ program: new ProgramClass(gl),
67
+ count: 1
68
+ });
69
+ }
70
+ else {
71
+ cache.get(gl).get(ProgramClass).count++;
72
+ }
73
+ return cache.get(gl).get(ProgramClass).program;
74
+ }
75
+ ;
76
+ function releaseProgram(gl, ProgramClass) {
77
+ if (cache.has(gl) && cache.get(gl).has(ProgramClass)) {
78
+ if (cache.get(gl).get(ProgramClass).count === 0) {
79
+ throw new Error("The program counter is already 0, cannot release program");
80
+ }
81
+ cache.get(gl).get(ProgramClass).count--;
82
+ if (cache.get(gl).get(ProgramClass).count === 0) {
83
+ cache.get(gl).get(ProgramClass).program.free();
84
+ cache.get(gl).delete(ProgramClass);
85
+ }
86
+ }
87
+ }
88
+ ;
89
+ return Object.freeze({
90
+ getProgram,
91
+ releaseProgram
92
+ });
93
+ })();
94
+ exports.glProgramCache = glProgramCache;
95
+ const noRegisterGlobeProgramCache = (function () {
96
+ const cache = new Map();
97
+ function getProgram(globe, ProgramClass) {
98
+ if (!cache.has(globe)) {
99
+ cache.set(globe, new Map());
100
+ }
101
+ ;
102
+ if (!cache.get(globe).has(ProgramClass)) {
103
+ cache.get(globe).set(ProgramClass, {
104
+ program: new ProgramClass(globe),
105
+ count: 1
106
+ });
107
+ }
108
+ else {
109
+ cache.get(globe).get(ProgramClass).count++;
110
+ }
111
+ return cache.get(globe).get(ProgramClass).program;
112
+ }
113
+ ;
114
+ function releaseProgram(globe, ProgramClass) {
115
+ if (cache.has(globe) && cache.get(globe).has(ProgramClass)) {
116
+ if (cache.get(globe).get(ProgramClass).count === 0) {
117
+ throw new Error("The program counter is already 0, cannot release program");
118
+ }
119
+ cache.get(globe).get(ProgramClass).count--;
120
+ if (cache.get(globe).get(ProgramClass).count === 0) {
121
+ cache.get(globe).get(ProgramClass).program.free();
122
+ cache.get(globe).delete(ProgramClass);
123
+ }
124
+ }
125
+ }
126
+ return Object.freeze({
127
+ getProgram,
128
+ releaseProgram
129
+ });
130
+ })();
131
+ exports.noRegisterGlobeProgramCache = noRegisterGlobeProgramCache;