@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
|
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.EDGE_COUNT = exports.CircleCache = void 0;
|
|
4
4
|
exports.centerCoords2dflatDataCreator = centerCoords2dflatDataCreator;
|
|
5
5
|
exports.centerCoords2dflatDataCreatorWithRadius = centerCoords2dflatDataCreatorWithRadius;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
var webglobjectbuilders_1 = require("../../util/webglobjectbuilders");
|
|
7
|
+
var camerauniformblock_1 = require("../totems/camerauniformblock");
|
|
8
|
+
var programcache_1 = require("../programcache");
|
|
9
|
+
var util_1 = require("../../util/account/util");
|
|
10
|
+
var geometrytransformations_1 = require("../../util/shaderfunctions/geometrytransformations");
|
|
11
|
+
var Pole = 20037508.34;
|
|
12
12
|
/**
|
|
13
13
|
* Warning:
|
|
14
14
|
* Insert the points from the second index and skip 1 point as you placed 361 points
|
|
@@ -16,88 +16,27 @@ const Pole = 20037508.34;
|
|
|
16
16
|
/**
|
|
17
17
|
* Plus 1 for returning to the start point. 1 for cutting the circle into pieces.
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
var EDGE_COUNT = 62;
|
|
20
20
|
exports.EDGE_COUNT = EDGE_COUNT;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
${camerauniformblock_1.CameraUniformBlockString}
|
|
28
|
-
${geometrytransformations_1.mercatorXYToGLPosition}
|
|
29
|
-
|
|
30
|
-
uniform int edge_count;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
in vec2 position2d;
|
|
34
|
-
in vec4 color;
|
|
35
|
-
in float dash_ratio;
|
|
36
|
-
in float dash_opacity;
|
|
37
|
-
|
|
38
|
-
out float interpolation;
|
|
39
|
-
out vec4 v_color;
|
|
40
|
-
out float v_dash_ratio;
|
|
41
|
-
out float v_dash_opacity;
|
|
42
|
-
out vec2 v_limp;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
void main() {
|
|
46
|
-
if ( position2d.x == escape_value && position2d.y == escape_value){ return; }
|
|
47
|
-
interpolation = float( gl_VertexID % edge_count ) / float(edge_count);
|
|
48
|
-
if ( gl_VertexID % edge_count == 0 ) { return; } // cut on the first point.
|
|
49
|
-
if ( is3D ) {
|
|
50
|
-
return;
|
|
51
|
-
v_limp = vec2(0.0, 0.0);
|
|
52
|
-
} else {
|
|
53
|
-
v_limp = position2d;
|
|
54
|
-
gl_Position = mercatorXYToGLPosition( position2d);
|
|
55
|
-
}
|
|
56
|
-
v_dash_ratio = dash_ratio;
|
|
57
|
-
v_dash_opacity = dash_opacity;
|
|
58
|
-
v_color = color;
|
|
59
|
-
gl_PointSize = 15.0;
|
|
60
|
-
|
|
61
|
-
}`;
|
|
62
|
-
const fragmentShaderSource = `#version 300 es
|
|
63
|
-
${geometrytransformations_1.POLE}
|
|
64
|
-
precision highp float;
|
|
65
|
-
uniform float opacity;
|
|
66
|
-
in vec4 v_color;
|
|
67
|
-
in float v_dash_ratio;
|
|
68
|
-
in float v_dash_opacity;
|
|
69
|
-
in float interpolation;
|
|
70
|
-
in vec2 v_limp;
|
|
71
|
-
out vec4 color;
|
|
72
|
-
void main() {
|
|
73
|
-
if ( v_limp.x < -POLE || v_limp.x > POLE || v_limp.y < -POLE || v_limp.y > POLE ){
|
|
74
|
-
discard;
|
|
75
|
-
// color = vec4(0.0,0.0,0.0,0.0);
|
|
76
|
-
// return;
|
|
77
|
-
}
|
|
78
|
-
color = v_color;
|
|
79
|
-
color.a *= opacity;
|
|
80
|
-
if ( v_dash_ratio == 1.0 || v_dash_ratio == 0.0 ) return;
|
|
81
|
-
if (fract(interpolation / (2.0 * v_dash_ratio)) < 0.5 ) {
|
|
82
|
-
color.a *= v_dash_opacity;
|
|
83
|
-
}
|
|
84
|
-
}`;
|
|
85
|
-
class Logic {
|
|
86
|
-
constructor(globe) {
|
|
21
|
+
var ESCAPE_VALUE = 200000000;
|
|
22
|
+
var vertexShaderSource = "#version 300 es\nprecision highp float;\n\n# define escape_value ".concat(ESCAPE_VALUE, ".0\n\n").concat(camerauniformblock_1.CameraUniformBlockString, "\n").concat(geometrytransformations_1.mercatorXYToGLPosition, "\n\nuniform int edge_count;\n\n\nin vec2 position2d;\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;\nout vec2 v_limp;\n\n\nvoid main() {\n if ( position2d.x == escape_value && position2d.y == escape_value){ return; }\n interpolation = float( gl_VertexID % edge_count ) / float(edge_count);\n if ( gl_VertexID % edge_count == 0 ) { return; } // cut on the first point.\n if ( is3D ) {\n return;\n v_limp = vec2(0.0, 0.0);\n } else {\n v_limp = position2d;\n gl_Position = mercatorXYToGLPosition( position2d);\n }\n v_dash_ratio = dash_ratio;\n v_dash_opacity = dash_opacity;\n v_color = color;\n gl_PointSize = 15.0;\n\n}");
|
|
23
|
+
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 if ( v_limp.x < -POLE || v_limp.x > POLE || v_limp.y < -POLE || v_limp.y > POLE ){ \n discard;\n // color = vec4(0.0,0.0,0.0,0.0); \n // return; \n }\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}");
|
|
24
|
+
var Logic = /** @class */ (function () {
|
|
25
|
+
function Logic(globe) {
|
|
87
26
|
this.globe = globe;
|
|
88
27
|
this.gl = globe.gl;
|
|
89
28
|
this._lastOpacity = 1.0;
|
|
90
29
|
this._lastMercatorMode = 0;
|
|
91
30
|
this._lastEdgeCount = EDGE_COUNT;
|
|
92
31
|
this.program = (0, webglobjectbuilders_1.createProgram)(this.gl, vertexShaderSource, fragmentShaderSource);
|
|
93
|
-
|
|
32
|
+
var _a = this, gl = _a.gl, program = _a.program;
|
|
94
33
|
this.program.uniforms = {
|
|
95
34
|
opacity: gl.getUniformLocation(program, "opacity"),
|
|
96
35
|
edgeCount: gl.getUniformLocation(program, "edge_count"),
|
|
97
36
|
mercator_calculation_mode: gl.getUniformLocation(program, "mercator_calculation_mode")
|
|
98
37
|
};
|
|
99
38
|
// initial uniform values
|
|
100
|
-
|
|
39
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
101
40
|
gl.useProgram(program);
|
|
102
41
|
gl.uniform1f(program.uniforms.opacity, 1.0);
|
|
103
42
|
gl.uniform1i(program.uniforms.edgeCount, EDGE_COUNT);
|
|
@@ -110,35 +49,35 @@ class Logic {
|
|
|
110
49
|
gl.bindAttribLocation(program, 3, "dash_opacity");
|
|
111
50
|
this.cameraBindingPoint = 0;
|
|
112
51
|
this.cameraBlockTotem = camerauniformblock_1.CameraUniformBlockTotemCache.get(globe);
|
|
113
|
-
|
|
52
|
+
var cameraBlockLocation = gl.getUniformBlockIndex(program, "CameraUniformBlock");
|
|
114
53
|
gl.uniformBlockBinding(program, cameraBlockLocation, this.cameraBindingPoint);
|
|
115
54
|
}
|
|
116
|
-
createVAO(centerObj, colorObj, dashRatioObj, dashOpacityObj) {
|
|
117
|
-
|
|
118
|
-
|
|
55
|
+
Logic.prototype.createVAO = function (centerObj, colorObj, dashRatioObj, dashOpacityObj) {
|
|
56
|
+
var gl = this.gl;
|
|
57
|
+
var vao = gl.createVertexArray();
|
|
119
58
|
gl.bindVertexArray(vao);
|
|
120
59
|
{ // make this a function end import from account module.
|
|
121
|
-
|
|
60
|
+
var buffer = centerObj.buffer, _a = centerObj.stride, stride = _a === void 0 ? 0 : _a, _b = centerObj.offset, offset = _b === void 0 ? 0 : _b;
|
|
122
61
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 0, 2, stride, offset, null);
|
|
123
62
|
}
|
|
124
63
|
{
|
|
125
|
-
|
|
64
|
+
var buffer = colorObj.buffer, _c = colorObj.stride, stride = _c === void 0 ? 0 : _c, _d = colorObj.offset, offset = _d === void 0 ? 0 : _d;
|
|
126
65
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 1, 4, stride, offset, null);
|
|
127
66
|
}
|
|
128
67
|
{
|
|
129
|
-
|
|
68
|
+
var buffer = dashRatioObj.buffer, _e = dashRatioObj.stride, stride = _e === void 0 ? 0 : _e, _f = dashRatioObj.offset, offset = _f === void 0 ? 0 : _f;
|
|
130
69
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 2, 1, stride, offset, null);
|
|
131
70
|
}
|
|
132
71
|
{
|
|
133
|
-
|
|
72
|
+
var buffer = dashOpacityObj.buffer, _g = dashOpacityObj.stride, stride = _g === void 0 ? 0 : _g, _h = dashOpacityObj.offset, offset = _h === void 0 ? 0 : _h;
|
|
134
73
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 3, 1, stride, offset, null);
|
|
135
74
|
}
|
|
136
75
|
gl.bindVertexArray(null);
|
|
137
76
|
gl.bindVertexArray(null);
|
|
138
77
|
return vao;
|
|
139
|
-
}
|
|
140
|
-
draw(vao, length, edgeCount, opacity) {
|
|
141
|
-
|
|
78
|
+
};
|
|
79
|
+
Logic.prototype.draw = function (vao, length, edgeCount, opacity) {
|
|
80
|
+
var _a = this, gl = _a.gl, program = _a.program, cameraBlockTotem = _a.cameraBlockTotem, cameraBindingPoint = _a.cameraBindingPoint;
|
|
142
81
|
gl.useProgram(program);
|
|
143
82
|
if (this._lastOpacity !== opacity) {
|
|
144
83
|
gl.uniform1f(program.uniforms.opacity, opacity);
|
|
@@ -154,35 +93,37 @@ class Logic {
|
|
|
154
93
|
// gl.drawArrays(gl.POINTS, 0, length * EDGE_COUNT)
|
|
155
94
|
cameraBlockTotem.unbind(cameraBindingPoint);
|
|
156
95
|
gl.bindVertexArray(null);
|
|
157
|
-
}
|
|
158
|
-
free() {
|
|
96
|
+
};
|
|
97
|
+
Logic.prototype.free = function () {
|
|
159
98
|
if (this.isFreed)
|
|
160
99
|
return;
|
|
161
100
|
camerauniformblock_1.CameraUniformBlockTotemCache.release(this.globe);
|
|
162
101
|
this.gl.deleteProgram(this.program);
|
|
163
102
|
this.isFreed = true;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
103
|
+
};
|
|
104
|
+
return Logic;
|
|
105
|
+
}());
|
|
106
|
+
var CircleCache = Object.freeze({
|
|
107
|
+
get: function (globe) { return programcache_1.noRegisterGlobeProgramCache.getProgram(globe, Logic); },
|
|
108
|
+
release: function (globe) { return programcache_1.noRegisterGlobeProgramCache.releaseProgram(globe, Logic); }
|
|
169
109
|
});
|
|
170
110
|
exports.CircleCache = CircleCache;
|
|
171
|
-
function centerCoords2dflatDataCreator(globe, centerLong, centerLat, targetLong, targetLat,
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
111
|
+
function centerCoords2dflatDataCreator(globe, centerLong, centerLat, targetLong, targetLat, _a) {
|
|
112
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.startAngleOfCircle, startAngleOfCircle = _c === void 0 ? null : _c, _d = _b.edgeCount, edgeCount = _d === void 0 ? EDGE_COUNT : _d, _e = _b.radiusOffset, radiusOffset = _e === void 0 ? 0 : _e;
|
|
113
|
+
var centerCoords2dflat = new Float32Array(edgeCount * 2);
|
|
114
|
+
var radius2d = globe.Math.GetDist2D(centerLong, centerLat, targetLong, targetLat) + radiusOffset;
|
|
115
|
+
var angle;
|
|
175
116
|
if (startAngleOfCircle === null) {
|
|
176
117
|
angle = globe.Math.GetAzimuthAngle(centerLong, centerLat, targetLong, targetLat);
|
|
177
118
|
}
|
|
178
119
|
else {
|
|
179
120
|
angle = startAngleOfCircle;
|
|
180
121
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
for (
|
|
185
|
-
|
|
122
|
+
var pointsLongLat = globe.Math.GetEllipseGeo(centerLong, centerLat, radius2d, radius2d, angle, 360 / (edgeCount - 2));
|
|
123
|
+
var lastlg = pointsLongLat[0].long;
|
|
124
|
+
var lastlt = pointsLongLat[0].lat;
|
|
125
|
+
for (var i = 1; i < edgeCount; i++) {
|
|
126
|
+
var _f = pointsLongLat[i - 1], lg = _f.long, lt = _f.lat;
|
|
186
127
|
if (manhattanDistance(lastlg, lastlt, lg, lt) < 170) {
|
|
187
128
|
centerCoords2dflat.set(globe.api_GetMercator2DPoint(lg, lt), i * 2);
|
|
188
129
|
}
|
|
@@ -194,12 +135,13 @@ function centerCoords2dflatDataCreator(globe, centerLong, centerLat, targetLong,
|
|
|
194
135
|
}
|
|
195
136
|
return centerCoords2dflat;
|
|
196
137
|
}
|
|
197
|
-
function centerCoords2dflatDataCreatorWithRadius(globe, centerLong, centerLat, radius2d,
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
138
|
+
function centerCoords2dflatDataCreatorWithRadius(globe, centerLong, centerLat, radius2d, _a) {
|
|
139
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.startAngleOfCircle, startAngleOfCircle = _c === void 0 ? null : _c, _d = _b.edgeCount, edgeCount = _d === void 0 ? EDGE_COUNT : _d;
|
|
140
|
+
var centerCoords2dflat = new Float32Array(edgeCount * 2);
|
|
141
|
+
var pointsLongLat = globe.Math.GetEllipseGeo(centerLong, centerLat, radius2d, radius2d, 0, 360 / (edgeCount - 2));
|
|
142
|
+
var _e = pointsLongLat[0], lastlg = _e.long, lastlt = _e.lat;
|
|
143
|
+
for (var i = 1; i < edgeCount; i++) {
|
|
144
|
+
var _f = pointsLongLat[i - 1], lg = _f.long, lt = _f.lat;
|
|
203
145
|
if (manhattanDistance(lastlg, lastlt, lg, lt) < 170) {
|
|
204
146
|
centerCoords2dflat.set(globe.api_GetMercator2DPoint(lg, lt), i * 2);
|
|
205
147
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CircleCache = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
var webglobjectbuilders_1 = require("../../util/webglobjectbuilders");
|
|
5
|
+
var camerauniformblock_1 = require("../totems/camerauniformblock");
|
|
6
|
+
var programcache_1 = require("../programcache");
|
|
7
|
+
var util_1 = require("../../util/account/util");
|
|
8
|
+
var geometrytransformations_1 = require("../../util/shaderfunctions/geometrytransformations");
|
|
9
9
|
/**
|
|
10
10
|
* TODO:
|
|
11
11
|
* 1. integrate geometry functions for radius angle and center
|
|
@@ -14,92 +14,21 @@ const geometrytransformations_1 = require("../../util/shaderfunctions/geometrytr
|
|
|
14
14
|
* TODO:
|
|
15
15
|
* center_position is too small or doenst loaded as expected.
|
|
16
16
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
${geometrytransformations_1.longLatRadToCartesian3D}
|
|
23
|
-
${geometrytransformations_1.cartesian3DToGLPosition}
|
|
24
|
-
${geometrytransformations_1.mercatorXYToGLPosition}
|
|
25
|
-
${geometrytransformations_1.realDistanceOnSphereR1}
|
|
26
|
-
${geometrytransformations_1.circleLimpFromLongLatRadCenterCartesian3D_accurate}
|
|
27
|
-
${geometrytransformations_1.circleLimpFromLongLatRadCenterMercatorCompass_accurate}
|
|
28
|
-
${geometrytransformations_1.circleLimpFromLongLatRadCenterMercatorRealDistanceNew_accurate}
|
|
29
|
-
|
|
30
|
-
uniform float edge_count;
|
|
31
|
-
|
|
32
|
-
in vec2 center_position;
|
|
33
|
-
in vec3 center_position3d;
|
|
34
|
-
in float radius;
|
|
35
|
-
in vec4 color;
|
|
36
|
-
in float dash_ratio;
|
|
37
|
-
in float dash_opacity;
|
|
38
|
-
|
|
39
|
-
out float interpolation;
|
|
40
|
-
out vec4 v_color;
|
|
41
|
-
out float v_dash_ratio;
|
|
42
|
-
out float v_dash_opacity;
|
|
43
|
-
out vec2 v_limp;
|
|
44
|
-
void main() {
|
|
45
|
-
interpolation = float( gl_VertexID ) / ${EDGE_COUNT_ON_SPHERE}.0;
|
|
46
|
-
float angle = PI * 2.0 * interpolation;
|
|
47
|
-
if ( is3D ) {
|
|
48
|
-
|
|
49
|
-
vec3 position = circleLimpFromLongLatRadCenterCartesian3D_accurate(center_position3d, radius, angle);
|
|
50
|
-
|
|
51
|
-
gl_Position = cartesian3DToGLPosition(position);
|
|
52
|
-
v_limp = vec2(0.0, 0.0);
|
|
53
|
-
} else {
|
|
54
|
-
vec2 position;
|
|
55
|
-
if ( radius < 0.0) {
|
|
56
|
-
float cosine1 = cos(asin(tanh(center_position.y / 6378137.0)));
|
|
57
|
-
position = circleLimpFromLongLatRadCenterMercatorCompass_accurate(center_position, radius / cosine1 , angle);
|
|
58
|
-
} else {
|
|
59
|
-
position = circleLimpFromLongLatRadCenterMercatorRealDistanceNew_accurate( center_position, radius, angle);
|
|
60
|
-
}
|
|
61
|
-
v_limp = position;
|
|
62
|
-
gl_Position = mercatorXYToGLPosition( position);
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
v_dash_ratio = dash_ratio;
|
|
66
|
-
v_dash_opacity = dash_opacity;
|
|
67
|
-
v_color = color;
|
|
68
|
-
gl_PointSize = 3.0;
|
|
69
|
-
|
|
70
|
-
}`;
|
|
71
|
-
const fragmentShaderSource = `#version 300 es
|
|
72
|
-
${geometrytransformations_1.POLE}
|
|
73
|
-
precision highp float;
|
|
74
|
-
uniform float opacity;
|
|
75
|
-
in vec4 v_color;
|
|
76
|
-
in float v_dash_ratio;
|
|
77
|
-
in float v_dash_opacity;
|
|
78
|
-
in float interpolation;
|
|
79
|
-
in vec2 v_limp;
|
|
80
|
-
out vec4 color;
|
|
81
|
-
void main() {
|
|
82
|
-
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; }
|
|
83
|
-
color = v_color;
|
|
84
|
-
color.a *= opacity;
|
|
85
|
-
if ( v_dash_ratio == 1.0 || v_dash_ratio == 0.0 ) return;
|
|
86
|
-
if (fract(interpolation / (2.0 * v_dash_ratio)) < 0.5 ) {
|
|
87
|
-
color.a *= v_dash_opacity;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
`;
|
|
91
|
-
class Logic {
|
|
92
|
-
constructor(globe) {
|
|
17
|
+
var EDGE_COUNT_ON_SPHERE = 360;
|
|
18
|
+
var vertexShaderSource = "#version 300 es\nprecision highp float;\n".concat(camerauniformblock_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.realDistanceOnSphereR1, "\n").concat(geometrytransformations_1.circleLimpFromLongLatRadCenterCartesian3D_accurate, "\n").concat(geometrytransformations_1.circleLimpFromLongLatRadCenterMercatorCompass_accurate, "\n").concat(geometrytransformations_1.circleLimpFromLongLatRadCenterMercatorRealDistanceNew_accurate, "\n\nuniform float edge_count;\n\nin vec2 center_position;\nin vec3 center_position3d;\nin 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;\nout vec2 v_limp;\nvoid main() {\n interpolation = float( gl_VertexID ) / ").concat(EDGE_COUNT_ON_SPHERE, ".0;\n float angle = PI * 2.0 * interpolation;\n if ( is3D ) {\n\n vec3 position = circleLimpFromLongLatRadCenterCartesian3D_accurate(center_position3d, radius, angle);\n \n gl_Position = cartesian3DToGLPosition(position);\n v_limp = vec2(0.0, 0.0);\n } else {\n vec2 position; \n if ( radius < 0.0) {\n float cosine1 = cos(asin(tanh(center_position.y / 6378137.0)));\n position = circleLimpFromLongLatRadCenterMercatorCompass_accurate(center_position, radius / cosine1 , angle);\n } else {\n position = circleLimpFromLongLatRadCenterMercatorRealDistanceNew_accurate( center_position, radius, angle);\n }\n v_limp = position;\n gl_Position = mercatorXYToGLPosition( position);\n\n }\n v_dash_ratio = dash_ratio;\n v_dash_opacity = dash_opacity;\n v_color = color;\n gl_PointSize = 3.0;\n\n}");
|
|
19
|
+
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 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 = 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");
|
|
20
|
+
var Logic = /** @class */ (function () {
|
|
21
|
+
function Logic(globe) {
|
|
93
22
|
this.globe = globe;
|
|
94
23
|
this.gl = globe.gl;
|
|
95
24
|
this._lastOpacity = 1.0;
|
|
96
25
|
this.program = (0, webglobjectbuilders_1.createProgram)(this.gl, vertexShaderSource, fragmentShaderSource);
|
|
97
|
-
|
|
26
|
+
var _a = this, gl = _a.gl, program = _a.program;
|
|
98
27
|
this.program.uniforms = {
|
|
99
28
|
opacity: gl.getUniformLocation(program, "opacity")
|
|
100
29
|
};
|
|
101
30
|
{ // initial uniform values
|
|
102
|
-
|
|
31
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
103
32
|
gl.useProgram(program);
|
|
104
33
|
gl.uniform1f(program.uniforms.opacity, 1.0);
|
|
105
34
|
gl.useProgram(currentProgram);
|
|
@@ -114,44 +43,44 @@ class Logic {
|
|
|
114
43
|
}
|
|
115
44
|
this.cameraBindingPoint = 0;
|
|
116
45
|
this.cameraBlockTotem = camerauniformblock_1.CameraUniformBlockTotemCache.get(globe);
|
|
117
|
-
|
|
46
|
+
var cameraBlockLocation = gl.getUniformBlockIndex(program, "CameraUniformBlock");
|
|
118
47
|
gl.uniformBlockBinding(program, cameraBlockLocation, this.cameraBindingPoint);
|
|
119
48
|
}
|
|
120
|
-
createVAO(centerObj, center3dObj, radiusObj, colorObj, dashRatioObj, dashOpacityObj) {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
49
|
+
Logic.prototype.createVAO = function (centerObj, center3dObj, radiusObj, colorObj, dashRatioObj, dashOpacityObj) {
|
|
50
|
+
var gl = this.gl;
|
|
51
|
+
var vao = gl.createVertexArray();
|
|
52
|
+
var divisor = 1;
|
|
124
53
|
gl.bindVertexArray(vao);
|
|
125
54
|
{ // make this a function end import from account module.
|
|
126
|
-
|
|
55
|
+
var buffer = centerObj.buffer, _a = centerObj.stride, stride = _a === void 0 ? 0 : _a, _b = centerObj.offset, offset = _b === void 0 ? 0 : _b;
|
|
127
56
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 0, 2, stride, offset, divisor);
|
|
128
57
|
}
|
|
129
58
|
{ // make this a function end import from account module.
|
|
130
|
-
|
|
59
|
+
var buffer = center3dObj.buffer, _c = center3dObj.stride, stride = _c === void 0 ? 0 : _c, _d = center3dObj.offset, offset = _d === void 0 ? 0 : _d;
|
|
131
60
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 1, 3, stride, offset, divisor);
|
|
132
61
|
}
|
|
133
62
|
{
|
|
134
|
-
|
|
63
|
+
var buffer = radiusObj.buffer, _e = radiusObj.stride, stride = _e === void 0 ? 0 : _e, _f = radiusObj.offset, offset = _f === void 0 ? 0 : _f;
|
|
135
64
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 2, 1, stride, offset, divisor);
|
|
136
65
|
}
|
|
137
66
|
{
|
|
138
|
-
|
|
67
|
+
var buffer = colorObj.buffer, _g = colorObj.stride, stride = _g === void 0 ? 0 : _g, _h = colorObj.offset, offset = _h === void 0 ? 0 : _h;
|
|
139
68
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 3, 4, stride, offset, divisor);
|
|
140
69
|
}
|
|
141
70
|
{
|
|
142
|
-
|
|
71
|
+
var buffer = dashRatioObj.buffer, _j = dashRatioObj.stride, stride = _j === void 0 ? 0 : _j, _k = dashRatioObj.offset, offset = _k === void 0 ? 0 : _k;
|
|
143
72
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 4, 1, stride, offset, divisor);
|
|
144
73
|
}
|
|
145
74
|
{
|
|
146
|
-
|
|
75
|
+
var buffer = dashOpacityObj.buffer, _l = dashOpacityObj.stride, stride = _l === void 0 ? 0 : _l, _m = dashOpacityObj.offset, offset = _m === void 0 ? 0 : _m;
|
|
147
76
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 5, 1, stride, offset, divisor);
|
|
148
77
|
}
|
|
149
78
|
gl.bindVertexArray(null);
|
|
150
79
|
gl.bindVertexArray(null);
|
|
151
80
|
return vao;
|
|
152
|
-
}
|
|
153
|
-
draw(vao, length, opacity) {
|
|
154
|
-
|
|
81
|
+
};
|
|
82
|
+
Logic.prototype.draw = function (vao, length, opacity) {
|
|
83
|
+
var _a = this, gl = _a.gl, program = _a.program, cameraBlockTotem = _a.cameraBlockTotem, cameraBindingPoint = _a.cameraBindingPoint;
|
|
155
84
|
gl.useProgram(program);
|
|
156
85
|
if (this._lastOpacity !== opacity) {
|
|
157
86
|
gl.uniform1f(program.uniforms.opacity, opacity);
|
|
@@ -163,16 +92,17 @@ class Logic {
|
|
|
163
92
|
gl.drawArraysInstanced(gl.POINTS, 0, EDGE_COUNT_ON_SPHERE + 1, length);
|
|
164
93
|
cameraBlockTotem.unbind(cameraBindingPoint);
|
|
165
94
|
gl.bindVertexArray(null);
|
|
166
|
-
}
|
|
167
|
-
free() {
|
|
95
|
+
};
|
|
96
|
+
Logic.prototype.free = function () {
|
|
168
97
|
if (this.isFreed)
|
|
169
98
|
return;
|
|
170
99
|
camerauniformblock_1.CameraUniformBlockTotemCache.release(this.globe);
|
|
171
100
|
this.gl.deleteProgram(this.program);
|
|
172
101
|
this.isFreed = true;
|
|
173
|
-
}
|
|
174
|
-
|
|
102
|
+
};
|
|
103
|
+
return Logic;
|
|
104
|
+
}());
|
|
175
105
|
exports.CircleCache = Object.freeze({
|
|
176
|
-
get: (globe)
|
|
177
|
-
release: (globe)
|
|
106
|
+
get: function (globe) { return programcache_1.noRegisterGlobeProgramCache.getProgram(globe, Logic); },
|
|
107
|
+
release: function (globe) { return programcache_1.noRegisterGlobeProgramCache.releaseProgram(globe, Logic); }
|
|
178
108
|
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CircleCache = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
var webglobjectbuilders_1 = require("../../util/webglobjectbuilders");
|
|
5
|
+
var camerauniformblock_1 = require("../totems/camerauniformblock");
|
|
6
|
+
var programcache_1 = require("../programcache");
|
|
7
|
+
var util_1 = require("../../util/account/util");
|
|
8
|
+
var geometrytransformations_1 = require("../../util/shaderfunctions/geometrytransformations");
|
|
9
9
|
/**
|
|
10
10
|
* TODO:
|
|
11
11
|
* 1. integrate geometry functions for radius angle and center
|
|
@@ -14,87 +14,21 @@ const geometrytransformations_1 = require("../../util/shaderfunctions/geometrytr
|
|
|
14
14
|
* TODO:
|
|
15
15
|
* center_position is too small or doenst loaded as expected.
|
|
16
16
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
${geometrytransformations_1.longLatRadToCartesian3D}
|
|
23
|
-
${geometrytransformations_1.cartesian3DToGLPosition}
|
|
24
|
-
${geometrytransformations_1.mercatorXYToGLPosition}
|
|
25
|
-
${geometrytransformations_1.realDistanceOnSphereR1}
|
|
26
|
-
${geometrytransformations_1.circleLimpFromLongLatRadCenterCartesian3D}
|
|
27
|
-
${geometrytransformations_1.circleLimpFromLongLatRadCenterMercatorCompass}
|
|
28
|
-
${geometrytransformations_1.circleLimpFromLongLatRadCenterMercatorRealDistance}
|
|
29
|
-
|
|
30
|
-
uniform float edge_count;
|
|
31
|
-
|
|
32
|
-
in vec2 center_position;
|
|
33
|
-
in float radius;
|
|
34
|
-
in vec4 color;
|
|
35
|
-
in float dash_ratio;
|
|
36
|
-
in float dash_opacity;
|
|
37
|
-
|
|
38
|
-
out float interpolation;
|
|
39
|
-
out vec4 v_color;
|
|
40
|
-
out float v_dash_ratio;
|
|
41
|
-
out float v_dash_opacity;
|
|
42
|
-
out vec2 v_limp;
|
|
43
|
-
void main() {
|
|
44
|
-
interpolation = float( gl_VertexID ) / ${EDGE_COUNT_ON_SPHERE}.0;
|
|
45
|
-
float angle = PI * 2.0 * interpolation;
|
|
46
|
-
if ( is3D ) {
|
|
47
|
-
vec3 position = circleLimpFromLongLatRadCenterCartesian3D( center_position, radius, angle);
|
|
48
|
-
gl_Position = cartesian3DToGLPosition(position);
|
|
49
|
-
v_limp = vec2(0.0, 0.0);
|
|
50
|
-
} else {
|
|
51
|
-
vec2 position;
|
|
52
|
-
if (radius < 1400.0) {
|
|
53
|
-
position = circleLimpFromLongLatRadCenterMercatorCompass( center_position, radius/ cos(center_position.y), angle);
|
|
54
|
-
} else {
|
|
55
|
-
position = circleLimpFromLongLatRadCenterMercatorRealDistance( center_position, radius, angle);
|
|
56
|
-
}
|
|
57
|
-
v_limp = position;
|
|
58
|
-
gl_Position = mercatorXYToGLPosition( position);
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
v_dash_ratio = dash_ratio;
|
|
62
|
-
v_dash_opacity = dash_opacity;
|
|
63
|
-
v_color = color;
|
|
64
|
-
|
|
65
|
-
}`;
|
|
66
|
-
const fragmentShaderSource = `#version 300 es
|
|
67
|
-
${geometrytransformations_1.POLE}
|
|
68
|
-
precision highp float;
|
|
69
|
-
uniform float opacity;
|
|
70
|
-
in vec4 v_color;
|
|
71
|
-
in float v_dash_ratio;
|
|
72
|
-
in float v_dash_opacity;
|
|
73
|
-
in float interpolation;
|
|
74
|
-
in vec2 v_limp;
|
|
75
|
-
out vec4 color;
|
|
76
|
-
void main() {
|
|
77
|
-
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; }
|
|
78
|
-
color = v_color;
|
|
79
|
-
color.a *= opacity;
|
|
80
|
-
if ( v_dash_ratio == 1.0 || v_dash_ratio == 0.0 ) return;
|
|
81
|
-
if (fract(interpolation / (2.0 * v_dash_ratio)) < 0.5 ) {
|
|
82
|
-
color.a *= v_dash_opacity;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
`;
|
|
86
|
-
class Logic {
|
|
87
|
-
constructor(globe) {
|
|
17
|
+
var EDGE_COUNT_ON_SPHERE = 360;
|
|
18
|
+
var vertexShaderSource = "#version 300 es\nprecision highp float;\n".concat(camerauniformblock_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.realDistanceOnSphereR1, "\n").concat(geometrytransformations_1.circleLimpFromLongLatRadCenterCartesian3D, "\n").concat(geometrytransformations_1.circleLimpFromLongLatRadCenterMercatorCompass, "\n").concat(geometrytransformations_1.circleLimpFromLongLatRadCenterMercatorRealDistance, "\n\nuniform float edge_count;\n\nin vec2 center_position;\nin 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;\nout vec2 v_limp;\nvoid main() {\n interpolation = float( gl_VertexID ) / ").concat(EDGE_COUNT_ON_SPHERE, ".0;\n float angle = PI * 2.0 * interpolation;\n if ( is3D ) {\n vec3 position = circleLimpFromLongLatRadCenterCartesian3D( center_position, radius, angle);\n gl_Position = cartesian3DToGLPosition(position);\n v_limp = vec2(0.0, 0.0);\n } else {\n vec2 position;\n if (radius < 1400.0) {\n position = circleLimpFromLongLatRadCenterMercatorCompass( center_position, radius/ cos(center_position.y), angle);\n } else {\n position = circleLimpFromLongLatRadCenterMercatorRealDistance( center_position, radius, angle);\n }\n v_limp = position;\n gl_Position = mercatorXYToGLPosition( position);\n\n }\n v_dash_ratio = dash_ratio;\n v_dash_opacity = dash_opacity;\n v_color = color;\n\n}");
|
|
19
|
+
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 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 = 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");
|
|
20
|
+
var Logic = /** @class */ (function () {
|
|
21
|
+
function Logic(globe) {
|
|
88
22
|
this.globe = globe;
|
|
89
23
|
this.gl = globe.gl;
|
|
90
24
|
this._lastOpacity = 1.0;
|
|
91
25
|
this.program = (0, webglobjectbuilders_1.createProgram)(this.gl, vertexShaderSource, fragmentShaderSource);
|
|
92
|
-
|
|
26
|
+
var _a = this, gl = _a.gl, program = _a.program;
|
|
93
27
|
this.program.uniforms = {
|
|
94
28
|
opacity: gl.getUniformLocation(program, "opacity")
|
|
95
29
|
};
|
|
96
30
|
{ // initial uniform values
|
|
97
|
-
|
|
31
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
98
32
|
gl.useProgram(program);
|
|
99
33
|
gl.uniform1f(program.uniforms.opacity, 1.0);
|
|
100
34
|
gl.useProgram(currentProgram);
|
|
@@ -108,40 +42,40 @@ class Logic {
|
|
|
108
42
|
}
|
|
109
43
|
this.cameraBindingPoint = 0;
|
|
110
44
|
this.cameraBlockTotem = camerauniformblock_1.CameraUniformBlockTotemCache.get(globe);
|
|
111
|
-
|
|
45
|
+
var cameraBlockLocation = gl.getUniformBlockIndex(program, "CameraUniformBlock");
|
|
112
46
|
gl.uniformBlockBinding(program, cameraBlockLocation, this.cameraBindingPoint);
|
|
113
47
|
}
|
|
114
|
-
createVAO(centerObj, radiusObj, colorObj, dashRatioObj, dashOpacityObj) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
48
|
+
Logic.prototype.createVAO = function (centerObj, radiusObj, colorObj, dashRatioObj, dashOpacityObj) {
|
|
49
|
+
var gl = this.gl;
|
|
50
|
+
var vao = gl.createVertexArray();
|
|
51
|
+
var divisor = 1;
|
|
118
52
|
gl.bindVertexArray(vao);
|
|
119
53
|
{ // make this a function end import from account module.
|
|
120
|
-
|
|
54
|
+
var buffer = centerObj.buffer, _a = centerObj.stride, stride = _a === void 0 ? 0 : _a, _b = centerObj.offset, offset = _b === void 0 ? 0 : _b;
|
|
121
55
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 0, 2, stride, offset, divisor);
|
|
122
56
|
}
|
|
123
57
|
{
|
|
124
|
-
|
|
58
|
+
var buffer = radiusObj.buffer, _c = radiusObj.stride, stride = _c === void 0 ? 0 : _c, _d = radiusObj.offset, offset = _d === void 0 ? 0 : _d;
|
|
125
59
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 1, 1, stride, offset, divisor);
|
|
126
60
|
}
|
|
127
61
|
{
|
|
128
|
-
|
|
62
|
+
var buffer = colorObj.buffer, _e = colorObj.stride, stride = _e === void 0 ? 0 : _e, _f = colorObj.offset, offset = _f === void 0 ? 0 : _f;
|
|
129
63
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 2, 4, stride, offset, divisor);
|
|
130
64
|
}
|
|
131
65
|
{
|
|
132
|
-
|
|
66
|
+
var buffer = dashRatioObj.buffer, _g = dashRatioObj.stride, stride = _g === void 0 ? 0 : _g, _h = dashRatioObj.offset, offset = _h === void 0 ? 0 : _h;
|
|
133
67
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 3, 1, stride, offset, divisor);
|
|
134
68
|
}
|
|
135
69
|
{
|
|
136
|
-
|
|
70
|
+
var buffer = dashOpacityObj.buffer, _j = dashOpacityObj.stride, stride = _j === void 0 ? 0 : _j, _k = dashOpacityObj.offset, offset = _k === void 0 ? 0 : _k;
|
|
137
71
|
(0, util_1.vaoAttributeLoader)(gl, buffer, 4, 1, stride, offset, divisor);
|
|
138
72
|
}
|
|
139
73
|
gl.bindVertexArray(null);
|
|
140
74
|
gl.bindVertexArray(null);
|
|
141
75
|
return vao;
|
|
142
|
-
}
|
|
143
|
-
draw(vao, length, opacity) {
|
|
144
|
-
|
|
76
|
+
};
|
|
77
|
+
Logic.prototype.draw = function (vao, length, opacity) {
|
|
78
|
+
var _a = this, gl = _a.gl, program = _a.program, cameraBlockTotem = _a.cameraBlockTotem, cameraBindingPoint = _a.cameraBindingPoint;
|
|
145
79
|
gl.useProgram(program);
|
|
146
80
|
if (this._lastOpacity !== opacity) {
|
|
147
81
|
gl.uniform1f(program.uniforms.opacity, opacity);
|
|
@@ -152,16 +86,17 @@ class Logic {
|
|
|
152
86
|
gl.drawArraysInstanced(gl.LINE_STRIP, 0, EDGE_COUNT_ON_SPHERE + 1, length);
|
|
153
87
|
cameraBlockTotem.unbind(cameraBindingPoint);
|
|
154
88
|
gl.bindVertexArray(null);
|
|
155
|
-
}
|
|
156
|
-
free() {
|
|
89
|
+
};
|
|
90
|
+
Logic.prototype.free = function () {
|
|
157
91
|
if (this.isFreed)
|
|
158
92
|
return;
|
|
159
93
|
camerauniformblock_1.CameraUniformBlockTotemCache.release(this.globe);
|
|
160
94
|
this.gl.deleteProgram(this.program);
|
|
161
95
|
this.isFreed = true;
|
|
162
|
-
}
|
|
163
|
-
|
|
96
|
+
};
|
|
97
|
+
return Logic;
|
|
98
|
+
}());
|
|
164
99
|
exports.CircleCache = Object.freeze({
|
|
165
|
-
get: (globe)
|
|
166
|
-
release: (globe)
|
|
100
|
+
get: function (globe) { return programcache_1.noRegisterGlobeProgramCache.getProgram(globe, Logic); },
|
|
101
|
+
release: function (globe) { return programcache_1.noRegisterGlobeProgramCache.releaseProgram(globe, Logic); }
|
|
167
102
|
});
|