@openglobus/og 0.11.4 → 0.11.8
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/css/og.css +3 -2
- package/package.json +12 -14
- package/src/og/Clock.js +6 -10
- package/src/og/Events.js +5 -7
- package/src/og/Extent.js +73 -32
- package/src/og/Globe.js +8 -5
- package/src/og/ImageCanvas.js +18 -15
- package/src/og/LonLat.js +13 -10
- package/src/og/Popup.js +19 -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 +9 -5
- 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/Lighting.js +74 -64
- package/src/og/control/MouseNavigation.js +21 -18
- package/src/og/control/MouseWheelZoomControl.js +257 -0
- 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/control/index.js +2 -0
- package/src/og/control/visibleExtent/Segment.js +1862 -0
- package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
- package/src/og/control/visibleExtent/drawnode.js +751 -0
- package/src/og/ellipsoid/Ellipsoid.js +149 -57
- package/src/og/ellipsoid/wgs84.js +3 -3
- package/src/og/entity/BaseBillboard.js +72 -30
- package/src/og/entity/Billboard.js +9 -5
- package/src/og/entity/BillboardHandler.js +315 -62
- 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 +62 -30
- package/src/og/entity/LabelHandler.js +40 -242
- package/src/og/entity/LabelWorker.js +218 -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 -17
- package/src/og/layer/GeoImage.js +8 -16
- package/src/og/layer/GeoTexture2d.js +2 -10
- package/src/og/layer/GeoVideo.js +2 -10
- package/src/og/layer/KML.js +55 -33
- package/src/og/layer/Layer.js +24 -32
- package/src/og/layer/Material.js +1 -1
- package/src/og/layer/Vector.js +94 -48
- package/src/og/layer/WMS.js +33 -18
- package/src/og/layer/XYZ.js +4 -5
- 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 +3 -3
- package/src/og/renderer/Renderer.js +106 -124
- package/src/og/renderer/RendererEvents.js +45 -23
- package/src/og/scene/BaseNode.js +2 -3
- package/src/og/scene/Planet.js +51 -90
- package/src/og/scene/RenderNode.js +15 -8
- package/src/og/segment/Segment.js +60 -156
- package/src/og/segment/Slice.js +45 -0
- package/src/og/shaders/drawnode.js +245 -342
- 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/shaders/toneMapping.js +1 -0
- package/src/og/shapes/BaseShape.js +108 -36
- package/src/og/shapes/Icosphere.js +25 -10
- package/src/og/shapes/Sphere.js +8 -11
- package/src/og/utils/FontAtlas.js +6 -2
- package/src/og/utils/GeoImageCreator.js +5 -1
- package/src/og/utils/TextureAtlas.js +18 -20
- package/src/og/utils/VectorTileCreator.js +1 -3
- package/src/og/utils/shared.js +2 -2
- package/src/og/webgl/Handler.js +215 -162
- 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/Clock.d.ts +0 -94
- package/types/Deferred.d.ts +0 -6
- package/types/Events.d.ts +0 -77
- package/types/Extent.d.ts +0 -166
- package/types/Globe.d.ts +0 -82
- package/types/ImageCanvas.d.ts +0 -123
- package/types/Lock.d.ts +0 -12
- package/types/LonLat.d.ts +0 -108
- package/types/Popup.d.ts +0 -42
- package/types/QueueArray.d.ts +0 -19
- package/types/Rectangle.d.ts +0 -80
- package/types/Stack.d.ts +0 -19
- package/types/ajax.d.ts +0 -24
- package/types/arial.d.ts +0 -48
- package/types/astro/astro.d.ts +0 -38
- package/types/astro/earth.d.ts +0 -7
- package/types/astro/jd.d.ts +0 -254
- package/types/bv/Box.d.ts +0 -30
- package/types/bv/Sphere.d.ts +0 -38
- package/types/bv/index.d.ts +0 -3
- package/types/camera/Camera.d.ts +0 -312
- package/types/camera/Frustum.d.ts +0 -133
- package/types/camera/PlanetCamera.d.ts +0 -218
- package/types/camera/index.d.ts +0 -3
- package/types/cons.d.ts +0 -40
- package/types/control/CompassButton.d.ts +0 -17
- package/types/control/Control.d.ts +0 -104
- package/types/control/DebugInfo.d.ts +0 -15
- package/types/control/EarthCoordinates.d.ts +0 -47
- package/types/control/EarthNavigation.d.ts +0 -42
- package/types/control/GeoImageDragControl.d.ts +0 -6
- package/types/control/KeyboardNavigation.d.ts +0 -21
- package/types/control/LayerSwitcher.d.ts +0 -21
- package/types/control/Lighting.d.ts +0 -16
- package/types/control/MouseNavigation.d.ts +0 -47
- package/types/control/ScaleControl.d.ts +0 -22
- package/types/control/ShowFps.d.ts +0 -11
- package/types/control/SimpleNavigation.d.ts +0 -25
- package/types/control/Sun.d.ts +0 -50
- package/types/control/ToggleWireframe.d.ts +0 -12
- package/types/control/TouchNavigation.d.ts +0 -48
- package/types/control/ZoomControl.d.ts +0 -27
- package/types/control/index.d.ts +0 -17
- package/types/ellipsoid/Ellipsoid.d.ts +0 -146
- package/types/ellipsoid/index.d.ts +0 -3
- package/types/ellipsoid/wgs84.d.ts +0 -6
- package/types/entity/BaseBillboard.d.ts +0 -208
- package/types/entity/Billboard.d.ts +0 -94
- package/types/entity/BillboardHandler.d.ts +0 -78
- package/types/entity/Entity.d.ts +0 -333
- package/types/entity/EntityCollection.d.ts +0 -311
- package/types/entity/Geometry.d.ts +0 -74
- package/types/entity/GeometryHandler.d.ts +0 -76
- package/types/entity/Label.d.ts +0 -189
- package/types/entity/LabelHandler.d.ts +0 -29
- package/types/entity/PointCloud.d.ts +0 -174
- package/types/entity/PointCloudHandler.d.ts +0 -38
- package/types/entity/Polyline.d.ts +0 -306
- package/types/entity/PolylineHandler.d.ts +0 -18
- package/types/entity/Ray.d.ts +0 -124
- package/types/entity/RayHandler.d.ts +0 -67
- package/types/entity/ShapeHandler.d.ts +0 -22
- package/types/entity/Strip.d.ts +0 -119
- package/types/entity/StripHandler.d.ts +0 -38
- package/types/entity/index.d.ts +0 -8
- package/types/index.core.d.ts +0 -65
- package/types/index.d.ts +0 -45
- package/types/index.webgl.d.ts +0 -7
- package/types/input/KeyboardHandler.d.ts +0 -10
- package/types/input/MouseHandler.d.ts +0 -5
- package/types/input/TouchHandler.d.ts +0 -5
- package/types/input/input.d.ts +0 -34
- package/types/layer/BaseGeoImage.d.ts +0 -94
- package/types/layer/CanvasTiles.d.ts +0 -68
- package/types/layer/GeoImage.d.ts +0 -52
- package/types/layer/GeoTexture2d.d.ts +0 -8
- package/types/layer/GeoVideo.d.ts +0 -55
- package/types/layer/KML.d.ts +0 -63
- package/types/layer/Layer.d.ts +0 -325
- package/types/layer/Material.d.ts +0 -45
- package/types/layer/Vector.d.ts +0 -208
- package/types/layer/WMS.d.ts +0 -63
- package/types/layer/XYZ.d.ts +0 -120
- package/types/layer/index.d.ts +0 -10
- package/types/light/LightSource.d.ts +0 -178
- package/types/math/Line2.d.ts +0 -11
- package/types/math/Line3.d.ts +0 -10
- package/types/math/Mat3.d.ts +0 -65
- package/types/math/Mat4.d.ts +0 -176
- package/types/math/Plane.d.ts +0 -18
- package/types/math/Quat.d.ts +0 -379
- package/types/math/Ray.d.ts +0 -82
- package/types/math/Vec2.d.ts +0 -309
- package/types/math/Vec3.d.ts +0 -460
- package/types/math/Vec4.d.ts +0 -162
- package/types/math/coder.d.ts +0 -43
- package/types/math/index.d.ts +0 -11
- package/types/math.d.ts +0 -261
- package/types/mercator.d.ts +0 -92
- package/types/proj/EPSG3857.d.ts +0 -6
- package/types/proj/EPSG4326.d.ts +0 -6
- package/types/proj/Proj.d.ts +0 -42
- package/types/quadTree/EntityCollectionNode.d.ts +0 -34
- package/types/quadTree/Node.d.ts +0 -61
- package/types/quadTree/quadTree.d.ts +0 -40
- package/types/renderer/Renderer.d.ts +0 -298
- package/types/renderer/RendererEvents.d.ts +0 -233
- package/types/res/images.d.ts +0 -3
- package/types/scene/Axes.d.ts +0 -11
- package/types/scene/BaseNode.d.ts +0 -60
- package/types/scene/Planet.d.ts +0 -577
- package/types/scene/RenderNode.d.ts +0 -142
- package/types/scene/SkyBox.d.ts +0 -10
- package/types/scene/index.d.ts +0 -4
- package/types/segment/Segment.d.ts +0 -279
- package/types/segment/SegmentLonLat.d.ts +0 -16
- package/types/segment/segmentHelper.d.ts +0 -13
- package/types/shaders/billboard.d.ts +0 -3
- package/types/shaders/depth.d.ts +0 -2
- package/types/shaders/drawnode.d.ts +0 -7
- package/types/shaders/label.d.ts +0 -4
- package/types/shaders/pointCloud.d.ts +0 -2
- package/types/shaders/polyline.d.ts +0 -3
- package/types/shaders/ray.d.ts +0 -2
- package/types/shaders/screenFrame.d.ts +0 -2
- package/types/shaders/shape.d.ts +0 -4
- package/types/shaders/skybox.d.ts +0 -2
- package/types/shaders/toneMapping.d.ts +0 -2
- package/types/shapes/BaseShape.d.ts +0 -250
- package/types/shapes/Sphere.d.ts +0 -41
- package/types/terrain/BilTerrain.d.ts +0 -7
- package/types/terrain/EmptyTerrain.d.ts +0 -72
- package/types/terrain/Geoid.d.ts +0 -26
- package/types/terrain/GlobusTerrain.d.ts +0 -116
- package/types/terrain/MapboxTerrain.d.ts +0 -7
- package/types/terrain/index.d.ts +0 -5
- package/types/utils/FontAtlas.d.ts +0 -14
- package/types/utils/GeoImageCreator.d.ts +0 -30
- package/types/utils/ImagesCacheManager.d.ts +0 -10
- package/types/utils/Loader.d.ts +0 -25
- package/types/utils/NormalMapCreator.d.ts +0 -39
- package/types/utils/PlainSegmentWorker.d.ts +0 -10
- package/types/utils/TerrainWorker.d.ts +0 -9
- package/types/utils/TextureAtlas.d.ts +0 -111
- package/types/utils/VectorTileCreator.d.ts +0 -16
- package/types/utils/colorTable.d.ts +0 -143
- package/types/utils/earcut.d.ts +0 -6
- package/types/utils/shared.d.ts +0 -231
- package/types/webgl/Framebuffer.d.ts +0 -135
- package/types/webgl/Handler.d.ts +0 -388
- package/types/webgl/Multisample.d.ts +0 -89
- package/types/webgl/Program.d.ts +0 -155
- package/types/webgl/ProgramController.d.ts +0 -89
- package/types/webgl/callbacks.d.ts +0 -1
- package/types/webgl/index.d.ts +0 -6
- package/types/webgl/types.d.ts +0 -2
|
@@ -16,6 +16,7 @@ import { TextureAtlas } from "../utils/TextureAtlas.js";
|
|
|
16
16
|
import * as arial from "../arial.js";
|
|
17
17
|
import { depth } from "../shaders/depth.js";
|
|
18
18
|
import { ARIAL_FONT_B64 } from "../res/images.js";
|
|
19
|
+
import { LabelWorker } from "../entity/LabelWorker.js";
|
|
19
20
|
|
|
20
21
|
let __pickingCallbackCounter__ = 0;
|
|
21
22
|
|
|
@@ -55,7 +56,6 @@ let __depthCallbackCounter__ = 0;
|
|
|
55
56
|
* @fires og.RendererEvents#touchenter
|
|
56
57
|
*/
|
|
57
58
|
class Renderer {
|
|
58
|
-
|
|
59
59
|
constructor(handler, params) {
|
|
60
60
|
params = params || {};
|
|
61
61
|
|
|
@@ -73,9 +73,9 @@ class Renderer {
|
|
|
73
73
|
*/
|
|
74
74
|
this.handler = handler;
|
|
75
75
|
|
|
76
|
-
this.exposure =
|
|
76
|
+
this.exposure = 3.01;
|
|
77
77
|
|
|
78
|
-
this.gamma = 0.
|
|
78
|
+
this.gamma = 0.47;
|
|
79
79
|
|
|
80
80
|
this.whitepoint = 1.0;
|
|
81
81
|
|
|
@@ -159,13 +159,11 @@ class Renderer {
|
|
|
159
159
|
|
|
160
160
|
this.depthFramebuffer = null;
|
|
161
161
|
|
|
162
|
-
this._msaa = params.msaa ||
|
|
162
|
+
this._msaa = params.msaa || 4;
|
|
163
163
|
this._internalFormat = "RGBA16F";
|
|
164
164
|
this._format = "RGBA";
|
|
165
165
|
this._type = "FLOAT";
|
|
166
166
|
|
|
167
|
-
this._screenScale = params.screenScale || 1.0;
|
|
168
|
-
|
|
169
167
|
this.sceneFramebuffer = null;
|
|
170
168
|
|
|
171
169
|
this.blitFramebuffer = null;
|
|
@@ -184,8 +182,7 @@ class Renderer {
|
|
|
184
182
|
* @private
|
|
185
183
|
* @type {Array.<number>} - (exactly 3 entries)
|
|
186
184
|
*/
|
|
187
|
-
this._prevPickingColor =
|
|
188
|
-
|
|
185
|
+
this._prevPickingColor = new Uint8Array(4);
|
|
189
186
|
this._tempPickingColor_ = new Uint8Array(4);
|
|
190
187
|
|
|
191
188
|
this._initialized = false;
|
|
@@ -212,6 +209,10 @@ class Renderer {
|
|
|
212
209
|
}
|
|
213
210
|
|
|
214
211
|
this._currentOutput = "screen";
|
|
212
|
+
|
|
213
|
+
this.isActiveBackbuffers = true;
|
|
214
|
+
|
|
215
|
+
this.labelWorker = new LabelWorker();
|
|
215
216
|
}
|
|
216
217
|
|
|
217
218
|
/**
|
|
@@ -222,11 +223,6 @@ class Renderer {
|
|
|
222
223
|
this.events.active = activity;
|
|
223
224
|
}
|
|
224
225
|
|
|
225
|
-
setScreenScale(scale) {
|
|
226
|
-
this._screenScale = scale;
|
|
227
|
-
this._resize();
|
|
228
|
-
}
|
|
229
|
-
|
|
230
226
|
addDepthCallback(sender, callback) {
|
|
231
227
|
var id = __depthCallbackCounter__++;
|
|
232
228
|
this._depthCallbacks.push({
|
|
@@ -331,7 +327,7 @@ class Renderer {
|
|
|
331
327
|
* @returns {number} -
|
|
332
328
|
*/
|
|
333
329
|
getWidth() {
|
|
334
|
-
return this.handler.canvas.
|
|
330
|
+
return this.handler.canvas.clientWidth;
|
|
335
331
|
}
|
|
336
332
|
|
|
337
333
|
/**
|
|
@@ -340,7 +336,7 @@ class Renderer {
|
|
|
340
336
|
* @returns {number} -
|
|
341
337
|
*/
|
|
342
338
|
getHeight() {
|
|
343
|
-
return this.handler.canvas.
|
|
339
|
+
return this.handler.canvas.clientHeight;
|
|
344
340
|
}
|
|
345
341
|
|
|
346
342
|
/**
|
|
@@ -350,7 +346,7 @@ class Renderer {
|
|
|
350
346
|
*/
|
|
351
347
|
getCenter() {
|
|
352
348
|
var cnv = this.handler.canvas;
|
|
353
|
-
return new Vec2(Math.round(cnv.
|
|
349
|
+
return new Vec2(Math.round(cnv.clientWidth * 0.5), Math.round(cnv.clientHeight * 0.5));
|
|
354
350
|
}
|
|
355
351
|
|
|
356
352
|
/**
|
|
@@ -429,20 +425,10 @@ class Renderer {
|
|
|
429
425
|
useDepth: false
|
|
430
426
|
}).init();
|
|
431
427
|
|
|
432
|
-
//this.depthFramebuffer = new Framebuffer(this.handler, {
|
|
433
|
-
// size: 2,
|
|
434
|
-
// internalFormat: ["RGBA", "RGBA"],
|
|
435
|
-
// format: ["RGBA", "RGBA"],
|
|
436
|
-
// type: ["UNSIGNED_BYTE", "UNSIGNED_BYTE"],
|
|
437
|
-
// attachment: ["COLOR_ATTACHMENT", "COLOR_ATTACHMENT"],
|
|
438
|
-
// useDepth: true
|
|
439
|
-
//}).init();
|
|
440
428
|
this.screenDepthFramebuffer = new Framebuffer(this.handler, {
|
|
441
429
|
useDepth: false
|
|
442
430
|
}).init();
|
|
443
431
|
|
|
444
|
-
this.readPixels = () => { };
|
|
445
|
-
|
|
446
432
|
if (this.handler.gl.type === "webgl") {
|
|
447
433
|
this.sceneFramebuffer = new Framebuffer(this.handler);
|
|
448
434
|
this.sceneFramebuffer.init();
|
|
@@ -477,7 +463,7 @@ class Renderer {
|
|
|
477
463
|
internalFormat: this._internalFormat,
|
|
478
464
|
format: this._format,
|
|
479
465
|
type: this._type,
|
|
480
|
-
filter: "
|
|
466
|
+
filter: "NEAREST"
|
|
481
467
|
}).init();
|
|
482
468
|
|
|
483
469
|
this.toneMappingFramebuffer = new Framebuffer(this.handler, {
|
|
@@ -524,23 +510,21 @@ class Renderer {
|
|
|
524
510
|
}
|
|
525
511
|
|
|
526
512
|
_resize() {
|
|
527
|
-
let
|
|
528
|
-
this.activeCamera.setAspectRatio(
|
|
529
|
-
this.sceneFramebuffer.setSize(
|
|
530
|
-
|
|
531
|
-
obj.clientHeight * this._screenScale
|
|
532
|
-
);
|
|
513
|
+
let c = this.handler.canvas;
|
|
514
|
+
this.activeCamera.setAspectRatio(c.width / c.height);
|
|
515
|
+
this.sceneFramebuffer.setSize(c.width, c.height);
|
|
516
|
+
|
|
533
517
|
this.blitFramebuffer &&
|
|
534
|
-
this.blitFramebuffer.setSize(
|
|
535
|
-
|
|
536
|
-
obj.clientHeight * this._screenScale,
|
|
537
|
-
true
|
|
538
|
-
);
|
|
518
|
+
this.blitFramebuffer.setSize(c.width, c.height, true);
|
|
519
|
+
|
|
539
520
|
this.toneMappingFramebuffer &&
|
|
540
|
-
this.toneMappingFramebuffer.setSize(
|
|
541
|
-
|
|
521
|
+
this.toneMappingFramebuffer.setSize(c.width, c.height, true);
|
|
522
|
+
|
|
523
|
+
this.depthFramebuffer &&
|
|
524
|
+
this.depthFramebuffer.setSize(c.clientWidth, c.clientHeight, true);
|
|
525
|
+
|
|
542
526
|
this.screenDepthFramebuffer &&
|
|
543
|
-
this.screenDepthFramebuffer.setSize(
|
|
527
|
+
this.screenDepthFramebuffer.setSize(c.clientWidth, c.clientHeight, true);
|
|
544
528
|
|
|
545
529
|
if (this.handler.gl.type === "webgl") {
|
|
546
530
|
this.screenTexture.screen = this.sceneFramebuffer.textures[0];
|
|
@@ -610,7 +594,11 @@ class Renderer {
|
|
|
610
594
|
|
|
611
595
|
getMaxMSAA(internalFormat) {
|
|
612
596
|
var gl = this.handler.gl;
|
|
613
|
-
let samples = gl.getInternalformatParameter(
|
|
597
|
+
let samples = gl.getInternalformatParameter(
|
|
598
|
+
gl.RENDERBUFFER,
|
|
599
|
+
gl[internalFormat],
|
|
600
|
+
gl.SAMPLES
|
|
601
|
+
);
|
|
614
602
|
return samples[0];
|
|
615
603
|
}
|
|
616
604
|
|
|
@@ -671,6 +659,12 @@ class Renderer {
|
|
|
671
659
|
ec[i]._fadingOpacity && ec[i].labelHandler.draw();
|
|
672
660
|
}
|
|
673
661
|
|
|
662
|
+
//geoObject
|
|
663
|
+
i = ec.length;
|
|
664
|
+
while (i--) {
|
|
665
|
+
ec[i]._fadingOpacity && ec[i].geoObjectHandler.draw();
|
|
666
|
+
}
|
|
667
|
+
|
|
674
668
|
// rays
|
|
675
669
|
i = ec.length;
|
|
676
670
|
while (i--) {
|
|
@@ -735,7 +729,12 @@ class Renderer {
|
|
|
735
729
|
|
|
736
730
|
let h = this.handler;
|
|
737
731
|
|
|
738
|
-
h.gl.clearColor(
|
|
732
|
+
h.gl.clearColor(
|
|
733
|
+
this.backgroundColor.x,
|
|
734
|
+
this.backgroundColor.y,
|
|
735
|
+
this.backgroundColor.z,
|
|
736
|
+
1.0
|
|
737
|
+
);
|
|
739
738
|
h.gl.clear(h.gl.COLOR_BUFFER_BIT | h.gl.DEPTH_BUFFER_BIT);
|
|
740
739
|
|
|
741
740
|
e.dispatch(e.draw, this);
|
|
@@ -745,6 +744,8 @@ class Renderer {
|
|
|
745
744
|
|
|
746
745
|
let frustums = this.activeCamera.frustums;
|
|
747
746
|
|
|
747
|
+
let anyEvent = this.events.mouseState.anyEvent() && this.isActiveBackbuffers;
|
|
748
|
+
|
|
748
749
|
// Rendering scene nodes and entityCollections
|
|
749
750
|
let rn = this._renderNodesArr;
|
|
750
751
|
let k = frustums.length;
|
|
@@ -757,17 +758,19 @@ class Renderer {
|
|
|
757
758
|
}
|
|
758
759
|
this._drawEntityCollections();
|
|
759
760
|
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
this._drawPickingBuffer(k);
|
|
761
|
+
if (anyEvent) {
|
|
762
|
+
this._drawPickingBuffer(k);
|
|
763
|
+
}
|
|
764
764
|
}
|
|
765
765
|
|
|
766
766
|
sfb.deactivate();
|
|
767
767
|
|
|
768
768
|
this.blitFramebuffer && sfb.blitTo(this.blitFramebuffer);
|
|
769
769
|
|
|
770
|
-
if (
|
|
770
|
+
if (anyEvent) {
|
|
771
|
+
// It works ONLY for 0 (closest) frustum
|
|
772
|
+
this._drawDepthBuffer();
|
|
773
|
+
|
|
771
774
|
this._readPickingColor();
|
|
772
775
|
}
|
|
773
776
|
|
|
@@ -838,99 +841,81 @@ class Renderer {
|
|
|
838
841
|
gl.enable(gl.DEPTH_TEST);
|
|
839
842
|
}
|
|
840
843
|
|
|
841
|
-
/**
|
|
842
|
-
* Returns picking object by screen coordinates
|
|
843
|
-
* @param {number} x - X position
|
|
844
|
-
* @param {number} y - Y position
|
|
845
|
-
* @return {Object} -
|
|
846
|
-
*/
|
|
847
|
-
getPickingObject(x, y) {
|
|
848
|
-
let cnv = this.renderer.handler.canvas,
|
|
849
|
-
c = new Uint8Array(3);
|
|
850
|
-
this.readPixels(c, x / cnv.width, (cnv.height - y) / cnv.height, 1);
|
|
851
|
-
return this.colorObjects[c[0] + "_" + c[1] + "_" + c[2]];
|
|
852
|
-
}
|
|
853
|
-
|
|
854
844
|
/**
|
|
855
845
|
* Draw picking objects framebuffer.
|
|
856
846
|
* @private
|
|
857
847
|
*/
|
|
858
848
|
_drawPickingBuffer(frustumIndex) {
|
|
859
|
-
|
|
860
|
-
this.pickingFramebuffer.activate();
|
|
861
|
-
|
|
862
|
-
var h = this.handler;
|
|
863
|
-
var gl = h.gl;
|
|
849
|
+
this.pickingFramebuffer.activate();
|
|
864
850
|
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
868
|
-
} else {
|
|
869
|
-
gl.clear(gl.DEPTH_BUFFER_BIT);
|
|
870
|
-
}
|
|
851
|
+
var h = this.handler;
|
|
852
|
+
var gl = h.gl;
|
|
871
853
|
|
|
872
|
-
|
|
854
|
+
if (frustumIndex === this.activeCamera.FARTHEST_FRUSTUM_INDEX) {
|
|
855
|
+
gl.clearColor(0.0, 0.0, 0.0, 1.0);
|
|
856
|
+
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
857
|
+
} else {
|
|
858
|
+
gl.clear(gl.DEPTH_BUFFER_BIT);
|
|
859
|
+
}
|
|
873
860
|
|
|
874
|
-
|
|
875
|
-
var i = dp.length;
|
|
876
|
-
while (i--) {
|
|
877
|
-
/**
|
|
878
|
-
* This callback renders picking frame.
|
|
879
|
-
* @callback og.Renderer~pickingCallback
|
|
880
|
-
*/
|
|
881
|
-
dp[i].callback.call(dp[i].sender);
|
|
882
|
-
}
|
|
861
|
+
gl.disable(h.gl.BLEND);
|
|
883
862
|
|
|
884
|
-
|
|
863
|
+
var dp = this._pickingCallbacks;
|
|
864
|
+
var i = dp.length;
|
|
865
|
+
while (i--) {
|
|
866
|
+
/**
|
|
867
|
+
* This callback renders picking frame.
|
|
868
|
+
* @callback og.Renderer~pickingCallback
|
|
869
|
+
*/
|
|
870
|
+
dp[i].callback.call(dp[i].sender);
|
|
885
871
|
}
|
|
886
|
-
}
|
|
887
872
|
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
this.depthFramebuffer.activate();
|
|
873
|
+
this.pickingFramebuffer.deactivate();
|
|
874
|
+
}
|
|
891
875
|
|
|
892
|
-
|
|
893
|
-
|
|
876
|
+
_drawDepthBuffer() {
|
|
877
|
+
this.depthFramebuffer.activate();
|
|
894
878
|
|
|
895
|
-
|
|
896
|
-
|
|
879
|
+
var h = this.handler;
|
|
880
|
+
var gl = h.gl;
|
|
897
881
|
|
|
898
|
-
|
|
882
|
+
gl.clearColor(0.0, 0.0, 0.0, 1.0);
|
|
883
|
+
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
899
884
|
|
|
900
|
-
|
|
901
|
-
var i = dp.length;
|
|
902
|
-
while (i--) {
|
|
903
|
-
/**
|
|
904
|
-
* This callback renders depth frame.
|
|
905
|
-
* @callback og.Renderer~depthCallback
|
|
906
|
-
*/
|
|
907
|
-
dp[i].callback.call(dp[i].sender);
|
|
908
|
-
}
|
|
885
|
+
gl.enable(gl.DEPTH_TEST);
|
|
909
886
|
|
|
910
|
-
|
|
887
|
+
var dp = this._depthCallbacks;
|
|
888
|
+
var i = dp.length;
|
|
889
|
+
while (i--) {
|
|
890
|
+
/**
|
|
891
|
+
* This callback renders depth frame.
|
|
892
|
+
* @callback og.Renderer~depthCallback
|
|
893
|
+
*/
|
|
894
|
+
dp[i].callback.call(dp[i].sender);
|
|
895
|
+
}
|
|
911
896
|
|
|
912
|
-
|
|
913
|
-
// PASS to depth visualization
|
|
914
|
-
var sh = h.programs.depth,
|
|
915
|
-
p = sh._program;
|
|
897
|
+
this.depthFramebuffer.deactivate();
|
|
916
898
|
|
|
917
|
-
|
|
899
|
+
//
|
|
900
|
+
// PASS to depth visualization
|
|
901
|
+
this.screenDepthFramebuffer.activate();
|
|
902
|
+
var sh = h.programs.depth,
|
|
903
|
+
p = sh._program;
|
|
918
904
|
|
|
919
|
-
|
|
920
|
-
gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
|
|
905
|
+
gl = h.gl;
|
|
921
906
|
|
|
922
|
-
|
|
907
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this._screenFrameCornersBuffer);
|
|
908
|
+
gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
|
|
923
909
|
|
|
924
|
-
|
|
910
|
+
sh.activate();
|
|
925
911
|
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
912
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
913
|
+
gl.bindTexture(gl.TEXTURE_2D, this.depthFramebuffer.textures[1]);
|
|
914
|
+
gl.uniform1i(p.uniforms.depthTexture, 0);
|
|
929
915
|
|
|
930
|
-
|
|
916
|
+
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
|
|
931
917
|
|
|
932
|
-
|
|
933
|
-
}
|
|
918
|
+
this.screenDepthFramebuffer.deactivate();
|
|
934
919
|
}
|
|
935
920
|
|
|
936
921
|
_readPickingColor() {
|
|
@@ -944,15 +929,13 @@ class Renderer {
|
|
|
944
929
|
|
|
945
930
|
var pc = this._currPickingColor;
|
|
946
931
|
if (ts.x || ts.y) {
|
|
932
|
+
this.pickingFramebuffer.activate();
|
|
947
933
|
this.pickingFramebuffer.readPixels(pc, ts.nx, 1.0 - ts.ny);
|
|
948
|
-
|
|
949
|
-
this.readPixels(pc, ts.nx, 1.0 - ts.ny, 1);
|
|
950
|
-
}
|
|
934
|
+
this.pickingFramebuffer.deactivate();
|
|
951
935
|
} else {
|
|
936
|
+
this.pickingFramebuffer.activate();
|
|
952
937
|
this.pickingFramebuffer.readPixels(pc, ms.nx, 1.0 - ms.ny);
|
|
953
|
-
|
|
954
|
-
this.readPixels(pc, ms.nx, 1.0 - ms.ny, 1);
|
|
955
|
-
}
|
|
938
|
+
this.pickingFramebuffer.deactivate();
|
|
956
939
|
}
|
|
957
940
|
}
|
|
958
941
|
}
|
|
@@ -964,7 +947,6 @@ class Renderer {
|
|
|
964
947
|
start() {
|
|
965
948
|
this.handler.start();
|
|
966
949
|
}
|
|
967
|
-
|
|
968
950
|
}
|
|
969
951
|
|
|
970
952
|
export { Renderer };
|
|
@@ -84,10 +84,14 @@ class RendererEvents extends Events {
|
|
|
84
84
|
ms.moving ||
|
|
85
85
|
ms.justStopped
|
|
86
86
|
);
|
|
87
|
-
},
|
|
88
|
-
/** Current mouse X position. */
|
|
87
|
+
},
|
|
88
|
+
/** Current screen mouse X position. */
|
|
89
|
+
clientX: 0,
|
|
90
|
+
/** Current screen mouse Y position. */
|
|
91
|
+
clientY: 0,
|
|
92
|
+
/** Current viewport mouse X position. */
|
|
89
93
|
x: 0,
|
|
90
|
-
/** Current mouse Y position. */
|
|
94
|
+
/** Current viewport mouse Y position. */
|
|
91
95
|
y: 0,
|
|
92
96
|
/** Current mouse X position from 0 to 1 */
|
|
93
97
|
nx: 0,
|
|
@@ -335,7 +339,7 @@ class RendererEvents extends Events {
|
|
|
335
339
|
*/
|
|
336
340
|
onMouseMove(event, sys) {
|
|
337
341
|
var ms = this.mouseState;
|
|
338
|
-
this.updateButtonsStates(sys.buttons)
|
|
342
|
+
this.updateButtonsStates(sys.buttons);
|
|
339
343
|
ms.sys = event;
|
|
340
344
|
|
|
341
345
|
let ex = event.clientX,
|
|
@@ -357,16 +361,20 @@ class RendererEvents extends Events {
|
|
|
357
361
|
this._mClkBegins = 0;
|
|
358
362
|
}
|
|
359
363
|
|
|
360
|
-
if (ms.
|
|
364
|
+
if (ms.clientX === event.clientX && ms.clientY === event.clientY) {
|
|
361
365
|
return;
|
|
362
|
-
}
|
|
366
|
+
}
|
|
363
367
|
|
|
364
|
-
ms.
|
|
365
|
-
ms.
|
|
368
|
+
ms.clientX = event.clientX;
|
|
369
|
+
ms.clientY = event.clientY;
|
|
370
|
+
|
|
371
|
+
let h = this.renderer.handler;
|
|
372
|
+
|
|
373
|
+
ms.x = event.clientX * h.pixelRatio;
|
|
374
|
+
ms.y = event.clientY * h.pixelRatio;
|
|
366
375
|
|
|
367
|
-
|
|
368
|
-
ms.
|
|
369
|
-
ms.ny = ms.y / cnv.height;
|
|
376
|
+
ms.nx = ms.x / h.canvas.width;
|
|
377
|
+
ms.ny = ms.y / h.canvas.height;
|
|
370
378
|
|
|
371
379
|
ms.moving = true;
|
|
372
380
|
|
|
@@ -492,12 +500,18 @@ class RendererEvents extends Events {
|
|
|
492
500
|
*/
|
|
493
501
|
onTouchStart(event) {
|
|
494
502
|
var ts = this.touchState;
|
|
495
|
-
ts.sys = event;
|
|
496
|
-
|
|
497
|
-
ts.
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
503
|
+
ts.sys = event;
|
|
504
|
+
|
|
505
|
+
ts.clienX = event.touches.item(0).clientX - event.offsetLeft;
|
|
506
|
+
ts.clientY = event.touches.item(0).clientY - event.offsetTop;
|
|
507
|
+
|
|
508
|
+
let h = this.renderer.handler;
|
|
509
|
+
|
|
510
|
+
ts.x = ts.clientX * h.pixelRatio;
|
|
511
|
+
ts.y = ts.clientY * h.pixelRatio;
|
|
512
|
+
|
|
513
|
+
ts.nx = ts.x / h.canvas.width;
|
|
514
|
+
ts.ny = ts.y / h.canvas.height;
|
|
501
515
|
ts.prev_x = ts.x;
|
|
502
516
|
ts.prev_y = ts.y;
|
|
503
517
|
ts.touchStart = true;
|
|
@@ -551,11 +565,17 @@ class RendererEvents extends Events {
|
|
|
551
565
|
*/
|
|
552
566
|
onTouchMove(event) {
|
|
553
567
|
var ts = this.touchState;
|
|
554
|
-
ts.
|
|
555
|
-
ts.
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
568
|
+
ts.clientX = event.touches.item(0).clientX - event.offsetLeft;
|
|
569
|
+
ts.clientY = event.touches.item(0).clientY - event.offsetTop;
|
|
570
|
+
|
|
571
|
+
var h = this.renderer.handler;
|
|
572
|
+
|
|
573
|
+
ts.x = ts.clientX * h.pixelRatio;
|
|
574
|
+
ts.y = ts.clientY * h.pixelRatio;
|
|
575
|
+
|
|
576
|
+
ts.nx = ts.x / h.canvas.width;
|
|
577
|
+
ts.ny = ts.y / h.canvas.height;
|
|
578
|
+
|
|
559
579
|
ts.sys = event;
|
|
560
580
|
ts.moving = true;
|
|
561
581
|
this._dblTchBegins = 0;
|
|
@@ -808,8 +828,10 @@ class RendererEvents extends Events {
|
|
|
808
828
|
|
|
809
829
|
if (ts.touchStart) {
|
|
810
830
|
var r = this.renderer;
|
|
811
|
-
|
|
831
|
+
|
|
832
|
+
r.pickingFramebuffer.activate();
|
|
812
833
|
r.pickingFramebuffer.readPixels(r._currPickingColor, ts.nx, 1.0 - ts.ny, 1);
|
|
834
|
+
r.pickingFramebuffer.deactivate();
|
|
813
835
|
|
|
814
836
|
var o = r.colorObjects;
|
|
815
837
|
var c = r._currPickingColor;
|
package/src/og/scene/BaseNode.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @module og/scene/BaseNode
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
"use strict";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Scene node base class.
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
*/
|
|
12
12
|
class BaseNode {
|
|
13
13
|
constructor(name) {
|
|
14
|
-
|
|
15
14
|
/**
|
|
16
15
|
* Node name.
|
|
17
16
|
* @public
|
|
@@ -111,4 +110,4 @@ class BaseNode {
|
|
|
111
110
|
}
|
|
112
111
|
}
|
|
113
112
|
|
|
114
|
-
export { BaseNode };
|
|
113
|
+
export { BaseNode };
|