@pirireis/webglobeplugins 0.6.48-a → 0.7.0

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 (32) hide show
  1. package/Math/angle-calculation.js +4 -2
  2. package/Math/methods.js +197 -0
  3. package/package.json +1 -1
  4. package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +78 -0
  5. package/point-heat-map/index.js +0 -0
  6. package/point-heat-map/plugin-webworker.js +162 -0
  7. package/point-heat-map/plugin.js +134 -0
  8. package/point-heat-map/point-to-heat-map-flow.js +155 -0
  9. package/point-heat-map/readme.md +15 -0
  10. package/programs/data2legend/density-to-legend.js +115 -0
  11. package/programs/data2legend/point-to-density-texture.js +114 -0
  12. package/programs/line-on-globe/degree-padding-around-circle-3d.js +4 -4
  13. package/rangerings/rangeringangletext.js +15 -16
  14. package/timetracks/adaptors-line-strip.js +1 -1
  15. package/timetracks/program-line-strip.js +1 -1
  16. package/timetracks/program.js +1 -1
  17. package/timetracks/programpoint-line-strip.js +1 -1
  18. package/timetracks/programpoint.js +1 -1
  19. package/timetracks/readme.md +1 -0
  20. package/util/algorithms/index.js +0 -0
  21. package/util/algorithms/search-binary.js +26 -0
  22. package/util/interpolation/index.js +0 -0
  23. package/util/interpolation/timetrack/index.js +0 -0
  24. package/util/interpolation/timetrack/timetrack-interpolator.js +89 -0
  25. package/util/interpolation/timetrack/web-worker.js +46 -0
  26. package/util/programs/draw-texture-on-canvas.js +103 -0
  27. package/util/programs/texturetoglobe.js +1 -1
  28. package/util/webglobe/gldefaultstates.js +2 -1
  29. package/waveparticles/plugin.js +0 -2
  30. package/wind/index.js +0 -2
  31. package/wind/plugin.js +1 -1
  32. package/write-text/context-text3.js +1 -1
@@ -0,0 +1,46 @@
1
+ import { TimeTrackInterpolator, GEOMETRY } from './timetrack-interpolator';
2
+
3
+
4
+ const interpolator = new TimeTrackInterpolator({ geometry: GEOMETRY.CARTESIAN3D });
5
+
6
+ /* eslint-disable-next-line no-restricted-globals */
7
+ self.onmessage = function (e) {
8
+
9
+ const { geometry = null, timeTracks = null, time = null } = e.data;
10
+
11
+ if (geometry !== null) {
12
+ try {
13
+ interpolator.setGeometry(geometry);
14
+ } catch (error) {
15
+ /* eslint-disable-next-line no-restricted-globals */
16
+ self.postMessage({ error: error.message });
17
+ return;
18
+ }
19
+ }
20
+
21
+ if (timeTracks !== null) {
22
+ try {
23
+ interpolator.setTimetracks(timeTracks);
24
+ } catch (error) {
25
+ /* eslint-disable-next-line no-restricted-globals */
26
+ self.postMessage({ error: error.message });
27
+ return;
28
+ }
29
+ }
30
+
31
+ if (time !== null) {
32
+ try {
33
+ const result = interpolator.interpolate(time);
34
+ /* eslint-disable-next-line no-restricted-globals */
35
+ self.postMessage(result, [result.buffer]);
36
+ return;
37
+ } catch (error) {
38
+ /* eslint-disable-next-line no-restricted-globals */
39
+ self.postMessage({ error: error.message });
40
+ return;
41
+ }
42
+ }
43
+ /* eslint-disable-next-line no-restricted-globals */
44
+ self.postMessage(true);
45
+ }
46
+
@@ -0,0 +1,103 @@
1
+ import { createProgram } from "../webglobjectbuilders";
2
+ import { noRegisterGlobeProgramCache } from "../../programs";
3
+ // import { CameraUniformBlockTotemCache, CameraUniformBlockString } from "../../programs/totems";
4
+
5
+
6
+ const vs = `#version 300 es
7
+ precision highp float;
8
+
9
+ in vec2 a_position;
10
+ out vec2 v_texcoord;
11
+
12
+ void main() {
13
+ gl_Position = vec4(a_position, 0.0, 1.0);
14
+ v_texcoord = a_position * 0.5 + 0.5;
15
+ }`;
16
+
17
+ const fs = `#version 300 es
18
+ precision highp float;
19
+
20
+ uniform sampler2D u_texture;
21
+ uniform float u_opacity;
22
+ in vec2 v_texcoord;
23
+ out vec4 fragColor;
24
+
25
+ void main() {
26
+ fragColor = texture(u_texture, v_texcoord);
27
+ fragColor.a *= u_opacity;
28
+ }`;
29
+
30
+
31
+
32
+ class TextureOnCanvasProgram {
33
+ constructor(globe) {
34
+ this.globe = globe;
35
+ this.gl = globe.gl;
36
+
37
+ this.vao = this.gl.createVertexArray();
38
+ this.buffer = this.gl.createBuffer();
39
+ this.gl.bindVertexArray(this.vao);
40
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.buffer);
41
+ this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([
42
+ -1, -1,
43
+ 1, -1,
44
+ 1, 1,
45
+ -1, 1
46
+ ]), this.gl.STATIC_DRAW);
47
+ this.gl.enableVertexAttribArray(0);
48
+ this.gl.vertexAttribPointer(0, 2, this.gl.FLOAT, false, 0, 0);
49
+ this.gl.bindVertexArray(null);
50
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
51
+
52
+ this.program = createProgram(this.gl, vs, fs);
53
+
54
+ {
55
+ const { gl, program } = this;
56
+ this.uniforms = {
57
+ texture: gl.getUniformLocation(program, "u_texture"),
58
+ opacity: gl.getUniformLocation(program, "u_opacity"),
59
+ }
60
+ }
61
+ {
62
+ this._lastOpacity = 1.0;
63
+ const currentProgram = this.gl.getParameter(this.gl.CURRENT_PROGRAM);
64
+ this.gl.useProgram(this.program);
65
+ this.gl.uniform1f(this.uniforms.opacity, this._lastOpacity);
66
+ this.gl.useProgram(currentProgram);
67
+ }
68
+ }
69
+
70
+
71
+ draw(texture, { opacity = 1.0 } = {}) {
72
+
73
+ const { gl, program, uniforms, vao } = this;
74
+ gl.useProgram(program);
75
+ gl.bindVertexArray(vao);
76
+ gl.activeTexture(gl.TEXTURE0);
77
+ gl.bindTexture(gl.TEXTURE_2D, texture);
78
+ gl.uniform1i(uniforms.texture, 0);
79
+ if (this._lastOpacity !== opacity) {
80
+ gl.uniform1f(uniforms.opacity, opacity);
81
+ this._lastOpacity = opacity;
82
+ }
83
+ gl.drawArrays(gl.TRIANGLE_FAN, 0, 4);
84
+ gl.bindVertexArray(null);
85
+ }
86
+
87
+ free() {
88
+ if (this._isFreed) return;
89
+ this.gl.deleteVertexArray(this.vao);
90
+ this.gl.deleteBuffer(this.buffer);
91
+ this.gl.deleteProgram(this.program);
92
+ this._isFreed = true;
93
+ }
94
+
95
+ }
96
+
97
+ const textureOnCanvasProgramCache = Object.freeze({
98
+ get: (globe) => noRegisterGlobeProgramCache.getProgram(globe, TextureOnCanvasProgram),
99
+ release: (program) => noRegisterGlobeProgramCache.releaseProgram(program)
100
+ });
101
+
102
+
103
+ export { textureOnCanvasProgramCache };
@@ -4,7 +4,7 @@ import { latLongBboxtoPixelXYBbox } from "..";
4
4
  /** TODO:
5
5
  * 3d icin calistir
6
6
  */
7
-
7
+ //TODO: DELETE THIS FILE.
8
8
 
9
9
  class TextureToGlobeProgram {
10
10
  constructor(gl, globe) {
@@ -1,4 +1,5 @@
1
1
 
2
2
  export function defaultblendfunction(gl) {
3
- gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA)
3
+ gl.blendEquation(gl.FUNC_ADD); // TODO: TESTING THIS
4
+ gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
4
5
  }
@@ -54,8 +54,6 @@ export default class Plugin {
54
54
  this.gl = gl;
55
55
  this.moveParticle = new MoveParticle(gl);
56
56
  this.drawParticle = new DrawParticle(gl);
57
- // this.moveParticle = glProgramCache.getProgram(gl, MoveParticle); // TODO: create with glProgramCache and free later on.
58
- // this.drawParticle = glProgramCache.getProgram(gl, DrawParticle);
59
57
 
60
58
 
61
59
  this.fadeAway = new FadeAway(gl);
package/wind/index.js CHANGED
@@ -3,5 +3,3 @@ import createVectorFieldImage from "./vectorfieldimage";
3
3
  import imageToMagnitude from "./imagetovectorfieldandmagnitude";
4
4
  import { createImageFromBase64 } from "../util/webglobjectbuilders";
5
5
  export { createVectorFieldImage, imageToMagnitude, WindPlugin, createImageFromBase64 };
6
-
7
- // TODO: image resmindeki degerlerden ruzgar siddetinin magnitudunun hesaplanip float32array donderen bir fonksiyonun yazilmasi gerekiyor
package/wind/plugin.js CHANGED
@@ -486,7 +486,7 @@ export default class WindPlugin {
486
486
  if (gl == null) {
487
487
  throw new Error("wind plugin. setColorRampFromService is called before plugin is registered.");
488
488
  }
489
- const { thresholds, values } = legendData; // TODO: values should be in hex format
489
+ const { thresholds, values } = legendData;
490
490
  if (thresholds.length == 0 || values.length == 0) {
491
491
  return;
492
492
  }
@@ -86,7 +86,7 @@ export class ContextTextWriter3 {
86
86
 
87
87
  setStyle(style) {
88
88
  isTextFont(style.textFont);
89
- opacityCheck(style.opacity);
89
+ opacityCheck(style.opacity); //TODO: use shallow copy
90
90
  this.style = style;
91
91
  this.globe.DrawRender();
92
92
  }