@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,12 +1,33 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var util_1 = require("../../../util");
4
- var vertexShaderSource = "#version 300 es\nprecision highp float; \nin vec2 a_position;\nout vec2 v_texCoord; \nvoid main() {\n gl_Position = vec4(a_position, 0.0, 1.0);\n v_texCoord = a_position * 0.5 + vec2(0.5);\n}\n";
5
- var fragmentShaderSource = "#version 300 es\nprecision highp float;\nuniform float opacity;\nuniform sampler2D u_texture;\nin vec2 v_texCoord;\nout vec4 outColor;\nvoid main() {\n\n vec4 color = texture(u_texture, v_texCoord);\n if (color.a <= 0.2) {\n outColor = vec4(0.0);\n return;\n }\n outColor = vec4(color.rgb, color.a * opacity);\n}\n";
6
- var FadeAwayProgram = /** @class */ (function () {
7
- function FadeAwayProgram(gl) {
1
+ import { createProgram } from "../../../util";
2
+ const vertexShaderSource = `#version 300 es
3
+ precision highp float;
4
+ in vec2 a_position;
5
+ out vec2 v_texCoord;
6
+ void main() {
7
+ gl_Position = vec4(a_position, 0.0, 1.0);
8
+ v_texCoord = a_position * 0.5 + vec2(0.5);
9
+ }
10
+ `;
11
+ const fragmentShaderSource = `#version 300 es
12
+ precision highp float;
13
+ uniform float opacity;
14
+ uniform sampler2D u_texture;
15
+ in vec2 v_texCoord;
16
+ out vec4 outColor;
17
+ void main() {
18
+
19
+ vec4 color = texture(u_texture, v_texCoord);
20
+ if (color.a <= 0.2) {
21
+ outColor = vec4(0.0);
22
+ return;
23
+ }
24
+ outColor = vec4(color.rgb, color.a * opacity);
25
+ }
26
+ `;
27
+ export default class FadeAwayProgram {
28
+ constructor(gl) {
8
29
  this.gl = gl;
9
- this.program = (0, util_1.createProgram)(gl, vertexShaderSource, fragmentShaderSource);
30
+ this.program = createProgram(gl, vertexShaderSource, fragmentShaderSource);
10
31
  this.vao = gl.createVertexArray();
11
32
  gl.bindVertexArray(this.vao);
12
33
  this._buffer = gl.createBuffer();
@@ -28,8 +49,8 @@ var FadeAwayProgram = /** @class */ (function () {
28
49
  opacity: gl.getUniformLocation(this.program, 'opacity')
29
50
  };
30
51
  }
31
- FadeAwayProgram.prototype.draw = function (texture, opacity) {
32
- var _a = this, gl = _a.gl, vao = _a.vao, uniforms = _a.uniforms, program = _a.program;
52
+ draw(texture, opacity) {
53
+ const { gl, vao, uniforms, program } = this;
33
54
  gl.useProgram(program);
34
55
  gl.bindVertexArray(vao);
35
56
  gl.uniform1f(uniforms.opacity, opacity);
@@ -38,13 +59,11 @@ var FadeAwayProgram = /** @class */ (function () {
38
59
  gl.bindTexture(gl.TEXTURE_2D, texture);
39
60
  gl.drawArrays(gl.TRIANGLES, 0, 6);
40
61
  gl.bindVertexArray(null);
41
- };
42
- FadeAwayProgram.prototype.free = function () {
43
- var _a = this, gl = _a.gl, vao = _a.vao, _buffer = _a._buffer, program = _a.program;
62
+ }
63
+ free() {
64
+ const { gl, vao, _buffer, program } = this;
44
65
  gl.deleteVertexArray(vao);
45
66
  gl.deleteProgram(program);
46
67
  gl.deleteBuffer(_buffer);
47
- };
48
- return FadeAwayProgram;
49
- }());
50
- exports.default = FadeAwayProgram;
68
+ }
69
+ }
@@ -1,21 +1,14 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- var programcache_1 = require("../../programcache");
7
- var logic_1 = __importDefault(require("./logic"));
8
- var FadeAway = /** @class */ (function () {
9
- function FadeAway(gl) {
1
+ import { glProgramCache } from "../../programcache";
2
+ import FadeAwayProgram from "./logic";
3
+ export default class FadeAway {
4
+ constructor(gl) {
10
5
  this.gl = gl;
11
- this.program = programcache_1.glProgramCache.getProgram(gl, logic_1.default);
6
+ this.program = glProgramCache.getProgram(gl, FadeAwayProgram);
12
7
  }
13
- FadeAway.prototype.draw = function (sourceTexture, opacity) {
8
+ draw(sourceTexture, opacity) {
14
9
  this.program.draw(sourceTexture, opacity);
15
- };
16
- FadeAway.prototype.free = function () {
17
- programcache_1.glProgramCache.releaseProgram(logic_1.default);
18
- };
19
- return FadeAway;
20
- }());
21
- exports.default = FadeAway;
10
+ }
11
+ free() {
12
+ glProgramCache.releaseProgram(FadeAwayProgram);
13
+ }
14
+ }
@@ -1,8 +1,2 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.FadeAway = void 0;
7
- var fadeaway_1 = __importDefault(require("./fadeaway"));
8
- exports.FadeAway = fadeaway_1.default;
1
+ import FadeAway from './fadeaway';
2
+ export { FadeAway };
package/programs/index.js CHANGED
@@ -1,58 +1,9 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.rings = exports.FadeAway = exports.vectorfield = exports.noRegisterGlobeProgramCache = exports.globeProgramCache = exports.glProgramCache = exports.CameraUniformBlockString = exports.CameraUniformBlockTotem = exports.ArrowField = exports.GlobeShellWiggle = exports.Float2LegendWithRatio = void 0;
40
- var float2legendwithratio_1 = require("./float2legendwithratio");
41
- Object.defineProperty(exports, "Float2LegendWithRatio", { enumerable: true, get: function () { return float2legendwithratio_1.Float2LegendWithRatio; } });
42
- var wiggle_1 = require("./globeshell/wiggle");
43
- Object.defineProperty(exports, "GlobeShellWiggle", { enumerable: true, get: function () { return wiggle_1.GlobeShellWiggle; } });
44
- var index_1 = require("./totems/index");
45
- Object.defineProperty(exports, "CameraUniformBlockTotem", { enumerable: true, get: function () { return index_1.CameraUniformBlockTotem; } });
46
- Object.defineProperty(exports, "CameraUniformBlockString", { enumerable: true, get: function () { return index_1.CameraUniformBlockString; } });
47
- var arrowfield_1 = __importDefault(require("./arrowfield"));
48
- exports.ArrowField = arrowfield_1.default;
49
- var programcache_1 = require("./programcache");
50
- Object.defineProperty(exports, "glProgramCache", { enumerable: true, get: function () { return programcache_1.glProgramCache; } });
51
- Object.defineProperty(exports, "globeProgramCache", { enumerable: true, get: function () { return programcache_1.globeProgramCache; } });
52
- Object.defineProperty(exports, "noRegisterGlobeProgramCache", { enumerable: true, get: function () { return programcache_1.noRegisterGlobeProgramCache; } });
53
- var vectorfield = __importStar(require("./vectorfields"));
54
- exports.vectorfield = vectorfield;
55
- var helpers_1 = require("./helpers");
56
- Object.defineProperty(exports, "FadeAway", { enumerable: true, get: function () { return helpers_1.FadeAway; } });
57
- var rings = __importStar(require("./rings"));
58
- exports.rings = rings;
1
+ import { Float2LegendWithRatio } from "./float2legendwithratio";
2
+ import { GlobeShellWiggle } from "./globeshell/wiggle";
3
+ import { CameraUniformBlockTotem, CameraUniformBlockString } from "./totems/index";
4
+ import ArrowField from "./arrowfield";
5
+ import { glProgramCache, globeProgramCache, noRegisterGlobeProgramCache } from "./programcache";
6
+ import * as vectorfield from "./vectorfields";
7
+ import { FadeAway } from "./helpers";
8
+ import * as rings from "./rings";
9
+ export { Float2LegendWithRatio, GlobeShellWiggle, ArrowField, CameraUniformBlockTotem, CameraUniformBlockString, glProgramCache, globeProgramCache, noRegisterGlobeProgramCache, vectorfield, FadeAway, rings };
@@ -1,21 +1,78 @@
1
- "use strict";
2
1
  // angle radius, rgba, dashRatio, rgbaMode
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.AngledLineProgramCache = void 0;
5
- var util_1 = require("../../util");
6
- var totems_1 = require("../totems");
7
- var geometrytransformations_1 = require("../../util/shaderfunctions/geometrytransformations");
8
- var programcache_1 = require("../programcache");
9
- var EDGE_COUNT_ON_SPHERE = 50;
10
- var vertexShaderSource = "#version 300 es\nprecision highp float;\n\n".concat(totems_1.CameraUniformBlockString, "\n").concat(geometrytransformations_1.longLatRadToMercator, "\n").concat(geometrytransformations_1.longLatRadToCartesian3D, "\n").concat(geometrytransformations_1.cartesian3DToGLPosition, "\n").concat(geometrytransformations_1.mercatorXYToGLPosition, "\n").concat(geometrytransformations_1.circleLimpFromLongLatRadCenterCartesian3D, "\n").concat(geometrytransformations_1.circleLimpFromLongLatRadCenterMercatorCompass, "\n").concat(geometrytransformations_1.circleLimpFromLongLatRadCenterMercatorRealDistance, "\n\nin vec2 center_point;\nin float angle;\nin float radius;\nin vec4 rgba;\nin float dash_ratio;\nin float dash_opacity;\n\nout vec4 v_color;\nout float v_dash_ratio;\nout float interpolation;\nout float v_dash_opacity;\nout vec2 v_limp;\n// TODO: Draw World Boundaries \nvoid main() {\n if ( is3D ) {\n interpolation = float( gl_VertexID ) / ").concat(EDGE_COUNT_ON_SPHERE - 1, ".0;\n float radius_ = radius* interpolation;\n vec3 position = circleLimpFromLongLatRadCenterCartesian3D( center_point, radius_, angle);\n gl_Position = cartesian3DToGLPosition( position);\n v_limp = vec2(0.0, 0.0);\n } else {\n interpolation = float( gl_VertexID );\n float radius_ = radius * interpolation;\n vec2 position = circleLimpFromLongLatRadCenterMercatorRealDistance( center_point, radius_, angle);\n v_limp = position;\n gl_Position = mercatorXYToGLPosition( position);\n }\n v_dash_opacity = dash_opacity;\n v_color = rgba;\n v_dash_ratio = dash_ratio;\n}");
11
- var fragmentShaderSource = "#version 300 es\n".concat(geometrytransformations_1.POLE, "\nprecision highp float;\n\nuniform float opacity;\nin vec4 v_color;\nin float v_dash_ratio;\nin float v_dash_opacity;\nin float interpolation;\nin vec2 v_limp;\nout vec4 color;\n\nvoid main() {\n if ( v_limp.x < -POLE || v_limp.x > POLE || v_limp.y < -POLE || v_limp.y > POLE ){ color = vec4(0.0,0.0,0.0,0.0); return; }\n color = vec4(v_color.rgb, v_color.a * opacity);\n if (fract(interpolation / (2.0 * v_dash_ratio)) < 0.5 ) {\n color.a *= v_dash_opacity;\n } \n}");
12
- var Logic = /** @class */ (function () {
13
- function Logic(globe) {
2
+ import { createProgram } from "../../util";
3
+ import { CameraUniformBlockTotemCache, CameraUniformBlockString } from "../totems";
4
+ import { longLatRadToMercator, longLatRadToCartesian3D, cartesian3DToGLPosition, mercatorXYToGLPosition, circleLimpFromLongLatRadCenterCartesian3D, circleLimpFromLongLatRadCenterMercatorCompass, circleLimpFromLongLatRadCenterMercatorRealDistance, POLE } from "../../util/shaderfunctions/geometrytransformations";
5
+ import { noRegisterGlobeProgramCache } from "../programcache";
6
+ const EDGE_COUNT_ON_SPHERE = 50;
7
+ const vertexShaderSource = `#version 300 es
8
+ precision highp float;
9
+
10
+ ${CameraUniformBlockString}
11
+ ${longLatRadToMercator}
12
+ ${longLatRadToCartesian3D}
13
+ ${cartesian3DToGLPosition}
14
+ ${mercatorXYToGLPosition}
15
+ ${circleLimpFromLongLatRadCenterCartesian3D}
16
+ ${circleLimpFromLongLatRadCenterMercatorCompass}
17
+ ${circleLimpFromLongLatRadCenterMercatorRealDistance}
18
+
19
+ in vec2 center_point;
20
+ in float angle;
21
+ in float radius;
22
+ in vec4 rgba;
23
+ in float dash_ratio;
24
+ in float dash_opacity;
25
+
26
+ out vec4 v_color;
27
+ out float v_dash_ratio;
28
+ out float interpolation;
29
+ out float v_dash_opacity;
30
+ out vec2 v_limp;
31
+ // TODO: Draw World Boundaries
32
+ void main() {
33
+ if ( is3D ) {
34
+ interpolation = float( gl_VertexID ) / ${EDGE_COUNT_ON_SPHERE - 1}.0;
35
+ float radius_ = radius* interpolation;
36
+ vec3 position = circleLimpFromLongLatRadCenterCartesian3D( center_point, radius_, angle);
37
+ gl_Position = cartesian3DToGLPosition( position);
38
+ v_limp = vec2(0.0, 0.0);
39
+ } else {
40
+ interpolation = float( gl_VertexID );
41
+ float radius_ = radius * interpolation;
42
+ vec2 position = circleLimpFromLongLatRadCenterMercatorRealDistance( center_point, radius_, angle);
43
+ v_limp = position;
44
+ gl_Position = mercatorXYToGLPosition( position);
45
+ }
46
+ v_dash_opacity = dash_opacity;
47
+ v_color = rgba;
48
+ v_dash_ratio = dash_ratio;
49
+ }`;
50
+ const fragmentShaderSource = `#version 300 es
51
+ ${POLE}
52
+ precision highp float;
53
+
54
+ uniform float opacity;
55
+ in vec4 v_color;
56
+ in float v_dash_ratio;
57
+ in float v_dash_opacity;
58
+ in float interpolation;
59
+ in vec2 v_limp;
60
+ out vec4 color;
61
+
62
+ void main() {
63
+ if ( v_limp.x < -POLE || v_limp.x > POLE || v_limp.y < -POLE || v_limp.y > POLE ){ color = vec4(0.0,0.0,0.0,0.0); return; }
64
+ color = vec4(v_color.rgb, v_color.a * opacity);
65
+ if (fract(interpolation / (2.0 * v_dash_ratio)) < 0.5 ) {
66
+ color.a *= v_dash_opacity;
67
+ }
68
+ }`;
69
+ class Logic {
70
+ constructor(globe) {
14
71
  this.globe = globe;
15
72
  this.gl = globe.gl;
16
- this.program = (0, util_1.createProgram)(this.gl, vertexShaderSource, fragmentShaderSource);
73
+ this.program = createProgram(this.gl, vertexShaderSource, fragmentShaderSource);
17
74
  this._lastOpacity = 1;
18
- var _a = this, gl = _a.gl, program = _a.program;
75
+ const { gl, program } = this;
19
76
  { // assign attribute locations
20
77
  gl.bindAttribLocation(program, 0, "center_point");
21
78
  gl.bindAttribLocation(program, 1, "angle");
@@ -26,24 +83,24 @@ var Logic = /** @class */ (function () {
26
83
  }
27
84
  {
28
85
  this._opacityLocation = gl.getUniformLocation(program, "opacity");
29
- var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
86
+ const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
30
87
  gl.useProgram(program);
31
88
  gl.uniform1f(this._opacityLocation, this._lastOpacity);
32
89
  gl.useProgram(currentProgram);
33
90
  }
34
91
  this.cameraBlockBindingPoint = 0;
35
- var cameraBlockIndex = gl.getUniformBlockIndex(program, "CameraUniformBlock");
36
- this.cameraBlockTotem = totems_1.CameraUniformBlockTotemCache.get(globe);
92
+ const cameraBlockIndex = gl.getUniformBlockIndex(program, "CameraUniformBlock");
93
+ this.cameraBlockTotem = CameraUniformBlockTotemCache.get(globe);
37
94
  gl.uniformBlockBinding(program, cameraBlockIndex, this.cameraBlockBindingPoint);
38
95
  }
39
- Logic.prototype.draw = function (vao, length, opacity) {
40
- var _a = this, gl = _a.gl, program = _a.program, globe = _a.globe, cameraBlockTotem = _a.cameraBlockTotem, cameraBlockBindingPoint = _a.cameraBlockBindingPoint;
96
+ draw(vao, length, opacity) {
97
+ const { gl, program, globe, cameraBlockTotem, cameraBlockBindingPoint } = this;
41
98
  gl.useProgram(program);
42
99
  if (opacity !== this._lastOpacity) {
43
100
  gl.uniform1f(this._opacityLocation, opacity);
44
101
  this._lastOpacity = opacity;
45
102
  }
46
- var drawCount = globe.api_GetCurrentGeometry() === 0 ? EDGE_COUNT_ON_SPHERE : 2;
103
+ const drawCount = globe.api_GetCurrentGeometry() === 0 ? EDGE_COUNT_ON_SPHERE : 2;
47
104
  gl.bindVertexArray(vao);
48
105
  cameraBlockTotem.bind(cameraBlockBindingPoint);
49
106
  // gl.disable(gl.DEPTH_TEST);
@@ -51,48 +108,48 @@ var Logic = /** @class */ (function () {
51
108
  gl.bindVertexArray(null);
52
109
  cameraBlockTotem.unbind(cameraBlockBindingPoint);
53
110
  // gl.enable(gl.DEPTH_TEST);
54
- };
55
- Logic.prototype.createVAO = function (centerCoords, angle, radius, rgba, dashRatio, dashOpacity) {
56
- var gl = this.gl;
57
- var vao = gl.createVertexArray();
111
+ }
112
+ createVAO(centerCoords, angle, radius, rgba, dashRatio, dashOpacity) {
113
+ const { gl } = this;
114
+ const vao = gl.createVertexArray();
58
115
  gl.bindVertexArray(vao);
59
116
  {
60
- var buffer = centerCoords.buffer, _a = centerCoords.stride, stride = _a === void 0 ? 0 : _a, _b = centerCoords.offset, offset = _b === void 0 ? 0 : _b;
117
+ const { buffer, stride = 0, offset = 0 } = centerCoords;
61
118
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
62
119
  gl.enableVertexAttribArray(0);
63
120
  gl.vertexAttribPointer(0, 2, gl.FLOAT, false, stride, offset);
64
121
  gl.vertexAttribDivisor(0, 1);
65
122
  }
66
123
  {
67
- var buffer = angle.buffer, _c = angle.stride, stride = _c === void 0 ? 0 : _c, _d = angle.offset, offset = _d === void 0 ? 0 : _d;
124
+ const { buffer, stride = 0, offset = 0 } = angle;
68
125
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
69
126
  gl.enableVertexAttribArray(1);
70
127
  gl.vertexAttribPointer(1, 1, gl.FLOAT, false, stride, offset);
71
128
  gl.vertexAttribDivisor(1, 1);
72
129
  }
73
130
  {
74
- var buffer = radius.buffer, _e = radius.stride, stride = _e === void 0 ? 0 : _e, _f = radius.offset, offset = _f === void 0 ? 0 : _f;
131
+ const { buffer, stride = 0, offset = 0 } = radius;
75
132
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
76
133
  gl.enableVertexAttribArray(2);
77
134
  gl.vertexAttribPointer(2, 1, gl.FLOAT, false, stride, offset);
78
135
  gl.vertexAttribDivisor(2, 1);
79
136
  }
80
137
  {
81
- var buffer = rgba.buffer, _g = rgba.stride, stride = _g === void 0 ? 0 : _g, _h = rgba.offset, offset = _h === void 0 ? 0 : _h;
138
+ const { buffer, stride = 0, offset = 0 } = rgba;
82
139
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
83
140
  gl.enableVertexAttribArray(3);
84
141
  gl.vertexAttribPointer(3, 4, gl.FLOAT, false, stride, offset);
85
142
  gl.vertexAttribDivisor(3, 1);
86
143
  }
87
144
  {
88
- var buffer = dashRatio.buffer, _j = dashRatio.stride, stride = _j === void 0 ? 0 : _j, _k = dashRatio.offset, offset = _k === void 0 ? 0 : _k;
145
+ const { buffer, stride = 0, offset = 0 } = dashRatio;
89
146
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
90
147
  gl.enableVertexAttribArray(4);
91
148
  gl.vertexAttribPointer(4, 1, gl.FLOAT, false, stride, offset);
92
149
  gl.vertexAttribDivisor(4, 1);
93
150
  }
94
151
  {
95
- var buffer = dashOpacity.buffer, _l = dashOpacity.stride, stride = _l === void 0 ? 0 : _l, _m = dashOpacity.offset, offset = _m === void 0 ? 0 : _m;
152
+ const { buffer, stride = 0, offset = 0 } = dashOpacity;
96
153
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
97
154
  gl.enableVertexAttribArray(5);
98
155
  gl.vertexAttribPointer(5, 1, gl.FLOAT, false, stride, offset);
@@ -100,18 +157,17 @@ var Logic = /** @class */ (function () {
100
157
  }
101
158
  gl.bindVertexArray(null);
102
159
  return vao;
103
- };
104
- Logic.prototype.free = function () {
160
+ }
161
+ free() {
105
162
  if (this.isFreed)
106
163
  return;
107
- totems_1.CameraUniformBlockTotemCache.release(this.globe);
164
+ CameraUniformBlockTotemCache.release(this.globe);
108
165
  this.cameraBlockTotem = null;
109
166
  this.gl.deleteProgram(this.program);
110
167
  this.isFreed = true;
111
- };
112
- return Logic;
113
- }());
114
- exports.AngledLineProgramCache = Object.freeze({
115
- get: function (globe) { return programcache_1.noRegisterGlobeProgramCache.getProgram(globe, Logic); },
116
- release: function (globe) { return programcache_1.noRegisterGlobeProgramCache.releaseProgram(globe, Logic); }
168
+ }
169
+ }
170
+ export const AngledLineProgramCache = Object.freeze({
171
+ get: (globe) => { return noRegisterGlobeProgramCache.getProgram(globe, Logic); },
172
+ release: (globe) => { return noRegisterGlobeProgramCache.releaseProgram(globe, Logic); }
117
173
  });
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CircleCache = void 0;
4
- var webglobjectbuilders_1 = require("../../util/webglobjectbuilders");
5
- var camerauniformblock_1 = require("../totems/camerauniformblock");
6
- var programcache_1 = require("../programcache");
1
+ import { createProgram } from "../../util/webglobjectbuilders";
2
+ import { CameraUniformBlockString, CameraUniformBlockTotemCache } from "../totems/camerauniformblock";
3
+ import { noRegisterGlobeProgramCache } from "../programcache";
7
4
  // import { vaoAttributeLoader } from "../../util/account/util";
8
- var attribute_loader_1 = require("../../util/gl-util/buffer/attribute-loader");
9
- var geometrytransformations_1 = require("../../util/shaderfunctions/geometrytransformations");
5
+ import { attributeLoader } from "../../util/gl-util/buffer/attribute-loader";
6
+ import { cartesian3DToGLPosition, circleLimpFromLongLatRadCenterCartesian3D_accurate, circleOnSphere, POLE, PI } from "../../util/shaderfunctions/geometrytransformations";
10
7
  /**
11
8
  * TODO:
12
9
  * 1. integrate geometry functions for radius angle and center
@@ -15,22 +12,73 @@ var geometrytransformations_1 = require("../../util/shaderfunctions/geometrytran
15
12
  * TODO:
16
13
  * center_position is too small or doenst loaded as expected.
17
14
  */
18
- var EDGE_COUNT_ON_SPHERE = 360;
15
+ const EDGE_COUNT_ON_SPHERE = 360;
19
16
  //${circleLimpFromLongLatRadCenterCartesian3D_accurate}
20
- var vertexShaderSource = "#version 300 es\nprecision highp float;\n".concat(geometrytransformations_1.PI, "\n").concat(camerauniformblock_1.CameraUniformBlockString, "\n").concat(geometrytransformations_1.cartesian3DToGLPosition, "\n").concat(geometrytransformations_1.circleOnSphere, "\n\nuniform float edge_count;\n\nin vec3 center_position3d;\nin vec3 target_position3d;\n// in float radius;\nin vec4 color;\nin float dash_ratio;\nin float dash_opacity;\n\nout float interpolation;\nout vec4 v_color;\nout float v_dash_ratio;\nout float v_dash_opacity;\nvoid main() {\n interpolation = float( gl_VertexID ) / ").concat(EDGE_COUNT_ON_SPHERE, ".0;\n if ( is3D ) {\n float angle = PI * 2.0 * interpolation;\n vec3 position = circleOnSphere(center_position3d, target_position3d, angle);\n gl_Position = cartesian3DToGLPosition(position);\n } else {\n return;\n }\n v_dash_ratio = dash_ratio;\n v_dash_opacity = dash_opacity;\n v_color = color;\n gl_PointSize = 3.0;\n}");
21
- var fragmentShaderSource = "#version 300 es\n".concat(geometrytransformations_1.POLE, "\nprecision highp float;\nuniform float opacity;\nin vec4 v_color;\nin float v_dash_ratio;\nin float v_dash_opacity;\nin float interpolation;\nin vec2 v_limp;\nout vec4 color;\nvoid main() {\n color = v_color;\n color.a *= opacity;\n if ( v_dash_ratio == 1.0 || v_dash_ratio == 0.0 ) return;\n if (fract(interpolation / (2.0 * v_dash_ratio)) < 0.5 ) {\n color.a *= v_dash_opacity;\n } \n}\n");
22
- var Logic = /** @class */ (function () {
23
- function Logic(globe) {
17
+ const vertexShaderSource = `#version 300 es
18
+ precision highp float;
19
+ ${PI}
20
+ ${CameraUniformBlockString}
21
+ ${cartesian3DToGLPosition}
22
+ ${circleOnSphere}
23
+
24
+ uniform float edge_count;
25
+
26
+ in vec3 center_position3d;
27
+ in vec3 target_position3d;
28
+ // in float radius;
29
+ in vec4 color;
30
+ in float dash_ratio;
31
+ in float dash_opacity;
32
+
33
+ out float interpolation;
34
+ out vec4 v_color;
35
+ out float v_dash_ratio;
36
+ out float v_dash_opacity;
37
+ void main() {
38
+ interpolation = float( gl_VertexID ) / ${EDGE_COUNT_ON_SPHERE}.0;
39
+ if ( is3D ) {
40
+ float angle = PI * 2.0 * interpolation;
41
+ vec3 position = circleOnSphere(center_position3d, target_position3d, angle);
42
+ gl_Position = cartesian3DToGLPosition(position);
43
+ } else {
44
+ return;
45
+ }
46
+ v_dash_ratio = dash_ratio;
47
+ v_dash_opacity = dash_opacity;
48
+ v_color = color;
49
+ gl_PointSize = 3.0;
50
+ }`;
51
+ const fragmentShaderSource = `#version 300 es
52
+ ${POLE}
53
+ precision highp float;
54
+ uniform float opacity;
55
+ in vec4 v_color;
56
+ in float v_dash_ratio;
57
+ in float v_dash_opacity;
58
+ in float interpolation;
59
+ in vec2 v_limp;
60
+ out vec4 color;
61
+ void main() {
62
+ color = v_color;
63
+ color.a *= opacity;
64
+ if ( v_dash_ratio == 1.0 || v_dash_ratio == 0.0 ) return;
65
+ if (fract(interpolation / (2.0 * v_dash_ratio)) < 0.5 ) {
66
+ color.a *= v_dash_opacity;
67
+ }
68
+ }
69
+ `;
70
+ class Logic {
71
+ constructor(globe) {
24
72
  this.globe = globe;
25
73
  this.gl = globe.gl;
26
74
  this._lastOpacity = 1.0;
27
- this.program = (0, webglobjectbuilders_1.createProgram)(this.gl, vertexShaderSource, fragmentShaderSource);
28
- var _a = this, gl = _a.gl, program = _a.program;
75
+ this.program = createProgram(this.gl, vertexShaderSource, fragmentShaderSource);
76
+ const { gl, program } = this;
29
77
  this.program.uniforms = {
30
78
  opacity: gl.getUniformLocation(program, "opacity")
31
79
  };
32
80
  { // initial uniform values
33
- var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
81
+ const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
34
82
  gl.useProgram(program);
35
83
  gl.uniform1f(program.uniforms.opacity, 1.0);
36
84
  gl.useProgram(currentProgram);
@@ -43,27 +91,27 @@ var Logic = /** @class */ (function () {
43
91
  gl.bindAttribLocation(program, 4, "dash_opacity");
44
92
  }
45
93
  this.cameraBindingPoint = 0;
46
- this.cameraBlockTotem = camerauniformblock_1.CameraUniformBlockTotemCache.get(globe);
47
- var cameraBlockLocation = gl.getUniformBlockIndex(program, "CameraUniformBlock");
94
+ this.cameraBlockTotem = CameraUniformBlockTotemCache.get(globe);
95
+ const cameraBlockLocation = gl.getUniformBlockIndex(program, "CameraUniformBlock");
48
96
  gl.uniformBlockBinding(program, cameraBlockLocation, this.cameraBindingPoint);
49
97
  }
50
- Logic.prototype.createVAO = function (center3dObj, target3dObj, colorObj, dashRatioObj, dashOpacityObj) {
51
- var gl = this.gl;
52
- var vao = gl.createVertexArray();
53
- var divisor = 1;
98
+ createVAO(center3dObj, target3dObj, colorObj, dashRatioObj, dashOpacityObj) {
99
+ const { gl } = this;
100
+ const vao = gl.createVertexArray();
101
+ const divisor = 1;
54
102
  gl.bindVertexArray(vao);
55
- (0, attribute_loader_1.attributeLoader)(gl, center3dObj, 0, 3, { divisor: divisor });
56
- (0, attribute_loader_1.attributeLoader)(gl, target3dObj, 1, 3, { divisor: divisor });
103
+ attributeLoader(gl, center3dObj, 0, 3, { divisor });
104
+ attributeLoader(gl, target3dObj, 1, 3, { divisor });
57
105
  // attributeLoader(gl, radiusObj, 1, 1, { divisor });
58
- (0, attribute_loader_1.attributeLoader)(gl, colorObj, 2, 4, { divisor: divisor });
59
- (0, attribute_loader_1.attributeLoader)(gl, dashRatioObj, 3, 1, { divisor: divisor });
60
- (0, attribute_loader_1.attributeLoader)(gl, dashOpacityObj, 4, 1, { divisor: divisor });
106
+ attributeLoader(gl, colorObj, 2, 4, { divisor });
107
+ attributeLoader(gl, dashRatioObj, 3, 1, { divisor });
108
+ attributeLoader(gl, dashOpacityObj, 4, 1, { divisor });
61
109
  gl.bindVertexArray(null);
62
110
  gl.bindVertexArray(null);
63
111
  return vao;
64
- };
65
- Logic.prototype.draw = function (vao, length, opacity) {
66
- var _a = this, gl = _a.gl, program = _a.program, cameraBlockTotem = _a.cameraBlockTotem, cameraBindingPoint = _a.cameraBindingPoint;
112
+ }
113
+ draw(vao, length, opacity) {
114
+ const { gl, program, cameraBlockTotem, cameraBindingPoint } = this;
67
115
  gl.useProgram(program);
68
116
  if (this._lastOpacity !== opacity) {
69
117
  gl.uniform1f(program.uniforms.opacity, opacity);
@@ -75,17 +123,16 @@ var Logic = /** @class */ (function () {
75
123
  // gl.drawArraysInstanced(gl.POINTS, 0, EDGE_COUNT_ON_SPHERE + 1, length);
76
124
  cameraBlockTotem.unbind(cameraBindingPoint);
77
125
  gl.bindVertexArray(null);
78
- };
79
- Logic.prototype.free = function () {
126
+ }
127
+ free() {
80
128
  if (this.isFreed)
81
129
  return;
82
- camerauniformblock_1.CameraUniformBlockTotemCache.release(this.globe);
130
+ CameraUniformBlockTotemCache.release(this.globe);
83
131
  this.gl.deleteProgram(this.program);
84
132
  this.isFreed = true;
85
- };
86
- return Logic;
87
- }());
88
- exports.CircleCache = Object.freeze({
89
- get: function (globe) { return programcache_1.noRegisterGlobeProgramCache.getProgram(globe, Logic); },
90
- release: function (globe) { return programcache_1.noRegisterGlobeProgramCache.releaseProgram(globe, Logic); }
133
+ }
134
+ }
135
+ export const CircleCache = Object.freeze({
136
+ get: (globe) => noRegisterGlobeProgramCache.getProgram(globe, Logic),
137
+ release: (globe) => noRegisterGlobeProgramCache.releaseProgram(globe, Logic)
91
138
  });