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