@pirireis/webglobeplugins 0.9.10 → 0.9.11
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.
- package/Math/angle-calculation.js +8 -8
- package/Math/arc.js +18 -18
- package/Math/bounds/line-bbox.js +80 -78
- package/Math/constants.js +3 -3
- package/Math/juction/arc-plane.js +23 -23
- package/Math/juction/line-sphere.js +11 -11
- package/Math/juction/plane-plane.js +11 -11
- package/Math/line.js +16 -14
- package/Math/methods.js +72 -67
- package/Math/plane.js +18 -16
- package/Math/quaternion.js +49 -45
- package/Math/utils.js +2 -2
- package/Math/vec3.js +45 -42
- package/algorithms/search-binary.js +4 -4
- package/altitude-locator/draw-subset-obj.js +8 -7
- package/altitude-locator/plugin.js +113 -97
- package/arrowfield/adaptor.js +4 -3
- package/arrowfield/index.js +2 -2
- package/arrowfield/plugin.js +65 -62
- package/bearing-line/index.js +1 -1
- package/bearing-line/plugin.js +225 -200
- package/circle-line-chain/chain-list-map.js +88 -82
- package/circle-line-chain/plugin.js +154 -129
- package/circle-line-chain/util.js +1 -1
- package/compass-rose/compass-rose-padding-flat.js +126 -104
- package/compass-rose/compass-text-writer.js +70 -62
- package/compass-rose/index.js +2 -2
- package/compassrose/compassrose.js +50 -46
- package/compassrose/index.js +1 -1
- package/heatwave/index.js +2 -2
- package/heatwave/isobar/objectarraylabels.js +48 -44
- package/heatwave/isobar/plugin.js +123 -104
- package/heatwave/isobar/quadtreecontours.js +92 -76
- package/heatwave/plugins/heatwaveglobeshell.js +87 -69
- package/index.js +11 -11
- package/package.json +1 -1
- package/partialrings/buffer-manager.js +64 -32
- package/partialrings/index.js +1 -1
- package/partialrings/plugin.js +84 -48
- package/partialrings/program.js +47 -136
- package/pin/pin-object-array.js +86 -83
- package/pin/pin-point-totem.js +22 -21
- package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +10 -10
- package/point-heat-map/plugin-webworker.js +45 -40
- package/point-heat-map/point-to-heat-map-flow.js +42 -40
- package/point-tracks/key-methods.js +1 -1
- package/point-tracks/plugin.js +142 -127
- package/programs/arrowfield/index.js +1 -1
- package/programs/arrowfield/logic.js +62 -170
- package/programs/arrowfield/object.js +35 -33
- package/programs/data2legend/density-to-legend.js +21 -45
- package/programs/data2legend/point-to-density-texture.js +27 -52
- package/programs/float2legendwithratio/index.js +1 -1
- package/programs/float2legendwithratio/logic.js +42 -88
- package/programs/float2legendwithratio/object.js +46 -43
- package/programs/globe-util/is-globe-moved.js +11 -10
- package/programs/globeshell/index.js +1 -1
- package/programs/globeshell/wiggle/index.js +1 -1
- package/programs/globeshell/wiggle/logic.js +98 -191
- package/programs/globeshell/wiggle/object.js +35 -33
- package/programs/helpers/blender/program.js +19 -36
- package/programs/helpers/fadeaway/index.js +1 -1
- package/programs/helpers/fadeaway/logic.js +13 -35
- package/programs/helpers/fadeaway/object.js +10 -9
- package/programs/helpers/index.js +1 -1
- package/programs/index.js +8 -8
- package/programs/line-on-globe/angled-line.js +32 -91
- package/programs/line-on-globe/circle-accurate-3d.js +32 -82
- package/programs/line-on-globe/circle-accurate-flat.js +50 -108
- package/programs/line-on-globe/circle-accurate.js +33 -103
- package/programs/line-on-globe/circle.js +32 -97
- package/programs/line-on-globe/degree-padding-around-circle-3d.js +33 -83
- package/programs/line-on-globe/lines-color-instanced-flat.js +34 -79
- package/programs/line-on-globe/linestrip.js +39 -100
- package/programs/line-on-globe/naive-accurate-flexible.js +48 -118
- package/programs/line-on-globe/to-the-surface.js +29 -58
- package/programs/line-on-globe/util.js +1 -1
- package/programs/picking/pickable-renderer.js +33 -117
- package/programs/point-on-globe/element-globe-surface-glow.js +38 -78
- package/programs/point-on-globe/element-point-glow.js +35 -103
- package/programs/point-on-globe/square-pixel-point.js +27 -76
- package/programs/programcache.js +13 -13
- package/programs/rings/distancering/circleflatprogram.js +21 -63
- package/programs/rings/distancering/circlepaddingfreeangleprogram.js +145 -156
- package/programs/rings/distancering/circlepaddysharedbuffer.js +197 -121
- package/programs/rings/distancering/index.js +4 -4
- package/programs/rings/distancering/paddyflatprogram.js +20 -73
- package/programs/rings/distancering/paddyflatprogram2d.js +22 -75
- package/programs/rings/distancering/paddyflatprogram3d.js +20 -73
- package/programs/rings/partial-ring/piece-of-pie.js +35 -137
- package/programs/totems/camerauniformblock.js +51 -64
- package/programs/totems/canvas-webglobe-info.js +40 -48
- package/programs/totems/gpu-selection-uniform-block.js +40 -44
- package/programs/totems/index.js +1 -1
- package/programs/two-d/pixel-padding-for-compass.js +29 -90
- package/programs/util.js +7 -6
- package/programs/vectorfields/index.js +1 -1
- package/programs/vectorfields/logics/drawrectangleparticles.js +29 -70
- package/programs/vectorfields/logics/index.js +3 -3
- package/programs/vectorfields/logics/pixelbased.js +35 -91
- package/programs/vectorfields/logics/ubo.js +25 -31
- package/programs/vectorfields/pingpongbuffermanager.js +34 -30
- package/rangerings/index.js +4 -4
- package/rangerings/plugin.js +252 -202
- package/rangerings/rangeringangletext.js +120 -108
- package/rangerings/ring-account.js +69 -52
- package/shaders/fragment-toy/firework.js +1 -55
- package/shaders/fragment-toy/singularity.js +1 -55
- package/timetracks/adaptors-line-strip.js +37 -26
- package/timetracks/adaptors.js +61 -47
- package/timetracks/index.js +4 -4
- package/timetracks/plugin-line-strip.js +63 -59
- package/timetracks/plugin.js +69 -65
- package/timetracks/program-line-strip.js +103 -296
- package/timetracks/program.js +113 -419
- package/timetracks/programpoint-line-strip.js +44 -97
- package/timetracks/programpoint.js +44 -90
- package/util/account/bufferoffsetmanager.js +95 -72
- package/util/account/index.js +1 -1
- package/util/account/single-attribute-buffer-management/buffer-manager.js +43 -39
- package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +94 -64
- package/util/account/single-attribute-buffer-management/index.js +3 -3
- package/util/account/single-attribute-buffer-management/object-store.js +30 -28
- package/util/account/util.js +4 -2
- package/util/algorithms/search-binary.js +4 -4
- package/util/check/get.js +5 -5
- package/util/check/typecheck.js +15 -13
- package/util/geometry/index.js +11 -9
- package/util/gl-util/buffer/attribute-loader.js +20 -8
- package/util/gl-util/buffer/index.js +1 -1
- package/util/gl-util/draw-options/methods.js +7 -7
- package/util/gl-util/uniform-block/manager.js +67 -55
- package/util/heatwavedatamanager/datamanager.js +116 -56
- package/util/heatwavedatamanager/index.js +2 -2
- package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +40 -37
- package/util/heatwavedatamanager/pointcoordsmeta.js +10 -9
- package/util/index.js +6 -6
- package/util/interpolation/timetrack/index.js +1 -1
- package/util/interpolation/timetrack/timetrack-interpolator.js +29 -27
- package/util/interpolation/timetrack/web-worker-str.js +1 -179
- package/util/interpolation/timetrack/web-worker.js +4 -4
- package/util/jshelpers/data-filler.js +7 -7
- package/util/jshelpers/timefilters.js +7 -7
- package/util/picking/fence.js +7 -7
- package/util/picking/picker-displayer.js +52 -46
- package/util/programs/draw-texture-on-canvas.js +21 -39
- package/util/programs/shapesonglobe.js +64 -104
- package/util/programs/supersampletotextures.js +39 -45
- package/util/programs/texturetoglobe.js +48 -98
- package/util/shaderfunctions/geometrytransformations.js +27 -322
- package/util/shaderfunctions/nodata.js +1 -7
- package/util/shaderfunctions/noisefunctions.js +9 -39
- package/util/surface-line-data/arcs-to-cuts.js +23 -20
- package/util/webglobe/rasteroverlay.js +37 -35
- package/util/webglobjectbuilders.js +60 -55
- package/util/webglobjectbuilders1.js +49 -48
- package/waveparticles/adaptor.js +7 -6
- package/waveparticles/index.js +2 -2
- package/waveparticles/plugin.js +84 -79
- package/wind/imagetovectorfieldandmagnitude.js +15 -15
- package/wind/index.js +4 -4
- package/wind/plugin.js +251 -453
- package/wind/vectorfieldimage.js +5 -5
- package/write-text/attached-text-writer.js +48 -46
- package/write-text/context-text.js +58 -51
- package/write-text/context-text3.js +74 -69
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.PickerDisplayer = void 0;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
var draw_texture_on_canvas_1 = require("../programs/draw-texture-on-canvas");
|
|
9
|
+
var fence_1 = require("./fence");
|
|
10
|
+
var ESCAPE_VALUE = -1;
|
|
11
|
+
var PickerDisplayer = /** @class */ (function () {
|
|
12
|
+
function PickerDisplayer(globe) {
|
|
13
13
|
this.globe = globe;
|
|
14
14
|
this.gl = globe.gl;
|
|
15
|
-
|
|
15
|
+
var gl = this.gl;
|
|
16
16
|
this.colorTexture = gl.createTexture(); // bind to color attachment 0
|
|
17
17
|
this.indexTexture = gl.createTexture(); // bind to color attachment 1
|
|
18
18
|
this.fbo = gl.createFramebuffer();
|
|
@@ -21,37 +21,39 @@ class PickerDisplayer {
|
|
|
21
21
|
this.resize();
|
|
22
22
|
this.displayer = draw_texture_on_canvas_1.textureOnCanvasProgramCache.get(this.gl);
|
|
23
23
|
}
|
|
24
|
-
resize
|
|
24
|
+
PickerDisplayer.prototype.resize = function (width, height) {
|
|
25
|
+
if (width === void 0) { width = null; }
|
|
26
|
+
if (height === void 0) { height = null; }
|
|
25
27
|
if (width === null || height === null) {
|
|
26
28
|
width = this.globe.api_ScrW();
|
|
27
29
|
height = this.globe.api_ScrH();
|
|
28
30
|
}
|
|
29
|
-
|
|
31
|
+
var _a = this, gl = _a.gl, colorTexture = _a.colorTexture, indexTexture = _a.indexTexture;
|
|
30
32
|
gl.deleteTexture(colorTexture);
|
|
31
33
|
gl.deleteTexture(indexTexture);
|
|
32
|
-
|
|
34
|
+
var colorTextureNew = gl.createTexture();
|
|
33
35
|
gl.bindTexture(gl.TEXTURE_2D, colorTextureNew);
|
|
34
36
|
gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA8, width, height);
|
|
35
|
-
|
|
37
|
+
var indexTextureNew = gl.createTexture();
|
|
36
38
|
gl.bindTexture(gl.TEXTURE_2D, indexTextureNew);
|
|
37
39
|
// gl.texStorage2D(gl.TEXTURE_2D, 1, gl.R16I, width, height);
|
|
38
40
|
gl.texStorage2D(gl.TEXTURE_2D, 1, gl.R32I, width, height);
|
|
39
41
|
gl.bindTexture(gl.TEXTURE_2D, null);
|
|
40
42
|
this.colorTexture = colorTextureNew;
|
|
41
43
|
this.indexTexture = indexTextureNew;
|
|
42
|
-
}
|
|
43
|
-
clearTextures() {
|
|
44
|
-
|
|
44
|
+
};
|
|
45
|
+
PickerDisplayer.prototype.clearTextures = function () {
|
|
46
|
+
var _a = this, gl = _a.gl, colorTexture = _a.colorTexture, indexTexture = _a.indexTexture;
|
|
45
47
|
gl.activeTexture(gl.TEXTURE1);
|
|
46
48
|
gl.bindTexture(gl.TEXTURE_2D, indexTexture);
|
|
47
49
|
gl.clearBufferiv(gl.COLOR, 1, new Int32Array([-1, -1, -1, -1]));
|
|
48
50
|
gl.activeTexture(gl.TEXTURE0);
|
|
49
51
|
gl.bindTexture(gl.TEXTURE_2D, colorTexture);
|
|
50
52
|
gl.clearBufferfv(gl.COLOR, 0, new Float32Array([0, 0, 0, 0]));
|
|
51
|
-
}
|
|
53
|
+
};
|
|
52
54
|
// call before drawing the scene with gl picker shader
|
|
53
|
-
bindFBO() {
|
|
54
|
-
|
|
55
|
+
PickerDisplayer.prototype.bindFBO = function () {
|
|
56
|
+
var _a = this, gl = _a.gl, colorTexture = _a.colorTexture, indexTexture = _a.indexTexture, fbo = _a.fbo;
|
|
55
57
|
gl.activeTexture(gl.TEXTURE1);
|
|
56
58
|
gl.bindTexture(gl.TEXTURE_2D, indexTexture);
|
|
57
59
|
gl.activeTexture(gl.TEXTURE0);
|
|
@@ -62,27 +64,30 @@ class PickerDisplayer {
|
|
|
62
64
|
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT1, gl.TEXTURE_2D, this.indexTexture, 0);
|
|
63
65
|
gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1]);
|
|
64
66
|
}
|
|
65
|
-
}
|
|
67
|
+
};
|
|
66
68
|
// call after drawing the scene with gl picker shader
|
|
67
|
-
drawColorTexture() {
|
|
68
|
-
|
|
69
|
+
PickerDisplayer.prototype.drawColorTexture = function () {
|
|
70
|
+
var colorTexture = this.colorTexture;
|
|
69
71
|
this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null);
|
|
70
72
|
this.displayer.draw(colorTexture);
|
|
71
|
-
}
|
|
72
|
-
pickXY(x, y, selectionPointFilling
|
|
73
|
-
|
|
73
|
+
};
|
|
74
|
+
PickerDisplayer.prototype.pickXY = function (x, y, selectionPointFilling, callback) {
|
|
75
|
+
if (selectionPointFilling === void 0) { selectionPointFilling = 1; }
|
|
76
|
+
if (callback === void 0) { callback = function () { }; }
|
|
77
|
+
var size = Math.pow(1 + 2 * selectionPointFilling, 2);
|
|
74
78
|
this._pick(size, x - selectionPointFilling, y - selectionPointFilling, 1 + 2 * selectionPointFilling, 1 + 2 * selectionPointFilling, callback);
|
|
75
|
-
}
|
|
76
|
-
pickBbox(left, top, right, bottom, callback) {
|
|
77
|
-
|
|
79
|
+
};
|
|
80
|
+
PickerDisplayer.prototype.pickBbox = function (left, top, right, bottom, callback) {
|
|
81
|
+
var size = (right - left) * (bottom - top) * 4;
|
|
78
82
|
this._pick(size, left, top, right - left, bottom - top, callback);
|
|
79
|
-
}
|
|
80
|
-
_pick(size, startX, startY, lengthX, lengthY, callback) {
|
|
83
|
+
};
|
|
84
|
+
PickerDisplayer.prototype._pick = function (size, startX, startY, lengthX, lengthY, callback) {
|
|
85
|
+
var _this = this;
|
|
81
86
|
if (this._inProgress)
|
|
82
87
|
return false;
|
|
83
88
|
this._inProgress = true;
|
|
84
89
|
this._initHoldBuffer(size * 4);
|
|
85
|
-
|
|
90
|
+
var _a = this, gl = _a.gl, _pbo = _a._pbo;
|
|
86
91
|
gl.bindBuffer(gl.PIXEL_PACK_BUFFER, _pbo);
|
|
87
92
|
this.bindFBO();
|
|
88
93
|
gl.readBuffer(gl.COLOR_ATTACHMENT1); // This is the attachment we want to read
|
|
@@ -90,35 +95,35 @@ class PickerDisplayer {
|
|
|
90
95
|
startX, startY, lengthX, lengthY, gl.RED_INTEGER, gl.INT, 0);
|
|
91
96
|
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
92
97
|
gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
|
|
93
|
-
(0, fence_1.fence)(this.gl).then(()
|
|
98
|
+
(0, fence_1.fence)(this.gl).then(function () {
|
|
94
99
|
gl.bindBuffer(gl.PIXEL_PACK_BUFFER, _pbo);
|
|
95
100
|
// const data = new Int16Array(size);
|
|
96
|
-
|
|
101
|
+
var data = new Int32Array(size);
|
|
97
102
|
gl.getBufferSubData(gl.PIXEL_PACK_BUFFER, 0, data);
|
|
98
103
|
gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
|
|
99
|
-
|
|
104
|
+
var result = _this._pickFromBuffer(data, size);
|
|
100
105
|
callback(result);
|
|
101
106
|
// gl.deleteBuffer(pbo);
|
|
102
|
-
|
|
107
|
+
_this._inProgress = false;
|
|
103
108
|
});
|
|
104
109
|
return true;
|
|
105
|
-
}
|
|
106
|
-
_pickFromBuffer(array, size) {
|
|
107
|
-
|
|
108
|
-
for (
|
|
109
|
-
|
|
110
|
+
};
|
|
111
|
+
PickerDisplayer.prototype._pickFromBuffer = function (array, size) {
|
|
112
|
+
var selectedObjects = new Set();
|
|
113
|
+
for (var i = 0; i < size; i += 1) {
|
|
114
|
+
var id = array[i];
|
|
110
115
|
if (id !== ESCAPE_VALUE) {
|
|
111
116
|
selectedObjects.add(id);
|
|
112
117
|
}
|
|
113
118
|
}
|
|
114
119
|
return selectedObjects;
|
|
115
|
-
}
|
|
116
|
-
_initHoldBuffer(size) {
|
|
120
|
+
};
|
|
121
|
+
PickerDisplayer.prototype._initHoldBuffer = function (size) {
|
|
117
122
|
if (this._pbo && this._pboSize >= size) {
|
|
118
123
|
return;
|
|
119
124
|
}
|
|
120
|
-
|
|
121
|
-
|
|
125
|
+
var gl = this.gl;
|
|
126
|
+
var pbo = gl.createBuffer();
|
|
122
127
|
gl.bindBuffer(gl.PIXEL_PACK_BUFFER, pbo);
|
|
123
128
|
gl.bufferData(gl.PIXEL_PACK_BUFFER, size, gl.STREAM_READ);
|
|
124
129
|
gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
|
|
@@ -127,13 +132,14 @@ class PickerDisplayer {
|
|
|
127
132
|
gl.deleteBuffer(this._pbo);
|
|
128
133
|
}
|
|
129
134
|
this._pbo = pbo;
|
|
130
|
-
}
|
|
131
|
-
free() {
|
|
132
|
-
|
|
135
|
+
};
|
|
136
|
+
PickerDisplayer.prototype.free = function () {
|
|
137
|
+
var _a = this, gl = _a.gl, colorTexture = _a.colorTexture, indexTexture = _a.indexTexture, fbo = _a.fbo;
|
|
133
138
|
gl.deleteTexture(colorTexture);
|
|
134
139
|
gl.deleteTexture(indexTexture);
|
|
135
140
|
gl.deleteFramebuffer(fbo);
|
|
136
141
|
draw_texture_on_canvas_1.textureOnCanvasProgramCache.release(this.gl);
|
|
137
|
-
}
|
|
138
|
-
|
|
142
|
+
};
|
|
143
|
+
return PickerDisplayer;
|
|
144
|
+
}());
|
|
139
145
|
exports.PickerDisplayer = PickerDisplayer;
|
|
@@ -1,33 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.textureOnCanvasProgramCache = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
var webglobjectbuilders_1 = require("../webglobjectbuilders");
|
|
5
|
+
var programs_1 = require("../../programs");
|
|
6
6
|
// import { CameraUniformBlockTotemCache, CameraUniformBlockString } from "../../programs/totems";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
out vec2 v_texcoord;
|
|
12
|
-
|
|
13
|
-
void main() {
|
|
14
|
-
gl_Position = vec4(a_position, 0.0, 1.0);
|
|
15
|
-
v_texcoord = a_position * 0.5 + 0.5;
|
|
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
|
-
class TextureOnCanvasProgram {
|
|
30
|
-
constructor(gl) {
|
|
7
|
+
var vs = "#version 300 es\nprecision highp float;\n\nin vec2 a_position;\nout vec2 v_texcoord;\n\nvoid main() {\n gl_Position = vec4(a_position, 0.0, 1.0);\n v_texcoord = a_position * 0.5 + 0.5;\n}";
|
|
8
|
+
var fs = "#version 300 es\nprecision highp float;\n\nuniform sampler2D u_texture;\nuniform float u_opacity; \nin vec2 v_texcoord;\nout vec4 fragColor;\n\nvoid main() {\n fragColor = texture(u_texture, v_texcoord);\n fragColor.a *= u_opacity;\n}";
|
|
9
|
+
var TextureOnCanvasProgram = /** @class */ (function () {
|
|
10
|
+
function TextureOnCanvasProgram(gl) {
|
|
31
11
|
this.gl = gl;
|
|
32
12
|
this.vao = this.gl.createVertexArray();
|
|
33
13
|
this.buffer = this.gl.createBuffer();
|
|
@@ -45,22 +25,23 @@ class TextureOnCanvasProgram {
|
|
|
45
25
|
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
|
|
46
26
|
this.program = (0, webglobjectbuilders_1.createProgram)(this.gl, vs, fs);
|
|
47
27
|
{
|
|
48
|
-
|
|
28
|
+
var _a = this, gl_1 = _a.gl, program = _a.program;
|
|
49
29
|
this.uniforms = {
|
|
50
|
-
texture:
|
|
51
|
-
opacity:
|
|
30
|
+
texture: gl_1.getUniformLocation(program, "u_texture"),
|
|
31
|
+
opacity: gl_1.getUniformLocation(program, "u_opacity"),
|
|
52
32
|
};
|
|
53
33
|
}
|
|
54
34
|
{
|
|
55
35
|
this._lastOpacity = 1.0;
|
|
56
|
-
|
|
36
|
+
var currentProgram = this.gl.getParameter(this.gl.CURRENT_PROGRAM);
|
|
57
37
|
this.gl.useProgram(this.program);
|
|
58
38
|
this.gl.uniform1f(this.uniforms.opacity, this._lastOpacity);
|
|
59
39
|
this.gl.useProgram(currentProgram);
|
|
60
40
|
}
|
|
61
41
|
}
|
|
62
|
-
draw
|
|
63
|
-
|
|
42
|
+
TextureOnCanvasProgram.prototype.draw = function (texture, _a) {
|
|
43
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.opacity, opacity = _c === void 0 ? 1.0 : _c;
|
|
44
|
+
var _d = this, gl = _d.gl, program = _d.program, uniforms = _d.uniforms, vao = _d.vao;
|
|
64
45
|
gl.useProgram(program);
|
|
65
46
|
gl.bindVertexArray(vao);
|
|
66
47
|
gl.activeTexture(gl.TEXTURE0);
|
|
@@ -72,18 +53,19 @@ class TextureOnCanvasProgram {
|
|
|
72
53
|
}
|
|
73
54
|
gl.drawArrays(gl.TRIANGLE_FAN, 0, 4);
|
|
74
55
|
gl.bindVertexArray(null);
|
|
75
|
-
}
|
|
76
|
-
free() {
|
|
56
|
+
};
|
|
57
|
+
TextureOnCanvasProgram.prototype.free = function () {
|
|
77
58
|
if (this._isFreed)
|
|
78
59
|
return;
|
|
79
60
|
this.gl.deleteVertexArray(this.vao);
|
|
80
61
|
this.gl.deleteBuffer(this.buffer);
|
|
81
62
|
this.gl.deleteProgram(this.program);
|
|
82
63
|
this._isFreed = true;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
64
|
+
};
|
|
65
|
+
return TextureOnCanvasProgram;
|
|
66
|
+
}());
|
|
67
|
+
var textureOnCanvasProgramCache = Object.freeze({
|
|
68
|
+
get: function (gl) { return programs_1.glProgramCache.getProgram(gl, TextureOnCanvasProgram); },
|
|
69
|
+
release: function (gl) { return programs_1.glProgramCache.releaseProgram(gl, TextureOnCanvasProgram); }
|
|
88
70
|
});
|
|
89
71
|
exports.textureOnCanvasProgramCache = textureOnCanvasProgramCache;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ShapesOnGlobeProgram = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
var webglobjectbuilders_1 = require("../webglobjectbuilders");
|
|
5
|
+
var camerauniformblock_1 = require("../../programs/totems/camerauniformblock");
|
|
6
|
+
var __1 = require("..");
|
|
7
7
|
/** TODO:
|
|
8
8
|
* 3d icin calistir
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
|
-
return (mode)
|
|
10
|
+
var drawModeFunc = function (gl) {
|
|
11
|
+
return function (mode) {
|
|
12
12
|
return {
|
|
13
13
|
"point": gl.POINTS,
|
|
14
14
|
"line": gl.LINES,
|
|
@@ -20,8 +20,9 @@ const drawModeFunc = (gl) => {
|
|
|
20
20
|
}[mode];
|
|
21
21
|
};
|
|
22
22
|
};
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
var ShapesOnGlobeProgram = /** @class */ (function () {
|
|
24
|
+
function ShapesOnGlobeProgram(gl, globe, drawMode) {
|
|
25
|
+
if (drawMode === void 0) { drawMode = 'point'; }
|
|
25
26
|
this.globe = globe;
|
|
26
27
|
this.gl = gl;
|
|
27
28
|
this._getDraw = drawModeFunc(gl);
|
|
@@ -32,9 +33,9 @@ class ShapesOnGlobeProgram {
|
|
|
32
33
|
this._initUniforms();
|
|
33
34
|
this.setScreenWH();
|
|
34
35
|
}
|
|
35
|
-
_initUniforms() {
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
ShapesOnGlobeProgram.prototype._initUniforms = function () {
|
|
37
|
+
var _a = this, gl = _a.gl, _programWrapper = _a._programWrapper;
|
|
38
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
38
39
|
this._getDrawMode = drawModeFunc(gl);
|
|
39
40
|
gl.useProgram(_programWrapper.program);
|
|
40
41
|
gl.uniform1f(_programWrapper.u_opacity, 1.0);
|
|
@@ -42,59 +43,16 @@ class ShapesOnGlobeProgram {
|
|
|
42
43
|
gl.uniform1f(_programWrapper.height, 0.0);
|
|
43
44
|
gl.uniform1f(_programWrapper.u_point_size, 1.0);
|
|
44
45
|
gl.useProgram(currentProgram);
|
|
45
|
-
}
|
|
46
|
-
_createProgramWrapper() {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
precision highp float;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
in vec4 a_color;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
uniform bool u_is3D;
|
|
57
|
-
uniform float height;
|
|
58
|
-
|
|
59
|
-
uniform float u_point_size;
|
|
60
|
-
|
|
61
|
-
out vec4 v_color;
|
|
62
|
-
|
|
63
|
-
` + __1.shaderfunctions.pixelXYToCartesian3DPoint + `
|
|
64
|
-
` + __1.shaderfunctions.pixelXYToCartesian2DPoint + `
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
void main() {
|
|
68
|
-
vec3 pos = vec3(a_position, height);
|
|
69
|
-
if(is3D){
|
|
70
|
-
pos = pixelXYToCartesian3DPoint(pos);
|
|
71
|
-
gl_Position = projection * view * vec4(pos - translate, 1.0);
|
|
72
|
-
} else {
|
|
73
|
-
vec2 xy = pixelXYToCartesian2DPoint(pos.xy, translate.xy, mapWH, screenWH);
|
|
74
|
-
gl_Position = projection * vec4(xy.x, xy.y, 0.0, 1.0);
|
|
75
|
-
}
|
|
76
|
-
gl_PointSize = u_point_size;
|
|
77
|
-
v_color = a_color;
|
|
78
|
-
}
|
|
79
|
-
`;
|
|
80
|
-
const fragmentSource = `#version 300 es
|
|
81
|
-
precision highp float;
|
|
82
|
-
|
|
83
|
-
uniform float u_opacity;
|
|
84
|
-
|
|
85
|
-
in vec4 v_color;
|
|
86
|
-
out vec4 outColor;
|
|
87
|
-
|
|
88
|
-
void main() {
|
|
89
|
-
outColor = v_color;
|
|
90
|
-
outColor.a = u_opacity;
|
|
91
|
-
}
|
|
92
|
-
`;
|
|
93
|
-
const program = (0, webglobjectbuilders_1.createProgram)(gl, vertexSource, fragmentSource);
|
|
94
|
-
const a_position = gl.getAttribLocation(program, 'a_position');
|
|
95
|
-
const a_color = gl.getAttribLocation(program, 'a_color');
|
|
46
|
+
};
|
|
47
|
+
ShapesOnGlobeProgram.prototype._createProgramWrapper = function () {
|
|
48
|
+
var _a = this, gl = _a.gl, globe = _a.globe;
|
|
49
|
+
var vertexSource = "#version 300 es\n precision highp float;\n ".concat(camerauniformblock_1.CameraUniformBlockString, "\n\n in vec2 a_position;\n in vec4 a_color;\n\n\n uniform bool u_is3D;\n uniform float height; \n\n uniform float u_point_size;\n\n out vec4 v_color;\n\n ") + __1.shaderfunctions.pixelXYToCartesian3DPoint + "\n " + __1.shaderfunctions.pixelXYToCartesian2DPoint + "\n\n\n void main() {\n vec3 pos = vec3(a_position, height);\n if(is3D){\n pos = pixelXYToCartesian3DPoint(pos);\n gl_Position = projection * view * vec4(pos - translate, 1.0);\n } else {\n vec2 xy = pixelXYToCartesian2DPoint(pos.xy, translate.xy, mapWH, screenWH);\n gl_Position = projection * vec4(xy.x, xy.y, 0.0, 1.0);\n }\n gl_PointSize = u_point_size;\n v_color = a_color;\n }\n ";
|
|
50
|
+
var fragmentSource = "#version 300 es\n precision highp float;\n\n uniform float u_opacity;\n\n in vec4 v_color;\n out vec4 outColor;\n\n void main() {\n outColor = v_color;\n outColor.a = u_opacity;\n } \n ";
|
|
51
|
+
var program = (0, webglobjectbuilders_1.createProgram)(gl, vertexSource, fragmentSource);
|
|
52
|
+
var a_position = gl.getAttribLocation(program, 'a_position');
|
|
53
|
+
var a_color = gl.getAttribLocation(program, 'a_color');
|
|
96
54
|
// vao and buffer.
|
|
97
|
-
|
|
55
|
+
var vao = gl.createVertexArray();
|
|
98
56
|
gl.bindVertexArray(vao);
|
|
99
57
|
gl.bindBuffer(gl.ARRAY_BUFFER, this._inBuffer);
|
|
100
58
|
gl.enableVertexAttribArray(a_position);
|
|
@@ -102,22 +60,22 @@ class ShapesOnGlobeProgram {
|
|
|
102
60
|
gl.enableVertexAttribArray(a_color);
|
|
103
61
|
gl.vertexAttribPointer(a_color, 4, gl.FLOAT, false, 6 * 4, 2 * 4);
|
|
104
62
|
gl.bindVertexArray(null);
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
63
|
+
var cm = camerauniformblock_1.CameraUniformBlockTotemCache.get(globe);
|
|
64
|
+
var bindingPoint = 0;
|
|
65
|
+
var cmIndex = gl.getUniformBlockIndex(program, "CameraUniformBlock");
|
|
108
66
|
gl.uniformBlockBinding(program, cmIndex, bindingPoint);
|
|
109
67
|
return {
|
|
110
68
|
program: program,
|
|
111
69
|
vao: vao,
|
|
112
70
|
u_point_size: gl.getUniformLocation(program, 'u_point_size'),
|
|
113
71
|
u_opacity: gl.getUniformLocation(program, 'u_opacity'),
|
|
114
|
-
bindCamera: ()
|
|
115
|
-
unbindCamera: ()
|
|
72
|
+
bindCamera: function () { return cm.bind(bindingPoint); },
|
|
73
|
+
unbindCamera: function () { return cm.unbind(bindingPoint); }
|
|
116
74
|
};
|
|
117
|
-
}
|
|
118
|
-
draw(uProjectionMatrix, uModelViewMatrix, uTranslate, drawRanges) {
|
|
119
|
-
|
|
120
|
-
|
|
75
|
+
};
|
|
76
|
+
ShapesOnGlobeProgram.prototype.draw = function (uProjectionMatrix, uModelViewMatrix, uTranslate, drawRanges) {
|
|
77
|
+
var _a = this, gl = _a.gl, _programWrapper = _a._programWrapper, _is3D = _a._is3D;
|
|
78
|
+
var deepTest = gl.isEnabled(gl.DEPTH_TEST);
|
|
121
79
|
gl.disable(gl.DEPTH_TEST);
|
|
122
80
|
gl.useProgram(_programWrapper.program);
|
|
123
81
|
gl.bindVertexArray(_programWrapper.vao);
|
|
@@ -127,10 +85,11 @@ class ShapesOnGlobeProgram {
|
|
|
127
85
|
gl.bindVertexArray(_programWrapper.vao);
|
|
128
86
|
_programWrapper.bindCamera();
|
|
129
87
|
if (!_is3D) {
|
|
130
|
-
|
|
88
|
+
var mapWH = this.globe.api_GetCurrentWorldWH();
|
|
131
89
|
gl.uniform2f(_programWrapper.u_mapWH, mapWH.width, mapWH.height);
|
|
132
90
|
}
|
|
133
|
-
for (
|
|
91
|
+
for (var _i = 0, drawRanges_1 = drawRanges; _i < drawRanges_1.length; _i++) {
|
|
92
|
+
var drawRange = drawRanges_1[_i];
|
|
134
93
|
gl.drawArrays(this._drawMode, drawRange[0], drawRange[1]);
|
|
135
94
|
// gl.drawArrays(gl.POINTS, drawRange[0], 1);
|
|
136
95
|
}
|
|
@@ -139,76 +98,77 @@ class ShapesOnGlobeProgram {
|
|
|
139
98
|
if (deepTest) {
|
|
140
99
|
gl.enable(gl.DEPTH_TEST);
|
|
141
100
|
}
|
|
142
|
-
}
|
|
143
|
-
setOpacity(opacity) {
|
|
101
|
+
};
|
|
102
|
+
ShapesOnGlobeProgram.prototype.setOpacity = function (opacity) {
|
|
144
103
|
if (opacity < 0 || opacity > 1) {
|
|
145
104
|
throw new Error('Invalid opacity value');
|
|
146
105
|
}
|
|
147
106
|
;
|
|
148
|
-
|
|
149
|
-
|
|
107
|
+
var _a = this, gl = _a.gl, _programWrapper = _a._programWrapper;
|
|
108
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
150
109
|
gl.useProgram(_programWrapper.program);
|
|
151
110
|
gl.uniform1f(_programWrapper.u_opacity, opacity);
|
|
152
111
|
gl.useProgram(currentProgram);
|
|
153
112
|
this.globe.DrawRender();
|
|
154
|
-
}
|
|
155
|
-
setPointSize(size) {
|
|
156
|
-
|
|
157
|
-
|
|
113
|
+
};
|
|
114
|
+
ShapesOnGlobeProgram.prototype.setPointSize = function (size) {
|
|
115
|
+
var _a = this, gl = _a.gl, _programWrapper = _a._programWrapper;
|
|
116
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
158
117
|
gl.useProgram(_programWrapper.program);
|
|
159
118
|
gl.uniform1f(_programWrapper.u_point_size, size);
|
|
160
119
|
gl.useProgram(currentProgram);
|
|
161
120
|
this.globe.DrawRender();
|
|
162
|
-
}
|
|
163
|
-
setDrawMode(mode) {
|
|
164
|
-
|
|
121
|
+
};
|
|
122
|
+
ShapesOnGlobeProgram.prototype.setDrawMode = function (mode) {
|
|
123
|
+
var modegl = this._getDraw(mode);
|
|
165
124
|
if (modegl) {
|
|
166
125
|
this._drawMode = modegl;
|
|
167
126
|
}
|
|
168
127
|
else {
|
|
169
128
|
throw new Error('Invalid draw mode ' + mode);
|
|
170
129
|
}
|
|
171
|
-
}
|
|
172
|
-
setScreenWH() {
|
|
173
|
-
|
|
174
|
-
|
|
130
|
+
};
|
|
131
|
+
ShapesOnGlobeProgram.prototype.setScreenWH = function () {
|
|
132
|
+
var _a = this, gl = _a.gl, _programWrapper = _a._programWrapper, globe = _a.globe;
|
|
133
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
175
134
|
gl.useProgram(_programWrapper.program);
|
|
176
135
|
gl.uniform2f(_programWrapper.u_scrWH, globe.api_ScrW(), globe.api_ScrH());
|
|
177
136
|
gl.useProgram(currentProgram);
|
|
178
|
-
}
|
|
179
|
-
resize(width, height) {
|
|
180
|
-
|
|
137
|
+
};
|
|
138
|
+
ShapesOnGlobeProgram.prototype.resize = function (width, height) {
|
|
139
|
+
var _a = this, gl = _a.gl, _programWrapper = _a._programWrapper, globe = _a.globe;
|
|
181
140
|
width = width || globe.api_ScrW();
|
|
182
141
|
height = height || globe.api_ScrH();
|
|
183
|
-
|
|
142
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
184
143
|
gl.useProgram(_programWrapper.program);
|
|
185
144
|
gl.uniform2f(_programWrapper.u_scrWH, width, height);
|
|
186
145
|
gl.useProgram(currentProgram);
|
|
187
|
-
}
|
|
188
|
-
setGeometry() {
|
|
189
|
-
|
|
146
|
+
};
|
|
147
|
+
ShapesOnGlobeProgram.prototype.setGeometry = function () {
|
|
148
|
+
var _a = this, gl = _a.gl, globe = _a.globe, _programWrapper = _a._programWrapper;
|
|
190
149
|
this._is3D = globe.api_GetCurrentGeometry() === 0;
|
|
191
|
-
|
|
150
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
192
151
|
gl.useProgram(_programWrapper.program);
|
|
193
152
|
gl.uniform1f(_programWrapper.u_is3D, this._is3D ? 1.0 : 0.0);
|
|
194
153
|
gl.useProgram(currentProgram);
|
|
195
154
|
this.resize();
|
|
196
|
-
}
|
|
197
|
-
free() {
|
|
198
|
-
|
|
155
|
+
};
|
|
156
|
+
ShapesOnGlobeProgram.prototype.free = function () {
|
|
157
|
+
var _a = this, gl = _a.gl, _programWrapper = _a._programWrapper;
|
|
199
158
|
gl.deleteProgram(_programWrapper.program);
|
|
200
159
|
gl.deleteVertexArray(_programWrapper.vao);
|
|
201
160
|
gl.deleteBuffer(this._inBuffer);
|
|
202
|
-
}
|
|
161
|
+
};
|
|
203
162
|
/**
|
|
204
163
|
*
|
|
205
164
|
* @param {Float32Array} data
|
|
206
165
|
* @format [x, y, r, g, b, a, x, y, r, g, b, a, x, y, r, g, b, a, x, y, r, g, b, a]
|
|
207
166
|
*/
|
|
208
|
-
setBufferData(data) {
|
|
209
|
-
|
|
167
|
+
ShapesOnGlobeProgram.prototype.setBufferData = function (data) {
|
|
168
|
+
var gl = this.gl;
|
|
210
169
|
gl.bindBuffer(gl.ARRAY_BUFFER, this._inBuffer);
|
|
211
170
|
gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
|
|
212
|
-
}
|
|
213
|
-
|
|
171
|
+
};
|
|
172
|
+
return ShapesOnGlobeProgram;
|
|
173
|
+
}());
|
|
214
174
|
exports.ShapesOnGlobeProgram = ShapesOnGlobeProgram;
|