@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.
- package/Math/angle-calculation.js +9 -11
- package/Math/arc.js +38 -41
- package/Math/bounds/line-bbox.js +79 -83
- package/Math/constants.js +4 -9
- package/Math/frustum/types.js +1 -2
- package/Math/juction/arc-plane.js +33 -36
- package/Math/juction/line-sphere.js +15 -18
- package/Math/juction/plane-plane.js +20 -23
- package/Math/line.js +42 -47
- package/Math/methods.js +69 -92
- package/Math/plane.js +33 -38
- package/Math/quaternion.js +48 -55
- package/Math/types.js +1 -2
- package/Math/utils.js +2 -4
- package/Math/vec3.js +46 -52
- package/algorithms/search-binary.js +5 -8
- package/altitude-locator/draw-subset-obj.js +8 -11
- package/altitude-locator/plugin.js +114 -133
- package/altitude-locator/types.js +1 -3
- package/arrowfield/adaptor.js +3 -7
- package/arrowfield/index.js +3 -10
- package/arrowfield/plugin.js +63 -69
- package/bearing-line/index.js +2 -8
- package/bearing-line/plugin.js +218 -248
- package/circle-line-chain/chain-list-map.js +82 -92
- package/circle-line-chain/plugin.js +147 -182
- package/circle-line-chain/util.js +1 -5
- package/compass-rose/compass-rose-padding-flat.js +111 -140
- package/compass-rose/compass-text-writer.js +63 -75
- package/compass-rose/index.js +3 -7
- package/compassrose/compassrose.js +50 -57
- package/compassrose/index.js +2 -8
- package/heatwave/index.js +3 -10
- package/heatwave/isobar/objectarraylabels.js +50 -56
- package/heatwave/isobar/plugin.js +111 -170
- package/heatwave/isobar/quadtreecontours.js +78 -96
- package/heatwave/plugins/heatwaveglobeshell.js +73 -94
- package/index.js +12 -58
- package/package.json +1 -1
- package/partialrings/buffer-manager.js +32 -70
- package/partialrings/index.js +2 -41
- package/partialrings/plugin.js +55 -98
- package/partialrings/program.js +141 -59
- package/pin/pin-object-array.js +89 -97
- package/pin/pin-point-totem.js +21 -22
- package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +11 -14
- package/point-heat-map/plugin-webworker.js +45 -53
- package/point-heat-map/point-to-heat-map-flow.js +46 -51
- package/point-tracks/key-methods.js +2 -5
- package/point-tracks/plugin.js +141 -170
- package/programs/arrowfield/index.js +2 -7
- package/programs/arrowfield/logic.js +172 -67
- package/programs/arrowfield/object.js +35 -43
- package/programs/data2legend/density-to-legend.js +47 -26
- package/programs/data2legend/point-to-density-texture.js +56 -34
- package/programs/float2legendwithratio/index.js +2 -8
- package/programs/float2legendwithratio/logic.js +88 -45
- package/programs/float2legendwithratio/object.js +45 -54
- package/programs/globe-util/is-globe-moved.js +10 -13
- package/programs/globeshell/index.js +2 -8
- package/programs/globeshell/wiggle/index.js +2 -8
- package/programs/globeshell/wiggle/logic.js +191 -101
- package/programs/globeshell/wiggle/object.js +35 -43
- package/programs/helpers/blender/program.js +36 -22
- package/programs/helpers/fadeaway/index.js +2 -7
- package/programs/helpers/fadeaway/logic.js +36 -17
- package/programs/helpers/fadeaway/object.js +11 -18
- package/programs/helpers/index.js +2 -8
- package/programs/index.js +9 -58
- package/programs/line-on-globe/angled-line.js +95 -39
- package/programs/line-on-globe/circle-accurate-3d.js +86 -39
- package/programs/line-on-globe/circle-accurate-flat.js +116 -64
- package/programs/line-on-globe/circle-accurate.js +113 -46
- package/programs/line-on-globe/circle.js +106 -44
- package/programs/line-on-globe/degree-padding-around-circle-3d.js +89 -42
- package/programs/line-on-globe/lines-color-instanced-flat.js +84 -43
- package/programs/line-on-globe/linestrip.js +126 -63
- package/programs/line-on-globe/naive-accurate-flexible.js +126 -59
- package/programs/line-on-globe/to-the-surface.js +62 -35
- package/programs/line-on-globe/util.js +2 -5
- package/programs/picking/pickable-renderer.js +127 -46
- package/programs/point-on-globe/element-globe-surface-glow.js +83 -46
- package/programs/point-on-globe/element-point-glow.js +112 -47
- package/programs/point-on-globe/square-pixel-point.js +80 -34
- package/programs/programcache.js +14 -19
- package/programs/rings/distancering/circleflatprogram.js +76 -70
- package/programs/rings/distancering/circlepaddingfreeangleprogram.js +168 -194
- package/programs/rings/distancering/circlepaddysharedbuffer.js +121 -200
- package/programs/rings/distancering/index.js +5 -14
- package/programs/rings/distancering/paddyflatprogram.js +87 -70
- package/programs/rings/distancering/paddyflatprogram2d.js +89 -72
- package/programs/rings/distancering/paddyflatprogram3d.js +87 -70
- package/programs/rings/index.js +1 -17
- package/programs/rings/partial-ring/piece-of-pie.js +144 -44
- package/programs/totems/camerauniformblock.js +65 -56
- package/programs/totems/canvas-webglobe-info.js +49 -45
- package/programs/totems/gpu-selection-uniform-block.js +45 -45
- package/programs/totems/index.js +2 -40
- package/programs/two-d/pixel-padding-for-compass.js +94 -36
- package/programs/util.js +7 -10
- package/programs/vectorfields/index.js +3 -23
- package/programs/vectorfields/logics/drawrectangleparticles.js +73 -35
- package/programs/vectorfields/logics/index.js +4 -12
- package/programs/vectorfields/logics/pixelbased.js +94 -41
- package/programs/vectorfields/logics/ubo.js +32 -32
- package/programs/vectorfields/pingpongbuffermanager.js +30 -37
- package/rangerings/enum.js +2 -5
- package/rangerings/index.js +5 -15
- package/rangerings/plugin.js +223 -286
- package/rangerings/rangeringangletext.js +122 -137
- package/rangerings/ring-account.js +53 -75
- package/shaders/fragment-toy/firework.js +55 -4
- package/shaders/fragment-toy/singularity.js +56 -5
- package/timetracks/adaptors-line-strip.js +27 -44
- package/timetracks/adaptors.js +48 -67
- package/timetracks/index.js +5 -19
- package/timetracks/plugin-line-strip.js +65 -79
- package/timetracks/plugin.js +71 -85
- package/timetracks/program-line-strip.js +297 -107
- package/timetracks/program.js +421 -118
- package/timetracks/programpoint-line-strip.js +98 -48
- package/timetracks/programpoint.js +91 -48
- package/util/account/bufferoffsetmanager.js +72 -98
- package/util/account/index.js +3 -23
- package/util/account/single-attribute-buffer-management/buffer-manager.js +44 -48
- package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +68 -98
- package/util/account/single-attribute-buffer-management/index.js +4 -9
- package/util/account/single-attribute-buffer-management/object-store.js +29 -34
- package/util/account/single-attribute-buffer-management/types.js +1 -2
- package/util/account/util.js +2 -8
- package/util/algorithms/search-binary.js +5 -8
- package/util/check/get.js +5 -9
- package/util/check/typecheck.js +13 -24
- package/util/geometry/index.js +10 -18
- package/util/gl-util/buffer/attribute-loader.js +10 -26
- package/util/gl-util/buffer/index.js +2 -5
- package/util/gl-util/draw-options/methods.js +10 -15
- package/util/gl-util/uniform-block/manager.js +69 -72
- package/util/heatwavedatamanager/datamanager.js +56 -119
- package/util/heatwavedatamanager/index.js +3 -10
- package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +38 -47
- package/util/heatwavedatamanager/pointcoordsmeta.js +9 -13
- package/util/index.js +13 -57
- package/util/interpolation/timetrack/index.js +2 -5
- package/util/interpolation/timetrack/timetrack-interpolator.js +30 -36
- package/util/interpolation/timetrack/web-worker-str.js +180 -5
- package/util/interpolation/timetrack/web-worker.js +4 -6
- package/util/jshelpers/data-filler.js +8 -11
- package/util/jshelpers/equality.js +1 -3
- package/util/jshelpers/index.js +2 -37
- package/util/jshelpers/timefilters.js +8 -10
- package/util/picking/fence.js +8 -11
- package/util/picking/picker-displayer.js +49 -58
- package/util/programs/draw-texture-on-canvas.js +41 -26
- package/util/programs/index.js +1 -17
- package/util/programs/shapesonglobe.js +104 -68
- package/util/programs/supersampletotextures.js +45 -43
- package/util/programs/texturetoglobe.js +99 -52
- package/util/shaderfunctions/geometrytransformations.js +323 -35
- package/util/shaderfunctions/index.js +2 -18
- package/util/shaderfunctions/nodata.js +8 -5
- package/util/shaderfunctions/noisefunctions.js +40 -12
- package/util/surface-line-data/arcs-to-cuts.js +20 -23
- package/util/webglobe/gldefaultstates.js +1 -4
- package/util/webglobe/index.js +2 -18
- package/util/webglobe/rasteroverlay.js +36 -41
- package/util/webglobjectbuilders.js +70 -93
- package/util/webglobjectbuilders1.js +63 -82
- package/waveparticles/adaptor.js +7 -10
- package/waveparticles/index.js +3 -10
- package/waveparticles/plugin.js +82 -90
- package/wind/imagetovectorfieldandmagnitude.js +16 -19
- package/wind/index.js +5 -14
- package/wind/plugin.js +454 -291
- package/wind/vectorfieldimage.js +6 -8
- package/write-text/attached-text-writer.js +48 -54
- package/write-text/context-text.js +52 -63
- package/write-text/context-text3.js +71 -80
- package/write-text/index.js +1 -5
|
@@ -1,13 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.textureOnCanvasProgramCache = void 0;
|
|
4
|
-
var webglobjectbuilders_1 = require("../webglobjectbuilders");
|
|
5
|
-
var programs_1 = require("../../programs");
|
|
1
|
+
import { createProgram } from "../webglobjectbuilders";
|
|
2
|
+
import { glProgramCache } from "../../programs";
|
|
6
3
|
// import { CameraUniformBlockTotemCache, CameraUniformBlockString } from "../../programs/totems";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
const vs = `#version 300 es
|
|
5
|
+
precision highp float;
|
|
6
|
+
|
|
7
|
+
in vec2 a_position;
|
|
8
|
+
out vec2 v_texcoord;
|
|
9
|
+
|
|
10
|
+
void main() {
|
|
11
|
+
gl_Position = vec4(a_position, 0.0, 1.0);
|
|
12
|
+
v_texcoord = a_position * 0.5 + 0.5;
|
|
13
|
+
}`;
|
|
14
|
+
const fs = `#version 300 es
|
|
15
|
+
precision highp float;
|
|
16
|
+
|
|
17
|
+
uniform sampler2D u_texture;
|
|
18
|
+
uniform float u_opacity;
|
|
19
|
+
in vec2 v_texcoord;
|
|
20
|
+
out vec4 fragColor;
|
|
21
|
+
|
|
22
|
+
void main() {
|
|
23
|
+
fragColor = texture(u_texture, v_texcoord);
|
|
24
|
+
fragColor.a *= u_opacity;
|
|
25
|
+
}`;
|
|
26
|
+
class TextureOnCanvasProgram {
|
|
27
|
+
constructor(gl) {
|
|
11
28
|
this.gl = gl;
|
|
12
29
|
this.vao = this.gl.createVertexArray();
|
|
13
30
|
this.buffer = this.gl.createBuffer();
|
|
@@ -23,25 +40,24 @@ var TextureOnCanvasProgram = /** @class */ (function () {
|
|
|
23
40
|
this.gl.vertexAttribPointer(0, 2, this.gl.FLOAT, false, 0, 0);
|
|
24
41
|
this.gl.bindVertexArray(null);
|
|
25
42
|
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
|
|
26
|
-
this.program =
|
|
43
|
+
this.program = createProgram(this.gl, vs, fs);
|
|
27
44
|
{
|
|
28
|
-
|
|
45
|
+
const { gl, program } = this;
|
|
29
46
|
this.uniforms = {
|
|
30
|
-
texture:
|
|
31
|
-
opacity:
|
|
47
|
+
texture: gl.getUniformLocation(program, "u_texture"),
|
|
48
|
+
opacity: gl.getUniformLocation(program, "u_opacity"),
|
|
32
49
|
};
|
|
33
50
|
}
|
|
34
51
|
{
|
|
35
52
|
this._lastOpacity = 1.0;
|
|
36
|
-
|
|
53
|
+
const currentProgram = this.gl.getParameter(this.gl.CURRENT_PROGRAM);
|
|
37
54
|
this.gl.useProgram(this.program);
|
|
38
55
|
this.gl.uniform1f(this.uniforms.opacity, this._lastOpacity);
|
|
39
56
|
this.gl.useProgram(currentProgram);
|
|
40
57
|
}
|
|
41
58
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
var _d = this, gl = _d.gl, program = _d.program, uniforms = _d.uniforms, vao = _d.vao;
|
|
59
|
+
draw(texture, { opacity = 1.0 } = {}) {
|
|
60
|
+
const { gl, program, uniforms, vao } = this;
|
|
45
61
|
gl.useProgram(program);
|
|
46
62
|
gl.bindVertexArray(vao);
|
|
47
63
|
gl.activeTexture(gl.TEXTURE0);
|
|
@@ -53,19 +69,18 @@ var TextureOnCanvasProgram = /** @class */ (function () {
|
|
|
53
69
|
}
|
|
54
70
|
gl.drawArrays(gl.TRIANGLE_FAN, 0, 4);
|
|
55
71
|
gl.bindVertexArray(null);
|
|
56
|
-
}
|
|
57
|
-
|
|
72
|
+
}
|
|
73
|
+
free() {
|
|
58
74
|
if (this._isFreed)
|
|
59
75
|
return;
|
|
60
76
|
this.gl.deleteVertexArray(this.vao);
|
|
61
77
|
this.gl.deleteBuffer(this.buffer);
|
|
62
78
|
this.gl.deleteProgram(this.program);
|
|
63
79
|
this._isFreed = true;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
release: function (gl) { return programs_1.glProgramCache.releaseProgram(gl, TextureOnCanvasProgram); }
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const textureOnCanvasProgramCache = Object.freeze({
|
|
83
|
+
get: (gl) => glProgramCache.getProgram(gl, TextureOnCanvasProgram),
|
|
84
|
+
release: (gl) => glProgramCache.releaseProgram(gl, TextureOnCanvasProgram)
|
|
70
85
|
});
|
|
71
|
-
|
|
86
|
+
export { textureOnCanvasProgramCache };
|
package/util/programs/index.js
CHANGED
|
@@ -1,17 +1 @@
|
|
|
1
|
-
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./shapesonglobe"), exports);
|
|
1
|
+
export * from "./shapesonglobe";
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var webglobjectbuilders_1 = require("../webglobjectbuilders");
|
|
5
|
-
var camerauniformblock_1 = require("../../programs/totems/camerauniformblock");
|
|
6
|
-
var __1 = require("..");
|
|
1
|
+
import { createProgram } from "../webglobjectbuilders";
|
|
2
|
+
import { CameraUniformBlockString, CameraUniformBlockTotemCache } from "../../programs/totems/camerauniformblock";
|
|
3
|
+
import { shaderfunctions } from "..";
|
|
7
4
|
/** TODO:
|
|
8
5
|
* 3d icin calistir
|
|
9
6
|
*/
|
|
10
|
-
|
|
11
|
-
return
|
|
7
|
+
const drawModeFunc = (gl) => {
|
|
8
|
+
return (mode) => {
|
|
12
9
|
return {
|
|
13
10
|
"point": gl.POINTS,
|
|
14
11
|
"line": gl.LINES,
|
|
@@ -20,9 +17,8 @@ var drawModeFunc = function (gl) {
|
|
|
20
17
|
}[mode];
|
|
21
18
|
};
|
|
22
19
|
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (drawMode === void 0) { drawMode = 'point'; }
|
|
20
|
+
export class ShapesOnGlobeProgram {
|
|
21
|
+
constructor(gl, globe, drawMode = 'point') {
|
|
26
22
|
this.globe = globe;
|
|
27
23
|
this.gl = gl;
|
|
28
24
|
this._getDraw = drawModeFunc(gl);
|
|
@@ -33,9 +29,9 @@ var ShapesOnGlobeProgram = /** @class */ (function () {
|
|
|
33
29
|
this._initUniforms();
|
|
34
30
|
this.setScreenWH();
|
|
35
31
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
_initUniforms() {
|
|
33
|
+
const { gl, _programWrapper } = this;
|
|
34
|
+
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
39
35
|
this._getDrawMode = drawModeFunc(gl);
|
|
40
36
|
gl.useProgram(_programWrapper.program);
|
|
41
37
|
gl.uniform1f(_programWrapper.u_opacity, 1.0);
|
|
@@ -43,16 +39,59 @@ var ShapesOnGlobeProgram = /** @class */ (function () {
|
|
|
43
39
|
gl.uniform1f(_programWrapper.height, 0.0);
|
|
44
40
|
gl.uniform1f(_programWrapper.u_point_size, 1.0);
|
|
45
41
|
gl.useProgram(currentProgram);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
42
|
+
}
|
|
43
|
+
_createProgramWrapper() {
|
|
44
|
+
const { gl, globe } = this;
|
|
45
|
+
const vertexSource = `#version 300 es
|
|
46
|
+
precision highp float;
|
|
47
|
+
${CameraUniformBlockString}
|
|
48
|
+
|
|
49
|
+
in vec2 a_position;
|
|
50
|
+
in vec4 a_color;
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
uniform bool u_is3D;
|
|
54
|
+
uniform float height;
|
|
55
|
+
|
|
56
|
+
uniform float u_point_size;
|
|
57
|
+
|
|
58
|
+
out vec4 v_color;
|
|
59
|
+
|
|
60
|
+
` + shaderfunctions.pixelXYToCartesian3DPoint + `
|
|
61
|
+
` + shaderfunctions.pixelXYToCartesian2DPoint + `
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
void main() {
|
|
65
|
+
vec3 pos = vec3(a_position, height);
|
|
66
|
+
if(is3D){
|
|
67
|
+
pos = pixelXYToCartesian3DPoint(pos);
|
|
68
|
+
gl_Position = projection * view * vec4(pos - translate, 1.0);
|
|
69
|
+
} else {
|
|
70
|
+
vec2 xy = pixelXYToCartesian2DPoint(pos.xy, translate.xy, mapWH, screenWH);
|
|
71
|
+
gl_Position = projection * vec4(xy.x, xy.y, 0.0, 1.0);
|
|
72
|
+
}
|
|
73
|
+
gl_PointSize = u_point_size;
|
|
74
|
+
v_color = a_color;
|
|
75
|
+
}
|
|
76
|
+
`;
|
|
77
|
+
const fragmentSource = `#version 300 es
|
|
78
|
+
precision highp float;
|
|
79
|
+
|
|
80
|
+
uniform float u_opacity;
|
|
81
|
+
|
|
82
|
+
in vec4 v_color;
|
|
83
|
+
out vec4 outColor;
|
|
84
|
+
|
|
85
|
+
void main() {
|
|
86
|
+
outColor = v_color;
|
|
87
|
+
outColor.a = u_opacity;
|
|
88
|
+
}
|
|
89
|
+
`;
|
|
90
|
+
const program = createProgram(gl, vertexSource, fragmentSource);
|
|
91
|
+
const a_position = gl.getAttribLocation(program, 'a_position');
|
|
92
|
+
const a_color = gl.getAttribLocation(program, 'a_color');
|
|
54
93
|
// vao and buffer.
|
|
55
|
-
|
|
94
|
+
const vao = gl.createVertexArray();
|
|
56
95
|
gl.bindVertexArray(vao);
|
|
57
96
|
gl.bindBuffer(gl.ARRAY_BUFFER, this._inBuffer);
|
|
58
97
|
gl.enableVertexAttribArray(a_position);
|
|
@@ -60,22 +99,22 @@ var ShapesOnGlobeProgram = /** @class */ (function () {
|
|
|
60
99
|
gl.enableVertexAttribArray(a_color);
|
|
61
100
|
gl.vertexAttribPointer(a_color, 4, gl.FLOAT, false, 6 * 4, 2 * 4);
|
|
62
101
|
gl.bindVertexArray(null);
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
102
|
+
const cm = CameraUniformBlockTotemCache.get(globe);
|
|
103
|
+
const bindingPoint = 0;
|
|
104
|
+
const cmIndex = gl.getUniformBlockIndex(program, "CameraUniformBlock");
|
|
66
105
|
gl.uniformBlockBinding(program, cmIndex, bindingPoint);
|
|
67
106
|
return {
|
|
68
107
|
program: program,
|
|
69
108
|
vao: vao,
|
|
70
109
|
u_point_size: gl.getUniformLocation(program, 'u_point_size'),
|
|
71
110
|
u_opacity: gl.getUniformLocation(program, 'u_opacity'),
|
|
72
|
-
bindCamera:
|
|
73
|
-
unbindCamera:
|
|
111
|
+
bindCamera: () => cm.bind(bindingPoint),
|
|
112
|
+
unbindCamera: () => cm.unbind(bindingPoint)
|
|
74
113
|
};
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
114
|
+
}
|
|
115
|
+
draw(uProjectionMatrix, uModelViewMatrix, uTranslate, drawRanges) {
|
|
116
|
+
const { gl, _programWrapper, _is3D } = this;
|
|
117
|
+
const deepTest = gl.isEnabled(gl.DEPTH_TEST);
|
|
79
118
|
gl.disable(gl.DEPTH_TEST);
|
|
80
119
|
gl.useProgram(_programWrapper.program);
|
|
81
120
|
gl.bindVertexArray(_programWrapper.vao);
|
|
@@ -85,11 +124,10 @@ var ShapesOnGlobeProgram = /** @class */ (function () {
|
|
|
85
124
|
gl.bindVertexArray(_programWrapper.vao);
|
|
86
125
|
_programWrapper.bindCamera();
|
|
87
126
|
if (!_is3D) {
|
|
88
|
-
|
|
127
|
+
const mapWH = this.globe.api_GetCurrentWorldWH();
|
|
89
128
|
gl.uniform2f(_programWrapper.u_mapWH, mapWH.width, mapWH.height);
|
|
90
129
|
}
|
|
91
|
-
for (
|
|
92
|
-
var drawRange = drawRanges_1[_i];
|
|
130
|
+
for (const drawRange of drawRanges) {
|
|
93
131
|
gl.drawArrays(this._drawMode, drawRange[0], drawRange[1]);
|
|
94
132
|
// gl.drawArrays(gl.POINTS, drawRange[0], 1);
|
|
95
133
|
}
|
|
@@ -98,77 +136,75 @@ var ShapesOnGlobeProgram = /** @class */ (function () {
|
|
|
98
136
|
if (deepTest) {
|
|
99
137
|
gl.enable(gl.DEPTH_TEST);
|
|
100
138
|
}
|
|
101
|
-
}
|
|
102
|
-
|
|
139
|
+
}
|
|
140
|
+
setOpacity(opacity) {
|
|
103
141
|
if (opacity < 0 || opacity > 1) {
|
|
104
142
|
throw new Error('Invalid opacity value');
|
|
105
143
|
}
|
|
106
144
|
;
|
|
107
|
-
|
|
108
|
-
|
|
145
|
+
const { gl, _programWrapper } = this;
|
|
146
|
+
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
109
147
|
gl.useProgram(_programWrapper.program);
|
|
110
148
|
gl.uniform1f(_programWrapper.u_opacity, opacity);
|
|
111
149
|
gl.useProgram(currentProgram);
|
|
112
150
|
this.globe.DrawRender();
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
151
|
+
}
|
|
152
|
+
setPointSize(size) {
|
|
153
|
+
const { gl, _programWrapper } = this;
|
|
154
|
+
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
117
155
|
gl.useProgram(_programWrapper.program);
|
|
118
156
|
gl.uniform1f(_programWrapper.u_point_size, size);
|
|
119
157
|
gl.useProgram(currentProgram);
|
|
120
158
|
this.globe.DrawRender();
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
159
|
+
}
|
|
160
|
+
setDrawMode(mode) {
|
|
161
|
+
const modegl = this._getDraw(mode);
|
|
124
162
|
if (modegl) {
|
|
125
163
|
this._drawMode = modegl;
|
|
126
164
|
}
|
|
127
165
|
else {
|
|
128
166
|
throw new Error('Invalid draw mode ' + mode);
|
|
129
167
|
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
168
|
+
}
|
|
169
|
+
setScreenWH() {
|
|
170
|
+
const { gl, _programWrapper, globe } = this;
|
|
171
|
+
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
134
172
|
gl.useProgram(_programWrapper.program);
|
|
135
173
|
gl.uniform2f(_programWrapper.u_scrWH, globe.api_ScrW(), globe.api_ScrH());
|
|
136
174
|
gl.useProgram(currentProgram);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
175
|
+
}
|
|
176
|
+
resize(width, height) {
|
|
177
|
+
const { gl, _programWrapper, globe } = this;
|
|
140
178
|
width = width || globe.api_ScrW();
|
|
141
179
|
height = height || globe.api_ScrH();
|
|
142
|
-
|
|
180
|
+
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
143
181
|
gl.useProgram(_programWrapper.program);
|
|
144
182
|
gl.uniform2f(_programWrapper.u_scrWH, width, height);
|
|
145
183
|
gl.useProgram(currentProgram);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
184
|
+
}
|
|
185
|
+
setGeometry() {
|
|
186
|
+
const { gl, globe, _programWrapper } = this;
|
|
149
187
|
this._is3D = globe.api_GetCurrentGeometry() === 0;
|
|
150
|
-
|
|
188
|
+
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
151
189
|
gl.useProgram(_programWrapper.program);
|
|
152
190
|
gl.uniform1f(_programWrapper.u_is3D, this._is3D ? 1.0 : 0.0);
|
|
153
191
|
gl.useProgram(currentProgram);
|
|
154
192
|
this.resize();
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
|
|
193
|
+
}
|
|
194
|
+
free() {
|
|
195
|
+
const { gl, _programWrapper } = this;
|
|
158
196
|
gl.deleteProgram(_programWrapper.program);
|
|
159
197
|
gl.deleteVertexArray(_programWrapper.vao);
|
|
160
198
|
gl.deleteBuffer(this._inBuffer);
|
|
161
|
-
}
|
|
199
|
+
}
|
|
162
200
|
/**
|
|
163
201
|
*
|
|
164
202
|
* @param {Float32Array} data
|
|
165
203
|
* @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]
|
|
166
204
|
*/
|
|
167
|
-
|
|
168
|
-
|
|
205
|
+
setBufferData(data) {
|
|
206
|
+
const { gl } = this;
|
|
169
207
|
gl.bindBuffer(gl.ARRAY_BUFFER, this._inBuffer);
|
|
170
208
|
gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
}());
|
|
174
|
-
exports.ShapesOnGlobeProgram = ShapesOnGlobeProgram;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
@@ -1,14 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var webglobjectbuilders_1 = require("../webglobjectbuilders");
|
|
5
|
-
var SuperSampleTextureProgram = /** @class */ (function () {
|
|
6
|
-
function SuperSampleTextureProgram(gl, internalFormat, sourceFormat, sourceType, glslOutputType, glslBand) {
|
|
7
|
-
if (internalFormat === void 0) { internalFormat = null; }
|
|
8
|
-
if (sourceFormat === void 0) { sourceFormat = null; }
|
|
9
|
-
if (sourceType === void 0) { sourceType = null; }
|
|
10
|
-
if (glslOutputType === void 0) { glslOutputType = "float"; }
|
|
11
|
-
if (glslBand === void 0) { glslBand = "r"; }
|
|
1
|
+
import { createProgram } from '../webglobjectbuilders';
|
|
2
|
+
export class SuperSampleTextureProgram {
|
|
3
|
+
constructor(gl, internalFormat = null, sourceFormat = null, sourceType = null, glslOutputType = "float", glslBand = "r") {
|
|
12
4
|
this._internalFormat = internalFormat || gl.R16F;
|
|
13
5
|
this._sourceFormat = sourceFormat || gl.RED;
|
|
14
6
|
this._sourceType = sourceType || gl.FLOAT;
|
|
@@ -18,17 +10,29 @@ var SuperSampleTextureProgram = /** @class */ (function () {
|
|
|
18
10
|
this._programWrapper = this._createProgramWrapper();
|
|
19
11
|
this._framebuffer = this.gl.createFramebuffer();
|
|
20
12
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
13
|
+
_createProgramWrapper() {
|
|
14
|
+
const { gl, _glslBand, _glslOutputType } = this;
|
|
15
|
+
const vertexShaderSource = `#version 300 es
|
|
16
|
+
in vec2 a_position;
|
|
17
|
+
out vec2 v_texCoord;
|
|
18
|
+
|
|
19
|
+
uniform mat4 u_bbox_matrix;
|
|
20
|
+
|
|
21
|
+
void main() {
|
|
22
|
+
gl_Position = vec4(a_position, 0.0, 1.0);
|
|
23
|
+
v_texCoord = (u_bbox_matrix * vec4(a_position,0.0, 1.0)).xy;
|
|
24
|
+
}`;
|
|
25
|
+
const fragmentShaderSource = `#version 300 es
|
|
26
|
+
precision highp float;
|
|
27
|
+
in vec2 v_texCoord;`
|
|
28
|
+
+ `out ${_glslOutputType} outColor;`
|
|
29
|
+
+ `uniform sampler2D u_texture;
|
|
30
|
+
void main() {`
|
|
31
|
+
+ ` outColor = texture(u_texture, v_texCoord).${_glslBand};`
|
|
32
|
+
+ `}`;
|
|
33
|
+
const program = createProgram(gl, vertexShaderSource, fragmentShaderSource);
|
|
34
|
+
const vao = gl.createVertexArray();
|
|
35
|
+
const positionBuffer = gl.createBuffer();
|
|
32
36
|
gl.bindVertexArray(vao);
|
|
33
37
|
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
|
|
34
38
|
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
|
|
@@ -40,8 +44,8 @@ var SuperSampleTextureProgram = /** @class */ (function () {
|
|
|
40
44
|
gl.enableVertexAttribArray(0);
|
|
41
45
|
gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);
|
|
42
46
|
gl.bindVertexArray(null);
|
|
43
|
-
|
|
44
|
-
|
|
47
|
+
const u_bbox_matrix = gl.getUniformLocation(program, "u_bbox_matrix");
|
|
48
|
+
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
45
49
|
gl.uniformMatrix2fv(u_bbox_matrix, false, new Float32Array([
|
|
46
50
|
1, 0, 0, 0,
|
|
47
51
|
0, 1, 0, 0,
|
|
@@ -51,17 +55,17 @@ var SuperSampleTextureProgram = /** @class */ (function () {
|
|
|
51
55
|
gl.useProgram(program);
|
|
52
56
|
gl.useProgram(currentProgram);
|
|
53
57
|
return {
|
|
54
|
-
program
|
|
55
|
-
vao
|
|
58
|
+
program,
|
|
59
|
+
vao,
|
|
56
60
|
u_texture: gl.getUniformLocation(program, "u_texture"),
|
|
57
|
-
u_bbox_matrix
|
|
61
|
+
u_bbox_matrix
|
|
58
62
|
};
|
|
59
|
-
}
|
|
60
|
-
|
|
63
|
+
}
|
|
64
|
+
createHigherResolutionTexture(targetWidth, targetHeight, sourceTexture) {
|
|
61
65
|
// save current state
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
const { gl, _internalFormat, _sourceFormat, _sourceType } = this;
|
|
67
|
+
const currentViewport = gl.getParameter(gl.VIEWPORT);
|
|
68
|
+
const resultTexture = gl.createTexture();
|
|
65
69
|
gl.bindTexture(gl.TEXTURE_2D, resultTexture);
|
|
66
70
|
gl.texImage2D(gl.TEXTURE_2D, 0, _internalFormat, targetWidth, targetHeight, 0, _sourceFormat, _sourceType, null);
|
|
67
71
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
|
|
@@ -78,9 +82,9 @@ var SuperSampleTextureProgram = /** @class */ (function () {
|
|
|
78
82
|
// restore previous state
|
|
79
83
|
this.gl.viewport(currentViewport[0], currentViewport[1], currentViewport[2], currentViewport[3]);
|
|
80
84
|
return resultTexture;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
}
|
|
86
|
+
_draw(texture) {
|
|
87
|
+
const currentProgram = this.gl.getParameter(this.gl.CURRENT_PROGRAM);
|
|
84
88
|
this.gl.useProgram(this._programWrapper.program);
|
|
85
89
|
this.gl.bindVertexArray(this._programWrapper.vao);
|
|
86
90
|
this.gl.activeTexture(this.gl.TEXTURE0);
|
|
@@ -89,10 +93,10 @@ var SuperSampleTextureProgram = /** @class */ (function () {
|
|
|
89
93
|
this.gl.drawArrays(this.gl.TRIANGLE_FAN, 0, 4);
|
|
90
94
|
this.gl.bindVertexArray(null);
|
|
91
95
|
this.gl.useProgram(currentProgram);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
+
}
|
|
97
|
+
setBBox(x0, y0, x1, y1) {
|
|
98
|
+
const { gl, _programWrapper } = this;
|
|
99
|
+
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
96
100
|
gl.useProgram(_programWrapper.program);
|
|
97
101
|
gl.uniformMatrix2fv(_programWrapper.u_bbox_matrix, false, new Float32Array([
|
|
98
102
|
1 / (x1 - x0), 0, -x0 / (x1 - x0), 0,
|
|
@@ -101,7 +105,5 @@ var SuperSampleTextureProgram = /** @class */ (function () {
|
|
|
101
105
|
0, 0, 0, 1
|
|
102
106
|
]));
|
|
103
107
|
gl.useProgram(currentProgram);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
}());
|
|
107
|
-
exports.SuperSampleTextureProgram = SuperSampleTextureProgram;
|
|
108
|
+
}
|
|
109
|
+
}
|