@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.
Files changed (260) hide show
  1. package/css/og.css +3 -2
  2. package/package.json +12 -14
  3. package/src/og/Clock.js +6 -10
  4. package/src/og/Events.js +5 -7
  5. package/src/og/Extent.js +73 -32
  6. package/src/og/Globe.js +8 -5
  7. package/src/og/ImageCanvas.js +18 -15
  8. package/src/og/LonLat.js +13 -10
  9. package/src/og/Popup.js +19 -17
  10. package/src/og/QueueArray.js +3 -4
  11. package/src/og/Rectangle.js +4 -6
  12. package/src/og/Stack.js +2 -4
  13. package/src/og/ajax.js +20 -14
  14. package/src/og/astro/earth.js +21 -15
  15. package/src/og/bv/Box.js +2 -3
  16. package/src/og/bv/Sphere.js +10 -7
  17. package/src/og/camera/Frustum.js +19 -12
  18. package/src/og/camera/PlanetCamera.js +9 -5
  19. package/src/og/control/CompassButton.js +1 -2
  20. package/src/og/control/Control.js +7 -9
  21. package/src/og/control/DebugInfo.js +0 -1
  22. package/src/og/control/KeyboardNavigation.js +9 -9
  23. package/src/og/control/LayerSwitcher.js +21 -20
  24. package/src/og/control/Lighting.js +74 -64
  25. package/src/og/control/MouseNavigation.js +21 -18
  26. package/src/og/control/MouseWheelZoomControl.js +257 -0
  27. package/src/og/control/SegmentBoundVisualization.js +5 -6
  28. package/src/og/control/ShowFps.js +12 -7
  29. package/src/og/control/SimpleNavigation.js +5 -7
  30. package/src/og/control/Sun.js +22 -12
  31. package/src/og/control/ToggleWireframe.js +3 -3
  32. package/src/og/control/TouchNavigation.js +43 -32
  33. package/src/og/control/ZoomControl.js +40 -24
  34. package/src/og/control/index.js +2 -0
  35. package/src/og/control/visibleExtent/Segment.js +1862 -0
  36. package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
  37. package/src/og/control/visibleExtent/drawnode.js +751 -0
  38. package/src/og/ellipsoid/Ellipsoid.js +149 -57
  39. package/src/og/ellipsoid/wgs84.js +3 -3
  40. package/src/og/entity/BaseBillboard.js +72 -30
  41. package/src/og/entity/Billboard.js +9 -5
  42. package/src/og/entity/BillboardHandler.js +315 -62
  43. package/src/og/entity/Entity.js +39 -1
  44. package/src/og/entity/EntityCollection.js +47 -24
  45. package/src/og/entity/GeoObject.js +228 -0
  46. package/src/og/entity/GeoObjectHandler.js +910 -0
  47. package/src/og/entity/GeometryHandler.js +595 -123
  48. package/src/og/entity/Label.js +62 -30
  49. package/src/og/entity/LabelHandler.js +40 -242
  50. package/src/og/entity/LabelWorker.js +218 -0
  51. package/src/og/entity/Object3d.js +504 -0
  52. package/src/og/entity/PointCloud.js +76 -28
  53. package/src/og/entity/PointCloudHandler.js +5 -5
  54. package/src/og/entity/Ray.js +49 -16
  55. package/src/og/entity/Strip.js +72 -43
  56. package/src/og/entity/StripHandler.js +23 -23
  57. package/src/og/layer/BaseGeoImage.js +50 -19
  58. package/src/og/layer/CanvasTiles.js +16 -17
  59. package/src/og/layer/GeoImage.js +8 -16
  60. package/src/og/layer/GeoTexture2d.js +2 -10
  61. package/src/og/layer/GeoVideo.js +2 -10
  62. package/src/og/layer/KML.js +55 -33
  63. package/src/og/layer/Layer.js +24 -32
  64. package/src/og/layer/Material.js +1 -1
  65. package/src/og/layer/Vector.js +94 -48
  66. package/src/og/layer/WMS.js +33 -18
  67. package/src/og/layer/XYZ.js +4 -5
  68. package/src/og/light/LightSource.js +19 -12
  69. package/src/og/math/Mat3.js +24 -12
  70. package/src/og/math/Mat4.js +603 -603
  71. package/src/og/math/Plane.js +19 -18
  72. package/src/og/math/Ray.js +17 -12
  73. package/src/og/math/Vec2.js +24 -14
  74. package/src/og/math/Vec3.js +60 -30
  75. package/src/og/math/coder.js +7 -7
  76. package/src/og/proj/EPSG3857.js +3 -3
  77. package/src/og/proj/EPSG4326.js +3 -3
  78. package/src/og/proj/Proj.js +2 -4
  79. package/src/og/quadTree/Node.js +3 -3
  80. package/src/og/renderer/Renderer.js +106 -124
  81. package/src/og/renderer/RendererEvents.js +45 -23
  82. package/src/og/scene/BaseNode.js +2 -3
  83. package/src/og/scene/Planet.js +51 -90
  84. package/src/og/scene/RenderNode.js +15 -8
  85. package/src/og/segment/Segment.js +60 -156
  86. package/src/og/segment/Slice.js +45 -0
  87. package/src/og/shaders/drawnode.js +245 -342
  88. package/src/og/shaders/geoObject.js +211 -0
  89. package/src/og/shaders/pointCloud.js +41 -41
  90. package/src/og/shaders/shape.js +12 -18
  91. package/src/og/shaders/skybox.js +36 -36
  92. package/src/og/shaders/toneMapping.js +1 -0
  93. package/src/og/shapes/BaseShape.js +108 -36
  94. package/src/og/shapes/Icosphere.js +25 -10
  95. package/src/og/shapes/Sphere.js +8 -11
  96. package/src/og/utils/FontAtlas.js +6 -2
  97. package/src/og/utils/GeoImageCreator.js +5 -1
  98. package/src/og/utils/TextureAtlas.js +18 -20
  99. package/src/og/utils/VectorTileCreator.js +1 -3
  100. package/src/og/utils/shared.js +2 -2
  101. package/src/og/webgl/Handler.js +215 -162
  102. package/src/og/webgl/Multisample.js +44 -16
  103. package/src/og/webgl/Program.js +78 -33
  104. package/src/og/webgl/callbacks.js +3 -3
  105. package/types/Clock.d.ts +0 -94
  106. package/types/Deferred.d.ts +0 -6
  107. package/types/Events.d.ts +0 -77
  108. package/types/Extent.d.ts +0 -166
  109. package/types/Globe.d.ts +0 -82
  110. package/types/ImageCanvas.d.ts +0 -123
  111. package/types/Lock.d.ts +0 -12
  112. package/types/LonLat.d.ts +0 -108
  113. package/types/Popup.d.ts +0 -42
  114. package/types/QueueArray.d.ts +0 -19
  115. package/types/Rectangle.d.ts +0 -80
  116. package/types/Stack.d.ts +0 -19
  117. package/types/ajax.d.ts +0 -24
  118. package/types/arial.d.ts +0 -48
  119. package/types/astro/astro.d.ts +0 -38
  120. package/types/astro/earth.d.ts +0 -7
  121. package/types/astro/jd.d.ts +0 -254
  122. package/types/bv/Box.d.ts +0 -30
  123. package/types/bv/Sphere.d.ts +0 -38
  124. package/types/bv/index.d.ts +0 -3
  125. package/types/camera/Camera.d.ts +0 -312
  126. package/types/camera/Frustum.d.ts +0 -133
  127. package/types/camera/PlanetCamera.d.ts +0 -218
  128. package/types/camera/index.d.ts +0 -3
  129. package/types/cons.d.ts +0 -40
  130. package/types/control/CompassButton.d.ts +0 -17
  131. package/types/control/Control.d.ts +0 -104
  132. package/types/control/DebugInfo.d.ts +0 -15
  133. package/types/control/EarthCoordinates.d.ts +0 -47
  134. package/types/control/EarthNavigation.d.ts +0 -42
  135. package/types/control/GeoImageDragControl.d.ts +0 -6
  136. package/types/control/KeyboardNavigation.d.ts +0 -21
  137. package/types/control/LayerSwitcher.d.ts +0 -21
  138. package/types/control/Lighting.d.ts +0 -16
  139. package/types/control/MouseNavigation.d.ts +0 -47
  140. package/types/control/ScaleControl.d.ts +0 -22
  141. package/types/control/ShowFps.d.ts +0 -11
  142. package/types/control/SimpleNavigation.d.ts +0 -25
  143. package/types/control/Sun.d.ts +0 -50
  144. package/types/control/ToggleWireframe.d.ts +0 -12
  145. package/types/control/TouchNavigation.d.ts +0 -48
  146. package/types/control/ZoomControl.d.ts +0 -27
  147. package/types/control/index.d.ts +0 -17
  148. package/types/ellipsoid/Ellipsoid.d.ts +0 -146
  149. package/types/ellipsoid/index.d.ts +0 -3
  150. package/types/ellipsoid/wgs84.d.ts +0 -6
  151. package/types/entity/BaseBillboard.d.ts +0 -208
  152. package/types/entity/Billboard.d.ts +0 -94
  153. package/types/entity/BillboardHandler.d.ts +0 -78
  154. package/types/entity/Entity.d.ts +0 -333
  155. package/types/entity/EntityCollection.d.ts +0 -311
  156. package/types/entity/Geometry.d.ts +0 -74
  157. package/types/entity/GeometryHandler.d.ts +0 -76
  158. package/types/entity/Label.d.ts +0 -189
  159. package/types/entity/LabelHandler.d.ts +0 -29
  160. package/types/entity/PointCloud.d.ts +0 -174
  161. package/types/entity/PointCloudHandler.d.ts +0 -38
  162. package/types/entity/Polyline.d.ts +0 -306
  163. package/types/entity/PolylineHandler.d.ts +0 -18
  164. package/types/entity/Ray.d.ts +0 -124
  165. package/types/entity/RayHandler.d.ts +0 -67
  166. package/types/entity/ShapeHandler.d.ts +0 -22
  167. package/types/entity/Strip.d.ts +0 -119
  168. package/types/entity/StripHandler.d.ts +0 -38
  169. package/types/entity/index.d.ts +0 -8
  170. package/types/index.core.d.ts +0 -65
  171. package/types/index.d.ts +0 -45
  172. package/types/index.webgl.d.ts +0 -7
  173. package/types/input/KeyboardHandler.d.ts +0 -10
  174. package/types/input/MouseHandler.d.ts +0 -5
  175. package/types/input/TouchHandler.d.ts +0 -5
  176. package/types/input/input.d.ts +0 -34
  177. package/types/layer/BaseGeoImage.d.ts +0 -94
  178. package/types/layer/CanvasTiles.d.ts +0 -68
  179. package/types/layer/GeoImage.d.ts +0 -52
  180. package/types/layer/GeoTexture2d.d.ts +0 -8
  181. package/types/layer/GeoVideo.d.ts +0 -55
  182. package/types/layer/KML.d.ts +0 -63
  183. package/types/layer/Layer.d.ts +0 -325
  184. package/types/layer/Material.d.ts +0 -45
  185. package/types/layer/Vector.d.ts +0 -208
  186. package/types/layer/WMS.d.ts +0 -63
  187. package/types/layer/XYZ.d.ts +0 -120
  188. package/types/layer/index.d.ts +0 -10
  189. package/types/light/LightSource.d.ts +0 -178
  190. package/types/math/Line2.d.ts +0 -11
  191. package/types/math/Line3.d.ts +0 -10
  192. package/types/math/Mat3.d.ts +0 -65
  193. package/types/math/Mat4.d.ts +0 -176
  194. package/types/math/Plane.d.ts +0 -18
  195. package/types/math/Quat.d.ts +0 -379
  196. package/types/math/Ray.d.ts +0 -82
  197. package/types/math/Vec2.d.ts +0 -309
  198. package/types/math/Vec3.d.ts +0 -460
  199. package/types/math/Vec4.d.ts +0 -162
  200. package/types/math/coder.d.ts +0 -43
  201. package/types/math/index.d.ts +0 -11
  202. package/types/math.d.ts +0 -261
  203. package/types/mercator.d.ts +0 -92
  204. package/types/proj/EPSG3857.d.ts +0 -6
  205. package/types/proj/EPSG4326.d.ts +0 -6
  206. package/types/proj/Proj.d.ts +0 -42
  207. package/types/quadTree/EntityCollectionNode.d.ts +0 -34
  208. package/types/quadTree/Node.d.ts +0 -61
  209. package/types/quadTree/quadTree.d.ts +0 -40
  210. package/types/renderer/Renderer.d.ts +0 -298
  211. package/types/renderer/RendererEvents.d.ts +0 -233
  212. package/types/res/images.d.ts +0 -3
  213. package/types/scene/Axes.d.ts +0 -11
  214. package/types/scene/BaseNode.d.ts +0 -60
  215. package/types/scene/Planet.d.ts +0 -577
  216. package/types/scene/RenderNode.d.ts +0 -142
  217. package/types/scene/SkyBox.d.ts +0 -10
  218. package/types/scene/index.d.ts +0 -4
  219. package/types/segment/Segment.d.ts +0 -279
  220. package/types/segment/SegmentLonLat.d.ts +0 -16
  221. package/types/segment/segmentHelper.d.ts +0 -13
  222. package/types/shaders/billboard.d.ts +0 -3
  223. package/types/shaders/depth.d.ts +0 -2
  224. package/types/shaders/drawnode.d.ts +0 -7
  225. package/types/shaders/label.d.ts +0 -4
  226. package/types/shaders/pointCloud.d.ts +0 -2
  227. package/types/shaders/polyline.d.ts +0 -3
  228. package/types/shaders/ray.d.ts +0 -2
  229. package/types/shaders/screenFrame.d.ts +0 -2
  230. package/types/shaders/shape.d.ts +0 -4
  231. package/types/shaders/skybox.d.ts +0 -2
  232. package/types/shaders/toneMapping.d.ts +0 -2
  233. package/types/shapes/BaseShape.d.ts +0 -250
  234. package/types/shapes/Sphere.d.ts +0 -41
  235. package/types/terrain/BilTerrain.d.ts +0 -7
  236. package/types/terrain/EmptyTerrain.d.ts +0 -72
  237. package/types/terrain/Geoid.d.ts +0 -26
  238. package/types/terrain/GlobusTerrain.d.ts +0 -116
  239. package/types/terrain/MapboxTerrain.d.ts +0 -7
  240. package/types/terrain/index.d.ts +0 -5
  241. package/types/utils/FontAtlas.d.ts +0 -14
  242. package/types/utils/GeoImageCreator.d.ts +0 -30
  243. package/types/utils/ImagesCacheManager.d.ts +0 -10
  244. package/types/utils/Loader.d.ts +0 -25
  245. package/types/utils/NormalMapCreator.d.ts +0 -39
  246. package/types/utils/PlainSegmentWorker.d.ts +0 -10
  247. package/types/utils/TerrainWorker.d.ts +0 -9
  248. package/types/utils/TextureAtlas.d.ts +0 -111
  249. package/types/utils/VectorTileCreator.d.ts +0 -16
  250. package/types/utils/colorTable.d.ts +0 -143
  251. package/types/utils/earcut.d.ts +0 -6
  252. package/types/utils/shared.d.ts +0 -231
  253. package/types/webgl/Framebuffer.d.ts +0 -135
  254. package/types/webgl/Handler.d.ts +0 -388
  255. package/types/webgl/Multisample.d.ts +0 -89
  256. package/types/webgl/Program.d.ts +0 -155
  257. package/types/webgl/ProgramController.d.ts +0 -89
  258. package/types/webgl/callbacks.d.ts +0 -1
  259. package/types/webgl/index.d.ts +0 -6
  260. 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 = 4;
76
+ this.exposure = 3.01;
77
77
 
78
- this.gamma = 0.5;
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 || 8;
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 = [0, 0, 0];
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.width;
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.height;
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.width * 0.5), Math.round(cnv.height * 0.5));
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: "LINEAR"
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 obj = this.handler.canvas;
528
- this.activeCamera.setAspectRatio(obj.clientWidth / obj.clientHeight);
529
- this.sceneFramebuffer.setSize(
530
- obj.clientWidth * this._screenScale,
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
- obj.clientWidth * this._screenScale,
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(obj.clientWidth, obj.clientHeight, true);
541
- this.depthFramebuffer && this.depthFramebuffer.setSize(obj.clientWidth, obj.clientHeight, true);
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(obj.clientWidth, obj.clientHeight, true);
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(gl.RENDERBUFFER, gl[internalFormat], gl.SAMPLES);
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(this.backgroundColor.x, this.backgroundColor.y, this.backgroundColor.z, 1.0);
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
- this._drawDepthBuffer(k);
761
-
762
- // Rendering picking callbacks and refresh pickingColor
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 (e.mouseState.anyEvent()) {
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
- if (this.events.mouseState.anyEvent()) {
860
- this.pickingFramebuffer.activate();
861
-
862
- var h = this.handler;
863
- var gl = h.gl;
849
+ this.pickingFramebuffer.activate();
864
850
 
865
- if (frustumIndex === this.activeCamera.FARTHEST_FRUSTUM_INDEX) {
866
- gl.clearColor(0.0, 0.0, 0.0, 1.0);
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
- gl.disable(h.gl.BLEND);
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
- var dp = this._pickingCallbacks;
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
- this.pickingFramebuffer.deactivate();
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
- _drawDepthBuffer(frustumIndex) {
889
- if (frustumIndex === 0) {
890
- this.depthFramebuffer.activate();
873
+ this.pickingFramebuffer.deactivate();
874
+ }
891
875
 
892
- var h = this.handler;
893
- var gl = h.gl;
876
+ _drawDepthBuffer() {
877
+ this.depthFramebuffer.activate();
894
878
 
895
- gl.clearColor(0.0, 0.0, 0.0, 1.0);
896
- gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
879
+ var h = this.handler;
880
+ var gl = h.gl;
897
881
 
898
- gl.enable(gl.DEPTH_TEST);
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
- var dp = this._depthCallbacks;
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
- this.depthFramebuffer.deactivate();
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
- gl = h.gl;
899
+ //
900
+ // PASS to depth visualization
901
+ this.screenDepthFramebuffer.activate();
902
+ var sh = h.programs.depth,
903
+ p = sh._program;
918
904
 
919
- gl.bindBuffer(gl.ARRAY_BUFFER, this._screenFrameCornersBuffer);
920
- gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
905
+ gl = h.gl;
921
906
 
922
- this.screenDepthFramebuffer.activate();
907
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._screenFrameCornersBuffer);
908
+ gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
923
909
 
924
- sh.activate();
910
+ sh.activate();
925
911
 
926
- gl.activeTexture(gl.TEXTURE1);
927
- gl.bindTexture(gl.TEXTURE_2D, this.depthFramebuffer.textures[1]);
928
- gl.uniform1i(p.uniforms.depthTexture, 1);
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
- gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
916
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
931
917
 
932
- this.screenDepthFramebuffer.deactivate();
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
- if (!(pc[0] || pc[1] || pc[2])) {
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
- if (!(pc[0] || pc[1] || pc[2])) {
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.x === event.clientX && ms.y === event.clientY) {
364
+ if (ms.clientX === event.clientX && ms.clientY === event.clientY) {
361
365
  return;
362
- }
366
+ }
363
367
 
364
- ms.x = event.clientX;
365
- ms.y = event.clientY;
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
- var cnv = this.renderer.handler.canvas;
368
- ms.nx = ms.x / cnv.width;
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
- ts.x = event.touches.item(0).clientX - event.offsetLeft;
497
- ts.y = event.touches.item(0).clientY - event.offsetTop;
498
- var cnv = this.renderer.handler.canvas;
499
- ts.nx = ts.x / cnv.width;
500
- ts.ny = ts.y / cnv.height;
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.x = event.touches.item(0).clientX - event.offsetLeft;
555
- ts.y = event.touches.item(0).clientY - event.offsetTop;
556
- var cnv = this.renderer.handler.canvas;
557
- ts.nx = ts.x / cnv.width;
558
- ts.ny = ts.y / cnv.height;
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;
@@ -2,7 +2,7 @@
2
2
  * @module og/scene/BaseNode
3
3
  */
4
4
 
5
- 'use strict';
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 };