@openglobus/og 0.11.5 → 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 +5 -7
- package/src/og/Clock.js +6 -10
- package/src/og/Events.js +5 -7
- package/src/og/Extent.js +73 -32
- package/src/og/ImageCanvas.js +18 -15
- package/src/og/LonLat.js +13 -10
- package/src/og/Popup.js +18 -17
- package/src/og/QueueArray.js +3 -4
- package/src/og/Rectangle.js +4 -6
- package/src/og/Stack.js +2 -4
- package/src/og/ajax.js +20 -14
- package/src/og/astro/earth.js +21 -15
- package/src/og/bv/Box.js +2 -3
- package/src/og/bv/Sphere.js +10 -7
- package/src/og/camera/Frustum.js +19 -12
- package/src/og/camera/PlanetCamera.js +0 -1
- package/src/og/control/CompassButton.js +1 -2
- package/src/og/control/Control.js +7 -9
- package/src/og/control/DebugInfo.js +0 -1
- package/src/og/control/KeyboardNavigation.js +9 -9
- package/src/og/control/LayerSwitcher.js +21 -20
- package/src/og/control/SegmentBoundVisualization.js +5 -6
- package/src/og/control/ShowFps.js +12 -7
- package/src/og/control/SimpleNavigation.js +5 -7
- package/src/og/control/Sun.js +22 -12
- package/src/og/control/ToggleWireframe.js +3 -3
- package/src/og/control/TouchNavigation.js +43 -32
- package/src/og/control/ZoomControl.js +40 -24
- package/src/og/ellipsoid/Ellipsoid.js +148 -56
- package/src/og/ellipsoid/wgs84.js +3 -3
- package/src/og/entity/BaseBillboard.js +65 -14
- package/src/og/entity/Billboard.js +9 -5
- package/src/og/entity/BillboardHandler.js +310 -64
- package/src/og/entity/Entity.js +39 -1
- package/src/og/entity/EntityCollection.js +47 -24
- package/src/og/entity/GeoObject.js +228 -0
- package/src/og/entity/GeoObjectHandler.js +910 -0
- package/src/og/entity/GeometryHandler.js +595 -123
- package/src/og/entity/Label.js +53 -18
- package/src/og/entity/LabelHandler.js +42 -244
- package/src/og/entity/LabelWorker.js +213 -0
- package/src/og/entity/Object3d.js +504 -0
- package/src/og/entity/PointCloud.js +76 -28
- package/src/og/entity/PointCloudHandler.js +5 -5
- package/src/og/entity/Ray.js +49 -16
- package/src/og/entity/Strip.js +72 -43
- package/src/og/entity/StripHandler.js +23 -23
- package/src/og/layer/BaseGeoImage.js +50 -19
- package/src/og/layer/CanvasTiles.js +16 -16
- package/src/og/layer/GeoImage.js +6 -6
- package/src/og/layer/KML.js +55 -33
- package/src/og/layer/Layer.js +3 -3
- package/src/og/layer/Vector.js +94 -48
- package/src/og/layer/WMS.js +33 -16
- package/src/og/light/LightSource.js +19 -12
- package/src/og/math/Mat3.js +24 -12
- package/src/og/math/Mat4.js +603 -603
- package/src/og/math/Plane.js +19 -18
- package/src/og/math/Ray.js +17 -12
- package/src/og/math/Vec2.js +24 -14
- package/src/og/math/Vec3.js +60 -30
- package/src/og/math/coder.js +7 -7
- package/src/og/proj/EPSG3857.js +3 -3
- package/src/og/proj/EPSG4326.js +3 -3
- package/src/og/proj/Proj.js +2 -4
- package/src/og/quadTree/Node.js +31 -17
- package/src/og/renderer/Renderer.js +23 -6
- package/src/og/renderer/RendererEvents.js +1 -1
- package/src/og/scene/BaseNode.js +2 -3
- package/src/og/scene/Planet.js +2 -2
- package/src/og/scene/RenderNode.js +15 -8
- package/src/og/shaders/geoObject.js +211 -0
- package/src/og/shaders/pointCloud.js +41 -41
- package/src/og/shaders/shape.js +12 -18
- package/src/og/shaders/skybox.js +36 -36
- package/src/og/shapes/BaseShape.js +107 -35
- package/src/og/shapes/Icosphere.js +25 -10
- package/src/og/shapes/Sphere.js +8 -11
- package/src/og/utils/TextureAtlas.js +16 -18
- package/src/og/utils/shared.js +1 -1
- package/src/og/webgl/Handler.js +68 -49
- package/src/og/webgl/Multisample.js +44 -16
- package/src/og/webgl/Program.js +78 -33
- package/src/og/webgl/callbacks.js +3 -3
- package/types/Deferred.d.ts +1 -1
- package/types/Events.d.ts +2 -2
- package/types/Extent.d.ts +1 -1
- package/types/Rectangle.d.ts +1 -1
- package/types/ajax.d.ts +1 -1
- package/types/bv/Box.d.ts +1 -1
- package/types/bv/Sphere.d.ts +1 -1
- package/types/camera/Camera.d.ts +5 -5
- package/types/camera/Frustum.d.ts +6 -6
- package/types/camera/PlanetCamera.d.ts +8 -8
- package/types/control/Control.d.ts +1 -1
- package/types/control/EarthCoordinates.d.ts +1 -1
- package/types/control/Sun.d.ts +1 -1
- package/types/entity/BaseBillboard.d.ts +15 -8
- package/types/entity/Entity.d.ts +24 -9
- package/types/entity/EntityCollection.d.ts +15 -9
- package/types/entity/GeoObject.d.ts +111 -0
- package/types/entity/GeoObjectHandler.d.ts +77 -0
- package/types/entity/Geometry.d.ts +1 -1
- package/types/entity/GeometryHandler.d.ts +1 -1
- package/types/entity/Label.d.ts +3 -3
- package/types/entity/LabelHandler.d.ts +2 -0
- package/types/entity/LabelWorker.d.ts +9 -0
- package/types/entity/PointCloud.d.ts +1 -1
- package/types/entity/Polyline.d.ts +5 -5
- package/types/entity/Ray.d.ts +1 -1
- package/types/entity/Strip.d.ts +1 -1
- package/types/layer/BaseGeoImage.d.ts +3 -3
- package/types/layer/CanvasTiles.d.ts +5 -5
- package/types/layer/GeoImage.d.ts +1 -1
- package/types/layer/GeoVideo.d.ts +1 -1
- package/types/layer/Layer.d.ts +5 -5
- package/types/layer/Vector.d.ts +9 -9
- package/types/layer/XYZ.d.ts +3 -3
- package/types/light/LightSource.d.ts +7 -7
- package/types/math/Plane.d.ts +1 -1
- package/types/math/Ray.d.ts +1 -1
- package/types/math/Vec2.d.ts +34 -34
- package/types/math/Vec3.d.ts +1 -1
- package/types/math/Vec4.d.ts +1 -1
- package/types/math/coder.d.ts +1 -1
- package/types/math.d.ts +1 -1
- package/types/proj/Proj.d.ts +2 -2
- package/types/quadTree/Node.d.ts +1 -1
- package/types/renderer/Renderer.d.ts +12 -10
- package/types/renderer/RendererEvents.d.ts +1 -1
- package/types/scene/BaseNode.d.ts +4 -4
- package/types/scene/Planet.d.ts +40 -40
- package/types/scene/RenderNode.d.ts +9 -9
- package/types/segment/Segment.d.ts +9 -9
- package/types/shaders/geoObject.d.ts +3 -0
- package/types/shapes/BaseShape.d.ts +5 -5
- package/types/terrain/EmptyTerrain.d.ts +2 -2
- package/types/terrain/GlobusTerrain.d.ts +4 -4
- package/types/utils/TextureAtlas.d.ts +4 -4
- package/types/utils/shared.d.ts +9 -9
- package/types/webgl/Framebuffer.d.ts +1 -1
- package/types/webgl/Handler.d.ts +16 -7
- package/types/webgl/Multisample.d.ts +2 -2
- package/types/webgl/Program.d.ts +6 -0
- package/types/webgl/ProgramController.d.ts +1 -1
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 {
|
|
@@ -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
|
}
|
|
@@ -219,8 +219,8 @@ class Handler {
|
|
|
219
219
|
type = "UNSIGNED_BYTE",
|
|
220
220
|
level = 0
|
|
221
221
|
) {
|
|
222
|
-
|
|
223
|
-
|
|
222
|
+
let gl = this.gl;
|
|
223
|
+
let texture = gl.createTexture();
|
|
224
224
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
225
225
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
|
|
226
226
|
|
|
@@ -295,8 +295,8 @@ class Handler {
|
|
|
295
295
|
* @returns {Object} - WebGL texture object.
|
|
296
296
|
*/
|
|
297
297
|
createEmptyTexture_n(width, height) {
|
|
298
|
-
|
|
299
|
-
|
|
298
|
+
let gl = this.gl;
|
|
299
|
+
let texture = gl.createTexture();
|
|
300
300
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
301
301
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
|
|
302
302
|
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
|
@@ -316,8 +316,8 @@ class Handler {
|
|
|
316
316
|
* @returns {Object} - WebGL texture object.
|
|
317
317
|
*/
|
|
318
318
|
createEmptyTexture_l(width, height) {
|
|
319
|
-
|
|
320
|
-
|
|
319
|
+
let gl = this.gl;
|
|
320
|
+
let texture = gl.createTexture();
|
|
321
321
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
322
322
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
|
|
323
323
|
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
|
@@ -356,8 +356,8 @@ class Handler {
|
|
|
356
356
|
* @returns {Object} - WebGL texture object.
|
|
357
357
|
*/
|
|
358
358
|
static createTexture_l(handler, image) {
|
|
359
|
-
|
|
360
|
-
|
|
359
|
+
let gl = handler.gl;
|
|
360
|
+
let texture = gl.createTexture();
|
|
361
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);
|
|
@@ -375,8 +375,8 @@ class Handler {
|
|
|
375
375
|
* @returns {Object} - WebGL texture object.
|
|
376
376
|
*/
|
|
377
377
|
static createTexture_mm(handler, image) {
|
|
378
|
-
|
|
379
|
-
|
|
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);
|
|
@@ -395,8 +395,8 @@ class Handler {
|
|
|
395
395
|
* @returns {Object} - WebGL texture object.
|
|
396
396
|
*/
|
|
397
397
|
static createTexture_a(handler, image) {
|
|
398
|
-
|
|
399
|
-
|
|
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);
|
|
@@ -452,15 +452,15 @@ class Handler {
|
|
|
452
452
|
* @returns {Object} - WebGL texture object.
|
|
453
453
|
*/
|
|
454
454
|
loadCubeMapTexture(params) {
|
|
455
|
-
|
|
456
|
-
|
|
455
|
+
let gl = this.gl;
|
|
456
|
+
let texture = gl.createTexture();
|
|
457
457
|
gl.bindTexture(gl.TEXTURE_CUBE_MAP, texture);
|
|
458
458
|
gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
459
459
|
gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
460
460
|
gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
|
|
461
461
|
gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
|
|
462
462
|
|
|
463
|
-
|
|
463
|
+
let faces = [
|
|
464
464
|
[params.px, gl.TEXTURE_CUBE_MAP_POSITIVE_X],
|
|
465
465
|
[params.nx, gl.TEXTURE_CUBE_MAP_NEGATIVE_X],
|
|
466
466
|
[params.py, gl.TEXTURE_CUBE_MAP_POSITIVE_Y],
|
|
@@ -469,9 +469,9 @@ class Handler {
|
|
|
469
469
|
[params.nz, gl.TEXTURE_CUBE_MAP_NEGATIVE_Z]
|
|
470
470
|
];
|
|
471
471
|
|
|
472
|
-
|
|
472
|
+
let imageCanvas = new ImageCanvas();
|
|
473
473
|
imageCanvas.fillEmpty();
|
|
474
|
-
|
|
474
|
+
let emptyImage = imageCanvas.getImage();
|
|
475
475
|
|
|
476
476
|
for (let i = 0; i < faces.length; i++) {
|
|
477
477
|
let face = faces[i][1];
|
|
@@ -505,7 +505,7 @@ class Handler {
|
|
|
505
505
|
*/
|
|
506
506
|
addProgram(program, notActivate) {
|
|
507
507
|
if (!this.programs[program.name]) {
|
|
508
|
-
|
|
508
|
+
let sc = new ProgramController(this, program);
|
|
509
509
|
this.programs[program.name] = sc;
|
|
510
510
|
this._initProgramController(sc);
|
|
511
511
|
if (notActivate) {
|
|
@@ -534,7 +534,7 @@ class Handler {
|
|
|
534
534
|
* @param {Array.<Program>} programsArr - Shader program array.
|
|
535
535
|
*/
|
|
536
536
|
addPrograms(programsArr) {
|
|
537
|
-
for (
|
|
537
|
+
for (let i = 0; i < programsArr.length; i++) {
|
|
538
538
|
this.addProgram(programsArr[i]);
|
|
539
539
|
}
|
|
540
540
|
}
|
|
@@ -563,7 +563,7 @@ class Handler {
|
|
|
563
563
|
* @private
|
|
564
564
|
*/
|
|
565
565
|
_initPrograms() {
|
|
566
|
-
for (
|
|
566
|
+
for (let p in this.programs) {
|
|
567
567
|
this._initProgramController(this.programs[p]);
|
|
568
568
|
}
|
|
569
569
|
}
|
|
@@ -577,7 +577,7 @@ class Handler {
|
|
|
577
577
|
*/
|
|
578
578
|
initializeExtension(extensionStr, showLog) {
|
|
579
579
|
if (!(this.extensions && this.extensions[extensionStr])) {
|
|
580
|
-
|
|
580
|
+
let ext = Handler.getExtension(this.gl, extensionStr);
|
|
581
581
|
if (ext) {
|
|
582
582
|
this.extensions[extensionStr] = ext;
|
|
583
583
|
} else if (showLog) {
|
|
@@ -618,7 +618,7 @@ class Handler {
|
|
|
618
618
|
this._params.extensions.push("OES_texture_float_linear");
|
|
619
619
|
}
|
|
620
620
|
|
|
621
|
-
|
|
621
|
+
let i = this._params.extensions.length;
|
|
622
622
|
while (i--) {
|
|
623
623
|
this.initializeExtension(this._params.extensions[i], true);
|
|
624
624
|
}
|
|
@@ -646,7 +646,7 @@ class Handler {
|
|
|
646
646
|
this.gl.cullFace(this.gl.BACK);
|
|
647
647
|
this.activateFaceCulling();
|
|
648
648
|
this.deactivateBlending();
|
|
649
|
-
|
|
649
|
+
let that = this;
|
|
650
650
|
this.createDefaultTexture({ color: "rgba(0,0,0,0.0)" }, function (t) {
|
|
651
651
|
that.transparentTexture = t;
|
|
652
652
|
});
|
|
@@ -710,7 +710,7 @@ class Handler {
|
|
|
710
710
|
* @return {Object} -
|
|
711
711
|
*/
|
|
712
712
|
createStreamArrayBuffer(itemSize, numItems, usage, bites = 4) {
|
|
713
|
-
|
|
713
|
+
let buffer = this.gl.createBuffer();
|
|
714
714
|
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
|
|
715
715
|
this.gl.bufferData(
|
|
716
716
|
this.gl.ARRAY_BUFFER,
|
|
@@ -750,7 +750,7 @@ class Handler {
|
|
|
750
750
|
* @return {Object} -
|
|
751
751
|
*/
|
|
752
752
|
createArrayBuffer(array, itemSize, numItems, usage) {
|
|
753
|
-
|
|
753
|
+
let buffer = this.gl.createBuffer();
|
|
754
754
|
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
|
|
755
755
|
this.gl.bufferData(this.gl.ARRAY_BUFFER, array, usage || this.gl.STATIC_DRAW);
|
|
756
756
|
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
|
|
@@ -759,6 +759,25 @@ class Handler {
|
|
|
759
759
|
return buffer;
|
|
760
760
|
}
|
|
761
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
|
+
|
|
762
781
|
/**
|
|
763
782
|
* Creates ELEMENT ARRAY buffer.
|
|
764
783
|
* @public
|
|
@@ -769,7 +788,7 @@ class Handler {
|
|
|
769
788
|
* @return {Object} -
|
|
770
789
|
*/
|
|
771
790
|
createElementArrayBuffer(array, itemSize, numItems, usage) {
|
|
772
|
-
|
|
791
|
+
let buffer = this.gl.createBuffer();
|
|
773
792
|
this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, buffer);
|
|
774
793
|
this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, array, usage || this.gl.STATIC_DRAW);
|
|
775
794
|
this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, null);
|
|
@@ -836,7 +855,7 @@ class Handler {
|
|
|
836
855
|
* @returns {number} -
|
|
837
856
|
*/
|
|
838
857
|
getCenter() {
|
|
839
|
-
|
|
858
|
+
let c = this.canvas;
|
|
840
859
|
return new Vec2(Math.round(c.width * 0.5), Math.round(c.height * 0.5));
|
|
841
860
|
}
|
|
842
861
|
|
|
@@ -847,18 +866,18 @@ class Handler {
|
|
|
847
866
|
*/
|
|
848
867
|
drawFrame() {
|
|
849
868
|
/** Calculating frame time */
|
|
850
|
-
|
|
869
|
+
let now = window.performance.now();
|
|
851
870
|
this.deltaTime = now - this._lastAnimationFrameTime;
|
|
852
871
|
this._lastAnimationFrameTime = now;
|
|
853
872
|
|
|
854
873
|
this.defaultClock._tick(this.deltaTime);
|
|
855
874
|
|
|
856
|
-
for (
|
|
875
|
+
for (let i = 0; i < this._clocks.length; i++) {
|
|
857
876
|
this._clocks[i]._tick(this.deltaTime);
|
|
858
877
|
}
|
|
859
878
|
|
|
860
879
|
/** Canvas resize checking */
|
|
861
|
-
|
|
880
|
+
let canvas = this.canvas;
|
|
862
881
|
if (canvas.clientWidth !== canvas.width || canvas.clientHeight !== canvas.height) {
|
|
863
882
|
this.setSize(canvas.clientWidth, canvas.clientHeight);
|
|
864
883
|
}
|
|
@@ -872,7 +891,7 @@ class Handler {
|
|
|
872
891
|
* @public
|
|
873
892
|
*/
|
|
874
893
|
clearFrame() {
|
|
875
|
-
|
|
894
|
+
let gl = this.gl;
|
|
876
895
|
this.gl.clearColor(0.0, 0.0, 0.0, 1.0);
|
|
877
896
|
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
878
897
|
}
|
|
@@ -914,8 +933,8 @@ class Handler {
|
|
|
914
933
|
* @param {callback} [success] - Creation callback
|
|
915
934
|
*/
|
|
916
935
|
createDefaultTexture(params, success) {
|
|
917
|
-
|
|
918
|
-
|
|
936
|
+
let imgCnv;
|
|
937
|
+
let texture;
|
|
919
938
|
if (params && params.color) {
|
|
920
939
|
imgCnv = new ImageCanvas(2, 2);
|
|
921
940
|
imgCnv.fillColor(params.color);
|
|
@@ -923,8 +942,8 @@ class Handler {
|
|
|
923
942
|
texture.default = true;
|
|
924
943
|
success(texture);
|
|
925
944
|
} else if (params && params.url) {
|
|
926
|
-
|
|
927
|
-
|
|
945
|
+
let img = new Image();
|
|
946
|
+
let that = this;
|
|
928
947
|
img.onload = function () {
|
|
929
948
|
texture = that.createTexture(this);
|
|
930
949
|
texture.default = true;
|
|
@@ -944,11 +963,11 @@ class Handler {
|
|
|
944
963
|
* @public
|
|
945
964
|
*/
|
|
946
965
|
destroy() {
|
|
947
|
-
|
|
966
|
+
let gl = this.gl;
|
|
948
967
|
|
|
949
968
|
this.stop();
|
|
950
969
|
|
|
951
|
-
for (
|
|
970
|
+
for (let p in this.programs) {
|
|
952
971
|
this.removeProgram(p);
|
|
953
972
|
}
|
|
954
973
|
|
|
@@ -965,8 +984,8 @@ class Handler {
|
|
|
965
984
|
this.canvas.height = 1;
|
|
966
985
|
this.canvas = null;
|
|
967
986
|
|
|
968
|
-
|
|
969
|
-
|
|
987
|
+
let numAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);
|
|
988
|
+
let tmp = gl.createBuffer();
|
|
970
989
|
gl.bindBuffer(gl.ARRAY_BUFFER, tmp);
|
|
971
990
|
for (let ii = 0; ii < numAttribs; ++ii) {
|
|
972
991
|
gl.disableVertexAttribArray(ii);
|
|
@@ -975,7 +994,7 @@ class Handler {
|
|
|
975
994
|
}
|
|
976
995
|
gl.deleteBuffer(tmp);
|
|
977
996
|
|
|
978
|
-
|
|
997
|
+
let numTextureUnits = gl.getParameter(gl.MAX_TEXTlURE_IMAGE_UNITS);
|
|
979
998
|
for (let ii = 0; ii < numTextureUnits; ++ii) {
|
|
980
999
|
gl.activeTexture(gl.TEXTURE0 + ii);
|
|
981
1000
|
gl.bindTexture(gl.TEXTURE_CUBE_MAP, null);
|
|
@@ -1013,15 +1032,15 @@ class Handler {
|
|
|
1013
1032
|
}
|
|
1014
1033
|
|
|
1015
1034
|
addClocks(clockArr) {
|
|
1016
|
-
for (
|
|
1035
|
+
for (let i = 0; i < clockArr.length; i++) {
|
|
1017
1036
|
this.addClock(clockArr[i]);
|
|
1018
1037
|
}
|
|
1019
1038
|
}
|
|
1020
1039
|
|
|
1021
1040
|
removeClock(clock) {
|
|
1022
1041
|
if (clock.__handler) {
|
|
1023
|
-
|
|
1024
|
-
|
|
1042
|
+
let c = this._clocks;
|
|
1043
|
+
let i = c.length;
|
|
1025
1044
|
while (i--) {
|
|
1026
1045
|
if (c[i].equal(clock)) {
|
|
1027
1046
|
clock.__handler = null;
|
|
@@ -1037,7 +1056,7 @@ export const createTexture = {
|
|
|
1037
1056
|
NEAREST: Handler.createTexture_n,
|
|
1038
1057
|
LINEAR: Handler.createTexture_l,
|
|
1039
1058
|
MIPMAP: Handler.createTexture_mm,
|
|
1040
|
-
|
|
1059
|
+
ANISOTROPIC: Handler.createTexture_a
|
|
1041
1060
|
};
|
|
1042
1061
|
|
|
1043
1062
|
export { Handler };
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @module og/webgl/Multisample
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
"use strict";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Class represents multisample framebuffer.
|
|
@@ -16,9 +16,7 @@
|
|
|
16
16
|
* @param {Boolean} [options.useDepth] - Using depth buffer during the rendering.
|
|
17
17
|
*/
|
|
18
18
|
export class Multisample {
|
|
19
|
-
|
|
20
19
|
constructor(handler, options) {
|
|
21
|
-
|
|
22
20
|
options = options || {};
|
|
23
21
|
|
|
24
22
|
/**
|
|
@@ -28,7 +26,9 @@ export class Multisample {
|
|
|
28
26
|
*/
|
|
29
27
|
this.handler = handler;
|
|
30
28
|
|
|
31
|
-
this._internalFormat = options.internalFormat
|
|
29
|
+
this._internalFormat = options.internalFormat
|
|
30
|
+
? options.internalFormat.toUpperCase()
|
|
31
|
+
: "RGBA8";
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* Framebuffer object.
|
|
@@ -62,10 +62,11 @@ export class Multisample {
|
|
|
62
62
|
|
|
63
63
|
this._useDepth = options.useDepth != undefined ? options.useDepth : true;
|
|
64
64
|
|
|
65
|
-
this._depthComponent =
|
|
65
|
+
this._depthComponent =
|
|
66
|
+
options.depthComponent != undefined ? options.depthComponent : "DEPTH_COMPONENT16";
|
|
66
67
|
|
|
67
68
|
/**
|
|
68
|
-
* Framebuffer activity.
|
|
69
|
+
* Framebuffer activity.
|
|
69
70
|
* @private
|
|
70
71
|
* @type {boolean}
|
|
71
72
|
*/
|
|
@@ -102,7 +103,6 @@ export class Multisample {
|
|
|
102
103
|
* @private
|
|
103
104
|
*/
|
|
104
105
|
init() {
|
|
105
|
-
|
|
106
106
|
var gl = this.handler.gl;
|
|
107
107
|
|
|
108
108
|
this._glFilter = gl[this._filter];
|
|
@@ -115,8 +115,19 @@ export class Multisample {
|
|
|
115
115
|
for (var i = 0; i < this.renderbuffers.length; i++) {
|
|
116
116
|
let rb = gl.createRenderbuffer();
|
|
117
117
|
gl.bindRenderbuffer(gl.RENDERBUFFER, rb);
|
|
118
|
-
gl.renderbufferStorageMultisample(
|
|
119
|
-
|
|
118
|
+
gl.renderbufferStorageMultisample(
|
|
119
|
+
gl.RENDERBUFFER,
|
|
120
|
+
this._msaa,
|
|
121
|
+
gl[this._internalFormat],
|
|
122
|
+
this._width,
|
|
123
|
+
this._height
|
|
124
|
+
);
|
|
125
|
+
gl.framebufferRenderbuffer(
|
|
126
|
+
gl.FRAMEBUFFER,
|
|
127
|
+
gl.COLOR_ATTACHMENT0 + i,
|
|
128
|
+
gl.RENDERBUFFER,
|
|
129
|
+
rb
|
|
130
|
+
);
|
|
120
131
|
colorAttachments.push(gl.COLOR_ATTACHMENT0 + i);
|
|
121
132
|
this.renderbuffers[i] = rb;
|
|
122
133
|
gl.bindRenderbuffer(gl.RENDERBUFFER, null);
|
|
@@ -126,8 +137,19 @@ export class Multisample {
|
|
|
126
137
|
if (this._useDepth) {
|
|
127
138
|
this._depthRenderbuffer = gl.createRenderbuffer();
|
|
128
139
|
gl.bindRenderbuffer(gl.RENDERBUFFER, this._depthRenderbuffer);
|
|
129
|
-
gl.renderbufferStorageMultisample(
|
|
130
|
-
|
|
140
|
+
gl.renderbufferStorageMultisample(
|
|
141
|
+
gl.RENDERBUFFER,
|
|
142
|
+
this._msaa,
|
|
143
|
+
gl[this._depthComponent],
|
|
144
|
+
this._width,
|
|
145
|
+
this._height
|
|
146
|
+
);
|
|
147
|
+
gl.framebufferRenderbuffer(
|
|
148
|
+
gl.FRAMEBUFFER,
|
|
149
|
+
gl.DEPTH_ATTACHMENT,
|
|
150
|
+
gl.RENDERBUFFER,
|
|
151
|
+
this._depthRenderbuffer
|
|
152
|
+
);
|
|
131
153
|
gl.bindRenderbuffer(gl.RENDERBUFFER, null);
|
|
132
154
|
}
|
|
133
155
|
|
|
@@ -137,7 +159,6 @@ export class Multisample {
|
|
|
137
159
|
}
|
|
138
160
|
|
|
139
161
|
blitTo(framebuffer, attachmentIndex = 0) {
|
|
140
|
-
|
|
141
162
|
let gl = this.handler.gl;
|
|
142
163
|
|
|
143
164
|
gl.bindFramebuffer(gl.READ_FRAMEBUFFER, this._fbo);
|
|
@@ -147,9 +168,16 @@ export class Multisample {
|
|
|
147
168
|
gl.clearBufferfv(gl.COLOR, 0, [0.0, 0.0, 0.0, 1.0]);
|
|
148
169
|
|
|
149
170
|
gl.blitFramebuffer(
|
|
150
|
-
0,
|
|
151
|
-
0,
|
|
152
|
-
|
|
171
|
+
0,
|
|
172
|
+
0,
|
|
173
|
+
this._width,
|
|
174
|
+
this._height,
|
|
175
|
+
0,
|
|
176
|
+
0,
|
|
177
|
+
framebuffer._width,
|
|
178
|
+
framebuffer._height,
|
|
179
|
+
gl.COLOR_BUFFER_BIT,
|
|
180
|
+
this._glFilter
|
|
153
181
|
);
|
|
154
182
|
|
|
155
183
|
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
@@ -229,4 +257,4 @@ export class Multisample {
|
|
|
229
257
|
gl.viewport(0, 0, h.canvas.width, h.canvas.height);
|
|
230
258
|
}
|
|
231
259
|
}
|
|
232
|
-
}
|
|
260
|
+
}
|