@pirireis/webglobeplugins 0.16.7 → 0.17.1

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 (159) hide show
  1. package/Math/angle-calculation.js +1 -0
  2. package/Math/contour/quadtreecontours.js +300 -0
  3. package/Math/finite-line-2d.js +58 -0
  4. package/Math/methods.js +6 -0
  5. package/Math/tessellation/hybrid-triangle-tessellation-meta.js +123 -0
  6. package/Math/tessellation/tile-merger.js +298 -0
  7. package/Math/tessellation/triangle-tessellation-meta.js +195 -42
  8. package/Math/tessellation/triangle-tessellation.js +5 -1
  9. package/compass-rose/compass-text-writer.js +39 -33
  10. package/constants.js +3 -0
  11. package/{util/heatwavedatamanager → heatwave}/datamanager.js +1 -1
  12. package/heatwave/{plugins/heatwaveglobeshell.js → heatwave.js} +8 -6
  13. package/heatwave/index.js +5 -3
  14. package/heatwave/{isobar/plugin.js → isobar.js} +6 -5
  15. package/{util/heatwavedatamanager → heatwave}/texture-point-sampler.js +24 -3
  16. package/investigation-tools/draw/tiles/adapters.js +67 -0
  17. package/investigation-tools/draw/tiles/tiles.js +128 -0
  18. package/package.json +4 -2
  19. package/programs/arrowfield/{object.js → arrow-field.js} +1 -1
  20. package/programs/arrowfield/logic.js +1 -1
  21. package/programs/data2legend/density-to-legend.js +24 -29
  22. package/programs/data2legend/point-to-density-texture.js +14 -17
  23. package/programs/float2legendwithratio/logic.js +2 -2
  24. package/programs/float2legendwithratio/object.js +1 -1
  25. package/programs/helpers/{blender/program.js → blender.js} +1 -1
  26. package/programs/helpers/{fadeaway/logic.js → fadeaway.js} +11 -2
  27. package/programs/index.js +20 -9
  28. package/programs/line-on-globe/circle-accurate-3d.js +12 -14
  29. package/programs/line-on-globe/circle-accurate-flat.js +0 -1
  30. package/programs/line-on-globe/degree-padding-around-circle-3d.js +13 -15
  31. package/programs/line-on-globe/lines-color-instanced-flat.js +15 -18
  32. package/programs/line-on-globe/naive-accurate-flexible.js +0 -1
  33. package/programs/picking/pickable-polygon-renderer.js +1 -1
  34. package/programs/picking/pickable-renderer.js +2 -2
  35. package/programs/point-on-globe/element-globe-surface-glow.js +2 -2
  36. package/programs/point-on-globe/element-point-glow.js +1 -1
  37. package/programs/point-on-globe/square-pixel-point.js +1 -1
  38. package/programs/polygon-on-globe/texture-dem-triangle-test-plugin-triangle.js +180 -30
  39. package/programs/polygon-on-globe/texture-dem-triangles.js +93 -34
  40. package/programs/rings/partial-ring/piece-of-pie.js +26 -29
  41. package/programs/totems/camerauniformblock.js +31 -42
  42. package/programs/two-d/pixel-padding-for-compass.js +14 -24
  43. package/programs/vectorfields/logics/drawrectangleparticles.js +9 -8
  44. package/programs/vectorfields/logics/drawrectangleparticles1.js +112 -0
  45. package/programs/vectorfields/logics/pixelbased.js +1 -2
  46. package/programs/vectorfields/pingpongbuffermanager.js +1 -1
  47. package/range-tools-on-terrain/bearing-line/adapters.js +1 -1
  48. package/range-tools-on-terrain/circle-line-chain/adapters.js +0 -5
  49. package/range-tools-on-terrain/circle-line-chain/plugin.js +1 -1
  50. package/range-tools-on-terrain/range-ring/plugin.js +4 -6
  51. package/semiplugins/lightweight/line-plugin.js +0 -1
  52. package/semiplugins/shape-on-terrain/arc-plugin.js +9 -2
  53. package/semiplugins/shape-on-terrain/circle-plugin.js +2 -2
  54. package/semiplugins/shape-on-terrain/padding-1-degree.js +1 -1
  55. package/semiplugins/shell/bbox-renderer/index.js +2 -0
  56. package/{programs/globeshell/wiggle → semiplugins/shell/bbox-renderer}/logic.js +101 -102
  57. package/{programs/globeshell/wiggle → semiplugins/shell/bbox-renderer}/object.js +6 -7
  58. package/semiplugins/utility/container-plugin.js +94 -0
  59. package/semiplugins/utility/object-pass-container-plugin.js +80 -0
  60. package/{point-heat-map → tracks/point-heat-map}/adaptors/timetracksplugin-format-to-this.js +1 -1
  61. package/{point-heat-map → tracks/point-heat-map}/plugin-webworker.js +3 -3
  62. package/{point-heat-map → tracks/point-heat-map}/point-to-heat-map-flow.js +11 -14
  63. package/{point-tracks → tracks/point-tracks}/plugin.js +6 -5
  64. package/{timetracks → tracks/timetracks}/adaptors-line-strip.js +1 -1
  65. package/{timetracks → tracks/timetracks}/program-line-strip.js +49 -49
  66. package/{timetracks → tracks/timetracks}/programpoint-line-strip.js +16 -13
  67. package/types.js +6 -0
  68. package/util/account/bufferoffsetmanager.js +1 -1
  69. package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +9 -95
  70. package/util/gl-util/uniform-block/manager.js +0 -1
  71. package/util/gl-util/uniform-block/types.js +0 -7
  72. package/util/index.js +10 -13
  73. package/util/picking/fence.js +16 -18
  74. package/util/picking/picker-displayer.js +6 -8
  75. package/util/programs/{shapesonglobe.js → draw-from-pixel-coords.js} +4 -7
  76. package/util/programs/draw-texture-on-canvas.js +1 -1
  77. package/util/programs/texturetoglobe.js +3 -3
  78. package/util/shaderfunctions/geometrytransformations.js +1 -1
  79. package/vectorfield/arrowfield/index.js +3 -0
  80. package/{arrowfield → vectorfield/arrowfield}/plugin.js +2 -2
  81. package/{waveparticles → vectorfield/waveparticles}/plugin.js +12 -12
  82. package/{wind → vectorfield/wind}/index.js +1 -1
  83. package/{wind → vectorfield/wind}/plugin.js +65 -51
  84. package/write-text/context-text3.js +0 -1
  85. package/write-text/context-text4.js +2 -1
  86. package/write-text/objectarraylabels/index.js +2 -0
  87. package/Math/tessellation/tessellation-algorithm.js +0 -67
  88. package/arrowfield/index.js +0 -3
  89. package/bearing-line/index.js +0 -2
  90. package/bearing-line/plugin.js +0 -444
  91. package/circle-line-chain/chain-list-map.js +0 -201
  92. package/circle-line-chain/init.js +0 -1
  93. package/circle-line-chain/plugin.js +0 -411
  94. package/circle-line-chain/util.js +0 -1
  95. package/compassrose/compassrose.js +0 -293
  96. package/compassrose/index.js +0 -2
  97. package/index.js +0 -12
  98. package/partialrings/buffer-manager.js +0 -75
  99. package/partialrings/index.js +0 -2
  100. package/partialrings/plugin.js +0 -128
  101. package/partialrings/program.js +0 -279
  102. package/programs/arrowfield/index.js +0 -2
  103. package/programs/globe-util/is-globe-moved.js +0 -19
  104. package/programs/globeshell/index.js +0 -2
  105. package/programs/globeshell/wiggle/index.js +0 -2
  106. package/programs/helpers/blender/index.js +0 -1
  107. package/programs/helpers/fadeaway/index.js +0 -2
  108. package/programs/helpers/fadeaway/object.js +0 -14
  109. package/programs/helpers/index.js +0 -2
  110. package/programs/polygon-on-globe/texture-dem-triangle-test-plugin.js +0 -118
  111. package/programs/rings/distancering/circleflatprogram.js +0 -116
  112. package/programs/rings/distancering/circlepaddingfreeangleprogram.js +0 -326
  113. package/programs/rings/distancering/circlepaddysharedbuffer.js +0 -368
  114. package/programs/rings/distancering/index.js +0 -6
  115. package/programs/rings/distancering/paddyflatprogram.js +0 -127
  116. package/programs/rings/distancering/paddyflatprogram2d.js +0 -129
  117. package/programs/rings/distancering/paddyflatprogram3d.js +0 -128
  118. package/programs/two-d/pixel-circle.js +0 -1
  119. package/programs/vectorfields/index.js +0 -3
  120. package/rangerings/enum.js +0 -2
  121. package/rangerings/index.js +0 -5
  122. package/rangerings/plugin.js +0 -543
  123. package/rangerings/rangeringangletext.js +0 -326
  124. package/rangerings/ring-account.js +0 -112
  125. package/timetracks/index.js +0 -1
  126. package/util/build-strategy/general-strategy.js +0 -62
  127. package/util/gl-util/uniform-block/shader.js +0 -1
  128. package/util/heatwavedatamanager/index.js +0 -2
  129. package/util/heatwavedatamanager/pointcoordsmeta.js +0 -22
  130. package/util/jshelpers/data-filler.js +0 -17
  131. package/util/jshelpers/equality.js +0 -18
  132. package/util/jshelpers/index.js +0 -2
  133. package/util/jshelpers/timefilters.js +0 -30
  134. package/util/programs/index.js +0 -1
  135. package/util/surface-line-data/arc-bboxes.js +0 -25
  136. package/util/surface-line-data/arcs-to-cuts.js +0 -50
  137. package/util/surface-line-data/cut-arc.js +0 -1
  138. package/util/surface-line-data/flow.js +0 -28
  139. package/util/surface-line-data/rbush-manager.js +0 -1
  140. package/util/surface-line-data/types.js +0 -1
  141. package/util/surface-line-data/web-worker.js +0 -1
  142. package/util/webglobe/rasteroverlay.js +0 -75
  143. package/write-text/attached-text-writer.js +0 -87
  144. package/write-text/context-text3old.js +0 -152
  145. package/write-text/index.js +0 -1
  146. package/write-text/writer-plugin.js +0 -8
  147. /package/{heatwave/isobar/quadtreecontours.js → Math/contour/quadtreecontours1.js} +0 -0
  148. /package/pin/{pin-object-array.js → pin-object-array1.js} +0 -0
  149. /package/pin/{pin-point-totem.js → pin-point-totem1.js} +0 -0
  150. /package/{point-heat-map → tracks/point-heat-map}/index.js +0 -0
  151. /package/{point-tracks → tracks/point-tracks}/key-methods.js +0 -0
  152. /package/{timetracks → tracks/timetracks}/plugin-line-strip.js +0 -0
  153. /package/{arrowfield → vectorfield/arrowfield}/adaptor.js +0 -0
  154. /package/{waveparticles → vectorfield/waveparticles}/adaptor.js +0 -0
  155. /package/{waveparticles → vectorfield/waveparticles}/index.js +0 -0
  156. /package/{wind → vectorfield/wind}/imagetovectorfieldandmagnitude.js +0 -0
  157. /package/{wind → vectorfield/wind}/vectorfieldimage.js +0 -0
  158. /package/write-text/{context-text.js → context-textDELETE.js} +0 -0
  159. /package/{heatwave/isobar → write-text/objectarraylabels}/objectarraylabels.js +0 -0
@@ -1,7 +1,7 @@
1
- import { densityToLegendProgramCache } from "../programs/data2legend/density-to-legend";
2
- import { pointToDensityTextureCache } from "../programs/data2legend/point-to-density-texture";
3
- // import { textureOnCanvasProgramCache } from "../util/programs/draw-texture-on-canvas";
4
- import { defaultblendfunction } from "../util/webglobe/gldefaultstates";
1
+ import { densityToLegendProgramCache } from "../../programs/data2legend/density-to-legend";
2
+ import { pointToDensityTextureCache } from "../../programs/data2legend/point-to-density-texture";
3
+ // import { textureOnCanvasProgramCache } from "../../util/programs/draw-texture-on-canvas";
4
+ import { defaultblendfunction } from "../../util/webglobe/gldefaultstates";
5
5
  class PointHeatmapFlow {
6
6
  constructor(globe) {
7
7
  this.globe = null;
@@ -15,16 +15,13 @@ class PointHeatmapFlow {
15
15
  // this.testTextureProgram = textureOnCanvasProgramCache.get(globe.gl);
16
16
  this._lookInfo = globe.api_GetCurrentLookInfo();
17
17
  const { gl } = this;
18
- {
19
- this.buffer = gl.createBuffer();
20
- this.vao2D = this.pointToDensityProgram.createVAO(this.buffer, 2);
21
- this.vao3D = this.pointToDensityProgram.createVAO(this.buffer, 3);
22
- }
23
- { // framebuffer and texture
24
- this.framebuffer = gl.createFramebuffer();
25
- this.densityTexture = this._createDensityTexture();
26
- this._bindTextureToFramebuffer();
27
- }
18
+ this.buffer = gl.createBuffer();
19
+ this.vao2D = this.pointToDensityProgram.createVAO(this.buffer, 2);
20
+ this.vao3D = this.pointToDensityProgram.createVAO(this.buffer, 3);
21
+ // framebuffer and texture
22
+ this.framebuffer = gl.createFramebuffer();
23
+ this.densityTexture = this._createDensityTexture();
24
+ this._bindTextureToFramebuffer();
28
25
  }
29
26
  _bindTextureToFramebuffer() {
30
27
  const { gl, densityTexture, framebuffer } = this;
@@ -1,7 +1,8 @@
1
- import { BufferOrchestrator, BufferManager, ObjectStore } from "../util/account/index";
2
- import { PickerDisplayer } from "../util/picking/picker-displayer";
3
- import { PointOnGlobeProgramCache } from "../programs/point-on-globe/square-pixel-point";
4
- import { wgs84ToCartesian3d, wgs84ToMercator } from "../Math/methods";
1
+ import { BufferOrchestrator, BufferManager, ObjectStore } from "../../util/account/index";
2
+ import { PickerDisplayer } from "../../util/picking/picker-displayer";
3
+ import { PointOnGlobeProgramCache } from "../../programs/point-on-globe/square-pixel-point";
4
+ import { defaultblendfunction } from "../../util/webglobe/gldefaultstates";
5
+ import { wgs84ToCartesian3d, wgs84ToMercator } from "../../Math/methods";
5
6
  const _0vec3 = /* @__PURE__ */ [0, 0, 0];
6
7
  /**
7
8
  * @typedef {number} long
@@ -347,7 +348,7 @@ class PointTracksPlugin {
347
348
  const key = keyMethod(trackID, pointID);
348
349
  const index = this._bufferOrchestrator.offsetMap.get(key);
349
350
  if (index === undefined) {
350
- throw new Error;
351
+ throw new Error(`Point with key ${key} not found in buffer orchestrator.`);
351
352
  }
352
353
  indexes.push(index);
353
354
  length++;
@@ -1,4 +1,4 @@
1
- import { latLongToPixelXY } from "../util";
1
+ import { latLongToPixelXY } from "../util/geometry/index";
2
2
  /**
3
3
  * @param {Array.<Array.<number>>} coordinates
4
4
  * @param {Array.<number>} timestamps
@@ -1,7 +1,10 @@
1
1
  /**
2
2
  * Author: Toprak Nihat Deniz Ozturk
3
3
  */
4
- import { createProgram, defaultblendfunction, shaderfunctions } from "../util";
4
+ // import { createProgram, defaultblendfunction, shaderfunctions } from "../../util";
5
+ import { createProgram } from "../../util/webglobjectbuilders";
6
+ import { defaultblendfunction } from "../../util/webglobe/gldefaultstates";
7
+ import { pixelXYToCartesian2DPoint, pixelXYToCartesian3DPoint, } from "../../util/shaderfunctions";
5
8
  export default class TrackGlowLineProgram {
6
9
  /**
7
10
  * @param {WebGL2RenderingContext} gl
@@ -398,8 +401,8 @@ out float v_time;
398
401
  out vec3 v_color;
399
402
  out float v_track_start_time;
400
403
  out float v_track_end_time;
401
- ${shaderfunctions.pixelXYToCartesian3DPoint}
402
- ${shaderfunctions.pixelXYToCartesian2DPoint}
404
+ ${pixelXYToCartesian3DPoint}
405
+ ${pixelXYToCartesian2DPoint}
403
406
 
404
407
  void main() {
405
408
 
@@ -535,56 +538,53 @@ void main() {
535
538
  this._resetTexture();
536
539
  gl.enable(gl.BLEND);
537
540
  gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
538
- { // draw lines
539
- gl.bindFramebuffer(gl.FRAMEBUFFER, this._frameBuffer);
540
- gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this._middleTexture, 0);
541
- gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT1, gl.TEXTURE_2D, this._blurTextures[0], 0);
542
- gl.drawBuffers([
543
- gl.COLOR_ATTACHMENT0,
544
- gl.COLOR_ATTACHMENT1,
545
- ]);
546
- gl.useProgram(_lineProgram.program);
547
- gl.uniform1f(_lineProgram.u_head_time, u_head_time);
548
- gl.uniform1f(_lineProgram.u_tail_time, u_tail_time);
549
- gl.uniformMatrix4fv(_lineProgram.uProjectionMatrix, false, uProjectionMatrix);
550
- if (u_mapWH) {
551
- gl.uniform2fv(_lineProgram.u_mapWH, u_mapWH);
552
- }
553
- else {
554
- gl.uniformMatrix4fv(_lineProgram.uModelViewMatrix, false, uModelViewMatrix);
555
- }
556
- gl.uniform3fv(_lineProgram.uTranslate, uTranslate);
557
- gl.bindVertexArray(_lineProgram.vao);
558
- gl.drawArrays(gl.LINE_STRIP, 0, this._totalLength);
559
- gl.drawBuffers([
560
- gl.COLOR_ATTACHMENT0,
561
- gl.NONE
562
- ]);
541
+ // draw lines
542
+ gl.bindFramebuffer(gl.FRAMEBUFFER, this._frameBuffer);
543
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this._middleTexture, 0);
544
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT1, gl.TEXTURE_2D, this._blurTextures[0], 0);
545
+ gl.drawBuffers([
546
+ gl.COLOR_ATTACHMENT0,
547
+ gl.COLOR_ATTACHMENT1,
548
+ ]);
549
+ gl.useProgram(_lineProgram.program);
550
+ gl.uniform1f(_lineProgram.u_head_time, u_head_time);
551
+ gl.uniform1f(_lineProgram.u_tail_time, u_tail_time);
552
+ gl.uniformMatrix4fv(_lineProgram.uProjectionMatrix, false, uProjectionMatrix);
553
+ if (u_mapWH) {
554
+ gl.uniform2fv(_lineProgram.u_mapWH, u_mapWH);
563
555
  }
564
- { // blur ping pong
565
- gl.useProgram(_blurProgram.program);
566
- gl.bindVertexArray(_blurProgram.vao);
567
- for (let i = 0; i < _blurRepetition * 2; i++) {
568
- gl.bindFramebuffer(gl.FRAMEBUFFER, this._blurFrameBuffers[i % 2]);
569
- gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this._blurTextures[(i + 1) % 2], 0);
570
- gl.bindTexture(gl.TEXTURE_2D, this._blurTextures[i % 2]);
571
- gl.uniform1i(_blurProgram.u_texture, 0);
572
- gl.uniform1f(_blurProgram.u_horizontal, i % 2 == 0);
573
- gl.drawArrays(gl.TRIANGLES, 0, 6);
574
- }
556
+ else {
557
+ gl.uniformMatrix4fv(_lineProgram.uModelViewMatrix, false, uModelViewMatrix);
575
558
  }
576
- { // combine
577
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
578
- gl.useProgram(this._combineProgram.program);
579
- gl.bindVertexArray(this._combineProgram.vao);
580
- gl.activeTexture(gl.TEXTURE1);
581
- gl.bindTexture(gl.TEXTURE_2D, this._blurTextures[1]);
582
- gl.uniform1i(this._combineProgram.u_bloom_texture, 1);
583
- gl.activeTexture(gl.TEXTURE0);
584
- gl.bindTexture(gl.TEXTURE_2D, this._middleTexture);
585
- gl.uniform1i(this._combineProgram.u_main_texture, 0);
559
+ gl.uniform3fv(_lineProgram.uTranslate, uTranslate);
560
+ gl.bindVertexArray(_lineProgram.vao);
561
+ gl.drawArrays(gl.LINE_STRIP, 0, this._totalLength);
562
+ gl.drawBuffers([
563
+ gl.COLOR_ATTACHMENT0,
564
+ gl.NONE
565
+ ]);
566
+ // blur ping pong
567
+ gl.useProgram(_blurProgram.program);
568
+ gl.bindVertexArray(_blurProgram.vao);
569
+ for (let i = 0; i < _blurRepetition * 2; i++) {
570
+ gl.bindFramebuffer(gl.FRAMEBUFFER, this._blurFrameBuffers[i % 2]);
571
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this._blurTextures[(i + 1) % 2], 0);
572
+ gl.bindTexture(gl.TEXTURE_2D, this._blurTextures[i % 2]);
573
+ gl.uniform1i(_blurProgram.u_texture, 0);
574
+ gl.uniform1f(_blurProgram.u_horizontal, i % 2 === 0);
586
575
  gl.drawArrays(gl.TRIANGLES, 0, 6);
587
576
  }
577
+ // combine
578
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
579
+ gl.useProgram(this._combineProgram.program);
580
+ gl.bindVertexArray(this._combineProgram.vao);
581
+ gl.activeTexture(gl.TEXTURE1);
582
+ gl.bindTexture(gl.TEXTURE_2D, this._blurTextures[1]);
583
+ gl.uniform1i(this._combineProgram.u_bloom_texture, 1);
584
+ gl.activeTexture(gl.TEXTURE0);
585
+ gl.bindTexture(gl.TEXTURE_2D, this._middleTexture);
586
+ gl.uniform1i(this._combineProgram.u_main_texture, 0);
587
+ gl.drawArrays(gl.TRIANGLES, 0, 6);
588
588
  gl.bindVertexArray(null);
589
589
  defaultblendfunction(gl);
590
590
  }
@@ -1,16 +1,19 @@
1
- import { createProgram, shaderfunctions } from "../util";
2
- import { CameraUniformBlockTotem, globeProgramCache } from "../programs";
1
+ import { createProgram } from "../../util/webglobjectbuilders";
2
+ import { pixelXYToCartesian2DPoint, pixelXYToCartesian3DPoint } from "../../util/shaderfunctions";
3
+ import { CameraUniformBlockTotem, globeProgramCache } from "../../programs";
4
+ import { CameraUniformBlockString } from "../../programs/totems/camerauniformblock";
5
+ // layout(std140) uniform GlobeCamera {
6
+ // mat4 view; // 64 bytes 0
7
+ // mat4 projection; // 64 bytes 64
8
+ // vec3 translate; // 12 bytes 128
9
+ // bool is3D; // 4 bytes 140
10
+ // vec2 mapWH; // 8 bytes 144
11
+ // vec2 screenWH; // 8 bytes 152
12
+ // float z_level; // 4 bytes 160
13
+ // };
3
14
  const vertexShader = `#version 300 es
4
15
 
5
- layout(std140) uniform GlobeCamera {
6
- mat4 view; // 64 bytes 0
7
- mat4 projection; // 64 bytes 64
8
- vec3 translate; // 12 bytes 128
9
- bool is3D; // 4 bytes 140
10
- vec2 mapWH; // 8 bytes 144
11
- vec2 screenWH; // 8 bytes 152
12
- float z_level; // 4 bytes 160
13
- };
16
+ ${CameraUniformBlockString}
14
17
 
15
18
  layout(std140) uniform Globals {
16
19
  float head_time;
@@ -26,7 +29,7 @@ in float end_time;
26
29
  in vec3 end_color;
27
30
  out vec4 v_color;
28
31
 
29
- ` + shaderfunctions.pixelXYToCartesian3DPoint + shaderfunctions.pixelXYToCartesian2DPoint + `
32
+ ` + pixelXYToCartesian3DPoint + pixelXYToCartesian2DPoint + `
30
33
 
31
34
  void main() {
32
35
  if (head_time < start_time || head_time > end_time) { return; }
@@ -56,7 +59,7 @@ void main() {
56
59
  outColor.a = 0.0;
57
60
  }
58
61
  }`;
59
- export default class {
62
+ export default class ProgramPointLineStrip {
60
63
  constructor(gl, globe, attrBuffer, options) {
61
64
  this.gl = gl;
62
65
  this._cameraBlockBindingPoint = 0;
package/types.js CHANGED
@@ -1,3 +1,9 @@
1
+ export var CSRenderPass;
2
+ (function (CSRenderPass) {
3
+ CSRenderPass[CSRenderPass["NORMAL"] = 0] = "NORMAL";
4
+ CSRenderPass[CSRenderPass["SELECTED"] = 1] = "SELECTED";
5
+ CSRenderPass[CSRenderPass["EDITING"] = 2] = "EDITING";
6
+ })(CSRenderPass || (CSRenderPass = {}));
1
7
  export var CSMeasureTextPositionTypes;
2
8
  (function (CSMeasureTextPositionTypes) {
3
9
  CSMeasureTextPositionTypes["CENTER"] = "center";
@@ -17,7 +17,7 @@
17
17
  * READ, most of the time is not needed to be read, unless for defraging.
18
18
  * This unpredicatable behavior is not handled by this class.
19
19
  */
20
- export default class {
20
+ export default class BufferOffsetManager {
21
21
  constructor(itemSize, { capacity = 10, bufferType = "STATIC_DRAW" } = {}) {
22
22
  this.itemSize = itemSize;
23
23
  this.bufferType = bufferType;
@@ -12,99 +12,13 @@ export class BufferOrchestrator {
12
12
  }
13
13
  resetWithCapacity(bufferManagersMap, capacity = null) {
14
14
  this._capacity = capacity !== null ? capacity : this._capacity;
15
- for (const [key, { bufferManager }] of bufferManagersMap) {
15
+ for (const [, { bufferManager }] of bufferManagersMap) {
16
16
  bufferManager.resetWithCapacity(this._capacity);
17
17
  }
18
18
  this.offsetMap.clear();
19
19
  this.tombstoneOffsets = [];
20
20
  this._length = 0;
21
21
  }
22
- // ...existing code...
23
- // TODO: CLEAN THIS
24
- // insertBulk2(items: any[], bufferManagersMap: BufferManagersMap, bufferKeys: string[] | null = null) {
25
- // this.ensureSpace(items.length, bufferManagersMap);
26
- // const { offsetMap } = this;
27
- // // For block insert (truly new, consecutive offsets)
28
- // const blockItems: any[] = [];
29
- // let blockStart: number | null = null;
30
- // let lastBlockOffset: number | null = null;
31
- // // For single insert (existing or tombstone-assigned)
32
- // const singleItems: any[] = [];
33
- // const singleOffsets: number[] = [];
34
- // for (const item of items) {
35
- // let offset = offsetMap.get(item.key);
36
- // if (offset !== undefined) {
37
- // // Already present, update in place
38
- // singleItems.push(item);
39
- // singleOffsets.push(offset);
40
- // } else {
41
- // // Assign offset (tombstone or new)
42
- // if (this.tombstoneOffsets.length > 0) {
43
- // offset = this.tombstoneOffsets.pop() as number;
44
- // offsetMap.set(item.key, offset);
45
- // singleItems.push(item);
46
- // singleOffsets.push(offset);
47
- // } else {
48
- // offset = this._length++;
49
- // if (offset >= this._capacity) throw new Error("The Size Should Be Increased!!");
50
- // offsetMap.set(item.key, offset);
51
- // // Check for consecutive block
52
- // if (blockStart === null) {
53
- // blockStart = offset;
54
- // lastBlockOffset = offset;
55
- // blockItems.push(item);
56
- // } else if (lastBlockOffset !== null && offset === lastBlockOffset + 1) {
57
- // lastBlockOffset = offset;
58
- // blockItems.push(item);
59
- // } else {
60
- // // Not consecutive, flush current block
61
- // if (blockItems.length > 0) {
62
- // this._insertBlock(blockItems, blockStart, bufferManagersMap, bufferKeys);
63
- // blockItems.length = 0;
64
- // }
65
- // blockStart = offset;
66
- // lastBlockOffset = offset;
67
- // blockItems.push(item);
68
- // }
69
- // }
70
- // }
71
- // }
72
- // // Flush any remaining block
73
- // if (blockItems.length > 0 && blockStart !== null) {
74
- // this._insertBlock(blockItems, blockStart, bufferManagersMap, bufferKeys);
75
- // }
76
- // // Insert singles
77
- // if (singleItems.length > 0) {
78
- // if (bufferKeys) {
79
- // for (const key of bufferKeys) {
80
- // const bufferManagerComp = bufferManagersMap.get(key);
81
- // if (!bufferManagerComp) throw new Error("insertBulk bufferKey does not exist");
82
- // const { bufferManager, adaptor } = bufferManagerComp;
83
- // bufferManager.insertBulk(singleItems.map(adaptor), singleOffsets);
84
- // }
85
- // } else {
86
- // for (const [key, { bufferManager, adaptor }] of bufferManagersMap) {
87
- // bufferManager.insertBulk(singleItems.map(adaptor), singleOffsets);
88
- // }
89
- // }
90
- // }
91
- // }
92
- // // Helper for block insert
93
- // private _insertBlock(blockItems: any[], blockStart: number, bufferManagersMap: BufferManagersMap, bufferKeys: string[] | null) {
94
- // if (bufferKeys) {
95
- // for (const key of bufferKeys) {
96
- // const bufferManagerComp = bufferManagersMap.get(key);
97
- // if (!bufferManagerComp) throw new Error("insertBulk bufferKey does not exist");
98
- // const { bufferManager, adaptor } = bufferManagerComp;
99
- // bufferManager.insertBlock(blockItems, blockStart, adaptor, Float32Array);
100
- // }
101
- // } else {
102
- // for (const [key, { bufferManager, adaptor }] of bufferManagersMap) {
103
- // bufferManager.insertBlock(blockItems, blockStart, adaptor, Float32Array);
104
- // }
105
- // }
106
- // }
107
- // ...existing code...
108
22
  // want to add stack load to this method
109
23
  // if offsetMap.has(item.key) === false get next offset, add the item to stack
110
24
  // create a single big float32array and fill it with the items
@@ -135,7 +49,7 @@ export class BufferOrchestrator {
135
49
  }
136
50
  }
137
51
  else {
138
- for (const [key, { bufferManager, adaptor }] of bufferManagersMap) {
52
+ for (const [, { bufferManager, adaptor }] of bufferManagersMap) {
139
53
  bufferManager.insertBulk([adaptor(item)], [o]);
140
54
  }
141
55
  }
@@ -173,7 +87,7 @@ export class BufferOrchestrator {
173
87
  }
174
88
  }
175
89
  else {
176
- for (const [key, { bufferManager, adaptor }] of bufferManagersMap) {
90
+ for (const [, { bufferManager, adaptor }] of bufferManagersMap) {
177
91
  bufferManager.insertBlock(blockLoad, offsetStart, adaptor, Float32Array);
178
92
  }
179
93
  }
@@ -201,7 +115,7 @@ export class BufferOrchestrator {
201
115
  }
202
116
  }
203
117
  else {
204
- for (const [key, { bufferManager, adaptor }] of bufferManagersMap) {
118
+ for (const [, { bufferManager, adaptor }] of bufferManagersMap) {
205
119
  bufferManager.insertBulk(items.map(adaptor), offsets);
206
120
  }
207
121
  }
@@ -216,7 +130,7 @@ export class BufferOrchestrator {
216
130
  this.tombstoneOffsets.push(offset);
217
131
  }
218
132
  }
219
- for (const [key, { bufferManager }] of bufferManagersMap) {
133
+ for (const [, { bufferManager }] of bufferManagersMap) {
220
134
  bufferManager.deleteBulk(offsets);
221
135
  }
222
136
  }
@@ -240,7 +154,7 @@ export class BufferOrchestrator {
240
154
  if (itemsLength <= this.emptySpace)
241
155
  return;
242
156
  const newCapacity = this.length + itemsLength;
243
- for (const [key, { bufferManager }] of bufferManagersMap) {
157
+ for (const [, { bufferManager }] of bufferManagersMap) {
244
158
  bufferManager.extendBuffer(this.length, newCapacity);
245
159
  }
246
160
  this._capacity = newCapacity;
@@ -252,14 +166,14 @@ export class BufferOrchestrator {
252
166
  for (const key of bufferKeys) {
253
167
  const offset = offsetMap.get(key);
254
168
  if (offset !== undefined) {
255
- for (const [key, { bufferManager }] of bufferManagers) {
169
+ for (const [, { bufferManager }] of bufferManagers) {
256
170
  bufferManager.defrag([offset], this.length, newCapacity);
257
171
  }
258
172
  }
259
173
  }
260
174
  }
261
175
  else {
262
- for (const [key, { bufferManager }] of bufferManagers) {
176
+ for (const [, { bufferManager }] of bufferManagers) {
263
177
  bufferManager.defrag(offsetMap.values(), this.length, newCapacity);
264
178
  }
265
179
  }
@@ -281,7 +195,7 @@ export class BufferOrchestrator {
281
195
  _defrag() {
282
196
  const newOffsetMap = new Map();
283
197
  let newOffset = 0;
284
- for (const [key, offset] of this.offsetMap) {
198
+ for (const [key,] of this.offsetMap) {
285
199
  newOffsetMap.set(key, newOffset++);
286
200
  }
287
201
  this.offsetMap = newOffsetMap;
@@ -1,4 +1,3 @@
1
- import "./types";
2
1
  const typeSizes = {
3
2
  'float': 4,
4
3
  'vec2': 8,
@@ -1,8 +1 @@
1
1
  "use strict";
2
- /**
3
- * @typedef {string} UniformBlockName
4
- *
5
- * @typedef {string} GLSLType | mat4, mat3, vec4, vec3, vec2, float, int, bool
6
- * @typedef {{name: string, type: GLSLType, value: null|Float32Array}} UniformBlockMember
7
- *
8
- */
package/util/index.js CHANGED
@@ -1,13 +1,10 @@
1
- import * as webglobjectbuilders from './webglobjectbuilders';
2
- import * as shaderfunctions from './shaderfunctions';
3
- import * as geometry from './geometry';
4
- import * as webglobe from './webglobe';
5
- import * as programs from './programs';
6
- import * as heatwavedatamanager from './heatwavedatamanager';
7
- export { webglobjectbuilders, shaderfunctions, geometry, webglobe, programs, heatwavedatamanager };
8
- export * from './webglobe';
9
- export * from './webglobjectbuilders';
10
- export * from './shaderfunctions';
11
- export * from './geometry';
12
- export * from './programs';
13
- export * from './heatwavedatamanager';
1
+ "use strict";
2
+ // import * as webglobjectbuilders from './webglobjectbuilders';
3
+ // import * as shaderfunctions from './shaderfunctions';
4
+ // import * as geometry from './geometry';
5
+ // import * as webglobe from './webglobe';
6
+ // export { webglobjectbuilders, shaderfunctions, geometry, webglobe };
7
+ // export * from './webglobe';
8
+ // export * from './webglobjectbuilders';
9
+ // export * from './shaderfunctions';
10
+ // export * from './geometry';
@@ -7,24 +7,22 @@ const fence = (gl) => new Promise((resolve, reject) => {
7
7
  gl.flush();
8
8
  // There are TWO possible ways to check on the status of a WebGLSync object.
9
9
  // 1. This will check it using clientWaitSync()
10
- const checkStatus_v1 = () => {
11
- const status = gl.clientWaitSync(sync, 0, 0);
12
- // There are four possible values for status:
13
- // a. ALREADY_SIGNALED and CONDITION_SATISFIED (done)
14
- // b. TIMEOUT_EXPIRED (check again later)
15
- // c. WAIT_FAILED (there was an error)
16
- if (status === gl.TIMEOUT_EXPIRED) {
17
- setTimeout(checkStatus_v1, 1);
18
- }
19
- else if (status === gl.ALREADY_SIGNALED || status === gl.CONDITION_SATISFIED) {
20
- gl.deleteSync(sync);
21
- resolve();
22
- }
23
- else {
24
- gl.deleteSync(sync);
25
- reject(new Error('Fence did not resolve normally for some reason'));
26
- }
27
- };
10
+ // const checkStatus_v1 = () => {
11
+ // const status = gl.clientWaitSync(sync, 0, 0);
12
+ // // There are four possible values for status:
13
+ // // a. ALREADY_SIGNALED and CONDITION_SATISFIED (done)
14
+ // // b. TIMEOUT_EXPIRED (check again later)
15
+ // // c. WAIT_FAILED (there was an error)
16
+ // if (status === gl.TIMEOUT_EXPIRED) {
17
+ // setTimeout(checkStatus_v1, 1);
18
+ // } else if (status === gl.ALREADY_SIGNALED || status === gl.CONDITION_SATISFIED) {
19
+ // gl.deleteSync(sync);
20
+ // resolve();
21
+ // } else {
22
+ // gl.deleteSync(sync);
23
+ // reject(new Error('Fence did not resolve normally for some reason'));
24
+ // }
25
+ // };
28
26
  // 2. This will check with getSyncParameter(s, gl.SYNC_STATUS)
29
27
  const checkStatus_v2 = () => {
30
28
  const status = gl.getSyncParameter(sync, gl.SYNC_STATUS);
@@ -53,17 +53,15 @@ class PickerDisplayer {
53
53
  gl.bindTexture(gl.TEXTURE_2D, indexTexture);
54
54
  gl.activeTexture(gl.TEXTURE0);
55
55
  gl.bindTexture(gl.TEXTURE_2D, colorTexture);
56
- { // bind framebuffer
57
- gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);
58
- gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.colorTexture, 0);
59
- gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT1, gl.TEXTURE_2D, this.indexTexture, 0);
60
- gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1]);
61
- }
56
+ gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);
57
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.colorTexture, 0);
58
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT1, gl.TEXTURE_2D, this.indexTexture, 0);
59
+ gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1]);
62
60
  }
63
61
  // call after drawing the scene with gl picker shader
64
62
  drawColorTexture() {
65
- const { colorTexture } = this;
66
- this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null);
63
+ const { gl, colorTexture } = this;
64
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
67
65
  this.displayer.draw(colorTexture);
68
66
  }
69
67
  pickXY(x, y, selectionPointFilling = 1, callback = () => { }) {
@@ -1,9 +1,6 @@
1
1
  import { createProgram } from "../webglobjectbuilders";
2
2
  import { CameraUniformBlockString, CameraUniformBlockTotemCache } from "../../programs/totems/camerauniformblock";
3
- import { shaderfunctions } from "..";
4
- /** TODO:
5
- * 3d icin calistir
6
- */
3
+ import { pixelXYToCartesian2DPoint, pixelXYToCartesian3DPoint } from "../shaderfunctions";
7
4
  const drawModeFunc = (gl) => {
8
5
  return (mode) => {
9
6
  return {
@@ -17,7 +14,7 @@ const drawModeFunc = (gl) => {
17
14
  }[mode];
18
15
  };
19
16
  };
20
- export class ShapesOnGlobeProgram {
17
+ export class DrawFromPixelCoords {
21
18
  constructor(gl, globe, drawMode = 'point') {
22
19
  this.globe = globe;
23
20
  this.gl = gl;
@@ -57,8 +54,8 @@ export class ShapesOnGlobeProgram {
57
54
 
58
55
  out vec4 v_color;
59
56
 
60
- ` + shaderfunctions.pixelXYToCartesian3DPoint + `
61
- ` + shaderfunctions.pixelXYToCartesian2DPoint + `
57
+ ` + pixelXYToCartesian3DPoint + `
58
+ ` + pixelXYToCartesian2DPoint + `
62
59
 
63
60
 
64
61
  void main() {
@@ -1,5 +1,5 @@
1
1
  import { createProgram } from "../webglobjectbuilders";
2
- import { glProgramCache } from "../../programs";
2
+ import { glProgramCache } from "../../programs/programcache";
3
3
  // import { CameraUniformBlockTotemCache, CameraUniformBlockString } from "../../programs/totems";
4
4
  const vs = `#version 300 es
5
5
  precision highp float;
@@ -1,5 +1,5 @@
1
1
  import { createProgram } from "../webglobjectbuilders";
2
- import { shaderfunctions } from "..";
2
+ import { pixelXYToCartesian2DPoint, pixelXYToCartesian3DPoint } from "../shaderfunctions";
3
3
  import { latLongBboxtoPixelXYBbox } from "..";
4
4
  /** TODO:
5
5
  * 3d icin calistir
@@ -51,8 +51,8 @@ class TextureToGlobeProgram {
51
51
  out vec2 v_texcoord;
52
52
 
53
53
 
54
- ` + shaderfunctions.pixelXYToCartesian3DPoint + `
55
- ` + shaderfunctions.pixelXYToCartesian2DPoint + `
54
+ ` + pixelXYToCartesian3DPoint + `
55
+ ` + pixelXYToCartesian2DPoint + `
56
56
 
57
57
 
58
58
  void main() {
@@ -200,7 +200,7 @@ float realDistanceOnSphereR1(vec2 longLat1, vec2 longLat2) {
200
200
  `;
201
201
  export const isPointInBBox = `
202
202
  bool isPointInBBox(vec2 point, vec4 bbox) {
203
- return point.x + ${EPSILON} >= bbox.x && point.x <= bbox.z + ${EPSILON} && point.y + ${EPSILON} >= bbox.y && point.y <= bbox.w + ${EPSILON};
203
+ return point.x >= bbox.x && point.x <= bbox.z && point.y >= bbox.y && point.y <= bbox.w;
204
204
  }
205
205
  `;
206
206
  const pointsOnSphereBetween = `
@@ -0,0 +1,3 @@
1
+ import { ArrowFieldPlugin } from "./plugin";
2
+ import { centigradePlus90ToRadians } from "./adaptor";
3
+ export { ArrowFieldPlugin as ArrowField, centigradePlus90ToRadians };
@@ -1,5 +1,5 @@
1
- import { ArrowField } from '../programs';
2
- export default class ArrowFieldPlugin {
1
+ import { ArrowField } from '../../programs/arrowfield/arrow-field';
2
+ export class ArrowFieldPlugin {
3
3
  constructor(id, { minLon = -180, maxLon = 180, minLat = -90, maxLat = 90, height = 0, opacity = 1, tailLengthRatio = 1, wingLengthRatio = 0.5, color = [0.04, 0.2, 0.8], targetWidth = 100, targetHeight = 100, data = null, dataWidth = null, dataHeight = null, maxMagnitude = null, noDataValue = null } = {}) {
4
4
  this.id = id;
5
5
  this.options = {