@pirireis/webglobeplugins 0.9.6 → 0.9.7

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.
Files changed (226) hide show
  1. package/package.json +5 -2
  2. package/Math/angle-calculation.js +0 -14
  3. package/Math/arc.ts +0 -76
  4. package/Math/bounds/line-bbox.js +0 -225
  5. package/Math/constants.ts +0 -11
  6. package/Math/frustum/camera.ts +0 -32
  7. package/Math/frustum/from-globeinfo.ts +0 -63
  8. package/Math/frustum/types.ts +0 -11
  9. package/Math/globe-util/horizon-plane.ts +0 -137
  10. package/Math/index.js +0 -0
  11. package/Math/juction/arc-plane.ts +0 -114
  12. package/Math/juction/line-sphere.ts +0 -30
  13. package/Math/juction/plane-plane.ts +0 -66
  14. package/Math/line.ts +0 -70
  15. package/Math/matrix4.ts +0 -0
  16. package/Math/methods.js +0 -237
  17. package/Math/plane.ts +0 -86
  18. package/Math/quaternion.ts +0 -120
  19. package/Math/roadmap.md +0 -10
  20. package/Math/types.ts +0 -45
  21. package/Math/utils.js +0 -3
  22. package/Math/vec3.ts +0 -155
  23. package/algorithms/search-binary.js +0 -14
  24. package/altitude-locator/adaptors.js +0 -0
  25. package/altitude-locator/draw-subset-obj.js +0 -27
  26. package/altitude-locator/keymethod.js +0 -0
  27. package/altitude-locator/plugin.js +0 -439
  28. package/altitude-locator/types.js +0 -26
  29. package/arrowfield/adaptor.js +0 -11
  30. package/arrowfield/index.js +0 -3
  31. package/arrowfield/plugin.js +0 -128
  32. package/bearing-line/index.js +0 -2
  33. package/bearing-line/plugin.js +0 -512
  34. package/circle-line-chain/chain-list-map.js +0 -221
  35. package/circle-line-chain/init.js +0 -0
  36. package/circle-line-chain/plugin.js +0 -469
  37. package/circle-line-chain/readme.md +0 -57
  38. package/circle-line-chain/util.js +0 -1
  39. package/compass-rose/compass-rose-padding-flat.js +0 -266
  40. package/compass-rose/compass-text-writer.js +0 -173
  41. package/compass-rose/index.js +0 -3
  42. package/compassrose/compassrose.js +0 -341
  43. package/compassrose/index.js +0 -2
  44. package/depth-locator/readme.md +0 -26
  45. package/globe-types.ts +0 -13
  46. package/heatwave/index.js +0 -4
  47. package/heatwave/isobar/objectarraylabels.js +0 -247
  48. package/heatwave/isobar/plugin.js +0 -340
  49. package/heatwave/isobar/quadtreecontours.js +0 -336
  50. package/heatwave/plugins/heatwaveglobeshell.js +0 -258
  51. package/jest.config.js +0 -6
  52. package/partialrings/buffer-manager.js +0 -89
  53. package/partialrings/goals.md +0 -17
  54. package/partialrings/index.js +0 -3
  55. package/partialrings/plugin.js +0 -160
  56. package/partialrings/program.js +0 -324
  57. package/pin/pin-object-array.js +0 -381
  58. package/pin/pin-point-totem.js +0 -77
  59. package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +0 -78
  60. package/point-heat-map/index.js +0 -0
  61. package/point-heat-map/plugin-webworker.js +0 -151
  62. package/point-heat-map/point-to-heat-map-flow.js +0 -150
  63. package/point-heat-map/readme.md +0 -15
  64. package/point-tracks/key-methods.js +0 -3
  65. package/point-tracks/plugin.js +0 -394
  66. package/programs/arrowfield/index.js +0 -2
  67. package/programs/arrowfield/logic.js +0 -286
  68. package/programs/arrowfield/object.js +0 -89
  69. package/programs/data2legend/density-to-legend.js +0 -115
  70. package/programs/data2legend/point-to-density-texture.js +0 -114
  71. package/programs/float2legendwithratio/index.js +0 -3
  72. package/programs/float2legendwithratio/logic.js +0 -194
  73. package/programs/float2legendwithratio/object.js +0 -141
  74. package/programs/globe-util/is-globe-moved.js +0 -27
  75. package/programs/globeshell/index.js +0 -2
  76. package/programs/globeshell/noise/noises.js +0 -0
  77. package/programs/globeshell/wiggle/index.js +0 -6
  78. package/programs/globeshell/wiggle/logic.js +0 -371
  79. package/programs/globeshell/wiggle/object.js +0 -93
  80. package/programs/helpers/blender/index.js +0 -0
  81. package/programs/helpers/blender/program.js +0 -91
  82. package/programs/helpers/fadeaway/index.js +0 -3
  83. package/programs/helpers/fadeaway/logic.js +0 -76
  84. package/programs/helpers/fadeaway/object.js +0 -20
  85. package/programs/helpers/index.js +0 -2
  86. package/programs/index.js +0 -21
  87. package/programs/interface.ts +0 -7
  88. package/programs/line-on-globe/angled-line.js +0 -206
  89. package/programs/line-on-globe/circle-accurate-3d.js +0 -167
  90. package/programs/line-on-globe/circle-accurate-flat.js +0 -262
  91. package/programs/line-on-globe/circle-accurate.js +0 -202
  92. package/programs/line-on-globe/circle.js +0 -191
  93. package/programs/line-on-globe/degree-padding-around-circle-3d.js +0 -188
  94. package/programs/line-on-globe/index.js +0 -0
  95. package/programs/line-on-globe/lines-color-instanced-flat.js +0 -151
  96. package/programs/line-on-globe/linestrip.ts +0 -228
  97. package/programs/line-on-globe/naive-accurate-flexible.js +0 -239
  98. package/programs/line-on-globe/to-the-surface.js +0 -129
  99. package/programs/line-on-globe/util.js +0 -8
  100. package/programs/picking/pickable-renderer.js +0 -216
  101. package/programs/point-on-globe/element-globe-surface-glow.js +0 -168
  102. package/programs/point-on-globe/element-point-glow.js +0 -184
  103. package/programs/point-on-globe/square-pixel-point.js +0 -189
  104. package/programs/programcache.ts +0 -131
  105. package/programs/rings/distancering/circleflatprogram.js +0 -136
  106. package/programs/rings/distancering/circlepaddingfreeangleprogram.js +0 -378
  107. package/programs/rings/distancering/circlepaddysharedbuffer.js +0 -420
  108. package/programs/rings/distancering/index.js +0 -5
  109. package/programs/rings/distancering/paddyflatprogram.js +0 -146
  110. package/programs/rings/distancering/paddyflatprogram2d.js +0 -150
  111. package/programs/rings/distancering/paddyflatprogram3d.js +0 -146
  112. package/programs/rings/distancering/shader.js +0 -0
  113. package/programs/rings/index.js +0 -1
  114. package/programs/rings/partial-ring/piece-of-pie.js +0 -315
  115. package/programs/totems/camerauniformblock.d.ts +0 -48
  116. package/programs/totems/camerauniformblock.js +0 -197
  117. package/programs/totems/canvas-webglobe-info.js +0 -136
  118. package/programs/totems/gpu-selection-uniform-block.js +0 -132
  119. package/programs/totems/index.ts +0 -2
  120. package/programs/two-d/pixel-circle.js +0 -0
  121. package/programs/two-d/pixel-padding-for-compass.js +0 -174
  122. package/programs/util.js +0 -20
  123. package/programs/vectorfields/index.js +0 -3
  124. package/programs/vectorfields/logics/drawrectangleparticles.js +0 -125
  125. package/programs/vectorfields/logics/index.js +0 -5
  126. package/programs/vectorfields/logics/pixelbased.js +0 -161
  127. package/programs/vectorfields/logics/ubo.js +0 -64
  128. package/programs/vectorfields/pingpongbuffermanager.js +0 -80
  129. package/publish.bat +0 -60
  130. package/rangerings/enum.js +0 -3
  131. package/rangerings/index.js +0 -5
  132. package/rangerings/plugin.js +0 -649
  133. package/rangerings/rangeringangletext.js +0 -368
  134. package/rangerings/ring-account.js +0 -129
  135. package/shaders/fragment-toy/firework.js +0 -55
  136. package/shaders/fragment-toy/singularity.js +0 -59
  137. package/shape-on-terrain/arc/naive/plugin.ts +0 -304
  138. package/shape-on-terrain/goal.md +0 -12
  139. package/tests/Math/junction/arc-plane.test.ts +0 -133
  140. package/tests/Math/junction/plane-plane.test.ts +0 -82
  141. package/tests/Math/plane.test.ts +0 -43
  142. package/tests/Math/vec3.test.ts +0 -14
  143. package/timetracks/adaptors-line-strip.js +0 -80
  144. package/timetracks/adaptors.js +0 -133
  145. package/timetracks/index.js +0 -6
  146. package/timetracks/plugin-line-strip.js +0 -295
  147. package/timetracks/plugin.js +0 -304
  148. package/timetracks/program-line-strip.js +0 -688
  149. package/timetracks/program.js +0 -850
  150. package/timetracks/programpoint-line-strip.js +0 -175
  151. package/timetracks/programpoint.js +0 -168
  152. package/timetracks/readme.md +0 -1
  153. package/tsconfig.json +0 -22
  154. package/types.ts +0 -17
  155. package/util/account/bufferoffsetmanager.js +0 -209
  156. package/util/account/index.js +0 -6
  157. package/util/account/single-attribute-buffer-management/buffer-manager.ts +0 -119
  158. package/util/account/single-attribute-buffer-management/buffer-orchestrator.ts +0 -173
  159. package/util/account/single-attribute-buffer-management/index.ts +0 -13
  160. package/util/account/single-attribute-buffer-management/object-store.ts +0 -65
  161. package/util/account/single-attribute-buffer-management/types.ts +0 -39
  162. package/util/account/util.js +0 -22
  163. package/util/algorithms/index.js +0 -0
  164. package/util/algorithms/search-binary.js +0 -26
  165. package/util/check/get.js +0 -13
  166. package/util/check/index.js +0 -0
  167. package/util/check/typecheck.js +0 -39
  168. package/util/geometry/index.js +0 -53
  169. package/util/gl-util/buffer/attribute-loader.ts +0 -85
  170. package/util/gl-util/buffer/index.ts +0 -6
  171. package/util/gl-util/buffer/types.ts +0 -13
  172. package/util/gl-util/draw-options/methods.ts +0 -66
  173. package/util/gl-util/draw-options/types.ts +0 -28
  174. package/util/gl-util/uniform-block/manager.ts +0 -187
  175. package/util/gl-util/uniform-block/roadmap.md +0 -70
  176. package/util/gl-util/uniform-block/shader.js +0 -0
  177. package/util/gl-util/uniform-block/types.ts +0 -27
  178. package/util/heatwavedatamanager/datamanager.js +0 -168
  179. package/util/heatwavedatamanager/index.js +0 -3
  180. package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +0 -133
  181. package/util/heatwavedatamanager/pointcoordsmeta.js +0 -22
  182. package/util/index.js +0 -13
  183. package/util/interpolation/index.js +0 -0
  184. package/util/interpolation/timetrack/index.js +0 -9
  185. package/util/interpolation/timetrack/timetrack-interpolator.js +0 -88
  186. package/util/interpolation/timetrack/web-worker-str.js +0 -180
  187. package/util/interpolation/timetrack/web-worker.js +0 -51
  188. package/util/jshelpers/data-filler.js +0 -19
  189. package/util/jshelpers/equality.js +0 -17
  190. package/util/jshelpers/index.js +0 -1
  191. package/util/jshelpers/timefilters.js +0 -32
  192. package/util/picking/fence.js +0 -46
  193. package/util/picking/picker-displayer.js +0 -177
  194. package/util/programs/draw-texture-on-canvas.js +0 -102
  195. package/util/programs/index.js +0 -1
  196. package/util/programs/shapesonglobe.js +0 -246
  197. package/util/programs/supersampletotextures.js +0 -142
  198. package/util/programs/texturetoglobe.js +0 -203
  199. package/util/shaderfunctions/geometrytransformations.ts +0 -388
  200. package/util/shaderfunctions/index.js +0 -2
  201. package/util/shaderfunctions/nodata.js +0 -10
  202. package/util/shaderfunctions/noisefunctions.js +0 -44
  203. package/util/surface-line-data/arc-bboxes.ts +0 -42
  204. package/util/surface-line-data/arcs-to-cuts.js +0 -74
  205. package/util/surface-line-data/cut-arc.js +0 -0
  206. package/util/surface-line-data/flow.ts +0 -52
  207. package/util/surface-line-data/rbush-manager.js +0 -0
  208. package/util/surface-line-data/types.ts +0 -27
  209. package/util/surface-line-data/web-worker.js +0 -0
  210. package/util/webglobe/gldefaultstates.js +0 -5
  211. package/util/webglobe/index.js +0 -2
  212. package/util/webglobe/rasteroverlay.js +0 -96
  213. package/util/webglobjectbuilders.ts +0 -456
  214. package/util/webglobjectbuilders1.js +0 -271
  215. package/waveparticles/adaptor.js +0 -16
  216. package/waveparticles/index.js +0 -3
  217. package/waveparticles/plugin.js +0 -313
  218. package/wind/imagetovectorfieldandmagnitude.js +0 -39
  219. package/wind/index.js +0 -5
  220. package/wind/plugin.js +0 -1057
  221. package/wind/vectorfieldimage.js +0 -27
  222. package/write-text/attached-text-writer.js +0 -105
  223. package/write-text/context-text.js +0 -125
  224. package/write-text/context-text3.js +0 -178
  225. package/write-text/index.js +0 -1
  226. package/write-text/writer-plugin.js +0 -7
@@ -1,371 +0,0 @@
1
- import { createProgram } from '../../../util';
2
-
3
-
4
-
5
- export default class Logic {
6
- constructor() {
7
- this.id = "GlobeShellProgram";
8
- this.description = "This program implements flyweight pattern for globe." +
9
- "At globes draw3D call stack, this program should be prior to any program that uses it." +
10
- "draw3D method of this object only sets Projetion, ModelView and Translate matrices and if the mode is 2D mapWH .";
11
-
12
- }
13
-
14
- init(globe, gl) {
15
- this.gl = gl;
16
- this.globe = globe;
17
- this.programWrapper = this._createProgramWrapper();
18
- this._transformArray = new Float32Array(3);
19
- this.setGeometry();
20
- this.resize();
21
- this.updateTime(0);
22
- this.setMesh({ xRes: 64, yRes: 64, eastWestTied: false });
23
- }
24
-
25
- _createProgramWrapper() {
26
- const vertexShader = `#version 300 es
27
- #define R 6378.137
28
- #define PI 3.1415926535897932384626433832795
29
- #define POLE 20037508.34
30
- #define POLE_BY_PI 6366198.2
31
- #define HALF_PI 1.5707963267948966192313216916398
32
-
33
- uniform vec2 u_mesh_resolution;
34
-
35
- layout(std140) uniform ShellBlock {
36
- vec2 u_grid_offset_rad;
37
- vec2 u_grid_size_rad;
38
- float u_height;
39
- float u_wiggle;
40
- float u_time;
41
- float u_opacity;
42
- };
43
-
44
- uniform mat4 u_model_view_matrix;
45
- uniform mat4 u_projection_matrix;
46
- uniform vec3 u_translate;
47
-
48
- uniform vec2 u_mapWH;
49
- uniform vec2 u_scrWH;
50
-
51
- uniform bool u_is3D;
52
-
53
- out float v_opacity;
54
- out vec2 v_texture_coordinate;
55
-
56
- vec2 f_texCoord(){
57
-
58
- float x = mod( float(gl_VertexID), u_mesh_resolution.x ) / ( u_mesh_resolution.x - 1.0);
59
- float y = floor( float(gl_VertexID) / u_mesh_resolution.x ) / ( u_mesh_resolution.y - 1.0);
60
- return vec2(x, y);
61
- //return vec2( fract( float(gl_VertexID) / u_mesh_resolution.x ), floor(float(gl_VertexID) / u_mesh_resolution.x) / u_mesh_resolution.y);
62
- }
63
-
64
- vec3 f_onSphere(vec2 texCoord){
65
- float vert = (texCoord.y * u_grid_size_rad.y ) + u_grid_offset_rad.y;
66
- float hor = (texCoord.x * u_grid_size_rad.x ) + u_grid_offset_rad.x;
67
- float x = sin(vert) * cos(hor);
68
- float y = sin(vert) * sin(hor);
69
- float z = cos(vert);
70
- return vec3(x, y, z);
71
- }
72
-
73
- vec2 f_onFlat(vec2 texCoord){
74
- float x = (texCoord.x * u_grid_size_rad.x ) + u_grid_offset_rad.x;
75
- float y = (texCoord.y * u_grid_size_rad.y ) + u_grid_offset_rad.y;
76
-
77
-
78
- float mercX = x * POLE_BY_PI;
79
- float mercY = log(tan(HALF_PI - y / 2.0 )) * POLE_BY_PI;
80
-
81
- float normX = ( mercX - u_translate.x ) / u_mapWH.x;
82
- float normY = ( mercY - u_translate.y ) / u_mapWH.y;
83
- return vec2(normX, normY);
84
- }
85
-
86
- vec3 f_position(vec3 unit_sphere_pos, float wiggle){
87
- return unit_sphere_pos * (R + u_height + wiggle);
88
- }
89
-
90
- float f_wiggle(vec2 texCoord){
91
- float s_contrib = 0.6*sin(texCoord.x*2.0*PI + 3.0*u_time);
92
- float t_contrib = 0.8*cos(texCoord.y*4.1 + 5.0*u_time);
93
- return u_wiggle * s_contrib * t_contrib * sin(texCoord.y*PI*2.0);
94
- }
95
-
96
- void main() {
97
- vec2 texCoord = f_texCoord();
98
- if (u_is3D){
99
- vec3 unit_sphere_pos = f_onSphere(texCoord);
100
- float wiggle = f_wiggle(texCoord);
101
- vec3 position = f_position(unit_sphere_pos, wiggle);
102
- gl_Position = u_projection_matrix * u_model_view_matrix * vec4(position - u_translate, 1.0);
103
- } else {
104
- vec2 position = f_onFlat(texCoord);
105
- gl_Position = u_projection_matrix * vec4(
106
- position.x * u_scrWH.x,
107
- (1.0 - position.y) * u_scrWH.y,
108
- 0.0,
109
- 1.0);
110
- }
111
- v_texture_coordinate = texCoord;
112
- v_opacity = u_opacity;
113
- }
114
- `;
115
-
116
- const fragmentShader = `#version 300 es
117
- precision lowp float;
118
- in vec2 v_texture_coordinate;
119
- in float v_opacity;
120
- uniform sampler2D u_texture;
121
- out vec4 outColor;
122
-
123
-
124
- void main() {
125
- outColor = texture(u_texture, v_texture_coordinate);
126
- outColor.a *= v_opacity;
127
- }`;
128
-
129
- const gl = this.gl;
130
- const program = createProgram(gl, vertexShader, fragmentShader);
131
- const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
132
- gl.useProgram(program);
133
- this.shellBlockBindingPoint = 0;
134
- const shellBlockIndex = gl.getUniformBlockIndex(program, "ShellBlock");
135
- gl.uniformBlockBinding(program, shellBlockIndex, this.shellBlockBindingPoint);
136
- gl.useProgram(currentProgram);
137
-
138
- return {
139
- program,
140
- u_model_view_matrix: gl.getUniformLocation(program, "u_model_view_matrix"),
141
- u_projection_matrix: gl.getUniformLocation(program, "u_projection_matrix"),
142
- u_translate: gl.getUniformLocation(program, "u_translate"),
143
- u_is3D: gl.getUniformLocation(program, "u_is3D"),
144
- u_scrWH: gl.getUniformLocation(program, "u_scrWH"),
145
- u_mapWH: gl.getUniformLocation(program, "u_mapWH"),
146
- u_texture: gl.getUniformLocation(program, "u_texture"),
147
- u_mesh_resolution: gl.getUniformLocation(program, "u_mesh_resolution"),
148
- }
149
- }
150
-
151
- // this method implements data part of flyweight pattern
152
- getShellBlockBufferManager() {
153
- return new ShellBlockManager(this.gl)
154
- }
155
-
156
- updateTime(time) {
157
- const { gl, programWrapper } = this;
158
- const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
159
- gl.useProgram(programWrapper.program);
160
- gl.uniform1f(this.programWrapper.u_time, time);
161
- gl.useProgram(currentProgram);
162
- }
163
-
164
- setRotationAndTranslation(uProjectionMatrix, uModelViewMatrix, uTranslate, resetCurrentProgram = false) {
165
- const gl = this.gl;
166
- let currentProgram = null;
167
- if (resetCurrentProgram) { currentProgram = gl.getParameter(gl.CURRENT_PROGRAM) };
168
- gl.useProgram(this.programWrapper.program);
169
- gl.uniformMatrix4fv(this.programWrapper.u_projection_matrix, false, uProjectionMatrix);
170
- gl.uniformMatrix4fv(this.programWrapper.u_model_view_matrix, false, uModelViewMatrix);
171
- this._transformArray.set([uTranslate.x, uTranslate.y, uTranslate.z], 0);
172
- gl.uniform3fv(this.programWrapper.u_translate, this._transformArray);
173
- if (resetCurrentProgram) gl.useProgram(currentProgram);
174
- }
175
-
176
-
177
- setGeometry() {
178
- const { globe, gl } = this;
179
- const { u_is3D, u_scrWH, program } = this.programWrapper;
180
- const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
181
- const is3D = this.globe.api_GetCurrentGeometry() === 0;
182
- gl.useProgram(program);
183
- if (globe.api_GetCurrentGeometry() === globe.api_GeometryTypes().FLAT) {
184
- gl.uniform2f(u_scrWH, globe.api_ScrW(), globe.api_ScrH());
185
- }
186
- gl.uniform1i(u_is3D, is3D);
187
- gl.useProgram(currentProgram);
188
- }
189
-
190
-
191
- resize() {
192
- const { gl, globe } = this;
193
- if (!globe) return;
194
- const { program, u_scrWH } = this.programWrapper;
195
- const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
196
- gl.useProgram(program);
197
- if (globe.api_GetCurrentGeometry() === globe.api_GeometryTypes().FLAT) {
198
- gl.uniform2f(u_scrWH, globe.api_ScrW(), globe.api_ScrH());
199
- }
200
- gl.useProgram(currentProgram);
201
- }
202
-
203
- // only sets data does not draw
204
- draw3D(uProjectionMatrix, uModelViewMatrix, uTranslate) {
205
- const { gl, globe } = this;
206
- const { program, u_model_view_matrix, u_projection_matrix, u_translate } = this.programWrapper;
207
- gl.disable(gl.DEPTH_TEST);
208
- gl.useProgram(program);
209
- gl.uniformMatrix4fv(u_projection_matrix, false, uProjectionMatrix);
210
- gl.uniformMatrix4fv(u_model_view_matrix, false, uModelViewMatrix);
211
- // this._transformArray.set([], 0);
212
- gl.uniform3f(u_translate, uTranslate.x, uTranslate.y, uTranslate.z);
213
-
214
- if (globe.api_GetCurrentGeometry() === 1) {
215
- const { width, height } = globe.api_GetCurrentWorldWH();
216
- gl.uniform2fv(this.programWrapper.u_mapWH, [width, height]);
217
- }
218
- gl.enable(gl.DEPTH_TEST);
219
- }
220
-
221
-
222
- draw(texture, shellBlockDataManager, drawLines = false) {
223
- const { gl, programWrapper, _vao, _drawCount } = this;
224
- const { program, u_texture } = programWrapper;
225
- gl.useProgram(program);
226
- gl.bindVertexArray(_vao);
227
- gl.activeTexture(gl.TEXTURE0);
228
- gl.bindTexture(gl.TEXTURE_2D, texture);
229
- gl.uniform1i(u_texture, 0);
230
- shellBlockDataManager.bind();
231
- if (drawLines) gl.drawElements(gl.LINES, _drawCount, gl.UNSIGNED_SHORT, 0);
232
- gl.clearColor(0, 0, 0, 0);
233
- gl.drawElements(gl.TRIANGLES, _drawCount, gl.UNSIGNED_SHORT, 0);
234
- shellBlockDataManager.unbind();
235
- gl.bindVertexArray(null);
236
- }
237
-
238
-
239
- free() {
240
- const { gl, programWrapper, _vao, _indexBuffer } = this;
241
- gl.deleteBuffer(_indexBuffer);
242
- gl.deleteVertexArray(_vao);
243
- gl.deleteProgram(programWrapper.program);
244
- }
245
-
246
-
247
- setMesh({ xRes, yRes, eastWestTied }) {
248
- this._xRes = xRes;
249
- this._yRes = yRes;
250
- const { _vao } = this._meshUP(xRes, yRes, eastWestTied);
251
- this._vao = _vao;
252
- this._setUMeshResolution(xRes, yRes);
253
- }
254
-
255
- _setUMeshResolution(xRes, yRes) {
256
- const { gl, programWrapper } = this;
257
- const { u_mesh_resolution } = programWrapper;
258
- const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
259
- gl.useProgram(programWrapper.program);
260
- gl.uniform2f(u_mesh_resolution, xRes, yRes);
261
- gl.useProgram(currentProgram);
262
- this._drawCount = 6 * ((xRes - 1) * (yRes - 1));
263
- }
264
-
265
- _meshUP(xRes, yRes, eastWestTied) {
266
- this._drawCount = 6 * ((xRes - 1) * (yRes - 1))
267
- const indices = new Uint16Array(this._drawCount);
268
- {
269
- let indicesIndex = 0;
270
- let index = 0;
271
- for (let j = 0; j < yRes - 1; j++) {
272
- for (let i = 0; i < xRes - 1; i++) {
273
- const ind = index + i;
274
- indices[indicesIndex++] = ind + xRes;
275
- indices[indicesIndex++] = ind + 1;
276
- indices[indicesIndex++] = ind;
277
- indices[indicesIndex++] = ind + xRes + 1;
278
- indices[indicesIndex++] = ind + 1;
279
- indices[indicesIndex++] = ind + xRes;
280
- }
281
- index += xRes;
282
- }
283
- if (eastWestTied) {
284
- let left = (yRes - 1);
285
- let right = 0;
286
- for (let i = 0; i < xRes - 1; i++) {
287
- indices[indicesIndex++] = left + xRes;
288
- indices[indicesIndex++] = right;
289
- indices[indicesIndex++] = left;
290
- indices[indicesIndex++] = right + xRes;
291
- indices[indicesIndex++] = right;
292
- indices[indicesIndex++] = left + xRes;
293
- left += xRes;
294
- right += xRes;
295
- }
296
- }
297
- }
298
- const gl = this.gl;
299
- const _vao = gl.createVertexArray();
300
- gl.bindVertexArray(_vao);
301
- const indexBuffer = gl.createBuffer();
302
- this._indexBuffer = indexBuffer;
303
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
304
- gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);
305
- gl.bindVertexArray(null);
306
- return { _vao };
307
- }
308
-
309
- }
310
-
311
-
312
- class ShellBlockManager {
313
- constructor(gl) {
314
- this.gl = gl;
315
- this.buffer = gl.createBuffer();
316
- gl.bindBuffer(gl.UNIFORM_BUFFER, this.buffer);
317
- gl.bufferData(gl.UNIFORM_BUFFER, 32, gl.DYNAMIC_DRAW);
318
- gl.bindBuffer(gl.UNIFORM_BUFFER, null);
319
- }
320
-
321
- update(
322
- {
323
- gridSizeRad = null,
324
- gridOffsetRad = null,
325
- height = null,
326
- wiggleInKM = null,
327
- innerTime = null,
328
- opacity = null } = {}) {
329
- const { gl, buffer } = this;
330
- gl.bindBuffer(gl.UNIFORM_BUFFER, buffer);
331
-
332
- if (gridOffsetRad !== null) {
333
- const offset = new Float32Array(gridOffsetRad);
334
- gl.bufferSubData(gl.UNIFORM_BUFFER, 0, offset);
335
- }
336
- if (gridSizeRad !== null) {
337
- const size = new Float32Array(gridSizeRad);
338
- gl.bufferSubData(gl.UNIFORM_BUFFER, 8, size);
339
- }
340
- if (height !== null) {
341
- const heightArray = new Float32Array([height]);
342
- gl.bufferSubData(gl.UNIFORM_BUFFER, 16, heightArray);
343
- }
344
- if (wiggleInKM !== null) {
345
- const wiggleArray = new Float32Array([wiggleInKM]);
346
- gl.bufferSubData(gl.UNIFORM_BUFFER, 20, wiggleArray);
347
- }
348
- if (innerTime !== null) {
349
- const innerTimeArray = new Float32Array([innerTime]);
350
- gl.bufferSubData(gl.UNIFORM_BUFFER, 24, innerTimeArray);
351
- }
352
- if (opacity !== null) {
353
- if (opacity < 0 || opacity > 1) { console.warn('Invalid opacity value'); return; }
354
- const op = new Float32Array([opacity]);
355
- gl.bufferSubData(gl.UNIFORM_BUFFER, 28, op);
356
- }
357
- gl.bindBuffer(gl.UNIFORM_BUFFER, null);
358
- }
359
- bind() {
360
- const { gl, buffer } = this;
361
- gl.bindBufferBase(gl.UNIFORM_BUFFER, this.shellBlockBindingPoint, buffer);
362
- }
363
- free() {
364
- const { gl, buffer } = this;
365
- gl.deleteBuffer(buffer);
366
- }
367
- unbind() {
368
- const { gl } = this;
369
- gl.bindBufferBase(gl.UNIFORM_BUFFER, this.shellBlockBindingPoint, null);
370
- }
371
- }
@@ -1,93 +0,0 @@
1
-
2
- import { globeProgramCache } from '../../programcache';
3
- import GlobeShellProgram from './logic';
4
-
5
- export default class GlobeShell {
6
- constructor(gl, globe,
7
- {
8
- minLon = -180,
9
- maxLon = 180,
10
- minLat = -90,
11
- maxLat = 90,
12
- height = 0,
13
- u_opacity = 1,
14
- wiggleInKM = 0,
15
- wiggleSpeed = 0,
16
- // eastWestTied, Not implemented yet
17
- } = {}) {
18
- this.gl = gl;
19
- this.globe = globe;
20
- this.program = globeProgramCache.getProgram(globe, GlobeShellProgram);
21
- this.shellBlockManager = this.program.getShellBlockBufferManager()
22
- this.update = this.shellBlockManager.update.bind(this.shellBlockManager);
23
- this.innerTime = 0;
24
- this.setBBox({ minLon, maxLon, minLat, maxLat })
25
- this.setOpacity(u_opacity);
26
- this.setHeight(height);
27
- this.setWiggle({ wiggleSpeed, wiggleInKM });
28
- }
29
-
30
-
31
- setTexture(texture) {
32
- this.texture = texture;
33
- this.globe.DrawRender();
34
- }
35
-
36
-
37
-
38
- setHeight(height) {
39
- this.shellBlockManager.update({ height });
40
- this.globe.DrawRender();
41
- }
42
-
43
- setOpacity(opacity) {
44
- this.shellBlockManager.update({ opacity });
45
- this.globe.DrawRender();
46
- }
47
-
48
- setBBox({ minLon = -180, maxLon = 180, minLat = -90, maxLat = 90 } = {}) {
49
- this.bbox = { minLon, maxLon, minLat, maxLat };
50
- // x
51
- const horOffset = (minLon) * Math.PI / 180;
52
- const horSize = (maxLon - minLon) * Math.PI / 180;
53
- // y
54
- const vertOffset = (90 - maxLat) * Math.PI / 180;
55
- const vertSize = (maxLat - minLat) * Math.PI / 180;
56
-
57
- const offset_rad = new Float32Array([horOffset, vertOffset]);
58
- const size_rad = new Float32Array([horSize, vertSize]);
59
- this.shellBlockManager.update({ gridSizeRad: size_rad, gridOffsetRad: offset_rad });
60
- this.globe.DrawRender();
61
- }
62
-
63
- setWiggle({ wiggleSpeed = null, wiggleInKM = null }) {
64
- if (wiggleInKM !== null) this.wiggleInKM = wiggleInKM;
65
- if (wiggleSpeed !== null) this.wiggleSpeed = wiggleSpeed;
66
- this.shellBlockManager.update({ wiggleInKM });
67
-
68
- }
69
-
70
-
71
- /**
72
- *
73
- * @param {*} program modelView, projection, translate, mapWH, scrWH, should be set before calling this function
74
- */
75
- draw() {
76
- this.program.draw(
77
- this.texture,
78
- this.shellBlockManager,
79
- );
80
- if (this.wiggleInKM > 0 && this.wiggleSpeed > 0) {
81
- this.innerTime += this.wiggleSpeed;
82
- this.shellBlockManager.update({ innerTime: this.innerTime });
83
- this.globe.DrawRender();
84
- }
85
- }
86
-
87
-
88
- free() {
89
- globeProgramCache.releaseProgram(this.globe, GlobeShellProgram);
90
- this.shellBlockManager.free();
91
- }
92
-
93
- }
File without changes
@@ -1,91 +0,0 @@
1
- import { createProgram } from "../util";
2
-
3
-
4
- /**
5
- * Blends two float32textures with given ratio.
6
- */
7
-
8
- const vertexShader = `#version 300 es
9
- in vec2 a_position;
10
- out vec2 v_texCoord;
11
- void main() {
12
- gl_Position = vec4(a_position, 0.0, 1.0);
13
- v_texCoord = a_position * 0.5 + 0.5;
14
- }
15
- `;
16
-
17
- const fragmentShader = `#version 300 es
18
- uniform sampler2D u_texture0;
19
- uniform sampler2D u_texture1;
20
- uniform float u_ratio;
21
- in v_texCoord;
22
- out vec4 outColor;
23
- void main() {
24
- vec4 color0 = texture(u_texture0, v_texCoord);
25
- vec4 color1 = texture(u_texture1, v_texCoord);
26
- outColor = mix(color0, color1, u_ratio);
27
- }
28
- `;
29
-
30
- export default class BlenderProgram {
31
- constructor(gl) {
32
- this.gl = gl;
33
- this.programWrapper = this._createProgramWrapper();
34
- }
35
-
36
-
37
-
38
- _craeteProgramWrapper() {
39
-
40
- const gl = this.gl;
41
-
42
- const program = createProgram(gl, vertexShader, fragmentShader);
43
-
44
- this.vao = gl.createVertexArray();
45
- gl.bindVertexArray(this.vao);
46
- this._buffer = gl.createBuffer();
47
- gl.bindBuffer(gl.ARRAY_BUFFER, this._buffer);
48
- gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
49
- -1, -1,
50
- 1, -1,
51
- -1, 1,
52
- -1, 1,
53
- 1, -1,
54
- 1, 1,
55
- ]), gl.STATIC_DRAW);
56
- gl.enableVertexAttribArray(0);
57
- gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);
58
- gl.bindVertexArray(null);
59
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
60
- return { program, uniforms: { u_texture0: gl.getUniformLocation(program, 'u_texture0'), u_texture1: gl.getUniformLocation(program, 'u_texture1'), u_ratio: gl.getUniformLocation(program, 'u_ratio') } };
61
- }
62
-
63
- draw(ratio, texture0, texture1) {
64
- const gl = this.gl;
65
- gl.useProgram(this.programWrapper.program);
66
- gl.bindVertexArray(this.vao);
67
- gl.activeTexture(gl.TEXTURE1);
68
- gl.bindTexture(gl.TEXTURE_2D, texture1);
69
- gl.uniform1i(this.programWrapper.uniforms.u_texture1, 1);
70
- gl.activeTexture(gl.TEXTURE0);
71
- gl.bindTexture(gl.TEXTURE_2D, texture0);
72
- gl.uniform1i(this.programWrapper.uniforms.u_texture0, 0);
73
- gl.uniform1f(this.programWrapper.uniforms.u_ratio, ratio);
74
- gl.drawArrays(gl.TRIANGLES, 0, 6);
75
- gl.bindVertexArray(null);
76
- }
77
-
78
- createFloat32Texture(width, height) {
79
- const gl = this.gl;
80
- const texture = gl.createTexture();
81
- gl.bindTexture(gl.TEXTURE_2D, texture);
82
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.R32F, width, height, 0, gl.RED, gl.FLOAT, null);
83
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
84
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
85
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
86
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
87
- return texture;
88
- }
89
- }
90
-
91
-
@@ -1,3 +0,0 @@
1
- import FadeAway from './object';
2
-
3
- export default FadeAway;
@@ -1,76 +0,0 @@
1
- import { createProgram } from "../../../util";
2
-
3
-
4
- const vertexShaderSource = `#version 300 es
5
- precision highp float;
6
- in vec2 a_position;
7
- out vec2 v_texCoord;
8
- void main() {
9
- gl_Position = vec4(a_position, 0.0, 1.0);
10
- v_texCoord = a_position * 0.5 + vec2(0.5);
11
- }
12
- `;
13
-
14
- const fragmentShaderSource = `#version 300 es
15
- precision highp float;
16
- uniform float opacity;
17
- uniform sampler2D u_texture;
18
- in vec2 v_texCoord;
19
- out vec4 outColor;
20
- void main() {
21
-
22
- vec4 color = texture(u_texture, v_texCoord);
23
- if (color.a <= 0.2) {
24
- outColor = vec4(0.0);
25
- return;
26
- }
27
- outColor = vec4(color.rgb, color.a * opacity);
28
- }
29
- `
30
-
31
- export default class FadeAwayProgram {
32
- constructor(gl) {
33
- this.gl = gl;
34
- this.program = createProgram(gl, vertexShaderSource, fragmentShaderSource);
35
- this.vao = gl.createVertexArray();
36
- gl.bindVertexArray(this.vao);
37
- this._buffer = gl.createBuffer();
38
- gl.bindBuffer(gl.ARRAY_BUFFER, this._buffer);
39
- gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
40
- -1, -1,
41
- 1, -1,
42
- -1, 1,
43
- -1, 1,
44
- 1, -1,
45
- 1, 1,
46
- ]), gl.STATIC_DRAW);
47
- gl.enableVertexAttribArray(0);
48
- gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);
49
- gl.bindVertexArray(null);
50
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
51
-
52
- this.uniforms = {
53
- u_texture: gl.getUniformLocation(this.program, 'u_texture'),
54
- opacity: gl.getUniformLocation(this.program, 'opacity')
55
- };
56
- }
57
-
58
- draw(texture, opacity) {
59
- const { gl, vao, uniforms, program } = this;
60
- gl.useProgram(program);
61
- gl.bindVertexArray(vao);
62
- gl.uniform1f(uniforms.opacity, opacity);
63
- gl.uniform1i(uniforms.u_texture, 0);
64
- gl.activeTexture(gl.TEXTURE0);
65
- gl.bindTexture(gl.TEXTURE_2D, texture);
66
- gl.drawArrays(gl.TRIANGLES, 0, 6);
67
- gl.bindVertexArray(null);
68
- }
69
-
70
- free() {
71
- const { gl, vao, _buffer, program } = this;
72
- gl.deleteVertexArray(vao);
73
- gl.deleteProgram(program);
74
- gl.deleteBuffer(_buffer);
75
- }
76
- }
@@ -1,20 +0,0 @@
1
-
2
- import { glProgramCache } from "../../programcache";
3
- import FadeAwayProgram from "./logic";
4
-
5
- export default class FadeAway {
6
-
7
- constructor(gl) {
8
- this.gl = gl;
9
- this.program = glProgramCache.getProgram(gl, FadeAwayProgram);
10
- }
11
-
12
- draw(sourceTexture, opacity) {
13
- this.program.draw(sourceTexture, opacity);
14
- }
15
-
16
-
17
- free() {
18
- glProgramCache.releaseProgram(FadeAwayProgram);
19
- }
20
- }
@@ -1,2 +0,0 @@
1
- import FadeAway from './fadeaway';
2
- export { FadeAway };
package/programs/index.js DELETED
@@ -1,21 +0,0 @@
1
- import { Float2LegendWithRatio } from "./float2legendwithratio";
2
- import { GlobeShellWiggle } from "./globeshell/wiggle";
3
- import { CameraUniformBlockTotem, CameraUniformBlockString } from "./totems/index";
4
- import ArrowField from "./arrowfield";
5
- import { glProgramCache, globeProgramCache, noRegisterGlobeProgramCache } from "./programcache";
6
- import * as vectorfield from "./vectorfields";
7
- import { FadeAway } from "./helpers";
8
- import * as rings from "./rings";
9
- export {
10
- Float2LegendWithRatio,
11
- GlobeShellWiggle,
12
- ArrowField,
13
- CameraUniformBlockTotem,
14
- CameraUniformBlockString,
15
- glProgramCache,
16
- globeProgramCache,
17
- noRegisterGlobeProgramCache,
18
- vectorfield,
19
- FadeAway,
20
- rings
21
- };
@@ -1,7 +0,0 @@
1
-
2
- interface ProgramInterface {
3
- draw(vao: WebGLVertexArrayObject, drawOptions: DrawRangeIndexParams, opacity: number, flexibleUBO: UBOHandler | null): void;
4
- createUBO(bufferReadType?: "STATIC_DRAW" | "DYNAMIC_DRAW" | "STREAM_DRAW"): UBOHandler;
5
- createVAO(...inputs: BufferAndReadInfo[]): WebGLVertexArrayObject;
6
- free(): void;
7
- }