@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,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
var util_1 = require("../../../util");
|
|
4
|
+
var Logic = /** @class */ (function () {
|
|
5
|
+
function Logic() {
|
|
6
6
|
this.id = "GlobeShellProgram";
|
|
7
7
|
this.description = "This program implements flyweight pattern for globe." +
|
|
8
8
|
"At globes draw3D call stack, this program should be prior to any program that uses it." +
|
|
9
9
|
"draw3D method of this object only sets Projetion, ModelView and Translate matrices and if the mode is 2D mapWH .";
|
|
10
10
|
}
|
|
11
|
-
init(globe, gl) {
|
|
11
|
+
Logic.prototype.init = function (globe, gl) {
|
|
12
12
|
this.gl = gl;
|
|
13
13
|
this.globe = globe;
|
|
14
14
|
this.programWrapper = this._createProgramWrapper();
|
|
@@ -17,119 +17,20 @@ class Logic {
|
|
|
17
17
|
this.resize();
|
|
18
18
|
this.updateTime(0);
|
|
19
19
|
this.setMesh({ xRes: 64, yRes: 64, eastWestTied: false });
|
|
20
|
-
}
|
|
21
|
-
_createProgramWrapper() {
|
|
22
|
-
|
|
23
|
-
#
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
#define HALF_PI 1.5707963267948966192313216916398
|
|
28
|
-
|
|
29
|
-
uniform vec2 u_mesh_resolution;
|
|
30
|
-
|
|
31
|
-
layout(std140) uniform ShellBlock {
|
|
32
|
-
vec2 u_grid_offset_rad;
|
|
33
|
-
vec2 u_grid_size_rad;
|
|
34
|
-
float u_height;
|
|
35
|
-
float u_wiggle;
|
|
36
|
-
float u_time;
|
|
37
|
-
float u_opacity;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
uniform mat4 u_model_view_matrix;
|
|
41
|
-
uniform mat4 u_projection_matrix;
|
|
42
|
-
uniform vec3 u_translate;
|
|
43
|
-
|
|
44
|
-
uniform vec2 u_mapWH;
|
|
45
|
-
uniform vec2 u_scrWH;
|
|
46
|
-
|
|
47
|
-
uniform bool u_is3D;
|
|
48
|
-
|
|
49
|
-
out float v_opacity;
|
|
50
|
-
out vec2 v_texture_coordinate;
|
|
51
|
-
|
|
52
|
-
vec2 f_texCoord(){
|
|
53
|
-
|
|
54
|
-
float x = mod( float(gl_VertexID), u_mesh_resolution.x ) / ( u_mesh_resolution.x - 1.0);
|
|
55
|
-
float y = floor( float(gl_VertexID) / u_mesh_resolution.x ) / ( u_mesh_resolution.y - 1.0);
|
|
56
|
-
return vec2(x, y);
|
|
57
|
-
//return vec2( fract( float(gl_VertexID) / u_mesh_resolution.x ), floor(float(gl_VertexID) / u_mesh_resolution.x) / u_mesh_resolution.y);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
vec3 f_onSphere(vec2 texCoord){
|
|
61
|
-
float vert = (texCoord.y * u_grid_size_rad.y ) + u_grid_offset_rad.y;
|
|
62
|
-
float hor = (texCoord.x * u_grid_size_rad.x ) + u_grid_offset_rad.x;
|
|
63
|
-
float x = sin(vert) * cos(hor);
|
|
64
|
-
float y = sin(vert) * sin(hor);
|
|
65
|
-
float z = cos(vert);
|
|
66
|
-
return vec3(x, y, z);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
vec2 f_onFlat(vec2 texCoord){
|
|
70
|
-
float x = (texCoord.x * u_grid_size_rad.x ) + u_grid_offset_rad.x;
|
|
71
|
-
float y = (texCoord.y * u_grid_size_rad.y ) + u_grid_offset_rad.y;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
float mercX = x * POLE_BY_PI;
|
|
75
|
-
float mercY = log(tan(HALF_PI - y / 2.0 )) * POLE_BY_PI;
|
|
76
|
-
|
|
77
|
-
float normX = ( mercX - u_translate.x ) / u_mapWH.x;
|
|
78
|
-
float normY = ( mercY - u_translate.y ) / u_mapWH.y;
|
|
79
|
-
return vec2(normX, normY);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
vec3 f_position(vec3 unit_sphere_pos, float wiggle){
|
|
83
|
-
return unit_sphere_pos * (R + u_height + wiggle);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
float f_wiggle(vec2 texCoord){
|
|
87
|
-
float s_contrib = 0.6*sin(texCoord.x*2.0*PI + 3.0*u_time);
|
|
88
|
-
float t_contrib = 0.8*cos(texCoord.y*4.1 + 5.0*u_time);
|
|
89
|
-
return u_wiggle * s_contrib * t_contrib * sin(texCoord.y*PI*2.0);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
void main() {
|
|
93
|
-
vec2 texCoord = f_texCoord();
|
|
94
|
-
if (u_is3D){
|
|
95
|
-
vec3 unit_sphere_pos = f_onSphere(texCoord);
|
|
96
|
-
float wiggle = f_wiggle(texCoord);
|
|
97
|
-
vec3 position = f_position(unit_sphere_pos, wiggle);
|
|
98
|
-
gl_Position = u_projection_matrix * u_model_view_matrix * vec4(position - u_translate, 1.0);
|
|
99
|
-
} else {
|
|
100
|
-
vec2 position = f_onFlat(texCoord);
|
|
101
|
-
gl_Position = u_projection_matrix * vec4(
|
|
102
|
-
position.x * u_scrWH.x,
|
|
103
|
-
(1.0 - position.y) * u_scrWH.y,
|
|
104
|
-
0.0,
|
|
105
|
-
1.0);
|
|
106
|
-
}
|
|
107
|
-
v_texture_coordinate = texCoord;
|
|
108
|
-
v_opacity = u_opacity;
|
|
109
|
-
}
|
|
110
|
-
`;
|
|
111
|
-
const fragmentShader = `#version 300 es
|
|
112
|
-
precision lowp float;
|
|
113
|
-
in vec2 v_texture_coordinate;
|
|
114
|
-
in float v_opacity;
|
|
115
|
-
uniform sampler2D u_texture;
|
|
116
|
-
out vec4 outColor;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
void main() {
|
|
120
|
-
outColor = texture(u_texture, v_texture_coordinate);
|
|
121
|
-
outColor.a *= v_opacity;
|
|
122
|
-
}`;
|
|
123
|
-
const gl = this.gl;
|
|
124
|
-
const program = (0, util_1.createProgram)(gl, vertexShader, fragmentShader);
|
|
125
|
-
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
20
|
+
};
|
|
21
|
+
Logic.prototype._createProgramWrapper = function () {
|
|
22
|
+
var vertexShader = "#version 300 es\n #define R 6378.137\n #define PI 3.1415926535897932384626433832795\n #define POLE 20037508.34\n #define POLE_BY_PI 6366198.2\n #define HALF_PI 1.5707963267948966192313216916398\n\n uniform vec2 u_mesh_resolution;\n \n layout(std140) uniform ShellBlock {\n vec2 u_grid_offset_rad;\n vec2 u_grid_size_rad;\n float u_height;\n float u_wiggle;\n float u_time;\n float u_opacity;\n };\n\n uniform mat4 u_model_view_matrix;\n uniform mat4 u_projection_matrix;\n uniform vec3 u_translate;\n\n uniform vec2 u_mapWH;\n uniform vec2 u_scrWH;\n\n uniform bool u_is3D; \n\n out float v_opacity;\n out vec2 v_texture_coordinate;\n \n vec2 f_texCoord(){\n\n float x = mod( float(gl_VertexID), u_mesh_resolution.x ) / ( u_mesh_resolution.x - 1.0);\n float y = floor( float(gl_VertexID) / u_mesh_resolution.x ) / ( u_mesh_resolution.y - 1.0);\n return vec2(x, y);\n //return vec2( fract( float(gl_VertexID) / u_mesh_resolution.x ), floor(float(gl_VertexID) / u_mesh_resolution.x) / u_mesh_resolution.y);\n }\n\n vec3 f_onSphere(vec2 texCoord){\n float vert = (texCoord.y * u_grid_size_rad.y ) + u_grid_offset_rad.y;\n float hor = (texCoord.x * u_grid_size_rad.x ) + u_grid_offset_rad.x;\n float x = sin(vert) * cos(hor);\n float y = sin(vert) * sin(hor);\n float z = cos(vert);\n return vec3(x, y, z);\n }\n\n vec2 f_onFlat(vec2 texCoord){\n float x = (texCoord.x * u_grid_size_rad.x ) + u_grid_offset_rad.x;\n float y = (texCoord.y * u_grid_size_rad.y ) + u_grid_offset_rad.y;\n\n\n float mercX = x * POLE_BY_PI;\n float mercY = log(tan(HALF_PI - y / 2.0 )) * POLE_BY_PI;\n\n float normX = ( mercX - u_translate.x ) / u_mapWH.x;\n float normY = ( mercY - u_translate.y ) / u_mapWH.y;\n return vec2(normX, normY);\n } \n\n vec3 f_position(vec3 unit_sphere_pos, float wiggle){\n return unit_sphere_pos * (R + u_height + wiggle);\n }\n \n float f_wiggle(vec2 texCoord){\n float s_contrib = 0.6*sin(texCoord.x*2.0*PI + 3.0*u_time);\n float t_contrib = 0.8*cos(texCoord.y*4.1 + 5.0*u_time);\n return u_wiggle * s_contrib * t_contrib * sin(texCoord.y*PI*2.0);\n }\n\n void main() {\n vec2 texCoord = f_texCoord();\n if (u_is3D){\n vec3 unit_sphere_pos = f_onSphere(texCoord);\n float wiggle = f_wiggle(texCoord);\n vec3 position = f_position(unit_sphere_pos, wiggle);\n gl_Position = u_projection_matrix * u_model_view_matrix * vec4(position - u_translate, 1.0);\n } else {\n vec2 position = f_onFlat(texCoord);\n gl_Position = u_projection_matrix * vec4(\n position.x * u_scrWH.x,\n (1.0 - position.y) * u_scrWH.y,\n 0.0,\n 1.0);\n }\n v_texture_coordinate = texCoord;\n v_opacity = u_opacity;\n }\n ";
|
|
23
|
+
var fragmentShader = "#version 300 es\n precision lowp float;\n in vec2 v_texture_coordinate;\n in float v_opacity;\n uniform sampler2D u_texture;\n out vec4 outColor;\n\n\n void main() {\n outColor = texture(u_texture, v_texture_coordinate);\n outColor.a *= v_opacity;\n }";
|
|
24
|
+
var gl = this.gl;
|
|
25
|
+
var program = (0, util_1.createProgram)(gl, vertexShader, fragmentShader);
|
|
26
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
126
27
|
gl.useProgram(program);
|
|
127
28
|
this.shellBlockBindingPoint = 0;
|
|
128
|
-
|
|
29
|
+
var shellBlockIndex = gl.getUniformBlockIndex(program, "ShellBlock");
|
|
129
30
|
gl.uniformBlockBinding(program, shellBlockIndex, this.shellBlockBindingPoint);
|
|
130
31
|
gl.useProgram(currentProgram);
|
|
131
32
|
return {
|
|
132
|
-
program,
|
|
33
|
+
program: program,
|
|
133
34
|
u_model_view_matrix: gl.getUniformLocation(program, "u_model_view_matrix"),
|
|
134
35
|
u_projection_matrix: gl.getUniformLocation(program, "u_projection_matrix"),
|
|
135
36
|
u_translate: gl.getUniformLocation(program, "u_translate"),
|
|
@@ -139,21 +40,22 @@ class Logic {
|
|
|
139
40
|
u_texture: gl.getUniformLocation(program, "u_texture"),
|
|
140
41
|
u_mesh_resolution: gl.getUniformLocation(program, "u_mesh_resolution"),
|
|
141
42
|
};
|
|
142
|
-
}
|
|
43
|
+
};
|
|
143
44
|
// this method implements data part of flyweight pattern
|
|
144
|
-
getShellBlockBufferManager() {
|
|
45
|
+
Logic.prototype.getShellBlockBufferManager = function () {
|
|
145
46
|
return new ShellBlockManager(this.gl);
|
|
146
|
-
}
|
|
147
|
-
updateTime(time) {
|
|
148
|
-
|
|
149
|
-
|
|
47
|
+
};
|
|
48
|
+
Logic.prototype.updateTime = function (time) {
|
|
49
|
+
var _a = this, gl = _a.gl, programWrapper = _a.programWrapper;
|
|
50
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
150
51
|
gl.useProgram(programWrapper.program);
|
|
151
52
|
gl.uniform1f(this.programWrapper.u_time, time);
|
|
152
53
|
gl.useProgram(currentProgram);
|
|
153
|
-
}
|
|
154
|
-
setRotationAndTranslation(uProjectionMatrix, uModelViewMatrix, uTranslate, resetCurrentProgram
|
|
155
|
-
|
|
156
|
-
|
|
54
|
+
};
|
|
55
|
+
Logic.prototype.setRotationAndTranslation = function (uProjectionMatrix, uModelViewMatrix, uTranslate, resetCurrentProgram) {
|
|
56
|
+
if (resetCurrentProgram === void 0) { resetCurrentProgram = false; }
|
|
57
|
+
var gl = this.gl;
|
|
58
|
+
var currentProgram = null;
|
|
157
59
|
if (resetCurrentProgram) {
|
|
158
60
|
currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
159
61
|
}
|
|
@@ -165,35 +67,35 @@ class Logic {
|
|
|
165
67
|
gl.uniform3fv(this.programWrapper.u_translate, this._transformArray);
|
|
166
68
|
if (resetCurrentProgram)
|
|
167
69
|
gl.useProgram(currentProgram);
|
|
168
|
-
}
|
|
169
|
-
setGeometry() {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
70
|
+
};
|
|
71
|
+
Logic.prototype.setGeometry = function () {
|
|
72
|
+
var _a = this, globe = _a.globe, gl = _a.gl;
|
|
73
|
+
var _b = this.programWrapper, u_is3D = _b.u_is3D, u_scrWH = _b.u_scrWH, program = _b.program;
|
|
74
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
75
|
+
var is3D = this.globe.api_GetCurrentGeometry() === 0;
|
|
174
76
|
gl.useProgram(program);
|
|
175
77
|
if (globe.api_GetCurrentGeometry() === globe.api_GeometryTypes().FLAT) {
|
|
176
78
|
gl.uniform2f(u_scrWH, globe.api_ScrW(), globe.api_ScrH());
|
|
177
79
|
}
|
|
178
80
|
gl.uniform1i(u_is3D, is3D);
|
|
179
81
|
gl.useProgram(currentProgram);
|
|
180
|
-
}
|
|
181
|
-
resize() {
|
|
182
|
-
|
|
82
|
+
};
|
|
83
|
+
Logic.prototype.resize = function () {
|
|
84
|
+
var _a = this, gl = _a.gl, globe = _a.globe;
|
|
183
85
|
if (!globe)
|
|
184
86
|
return;
|
|
185
|
-
|
|
186
|
-
|
|
87
|
+
var _b = this.programWrapper, program = _b.program, u_scrWH = _b.u_scrWH;
|
|
88
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
187
89
|
gl.useProgram(program);
|
|
188
90
|
if (globe.api_GetCurrentGeometry() === globe.api_GeometryTypes().FLAT) {
|
|
189
91
|
gl.uniform2f(u_scrWH, globe.api_ScrW(), globe.api_ScrH());
|
|
190
92
|
}
|
|
191
93
|
gl.useProgram(currentProgram);
|
|
192
|
-
}
|
|
94
|
+
};
|
|
193
95
|
// only sets data does not draw
|
|
194
|
-
draw3D(uProjectionMatrix, uModelViewMatrix, uTranslate) {
|
|
195
|
-
|
|
196
|
-
|
|
96
|
+
Logic.prototype.draw3D = function (uProjectionMatrix, uModelViewMatrix, uTranslate) {
|
|
97
|
+
var _a = this, gl = _a.gl, globe = _a.globe;
|
|
98
|
+
var _b = this.programWrapper, program = _b.program, u_model_view_matrix = _b.u_model_view_matrix, u_projection_matrix = _b.u_projection_matrix, u_translate = _b.u_translate;
|
|
197
99
|
gl.disable(gl.DEPTH_TEST);
|
|
198
100
|
gl.useProgram(program);
|
|
199
101
|
gl.uniformMatrix4fv(u_projection_matrix, false, uProjectionMatrix);
|
|
@@ -201,14 +103,15 @@ class Logic {
|
|
|
201
103
|
// this._transformArray.set([], 0);
|
|
202
104
|
gl.uniform3f(u_translate, uTranslate.x, uTranslate.y, uTranslate.z);
|
|
203
105
|
if (globe.api_GetCurrentGeometry() === 1) {
|
|
204
|
-
|
|
106
|
+
var _c = globe.api_GetCurrentWorldWH(), width = _c.width, height = _c.height;
|
|
205
107
|
gl.uniform2fv(this.programWrapper.u_mapWH, [width, height]);
|
|
206
108
|
}
|
|
207
109
|
gl.enable(gl.DEPTH_TEST);
|
|
208
|
-
}
|
|
209
|
-
draw(texture, shellBlockDataManager, drawLines
|
|
210
|
-
|
|
211
|
-
|
|
110
|
+
};
|
|
111
|
+
Logic.prototype.draw = function (texture, shellBlockDataManager, drawLines) {
|
|
112
|
+
if (drawLines === void 0) { drawLines = false; }
|
|
113
|
+
var _a = this, gl = _a.gl, programWrapper = _a.programWrapper, _vao = _a._vao, _drawCount = _a._drawCount;
|
|
114
|
+
var program = programWrapper.program, u_texture = programWrapper.u_texture;
|
|
212
115
|
gl.useProgram(program);
|
|
213
116
|
gl.bindVertexArray(_vao);
|
|
214
117
|
gl.activeTexture(gl.TEXTURE0);
|
|
@@ -221,38 +124,39 @@ class Logic {
|
|
|
221
124
|
gl.drawElements(gl.TRIANGLES, _drawCount, gl.UNSIGNED_SHORT, 0);
|
|
222
125
|
shellBlockDataManager.unbind();
|
|
223
126
|
gl.bindVertexArray(null);
|
|
224
|
-
}
|
|
225
|
-
free() {
|
|
226
|
-
|
|
127
|
+
};
|
|
128
|
+
Logic.prototype.free = function () {
|
|
129
|
+
var _a = this, gl = _a.gl, programWrapper = _a.programWrapper, _vao = _a._vao, _indexBuffer = _a._indexBuffer;
|
|
227
130
|
gl.deleteBuffer(_indexBuffer);
|
|
228
131
|
gl.deleteVertexArray(_vao);
|
|
229
132
|
gl.deleteProgram(programWrapper.program);
|
|
230
|
-
}
|
|
231
|
-
setMesh
|
|
133
|
+
};
|
|
134
|
+
Logic.prototype.setMesh = function (_a) {
|
|
135
|
+
var xRes = _a.xRes, yRes = _a.yRes, eastWestTied = _a.eastWestTied;
|
|
232
136
|
this._xRes = xRes;
|
|
233
137
|
this._yRes = yRes;
|
|
234
|
-
|
|
138
|
+
var _vao = this._meshUP(xRes, yRes, eastWestTied)._vao;
|
|
235
139
|
this._vao = _vao;
|
|
236
140
|
this._setUMeshResolution(xRes, yRes);
|
|
237
|
-
}
|
|
238
|
-
_setUMeshResolution(xRes, yRes) {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
141
|
+
};
|
|
142
|
+
Logic.prototype._setUMeshResolution = function (xRes, yRes) {
|
|
143
|
+
var _a = this, gl = _a.gl, programWrapper = _a.programWrapper;
|
|
144
|
+
var u_mesh_resolution = programWrapper.u_mesh_resolution;
|
|
145
|
+
var currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
242
146
|
gl.useProgram(programWrapper.program);
|
|
243
147
|
gl.uniform2f(u_mesh_resolution, xRes, yRes);
|
|
244
148
|
gl.useProgram(currentProgram);
|
|
245
149
|
this._drawCount = 6 * ((xRes - 1) * (yRes - 1));
|
|
246
|
-
}
|
|
247
|
-
_meshUP(xRes, yRes, eastWestTied) {
|
|
150
|
+
};
|
|
151
|
+
Logic.prototype._meshUP = function (xRes, yRes, eastWestTied) {
|
|
248
152
|
this._drawCount = 6 * ((xRes - 1) * (yRes - 1));
|
|
249
|
-
|
|
153
|
+
var indices = new Uint16Array(this._drawCount);
|
|
250
154
|
{
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
for (
|
|
254
|
-
for (
|
|
255
|
-
|
|
155
|
+
var indicesIndex = 0;
|
|
156
|
+
var index = 0;
|
|
157
|
+
for (var j = 0; j < yRes - 1; j++) {
|
|
158
|
+
for (var i = 0; i < xRes - 1; i++) {
|
|
159
|
+
var ind = index + i;
|
|
256
160
|
indices[indicesIndex++] = ind + xRes;
|
|
257
161
|
indices[indicesIndex++] = ind + 1;
|
|
258
162
|
indices[indicesIndex++] = ind;
|
|
@@ -263,9 +167,9 @@ class Logic {
|
|
|
263
167
|
index += xRes;
|
|
264
168
|
}
|
|
265
169
|
if (eastWestTied) {
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
for (
|
|
170
|
+
var left = (yRes - 1);
|
|
171
|
+
var right = 0;
|
|
172
|
+
for (var i = 0; i < xRes - 1; i++) {
|
|
269
173
|
indices[indicesIndex++] = left + xRes;
|
|
270
174
|
indices[indicesIndex++] = right;
|
|
271
175
|
indices[indicesIndex++] = left;
|
|
@@ -277,47 +181,49 @@ class Logic {
|
|
|
277
181
|
}
|
|
278
182
|
}
|
|
279
183
|
}
|
|
280
|
-
|
|
281
|
-
|
|
184
|
+
var gl = this.gl;
|
|
185
|
+
var _vao = gl.createVertexArray();
|
|
282
186
|
gl.bindVertexArray(_vao);
|
|
283
|
-
|
|
187
|
+
var indexBuffer = gl.createBuffer();
|
|
284
188
|
this._indexBuffer = indexBuffer;
|
|
285
189
|
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
|
|
286
190
|
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);
|
|
287
191
|
gl.bindVertexArray(null);
|
|
288
|
-
return { _vao };
|
|
289
|
-
}
|
|
290
|
-
|
|
192
|
+
return { _vao: _vao };
|
|
193
|
+
};
|
|
194
|
+
return Logic;
|
|
195
|
+
}());
|
|
291
196
|
exports.default = Logic;
|
|
292
|
-
|
|
293
|
-
|
|
197
|
+
var ShellBlockManager = /** @class */ (function () {
|
|
198
|
+
function ShellBlockManager(gl) {
|
|
294
199
|
this.gl = gl;
|
|
295
200
|
this.buffer = gl.createBuffer();
|
|
296
201
|
gl.bindBuffer(gl.UNIFORM_BUFFER, this.buffer);
|
|
297
202
|
gl.bufferData(gl.UNIFORM_BUFFER, 32, gl.DYNAMIC_DRAW);
|
|
298
203
|
gl.bindBuffer(gl.UNIFORM_BUFFER, null);
|
|
299
204
|
}
|
|
300
|
-
update
|
|
301
|
-
|
|
205
|
+
ShellBlockManager.prototype.update = function (_a) {
|
|
206
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.gridSizeRad, gridSizeRad = _c === void 0 ? null : _c, _d = _b.gridOffsetRad, gridOffsetRad = _d === void 0 ? null : _d, _e = _b.height, height = _e === void 0 ? null : _e, _f = _b.wiggleInKM, wiggleInKM = _f === void 0 ? null : _f, _g = _b.innerTime, innerTime = _g === void 0 ? null : _g, _h = _b.opacity, opacity = _h === void 0 ? null : _h;
|
|
207
|
+
var _j = this, gl = _j.gl, buffer = _j.buffer;
|
|
302
208
|
gl.bindBuffer(gl.UNIFORM_BUFFER, buffer);
|
|
303
209
|
if (gridOffsetRad !== null) {
|
|
304
|
-
|
|
210
|
+
var offset = new Float32Array(gridOffsetRad);
|
|
305
211
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 0, offset);
|
|
306
212
|
}
|
|
307
213
|
if (gridSizeRad !== null) {
|
|
308
|
-
|
|
214
|
+
var size = new Float32Array(gridSizeRad);
|
|
309
215
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 8, size);
|
|
310
216
|
}
|
|
311
217
|
if (height !== null) {
|
|
312
|
-
|
|
218
|
+
var heightArray = new Float32Array([height]);
|
|
313
219
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 16, heightArray);
|
|
314
220
|
}
|
|
315
221
|
if (wiggleInKM !== null) {
|
|
316
|
-
|
|
222
|
+
var wiggleArray = new Float32Array([wiggleInKM]);
|
|
317
223
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 20, wiggleArray);
|
|
318
224
|
}
|
|
319
225
|
if (innerTime !== null) {
|
|
320
|
-
|
|
226
|
+
var innerTimeArray = new Float32Array([innerTime]);
|
|
321
227
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 24, innerTimeArray);
|
|
322
228
|
}
|
|
323
229
|
if (opacity !== null) {
|
|
@@ -325,21 +231,22 @@ class ShellBlockManager {
|
|
|
325
231
|
console.warn('Invalid opacity value');
|
|
326
232
|
return;
|
|
327
233
|
}
|
|
328
|
-
|
|
234
|
+
var op = new Float32Array([opacity]);
|
|
329
235
|
gl.bufferSubData(gl.UNIFORM_BUFFER, 28, op);
|
|
330
236
|
}
|
|
331
237
|
gl.bindBuffer(gl.UNIFORM_BUFFER, null);
|
|
332
|
-
}
|
|
333
|
-
bind() {
|
|
334
|
-
|
|
238
|
+
};
|
|
239
|
+
ShellBlockManager.prototype.bind = function () {
|
|
240
|
+
var _a = this, gl = _a.gl, buffer = _a.buffer;
|
|
335
241
|
gl.bindBufferBase(gl.UNIFORM_BUFFER, this.shellBlockBindingPoint, buffer);
|
|
336
|
-
}
|
|
337
|
-
free() {
|
|
338
|
-
|
|
242
|
+
};
|
|
243
|
+
ShellBlockManager.prototype.free = function () {
|
|
244
|
+
var _a = this, gl = _a.gl, buffer = _a.buffer;
|
|
339
245
|
gl.deleteBuffer(buffer);
|
|
340
|
-
}
|
|
341
|
-
unbind() {
|
|
342
|
-
|
|
246
|
+
};
|
|
247
|
+
ShellBlockManager.prototype.unbind = function () {
|
|
248
|
+
var gl = this.gl;
|
|
343
249
|
gl.bindBufferBase(gl.UNIFORM_BUFFER, this.shellBlockBindingPoint, null);
|
|
344
|
-
}
|
|
345
|
-
|
|
250
|
+
};
|
|
251
|
+
return ShellBlockManager;
|
|
252
|
+
}());
|
|
@@ -3,70 +3,72 @@ 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
|
-
|
|
10
|
-
|
|
11
|
-
} = {}) {
|
|
6
|
+
var programcache_1 = require("../../programcache");
|
|
7
|
+
var logic_1 = __importDefault(require("./logic"));
|
|
8
|
+
var GlobeShell = /** @class */ (function () {
|
|
9
|
+
function GlobeShell(gl, globe, _a) {
|
|
10
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.minLon, minLon = _c === void 0 ? -180 : _c, _d = _b.maxLon, maxLon = _d === void 0 ? 180 : _d, _e = _b.minLat, minLat = _e === void 0 ? -90 : _e, _f = _b.maxLat, maxLat = _f === void 0 ? 90 : _f, _g = _b.height, height = _g === void 0 ? 0 : _g, _h = _b.u_opacity, u_opacity = _h === void 0 ? 1 : _h, _j = _b.wiggleInKM, wiggleInKM = _j === void 0 ? 0 : _j, _k = _b.wiggleSpeed, wiggleSpeed = _k === void 0 ? 0 : _k;
|
|
12
11
|
this.gl = gl;
|
|
13
12
|
this.globe = globe;
|
|
14
13
|
this.program = programcache_1.globeProgramCache.getProgram(globe, logic_1.default);
|
|
15
14
|
this.shellBlockManager = this.program.getShellBlockBufferManager();
|
|
16
15
|
this.update = this.shellBlockManager.update.bind(this.shellBlockManager);
|
|
17
16
|
this.innerTime = 0;
|
|
18
|
-
this.setBBox({ minLon, maxLon, minLat, maxLat });
|
|
17
|
+
this.setBBox({ minLon: minLon, maxLon: maxLon, minLat: minLat, maxLat: maxLat });
|
|
19
18
|
this.setOpacity(u_opacity);
|
|
20
19
|
this.setHeight(height);
|
|
21
|
-
this.setWiggle({ wiggleSpeed, wiggleInKM });
|
|
20
|
+
this.setWiggle({ wiggleSpeed: wiggleSpeed, wiggleInKM: wiggleInKM });
|
|
22
21
|
}
|
|
23
|
-
setTexture(texture) {
|
|
22
|
+
GlobeShell.prototype.setTexture = function (texture) {
|
|
24
23
|
this.texture = texture;
|
|
25
24
|
this.globe.DrawRender();
|
|
26
|
-
}
|
|
27
|
-
setHeight(height) {
|
|
28
|
-
this.shellBlockManager.update({ height });
|
|
25
|
+
};
|
|
26
|
+
GlobeShell.prototype.setHeight = function (height) {
|
|
27
|
+
this.shellBlockManager.update({ height: height });
|
|
29
28
|
this.globe.DrawRender();
|
|
30
|
-
}
|
|
31
|
-
setOpacity(opacity) {
|
|
32
|
-
this.shellBlockManager.update({ opacity });
|
|
29
|
+
};
|
|
30
|
+
GlobeShell.prototype.setOpacity = function (opacity) {
|
|
31
|
+
this.shellBlockManager.update({ opacity: opacity });
|
|
33
32
|
this.globe.DrawRender();
|
|
34
|
-
}
|
|
35
|
-
setBBox
|
|
36
|
-
|
|
33
|
+
};
|
|
34
|
+
GlobeShell.prototype.setBBox = function (_a) {
|
|
35
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.minLon, minLon = _c === void 0 ? -180 : _c, _d = _b.maxLon, maxLon = _d === void 0 ? 180 : _d, _e = _b.minLat, minLat = _e === void 0 ? -90 : _e, _f = _b.maxLat, maxLat = _f === void 0 ? 90 : _f;
|
|
36
|
+
this.bbox = { minLon: minLon, maxLon: maxLon, minLat: minLat, maxLat: maxLat };
|
|
37
37
|
// x
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
var horOffset = (minLon) * Math.PI / 180;
|
|
39
|
+
var horSize = (maxLon - minLon) * Math.PI / 180;
|
|
40
40
|
// y
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
var vertOffset = (90 - maxLat) * Math.PI / 180;
|
|
42
|
+
var vertSize = (maxLat - minLat) * Math.PI / 180;
|
|
43
|
+
var offset_rad = new Float32Array([horOffset, vertOffset]);
|
|
44
|
+
var size_rad = new Float32Array([horSize, vertSize]);
|
|
45
45
|
this.shellBlockManager.update({ gridSizeRad: size_rad, gridOffsetRad: offset_rad });
|
|
46
46
|
this.globe.DrawRender();
|
|
47
|
-
}
|
|
48
|
-
setWiggle
|
|
47
|
+
};
|
|
48
|
+
GlobeShell.prototype.setWiggle = function (_a) {
|
|
49
|
+
var _b = _a.wiggleSpeed, wiggleSpeed = _b === void 0 ? null : _b, _c = _a.wiggleInKM, wiggleInKM = _c === void 0 ? null : _c;
|
|
49
50
|
if (wiggleInKM !== null)
|
|
50
51
|
this.wiggleInKM = wiggleInKM;
|
|
51
52
|
if (wiggleSpeed !== null)
|
|
52
53
|
this.wiggleSpeed = wiggleSpeed;
|
|
53
|
-
this.shellBlockManager.update({ wiggleInKM });
|
|
54
|
-
}
|
|
54
|
+
this.shellBlockManager.update({ wiggleInKM: wiggleInKM });
|
|
55
|
+
};
|
|
55
56
|
/**
|
|
56
57
|
*
|
|
57
58
|
* @param {*} program modelView, projection, translate, mapWH, scrWH, should be set before calling this function
|
|
58
59
|
*/
|
|
59
|
-
draw() {
|
|
60
|
+
GlobeShell.prototype.draw = function () {
|
|
60
61
|
this.program.draw(this.texture, this.shellBlockManager);
|
|
61
62
|
if (this.wiggleInKM > 0 && this.wiggleSpeed > 0) {
|
|
62
63
|
this.innerTime += this.wiggleSpeed;
|
|
63
64
|
this.shellBlockManager.update({ innerTime: this.innerTime });
|
|
64
65
|
this.globe.DrawRender();
|
|
65
66
|
}
|
|
66
|
-
}
|
|
67
|
-
free() {
|
|
67
|
+
};
|
|
68
|
+
GlobeShell.prototype.free = function () {
|
|
68
69
|
programcache_1.globeProgramCache.releaseProgram(this.globe, logic_1.default);
|
|
69
70
|
this.shellBlockManager.free();
|
|
70
|
-
}
|
|
71
|
-
|
|
71
|
+
};
|
|
72
|
+
return GlobeShell;
|
|
73
|
+
}());
|
|
72
74
|
exports.default = GlobeShell;
|
|
@@ -1,37 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
var util_1 = require("../util");
|
|
4
4
|
/**
|
|
5
5
|
* Blends two float32textures with given ratio.
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
gl_Position = vec4(a_position, 0.0, 1.0);
|
|
12
|
-
v_texCoord = a_position * 0.5 + 0.5;
|
|
13
|
-
}
|
|
14
|
-
`;
|
|
15
|
-
const fragmentShader = `#version 300 es
|
|
16
|
-
uniform sampler2D u_texture0;
|
|
17
|
-
uniform sampler2D u_texture1;
|
|
18
|
-
uniform float u_ratio;
|
|
19
|
-
in v_texCoord;
|
|
20
|
-
out vec4 outColor;
|
|
21
|
-
void main() {
|
|
22
|
-
vec4 color0 = texture(u_texture0, v_texCoord);
|
|
23
|
-
vec4 color1 = texture(u_texture1, v_texCoord);
|
|
24
|
-
outColor = mix(color0, color1, u_ratio);
|
|
25
|
-
}
|
|
26
|
-
`;
|
|
27
|
-
class BlenderProgram {
|
|
28
|
-
constructor(gl) {
|
|
7
|
+
var vertexShader = "#version 300 es\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 + 0.5;\n}\n";
|
|
8
|
+
var fragmentShader = "#version 300 es\nuniform sampler2D u_texture0;\nuniform sampler2D u_texture1;\nuniform float u_ratio;\nin v_texCoord;\nout vec4 outColor;\nvoid main() {\n vec4 color0 = texture(u_texture0, v_texCoord);\n vec4 color1 = texture(u_texture1, v_texCoord);\n outColor = mix(color0, color1, u_ratio);\n}\n";
|
|
9
|
+
var BlenderProgram = /** @class */ (function () {
|
|
10
|
+
function BlenderProgram(gl) {
|
|
29
11
|
this.gl = gl;
|
|
30
12
|
this.programWrapper = this._createProgramWrapper();
|
|
31
13
|
}
|
|
32
|
-
_craeteProgramWrapper() {
|
|
33
|
-
|
|
34
|
-
|
|
14
|
+
BlenderProgram.prototype._craeteProgramWrapper = function () {
|
|
15
|
+
var gl = this.gl;
|
|
16
|
+
var program = (0, util_1.createProgram)(gl, vertexShader, fragmentShader);
|
|
35
17
|
this.vao = gl.createVertexArray();
|
|
36
18
|
gl.bindVertexArray(this.vao);
|
|
37
19
|
this._buffer = gl.createBuffer();
|
|
@@ -48,10 +30,10 @@ class BlenderProgram {
|
|
|
48
30
|
gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);
|
|
49
31
|
gl.bindVertexArray(null);
|
|
50
32
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
51
|
-
return { program, uniforms: { u_texture0: gl.getUniformLocation(program, 'u_texture0'), u_texture1: gl.getUniformLocation(program, 'u_texture1'), u_ratio: gl.getUniformLocation(program, 'u_ratio') } };
|
|
52
|
-
}
|
|
53
|
-
draw(ratio, texture0, texture1) {
|
|
54
|
-
|
|
33
|
+
return { program: program, uniforms: { u_texture0: gl.getUniformLocation(program, 'u_texture0'), u_texture1: gl.getUniformLocation(program, 'u_texture1'), u_ratio: gl.getUniformLocation(program, 'u_ratio') } };
|
|
34
|
+
};
|
|
35
|
+
BlenderProgram.prototype.draw = function (ratio, texture0, texture1) {
|
|
36
|
+
var gl = this.gl;
|
|
55
37
|
gl.useProgram(this.programWrapper.program);
|
|
56
38
|
gl.bindVertexArray(this.vao);
|
|
57
39
|
gl.activeTexture(gl.TEXTURE1);
|
|
@@ -63,10 +45,10 @@ class BlenderProgram {
|
|
|
63
45
|
gl.uniform1f(this.programWrapper.uniforms.u_ratio, ratio);
|
|
64
46
|
gl.drawArrays(gl.TRIANGLES, 0, 6);
|
|
65
47
|
gl.bindVertexArray(null);
|
|
66
|
-
}
|
|
67
|
-
createFloat32Texture(width, height) {
|
|
68
|
-
|
|
69
|
-
|
|
48
|
+
};
|
|
49
|
+
BlenderProgram.prototype.createFloat32Texture = function (width, height) {
|
|
50
|
+
var gl = this.gl;
|
|
51
|
+
var texture = gl.createTexture();
|
|
70
52
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
71
53
|
gl.texImage2D(gl.TEXTURE_2D, 0, gl.R32F, width, height, 0, gl.RED, gl.FLOAT, null);
|
|
72
54
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
|
|
@@ -74,6 +56,7 @@ class BlenderProgram {
|
|
|
74
56
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
75
57
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
76
58
|
return texture;
|
|
77
|
-
}
|
|
78
|
-
|
|
59
|
+
};
|
|
60
|
+
return BlenderProgram;
|
|
61
|
+
}());
|
|
79
62
|
exports.default = BlenderProgram;
|
|
@@ -3,5 +3,5 @@ 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
|
-
|
|
6
|
+
var object_1 = __importDefault(require("./object"));
|
|
7
7
|
exports.default = object_1.default;
|