@openglobus/og 0.11.1 → 0.11.6
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/package.json +18 -20
- package/src/og/Clock.js +11 -11
- package/src/og/Deferred.js +1 -1
- package/src/og/Events.js +9 -7
- package/src/og/Extent.js +117 -72
- package/src/og/Globe.js +35 -22
- package/src/og/ImageCanvas.js +24 -18
- package/src/og/Lock.js +2 -2
- package/src/og/LonLat.js +40 -37
- package/src/og/Popup.js +21 -15
- package/src/og/QueueArray.js +7 -3
- package/src/og/Rectangle.js +11 -6
- package/src/og/Stack.js +8 -5
- package/src/og/ajax.js +21 -33
- package/src/og/astro/astro.js +5 -5
- package/src/og/astro/earth.js +23 -17
- package/src/og/astro/jd.js +44 -39
- package/src/og/astro/orbit.js +20 -18
- package/src/og/astro/rotation.js +17 -8
- package/src/og/bv/Box.js +7 -3
- package/src/og/bv/Sphere.js +17 -9
- package/src/og/camera/Camera.js +137 -86
- package/src/og/camera/Frustum.js +30 -19
- package/src/og/camera/PlanetCamera.js +30 -26
- package/src/og/control/CompassButton.js +8 -2
- package/src/og/control/Control.js +13 -11
- package/src/og/control/DebugInfo.js +4 -1
- package/src/og/control/EarthCoordinates.js +62 -41
- package/src/og/control/EarthNavigation.js +20 -22
- package/src/og/control/GeoImageDragControl.js +1 -1
- package/src/og/control/KeyboardNavigation.js +12 -12
- package/src/og/control/LayerSwitcher.js +24 -23
- package/src/og/control/Lighting.js +1 -1
- package/src/og/control/MouseNavigation.js +1 -1
- package/src/og/control/ScaleControl.js +1 -1
- package/src/og/control/SegmentBoundVisualization.js +8 -9
- package/src/og/control/ShowFps.js +15 -10
- package/src/og/control/SimpleNavigation.js +8 -10
- package/src/og/control/Sun.js +25 -15
- package/src/og/control/ToggleWireframe.js +5 -5
- package/src/og/control/TouchNavigation.js +58 -45
- package/src/og/control/ZoomControl.js +41 -25
- package/src/og/control/index.js +4 -0
- package/src/og/ellipsoid/Ellipsoid.js +181 -85
- package/src/og/ellipsoid/wgs84.js +4 -4
- package/src/og/entity/BaseBillboard.js +97 -44
- package/src/og/entity/Billboard.js +15 -11
- package/src/og/entity/BillboardHandler.js +314 -64
- package/src/og/entity/Entity.js +106 -74
- package/src/og/entity/EntityCollection.js +72 -49
- package/src/og/entity/GeoObject.js +228 -0
- package/src/og/entity/GeoObjectHandler.js +910 -0
- package/src/og/entity/Geometry.js +29 -26
- package/src/og/entity/GeometryHandler.js +598 -126
- package/src/og/entity/Label.js +74 -40
- package/src/og/entity/LabelHandler.js +47 -246
- package/src/og/entity/LabelWorker.js +213 -0
- package/src/og/entity/Object3d.js +504 -0
- package/src/og/entity/PointCloud.js +81 -33
- package/src/og/entity/PointCloudHandler.js +9 -9
- package/src/og/entity/Polyline.js +39 -39
- package/src/og/entity/Ray.js +61 -28
- package/src/og/entity/ShapeHandler.js +1 -1
- package/src/og/entity/Strip.js +77 -48
- package/src/og/entity/StripHandler.js +27 -27
- package/src/og/entity/index.js +8 -16
- package/src/og/input/KeyboardHandler.js +107 -104
- package/src/og/input/MouseHandler.js +81 -78
- package/src/og/input/TouchHandler.js +55 -51
- package/src/og/layer/BaseGeoImage.js +61 -30
- package/src/og/layer/CanvasTiles.js +26 -24
- package/src/og/layer/GeoImage.js +10 -10
- package/src/og/layer/GeoTexture2d.js +1 -1
- package/src/og/layer/GeoVideo.js +3 -3
- package/src/og/layer/KML.js +66 -40
- package/src/og/layer/Layer.js +27 -17
- package/src/og/layer/Material.js +93 -61
- package/src/og/layer/Vector.js +118 -72
- package/src/og/layer/WMS.js +36 -19
- package/src/og/layer/XYZ.js +55 -48
- package/src/og/light/LightSource.js +47 -40
- package/src/og/math/Line2.js +24 -24
- package/src/og/math/Line3.js +103 -102
- package/src/og/math/Mat3.js +134 -121
- package/src/og/math/Mat4.js +603 -459
- package/src/og/math/Plane.js +21 -20
- package/src/og/math/Quat.js +980 -927
- package/src/og/math/Ray.js +195 -187
- package/src/og/math/Vec2.js +127 -117
- package/src/og/math/Vec3.js +206 -176
- package/src/og/math/Vec4.js +49 -53
- package/src/og/math/coder.js +18 -18
- package/src/og/math.js +12 -12
- package/src/og/mercator.js +11 -11
- package/src/og/proj/EPSG3857.js +4 -4
- package/src/og/proj/EPSG4326.js +4 -4
- package/src/og/proj/Proj.js +31 -31
- package/src/og/quadTree/EntityCollectionNode.js +310 -300
- package/src/og/quadTree/Node.js +1008 -993
- package/src/og/renderer/Renderer.js +768 -747
- package/src/og/renderer/RendererEvents.js +9 -6
- package/src/og/scene/Axes.js +1 -1
- package/src/og/scene/BaseNode.js +8 -9
- package/src/og/scene/Planet.js +115 -87
- package/src/og/scene/RenderNode.js +29 -22
- package/src/og/scene/SkyBox.js +1 -1
- package/src/og/segment/Segment.js +1886 -1878
- package/src/og/segment/SegmentLonLat.js +298 -268
- package/src/og/segment/segmentHelper.js +11 -11
- package/src/og/shaders/bloom.js +1 -1
- package/src/og/shaders/blur.js +2 -2
- package/src/og/shaders/depth.js +1 -1
- package/src/og/shaders/geoObject.js +211 -0
- package/src/og/shaders/label.js +1 -1
- package/src/og/shaders/lumFilter.js +1 -1
- package/src/og/shaders/pointCloud.js +42 -42
- package/src/og/shaders/screenFrame.js +1 -1
- package/src/og/shaders/shape.js +15 -21
- package/src/og/shaders/skybox.js +37 -37
- package/src/og/shaders/toneMapping.js +1 -1
- package/src/og/shapes/BaseShape.js +129 -57
- package/src/og/shapes/Icosphere.js +30 -15
- package/src/og/shapes/Sphere.js +13 -16
- package/src/og/terrain/BilTerrain.js +2 -1
- package/src/og/terrain/EmptyTerrain.js +2 -2
- package/src/og/terrain/Geoid.js +2 -2
- package/src/og/terrain/GlobusTerrain.js +10 -10
- package/src/og/terrain/MapboxTerrain.js +1 -1
- package/src/og/utils/GeoImageCreator.js +9 -9
- package/src/og/utils/Loader.js +6 -6
- package/src/og/utils/NormalMapCreator.js +13 -13
- package/src/og/utils/TerrainWorker.js +1 -1
- package/src/og/utils/TextureAtlas.js +20 -22
- package/src/og/utils/VectorTileCreator.js +5 -5
- package/src/og/utils/earcut.js +1 -1
- package/src/og/utils/shared.js +15 -15
- package/src/og/webgl/Framebuffer.js +101 -53
- package/src/og/webgl/Handler.js +125 -85
- package/src/og/webgl/Multisample.js +55 -27
- package/src/og/webgl/Program.js +80 -35
- package/src/og/webgl/ProgramController.js +27 -23
- package/src/og/webgl/callbacks.js +8 -8
- package/types/Clock.d.ts +6 -2
- package/types/Deferred.d.ts +1 -1
- package/types/Events.d.ts +8 -4
- package/types/Extent.d.ts +37 -33
- package/types/Globe.d.ts +15 -13
- package/types/ImageCanvas.d.ts +5 -3
- package/types/LonLat.d.ts +24 -24
- package/types/Popup.d.ts +4 -0
- package/types/QueueArray.d.ts +6 -2
- package/types/Rectangle.d.ts +10 -4
- package/types/Stack.d.ts +4 -0
- package/types/ajax.d.ts +1 -1
- package/types/astro/earth.d.ts +3 -2
- package/types/bv/Box.d.ts +10 -5
- package/types/bv/Sphere.d.ts +13 -7
- package/types/camera/Camera.d.ts +90 -81
- package/types/camera/Frustum.d.ts +26 -22
- package/types/camera/PlanetCamera.d.ts +49 -53
- package/types/control/CompassButton.d.ts +4 -4
- package/types/control/Control.d.ts +7 -4
- package/types/control/DebugInfo.d.ts +3 -4
- package/types/control/EarthCoordinates.d.ts +6 -6
- package/types/control/EarthNavigation.d.ts +42 -0
- package/types/control/KeyboardNavigation.d.ts +3 -4
- package/types/control/LayerSwitcher.d.ts +3 -5
- package/types/control/Lighting.d.ts +3 -3
- package/types/control/MouseNavigation.d.ts +47 -0
- package/types/control/ScaleControl.d.ts +3 -3
- package/types/control/ShowFps.d.ts +3 -4
- package/types/control/SimpleNavigation.d.ts +3 -6
- package/types/control/Sun.d.ts +8 -10
- package/types/control/ToggleWireframe.d.ts +3 -3
- package/types/control/TouchNavigation.d.ts +48 -0
- package/types/control/ZoomControl.d.ts +3 -4
- package/types/control/index.d.ts +3 -1
- package/types/ellipsoid/Ellipsoid.d.ts +47 -43
- package/types/ellipsoid/wgs84.d.ts +3 -2
- package/types/entity/BaseBillboard.d.ts +41 -34
- package/types/entity/Billboard.d.ts +7 -7
- package/types/entity/BillboardHandler.d.ts +4 -0
- package/types/entity/Entity.d.ts +101 -83
- package/types/entity/EntityCollection.d.ts +57 -43
- package/types/entity/GeoObject.d.ts +111 -0
- package/types/entity/GeoObjectHandler.d.ts +77 -0
- package/types/entity/Geometry.d.ts +9 -7
- package/types/entity/GeometryHandler.d.ts +2 -2
- package/types/entity/Label.d.ts +24 -29
- package/types/entity/LabelHandler.d.ts +9 -2
- package/types/entity/LabelWorker.d.ts +9 -0
- package/types/entity/PointCloud.d.ts +8 -8
- package/types/entity/PointCloudHandler.d.ts +3 -3
- package/types/entity/Polyline.d.ts +58 -55
- package/types/entity/Ray.d.ts +19 -18
- package/types/entity/Strip.d.ts +8 -7
- package/types/entity/StripHandler.d.ts +3 -3
- package/types/entity/index.d.ts +7 -7
- package/types/input/KeyboardHandler.d.ts +10 -0
- package/types/input/MouseHandler.d.ts +5 -0
- package/types/input/TouchHandler.d.ts +5 -0
- package/types/layer/BaseGeoImage.d.ts +23 -35
- package/types/layer/CanvasTiles.d.ts +15 -22
- package/types/layer/GeoImage.d.ts +5 -18
- package/types/layer/GeoVideo.d.ts +5 -30
- package/types/layer/KML.d.ts +20 -15
- package/types/layer/Layer.d.ts +326 -0
- package/types/layer/Material.d.ts +45 -0
- package/types/layer/Vector.d.ts +208 -0
- package/types/layer/WMS.d.ts +4 -7
- package/types/layer/XYZ.d.ts +19 -25
- package/types/light/LightSource.d.ts +54 -53
- package/types/math/Line2.d.ts +11 -0
- package/types/math/Line3.d.ts +10 -0
- package/types/math/Mat3.d.ts +30 -18
- package/types/math/Mat4.d.ts +71 -52
- package/types/math/Plane.d.ts +5 -4
- package/types/math/Quat.d.ts +379 -0
- package/types/math/Ray.d.ts +82 -0
- package/types/math/Vec2.d.ts +102 -101
- package/types/math/Vec3.d.ts +143 -142
- package/types/math/Vec4.d.ts +40 -39
- package/types/math/coder.d.ts +12 -11
- package/types/math.d.ts +8 -8
- package/types/mercator.d.ts +3 -3
- package/types/proj/EPSG3857.d.ts +3 -2
- package/types/proj/EPSG4326.d.ts +3 -2
- package/types/proj/Proj.d.ts +42 -0
- package/types/quadTree/EntityCollectionNode.d.ts +34 -0
- package/types/quadTree/Node.d.ts +61 -0
- package/types/renderer/Renderer.d.ts +300 -0
- package/types/renderer/RendererEvents.d.ts +10 -7
- package/types/scene/BaseNode.d.ts +9 -9
- package/types/scene/Planet.d.ts +131 -126
- package/types/scene/RenderNode.d.ts +22 -23
- package/types/segment/Segment.d.ts +279 -0
- package/types/segment/SegmentLonLat.d.ts +16 -0
- package/types/shaders/geoObject.d.ts +3 -0
- package/types/shapes/BaseShape.d.ts +43 -40
- package/types/shapes/Sphere.d.ts +7 -7
- package/types/terrain/BilTerrain.d.ts +0 -1
- package/types/terrain/EmptyTerrain.d.ts +4 -4
- package/types/terrain/GlobusTerrain.d.ts +17 -54
- package/types/terrain/MapboxTerrain.d.ts +0 -1
- package/types/utils/GeoImageCreator.d.ts +3 -2
- package/types/utils/TextureAtlas.d.ts +8 -8
- package/types/utils/shared.d.ts +25 -24
- package/types/webgl/Framebuffer.d.ts +5 -5
- package/types/webgl/Handler.d.ts +68 -43
- package/types/webgl/Multisample.d.ts +5 -5
- package/types/webgl/Program.d.ts +8 -2
- package/types/webgl/ProgramController.d.ts +18 -13
- package/src/og/inherits.js +0 -8
- package/src/og/utils/polylabel.js +0 -176
- package/types/inherits.d.ts +0 -4
package/src/og/webgl/Handler.js
CHANGED
|
@@ -27,10 +27,9 @@ const vendorPrefixes = ["", "WEBKIT_", "MOZ_"];
|
|
|
27
27
|
* @param {string} id - Canvas element id that WebGL handler assing with. If it's null
|
|
28
28
|
* or undefined creates hidden canvas and handler bacomes hidden.
|
|
29
29
|
* @param {Object} [params] - Handler options:
|
|
30
|
-
* @param {number} [params.anisotropy] -
|
|
30
|
+
* @param {number} [params.anisotropy] - Anisotropy filter degree. 8 is default.
|
|
31
31
|
* @param {number} [params.width] - Hidden handler width. 256 is default.
|
|
32
32
|
* @param {number} [params.height] - Hidden handler height. 256 is default.
|
|
33
|
-
* @param {Object} [param.scontext] - Native WebGL context attributes. See https://www.khronos.org/registry/webgl/specs/latest/1.0/#WEBGLCONTEXTATTRIBUTES
|
|
34
33
|
* @param {Array.<string>} [params.extensions] - Additional WebGL extension list. Available by default: EXT_texture_filter_anisotropic.
|
|
35
34
|
*/
|
|
36
35
|
class Handler {
|
|
@@ -40,14 +39,14 @@ class Handler {
|
|
|
40
39
|
/**
|
|
41
40
|
* Application default timer.
|
|
42
41
|
* @public
|
|
43
|
-
* @type {
|
|
42
|
+
* @type {Clock}
|
|
44
43
|
*/
|
|
45
44
|
this.defaultClock = new Clock();
|
|
46
45
|
|
|
47
46
|
/**
|
|
48
47
|
* Custom timers.
|
|
49
48
|
* @protected
|
|
50
|
-
* @type{
|
|
49
|
+
* @type{Clock[]}
|
|
51
50
|
*/
|
|
52
51
|
this._clocks = [];
|
|
53
52
|
|
|
@@ -83,7 +82,7 @@ class Handler {
|
|
|
83
82
|
/**
|
|
84
83
|
* Current active shader program controller.
|
|
85
84
|
* @public
|
|
86
|
-
* @type {
|
|
85
|
+
* @type {ProgramController}
|
|
87
86
|
*/
|
|
88
87
|
this.activeProgram = null;
|
|
89
88
|
|
|
@@ -100,7 +99,7 @@ class Handler {
|
|
|
100
99
|
}
|
|
101
100
|
this._params.width = w || 256;
|
|
102
101
|
|
|
103
|
-
|
|
102
|
+
let h = this._params.height;
|
|
104
103
|
if (h > MAX_SIZE) {
|
|
105
104
|
h = MAX_SIZE;
|
|
106
105
|
}
|
|
@@ -150,7 +149,7 @@ class Handler {
|
|
|
150
149
|
* @returns {Object} -
|
|
151
150
|
*/
|
|
152
151
|
static getExtension(gl, name) {
|
|
153
|
-
|
|
152
|
+
let i, ext;
|
|
154
153
|
for (i in vendorPrefixes) {
|
|
155
154
|
ext = gl.getExtension(vendorPrefixes[i] + name);
|
|
156
155
|
if (ext) {
|
|
@@ -168,12 +167,13 @@ class Handler {
|
|
|
168
167
|
*/
|
|
169
168
|
static getContext(canvas, contextAttributes) {
|
|
170
169
|
const CONTEXT_TYPE = ["webgl2", "webgl"];
|
|
171
|
-
|
|
170
|
+
let ctx = null;
|
|
172
171
|
|
|
173
172
|
try {
|
|
174
173
|
for (let i = 0; i < CONTEXT_TYPE.length; i++) {
|
|
175
174
|
ctx = canvas.getContext(CONTEXT_TYPE[i], contextAttributes);
|
|
176
175
|
if (ctx) {
|
|
176
|
+
console.log(CONTEXT_TYPE[i]);
|
|
177
177
|
ctx.type = CONTEXT_TYPE[i];
|
|
178
178
|
break;
|
|
179
179
|
}
|
|
@@ -198,26 +198,6 @@ class Handler {
|
|
|
198
198
|
callback && (this._frameCallback = callback);
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
/**
|
|
202
|
-
* Creates NEAREST filter texture.
|
|
203
|
-
* @public
|
|
204
|
-
* @param {Object} image - Image or Canvas object.
|
|
205
|
-
* @returns {Object} - WebGL texture object.
|
|
206
|
-
*/
|
|
207
|
-
createTexture_n(image) {
|
|
208
|
-
var gl = this.gl;
|
|
209
|
-
var texture = gl.createTexture();
|
|
210
|
-
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
211
|
-
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
|
|
212
|
-
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
|
|
213
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
|
|
214
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
|
|
215
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
216
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
217
|
-
gl.bindTexture(gl.TEXTURE_2D, null);
|
|
218
|
-
return texture;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
201
|
/**
|
|
222
202
|
* Creates empty texture.
|
|
223
203
|
* @public
|
|
@@ -239,8 +219,8 @@ class Handler {
|
|
|
239
219
|
type = "UNSIGNED_BYTE",
|
|
240
220
|
level = 0
|
|
241
221
|
) {
|
|
242
|
-
|
|
243
|
-
|
|
222
|
+
let gl = this.gl;
|
|
223
|
+
let texture = gl.createTexture();
|
|
244
224
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
245
225
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
|
|
246
226
|
|
|
@@ -315,8 +295,8 @@ class Handler {
|
|
|
315
295
|
* @returns {Object} - WebGL texture object.
|
|
316
296
|
*/
|
|
317
297
|
createEmptyTexture_n(width, height) {
|
|
318
|
-
|
|
319
|
-
|
|
298
|
+
let gl = this.gl;
|
|
299
|
+
let texture = gl.createTexture();
|
|
320
300
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
321
301
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
|
|
322
302
|
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
|
@@ -336,8 +316,8 @@ class Handler {
|
|
|
336
316
|
* @returns {Object} - WebGL texture object.
|
|
337
317
|
*/
|
|
338
318
|
createEmptyTexture_l(width, height) {
|
|
339
|
-
|
|
340
|
-
|
|
319
|
+
let gl = this.gl;
|
|
320
|
+
let texture = gl.createTexture();
|
|
341
321
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
342
322
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
|
|
343
323
|
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
|
@@ -350,15 +330,35 @@ class Handler {
|
|
|
350
330
|
}
|
|
351
331
|
|
|
352
332
|
/**
|
|
353
|
-
* Creates
|
|
333
|
+
* Creates NEAREST filter texture.
|
|
354
334
|
* @public
|
|
355
335
|
* @param {Object} image - Image or Canvas object.
|
|
356
336
|
* @returns {Object} - WebGL texture object.
|
|
357
337
|
*/
|
|
358
|
-
|
|
359
|
-
var gl =
|
|
338
|
+
static createTexture_n(handler, image) {
|
|
339
|
+
var gl = handler.gl;
|
|
360
340
|
var texture = gl.createTexture();
|
|
361
341
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
342
|
+
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
|
|
343
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
|
|
344
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
|
|
345
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
|
|
346
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
347
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
348
|
+
gl.bindTexture(gl.TEXTURE_2D, null);
|
|
349
|
+
return texture;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Creates LINEAR filter texture.
|
|
354
|
+
* @public
|
|
355
|
+
* @param {Object} image - Image or Canvas object.
|
|
356
|
+
* @returns {Object} - WebGL texture object.
|
|
357
|
+
*/
|
|
358
|
+
static createTexture_l(handler, image) {
|
|
359
|
+
let gl = handler.gl;
|
|
360
|
+
let texture = gl.createTexture();
|
|
361
|
+
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
362
362
|
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
|
|
363
363
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
|
|
364
364
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
|
|
@@ -374,9 +374,9 @@ class Handler {
|
|
|
374
374
|
* @param {Object} image - Image or Canvas object.
|
|
375
375
|
* @returns {Object} - WebGL texture object.
|
|
376
376
|
*/
|
|
377
|
-
createTexture_mm(image) {
|
|
378
|
-
|
|
379
|
-
|
|
377
|
+
static createTexture_mm(handler, image) {
|
|
378
|
+
let gl = handler.gl;
|
|
379
|
+
let texture = gl.createTexture();
|
|
380
380
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
381
381
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
|
|
382
382
|
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
|
|
@@ -394,9 +394,9 @@ class Handler {
|
|
|
394
394
|
* @param {Object} image - Image or Canvas object.
|
|
395
395
|
* @returns {Object} - WebGL texture object.
|
|
396
396
|
*/
|
|
397
|
-
createTexture_a(image) {
|
|
398
|
-
|
|
399
|
-
|
|
397
|
+
static createTexture_a(handler, image) {
|
|
398
|
+
let gl = handler.gl;
|
|
399
|
+
let texture = gl.createTexture();
|
|
400
400
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
401
401
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
|
|
402
402
|
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
|
|
@@ -404,8 +404,8 @@ class Handler {
|
|
|
404
404
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
|
|
405
405
|
gl.texParameterf(
|
|
406
406
|
gl.TEXTURE_2D,
|
|
407
|
-
|
|
408
|
-
|
|
407
|
+
handler.extensions.EXT_texture_filter_anisotropic.TEXTURE_MAX_ANISOTROPY_EXT,
|
|
408
|
+
handler._params.anisotropy
|
|
409
409
|
);
|
|
410
410
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
411
411
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
@@ -420,7 +420,23 @@ class Handler {
|
|
|
420
420
|
* @returns {Object} - WebGL texture object.
|
|
421
421
|
*/
|
|
422
422
|
createTexture(image) {
|
|
423
|
-
return
|
|
423
|
+
return Handler.createTexture_a(this, image);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
createTexture_n(image) {
|
|
427
|
+
return Handler.createTexture_n(this, image);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
createTexture_l(image) {
|
|
431
|
+
return Handler.createTexture_l(this, image);
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
createTexture_mm(image) {
|
|
435
|
+
return Handler.createTexture_mm(this, image);
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
createTexture_a(image) {
|
|
439
|
+
return Handler.createTexture_a(this, image);
|
|
424
440
|
}
|
|
425
441
|
|
|
426
442
|
/**
|
|
@@ -436,15 +452,15 @@ class Handler {
|
|
|
436
452
|
* @returns {Object} - WebGL texture object.
|
|
437
453
|
*/
|
|
438
454
|
loadCubeMapTexture(params) {
|
|
439
|
-
|
|
440
|
-
|
|
455
|
+
let gl = this.gl;
|
|
456
|
+
let texture = gl.createTexture();
|
|
441
457
|
gl.bindTexture(gl.TEXTURE_CUBE_MAP, texture);
|
|
442
458
|
gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
443
459
|
gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
444
460
|
gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
|
|
445
461
|
gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
|
|
446
462
|
|
|
447
|
-
|
|
463
|
+
let faces = [
|
|
448
464
|
[params.px, gl.TEXTURE_CUBE_MAP_POSITIVE_X],
|
|
449
465
|
[params.nx, gl.TEXTURE_CUBE_MAP_NEGATIVE_X],
|
|
450
466
|
[params.py, gl.TEXTURE_CUBE_MAP_POSITIVE_Y],
|
|
@@ -453,9 +469,9 @@ class Handler {
|
|
|
453
469
|
[params.nz, gl.TEXTURE_CUBE_MAP_NEGATIVE_Z]
|
|
454
470
|
];
|
|
455
471
|
|
|
456
|
-
|
|
472
|
+
let imageCanvas = new ImageCanvas();
|
|
457
473
|
imageCanvas.fillEmpty();
|
|
458
|
-
|
|
474
|
+
let emptyImage = imageCanvas.getImage();
|
|
459
475
|
|
|
460
476
|
for (let i = 0; i < faces.length; i++) {
|
|
461
477
|
let face = faces[i][1];
|
|
@@ -483,13 +499,13 @@ class Handler {
|
|
|
483
499
|
/**
|
|
484
500
|
* Adds shader program to the handler.
|
|
485
501
|
* @public
|
|
486
|
-
* @param {
|
|
502
|
+
* @param {Program} program - Shader program.
|
|
487
503
|
* @param {boolean} [notActivate] - If it's true program will not compile.
|
|
488
|
-
* @return {
|
|
504
|
+
* @return {Program} -
|
|
489
505
|
*/
|
|
490
506
|
addProgram(program, notActivate) {
|
|
491
507
|
if (!this.programs[program.name]) {
|
|
492
|
-
|
|
508
|
+
let sc = new ProgramController(this, program);
|
|
493
509
|
this.programs[program.name] = sc;
|
|
494
510
|
this._initProgramController(sc);
|
|
495
511
|
if (notActivate) {
|
|
@@ -515,10 +531,10 @@ class Handler {
|
|
|
515
531
|
/**
|
|
516
532
|
* Adds shader programs to the handler.
|
|
517
533
|
* @public
|
|
518
|
-
* @param {Array.<
|
|
534
|
+
* @param {Array.<Program>} programsArr - Shader program array.
|
|
519
535
|
*/
|
|
520
536
|
addPrograms(programsArr) {
|
|
521
|
-
for (
|
|
537
|
+
for (let i = 0; i < programsArr.length; i++) {
|
|
522
538
|
this.addProgram(programsArr[i]);
|
|
523
539
|
}
|
|
524
540
|
}
|
|
@@ -526,7 +542,7 @@ class Handler {
|
|
|
526
542
|
/**
|
|
527
543
|
* Used in addProgram
|
|
528
544
|
* @private
|
|
529
|
-
* @param {
|
|
545
|
+
* @param {ProgramController} sc - Program controller
|
|
530
546
|
*/
|
|
531
547
|
_initProgramController(sc) {
|
|
532
548
|
if (this._initialized) {
|
|
@@ -547,7 +563,7 @@ class Handler {
|
|
|
547
563
|
* @private
|
|
548
564
|
*/
|
|
549
565
|
_initPrograms() {
|
|
550
|
-
for (
|
|
566
|
+
for (let p in this.programs) {
|
|
551
567
|
this._initProgramController(this.programs[p]);
|
|
552
568
|
}
|
|
553
569
|
}
|
|
@@ -561,7 +577,7 @@ class Handler {
|
|
|
561
577
|
*/
|
|
562
578
|
initializeExtension(extensionStr, showLog) {
|
|
563
579
|
if (!(this.extensions && this.extensions[extensionStr])) {
|
|
564
|
-
|
|
580
|
+
let ext = Handler.getExtension(this.gl, extensionStr);
|
|
565
581
|
if (ext) {
|
|
566
582
|
this.extensions[extensionStr] = ext;
|
|
567
583
|
} else if (showLog) {
|
|
@@ -578,7 +594,6 @@ class Handler {
|
|
|
578
594
|
* @public
|
|
579
595
|
*/
|
|
580
596
|
initialize() {
|
|
581
|
-
|
|
582
597
|
if (this._id) {
|
|
583
598
|
this.canvas = document.getElementById(this._id);
|
|
584
599
|
} else {
|
|
@@ -603,7 +618,7 @@ class Handler {
|
|
|
603
618
|
this._params.extensions.push("OES_texture_float_linear");
|
|
604
619
|
}
|
|
605
620
|
|
|
606
|
-
|
|
621
|
+
let i = this._params.extensions.length;
|
|
607
622
|
while (i--) {
|
|
608
623
|
this.initializeExtension(this._params.extensions[i], true);
|
|
609
624
|
}
|
|
@@ -631,7 +646,7 @@ class Handler {
|
|
|
631
646
|
this.gl.cullFace(this.gl.BACK);
|
|
632
647
|
this.activateFaceCulling();
|
|
633
648
|
this.deactivateBlending();
|
|
634
|
-
|
|
649
|
+
let that = this;
|
|
635
650
|
this.createDefaultTexture({ color: "rgba(0,0,0,0.0)" }, function (t) {
|
|
636
651
|
that.transparentTexture = t;
|
|
637
652
|
});
|
|
@@ -695,7 +710,7 @@ class Handler {
|
|
|
695
710
|
* @return {Object} -
|
|
696
711
|
*/
|
|
697
712
|
createStreamArrayBuffer(itemSize, numItems, usage, bites = 4) {
|
|
698
|
-
|
|
713
|
+
let buffer = this.gl.createBuffer();
|
|
699
714
|
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
|
|
700
715
|
this.gl.bufferData(
|
|
701
716
|
this.gl.ARRAY_BUFFER,
|
|
@@ -735,7 +750,7 @@ class Handler {
|
|
|
735
750
|
* @return {Object} -
|
|
736
751
|
*/
|
|
737
752
|
createArrayBuffer(array, itemSize, numItems, usage) {
|
|
738
|
-
|
|
753
|
+
let buffer = this.gl.createBuffer();
|
|
739
754
|
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
|
|
740
755
|
this.gl.bufferData(this.gl.ARRAY_BUFFER, array, usage || this.gl.STATIC_DRAW);
|
|
741
756
|
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
|
|
@@ -744,6 +759,25 @@ class Handler {
|
|
|
744
759
|
return buffer;
|
|
745
760
|
}
|
|
746
761
|
|
|
762
|
+
/**
|
|
763
|
+
* Creates ARRAY buffer specific length.
|
|
764
|
+
* @public
|
|
765
|
+
* @param {Array.<number>} array - Input array.
|
|
766
|
+
* @param {number} itemSize - Array item size.
|
|
767
|
+
* @param {number} numItems - Items quantity.
|
|
768
|
+
* @param {number} [usage=STATIC_DRAW] - Parameter of the bufferData call can be one of STATIC_DRAW, DYNAMIC_DRAW, or STREAM_DRAW.
|
|
769
|
+
* @return {Object} -
|
|
770
|
+
*/
|
|
771
|
+
createArrayBufferLength(size, usage) {
|
|
772
|
+
let buffer = this.gl.createBuffer();
|
|
773
|
+
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
|
|
774
|
+
this.gl.bufferData(this.gl.ARRAY_BUFFER, size, usage || this.gl.STATIC_DRAW);
|
|
775
|
+
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
|
|
776
|
+
buffer.itemSize = 1;
|
|
777
|
+
buffer.numItems = size;
|
|
778
|
+
return buffer;
|
|
779
|
+
}
|
|
780
|
+
|
|
747
781
|
/**
|
|
748
782
|
* Creates ELEMENT ARRAY buffer.
|
|
749
783
|
* @public
|
|
@@ -754,7 +788,7 @@ class Handler {
|
|
|
754
788
|
* @return {Object} -
|
|
755
789
|
*/
|
|
756
790
|
createElementArrayBuffer(array, itemSize, numItems, usage) {
|
|
757
|
-
|
|
791
|
+
let buffer = this.gl.createBuffer();
|
|
758
792
|
this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, buffer);
|
|
759
793
|
this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, array, usage || this.gl.STATIC_DRAW);
|
|
760
794
|
this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, null);
|
|
@@ -770,7 +804,6 @@ class Handler {
|
|
|
770
804
|
* @param {number} h - Canvas height.
|
|
771
805
|
*/
|
|
772
806
|
setSize(w, h) {
|
|
773
|
-
|
|
774
807
|
if (w > MAX_SIZE) {
|
|
775
808
|
w = MAX_SIZE;
|
|
776
809
|
}
|
|
@@ -822,7 +855,7 @@ class Handler {
|
|
|
822
855
|
* @returns {number} -
|
|
823
856
|
*/
|
|
824
857
|
getCenter() {
|
|
825
|
-
|
|
858
|
+
let c = this.canvas;
|
|
826
859
|
return new Vec2(Math.round(c.width * 0.5), Math.round(c.height * 0.5));
|
|
827
860
|
}
|
|
828
861
|
|
|
@@ -833,18 +866,18 @@ class Handler {
|
|
|
833
866
|
*/
|
|
834
867
|
drawFrame() {
|
|
835
868
|
/** Calculating frame time */
|
|
836
|
-
|
|
869
|
+
let now = window.performance.now();
|
|
837
870
|
this.deltaTime = now - this._lastAnimationFrameTime;
|
|
838
871
|
this._lastAnimationFrameTime = now;
|
|
839
872
|
|
|
840
873
|
this.defaultClock._tick(this.deltaTime);
|
|
841
874
|
|
|
842
|
-
for (
|
|
875
|
+
for (let i = 0; i < this._clocks.length; i++) {
|
|
843
876
|
this._clocks[i]._tick(this.deltaTime);
|
|
844
877
|
}
|
|
845
878
|
|
|
846
879
|
/** Canvas resize checking */
|
|
847
|
-
|
|
880
|
+
let canvas = this.canvas;
|
|
848
881
|
if (canvas.clientWidth !== canvas.width || canvas.clientHeight !== canvas.height) {
|
|
849
882
|
this.setSize(canvas.clientWidth, canvas.clientHeight);
|
|
850
883
|
}
|
|
@@ -858,7 +891,7 @@ class Handler {
|
|
|
858
891
|
* @public
|
|
859
892
|
*/
|
|
860
893
|
clearFrame() {
|
|
861
|
-
|
|
894
|
+
let gl = this.gl;
|
|
862
895
|
this.gl.clearColor(0.0, 0.0, 0.0, 1.0);
|
|
863
896
|
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
864
897
|
}
|
|
@@ -900,17 +933,17 @@ class Handler {
|
|
|
900
933
|
* @param {callback} [success] - Creation callback
|
|
901
934
|
*/
|
|
902
935
|
createDefaultTexture(params, success) {
|
|
903
|
-
|
|
904
|
-
|
|
936
|
+
let imgCnv;
|
|
937
|
+
let texture;
|
|
905
938
|
if (params && params.color) {
|
|
906
939
|
imgCnv = new ImageCanvas(2, 2);
|
|
907
940
|
imgCnv.fillColor(params.color);
|
|
908
|
-
texture =
|
|
941
|
+
texture = Handler.createTexture_n(this, imgCnv._canvas);
|
|
909
942
|
texture.default = true;
|
|
910
943
|
success(texture);
|
|
911
944
|
} else if (params && params.url) {
|
|
912
|
-
|
|
913
|
-
|
|
945
|
+
let img = new Image();
|
|
946
|
+
let that = this;
|
|
914
947
|
img.onload = function () {
|
|
915
948
|
texture = that.createTexture(this);
|
|
916
949
|
texture.default = true;
|
|
@@ -920,7 +953,7 @@ class Handler {
|
|
|
920
953
|
} else {
|
|
921
954
|
imgCnv = new ImageCanvas(2, 2);
|
|
922
955
|
imgCnv.fillColor("#C5C5C5");
|
|
923
|
-
texture =
|
|
956
|
+
texture = Handler.createTexture_n(this, imgCnv._canvas);
|
|
924
957
|
texture.default = true;
|
|
925
958
|
success(texture);
|
|
926
959
|
}
|
|
@@ -930,11 +963,11 @@ class Handler {
|
|
|
930
963
|
* @public
|
|
931
964
|
*/
|
|
932
965
|
destroy() {
|
|
933
|
-
|
|
966
|
+
let gl = this.gl;
|
|
934
967
|
|
|
935
968
|
this.stop();
|
|
936
969
|
|
|
937
|
-
for (
|
|
970
|
+
for (let p in this.programs) {
|
|
938
971
|
this.removeProgram(p);
|
|
939
972
|
}
|
|
940
973
|
|
|
@@ -951,8 +984,8 @@ class Handler {
|
|
|
951
984
|
this.canvas.height = 1;
|
|
952
985
|
this.canvas = null;
|
|
953
986
|
|
|
954
|
-
|
|
955
|
-
|
|
987
|
+
let numAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);
|
|
988
|
+
let tmp = gl.createBuffer();
|
|
956
989
|
gl.bindBuffer(gl.ARRAY_BUFFER, tmp);
|
|
957
990
|
for (let ii = 0; ii < numAttribs; ++ii) {
|
|
958
991
|
gl.disableVertexAttribArray(ii);
|
|
@@ -961,7 +994,7 @@ class Handler {
|
|
|
961
994
|
}
|
|
962
995
|
gl.deleteBuffer(tmp);
|
|
963
996
|
|
|
964
|
-
|
|
997
|
+
let numTextureUnits = gl.getParameter(gl.MAX_TEXTlURE_IMAGE_UNITS);
|
|
965
998
|
for (let ii = 0; ii < numTextureUnits; ++ii) {
|
|
966
999
|
gl.activeTexture(gl.TEXTURE0 + ii);
|
|
967
1000
|
gl.bindTexture(gl.TEXTURE_CUBE_MAP, null);
|
|
@@ -999,15 +1032,15 @@ class Handler {
|
|
|
999
1032
|
}
|
|
1000
1033
|
|
|
1001
1034
|
addClocks(clockArr) {
|
|
1002
|
-
for (
|
|
1035
|
+
for (let i = 0; i < clockArr.length; i++) {
|
|
1003
1036
|
this.addClock(clockArr[i]);
|
|
1004
1037
|
}
|
|
1005
1038
|
}
|
|
1006
1039
|
|
|
1007
1040
|
removeClock(clock) {
|
|
1008
1041
|
if (clock.__handler) {
|
|
1009
|
-
|
|
1010
|
-
|
|
1042
|
+
let c = this._clocks;
|
|
1043
|
+
let i = c.length;
|
|
1011
1044
|
while (i--) {
|
|
1012
1045
|
if (c[i].equal(clock)) {
|
|
1013
1046
|
clock.__handler = null;
|
|
@@ -1019,4 +1052,11 @@ class Handler {
|
|
|
1019
1052
|
}
|
|
1020
1053
|
}
|
|
1021
1054
|
|
|
1055
|
+
export const createTexture = {
|
|
1056
|
+
NEAREST: Handler.createTexture_n,
|
|
1057
|
+
LINEAR: Handler.createTexture_l,
|
|
1058
|
+
MIPMAP: Handler.createTexture_mm,
|
|
1059
|
+
ANISOTROPIC: Handler.createTexture_a
|
|
1060
|
+
};
|
|
1061
|
+
|
|
1022
1062
|
export { Handler };
|