@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,19 +1,21 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CameraUniformBlockTotemCache = exports.CameraUniformBlockString = void 0;
4
- var programcache_1 = require("../programcache");
1
+ import { globeProgramCache } from "../programcache";
5
2
  // Loads mouse position to buffer
6
3
  // TODO implement it
7
- exports.CameraUniformBlockString = "\nlayout(std140) uniform GpuSelectionUniformBlock {\n vec2 mouse_pixel_position;\n vec2 mouse_radian_long_lat;\n}; // 11 lines\n";
8
- var CameraUniformBlockTotem = /** @class */ (function () {
9
- function CameraUniformBlockTotem() {
4
+ export const CameraUniformBlockString = `
5
+ layout(std140) uniform GpuSelectionUniformBlock {
6
+ vec2 mouse_pixel_position;
7
+ vec2 mouse_radian_long_lat;
8
+ }; // 11 lines
9
+ `;
10
+ export default class CameraUniformBlockTotem {
11
+ constructor() {
10
12
  this.id = "CameraUniformBlockTotem";
11
- this.description = "Sets a uniform block and provides buffer for it. The following is the glsl uniform block:" + exports.CameraUniformBlockString;
13
+ this.description = `Sets a uniform block and provides buffer for it. The following is the glsl uniform block:` + CameraUniformBlockString;
12
14
  this.gl = null;
13
15
  this.globe = null;
14
16
  this.ubo = null;
15
17
  }
16
- CameraUniformBlockTotem.prototype.init = function (globe, gl) {
18
+ init(globe, gl) {
17
19
  this.gl = gl;
18
20
  this.globe = globe;
19
21
  this.ubo = this._createUBO();
@@ -21,30 +23,30 @@ var CameraUniformBlockTotem = /** @class */ (function () {
21
23
  this.mapWHFloat32 = new Float32Array(2);
22
24
  this.setGeometry();
23
25
  this.resize();
24
- };
25
- CameraUniformBlockTotem.prototype._createUBO = function () {
26
- var gl = this.gl;
27
- var ubo = gl.createBuffer();
26
+ }
27
+ _createUBO() {
28
+ const { gl } = this;
29
+ const ubo = gl.createBuffer();
28
30
  gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
29
31
  gl.bufferData(gl.UNIFORM_BUFFER, 164, gl.STREAM_DRAW);
30
32
  gl.bindBufferBase(gl.UNIFORM_BUFFER, 0, ubo);
31
33
  gl.bindBuffer(gl.UNIFORM_BUFFER, null);
32
34
  return ubo;
33
- };
34
- CameraUniformBlockTotem.prototype.resize = function () {
35
- var _a = this, gl = _a.gl, globe = _a.globe, ubo = _a.ubo;
35
+ }
36
+ resize() {
37
+ const { gl, globe, ubo } = this;
36
38
  gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
37
39
  gl.bufferSubData(gl.UNIFORM_BUFFER, 152, new Float32Array([globe.api_ScrW(), globe.api_ScrH()]));
38
40
  gl.bindBuffer(gl.UNIFORM_BUFFER, null);
39
- };
40
- CameraUniformBlockTotem.prototype.setGeometry = function () {
41
- var _a = this, gl = _a.gl, globe = _a.globe, ubo = _a.ubo;
42
- var is3D = globe.api_GetCurrentGeometry() === 0;
41
+ }
42
+ setGeometry() {
43
+ const { gl, globe, ubo } = this;
44
+ const is3D = globe.api_GetCurrentGeometry() === 0;
43
45
  gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
44
46
  gl.bufferSubData(gl.UNIFORM_BUFFER, 140, new Float32Array([is3D]));
45
- };
46
- CameraUniformBlockTotem.prototype.draw3D = function (projection, modelView, translate) {
47
- var _a = this, gl = _a.gl, traslateFloat32 = _a.traslateFloat32, ubo = _a.ubo, mapWHFloat32 = _a.mapWHFloat32, globe = _a.globe;
47
+ }
48
+ draw3D(projection, modelView, translate) {
49
+ const { gl, traslateFloat32, ubo, mapWHFloat32, globe } = this;
48
50
  gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
49
51
  { // view, projection, translate
50
52
  gl.bufferSubData(gl.UNIFORM_BUFFER, 0, modelView);
@@ -58,30 +60,30 @@ var CameraUniformBlockTotem = /** @class */ (function () {
58
60
  }
59
61
  { // mapWH
60
62
  if (globe.api_GetCurrentGeometry() === 1) {
61
- var _b = globe.api_GetCurrentWorldWH(), width = _b.width, height = _b.height;
63
+ const { width, height } = globe.api_GetCurrentWorldWH();
62
64
  mapWHFloat32.set([width, height]);
63
65
  gl.bufferSubData(gl.UNIFORM_BUFFER, 144, mapWHFloat32);
64
66
  }
65
67
  }
66
68
  gl.bindBuffer(gl.UNIFORM_BUFFER, null);
67
- };
68
- CameraUniformBlockTotem.prototype.getUBO = function () {
69
+ }
70
+ getUBO() {
69
71
  return this.ubo;
70
- };
71
- CameraUniformBlockTotem.prototype.bind = function (bindingPoint) {
72
- var _a = this, gl = _a.gl, ubo = _a.ubo;
72
+ }
73
+ bind(bindingPoint) {
74
+ const { gl, ubo } = this;
73
75
  gl.bindBufferBase(gl.UNIFORM_BUFFER, bindingPoint, ubo);
74
- };
75
- CameraUniformBlockTotem.prototype.unbind = function (bindingPoint) {
76
- var gl = this.gl;
76
+ }
77
+ unbind(bindingPoint) {
78
+ const { gl } = this;
77
79
  gl.bindBufferBase(gl.UNIFORM_BUFFER, bindingPoint, null);
78
- };
79
- CameraUniformBlockTotem.prototype.free = function () {
80
- var _a = this, gl = _a.gl, ubo = _a.ubo;
80
+ }
81
+ free() {
82
+ const { gl, ubo } = this;
81
83
  gl.deleteBuffer(ubo);
82
- };
83
- CameraUniformBlockTotem.prototype.readBuffer = function () {
84
- var result = new Float32Array(41);
84
+ }
85
+ readBuffer() {
86
+ const result = new Float32Array(41);
85
87
  this.gl.bindBuffer(this.gl.UNIFORM_BUFFER, this.ubo);
86
88
  this.gl.getBufferSubData(this.gl.UNIFORM_BUFFER, 0, result);
87
89
  this.gl.bindBuffer(this.gl.UNIFORM_BUFFER, null);
@@ -94,11 +96,9 @@ var CameraUniformBlockTotem = /** @class */ (function () {
94
96
  screenWH: result.slice(38, 40),
95
97
  z_level: result[40]
96
98
  };
97
- };
98
- return CameraUniformBlockTotem;
99
- }());
100
- exports.default = CameraUniformBlockTotem;
101
- exports.CameraUniformBlockTotemCache = Object.freeze({
102
- get: function (globe) { return programcache_1.globeProgramCache.getProgram(globe, CameraUniformBlockTotem); },
103
- release: function (globe) { return programcache_1.globeProgramCache.releaseProgram(globe, CameraUniformBlockTotem); }
99
+ }
100
+ }
101
+ export const CameraUniformBlockTotemCache = Object.freeze({
102
+ get: (globe) => { return globeProgramCache.getProgram(globe, CameraUniformBlockTotem); },
103
+ release: (globe) => { return globeProgramCache.releaseProgram(globe, CameraUniformBlockTotem); }
104
104
  });
@@ -1,40 +1,2 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.CameraUniformBlockTotemCache = exports.CameraUniformBlockString = exports.CameraUniformBlockTotem = void 0;
37
- var camerauniformblock_1 = __importStar(require("./camerauniformblock"));
38
- exports.CameraUniformBlockTotem = camerauniformblock_1.default;
39
- Object.defineProperty(exports, "CameraUniformBlockString", { enumerable: true, get: function () { return camerauniformblock_1.CameraUniformBlockString; } });
40
- Object.defineProperty(exports, "CameraUniformBlockTotemCache", { enumerable: true, get: function () { return camerauniformblock_1.CameraUniformBlockTotemCache; } });
1
+ import CameraUniformBlockTotem, { CameraUniformBlockString, CameraUniformBlockTotemCache } from "./camerauniformblock";
2
+ export { CameraUniformBlockTotem, CameraUniformBlockString, CameraUniformBlockTotemCache };
@@ -1,19 +1,78 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PixelPaddingForFlatCompassCache = void 0;
4
- var util_1 = require("../../util");
5
- var totems_1 = require("../totems");
6
- var programcache_1 = require("../programcache");
7
- var vertexCount = 720;
8
- var vertexShaderSource = "#version 300 es\n".concat(totems_1.CameraUniformBlockString, "\n\nin vec2 screen_coordinate;\nin float pixel_radius_small_ratio;\nin float pixel_radius_big_ratio;\nin vec4 rgba;\nout vec4 v_rgba;\nuniform float plugin_opacity;\n\nvec3 coord_opacity(){\n float radius;\n float angle;\n float gap = (pixel_radius_big_ratio - pixel_radius_small_ratio);\n if( gl_VertexID % 2 == 0){\n // if( gl_VertexID % 180 == 0){\n // radius = pixel_radius_small_ratio ;\n // } else\n if ( gl_VertexID % 60 == 0){\n radius = pixel_radius_small_ratio; \n } else if( gl_VertexID % 10 == 0) {\n radius = pixel_radius_small_ratio + gap * 0.5;\n } else {\n radius = pixel_radius_small_ratio + gap* 0.75;\n }\n angle = (float(gl_VertexID) / (").concat(vertexCount, ".0));\n } else {\n if ( gl_VertexID % 180 == 1){\n radius = pixel_radius_big_ratio + gap * 0.1;\n\n } else {\n radius = pixel_radius_big_ratio;\n }\n angle = (float(gl_VertexID - 1) / (").concat(vertexCount, ".0));\n }\n float opacity = fract(angle + 0.2475) / 1.5 + 0.33;\n angle = angle * ").concat(Math.PI * 2.0, " + world_north_angle;\n radius = radius * min(screenWH.x, screenWH.y) / 2.0;;\n return vec3( screen_coordinate + vec2( cos(angle), sin(angle)) * radius, opacity);\n}\n\nvec2 adjust_pos(vec2 pos) {\n return vec2(\n (pos.x / screenWH.x - 0.5) * 2.0,\n (0.5 - pos.y / screenWH.y) * 2.0\n );\n}\n\nvoid main(){\n vec3 c = coord_opacity();\n gl_Position = vec4( adjust_pos(c.xy), 0.0, 1.0);\n v_rgba = rgba;\n v_rgba.a *= plugin_opacity;\n gl_PointSize = 10.0;\n}\n");
9
- var fragmentShaderSource = "#version 300 es\nprecision highp float;\nin vec4 v_rgba;\nout vec4 color;\nvoid main(){\n color = v_rgba;\n}\n";
10
- var Logic = /** @class */ (function () {
11
- function Logic(globe) {
1
+ import { createProgram } from "../../util";
2
+ import { CameraUniformBlockTotemCache, CameraUniformBlockString } from "../totems";
3
+ import { noRegisterGlobeProgramCache } from "../programcache";
4
+ const vertexCount = 720;
5
+ const vertexShaderSource = `#version 300 es
6
+ ${CameraUniformBlockString}
7
+
8
+ in vec2 screen_coordinate;
9
+ in float pixel_radius_small_ratio;
10
+ in float pixel_radius_big_ratio;
11
+ in vec4 rgba;
12
+ out vec4 v_rgba;
13
+ uniform float plugin_opacity;
14
+
15
+ vec3 coord_opacity(){
16
+ float radius;
17
+ float angle;
18
+ float gap = (pixel_radius_big_ratio - pixel_radius_small_ratio);
19
+ if( gl_VertexID % 2 == 0){
20
+ // if( gl_VertexID % 180 == 0){
21
+ // radius = pixel_radius_small_ratio ;
22
+ // } else
23
+ if ( gl_VertexID % 60 == 0){
24
+ radius = pixel_radius_small_ratio;
25
+ } else if( gl_VertexID % 10 == 0) {
26
+ radius = pixel_radius_small_ratio + gap * 0.5;
27
+ } else {
28
+ radius = pixel_radius_small_ratio + gap* 0.75;
29
+ }
30
+ angle = (float(gl_VertexID) / (${vertexCount}.0));
31
+ } else {
32
+ if ( gl_VertexID % 180 == 1){
33
+ radius = pixel_radius_big_ratio + gap * 0.1;
34
+
35
+ } else {
36
+ radius = pixel_radius_big_ratio;
37
+ }
38
+ angle = (float(gl_VertexID - 1) / (${vertexCount}.0));
39
+ }
40
+ float opacity = fract(angle + 0.2475) / 1.5 + 0.33;
41
+ angle = angle * ${Math.PI * 2.0} + world_north_angle;
42
+ radius = radius * min(screenWH.x, screenWH.y) / 2.0;;
43
+ return vec3( screen_coordinate + vec2( cos(angle), sin(angle)) * radius, opacity);
44
+ }
45
+
46
+ vec2 adjust_pos(vec2 pos) {
47
+ return vec2(
48
+ (pos.x / screenWH.x - 0.5) * 2.0,
49
+ (0.5 - pos.y / screenWH.y) * 2.0
50
+ );
51
+ }
52
+
53
+ void main(){
54
+ vec3 c = coord_opacity();
55
+ gl_Position = vec4( adjust_pos(c.xy), 0.0, 1.0);
56
+ v_rgba = rgba;
57
+ v_rgba.a *= plugin_opacity;
58
+ gl_PointSize = 10.0;
59
+ }
60
+ `;
61
+ const fragmentShaderSource = `#version 300 es
62
+ precision highp float;
63
+ in vec4 v_rgba;
64
+ out vec4 color;
65
+ void main(){
66
+ color = v_rgba;
67
+ }
68
+ `;
69
+ class Logic {
70
+ constructor(globe) {
12
71
  this.globe = globe;
13
72
  this.gl = globe.gl;
14
73
  this._lastOpacity = 1;
15
- this.program = (0, util_1.createProgram)(this.gl, vertexShaderSource, fragmentShaderSource);
16
- var _a = this, gl = _a.gl, program = _a.program;
74
+ this.program = createProgram(this.gl, vertexShaderSource, fragmentShaderSource);
75
+ const { gl, program } = this;
17
76
  { // assign attribute locations
18
77
  // in vec2 screen_coordinate;
19
78
  // in float pixel_radius_small_ratio;
@@ -26,20 +85,20 @@ var Logic = /** @class */ (function () {
26
85
  }
27
86
  {
28
87
  this._opacityLocation = gl.getUniformLocation(program, "plugin_opacity");
29
- var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
88
+ const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
30
89
  gl.useProgram(program);
31
90
  gl.uniform1f(this._opacityLocation, this._lastOpacity);
32
91
  gl.useProgram(currentProgram);
33
92
  }
34
93
  {
35
94
  this.cameraBlockBindingPoint = 0;
36
- var cameraBlockIndex = gl.getUniformBlockIndex(program, "CameraUniformBlock");
37
- this.cameraBlockTotem = totems_1.CameraUniformBlockTotemCache.get(globe);
95
+ const cameraBlockIndex = gl.getUniformBlockIndex(program, "CameraUniformBlock");
96
+ this.cameraBlockTotem = CameraUniformBlockTotemCache.get(globe);
38
97
  gl.uniformBlockBinding(program, cameraBlockIndex, this.cameraBlockBindingPoint);
39
98
  }
40
99
  }
41
- Logic.prototype.draw = function (vao, length, opacity) {
42
- var _a = this, globe = _a.globe, gl = _a.gl, program = _a.program, cameraBlockTotem = _a.cameraBlockTotem, cameraBlockBindingPoint = _a.cameraBlockBindingPoint, _opacityLocation = _a._opacityLocation;
100
+ draw(vao, length, opacity) {
101
+ const { globe, gl, program, cameraBlockTotem, cameraBlockBindingPoint, _opacityLocation } = this;
43
102
  if (globe.api_GetCurrentGeometry() === 0)
44
103
  return;
45
104
  gl.useProgram(program);
@@ -52,34 +111,34 @@ var Logic = /** @class */ (function () {
52
111
  gl.drawArraysInstanced(gl.LINES, 0, vertexCount, length);
53
112
  gl.bindVertexArray(null);
54
113
  cameraBlockTotem.unbind(cameraBlockBindingPoint);
55
- };
56
- Logic.prototype.createVAO = function (screenCoordsBufferObj, pixelRadiusRatioSmallBufferObj, pixelRadiusRatioBigBufferObj, rgbaBufferObj) {
57
- var gl = this.gl;
58
- var vao = gl.createVertexArray();
114
+ }
115
+ createVAO(screenCoordsBufferObj, pixelRadiusRatioSmallBufferObj, pixelRadiusRatioBigBufferObj, rgbaBufferObj) {
116
+ const { gl } = this;
117
+ const vao = gl.createVertexArray();
59
118
  gl.bindVertexArray(vao);
60
119
  {
61
- var buffer = screenCoordsBufferObj.buffer, _a = screenCoordsBufferObj.stride, stride = _a === void 0 ? 0 : _a, _b = screenCoordsBufferObj.offset, offset = _b === void 0 ? 0 : _b;
120
+ const { buffer, stride = 0, offset = 0 } = screenCoordsBufferObj;
62
121
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
63
122
  gl.enableVertexAttribArray(0);
64
123
  gl.vertexAttribPointer(0, 2, gl.FLOAT, false, stride, offset);
65
124
  gl.vertexAttribDivisor(0, 1);
66
125
  }
67
126
  {
68
- var buffer = pixelRadiusRatioSmallBufferObj.buffer, _c = pixelRadiusRatioSmallBufferObj.stride, stride = _c === void 0 ? 0 : _c, _d = pixelRadiusRatioSmallBufferObj.offset, offset = _d === void 0 ? 0 : _d;
127
+ const { buffer, stride = 0, offset = 0 } = pixelRadiusRatioSmallBufferObj;
69
128
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
70
129
  gl.enableVertexAttribArray(1);
71
130
  gl.vertexAttribPointer(1, 1, gl.FLOAT, false, stride, offset);
72
131
  gl.vertexAttribDivisor(1, 1);
73
132
  }
74
133
  {
75
- var buffer = pixelRadiusRatioBigBufferObj.buffer, _e = pixelRadiusRatioBigBufferObj.stride, stride = _e === void 0 ? 0 : _e, _f = pixelRadiusRatioBigBufferObj.offset, offset = _f === void 0 ? 0 : _f;
134
+ const { buffer, stride = 0, offset = 0 } = pixelRadiusRatioBigBufferObj;
76
135
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
77
136
  gl.enableVertexAttribArray(2);
78
137
  gl.vertexAttribPointer(2, 1, gl.FLOAT, false, stride, offset);
79
138
  gl.vertexAttribDivisor(2, 1);
80
139
  }
81
140
  {
82
- var buffer = rgbaBufferObj.buffer, _g = rgbaBufferObj.stride, stride = _g === void 0 ? 0 : _g, _h = rgbaBufferObj.offset, offset = _h === void 0 ? 0 : _h;
141
+ const { buffer, stride = 0, offset = 0 } = rgbaBufferObj;
83
142
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
84
143
  gl.enableVertexAttribArray(3);
85
144
  gl.vertexAttribPointer(3, 4, gl.FLOAT, false, stride, offset);
@@ -88,14 +147,13 @@ var Logic = /** @class */ (function () {
88
147
  gl.bindVertexArray(null);
89
148
  gl.bindBuffer(gl.ARRAY_BUFFER, null);
90
149
  return vao;
91
- };
92
- Logic.prototype.free = function () {
93
- var globe = this.globe;
94
- totems_1.CameraUniformBlockTotemCache.release(globe);
95
- };
96
- return Logic;
97
- }());
98
- exports.PixelPaddingForFlatCompassCache = Object.freeze({
99
- get: function (globe) { return programcache_1.noRegisterGlobeProgramCache.getProgram(globe, Logic); },
100
- release: function (globe) { return programcache_1.noRegisterGlobeProgramCache.releaseProgram(globe, Logic); }
150
+ }
151
+ free() {
152
+ const { globe } = this;
153
+ CameraUniformBlockTotemCache.release(globe);
154
+ }
155
+ }
156
+ export const PixelPaddingForFlatCompassCache = Object.freeze({
157
+ get: (globe) => noRegisterGlobeProgramCache.getProgram(globe, Logic),
158
+ release: (globe) => noRegisterGlobeProgramCache.releaseProgram(globe, Logic)
101
159
  });
package/programs/util.js CHANGED
@@ -1,18 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.longlatbbox2normalbbox = longlatbbox2normalbbox;
4
- function longlatbbox2normalbbox(_a) {
5
- var _b = _a === void 0 ? {} : _a, _c = _b.minLon, minLon = _c === void 0 ? -180 : _c, _d = _b.maxLon, maxLon = _d === void 0 ? 180 : _d, _e = _b.minLat, minLat = _e === void 0 ? -90 : _e, _f = _b.maxLat, maxLat = _f === void 0 ? 90 : _f;
1
+ function longlatbbox2normalbbox({ minLon = -180, maxLon = 180, minLat = -90, maxLat = 90 } = {}) {
6
2
  // x
7
- var horOffset = (minLon) * Math.PI / 180;
8
- var horSize = (maxLon - minLon) * Math.PI / 180;
3
+ const horOffset = (minLon) * Math.PI / 180;
4
+ const horSize = (maxLon - minLon) * Math.PI / 180;
9
5
  // y
10
- var vertOffset = (90 - maxLat) * Math.PI / 180;
11
- var vertSize = (maxLat - minLat) * Math.PI / 180;
12
- var result = {
6
+ const vertOffset = (90 - maxLat) * Math.PI / 180;
7
+ const vertSize = (maxLat - minLat) * Math.PI / 180;
8
+ const result = {
13
9
  bboxOffsetRad: new Float32Array([horOffset, vertOffset]),
14
10
  bboxSizeRad: new Float32Array([horSize, vertSize])
15
11
  };
16
12
  console.log("longlatbbox2normalbbox", result);
17
13
  return result;
18
14
  }
15
+ export { longlatbbox2normalbbox };
@@ -1,23 +1,3 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.PingPongBufferManager = void 0;
21
- var pingpongbuffermanager_1 = __importDefault(require("./pingpongbuffermanager"));
22
- exports.PingPongBufferManager = pingpongbuffermanager_1.default;
23
- __exportStar(require("./logics"), exports);
1
+ import PingPongBufferManager from './pingpongbuffermanager';
2
+ export * from './logics';
3
+ export { PingPongBufferManager };
@@ -1,35 +1,76 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var util_1 = require("../../../util");
4
- var ubo_js_1 = require("./ubo.js");
5
- var programcache_1 = require("../../programcache");
1
+ import { createProgram } from "../../../util";
2
+ import { UBO_BINDING_POINT, shaderUboSource } from "./ubo.js";
3
+ import { glProgramCache } from "../../programcache";
6
4
  /**
7
5
  * [+] ubo
8
6
  */
9
- var vertexShaderSource = "#version 300 es\nprecision highp float;\n" + ubo_js_1.shaderUboSource + "\nuniform sampler2D u_vector_field;\nin vec2 in_position;\nout vec3 base_color;\nvec2 lookup_wind(const vec2 uv) { // gerek kalmayabilir. sampler linear methodu ayni isi yapiyor \n // return texture(u_vector_field, uv).rg; // lower-res hardware filtering\n vec2 res = vec2(textureSize(u_vector_field, 0));\n vec2 px = 1.0 / res;\n vec2 vc = (floor(uv * res)) * px;\n vec2 f = fract(uv * res);\n vec2 tl = texture(u_vector_field, vc).rg;\n vec2 tr = texture(u_vector_field, vc + vec2(px.x, 0)).rg;\n vec2 bl = texture(u_vector_field, vc + vec2(0, px.y)).rg;\n vec2 br = texture(u_vector_field, vc + px).rg;\n return mix(mix(tl, tr, f.x), mix(bl, br, f.x), f.y);\n}\n\n\nvoid main(){\n vec2 direction_vector = lookup_wind(in_position);\n if (direction_vector.r == 0.0 && direction_vector.g == 0.0){ return;}\n\n vec2 limp;\n if ( 0 == gl_VertexID) { limp = -tail_wing_base_limp; }\n else if ( 1 == gl_VertexID) { limp = vec2( tail_wing_base_limp.x, -tail_wing_base_limp.y); }\n else if ( 2 == gl_VertexID) { limp = tail_wing_base_limp; }\n else { limp = vec2(-tail_wing_base_limp.x, tail_wing_base_limp.y); } // if ( 3 == gl_VertexID)\n\n limp = (limp * mat2( \n direction_vector.x, -direction_vector.y,\n direction_vector.y, direction_vector.x)) / draw_texture_size;\n\n vec2 pos = in_position * 2.0 - 1.0;\n gl_Position = vec4(pos + limp, 0.0, 1.0);\n base_color = color;\n}";
10
- var fragmentShaderSource = "#version 300 es\nprecision highp float;\nout vec4 outColor;\nin vec3 base_color;\nvoid main(){\n outColor = vec4(base_color, 1.0);\n}";
11
- var Logic = /** @class */ (function () {
12
- function Logic(gl) {
13
- var _a;
7
+ const vertexShaderSource = `#version 300 es
8
+ precision highp float;
9
+ ` + shaderUboSource + `
10
+ uniform sampler2D u_vector_field;
11
+ in vec2 in_position;
12
+ out vec3 base_color;
13
+ vec2 lookup_wind(const vec2 uv) { // gerek kalmayabilir. sampler linear methodu ayni isi yapiyor
14
+ // return texture(u_vector_field, uv).rg; // lower-res hardware filtering
15
+ vec2 res = vec2(textureSize(u_vector_field, 0));
16
+ vec2 px = 1.0 / res;
17
+ vec2 vc = (floor(uv * res)) * px;
18
+ vec2 f = fract(uv * res);
19
+ vec2 tl = texture(u_vector_field, vc).rg;
20
+ vec2 tr = texture(u_vector_field, vc + vec2(px.x, 0)).rg;
21
+ vec2 bl = texture(u_vector_field, vc + vec2(0, px.y)).rg;
22
+ vec2 br = texture(u_vector_field, vc + px).rg;
23
+ return mix(mix(tl, tr, f.x), mix(bl, br, f.x), f.y);
24
+ }
25
+
26
+
27
+ void main(){
28
+ vec2 direction_vector = lookup_wind(in_position);
29
+ if (direction_vector.r == 0.0 && direction_vector.g == 0.0){ return;}
30
+
31
+ vec2 limp;
32
+ if ( 0 == gl_VertexID) { limp = -tail_wing_base_limp; }
33
+ else if ( 1 == gl_VertexID) { limp = vec2( tail_wing_base_limp.x, -tail_wing_base_limp.y); }
34
+ else if ( 2 == gl_VertexID) { limp = tail_wing_base_limp; }
35
+ else { limp = vec2(-tail_wing_base_limp.x, tail_wing_base_limp.y); } // if ( 3 == gl_VertexID)
36
+
37
+ limp = (limp * mat2(
38
+ direction_vector.x, -direction_vector.y,
39
+ direction_vector.y, direction_vector.x)) / draw_texture_size;
40
+
41
+ vec2 pos = in_position * 2.0 - 1.0;
42
+ gl_Position = vec4(pos + limp, 0.0, 1.0);
43
+ base_color = color;
44
+ }`;
45
+ const fragmentShaderSource = `#version 300 es
46
+ precision highp float;
47
+ out vec4 outColor;
48
+ in vec3 base_color;
49
+ void main(){
50
+ outColor = vec4(base_color, 1.0);
51
+ }`;
52
+ class Logic {
53
+ constructor(gl) {
14
54
  this.gl = gl;
15
- _a = this._createProgram(), this.program = _a[0], this._vector_field_location = _a[1];
55
+ [this.program,
56
+ this._vector_field_location] = this._createProgram();
16
57
  // this.decoyBuffer = new DecoyBufferManager(gl);
17
58
  }
18
- Logic.prototype._createProgram = function () {
19
- var gl = this.gl;
20
- var program = (0, util_1.createProgram)(gl, vertexShaderSource, fragmentShaderSource);
59
+ _createProgram() {
60
+ const gl = this.gl;
61
+ const program = createProgram(gl, vertexShaderSource, fragmentShaderSource);
21
62
  // ubo point
22
- var ubo_location = gl.getUniformBlockIndex(program, 'UBO');
23
- gl.uniformBlockBinding(program, ubo_location, ubo_js_1.UBO_BINDING_POINT);
63
+ const ubo_location = gl.getUniformBlockIndex(program, 'UBO');
64
+ gl.uniformBlockBinding(program, ubo_location, UBO_BINDING_POINT);
24
65
  return [program, gl.getUniformLocation(program, 'u_vector_field')];
25
- };
66
+ }
26
67
  /**
27
68
  * @param {*} bufferManager | PingPongBufferManager
28
69
  * @param {*} vectorTexture | RG32F texture R: x, G: y
29
70
  * @param {*} uboManager | WaveParticalUboManager under ubo.js
30
71
  */
31
- Logic.prototype.draw = function (bufferManager, vectorTexture, uboManager) {
32
- var _a = this, gl = _a.gl, program = _a.program;
72
+ draw(bufferManager, vectorTexture, uboManager) {
73
+ const { gl, program } = this;
33
74
  gl.useProgram(program);
34
75
  gl.bindVertexArray(bufferManager.getSourceVao());
35
76
  // gl.bindVertexArray(this.decoyBuffer.getSourceVao());
@@ -41,26 +82,23 @@ var Logic = /** @class */ (function () {
41
82
  gl.drawArraysInstanced(gl.POINTS, 0, 4, bufferManager.length);
42
83
  gl.bindVertexArray(null);
43
84
  uboManager.unbind();
44
- };
45
- Logic.prototype.free = function () {
85
+ }
86
+ free() {
46
87
  this.gl.deleteProgram(this.program);
47
88
  this.program = null;
48
- };
49
- return Logic;
50
- }());
51
- var default_1 = /** @class */ (function () {
52
- function default_1(gl) {
89
+ }
90
+ }
91
+ export default class {
92
+ constructor(gl) {
53
93
  this.gl = gl;
54
- this.logic = programcache_1.glProgramCache.getProgram(gl, Logic);
94
+ this.logic = glProgramCache.getProgram(gl, Logic);
55
95
  }
56
- default_1.prototype.draw = function (bufferManager, vectorTexture, uboManager) {
96
+ draw(bufferManager, vectorTexture, uboManager) {
57
97
  this.logic.draw(bufferManager, vectorTexture, uboManager);
58
- };
59
- default_1.prototype.free = function () {
60
- programcache_1.glProgramCache.releaseProgram(this.gl, Logic);
98
+ }
99
+ free() {
100
+ glProgramCache.releaseProgram(this.gl, Logic);
61
101
  this.logic = null;
62
102
  this.gl = null;
63
- };
64
- return default_1;
65
- }());
66
- exports.default = default_1;
103
+ }
104
+ }
@@ -1,12 +1,4 @@
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.WaveParticalUboManager = exports.DrawRectangleParticles = exports.PixelBasedMove = void 0;
7
- var pixelbased_1 = __importDefault(require("./pixelbased"));
8
- exports.PixelBasedMove = pixelbased_1.default;
9
- var drawrectangleparticles_1 = __importDefault(require("./drawrectangleparticles"));
10
- exports.DrawRectangleParticles = drawrectangleparticles_1.default;
11
- var ubo_1 = require("./ubo");
12
- Object.defineProperty(exports, "WaveParticalUboManager", { enumerable: true, get: function () { return ubo_1.WaveParticalUboManager; } });
1
+ import PixelBasedMove from './pixelbased';
2
+ import DrawRectangleParticles from './drawrectangleparticles';
3
+ import { WaveParticalUboManager } from './ubo';
4
+ export { PixelBasedMove, DrawRectangleParticles, WaveParticalUboManager };