@pirireis/webglobeplugins 0.9.11 → 0.9.12
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 +78 -80
- 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 +14 -16
- package/Math/methods.js +65 -70
- package/Math/plane.js +16 -18
- package/Math/quaternion.js +45 -49
- package/Math/utils.js +2 -2
- package/Math/vec3.js +42 -45
- package/algorithms/search-binary.js +4 -4
- package/altitude-locator/draw-subset-obj.js +7 -8
- package/altitude-locator/plugin.js +98 -114
- package/arrowfield/adaptor.js +3 -4
- package/arrowfield/index.js +2 -2
- package/arrowfield/plugin.js +62 -65
- package/bearing-line/index.js +1 -1
- package/bearing-line/plugin.js +200 -226
- package/circle-line-chain/chain-list-map.js +82 -88
- package/circle-line-chain/plugin.js +134 -165
- package/circle-line-chain/util.js +1 -1
- package/compass-rose/compass-rose-padding-flat.js +108 -133
- package/compass-rose/compass-text-writer.js +62 -70
- package/compass-rose/index.js +2 -2
- package/compassrose/compassrose.js +46 -50
- package/compassrose/index.js +1 -1
- package/heatwave/index.js +2 -2
- package/heatwave/isobar/objectarraylabels.js +44 -48
- package/heatwave/isobar/plugin.js +104 -123
- package/heatwave/isobar/quadtreecontours.js +76 -92
- package/heatwave/plugins/heatwaveglobeshell.js +69 -87
- package/index.js +11 -11
- package/package.json +1 -1
- package/partialrings/buffer-manager.js +32 -64
- package/partialrings/index.js +1 -1
- package/partialrings/plugin.js +48 -84
- package/partialrings/program.js +136 -47
- package/pin/pin-object-array.js +83 -86
- package/pin/pin-point-totem.js +21 -22
- package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +10 -10
- package/point-heat-map/plugin-webworker.js +40 -45
- package/point-heat-map/point-to-heat-map-flow.js +40 -42
- package/point-tracks/key-methods.js +1 -1
- package/point-tracks/plugin.js +137 -162
- package/programs/arrowfield/index.js +1 -1
- package/programs/arrowfield/logic.js +170 -62
- package/programs/arrowfield/object.js +33 -35
- package/programs/data2legend/density-to-legend.js +45 -21
- package/programs/data2legend/point-to-density-texture.js +52 -27
- package/programs/float2legendwithratio/index.js +1 -1
- package/programs/float2legendwithratio/logic.js +88 -42
- package/programs/float2legendwithratio/object.js +43 -46
- package/programs/globe-util/is-globe-moved.js +10 -11
- package/programs/globeshell/index.js +1 -1
- package/programs/globeshell/wiggle/index.js +1 -1
- package/programs/globeshell/wiggle/logic.js +191 -98
- package/programs/globeshell/wiggle/object.js +33 -35
- package/programs/helpers/blender/program.js +36 -19
- package/programs/helpers/fadeaway/index.js +1 -1
- package/programs/helpers/fadeaway/logic.js +35 -13
- package/programs/helpers/fadeaway/object.js +9 -10
- package/programs/helpers/index.js +1 -1
- package/programs/index.js +8 -8
- package/programs/line-on-globe/angled-line.js +91 -32
- package/programs/line-on-globe/circle-accurate-3d.js +82 -32
- package/programs/line-on-globe/circle-accurate-flat.js +108 -50
- package/programs/line-on-globe/circle-accurate.js +103 -33
- package/programs/line-on-globe/circle.js +97 -32
- package/programs/line-on-globe/degree-padding-around-circle-3d.js +83 -33
- package/programs/line-on-globe/lines-color-instanced-flat.js +79 -34
- package/programs/line-on-globe/linestrip.js +111 -45
- package/programs/line-on-globe/naive-accurate-flexible.js +120 -50
- package/programs/line-on-globe/to-the-surface.js +58 -29
- package/programs/line-on-globe/util.js +1 -1
- package/programs/picking/pickable-renderer.js +117 -33
- package/programs/point-on-globe/element-globe-surface-glow.js +78 -38
- package/programs/point-on-globe/element-point-glow.js +103 -35
- package/programs/point-on-globe/square-pixel-point.js +76 -27
- package/programs/programcache.js +13 -13
- package/programs/rings/distancering/circleflatprogram.js +63 -21
- package/programs/rings/distancering/circlepaddingfreeangleprogram.js +156 -145
- package/programs/rings/distancering/circlepaddysharedbuffer.js +121 -197
- package/programs/rings/distancering/index.js +4 -4
- package/programs/rings/distancering/paddyflatprogram.js +73 -20
- package/programs/rings/distancering/paddyflatprogram2d.js +75 -22
- package/programs/rings/distancering/paddyflatprogram3d.js +73 -20
- package/programs/rings/partial-ring/piece-of-pie.js +137 -35
- package/programs/totems/camerauniformblock.js +64 -51
- package/programs/totems/canvas-webglobe-info.js +48 -40
- package/programs/totems/gpu-selection-uniform-block.js +44 -40
- package/programs/totems/index.js +1 -1
- package/programs/two-d/pixel-padding-for-compass.js +90 -29
- package/programs/util.js +6 -7
- package/programs/vectorfields/index.js +1 -1
- package/programs/vectorfields/logics/drawrectangleparticles.js +70 -29
- package/programs/vectorfields/logics/index.js +3 -3
- package/programs/vectorfields/logics/pixelbased.js +91 -35
- package/programs/vectorfields/logics/ubo.js +31 -25
- package/programs/vectorfields/pingpongbuffermanager.js +30 -34
- package/rangerings/index.js +4 -4
- package/rangerings/plugin.js +202 -258
- package/rangerings/rangeringangletext.js +108 -120
- package/rangerings/ring-account.js +52 -69
- package/shaders/fragment-toy/firework.js +55 -1
- package/shaders/fragment-toy/singularity.js +55 -1
- package/timetracks/adaptors-line-strip.js +26 -37
- package/timetracks/adaptors.js +47 -61
- package/timetracks/index.js +4 -4
- package/timetracks/plugin-line-strip.js +63 -71
- package/timetracks/plugin.js +69 -77
- package/timetracks/program-line-strip.js +296 -103
- package/timetracks/program.js +419 -113
- package/timetracks/programpoint-line-strip.js +97 -44
- package/timetracks/programpoint.js +90 -44
- package/util/account/bufferoffsetmanager.js +72 -95
- package/util/account/index.js +1 -1
- package/util/account/single-attribute-buffer-management/buffer-manager.js +44 -44
- package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +68 -94
- package/util/account/single-attribute-buffer-management/index.js +3 -3
- package/util/account/single-attribute-buffer-management/object-store.js +29 -30
- package/util/account/util.js +2 -4
- package/util/algorithms/search-binary.js +4 -4
- package/util/check/get.js +5 -5
- package/util/check/typecheck.js +13 -15
- package/util/geometry/index.js +9 -11
- package/util/gl-util/buffer/attribute-loader.js +8 -20
- package/util/gl-util/buffer/index.js +1 -1
- package/util/gl-util/draw-options/methods.js +8 -9
- package/util/gl-util/uniform-block/manager.js +67 -67
- package/util/heatwavedatamanager/datamanager.js +56 -116
- package/util/heatwavedatamanager/index.js +2 -2
- package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +37 -40
- package/util/heatwavedatamanager/pointcoordsmeta.js +9 -10
- package/util/index.js +6 -6
- package/util/interpolation/timetrack/index.js +1 -1
- package/util/interpolation/timetrack/timetrack-interpolator.js +27 -29
- package/util/interpolation/timetrack/web-worker-str.js +179 -1
- 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 +46 -52
- package/util/programs/draw-texture-on-canvas.js +39 -21
- package/util/programs/shapesonglobe.js +104 -64
- package/util/programs/supersampletotextures.js +45 -39
- package/util/programs/texturetoglobe.js +98 -48
- package/util/shaderfunctions/geometrytransformations.js +322 -27
- package/util/shaderfunctions/nodata.js +7 -1
- package/util/shaderfunctions/noisefunctions.js +39 -9
- package/util/surface-line-data/arcs-to-cuts.js +20 -23
- package/util/webglobe/rasteroverlay.js +35 -37
- package/util/webglobjectbuilders.js +55 -60
- package/util/webglobjectbuilders1.js +48 -49
- package/waveparticles/adaptor.js +6 -7
- package/waveparticles/index.js +2 -2
- package/waveparticles/plugin.js +79 -84
- package/wind/imagetovectorfieldandmagnitude.js +15 -15
- package/wind/index.js +4 -4
- package/wind/plugin.js +453 -251
- package/wind/vectorfieldimage.js +5 -5
- package/write-text/attached-text-writer.js +46 -48
- package/write-text/context-text.js +51 -58
- package/write-text/context-text3.js +69 -74
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CameraUniformBlockTotemCache = exports.CameraUniformBlockString = void 0;
|
|
4
|
-
|
|
4
|
+
const programcache_1 = require("../programcache");
|
|
5
5
|
// import { getFrustumPlanes } from "../../Math/frustum/from-projection-matrix";
|
|
6
6
|
// import { getFrustum } from "../../Math/frustum/from-globeinfo"
|
|
7
7
|
// import { Plane } from "../../Math/";
|
|
8
|
-
exports.CameraUniformBlockString =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
exports.CameraUniformBlockString = `
|
|
9
|
+
layout(std140) uniform CameraUniformBlock {
|
|
10
|
+
mat4 view; // 64 bytes 0
|
|
11
|
+
mat4 projection; // 64 bytes 64
|
|
12
|
+
vec3 translate; // 12 bytes 128
|
|
13
|
+
bool is3D; // 4 bytes 140
|
|
14
|
+
vec2 mapWH; // 8 bytes 144
|
|
15
|
+
vec2 screenWH; // 8 bytes 152
|
|
16
|
+
float z_level; // 4 bytes 160 | 164
|
|
17
|
+
float world_distance; // 4 bytes 164
|
|
18
|
+
float world_tilt; // 4 bytes 168
|
|
19
|
+
float world_north_angle; // 4 bytes 172
|
|
20
|
+
vec2 world_center_radian; // 8 bytes 176 | 184
|
|
21
|
+
}; // 14 lines
|
|
22
|
+
`;
|
|
23
|
+
const Radian = Math.PI / 180.0;
|
|
24
|
+
class CameraUniformBlockTotem {
|
|
25
|
+
constructor() {
|
|
12
26
|
this.id = "CameraUniformBlockTotem";
|
|
13
|
-
this.description =
|
|
27
|
+
this.description = `Sets a uniform block and provides buffer for it. The following is the glsl uniform block:` + exports.CameraUniformBlockString;
|
|
14
28
|
this.gl = null;
|
|
15
29
|
this.globe = null;
|
|
16
30
|
this.ubo = null;
|
|
@@ -27,7 +41,7 @@ var CameraUniformBlockTotem = /** @class */ (function () {
|
|
|
27
41
|
isMoved: false,
|
|
28
42
|
};
|
|
29
43
|
}
|
|
30
|
-
|
|
44
|
+
init(globe, gl) {
|
|
31
45
|
this.gl = gl;
|
|
32
46
|
this.globe = globe;
|
|
33
47
|
this.ubo = this._createUBO();
|
|
@@ -35,31 +49,31 @@ var CameraUniformBlockTotem = /** @class */ (function () {
|
|
|
35
49
|
this.mapWHFloat32 = new Float32Array(2);
|
|
36
50
|
this.setGeometry();
|
|
37
51
|
this.resize();
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
52
|
+
}
|
|
53
|
+
_createUBO() {
|
|
54
|
+
const { gl } = this;
|
|
55
|
+
const ubo = gl.createBuffer();
|
|
42
56
|
gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
|
|
43
57
|
// 184 bytes in reality. Overflow on linux for some reason. So, 200 bytes.
|
|
44
58
|
gl.bufferData(gl.UNIFORM_BUFFER, 200, gl.STREAM_DRAW);
|
|
45
59
|
gl.bindBufferBase(gl.UNIFORM_BUFFER, 0, ubo);
|
|
46
60
|
gl.bindBuffer(gl.UNIFORM_BUFFER, null);
|
|
47
61
|
return ubo;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
62
|
+
}
|
|
63
|
+
resize() {
|
|
64
|
+
const { gl, globe, ubo } = this;
|
|
51
65
|
gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
|
|
52
66
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 152, new Float32Array([globe.api_ScrW(), globe.api_ScrH()]));
|
|
53
67
|
gl.bindBuffer(gl.UNIFORM_BUFFER, null);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
68
|
+
}
|
|
69
|
+
setGeometry() {
|
|
70
|
+
const { gl, globe, ubo } = this;
|
|
71
|
+
const is3D = globe.api_GetCurrentGeometry() === 0;
|
|
58
72
|
gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
|
|
59
73
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 140, new Float32Array([is3D]));
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
74
|
+
}
|
|
75
|
+
draw3D(projection, modelView, translate) {
|
|
76
|
+
const { gl, traslateFloat32, ubo, mapWHFloat32, globe } = this;
|
|
63
77
|
gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
|
|
64
78
|
{ // view, projection, translat
|
|
65
79
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 0, modelView);
|
|
@@ -73,7 +87,7 @@ var CameraUniformBlockTotem = /** @class */ (function () {
|
|
|
73
87
|
}
|
|
74
88
|
{ // mapWH
|
|
75
89
|
if (globe.api_GetCurrentGeometry() === 1) {
|
|
76
|
-
|
|
90
|
+
const { width, height } = globe.api_GetCurrentWorldWH();
|
|
77
91
|
mapWHFloat32.set([width, height]);
|
|
78
92
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 144, mapWHFloat32);
|
|
79
93
|
}
|
|
@@ -83,7 +97,7 @@ var CameraUniformBlockTotem = /** @class */ (function () {
|
|
|
83
97
|
// float world_tilt; // 4 bytes 168
|
|
84
98
|
// float world_north_angle; // 4 bytes 172
|
|
85
99
|
// vec2 world_center_radian; // 8 bytes 180
|
|
86
|
-
|
|
100
|
+
const { CenterLong, CenterLat, Distance, Tilt, NorthAng } = globe.api_GetCurrentLookInfo();
|
|
87
101
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 164, new Float32Array([
|
|
88
102
|
Distance, Radian * Tilt, Radian * NorthAng, Radian * CenterLong, Radian * CenterLat
|
|
89
103
|
]));
|
|
@@ -91,40 +105,40 @@ var CameraUniformBlockTotem = /** @class */ (function () {
|
|
|
91
105
|
// this._frustumPlanes = getFrustumPlanes(projection, translate);
|
|
92
106
|
gl.bindBuffer(gl.UNIFORM_BUFFER, null);
|
|
93
107
|
{ // isMoved
|
|
94
|
-
|
|
108
|
+
const currentLOD = globe.api_GetCurrentLODWithDecimal();
|
|
95
109
|
this._isMovedParams.isMoved = this._isMovedParams.lastLod !== currentLOD || globe.api_IsScreenMoving();
|
|
96
110
|
this._isMovedParams.lastLod = currentLOD;
|
|
97
111
|
}
|
|
98
112
|
// getFrustum(globe, 50, this._frustumPlanes);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
113
|
+
}
|
|
114
|
+
assignBindingPoint(program, bindingPoint) {
|
|
115
|
+
const { gl } = this;
|
|
116
|
+
const cameraBlockIndex = gl.getUniformBlockIndex(program, "CameraUniformBlock");
|
|
103
117
|
gl.uniformBlockBinding(program, cameraBlockIndex, bindingPoint);
|
|
104
|
-
}
|
|
105
|
-
|
|
118
|
+
}
|
|
119
|
+
getUBO() {
|
|
106
120
|
return this.ubo;
|
|
107
|
-
}
|
|
108
|
-
|
|
121
|
+
}
|
|
122
|
+
getFrustumPlanes() {
|
|
109
123
|
return this._frustumPlanes;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
124
|
+
}
|
|
125
|
+
bind(bindingPoint) {
|
|
126
|
+
const { gl, ubo } = this;
|
|
113
127
|
gl.bindBufferBase(gl.UNIFORM_BUFFER, bindingPoint, ubo);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
|
|
128
|
+
}
|
|
129
|
+
unbind(bindingPoint) {
|
|
130
|
+
const { gl } = this;
|
|
117
131
|
gl.bindBufferBase(gl.UNIFORM_BUFFER, bindingPoint, null);
|
|
118
|
-
}
|
|
119
|
-
|
|
132
|
+
}
|
|
133
|
+
isMoved() {
|
|
120
134
|
return this._isMovedParams.isMoved;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
135
|
+
}
|
|
136
|
+
free() {
|
|
137
|
+
const { gl, ubo } = this;
|
|
124
138
|
gl.deleteBuffer(ubo);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
139
|
+
}
|
|
140
|
+
readBuffer() {
|
|
141
|
+
const result = new Float32Array(41);
|
|
128
142
|
this.gl.bindBuffer(this.gl.UNIFORM_BUFFER, this.ubo);
|
|
129
143
|
this.gl.getBufferSubData(this.gl.UNIFORM_BUFFER, 0, result);
|
|
130
144
|
this.gl.bindBuffer(this.gl.UNIFORM_BUFFER, null);
|
|
@@ -137,11 +151,10 @@ var CameraUniformBlockTotem = /** @class */ (function () {
|
|
|
137
151
|
screenWH: result.slice(38, 40),
|
|
138
152
|
z_level: result[40]
|
|
139
153
|
};
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
}());
|
|
154
|
+
}
|
|
155
|
+
}
|
|
143
156
|
exports.default = CameraUniformBlockTotem;
|
|
144
157
|
exports.CameraUniformBlockTotemCache = Object.freeze({
|
|
145
|
-
get:
|
|
146
|
-
release:
|
|
158
|
+
get: (globe) => { return programcache_1.globeProgramCache.getProgram(globe, CameraUniformBlockTotem); },
|
|
159
|
+
release: (globe) => { return programcache_1.globeProgramCache.releaseProgram(globe, CameraUniformBlockTotem); }
|
|
147
160
|
});
|
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CameraUniformBlockTotemCache = exports.WebglobeInfoUniformBlockString = void 0;
|
|
4
|
-
|
|
5
|
-
exports.WebglobeInfoUniformBlockString =
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
const programcache_1 = require("../programcache");
|
|
5
|
+
exports.WebglobeInfoUniformBlockString = `
|
|
6
|
+
layout(std140) uniform WebglobeInfo {
|
|
7
|
+
vec2 canvas_resolution;
|
|
8
|
+
vec2 mouse_radian_long_lat;
|
|
9
|
+
vec2 mouse_pixel_xy;
|
|
10
|
+
float north_angle;
|
|
11
|
+
float world_tilt;
|
|
12
|
+
float earth_distance;
|
|
13
|
+
};
|
|
14
|
+
`;
|
|
15
|
+
class CameraUniformBlockTotem {
|
|
16
|
+
constructor() {
|
|
8
17
|
this.id = "CameraUniformBlockTotem";
|
|
9
|
-
this.description =
|
|
18
|
+
this.description = `Sets a uniform block and provides buffer for it. The following is the glsl uniform block:` + CameraUniformBlockString;
|
|
10
19
|
this.gl = null;
|
|
11
20
|
this.globe = null;
|
|
12
21
|
this.ubo = null;
|
|
13
22
|
}
|
|
14
|
-
|
|
23
|
+
init(globe, gl) {
|
|
15
24
|
this.gl = gl;
|
|
16
25
|
this.globe = globe;
|
|
17
26
|
this.ubo = this._createUBO();
|
|
@@ -19,30 +28,30 @@ var CameraUniformBlockTotem = /** @class */ (function () {
|
|
|
19
28
|
this.mapWHFloat32 = new Float32Array(2);
|
|
20
29
|
this.setGeometry();
|
|
21
30
|
this.resize();
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
}
|
|
32
|
+
_createUBO() {
|
|
33
|
+
const { gl } = this;
|
|
34
|
+
const ubo = gl.createBuffer();
|
|
26
35
|
gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
|
|
27
36
|
gl.bufferData(gl.UNIFORM_BUFFER, 164, gl.STREAM_DRAW);
|
|
28
37
|
gl.bindBufferBase(gl.UNIFORM_BUFFER, 0, ubo);
|
|
29
38
|
gl.bindBuffer(gl.UNIFORM_BUFFER, null);
|
|
30
39
|
return ubo;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
40
|
+
}
|
|
41
|
+
resize() {
|
|
42
|
+
const { gl, globe, ubo } = this;
|
|
34
43
|
gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
|
|
35
44
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 152, new Float32Array([globe.api_ScrW(), globe.api_ScrH()]));
|
|
36
45
|
gl.bindBuffer(gl.UNIFORM_BUFFER, null);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
46
|
+
}
|
|
47
|
+
setGeometry() {
|
|
48
|
+
const { gl, globe, ubo } = this;
|
|
49
|
+
const is3D = globe.api_GetCurrentGeometry() === 0;
|
|
41
50
|
gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
|
|
42
51
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 140, new Float32Array([is3D]));
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
52
|
+
}
|
|
53
|
+
draw3D(projection, modelView, translate) {
|
|
54
|
+
const { gl, traslateFloat32, ubo, mapWHFloat32, globe } = this;
|
|
46
55
|
gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
|
|
47
56
|
{ // view, projection, translate
|
|
48
57
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 0, modelView);
|
|
@@ -56,30 +65,30 @@ var CameraUniformBlockTotem = /** @class */ (function () {
|
|
|
56
65
|
}
|
|
57
66
|
{ // mapWH
|
|
58
67
|
if (globe.api_GetCurrentGeometry() === 1) {
|
|
59
|
-
|
|
68
|
+
const { width, height } = globe.api_GetCurrentWorldWH();
|
|
60
69
|
mapWHFloat32.set([width, height]);
|
|
61
70
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 144, mapWHFloat32);
|
|
62
71
|
}
|
|
63
72
|
}
|
|
64
73
|
gl.bindBuffer(gl.UNIFORM_BUFFER, null);
|
|
65
|
-
}
|
|
66
|
-
|
|
74
|
+
}
|
|
75
|
+
getUBO() {
|
|
67
76
|
return this.ubo;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
77
|
+
}
|
|
78
|
+
bind(bindingPoint) {
|
|
79
|
+
const { gl, ubo } = this;
|
|
71
80
|
gl.bindBufferBase(gl.UNIFORM_BUFFER, bindingPoint, ubo);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
81
|
+
}
|
|
82
|
+
unbind(bindingPoint) {
|
|
83
|
+
const { gl } = this;
|
|
75
84
|
gl.bindBufferBase(gl.UNIFORM_BUFFER, bindingPoint, null);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
|
|
85
|
+
}
|
|
86
|
+
free() {
|
|
87
|
+
const { gl, ubo } = this;
|
|
79
88
|
gl.deleteBuffer(ubo);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
89
|
+
}
|
|
90
|
+
readBuffer() {
|
|
91
|
+
const result = new Float32Array(41);
|
|
83
92
|
this.gl.bindBuffer(this.gl.UNIFORM_BUFFER, this.ubo);
|
|
84
93
|
this.gl.getBufferSubData(this.gl.UNIFORM_BUFFER, 0, result);
|
|
85
94
|
this.gl.bindBuffer(this.gl.UNIFORM_BUFFER, null);
|
|
@@ -92,11 +101,10 @@ var CameraUniformBlockTotem = /** @class */ (function () {
|
|
|
92
101
|
screenWH: result.slice(38, 40),
|
|
93
102
|
z_level: result[40]
|
|
94
103
|
};
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
}());
|
|
104
|
+
}
|
|
105
|
+
}
|
|
98
106
|
exports.default = CameraUniformBlockTotem;
|
|
99
107
|
exports.CameraUniformBlockTotemCache = Object.freeze({
|
|
100
|
-
get:
|
|
101
|
-
release:
|
|
108
|
+
get: (globe) => { return programcache_1.globeProgramCache.getProgram(globe, CameraUniformBlockTotem); },
|
|
109
|
+
release: (globe) => { return programcache_1.globeProgramCache.releaseProgram(globe, CameraUniformBlockTotem); }
|
|
102
110
|
});
|
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CameraUniformBlockTotemCache = exports.CameraUniformBlockString = void 0;
|
|
4
|
-
|
|
4
|
+
const programcache_1 = require("../programcache");
|
|
5
5
|
// Loads mouse position to buffer
|
|
6
6
|
// TODO implement it
|
|
7
|
-
exports.CameraUniformBlockString =
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
exports.CameraUniformBlockString = `
|
|
8
|
+
layout(std140) uniform GpuSelectionUniformBlock {
|
|
9
|
+
vec2 mouse_pixel_position;
|
|
10
|
+
vec2 mouse_radian_long_lat;
|
|
11
|
+
}; // 11 lines
|
|
12
|
+
`;
|
|
13
|
+
class CameraUniformBlockTotem {
|
|
14
|
+
constructor() {
|
|
10
15
|
this.id = "CameraUniformBlockTotem";
|
|
11
|
-
this.description =
|
|
16
|
+
this.description = `Sets a uniform block and provides buffer for it. The following is the glsl uniform block:` + exports.CameraUniformBlockString;
|
|
12
17
|
this.gl = null;
|
|
13
18
|
this.globe = null;
|
|
14
19
|
this.ubo = null;
|
|
15
20
|
}
|
|
16
|
-
|
|
21
|
+
init(globe, gl) {
|
|
17
22
|
this.gl = gl;
|
|
18
23
|
this.globe = globe;
|
|
19
24
|
this.ubo = this._createUBO();
|
|
@@ -21,30 +26,30 @@ var CameraUniformBlockTotem = /** @class */ (function () {
|
|
|
21
26
|
this.mapWHFloat32 = new Float32Array(2);
|
|
22
27
|
this.setGeometry();
|
|
23
28
|
this.resize();
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
}
|
|
30
|
+
_createUBO() {
|
|
31
|
+
const { gl } = this;
|
|
32
|
+
const ubo = gl.createBuffer();
|
|
28
33
|
gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
|
|
29
34
|
gl.bufferData(gl.UNIFORM_BUFFER, 164, gl.STREAM_DRAW);
|
|
30
35
|
gl.bindBufferBase(gl.UNIFORM_BUFFER, 0, ubo);
|
|
31
36
|
gl.bindBuffer(gl.UNIFORM_BUFFER, null);
|
|
32
37
|
return ubo;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
38
|
+
}
|
|
39
|
+
resize() {
|
|
40
|
+
const { gl, globe, ubo } = this;
|
|
36
41
|
gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
|
|
37
42
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 152, new Float32Array([globe.api_ScrW(), globe.api_ScrH()]));
|
|
38
43
|
gl.bindBuffer(gl.UNIFORM_BUFFER, null);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
}
|
|
45
|
+
setGeometry() {
|
|
46
|
+
const { gl, globe, ubo } = this;
|
|
47
|
+
const is3D = globe.api_GetCurrentGeometry() === 0;
|
|
43
48
|
gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
|
|
44
49
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 140, new Float32Array([is3D]));
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
50
|
+
}
|
|
51
|
+
draw3D(projection, modelView, translate) {
|
|
52
|
+
const { gl, traslateFloat32, ubo, mapWHFloat32, globe } = this;
|
|
48
53
|
gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
|
|
49
54
|
{ // view, projection, translate
|
|
50
55
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 0, modelView);
|
|
@@ -58,30 +63,30 @@ var CameraUniformBlockTotem = /** @class */ (function () {
|
|
|
58
63
|
}
|
|
59
64
|
{ // mapWH
|
|
60
65
|
if (globe.api_GetCurrentGeometry() === 1) {
|
|
61
|
-
|
|
66
|
+
const { width, height } = globe.api_GetCurrentWorldWH();
|
|
62
67
|
mapWHFloat32.set([width, height]);
|
|
63
68
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 144, mapWHFloat32);
|
|
64
69
|
}
|
|
65
70
|
}
|
|
66
71
|
gl.bindBuffer(gl.UNIFORM_BUFFER, null);
|
|
67
|
-
}
|
|
68
|
-
|
|
72
|
+
}
|
|
73
|
+
getUBO() {
|
|
69
74
|
return this.ubo;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
75
|
+
}
|
|
76
|
+
bind(bindingPoint) {
|
|
77
|
+
const { gl, ubo } = this;
|
|
73
78
|
gl.bindBufferBase(gl.UNIFORM_BUFFER, bindingPoint, ubo);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
79
|
+
}
|
|
80
|
+
unbind(bindingPoint) {
|
|
81
|
+
const { gl } = this;
|
|
77
82
|
gl.bindBufferBase(gl.UNIFORM_BUFFER, bindingPoint, null);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
|
|
83
|
+
}
|
|
84
|
+
free() {
|
|
85
|
+
const { gl, ubo } = this;
|
|
81
86
|
gl.deleteBuffer(ubo);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
87
|
+
}
|
|
88
|
+
readBuffer() {
|
|
89
|
+
const result = new Float32Array(41);
|
|
85
90
|
this.gl.bindBuffer(this.gl.UNIFORM_BUFFER, this.ubo);
|
|
86
91
|
this.gl.getBufferSubData(this.gl.UNIFORM_BUFFER, 0, result);
|
|
87
92
|
this.gl.bindBuffer(this.gl.UNIFORM_BUFFER, null);
|
|
@@ -94,11 +99,10 @@ var CameraUniformBlockTotem = /** @class */ (function () {
|
|
|
94
99
|
screenWH: result.slice(38, 40),
|
|
95
100
|
z_level: result[40]
|
|
96
101
|
};
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
}());
|
|
102
|
+
}
|
|
103
|
+
}
|
|
100
104
|
exports.default = CameraUniformBlockTotem;
|
|
101
105
|
exports.CameraUniformBlockTotemCache = Object.freeze({
|
|
102
|
-
get:
|
|
103
|
-
release:
|
|
106
|
+
get: (globe) => { return programcache_1.globeProgramCache.getProgram(globe, CameraUniformBlockTotem); },
|
|
107
|
+
release: (globe) => { return programcache_1.globeProgramCache.releaseProgram(globe, CameraUniformBlockTotem); }
|
|
104
108
|
});
|
package/programs/totems/index.js
CHANGED
|
@@ -34,7 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.CameraUniformBlockTotemCache = exports.CameraUniformBlockString = exports.CameraUniformBlockTotem = void 0;
|
|
37
|
-
|
|
37
|
+
const camerauniformblock_1 = __importStar(require("./camerauniformblock"));
|
|
38
38
|
exports.CameraUniformBlockTotem = camerauniformblock_1.default;
|
|
39
39
|
Object.defineProperty(exports, "CameraUniformBlockString", { enumerable: true, get: function () { return camerauniformblock_1.CameraUniformBlockString; } });
|
|
40
40
|
Object.defineProperty(exports, "CameraUniformBlockTotemCache", { enumerable: true, get: function () { return camerauniformblock_1.CameraUniformBlockTotemCache; } });
|