@pirireis/webglobeplugins 0.9.11 → 0.9.13

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 (179) hide show
  1. package/Math/angle-calculation.js +9 -11
  2. package/Math/arc.js +38 -41
  3. package/Math/bounds/line-bbox.js +79 -83
  4. package/Math/constants.js +4 -9
  5. package/Math/frustum/types.js +1 -2
  6. package/Math/juction/arc-plane.js +33 -36
  7. package/Math/juction/line-sphere.js +15 -18
  8. package/Math/juction/plane-plane.js +20 -23
  9. package/Math/line.js +42 -47
  10. package/Math/methods.js +69 -92
  11. package/Math/plane.js +33 -38
  12. package/Math/quaternion.js +48 -55
  13. package/Math/types.js +1 -2
  14. package/Math/utils.js +2 -4
  15. package/Math/vec3.js +46 -52
  16. package/algorithms/search-binary.js +5 -8
  17. package/altitude-locator/draw-subset-obj.js +8 -11
  18. package/altitude-locator/plugin.js +114 -133
  19. package/altitude-locator/types.js +1 -3
  20. package/arrowfield/adaptor.js +3 -7
  21. package/arrowfield/index.js +3 -10
  22. package/arrowfield/plugin.js +63 -69
  23. package/bearing-line/index.js +2 -8
  24. package/bearing-line/plugin.js +218 -248
  25. package/circle-line-chain/chain-list-map.js +82 -92
  26. package/circle-line-chain/plugin.js +147 -182
  27. package/circle-line-chain/util.js +1 -5
  28. package/compass-rose/compass-rose-padding-flat.js +111 -140
  29. package/compass-rose/compass-text-writer.js +63 -75
  30. package/compass-rose/index.js +3 -7
  31. package/compassrose/compassrose.js +50 -57
  32. package/compassrose/index.js +2 -8
  33. package/heatwave/index.js +3 -10
  34. package/heatwave/isobar/objectarraylabels.js +50 -56
  35. package/heatwave/isobar/plugin.js +111 -170
  36. package/heatwave/isobar/quadtreecontours.js +78 -96
  37. package/heatwave/plugins/heatwaveglobeshell.js +73 -94
  38. package/index.js +12 -58
  39. package/package.json +1 -1
  40. package/partialrings/buffer-manager.js +32 -70
  41. package/partialrings/index.js +2 -41
  42. package/partialrings/plugin.js +55 -98
  43. package/partialrings/program.js +141 -59
  44. package/pin/pin-object-array.js +89 -97
  45. package/pin/pin-point-totem.js +21 -22
  46. package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +11 -14
  47. package/point-heat-map/plugin-webworker.js +45 -53
  48. package/point-heat-map/point-to-heat-map-flow.js +46 -51
  49. package/point-tracks/key-methods.js +2 -5
  50. package/point-tracks/plugin.js +141 -170
  51. package/programs/arrowfield/index.js +2 -7
  52. package/programs/arrowfield/logic.js +172 -67
  53. package/programs/arrowfield/object.js +35 -43
  54. package/programs/data2legend/density-to-legend.js +47 -26
  55. package/programs/data2legend/point-to-density-texture.js +56 -34
  56. package/programs/float2legendwithratio/index.js +2 -8
  57. package/programs/float2legendwithratio/logic.js +88 -45
  58. package/programs/float2legendwithratio/object.js +45 -54
  59. package/programs/globe-util/is-globe-moved.js +10 -13
  60. package/programs/globeshell/index.js +2 -8
  61. package/programs/globeshell/wiggle/index.js +2 -8
  62. package/programs/globeshell/wiggle/logic.js +191 -101
  63. package/programs/globeshell/wiggle/object.js +35 -43
  64. package/programs/helpers/blender/program.js +36 -22
  65. package/programs/helpers/fadeaway/index.js +2 -7
  66. package/programs/helpers/fadeaway/logic.js +36 -17
  67. package/programs/helpers/fadeaway/object.js +11 -18
  68. package/programs/helpers/index.js +2 -8
  69. package/programs/index.js +9 -58
  70. package/programs/line-on-globe/angled-line.js +95 -39
  71. package/programs/line-on-globe/circle-accurate-3d.js +86 -39
  72. package/programs/line-on-globe/circle-accurate-flat.js +116 -64
  73. package/programs/line-on-globe/circle-accurate.js +113 -46
  74. package/programs/line-on-globe/circle.js +106 -44
  75. package/programs/line-on-globe/degree-padding-around-circle-3d.js +89 -42
  76. package/programs/line-on-globe/lines-color-instanced-flat.js +84 -43
  77. package/programs/line-on-globe/linestrip.js +126 -63
  78. package/programs/line-on-globe/naive-accurate-flexible.js +126 -59
  79. package/programs/line-on-globe/to-the-surface.js +62 -35
  80. package/programs/line-on-globe/util.js +2 -5
  81. package/programs/picking/pickable-renderer.js +127 -46
  82. package/programs/point-on-globe/element-globe-surface-glow.js +83 -46
  83. package/programs/point-on-globe/element-point-glow.js +112 -47
  84. package/programs/point-on-globe/square-pixel-point.js +80 -34
  85. package/programs/programcache.js +14 -19
  86. package/programs/rings/distancering/circleflatprogram.js +76 -70
  87. package/programs/rings/distancering/circlepaddingfreeangleprogram.js +168 -194
  88. package/programs/rings/distancering/circlepaddysharedbuffer.js +121 -200
  89. package/programs/rings/distancering/index.js +5 -14
  90. package/programs/rings/distancering/paddyflatprogram.js +87 -70
  91. package/programs/rings/distancering/paddyflatprogram2d.js +89 -72
  92. package/programs/rings/distancering/paddyflatprogram3d.js +87 -70
  93. package/programs/rings/index.js +1 -17
  94. package/programs/rings/partial-ring/piece-of-pie.js +144 -44
  95. package/programs/totems/camerauniformblock.js +65 -56
  96. package/programs/totems/canvas-webglobe-info.js +49 -45
  97. package/programs/totems/gpu-selection-uniform-block.js +45 -45
  98. package/programs/totems/index.js +2 -40
  99. package/programs/two-d/pixel-padding-for-compass.js +94 -36
  100. package/programs/util.js +7 -10
  101. package/programs/vectorfields/index.js +3 -23
  102. package/programs/vectorfields/logics/drawrectangleparticles.js +73 -35
  103. package/programs/vectorfields/logics/index.js +4 -12
  104. package/programs/vectorfields/logics/pixelbased.js +94 -41
  105. package/programs/vectorfields/logics/ubo.js +32 -32
  106. package/programs/vectorfields/pingpongbuffermanager.js +30 -37
  107. package/rangerings/enum.js +2 -5
  108. package/rangerings/index.js +5 -15
  109. package/rangerings/plugin.js +223 -286
  110. package/rangerings/rangeringangletext.js +122 -137
  111. package/rangerings/ring-account.js +53 -75
  112. package/shaders/fragment-toy/firework.js +55 -4
  113. package/shaders/fragment-toy/singularity.js +56 -5
  114. package/timetracks/adaptors-line-strip.js +27 -44
  115. package/timetracks/adaptors.js +48 -67
  116. package/timetracks/index.js +5 -19
  117. package/timetracks/plugin-line-strip.js +65 -79
  118. package/timetracks/plugin.js +71 -85
  119. package/timetracks/program-line-strip.js +297 -107
  120. package/timetracks/program.js +421 -118
  121. package/timetracks/programpoint-line-strip.js +98 -48
  122. package/timetracks/programpoint.js +91 -48
  123. package/util/account/bufferoffsetmanager.js +72 -98
  124. package/util/account/index.js +3 -23
  125. package/util/account/single-attribute-buffer-management/buffer-manager.js +44 -48
  126. package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +68 -98
  127. package/util/account/single-attribute-buffer-management/index.js +4 -9
  128. package/util/account/single-attribute-buffer-management/object-store.js +29 -34
  129. package/util/account/single-attribute-buffer-management/types.js +1 -2
  130. package/util/account/util.js +2 -8
  131. package/util/algorithms/search-binary.js +5 -8
  132. package/util/check/get.js +5 -9
  133. package/util/check/typecheck.js +13 -24
  134. package/util/geometry/index.js +10 -18
  135. package/util/gl-util/buffer/attribute-loader.js +10 -26
  136. package/util/gl-util/buffer/index.js +2 -5
  137. package/util/gl-util/draw-options/methods.js +10 -15
  138. package/util/gl-util/uniform-block/manager.js +69 -72
  139. package/util/heatwavedatamanager/datamanager.js +56 -119
  140. package/util/heatwavedatamanager/index.js +3 -10
  141. package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +38 -47
  142. package/util/heatwavedatamanager/pointcoordsmeta.js +9 -13
  143. package/util/index.js +13 -57
  144. package/util/interpolation/timetrack/index.js +2 -5
  145. package/util/interpolation/timetrack/timetrack-interpolator.js +30 -36
  146. package/util/interpolation/timetrack/web-worker-str.js +180 -5
  147. package/util/interpolation/timetrack/web-worker.js +4 -6
  148. package/util/jshelpers/data-filler.js +8 -11
  149. package/util/jshelpers/equality.js +1 -3
  150. package/util/jshelpers/index.js +2 -37
  151. package/util/jshelpers/timefilters.js +8 -10
  152. package/util/picking/fence.js +8 -11
  153. package/util/picking/picker-displayer.js +49 -58
  154. package/util/programs/draw-texture-on-canvas.js +41 -26
  155. package/util/programs/index.js +1 -17
  156. package/util/programs/shapesonglobe.js +104 -68
  157. package/util/programs/supersampletotextures.js +45 -43
  158. package/util/programs/texturetoglobe.js +99 -52
  159. package/util/shaderfunctions/geometrytransformations.js +323 -35
  160. package/util/shaderfunctions/index.js +2 -18
  161. package/util/shaderfunctions/nodata.js +8 -5
  162. package/util/shaderfunctions/noisefunctions.js +40 -12
  163. package/util/surface-line-data/arcs-to-cuts.js +20 -23
  164. package/util/webglobe/gldefaultstates.js +1 -4
  165. package/util/webglobe/index.js +2 -18
  166. package/util/webglobe/rasteroverlay.js +36 -41
  167. package/util/webglobjectbuilders.js +70 -93
  168. package/util/webglobjectbuilders1.js +63 -82
  169. package/waveparticles/adaptor.js +7 -10
  170. package/waveparticles/index.js +3 -10
  171. package/waveparticles/plugin.js +82 -90
  172. package/wind/imagetovectorfieldandmagnitude.js +16 -19
  173. package/wind/index.js +5 -14
  174. package/wind/plugin.js +454 -291
  175. package/wind/vectorfieldimage.js +6 -8
  176. package/write-text/attached-text-writer.js +48 -54
  177. package/write-text/context-text.js +52 -63
  178. package/write-text/context-text3.js +71 -80
  179. package/write-text/index.js +1 -5
@@ -1,46 +1,98 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var util_1 = require("../util");
4
- var programs_1 = require("../programs");
5
- var vertexShader = "#version 300 es\n\nlayout(std140) uniform GlobeCamera {\n mat4 view; // 64 bytes 0\n mat4 projection; // 64 bytes 64\n vec3 translate; // 12 bytes 128\n bool is3D; // 4 bytes 140\n vec2 mapWH; // 8 bytes 144\n vec2 screenWH; // 8 bytes 152\n float z_level; // 4 bytes 160\n};\n\nlayout(std140) uniform Globals {\n float head_time;\n float final_opacity;\n float point_size;\n};\n\nin vec3 start_position;\nin float start_time;\nin vec3 start_color;\nin vec3 end_position;\nin float end_time;\nin vec3 end_color;\nout vec4 v_color;\n\n" + util_1.shaderfunctions.pixelXYToCartesian3DPoint + util_1.shaderfunctions.pixelXYToCartesian2DPoint + "\n\nvoid main() {\n if (head_time < start_time || head_time > end_time) { return; }\n if ( start_color.r < 0.0 || end_color.r < 0.0) { return; }\n float t = (head_time - start_time) / (end_time - start_time);\n vec3 position = mix(start_position, end_position, t);\n if (is3D){\n vec3 pos = pixelXYToCartesian3DPoint(position);\n gl_Position = projection * view * vec4(pos - translate, 1.0);\n } else {\n vec2 xy = pixelXYToCartesian2DPoint(position.xy, translate.xy, mapWH, screenWH);\n gl_Position = projection * vec4(xy.x, xy.y, 0.0, 1.0);\n }\n v_color = vec4(mix(start_color, end_color, t), final_opacity);\n gl_PointSize = point_size;\n}";
6
- var fragmentShader = "#version 300 es\nprecision highp float;\nin vec4 v_color;\nout vec4 outColor;\nvoid main() {\n // circle point\n vec2 cxy = 2.0 * gl_PointCoord - 1.0;\n float cc = dot(cxy, cxy);\n outColor = v_color;\n if (cc > 0.5) {\n outColor.a = 0.0; \n }\n}";
7
- var default_1 = /** @class */ (function () {
8
- function default_1(gl, globe, attrBuffer, options) {
1
+ import { createProgram, shaderfunctions } from "../util";
2
+ import { CameraUniformBlockTotem, globeProgramCache } from "../programs";
3
+ const vertexShader = `#version 300 es
4
+
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
+ };
14
+
15
+ layout(std140) uniform Globals {
16
+ float head_time;
17
+ float final_opacity;
18
+ float point_size;
19
+ };
20
+
21
+ in vec3 start_position;
22
+ in float start_time;
23
+ in vec3 start_color;
24
+ in vec3 end_position;
25
+ in float end_time;
26
+ in vec3 end_color;
27
+ out vec4 v_color;
28
+
29
+ ` + shaderfunctions.pixelXYToCartesian3DPoint + shaderfunctions.pixelXYToCartesian2DPoint + `
30
+
31
+ void main() {
32
+ if (head_time < start_time || head_time > end_time) { return; }
33
+ if ( start_color.r < 0.0 || end_color.r < 0.0) { return; }
34
+ float t = (head_time - start_time) / (end_time - start_time);
35
+ vec3 position = mix(start_position, end_position, t);
36
+ if (is3D){
37
+ vec3 pos = pixelXYToCartesian3DPoint(position);
38
+ gl_Position = projection * view * vec4(pos - translate, 1.0);
39
+ } else {
40
+ vec2 xy = pixelXYToCartesian2DPoint(position.xy, translate.xy, mapWH, screenWH);
41
+ gl_Position = projection * vec4(xy.x, xy.y, 0.0, 1.0);
42
+ }
43
+ v_color = vec4(mix(start_color, end_color, t), final_opacity);
44
+ gl_PointSize = point_size;
45
+ }`;
46
+ const fragmentShader = `#version 300 es
47
+ precision highp float;
48
+ in vec4 v_color;
49
+ out vec4 outColor;
50
+ void main() {
51
+ // circle point
52
+ vec2 cxy = 2.0 * gl_PointCoord - 1.0;
53
+ float cc = dot(cxy, cxy);
54
+ outColor = v_color;
55
+ if (cc > 0.5) {
56
+ outColor.a = 0.0;
57
+ }
58
+ }`;
59
+ export default class {
60
+ constructor(gl, globe, attrBuffer, options) {
9
61
  this.gl = gl;
10
62
  this._cameraBlockBindingPoint = 0;
11
63
  this._globalsBlockBindingPoint = 1;
12
- this.cameraUniformBlockTotem = programs_1.globeProgramCache.getProgram(globe, programs_1.CameraUniformBlockTotem);
64
+ this.cameraUniformBlockTotem = globeProgramCache.getProgram(globe, CameraUniformBlockTotem);
13
65
  this._vao = gl.createVertexArray();
14
66
  this._attbuffer = attrBuffer;
15
67
  this.program = this._createProgram();
16
68
  this._drawCount = 0;
17
69
  this._globalsbuffer = gl.createBuffer();
18
70
  {
19
- var _a = this, gl_1 = _a.gl, _globalsbuffer = _a._globalsbuffer;
20
- gl_1.bindBuffer(gl_1.UNIFORM_BUFFER, _globalsbuffer);
21
- gl_1.bufferData(gl_1.UNIFORM_BUFFER, 12, gl_1.STREAM_DRAW);
22
- gl_1.bufferSubData(gl_1.UNIFORM_BUFFER, 0, new Float32Array([0, options.opacity, options.pointSize]));
23
- gl_1.bindBufferBase(gl_1.UNIFORM_BUFFER, this._globalsBlockBindingPoint, _globalsbuffer);
24
- gl_1.bindBuffer(gl_1.UNIFORM_BUFFER, null);
71
+ const { gl, _globalsbuffer } = this;
72
+ gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
73
+ gl.bufferData(gl.UNIFORM_BUFFER, 12, gl.STREAM_DRAW);
74
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 0, new Float32Array([0, options.opacity, options.pointSize]));
75
+ gl.bindBufferBase(gl.UNIFORM_BUFFER, this._globalsBlockBindingPoint, _globalsbuffer);
76
+ gl.bindBuffer(gl.UNIFORM_BUFFER, null);
25
77
  }
26
78
  }
27
- default_1.prototype._createProgram = function () {
28
- var gl = this.gl;
29
- var program = (0, util_1.createProgram)(gl, vertexShader, fragmentShader);
30
- var ubo = this.cameraUniformBlockTotem.getUBO(); // ubo bl
31
- var cameraBlockIndex = gl.getUniformBlockIndex(program, "GlobeCamera");
79
+ _createProgram() {
80
+ const gl = this.gl;
81
+ const program = createProgram(gl, vertexShader, fragmentShader);
82
+ const ubo = this.cameraUniformBlockTotem.getUBO(); // ubo bl
83
+ const cameraBlockIndex = gl.getUniformBlockIndex(program, "GlobeCamera");
32
84
  gl.uniformBlockBinding(program, cameraBlockIndex, this._cameraBlockBindingPoint);
33
- var globalsBlockIndex = gl.getUniformBlockIndex(program, "Globals");
85
+ const globalsBlockIndex = gl.getUniformBlockIndex(program, "Globals");
34
86
  gl.bindBufferBase(gl.UNIFORM_BUFFER, this._cameraBlockBindingPoint, ubo);
35
87
  gl.uniformBlockBinding(program, globalsBlockIndex, this._globalsBlockBindingPoint);
36
88
  gl.bindBufferBase(gl.UNIFORM_BUFFER, this._globalsBlockBindingPoint, this._globalsbuffer);
37
89
  // numaralarda yanlışlık olabilir
38
- var start_position = gl.getAttribLocation(program, "start_position");
39
- var start_time = gl.getAttribLocation(program, "start_time");
40
- var start_color = gl.getAttribLocation(program, "start_color");
41
- var end_position = gl.getAttribLocation(program, "end_position");
42
- var end_time = gl.getAttribLocation(program, "end_time");
43
- var end_color = gl.getAttribLocation(program, "end_color");
90
+ const start_position = gl.getAttribLocation(program, "start_position");
91
+ const start_time = gl.getAttribLocation(program, "start_time");
92
+ const start_color = gl.getAttribLocation(program, "start_color");
93
+ const end_position = gl.getAttribLocation(program, "end_position");
94
+ const end_time = gl.getAttribLocation(program, "end_time");
95
+ const end_color = gl.getAttribLocation(program, "end_color");
44
96
  gl.bindVertexArray(this._vao);
45
97
  gl.bindBuffer(gl.ARRAY_BUFFER, this._attbuffer);
46
98
  gl.enableVertexAttribArray(start_position);
@@ -58,44 +110,42 @@ var default_1 = /** @class */ (function () {
58
110
  gl.bindVertexArray(null);
59
111
  gl.bindBuffer(gl.ARRAY_BUFFER, null);
60
112
  return program;
61
- };
62
- default_1.prototype.setOpacity = function (opacity) {
63
- var _a = this, gl = _a.gl, _globalsbuffer = _a._globalsbuffer;
113
+ }
114
+ setOpacity(opacity) {
115
+ const { gl, _globalsbuffer } = this;
64
116
  gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
65
117
  gl.bufferSubData(gl.UNIFORM_BUFFER, 4, new Float32Array([opacity]));
66
118
  gl.bindBuffer(gl.UNIFORM_BUFFER, null);
67
- };
68
- default_1.prototype.setDrawCount = function (count) {
119
+ }
120
+ setDrawCount(count) {
69
121
  this._drawCount = count;
70
- };
71
- default_1.prototype.setPointSize = function (size) {
72
- var _a = this, gl = _a.gl, _globalsbuffer = _a._globalsbuffer;
122
+ }
123
+ setPointSize(size) {
124
+ const { gl, _globalsbuffer } = this;
73
125
  gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
74
126
  gl.bufferSubData(gl.UNIFORM_BUFFER, 8, new Float32Array([size]));
75
127
  gl.bindBuffer(gl.UNIFORM_BUFFER, null);
76
- };
77
- default_1.prototype.setHeadTime = function (time) {
78
- var _a = this, gl = _a.gl, _globalsbuffer = _a._globalsbuffer;
128
+ }
129
+ setHeadTime(time) {
130
+ const { gl, _globalsbuffer } = this;
79
131
  gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
80
132
  gl.bufferSubData(gl.UNIFORM_BUFFER, 0, new Float32Array([time]));
81
133
  gl.bindBuffer(gl.UNIFORM_BUFFER, null);
82
- };
83
- default_1.prototype.draw = function () {
84
- var _a = this, gl = _a.gl, program = _a.program, _vao = _a._vao, _drawCount = _a._drawCount;
134
+ }
135
+ draw() {
136
+ const { gl, program, _vao, _drawCount } = this;
85
137
  gl.useProgram(program);
86
138
  gl.bindVertexArray(_vao);
87
139
  gl.disable(gl.DEPTH_TEST);
88
140
  gl.drawArrays(gl.POINTS, 0, _drawCount);
89
141
  gl.enable(gl.DEPTH_TEST);
90
142
  gl.bindVertexArray(null);
91
- };
92
- default_1.prototype.free = function () {
93
- var _a = this, gl = _a.gl, _vao = _a._vao, _globalsbuffer = _a._globalsbuffer, program = _a.program;
143
+ }
144
+ free() {
145
+ const { gl, _vao, _globalsbuffer, program } = this;
94
146
  gl.deleteVertexArray(_vao);
95
147
  // gl.deleteBuffer(_attbuffer);
96
148
  gl.deleteBuffer(_globalsbuffer);
97
149
  gl.deleteProgram(program);
98
- };
99
- return default_1;
100
- }());
101
- exports.default = default_1;
150
+ }
151
+ }
@@ -1,46 +1,91 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var util_1 = require("../util");
4
- var programs_1 = require("../programs");
5
- var vertexShader = "#version 300 es\n\nlayout(std140) uniform GlobeCamera {\n mat4 view; // 64 bytes 0\n mat4 projection; // 64 bytes 64\n vec3 translate; // 12 bytes 128\n bool is3D; // 4 bytes 140\n vec2 mapWH; // 8 bytes 144\n vec2 screenWH; // 8 bytes 152\n float z_level; // 4 bytes 160\n};\n\nlayout(std140) uniform Globals {\n float head_time;\n float final_opacity;\n float point_size;\n};\n\nin vec3 start_position;\nin float start_time;\nin vec3 start_color;\nin vec3 end_position;\nin float end_time;\nin vec3 end_color;\nout vec4 v_color;\n\n" + util_1.shaderfunctions.pixelXYToCartesian3DPoint + util_1.shaderfunctions.pixelXYToCartesian2DPoint + "\n\nvoid main() {\n if (head_time < start_time || head_time > end_time) { return; }\n float t = (head_time - start_time) / (end_time - start_time);\n vec3 position = mix(start_position, end_position, t);\n if (is3D){\n vec3 pos = pixelXYToCartesian3DPoint(position);\n gl_Position = projection * view * vec4(pos - translate, 1.0);\n } else {\n vec2 xy = pixelXYToCartesian2DPoint(position.xy, translate.xy, mapWH, screenWH);\n gl_Position = projection * vec4(xy.x, xy.y, 0.0, 1.0);\n }\n v_color = vec4(mix(start_color, end_color, t), final_opacity);\n gl_PointSize = point_size;\n}";
6
- var fragmentShader = "#version 300 es\nprecision highp float;\nin vec4 v_color;\nout vec4 outColor;\nvoid main() {\n outColor = v_color;\n}";
7
- var default_1 = /** @class */ (function () {
8
- function default_1(gl, globe, attrBuffer, options) {
1
+ import { createProgram, shaderfunctions } from "../util";
2
+ import { CameraUniformBlockTotem, globeProgramCache } from "../programs";
3
+ const vertexShader = `#version 300 es
4
+
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
+ };
14
+
15
+ layout(std140) uniform Globals {
16
+ float head_time;
17
+ float final_opacity;
18
+ float point_size;
19
+ };
20
+
21
+ in vec3 start_position;
22
+ in float start_time;
23
+ in vec3 start_color;
24
+ in vec3 end_position;
25
+ in float end_time;
26
+ in vec3 end_color;
27
+ out vec4 v_color;
28
+
29
+ ` + shaderfunctions.pixelXYToCartesian3DPoint + shaderfunctions.pixelXYToCartesian2DPoint + `
30
+
31
+ void main() {
32
+ if (head_time < start_time || head_time > end_time) { return; }
33
+ float t = (head_time - start_time) / (end_time - start_time);
34
+ vec3 position = mix(start_position, end_position, t);
35
+ if (is3D){
36
+ vec3 pos = pixelXYToCartesian3DPoint(position);
37
+ gl_Position = projection * view * vec4(pos - translate, 1.0);
38
+ } else {
39
+ vec2 xy = pixelXYToCartesian2DPoint(position.xy, translate.xy, mapWH, screenWH);
40
+ gl_Position = projection * vec4(xy.x, xy.y, 0.0, 1.0);
41
+ }
42
+ v_color = vec4(mix(start_color, end_color, t), final_opacity);
43
+ gl_PointSize = point_size;
44
+ }`;
45
+ const fragmentShader = `#version 300 es
46
+ precision highp float;
47
+ in vec4 v_color;
48
+ out vec4 outColor;
49
+ void main() {
50
+ outColor = v_color;
51
+ }`;
52
+ export default class {
53
+ constructor(gl, globe, attrBuffer, options) {
9
54
  this.gl = gl;
10
55
  this._cameraBlockBindingPoint = 0;
11
56
  this._globalsBlockBindingPoint = 1;
12
- this.cameraUniformBlockTotem = programs_1.globeProgramCache.getProgram(globe, programs_1.CameraUniformBlockTotem);
57
+ this.cameraUniformBlockTotem = globeProgramCache.getProgram(globe, CameraUniformBlockTotem);
13
58
  this._vao = gl.createVertexArray();
14
59
  this._attbuffer = attrBuffer;
15
60
  this.program = this._createProgram();
16
61
  this._drawCount = 0;
17
62
  this._globalsbuffer = gl.createBuffer();
18
63
  {
19
- var _a = this, gl_1 = _a.gl, _globalsbuffer = _a._globalsbuffer;
20
- gl_1.bindBuffer(gl_1.UNIFORM_BUFFER, _globalsbuffer);
21
- gl_1.bufferData(gl_1.UNIFORM_BUFFER, 12, gl_1.STREAM_DRAW);
22
- gl_1.bufferSubData(gl_1.UNIFORM_BUFFER, 0, new Float32Array([0, options.opacity, options.pointSize]));
23
- gl_1.bindBufferBase(gl_1.UNIFORM_BUFFER, this._globalsBlockBindingPoint, _globalsbuffer);
24
- gl_1.bindBuffer(gl_1.UNIFORM_BUFFER, null);
64
+ const { gl, _globalsbuffer } = this;
65
+ gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
66
+ gl.bufferData(gl.UNIFORM_BUFFER, 12, gl.STREAM_DRAW);
67
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 0, new Float32Array([0, options.opacity, options.pointSize]));
68
+ gl.bindBufferBase(gl.UNIFORM_BUFFER, this._globalsBlockBindingPoint, _globalsbuffer);
69
+ gl.bindBuffer(gl.UNIFORM_BUFFER, null);
25
70
  }
26
71
  }
27
- default_1.prototype._createProgram = function () {
28
- var gl = this.gl;
29
- var program = (0, util_1.createProgram)(gl, vertexShader, fragmentShader);
30
- var ubo = this.cameraUniformBlockTotem.getUBO(); // ubo bl
31
- var cameraBlockIndex = gl.getUniformBlockIndex(program, "GlobeCamera");
72
+ _createProgram() {
73
+ const gl = this.gl;
74
+ const program = createProgram(gl, vertexShader, fragmentShader);
75
+ const ubo = this.cameraUniformBlockTotem.getUBO(); // ubo bl
76
+ const cameraBlockIndex = gl.getUniformBlockIndex(program, "GlobeCamera");
32
77
  gl.uniformBlockBinding(program, cameraBlockIndex, this._cameraBlockBindingPoint);
33
- var globalsBlockIndex = gl.getUniformBlockIndex(program, "Globals");
78
+ const globalsBlockIndex = gl.getUniformBlockIndex(program, "Globals");
34
79
  gl.bindBufferBase(gl.UNIFORM_BUFFER, this._cameraBlockBindingPoint, ubo);
35
80
  gl.uniformBlockBinding(program, globalsBlockIndex, this._globalsBlockBindingPoint);
36
81
  gl.bindBufferBase(gl.UNIFORM_BUFFER, this._globalsBlockBindingPoint, this._globalsbuffer);
37
82
  // numaralarda yanlışlık olabilir
38
- var start_position = gl.getAttribLocation(program, "start_position");
39
- var start_time = gl.getAttribLocation(program, "start_time");
40
- var start_color = gl.getAttribLocation(program, "start_color");
41
- var end_position = gl.getAttribLocation(program, "end_position");
42
- var end_time = gl.getAttribLocation(program, "end_time");
43
- var end_color = gl.getAttribLocation(program, "end_color");
83
+ const start_position = gl.getAttribLocation(program, "start_position");
84
+ const start_time = gl.getAttribLocation(program, "start_time");
85
+ const start_color = gl.getAttribLocation(program, "start_color");
86
+ const end_position = gl.getAttribLocation(program, "end_position");
87
+ const end_time = gl.getAttribLocation(program, "end_time");
88
+ const end_color = gl.getAttribLocation(program, "end_color");
44
89
  gl.bindVertexArray(this._vao);
45
90
  gl.bindBuffer(gl.ARRAY_BUFFER, this._attbuffer);
46
91
  gl.enableVertexAttribArray(start_position);
@@ -58,44 +103,42 @@ var default_1 = /** @class */ (function () {
58
103
  gl.bindVertexArray(null);
59
104
  gl.bindBuffer(gl.ARRAY_BUFFER, null);
60
105
  return program;
61
- };
62
- default_1.prototype.setOpacity = function (opacity) {
63
- var _a = this, gl = _a.gl, _globalsbuffer = _a._globalsbuffer;
106
+ }
107
+ setOpacity(opacity) {
108
+ const { gl, _globalsbuffer } = this;
64
109
  gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
65
110
  gl.bufferSubData(gl.UNIFORM_BUFFER, 4, new Float32Array([opacity]));
66
111
  gl.bindBuffer(gl.UNIFORM_BUFFER, null);
67
- };
68
- default_1.prototype.setDrawCount = function (count) {
112
+ }
113
+ setDrawCount(count) {
69
114
  this._drawCount = count;
70
- };
71
- default_1.prototype.setPointSize = function (size) {
72
- var _a = this, gl = _a.gl, _globalsbuffer = _a._globalsbuffer;
115
+ }
116
+ setPointSize(size) {
117
+ const { gl, _globalsbuffer } = this;
73
118
  gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
74
119
  gl.bufferSubData(gl.UNIFORM_BUFFER, 8, new Float32Array([size]));
75
120
  gl.bindBuffer(gl.UNIFORM_BUFFER, null);
76
- };
77
- default_1.prototype.setHeadTime = function (time) {
78
- var _a = this, gl = _a.gl, _globalsbuffer = _a._globalsbuffer;
121
+ }
122
+ setHeadTime(time) {
123
+ const { gl, _globalsbuffer } = this;
79
124
  gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
80
125
  gl.bufferSubData(gl.UNIFORM_BUFFER, 0, new Float32Array([time]));
81
126
  gl.bindBuffer(gl.UNIFORM_BUFFER, null);
82
- };
83
- default_1.prototype.draw = function () {
84
- var _a = this, gl = _a.gl, program = _a.program, _vao = _a._vao, _drawCount = _a._drawCount;
127
+ }
128
+ draw() {
129
+ const { gl, program, _vao, _drawCount } = this;
85
130
  gl.useProgram(program);
86
131
  gl.bindVertexArray(_vao);
87
132
  gl.disable(gl.DEPTH_TEST);
88
133
  gl.drawArrays(gl.POINTS, 0, _drawCount);
89
134
  gl.enable(gl.DEPTH_TEST);
90
135
  gl.bindVertexArray(null);
91
- };
92
- default_1.prototype.free = function () {
93
- var _a = this, gl = _a.gl, _vao = _a._vao, _globalsbuffer = _a._globalsbuffer, program = _a.program;
136
+ }
137
+ free() {
138
+ const { gl, _vao, _globalsbuffer, program } = this;
94
139
  gl.deleteVertexArray(_vao);
95
140
  // gl.deleteBuffer(_attbuffer);
96
141
  gl.deleteBuffer(_globalsbuffer);
97
142
  gl.deleteProgram(program);
98
- };
99
- return default_1;
100
- }());
101
- exports.default = default_1;
143
+ }
144
+ }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * BufferOffsetManager
4
3
  * Purpose: To manage the offset of the buffer. Plus extend and defrag the buffer.
@@ -18,10 +17,8 @@
18
17
  * READ, most of the time is not needed to be read, unless for defraging.
19
18
  * This unpredicatable behavior is not handled by this class.
20
19
  */
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- var default_1 = /** @class */ (function () {
23
- function default_1(itemSize, _a) {
24
- var _b = _a === void 0 ? {} : _a, _c = _b.capacity, capacity = _c === void 0 ? 10 : _c, _d = _b.bufferType, bufferType = _d === void 0 ? "STATIC_DRAW" : _d;
20
+ export default class {
21
+ constructor(itemSize, { capacity = 10, bufferType = "STATIC_DRAW" } = {}) {
25
22
  this.itemSize = itemSize;
26
23
  this.bufferType = bufferType;
27
24
  this.offSetMap = new Map();
@@ -29,52 +26,36 @@ var default_1 = /** @class */ (function () {
29
26
  this._capacity = capacity;
30
27
  this._length = 0;
31
28
  }
32
- Object.defineProperty(default_1.prototype, "length", {
33
- get: function () {
34
- return this._length;
35
- },
36
- enumerable: false,
37
- configurable: true
38
- });
39
- Object.defineProperty(default_1.prototype, "capacity", {
40
- get: function () {
41
- return this._capacity;
42
- },
43
- enumerable: false,
44
- configurable: true
45
- });
46
- default_1.prototype.getOffset = function (key) {
29
+ get length() {
30
+ return this._length;
31
+ }
32
+ get capacity() {
33
+ return this._capacity;
34
+ }
35
+ getOffset(key) {
47
36
  return this.offSetMap.get(key);
48
- };
49
- default_1.prototype.setOffset = function (key, offset) {
37
+ }
38
+ setOffset(key, offset) {
50
39
  this.offSetMap.set(key, offset);
51
- };
52
- default_1.prototype.nextOffset = function () {
40
+ }
41
+ nextOffset() {
53
42
  if (this.tombstoneOffSet.length > 0) {
54
- var offset = this.tombstoneOffSet.pop();
43
+ const offset = this.tombstoneOffSet.pop();
55
44
  return offset;
56
45
  }
57
46
  if (this._length < this._capacity) {
58
47
  return this._length++ * this.itemSize * 4;
59
48
  }
60
49
  return false;
61
- };
62
- Object.defineProperty(default_1.prototype, "spaceLeft", {
63
- get: function () {
64
- return this._capacity - (this._length - this.tombstoneOffSet.length);
65
- },
66
- enumerable: false,
67
- configurable: true
68
- });
69
- Object.defineProperty(default_1.prototype, "itemCount", {
70
- get: function () {
71
- return this._length - this.tombstoneOffSet.length;
72
- },
73
- enumerable: false,
74
- configurable: true
75
- });
76
- default_1.prototype.deleteFromAccount = function (key) {
77
- var offSet = this.offSetMap.get(key);
50
+ }
51
+ get spaceLeft() {
52
+ return this._capacity - (this._length - this.tombstoneOffSet.length);
53
+ }
54
+ get itemCount() {
55
+ return this._length - this.tombstoneOffSet.length;
56
+ }
57
+ deleteFromAccount(key) {
58
+ const offSet = this.offSetMap.get(key);
78
59
  if (offSet !== undefined) {
79
60
  this.tombstoneOffSet.push(offSet);
80
61
  this.offSetMap.delete(key);
@@ -83,41 +64,38 @@ var default_1 = /** @class */ (function () {
83
64
  else {
84
65
  return false;
85
66
  }
86
- };
87
- default_1.prototype._deleteBulk = function (keys) {
88
- var _a = this, gl = _a.gl, buffer = _a.buffer;
89
- var emptyBlock = new Float32Array(this.itemSize).fill(0);
67
+ }
68
+ _deleteBulk(keys) {
69
+ const { gl, buffer } = this;
70
+ const emptyBlock = new Float32Array(this.itemSize).fill(0);
90
71
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
91
- for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
92
- var key = keys_1[_i];
93
- var offset = this.getOffset(key);
72
+ for (let key of keys) {
73
+ const offset = this.getOffset(key);
94
74
  if (offset !== undefined) {
95
75
  this.deleteFromAccount(key);
96
76
  gl.bufferSubData(gl.ARRAY_BUFFER, offset, emptyBlock);
97
77
  }
98
78
  }
99
79
  gl.bindBuffer(gl.ARRAY_BUFFER, null);
100
- };
101
- default_1.prototype.offsetMapIterator = function () {
80
+ }
81
+ offsetMapIterator() {
102
82
  return this.offSetMap.entries();
103
- };
83
+ }
104
84
  // TODO: this is broken
105
- default_1.prototype.defrag = function (newCapacity) {
106
- if (newCapacity === void 0) { newCapacity = null; }
107
- var _a = this, gl = _a.gl, buffer = _a.buffer, bufferType = _a.bufferType;
85
+ defrag(newCapacity = null) {
86
+ const { gl, buffer, bufferType } = this;
108
87
  if (gl === undefined || buffer === undefined || bufferType === undefined) {
109
88
  throw new Error("gl, buffer, bufferType are required");
110
89
  }
111
- var itemSize = this.itemSize;
112
- var itemCount = this.itemCount;
113
- var capacity = (newCapacity && newCapacity > itemCount) ? newCapacity : itemCount;
114
- var newArray = new Float32Array(itemCount * itemSize);
115
- var bufferData = this._getBufferData();
116
- var newOffSet = 0;
117
- var newOffSetMap = new Map();
118
- for (var _i = 0, _b = this.offSetMap; _i < _b.length; _i++) {
119
- var _c = _b[_i], key = _c[0], offSet = _c[1];
120
- var itemOffSet = offSet / 4;
90
+ const itemSize = this.itemSize;
91
+ const itemCount = this.itemCount;
92
+ const capacity = (newCapacity && newCapacity > itemCount) ? newCapacity : itemCount;
93
+ const newArray = new Float32Array(itemCount * itemSize);
94
+ const bufferData = this._getBufferData();
95
+ let newOffSet = 0;
96
+ const newOffSetMap = new Map();
97
+ for (const [key, offSet] of this.offSetMap) {
98
+ const itemOffSet = offSet / 4;
121
99
  newArray.set(bufferData.slice(itemOffSet, itemOffSet + itemSize), newOffSet);
122
100
  // this.offSetMap.set(key, newOffSet * 4);
123
101
  newOffSetMap.set(key, newOffSet * 4);
@@ -131,23 +109,23 @@ var default_1 = /** @class */ (function () {
131
109
  this.tombstoneOffSet = [];
132
110
  this._length = itemCount;
133
111
  this.offSetMap = newOffSetMap;
134
- };
135
- default_1.prototype.autoExtendBuffer = function (payloadSize) {
112
+ }
113
+ autoExtendBuffer(payloadSize) {
136
114
  if (payloadSize <= this.spaceLeft)
137
115
  return;
138
- var newCapacity = Math.ceil((payloadSize + this.length));
116
+ const newCapacity = Math.ceil((payloadSize + this.length));
139
117
  this.extendBuffer(newCapacity);
140
- };
141
- default_1.prototype.extendBuffer = function (newCapacity) {
142
- var _a = this, gl = _a.gl, buffer = _a.buffer, bufferType = _a.bufferType;
143
- var itemSize = this.itemSize;
144
- var bufferData = this._getBufferData();
118
+ }
119
+ extendBuffer(newCapacity) {
120
+ const { gl, buffer, bufferType } = this;
121
+ const itemSize = this.itemSize;
122
+ const bufferData = this._getBufferData();
145
123
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
146
124
  gl.bufferData(gl.ARRAY_BUFFER, newCapacity * itemSize * 4, gl[bufferType]);
147
125
  gl.bufferSubData(gl.ARRAY_BUFFER, 0, bufferData);
148
126
  gl.bindBuffer(gl.ARRAY_BUFFER, null);
149
127
  this._capacity = newCapacity;
150
- };
128
+ }
151
129
  /** implicit methods to be used by the child class */
152
130
  /**
153
131
  * @typedef {Float32Array} payload
@@ -155,48 +133,44 @@ var default_1 = /** @class */ (function () {
155
133
  * @param {number} partOffset
156
134
  * @returns
157
135
  */
158
- default_1.prototype._updatePartial = function (items, partOffset) {
159
- var _a = this, gl = _a.gl, buffer = _a.buffer;
160
- var partStart = partOffset * 4;
136
+ _updatePartial(items, partOffset) {
137
+ const { gl, buffer } = this;
138
+ const partStart = partOffset * 4;
161
139
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
162
- for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {
163
- var _b = items_1[_i], key = _b.key, payload = _b.payload;
164
- var offset = this.getOffset(key);
140
+ for (let { key, payload } of items) {
141
+ let offset = this.getOffset(key);
165
142
  if (offset !== undefined) {
166
143
  gl.bufferSubData(gl.ARRAY_BUFFER, offset + partStart, payload);
167
144
  }
168
145
  }
169
146
  gl.bindBuffer(gl.ARRAY_BUFFER, null);
170
- };
171
- default_1.prototype._getBufferData = function () {
172
- var _a = this, gl = _a.gl, buffer = _a.buffer;
173
- var size = new Float32Array(this.length * this.itemSize);
174
- var bufferData = new Float32Array(size);
147
+ }
148
+ _getBufferData() {
149
+ const { gl, buffer } = this;
150
+ const size = new Float32Array(this.length * this.itemSize);
151
+ const bufferData = new Float32Array(size);
175
152
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
176
153
  gl.getBufferSubData(gl.ARRAY_BUFFER, 0, bufferData);
177
154
  gl.bindBuffer(gl.ARRAY_BUFFER, null);
178
155
  return bufferData;
179
- };
180
- default_1.prototype._removeFromBuffer = function (keys) {
181
- var _a = this, gl = _a.gl, buffer = _a.buffer;
182
- var emptyBlock = new Float32Array(this.itemSize).fill(0);
156
+ }
157
+ _removeFromBuffer(keys) {
158
+ const { gl, buffer } = this;
159
+ const emptyBlock = new Float32Array(this.itemSize).fill(0);
183
160
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
184
- for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {
185
- var key = keys_2[_i];
186
- var offset = this.getOffset(key);
161
+ for (let key of keys) {
162
+ let offset = this.getOffset(key);
187
163
  if (offset !== undefined) {
188
164
  this.deleteFromAccount(key);
189
165
  gl.bufferSubData(gl.ARRAY_BUFFER, offset, emptyBlock);
190
166
  }
191
167
  }
192
168
  gl.bindBuffer(gl.ARRAY_BUFFER, null);
193
- };
194
- default_1.prototype.free = function () {
169
+ }
170
+ free() {
195
171
  this.gl.deleteBuffer(this.buffer);
196
172
  this.buffer = null;
197
173
  this.vao = null;
198
174
  this.gl = null;
199
- };
200
- return default_1;
201
- }());
202
- exports.default = default_1;
175
+ }
176
+ }