@openglobus/og 0.19.4 → 0.20.0

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 (308) hide show
  1. package/README.md +3 -3
  2. package/css/og.css +18 -4
  3. package/lib/@openglobus/js/Clock.d.ts +106 -0
  4. package/lib/@openglobus/js/Deferred.d.ts +6 -0
  5. package/lib/@openglobus/js/Events.d.ts +90 -0
  6. package/lib/@openglobus/js/Extent.d.ts +145 -0
  7. package/lib/@openglobus/js/Globe.d.ts +134 -0
  8. package/lib/@openglobus/js/ImageCanvas.d.ts +128 -0
  9. package/lib/@openglobus/js/Lock.d.ts +15 -0
  10. package/lib/@openglobus/js/LonLat.d.ts +128 -0
  11. package/lib/@openglobus/js/Object3d.d.ts +64 -0
  12. package/lib/@openglobus/js/Popup.d.ts +46 -0
  13. package/lib/@openglobus/js/QueueArray.d.ts +16 -0
  14. package/lib/@openglobus/js/Rectangle.d.ts +76 -0
  15. package/lib/@openglobus/js/Stack.d.ts +20 -0
  16. package/lib/@openglobus/js/astro/astro.d.ts +39 -0
  17. package/lib/@openglobus/js/astro/earth.d.ts +8 -0
  18. package/lib/@openglobus/js/astro/jd.d.ts +234 -0
  19. package/lib/@openglobus/js/astro/orbit.d.ts +5 -0
  20. package/lib/@openglobus/js/astro/rotation.d.ts +2 -0
  21. package/lib/@openglobus/js/bv/Box.d.ts +32 -0
  22. package/lib/@openglobus/js/bv/Sphere.d.ts +37 -0
  23. package/lib/@openglobus/js/bv/index.d.ts +3 -0
  24. package/lib/@openglobus/js/camera/Camera.d.ts +314 -0
  25. package/lib/@openglobus/js/camera/Frustum.d.ts +139 -0
  26. package/lib/@openglobus/js/camera/PlanetCamera.d.ts +234 -0
  27. package/lib/@openglobus/js/camera/index.d.ts +3 -0
  28. package/lib/@openglobus/js/cons.d.ts +40 -0
  29. package/lib/@openglobus/js/control/Atmosphere.d.ts +16 -0
  30. package/lib/@openglobus/js/control/CompassButton.d.ts +16 -0
  31. package/lib/@openglobus/js/control/Control.d.ts +100 -0
  32. package/lib/@openglobus/js/control/DebugInfo.d.ts +25 -0
  33. package/lib/@openglobus/js/control/DrawingSwitcher.d.ts +13 -0
  34. package/lib/@openglobus/js/control/EarthCoordinates.d.ts +41 -0
  35. package/lib/@openglobus/js/control/EarthNavigation.d.ts +50 -0
  36. package/lib/@openglobus/js/control/GeoImageDragControl.d.ts +22 -0
  37. package/lib/@openglobus/js/control/KeyboardNavigation.d.ts +28 -0
  38. package/lib/@openglobus/js/control/LayerAnimation.d.ts +71 -0
  39. package/lib/@openglobus/js/control/LayerSwitcher.d.ts +36 -0
  40. package/lib/@openglobus/js/control/Lighting.d.ts +53 -0
  41. package/lib/@openglobus/js/control/MouseNavigation.d.ts +64 -0
  42. package/lib/@openglobus/js/control/MouseWheelZoomControl.d.ts +44 -0
  43. package/lib/@openglobus/js/control/RulerSwitcher.d.ts +17 -0
  44. package/lib/@openglobus/js/control/ScaleControl.d.ts +24 -0
  45. package/lib/@openglobus/js/control/SegmentBoundVisualization.d.ts +12 -0
  46. package/lib/@openglobus/js/control/ShowFps.d.ts +9 -0
  47. package/lib/@openglobus/js/control/SimpleNavigation.d.ts +25 -0
  48. package/lib/@openglobus/js/control/SimpleSkyBackground.d.ts +17 -0
  49. package/lib/@openglobus/js/control/Sun.d.ts +33 -0
  50. package/lib/@openglobus/js/control/ToggleWireframe.d.ts +14 -0
  51. package/lib/@openglobus/js/control/TouchNavigation.d.ts +52 -0
  52. package/lib/@openglobus/js/control/ZoomControl.d.ts +27 -0
  53. package/lib/@openglobus/js/control/drawing/DrawingControl.d.ts +12 -0
  54. package/lib/@openglobus/js/control/drawing/LineStringDrawingScene.d.ts +15 -0
  55. package/lib/@openglobus/js/control/drawing/PolygonDrawingScene.d.ts +98 -0
  56. package/lib/@openglobus/js/control/elevationProfile/ElevationProfile.d.ts +77 -0
  57. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileButtonsView.d.ts +14 -0
  58. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileControl.d.ts +33 -0
  59. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileLegend.d.ts +20 -0
  60. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileScene.d.ts +80 -0
  61. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileView.d.ts +63 -0
  62. package/lib/@openglobus/js/control/elevationProfile/PointListDialog.d.ts +12 -0
  63. package/lib/@openglobus/js/control/heightRuler/HeightRuler.d.ts +7 -0
  64. package/lib/@openglobus/js/control/heightRuler/HeightRulerScene.d.ts +35 -0
  65. package/lib/@openglobus/js/control/heightRuler/HeightRulerSwitcher.d.ts +6 -0
  66. package/lib/@openglobus/js/control/index.d.ts +29 -0
  67. package/lib/@openglobus/js/control/ruler/Ruler.d.ts +13 -0
  68. package/lib/@openglobus/js/control/ruler/RulerScene.d.ts +88 -0
  69. package/lib/@openglobus/js/control/selection/Selection.d.ts +55 -0
  70. package/lib/@openglobus/js/control/selection/SelectionScene.d.ts +44 -0
  71. package/lib/@openglobus/js/control/timeline/TimelineControl.d.ts +18 -0
  72. package/lib/@openglobus/js/control/timeline/TimelineModel.d.ts +41 -0
  73. package/lib/@openglobus/js/control/timeline/TimelineView.d.ts +85 -0
  74. package/lib/@openglobus/js/control/timeline/timelineUtils.d.ts +12 -0
  75. package/lib/@openglobus/js/control/visibleExtent/drawnode.d.ts +7 -0
  76. package/lib/@openglobus/js/ellipsoid/Ellipsoid.d.ts +193 -0
  77. package/lib/@openglobus/js/ellipsoid/index.d.ts +3 -0
  78. package/lib/@openglobus/js/ellipsoid/wgs84.d.ts +6 -0
  79. package/lib/@openglobus/js/entity/BaseBillboard.d.ts +222 -0
  80. package/lib/@openglobus/js/entity/BaseBillboardHandler.d.ts +81 -0
  81. package/lib/@openglobus/js/entity/Billboard.d.ts +113 -0
  82. package/lib/@openglobus/js/entity/BillboardHandler.d.ts +15 -0
  83. package/lib/@openglobus/js/entity/Entity.d.ts +354 -0
  84. package/lib/@openglobus/js/entity/EntityCollection.d.ts +363 -0
  85. package/lib/@openglobus/js/entity/GeoObject.d.ts +152 -0
  86. package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +104 -0
  87. package/lib/@openglobus/js/entity/Geometry.d.ts +124 -0
  88. package/lib/@openglobus/js/entity/GeometryHandler.d.ts +84 -0
  89. package/lib/@openglobus/js/entity/Label.d.ts +214 -0
  90. package/lib/@openglobus/js/entity/LabelHandler.d.ts +65 -0
  91. package/lib/@openglobus/js/entity/LabelWorker.d.ts +15 -0
  92. package/lib/@openglobus/js/entity/PointCloud.d.ts +179 -0
  93. package/lib/@openglobus/js/entity/PointCloudHandler.d.ts +42 -0
  94. package/lib/@openglobus/js/entity/Polyline.d.ts +345 -0
  95. package/lib/@openglobus/js/entity/PolylineHandler.d.ts +22 -0
  96. package/lib/@openglobus/js/entity/Ray.d.ts +133 -0
  97. package/lib/@openglobus/js/entity/RayHandler.d.ts +70 -0
  98. package/lib/@openglobus/js/entity/Strip.d.ts +139 -0
  99. package/lib/@openglobus/js/entity/StripHandler.d.ts +42 -0
  100. package/lib/@openglobus/js/entity/index.d.ts +10 -0
  101. package/lib/@openglobus/js/index.d.ts +33 -0
  102. package/lib/@openglobus/js/input/KeyboardHandler.d.ts +33 -0
  103. package/lib/@openglobus/js/input/MouseHandler.d.ts +16 -0
  104. package/lib/@openglobus/js/input/TouchHandler.d.ts +11 -0
  105. package/lib/@openglobus/js/input/input.d.ts +3 -0
  106. package/lib/@openglobus/js/layer/BaseGeoImage.d.ts +145 -0
  107. package/lib/@openglobus/js/layer/Bing.d.ts +4 -0
  108. package/lib/@openglobus/js/layer/CanvasTiles.d.ts +103 -0
  109. package/lib/@openglobus/js/layer/GeoImage.d.ts +61 -0
  110. package/lib/@openglobus/js/layer/GeoTexture2d.d.ts +17 -0
  111. package/lib/@openglobus/js/layer/GeoVideo.d.ts +68 -0
  112. package/lib/@openglobus/js/layer/KML.d.ts +72 -0
  113. package/lib/@openglobus/js/layer/Layer.d.ts +415 -0
  114. package/lib/@openglobus/js/layer/Material.d.ts +34 -0
  115. package/lib/@openglobus/js/layer/OpenStreetMap.d.ts +4 -0
  116. package/lib/@openglobus/js/layer/Vector.d.ts +246 -0
  117. package/lib/@openglobus/js/layer/WMS.d.ts +75 -0
  118. package/lib/@openglobus/js/layer/XYZ.d.ts +148 -0
  119. package/lib/@openglobus/js/layer/index.d.ts +12 -0
  120. package/lib/@openglobus/js/light/LightSource.d.ts +174 -0
  121. package/lib/@openglobus/js/math/Line2.d.ts +11 -0
  122. package/lib/@openglobus/js/math/Line3.d.ts +28 -0
  123. package/lib/@openglobus/js/math/Mat3.d.ts +77 -0
  124. package/lib/@openglobus/js/math/Mat4.d.ts +195 -0
  125. package/lib/@openglobus/js/math/Plane.d.ts +20 -0
  126. package/lib/@openglobus/js/math/Quat.d.ts +373 -0
  127. package/lib/@openglobus/js/math/Ray.d.ts +76 -0
  128. package/lib/@openglobus/js/math/Vec2.d.ts +310 -0
  129. package/lib/@openglobus/js/math/Vec3.d.ts +472 -0
  130. package/lib/@openglobus/js/math/Vec4.d.ts +163 -0
  131. package/lib/@openglobus/js/math/coder.d.ts +51 -0
  132. package/lib/@openglobus/js/math/index.d.ts +11 -0
  133. package/lib/@openglobus/js/math.d.ts +266 -0
  134. package/lib/@openglobus/js/mercator.d.ts +92 -0
  135. package/lib/@openglobus/js/proj/EPSG3857.d.ts +9 -0
  136. package/lib/@openglobus/js/proj/EPSG4326.d.ts +9 -0
  137. package/lib/@openglobus/js/proj/Proj.d.ts +43 -0
  138. package/lib/@openglobus/js/quadTree/EPSG4326QuadTreeStrategy.d.ts +6 -0
  139. package/lib/@openglobus/js/quadTree/EarthQuadTreeStrategy.d.ts +9 -0
  140. package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +54 -0
  141. package/lib/@openglobus/js/quadTree/MarsQuadTreeStrategy.d.ts +11 -0
  142. package/lib/@openglobus/js/quadTree/Node.d.ts +80 -0
  143. package/lib/@openglobus/js/quadTree/QuadTreeStrategy.d.ts +28 -0
  144. package/lib/@openglobus/js/quadTree/Wgs84QuadTreeStrategy.d.ts +6 -0
  145. package/lib/@openglobus/js/quadTree/index.d.ts +12 -0
  146. package/lib/@openglobus/js/quadTree/quadTree.d.ts +40 -0
  147. package/lib/@openglobus/js/renderer/Renderer.d.ts +319 -0
  148. package/lib/@openglobus/js/renderer/RendererEvents.d.ts +240 -0
  149. package/lib/@openglobus/js/scene/Axes.d.ts +12 -0
  150. package/lib/@openglobus/js/scene/BaseNode.d.ts +61 -0
  151. package/lib/@openglobus/js/scene/Planet.d.ts +652 -0
  152. package/lib/@openglobus/js/scene/RenderNode.d.ts +150 -0
  153. package/lib/@openglobus/js/scene/SkyBox.d.ts +13 -0
  154. package/lib/@openglobus/js/scene/index.d.ts +5 -0
  155. package/lib/@openglobus/js/segment/Segment.d.ts +288 -0
  156. package/lib/@openglobus/js/segment/SegmentLonLat.d.ts +44 -0
  157. package/lib/@openglobus/js/segment/SegmentLonLatWgs84.d.ts +10 -0
  158. package/lib/@openglobus/js/segment/Slice.d.ts +13 -0
  159. package/lib/@openglobus/js/segment/segmentHelper.d.ts +18 -0
  160. package/lib/@openglobus/js/shaders/atmos.d.ts +4 -0
  161. package/lib/@openglobus/js/shaders/billboard.d.ts +3 -0
  162. package/lib/@openglobus/js/shaders/bloom.d.ts +2 -0
  163. package/lib/@openglobus/js/shaders/blur.d.ts +3 -0
  164. package/lib/@openglobus/js/shaders/depth.d.ts +2 -0
  165. package/lib/@openglobus/js/shaders/drawnode.d.ts +8 -0
  166. package/lib/@openglobus/js/shaders/geoObject.d.ts +3 -0
  167. package/lib/@openglobus/js/shaders/label.d.ts +4 -0
  168. package/lib/@openglobus/js/shaders/lumFilter.d.ts +2 -0
  169. package/lib/@openglobus/js/shaders/pointCloud.d.ts +2 -0
  170. package/lib/@openglobus/js/shaders/polyline.d.ts +3 -0
  171. package/lib/@openglobus/js/shaders/ray.d.ts +2 -0
  172. package/lib/@openglobus/js/shaders/screenFrame.d.ts +2 -0
  173. package/lib/@openglobus/js/shaders/skybox.d.ts +2 -0
  174. package/lib/@openglobus/js/shaders/toneMapping.d.ts +2 -0
  175. package/lib/@openglobus/js/shaders/utils.d.ts +1 -0
  176. package/lib/@openglobus/js/terrain/BilTerrain.d.ts +18 -0
  177. package/lib/@openglobus/js/terrain/EmptyTerrain.d.ts +113 -0
  178. package/lib/@openglobus/js/terrain/Geoid.d.ts +33 -0
  179. package/lib/@openglobus/js/terrain/GlobusRgbTerrain.d.ts +6 -0
  180. package/lib/@openglobus/js/terrain/GlobusTerrain.d.ts +137 -0
  181. package/lib/{js/terrain/MapboxTerrain.d.ts → @openglobus/js/terrain/RgbTerrain.d.ts} +5 -5
  182. package/lib/@openglobus/js/terrain/index.d.ts +6 -0
  183. package/lib/@openglobus/js/ui/Button.d.ts +32 -0
  184. package/lib/@openglobus/js/ui/ButtonGroup.d.ts +16 -0
  185. package/lib/@openglobus/js/ui/Color.d.ts +22 -0
  186. package/lib/@openglobus/js/ui/Dialog.d.ts +55 -0
  187. package/lib/@openglobus/js/ui/Slider.d.ts +38 -0
  188. package/lib/@openglobus/js/ui/ToggleButton.d.ts +20 -0
  189. package/lib/@openglobus/js/ui/View.d.ts +37 -0
  190. package/lib/@openglobus/js/ui/icons.d.ts +1 -0
  191. package/lib/@openglobus/js/utils/BaseWorker.d.ts +14 -0
  192. package/lib/@openglobus/js/utils/FontAtlas.d.ts +82 -0
  193. package/lib/@openglobus/js/utils/GeoImageCreator.d.ts +34 -0
  194. package/lib/@openglobus/js/utils/ImagesCacheManager.d.ts +22 -0
  195. package/lib/@openglobus/js/utils/Loader.d.ts +63 -0
  196. package/lib/@openglobus/js/utils/NormalMapCreator.d.ts +52 -0
  197. package/lib/@openglobus/js/utils/PlainSegmentWorker.d.ts +24 -0
  198. package/lib/@openglobus/js/utils/TerrainWorker.d.ts +28 -0
  199. package/lib/@openglobus/js/utils/TextureAtlas.d.ts +113 -0
  200. package/lib/@openglobus/js/utils/VectorTileCreator.d.ts +18 -0
  201. package/lib/@openglobus/js/utils/colorTable.d.ts +3 -0
  202. package/lib/@openglobus/js/utils/earcut.d.ts +7 -0
  203. package/lib/@openglobus/js/utils/objParser.d.ts +24 -0
  204. package/lib/@openglobus/js/utils/shared.d.ts +263 -0
  205. package/lib/@openglobus/js/utils/units.d.ts +16 -0
  206. package/lib/@openglobus/js/webgl/BaseFramebuffer.d.ts +53 -0
  207. package/lib/@openglobus/js/webgl/Framebuffer.d.ts +69 -0
  208. package/lib/@openglobus/js/webgl/Handler.d.ts +473 -0
  209. package/lib/@openglobus/js/webgl/Multisample.d.ts +27 -0
  210. package/lib/@openglobus/js/webgl/Program.d.ts +159 -0
  211. package/lib/@openglobus/js/webgl/ProgramController.d.ts +86 -0
  212. package/lib/@openglobus/js/webgl/index.d.ts +6 -0
  213. package/lib/@openglobus/js/webgl/types.d.ts +9 -0
  214. package/lib/@openglobus/js/webgl/variableHandlers.d.ts +22 -0
  215. package/lib/@openglobus/og.css +1 -1
  216. package/lib/@openglobus/og.esm.js +1 -1
  217. package/lib/@openglobus/og.esm.js.map +1 -1
  218. package/lib/@openglobus/og.umd.js +1 -1
  219. package/lib/@openglobus/og.umd.js.map +1 -1
  220. package/lib/js/Extent.js +2 -2
  221. package/lib/js/Globe.d.ts +1 -1
  222. package/lib/js/Object3d.d.ts +8 -1
  223. package/lib/js/Object3d.js +12 -2
  224. package/lib/js/camera/Frustum.d.ts +1 -1
  225. package/lib/js/camera/Frustum.js +3 -2
  226. package/lib/js/control/DebugInfo.js +19 -18
  227. package/lib/js/control/Lighting.d.ts +4 -0
  228. package/lib/js/control/Lighting.js +51 -12
  229. package/lib/js/control/SimpleSkyBackground.d.ts +2 -0
  230. package/lib/js/control/SimpleSkyBackground.js +13 -3
  231. package/lib/js/control/drawing/PolygonDrawingScene.js +2 -2
  232. package/lib/js/control/visibleExtent/drawnode.js +1 -1
  233. package/lib/js/entity/GeoObject.d.ts +12 -3
  234. package/lib/js/entity/GeoObject.js +34 -2
  235. package/lib/js/entity/GeoObjectHandler.d.ts +5 -0
  236. package/lib/js/entity/GeoObjectHandler.js +47 -0
  237. package/lib/js/entity/Geometry.d.ts +24 -11
  238. package/lib/js/entity/Geometry.js +17 -9
  239. package/lib/js/entity/GeometryHandler.js +5 -5
  240. package/lib/js/entity/Label.d.ts +7 -0
  241. package/lib/js/entity/Label.js +11 -0
  242. package/lib/js/entity/Polyline.d.ts +15 -7
  243. package/lib/js/entity/Polyline.js +54 -6
  244. package/lib/js/entity/Strip.d.ts +12 -0
  245. package/lib/js/entity/Strip.js +16 -0
  246. package/lib/js/entity/StripHandler.js +1 -1
  247. package/lib/js/entity/index.d.ts +10 -11
  248. package/lib/js/entity/index.js +10 -11
  249. package/lib/js/index.d.ts +5 -5
  250. package/lib/js/index.js +5 -5
  251. package/lib/js/layer/Bing.d.ts +4 -0
  252. package/lib/js/layer/Bing.js +40 -0
  253. package/lib/js/layer/GeoImage.d.ts +1 -1
  254. package/lib/js/layer/GeoVideo.d.ts +1 -1
  255. package/lib/js/layer/Layer.d.ts +1 -1
  256. package/lib/js/layer/Layer.js +2 -2
  257. package/lib/js/layer/OpenStreetMap.d.ts +4 -0
  258. package/lib/js/layer/OpenStreetMap.js +19 -0
  259. package/lib/js/layer/Vector.d.ts +3 -0
  260. package/lib/js/layer/Vector.js +3 -3
  261. package/lib/js/layer/index.d.ts +12 -11
  262. package/lib/js/layer/index.js +12 -11
  263. package/lib/js/math/Mat4.js +18 -17
  264. package/lib/js/mercator.js +2 -1
  265. package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +4 -5
  266. package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +3 -0
  267. package/lib/js/quadTree/EarthQuadTreeStrategy.js +40 -5
  268. package/lib/js/quadTree/EntityCollectionNode.d.ts +2 -2
  269. package/lib/js/quadTree/EntityCollectionNode.js +13 -14
  270. package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +5 -0
  271. package/lib/js/quadTree/MarsQuadTreeStrategy.js +31 -5
  272. package/lib/js/quadTree/Node.d.ts +2 -1
  273. package/lib/js/quadTree/Node.js +38 -28
  274. package/lib/js/quadTree/QuadTreeStrategy.d.ts +3 -0
  275. package/lib/js/quadTree/QuadTreeStrategy.js +17 -0
  276. package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +3 -3
  277. package/lib/js/renderer/Renderer.js +1 -0
  278. package/lib/js/scene/Planet.js +6 -4
  279. package/lib/js/segment/Segment.d.ts +12 -9
  280. package/lib/js/segment/Segment.js +47 -24
  281. package/lib/js/segment/SegmentLonLat.d.ts +1 -5
  282. package/lib/js/segment/SegmentLonLat.js +8 -100
  283. package/lib/js/segment/SegmentLonLatWgs84.js +5 -3
  284. package/lib/js/shaders/billboard.js +4 -4
  285. package/lib/js/shaders/drawnode.js +16 -19
  286. package/lib/js/shaders/geoObject.js +4 -5
  287. package/lib/js/shaders/ray.js +7 -3
  288. package/lib/js/terrain/BilTerrain.d.ts +1 -1
  289. package/lib/js/terrain/BilTerrain.js +7 -6
  290. package/lib/js/terrain/EmptyTerrain.d.ts +7 -0
  291. package/lib/js/terrain/EmptyTerrain.js +7 -0
  292. package/lib/js/terrain/GlobusRgbTerrain.d.ts +6 -0
  293. package/lib/js/terrain/GlobusRgbTerrain.js +25 -0
  294. package/lib/js/terrain/GlobusTerrain.d.ts +5 -5
  295. package/lib/js/terrain/GlobusTerrain.js +35 -30
  296. package/lib/js/terrain/RgbTerrain.d.ts +22 -0
  297. package/lib/js/terrain/RgbTerrain.js +415 -0
  298. package/lib/js/terrain/index.d.ts +3 -2
  299. package/lib/js/terrain/index.js +3 -2
  300. package/lib/js/ui/Color.d.ts +22 -0
  301. package/lib/js/ui/Color.js +58 -0
  302. package/lib/js/utils/GeoImageCreator.js +1 -1
  303. package/lib/js/utils/NormalMapCreator.js +1 -1
  304. package/lib/js/utils/VectorTileCreator.js +3 -3
  305. package/lib/js/utils/shared.d.ts +1 -8
  306. package/lib/js/utils/shared.js +17 -8
  307. package/package.json +2 -1
  308. package/lib/js/terrain/MapboxTerrain.js +0 -305
@@ -3,7 +3,7 @@ import * as segmentHelper from "../segment/segmentHelper";
3
3
  import { Box } from "../bv/Box";
4
4
  import { Extent } from "../Extent";
5
5
  import { EPSG3857 } from "../proj/EPSG3857";
6
- import { E, N, NOTRENDERING, OPSIDE, S, W } from "../quadTree/quadTree";
6
+ import { E, N, OPSIDE, S, W } from "../quadTree/quadTree";
7
7
  import { getMatrixSubArray64 } from "../utils/shared";
8
8
  import { Layer } from "../layer/Layer";
9
9
  import { LonLat } from "../LonLat";
@@ -11,9 +11,30 @@ import { Sphere } from "../bv/Sphere";
11
11
  import { Slice } from "./Slice";
12
12
  import { Ray } from "../math/Ray";
13
13
  import { Vec3 } from "../math/Vec3";
14
+ import { MAX_LAT } from "../mercator";
15
+ //Math.round(Math.abs(-pole - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
16
+ export function getTileCellIndex(coordinate, tileSize, worldEdge) {
17
+ return Math.floor(Math.abs(worldEdge - coordinate) / tileSize);
18
+ }
19
+ export function getTileCellExtent(x, y, z, worldExtent) {
20
+ let pz = 1.0 / (1 << z);
21
+ let worldWidth = worldExtent.getWidth(), worldHeight = worldExtent.getHeight();
22
+ let w = worldWidth * pz, h = worldHeight * pz;
23
+ let sw_lon = worldExtent.southWest.lon + x * w, ne_lat = worldExtent.northEast.lat - y * h;
24
+ return new Extent(new LonLat(sw_lon, ne_lat - h), new LonLat(sw_lon + w, ne_lat));
25
+ }
14
26
  export const TILEGROUP_COMMON = 0;
15
- export const TILEGROUP_NORTH = 1;
16
- export const TILEGROUP_SOUTH = 2;
27
+ export const TILEGROUP_NORTH = 20;
28
+ export const TILEGROUP_SOUTH = 300;
29
+ export function getTileGroupByLat(lat, maxLat = MAX_LAT) {
30
+ if (lat > maxLat) {
31
+ return TILEGROUP_NORTH;
32
+ }
33
+ else if (lat < -maxLat) {
34
+ return TILEGROUP_SOUTH;
35
+ }
36
+ return TILEGROUP_COMMON;
37
+ }
17
38
  let _tempHigh = new Vec3();
18
39
  let _tempLow = new Vec3();
19
40
  let _v0 = new Vec3(), _v1 = new Vec3(), _v2 = new Vec3(), _v3 = new Vec3();
@@ -57,6 +78,7 @@ class Segment {
57
78
  this.gridSize = planet.terrain.gridSizeByZoom[tileZoom];
58
79
  this.fileGridSize = 0;
59
80
  this.tileZoom = tileZoom;
81
+ this.powTileZoom = 1 << tileZoom; //Math.pow(2, tileZoom);
60
82
  this.tileX = 0;
61
83
  this.tileXE = 0;
62
84
  this.tileXW = 0;
@@ -64,6 +86,7 @@ class Segment {
64
86
  this.tileYS = 0;
65
87
  this.tileY = 0;
66
88
  this.tileIndex = "";
89
+ this.elevationData = null;
67
90
  this._assignTileIndexes();
68
91
  /**
69
92
  * @toso: Check it should be Map<number, Material> instead of array
@@ -221,6 +244,8 @@ class Segment {
221
244
  if (this.plainReady && this.terrainIsLoading) {
222
245
  let _elevations = new Float32Array(elevations.length);
223
246
  _elevations.set(elevations);
247
+ this.elevationData = new Float32Array(elevations.length);
248
+ this.elevationData.set(elevations);
224
249
  this.planet._terrainWorker.make({ segment: this, elevations: _elevations });
225
250
  this.plainVerticesHigh = null;
226
251
  this.plainVerticesLow = null;
@@ -284,7 +309,7 @@ class Segment {
284
309
  }
285
310
  equalize() {
286
311
  // Equalization doesnt work correctly for gridSize equals 2
287
- if (this.gridSize < 2) {
312
+ if (this.tileZoom < 2 || this.gridSize < 2) {
288
313
  return;
289
314
  }
290
315
  this.readyToEngage = true;
@@ -772,14 +797,16 @@ class Segment {
772
797
  const tileZoom = this.tileZoom;
773
798
  const extent = this._extent;
774
799
  const pole = mercator.POLE;
775
- this.tileX = Math.round(Math.abs(-pole - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
776
- this.tileY = Math.round(Math.abs(pole - extent.northEast.lat) / (extent.northEast.lat - extent.southWest.lat));
777
- const p2 = Math.pow(2, tileZoom);
800
+ // this.tileX = Math.round(Math.abs(-pole - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
801
+ // this.tileY = Math.round(Math.abs(pole - extent.northEast.lat) / (extent.northEast.lat - extent.southWest.lat));
802
+ this.tileX = getTileCellIndex(extent.getCenter().lon, extent.getWidth(), -pole);
803
+ this.tileY = getTileCellIndex(extent.getCenter().lat, extent.getHeight(), pole);
804
+ const p2 = this.powTileZoom; //Math.pow(2, tileZoom);
778
805
  this.tileXE = (this.tileX + 1) % p2;
779
806
  this.tileXW = (p2 + this.tileX - 1) % p2;
780
807
  this.tileYN = this.tileY - 1;
781
808
  this.tileYS = this.tileY + 1;
782
- this.tileIndex = Layer.getTileIndex(this.tileX, this.tileY, tileZoom);
809
+ this.tileIndex = Layer.getTileIndex(this.tileX, this.tileY, tileZoom, this._tileGroup);
783
810
  }
784
811
  initialize() {
785
812
  const p = this.planet;
@@ -836,16 +863,22 @@ class Segment {
836
863
  this._createPlainVertices();
837
864
  this.readyToEngage = true;
838
865
  }
866
+ _projToDeg(lon, lat) {
867
+ return LonLat.inverseMercator(lon, lat);
868
+ }
839
869
  _createPlainVertices() {
840
870
  const gridSize = this.planet.terrain.gridSizeByZoom[this.tileZoom];
841
- const e = this._extent;
842
871
  const fgs = this.planet.terrain.plainGridSize;
872
+ const currGridSize = Math.max(fgs, gridSize);
873
+ const e = this._extent;
843
874
  const lonSize = e.getWidth();
844
- const llStep = lonSize / Math.max(fgs, gridSize);
875
+ const latSize = e.getHeight();
876
+ const llStep = lonSize / currGridSize;
877
+ const ltStep = latSize / currGridSize;
845
878
  const esw_lon = e.southWest.lon;
846
879
  const ene_lat = e.northEast.lat;
847
880
  const dg = Math.max(fgs / gridSize, 1);
848
- const gs = Math.max(fgs, gridSize) + 1;
881
+ const gs = currGridSize + 1;
849
882
  const r2 = this.planet.ellipsoid._invRadii2;
850
883
  const gsgs = gs * gs;
851
884
  const gridSize3 = (gridSize + 1) * (gridSize + 1) * 3;
@@ -861,7 +894,7 @@ class Segment {
861
894
  let verts = this.plainVertices, vertsHigh = this.plainVerticesHigh, vertsLow = this.plainVerticesLow, norms = this.plainNormals, nmVerts = this.normalMapVertices, nmVertsHigh = this.normalMapVerticesHigh, nmVertsLow = this.normalMapVerticesLow, nmNorms = this.normalMapNormals;
862
895
  for (let k = 0; k < gsgs; k++) {
863
896
  let j = k % gs, i = ~~(k / gs);
864
- let v = this.planet.ellipsoid.lonLatToCartesian(LonLat.inverseMercator(esw_lon + j * llStep, ene_lat - i * llStep));
897
+ let v = this.planet.ellipsoid.lonLatToCartesian(this._projToDeg(esw_lon + j * llStep, ene_lat - i * ltStep));
865
898
  let nx = v.x * r2.x, ny = v.y * r2.y, nz = v.z * r2.z;
866
899
  let l = 1.0 / Math.sqrt(nx * nx + ny * ny + nz * nz);
867
900
  let nxl = nx * l, nyl = ny * l, nzl = nz * l;
@@ -1040,8 +1073,8 @@ class Segment {
1040
1073
  while (i--) {
1041
1074
  let n = this.node._fadingNodes[i];
1042
1075
  if (n.segment) {
1043
- if (n.segment._transitionOpacity > 0 && !this.planet._fadingNodes.has(n.nodeId)) {
1044
- this.planet._fadingNodes.set(n.nodeId, n);
1076
+ if (n.segment._transitionOpacity > 0 && !this.planet._fadingNodes.has(n.__id)) {
1077
+ this.planet._fadingNodes.set(n.__id, n);
1045
1078
  n.segment._transitionOpacity = 2.0 - this._transitionOpacity;
1046
1079
  if (n.segment._transitionOpacity === 0) {
1047
1080
  this.node._fadingNodes.splice(i, 1);
@@ -1141,9 +1174,6 @@ class Segment {
1141
1174
  }
1142
1175
  return cache.buffer;
1143
1176
  }
1144
- /**
1145
- * @todo: replace to the strategy
1146
- */
1147
1177
  _collectVisibleNodes() {
1148
1178
  this.planet._visibleNodes[this.node.nodeId] = this.node;
1149
1179
  }
@@ -1162,13 +1192,6 @@ class Segment {
1162
1192
  getExtent() {
1163
1193
  return this._extent;
1164
1194
  }
1165
- /**
1166
- * @todo replace to the strategy
1167
- */
1168
- getNodeState() {
1169
- let vn = this.planet._visibleNodes[this.node.nodeId];
1170
- return (vn && vn.state) || NOTRENDERING;
1171
- }
1172
1195
  getNeighborSide(b) {
1173
1196
  if (this.tileY === b.tileY) {
1174
1197
  if (this.tileX === b.tileXE) {
@@ -23,7 +23,7 @@ declare class SegmentLonLat extends Segment {
23
23
  protected _assignTileIndexes(): void;
24
24
  protected _assignTileXIndexes(extent: Extent): void;
25
25
  protected _assignTileYIndexes(extent: Extent): void;
26
- protected _createPlainVertices(): void;
26
+ protected _projToDeg(lon: number, lat: number): LonLat;
27
27
  protected _assignGlobalTextureCoordinates(): void;
28
28
  /**
29
29
  * @todo: replace to the strategy
@@ -40,9 +40,5 @@ declare class SegmentLonLat extends Segment {
40
40
  layerOverlap(layer: Layer): boolean;
41
41
  getDefaultTexture(): WebGLTextureExt | null;
42
42
  getExtentLonLat(): Extent;
43
- /**
44
- * @todo: replace to the strategy
45
- */
46
- getNodeState(): number;
47
43
  }
48
44
  export { SegmentLonLat };
@@ -1,14 +1,11 @@
1
1
  import * as mercator from "../mercator";
2
- import * as quadTree from "../quadTree/quadTree";
3
2
  import { EPSG4326 } from "../proj/EPSG4326";
4
3
  import { Extent } from "../Extent";
5
4
  import { Layer } from "../layer/Layer";
6
- import { Segment, TILEGROUP_NORTH, TILEGROUP_SOUTH } from "./Segment";
5
+ import { getTileCellIndex, Segment, TILEGROUP_NORTH, TILEGROUP_SOUTH } from "./Segment";
7
6
  import { LonLat } from "../LonLat";
8
- import { Vec3 } from "../math/Vec3";
9
7
  const MAX_POLE_ZOOM = 7;
10
8
  export const POLE_PIECE_SIZE = (90.0 - mercator.MAX_LAT) / Math.pow(2, MAX_POLE_ZOOM);
11
- let _tempHigh = new Vec3(), _tempLow = new Vec3();
12
9
  /**
13
10
  * Planet segment Web Mercator tile class that stored and rendered with quad tree.
14
11
  * @class
@@ -52,105 +49,29 @@ class SegmentLonLat extends Segment {
52
49
  _assignTileIndexes() {
53
50
  this._assignTileXIndexes(this._extent);
54
51
  this._assignTileYIndexes(this._extent);
55
- this.tileIndex = Layer.getTileIndex(this.tileX, this.tileY, this.tileZoom);
52
+ this.tileIndex = Layer.getTileIndex(this.tileX, this.tileY, this.tileZoom, this._tileGroup);
56
53
  }
57
54
  _assignTileXIndexes(extent) {
58
- this.tileX = Math.round(Math.abs(-180.0 - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
55
+ this.tileX = getTileCellIndex(extent.getCenter().lon, extent.getWidth(), -180);
59
56
  let p2 = 1 << this.tileZoom;
60
57
  this.tileXE = (this.tileX + 1) % p2;
61
58
  this.tileXW = (p2 + this.tileX - 1) % p2;
62
59
  }
63
60
  _assignTileYIndexes(extent) {
64
- const lat = extent.northEast.lat;
61
+ const lat = extent.getCenter().lat; //extent.northEast.lat;
65
62
  if (lat > 0) {
66
63
  this._tileGroup = TILEGROUP_NORTH;
67
- this.tileY = Math.round((90.0 - lat) / (extent.northEast.lat - extent.southWest.lat));
64
+ this.tileY = getTileCellIndex(lat, extent.getHeight(), 90.0);
68
65
  }
69
66
  else {
70
67
  this._tileGroup = TILEGROUP_SOUTH;
71
- this.tileY = Math.round((mercator.MIN_LAT - lat) / (extent.northEast.lat - extent.southWest.lat));
68
+ this.tileY = getTileCellIndex(lat, extent.getHeight(), mercator.MIN_LAT);
72
69
  }
73
70
  this.tileYN = this.tileY - 1;
74
71
  this.tileYS = this.tileY + 1;
75
72
  }
76
- _createPlainVertices() {
77
- const gridSize = this.planet.terrain.gridSizeByZoom[this.tileZoom];
78
- const e = this._extent;
79
- const fgs = this.planet.terrain.plainGridSize;
80
- const lonSize = e.getWidth();
81
- const latSize = e.getHeight();
82
- const llStep = lonSize / Math.max(fgs, gridSize);
83
- const ltStep = latSize / gridSize;
84
- const esw_lon = e.southWest.lon;
85
- const ene_lat = e.northEast.lat;
86
- const dg = Math.max(fgs / gridSize, 1);
87
- const gs = Math.max(fgs, gridSize) + 1;
88
- const r2 = this.planet.ellipsoid._invRadii2;
89
- let ind = 0, nmInd = 0;
90
- const gsgs = gs * gs;
91
- const gridSize3 = (gridSize + 1) * (gridSize + 1) * 3;
92
- this.plainNormals = new Float32Array(gridSize3);
93
- this.plainVertices = new Float64Array(gridSize3);
94
- this.plainVerticesHigh = new Float32Array(gridSize3);
95
- this.plainVerticesLow = new Float32Array(gridSize3);
96
- this.normalMapNormals = new Float32Array(gsgs * 3);
97
- this.normalMapVertices = new Float64Array(gsgs * 3);
98
- this.normalMapVerticesHigh = new Float32Array(gsgs * 3);
99
- this.normalMapVerticesLow = new Float32Array(gsgs * 3);
100
- let xmin = 549755748352.0, xmax = -549755748352.0, ymin = 549755748352.0, ymax = -549755748352.0, zmin = 549755748352.0, zmax = -549755748352.0;
101
- let verts = this.plainVertices, vertsHigh = this.plainVerticesHigh, vertsLow = this.plainVerticesLow, norms = this.plainNormals, nmVerts = this.normalMapVertices, nmVertsHigh = this.normalMapVerticesHigh, nmVertsLow = this.normalMapVerticesLow, nmNorms = this.normalMapNormals;
102
- for (let k = 0; k < gsgs; k++) {
103
- let j = k % gs, i = ~~(k / gs);
104
- const v = this.planet.ellipsoid.lonLatToCartesian(new LonLat(esw_lon + j * llStep, ene_lat - i * ltStep));
105
- let nx = v.x * r2.x, ny = v.y * r2.y, nz = v.z * r2.z;
106
- let l = 1.0 / Math.sqrt(nx * nx + ny * ny + nz * nz);
107
- let nxl = nx * l, nyl = ny * l, nzl = nz * l;
108
- Vec3.doubleToTwoFloats(v, _tempHigh, _tempLow);
109
- nmVerts[nmInd] = v.x;
110
- nmVertsHigh[nmInd] = _tempHigh.x;
111
- nmVertsLow[nmInd] = _tempLow.x;
112
- nmNorms[nmInd++] = nxl;
113
- nmVerts[nmInd] = v.y;
114
- nmVertsHigh[nmInd] = _tempHigh.y;
115
- nmVertsLow[nmInd] = _tempLow.y;
116
- nmNorms[nmInd++] = nyl;
117
- nmVerts[nmInd] = v.z;
118
- nmVertsHigh[nmInd] = _tempHigh.z;
119
- nmVertsLow[nmInd] = _tempLow.z;
120
- nmNorms[nmInd++] = nzl;
121
- if (i % dg === 0 && j % dg === 0) {
122
- verts[ind] = v.x;
123
- vertsHigh[ind] = _tempHigh.x;
124
- vertsLow[ind] = _tempLow.x;
125
- norms[ind++] = nxl;
126
- verts[ind] = v.y;
127
- vertsHigh[ind] = _tempHigh.y;
128
- vertsLow[ind] = _tempLow.y;
129
- norms[ind++] = nyl;
130
- verts[ind] = v.z;
131
- vertsHigh[ind] = _tempHigh.z;
132
- vertsLow[ind] = _tempLow.z;
133
- norms[ind++] = nzl;
134
- if (v.x < xmin)
135
- xmin = v.x;
136
- if (v.x > xmax)
137
- xmax = v.x;
138
- if (v.y < ymin)
139
- ymin = v.y;
140
- if (v.y > ymax)
141
- ymax = v.y;
142
- if (v.z < zmin)
143
- zmin = v.z;
144
- if (v.z > zmax)
145
- zmax = v.z;
146
- }
147
- }
148
- this.terrainVertices = verts;
149
- this.terrainVerticesHigh = vertsHigh;
150
- this.terrainVerticesLow = vertsLow;
151
- let x = (xmax - xmin) * 0.5, y = (ymax - ymin) * 0.5, z = (zmax - zmin) * 0.5;
152
- this._plainRadius = Math.sqrt(x * x + y * y + z * z);
153
- this.plainReady = true;
73
+ _projToDeg(lon, lat) {
74
+ return new LonLat(lon, lat);
154
75
  }
155
76
  _assignGlobalTextureCoordinates() {
156
77
  const e = this._extent;
@@ -197,18 +118,5 @@ class SegmentLonLat extends Segment {
197
118
  getExtentLonLat() {
198
119
  return this._extent;
199
120
  }
200
- /**
201
- * @todo: replace to the strategy
202
- */
203
- getNodeState() {
204
- let vn;
205
- if (this._isNorth) {
206
- vn = this.planet._visibleNodesNorth[this.node.nodeId];
207
- }
208
- else {
209
- vn = this.planet._visibleNodesSouth[this.node.nodeId];
210
- }
211
- return (vn && vn.state) || quadTree.NOTRENDERING;
212
- }
213
121
  }
214
122
  export { SegmentLonLat };
@@ -1,5 +1,5 @@
1
1
  import { SegmentLonLat } from "./SegmentLonLat";
2
- import { TILEGROUP_COMMON } from "./Segment";
2
+ import { getTileCellIndex, TILEGROUP_COMMON } from "./Segment";
3
3
  export class SegmentLonLatWgs84 extends SegmentLonLat {
4
4
  constructor(node, planet, tileZoom, extent) {
5
5
  super(node, planet, tileZoom, extent);
@@ -10,12 +10,14 @@ export class SegmentLonLatWgs84 extends SegmentLonLat {
10
10
  return 150;
11
11
  }
12
12
  _assignTileYIndexes(extent) {
13
- this.tileY = Math.round((90.0 - extent.northEast.lat) / (extent.northEast.lat - extent.southWest.lat));
13
+ const lat = extent.getCenter().lat;
14
+ this.tileY = getTileCellIndex(lat, extent.getHeight(), 90.0);
14
15
  this.tileYN = this.tileY - 1;
15
16
  this.tileYS = this.tileY + 1;
16
17
  }
17
18
  _assignTileXIndexes(extent) {
18
- this.tileX = Math.round(Math.abs(-180.0 - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
19
+ let lon = extent.getCenter().lon;
20
+ this.tileX = getTileCellIndex(lon, extent.getWidth(), -180);
19
21
  let p2 = (1 << this.tileZoom) * 2;
20
22
  this.tileXE = (this.tileX + 1) % p2;
21
23
  this.tileXW = (p2 + this.tileX - 1) % p2;
@@ -68,8 +68,8 @@ export function billboardPicking() {
68
68
  return;
69
69
  }
70
70
 
71
- vec3 up = vec3( viewMatrix[0][1], viewMatrix[1][1], viewMatrix[2][1] );
72
- vec3 right = vec3( viewMatrix[0][0], viewMatrix[1][0], viewMatrix[2][0] );
71
+ //vec3 up = vec3( viewMatrix[0][1], viewMatrix[1][1], viewMatrix[2][1] );
72
+ //vec3 right = vec3( viewMatrix[0][0], viewMatrix[1][0], viewMatrix[2][0] );
73
73
 
74
74
  float scd = (1.0 - smoothstep(uScaleByDistance[0], uScaleByDistance[1], lookDist)) * (1.0 - step(uScaleByDistance[2], lookDist));
75
75
 
@@ -171,8 +171,8 @@ export function billboard_screen() {
171
171
  return;
172
172
  }
173
173
 
174
- vec3 up = vec3( viewMatrix[0][1], viewMatrix[1][1], viewMatrix[2][1] );
175
- vec3 right = vec3( viewMatrix[0][0], viewMatrix[1][0], viewMatrix[2][0] );
174
+ //vec3 up = vec3( viewMatrix[0][1], viewMatrix[1][1], viewMatrix[2][1] );
175
+ //vec3 right = vec3( viewMatrix[0][0], viewMatrix[1][0], viewMatrix[2][0] );
176
176
 
177
177
  float scd = (1.0 - smoothstep(uScaleByDistance[0], uScaleByDistance[1], lookDist)) * (1.0 - step(uScaleByDistance[2], lookDist));
178
178
 
@@ -64,7 +64,7 @@ export function drawnode_screen_nl() {
64
64
  vec3 lowDiff = aVertexPositionLow - eyePositionLow + nh;
65
65
 
66
66
  // This is works for Mac Chrome, prevent some weird optimization I suppose
67
- gl_Position = m * vec4(highDiff + lowDiff, 1.0);
67
+ gl_Position = m * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
68
68
  }`,
69
69
  fragmentShader: `precision highp float;
70
70
  #define SLICE_SIZE ${SLICE_SIZE + 1}
@@ -149,14 +149,13 @@ export function drawnode_screen_wl_webgl1NoAtmos() {
149
149
 
150
150
  void main(void) {
151
151
 
152
- // I replace it here (from the bottom) because it
153
- // somehow affects on float precision on MacPC Chrome
152
+ vec3 aVertexPosition = aVertexPositionHigh + aVertexPositionLow;
153
+ vec3 nh = height * normalize(aVertexPosition);
154
+
154
155
  vTextureCoord.xy = aTextureCoord;
155
156
  vGlobalTextureCoord = uGlobalTextureCoord.xy + (uGlobalTextureCoord.zw - uGlobalTextureCoord.xy) * aTextureCoord;
156
157
  vTextureCoord.zw = uNormalMapBias.z * ( aTextureCoord + uNormalMapBias.xy );
157
158
 
158
- vec3 aVertexPosition = aVertexPositionHigh + aVertexPositionLow;
159
- vec3 nh = height * normalize(aVertexPosition);
160
159
  cameraPosition = eyePositionHigh + eyePositionLow;
161
160
 
162
161
  vec3 highDiff = aVertexPositionHigh - eyePositionHigh;
@@ -168,7 +167,7 @@ export function drawnode_screen_wl_webgl1NoAtmos() {
168
167
  v_height = height;
169
168
  v_vertex = aVertexPosition + nh;
170
169
 
171
- gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff + lowDiff, 1.0);
170
+ gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
172
171
  }`,
173
172
  fragmentShader: `
174
173
  precision highp float;
@@ -330,14 +329,13 @@ export function drawnode_screen_wl_webgl2NoAtmos() {
330
329
 
331
330
  void main(void) {
332
331
 
333
- // I replace it here (from the bottom) because it
334
- // somehow affects on float precision on MacPC Chrome
332
+ vec3 aVertexPosition = aVertexPositionHigh + aVertexPositionLow;
333
+ vec3 nh = height * normalize(aVertexPosition);
334
+
335
335
  vTextureCoord.xy = aTextureCoord;
336
336
  vGlobalTextureCoord = uGlobalTextureCoord.xy + (uGlobalTextureCoord.zw - uGlobalTextureCoord.xy) * aTextureCoord;
337
337
  vTextureCoord.zw = uNormalMapBias.z * ( aTextureCoord + uNormalMapBias.xy );
338
338
 
339
- vec3 aVertexPosition = aVertexPositionHigh + aVertexPositionLow;
340
- vec3 nh = height * normalize(aVertexPosition);
341
339
  cameraPosition = eyePositionHigh + eyePositionLow;
342
340
 
343
341
  vec3 highDiff = aVertexPositionHigh - eyePositionHigh;
@@ -349,7 +347,7 @@ export function drawnode_screen_wl_webgl2NoAtmos() {
349
347
  v_height = height;
350
348
  v_vertex = aVertexPosition + nh;
351
349
 
352
- gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff + lowDiff, 1.0);
350
+ gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
353
351
  }`,
354
352
  fragmentShader: `#version 300 es
355
353
 
@@ -527,14 +525,13 @@ export function drawnode_screen_wl_webgl2Atmos() {
527
525
 
528
526
  void main(void) {
529
527
 
530
- // I replace it here (from the bottom) because it
531
- // somehow affects on float precision on MacPC Chrome
528
+ vec3 aVertexPosition = aVertexPositionHigh + aVertexPositionLow;
529
+ vec3 nh = height * normalize(aVertexPosition);
530
+
532
531
  vTextureCoord.xy = aTextureCoord;
533
532
  vGlobalTextureCoord = uGlobalTextureCoord.xy + (uGlobalTextureCoord.zw - uGlobalTextureCoord.xy) * aTextureCoord;
534
533
  vTextureCoord.zw = uNormalMapBias.z * ( aTextureCoord + uNormalMapBias.xy );
535
534
 
536
- vec3 aVertexPosition = aVertexPositionHigh + aVertexPositionLow;
537
- vec3 nh = height * normalize(aVertexPosition);
538
535
  cameraPosition = eyePositionHigh + eyePositionLow;
539
536
 
540
537
  vec3 highDiff = aVertexPositionHigh - eyePositionHigh;
@@ -546,7 +543,7 @@ export function drawnode_screen_wl_webgl2Atmos() {
546
543
  v_height = height;
547
544
  v_vertex = aVertexPosition + nh;
548
545
 
549
- gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff + lowDiff, 1.0);
546
+ gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
550
547
  }`,
551
548
  fragmentShader: `#version 300 es
552
549
 
@@ -850,7 +847,7 @@ export function drawnode_colorPicking() {
850
847
  vec3 highDiff = aVertexPositionHigh - eyePositionHigh;
851
848
  vec3 lowDiff = aVertexPositionLow - eyePositionLow + nh;
852
849
 
853
- gl_Position = m * vec4(highDiff + lowDiff, 1.0);
850
+ gl_Position = m * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
854
851
  }`,
855
852
  fragmentShader: `precision highp float;
856
853
  #define SLICE_SIZE ${SLICE_SIZE + 1}
@@ -930,7 +927,7 @@ export function drawnode_heightPicking() {
930
927
  vec3 highDiff = aVertexPositionHigh - eyePositionHigh;
931
928
  vec3 lowDiff = aVertexPositionLow - eyePositionLow + nh;
932
929
 
933
- gl_Position = m * vec4(highDiff + lowDiff, 1.0);
930
+ gl_Position = m * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
934
931
  }`,
935
932
  fragmentShader: `precision highp float;
936
933
 
@@ -997,7 +994,7 @@ export function drawnode_depth() {
997
994
  vec3 highDiff = aVertexPositionHigh - eyePositionHigh;
998
995
  vec3 lowDiff = aVertexPositionLow - eyePositionLow + nh;
999
996
 
1000
- gl_Position = m * vec4(highDiff + lowDiff, 1.0);
997
+ gl_Position = m * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
1001
998
  }`,
1002
999
  fragmentShader: `precision highp float;
1003
1000
  uniform vec3 frustumPickingColor;
@@ -119,13 +119,12 @@ export const geo_object = () => new Program("geo_object", {
119
119
  float scd = uScaleByDistance[2] * clamp(lookLength, uScaleByDistance[0], uScaleByDistance[1]) / uScaleByDistance[0];
120
120
 
121
121
  vec3 vert = modelMatrix * (aVertexPosition * aScale) * scd;
122
- v_vertex = position + vert;
123
122
 
124
- // @hack
125
- // Mac/Safari affects on lowDiff somehow.
126
123
  vert += lowDiff;
127
124
 
128
- gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff + vert, 1.0);
125
+ gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff * step(1.0, length(highDiff)) + vert, 1.0);
126
+
127
+ v_vertex = position + vert;
129
128
  }`,
130
129
  fragmentShader: `precision highp float;
131
130
 
@@ -266,7 +265,7 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
266
265
 
267
266
  vert += lowDiff;
268
267
 
269
- gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff + vert, 1.0);
268
+ gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff * step(1.0, length(highDiff)) + vert, 1.0);
270
269
  }`,
271
270
  fragmentShader: `precision highp float;
272
271
  varying vec3 vColor;
@@ -52,8 +52,6 @@ export function rayScreen() {
52
52
  vec3 vert = right * a_thickness * focalSize * a_vertices.x;
53
53
 
54
54
  vec3 highDiff;
55
- vec3 lowDiff;
56
-
57
55
  if(a_vertices.y == 0.0){
58
56
  highDiff = a_startPosHigh - eyePositionHigh;
59
57
  vert += a_startPosLow - eyePositionLow;
@@ -65,7 +63,13 @@ export function rayScreen() {
65
63
  mat4 viewMatrixRTE = viewMatrix;
66
64
  viewMatrixRTE[3] = vec4(0.0, 0.0, 0.0, 1.0);
67
65
 
68
- gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff + vert, 1.0);
66
+ // Hack for iMac M1, looks like it doesnt
67
+ // work correctly with zeroes in highDiff
68
+ // if(length(highDiff) < 1.0){
69
+ // highDiff = vec3(0.0);
70
+ // }
71
+
72
+ gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff * step(1.0, length(highDiff)) + vert, 1.0);
69
73
  }`,
70
74
  fragmentShader: `precision highp float;
71
75
  varying vec4 v_rgba;
@@ -13,6 +13,6 @@ declare class BilTerrain extends GlobusTerrain {
13
13
  constructor(options?: IBilTerrainParams);
14
14
  isBlur(segment: Segment): boolean;
15
15
  protected _createUrl(segment: Segment): string;
16
- protected _createHeights(data: number[], tileIndex: string, tileX: number, tileY: number, tileZoom: number, extent: Extent, preventChildren: boolean): TypedArray | number[];
16
+ protected _createHeights(data: number[], segment: Segment | null, tileGroup: number, tileX: number, tileY: number, tileZoom: number, extent: Extent, preventChildren: boolean): TypedArray | number[];
17
17
  }
18
18
  export { BilTerrain };
@@ -26,7 +26,7 @@ class BilTerrain extends GlobusTerrain {
26
26
  _createUrl(segment) {
27
27
  return WMS.createRequestUrl(this.url, this._layers, this._format, "1.1.1", "GetMap", segment._projection.code, WMS.get_bbox_v1_1_1(segment.getExtent()), this._imageSize, this._imageSize);
28
28
  }
29
- _createHeights(data, tileIndex, tileX, tileY, tileZoom, extent, preventChildren) {
29
+ _createHeights(data, segment, tileGroup, tileX, tileY, tileZoom, extent, preventChildren) {
30
30
  let bil16 = new Int16Array(data);
31
31
  //
32
32
  //Non-power of two images
@@ -48,19 +48,20 @@ class BilTerrain extends GlobusTerrain {
48
48
  }
49
49
  let outCurrenElevations = new Float32Array(elevationsSize);
50
50
  extractElevationTiles(bil16, this.noDataValues, outCurrenElevations, outChildrenElevations);
51
- this._elevationCache[tileIndex] = {
51
+ let tileIndex = Layer.getTileIndex(tileX, tileY, tileZoom, tileGroup);
52
+ this.setElevationCache(tileIndex, {
52
53
  heights: outCurrenElevations,
53
54
  extent: extent
54
- };
55
+ });
55
56
  let dd = this._imageSize / this.plainGridSize;
56
57
  for (let i = 0; i < dd; i++) {
57
58
  for (let j = 0; j < dd; j++) {
58
59
  let x = tileX * 2 + j, y = tileY * 2 + i, z = tileZoom + 1;
59
- let tileIndex = Layer.getTileIndex(x, y, z);
60
- this._elevationCache[tileIndex] = {
60
+ let tileIndex = Layer.getTileIndex(x, y, z, tileGroup);
61
+ this.setElevationCache(tileIndex, {
61
62
  heights: outChildrenElevations[i][j],
62
63
  extent: getTileExtent(x, y, z)
63
- };
64
+ });
64
65
  }
65
66
  }
66
67
  return outCurrenElevations;
@@ -13,6 +13,7 @@ export interface IEmptyTerrainParams {
13
13
  geoid?: Geoid;
14
14
  gridSizeByZoom?: number[];
15
15
  }
16
+ export type UrlRewriteFunc = (tileX: number, tileY: number, tileZoom: number, tileGroup: number) => string | null | undefined;
16
17
  /**
17
18
  * Class represents terrain provider without elevation data.
18
19
  * @param {IEmptyTerrainParams} [options] - Provider options:
@@ -82,6 +83,12 @@ declare class EmptyTerrain {
82
83
  _geoid: Geoid;
83
84
  _isReady: boolean;
84
85
  constructor(options?: IEmptyTerrainParams);
86
+ /**
87
+ * Sets url rewrite callback, used for custom url rewriting for every tile loading.
88
+ * @public
89
+ * @param {UrlRewriteFunc} ur - The callback that returns tile custom created url.
90
+ */
91
+ setUrlRewriteCallback(ur: UrlRewriteFunc): void;
85
92
  get isIdle(): boolean;
86
93
  isEqual(obj: this): boolean;
87
94
  static checkNoDataValue(noDataValues: number[] | TypedArray, value: number): boolean;
@@ -48,6 +48,13 @@ class EmptyTerrain {
48
48
  // },
49
49
  // ];
50
50
  }
51
+ /**
52
+ * Sets url rewrite callback, used for custom url rewriting for every tile loading.
53
+ * @public
54
+ * @param {UrlRewriteFunc} ur - The callback that returns tile custom created url.
55
+ */
56
+ setUrlRewriteCallback(ur) {
57
+ }
51
58
  get isIdle() {
52
59
  return true;
53
60
  }
@@ -0,0 +1,6 @@
1
+ import { IRgbTerrainParams, RgbTerrain } from "./RgbTerrain";
2
+ import { Segment } from "../segment/Segment";
3
+ export declare class GlobusRgbTerrain extends RgbTerrain {
4
+ constructor(name?: string | null, options?: IRgbTerrainParams);
5
+ isReadyToLoad(segment: Segment): boolean;
6
+ }
@@ -0,0 +1,25 @@
1
+ import { RgbTerrain } from "./RgbTerrain";
2
+ import { TILEGROUP_NORTH, TILEGROUP_SOUTH } from "../segment/Segment";
3
+ const urlPref = {
4
+ [TILEGROUP_NORTH]: "north",
5
+ [TILEGROUP_SOUTH]: "south"
6
+ };
7
+ const urlRewriteFunc = (tileX, tileY, tileZoom, tileGroup) => {
8
+ let g = urlPref[tileGroup];
9
+ if (g)
10
+ return `https://terrain.openglobus.org/public/poles/${g}/${tileZoom}/${tileX}/${tileY}.png`;
11
+ };
12
+ export class GlobusRgbTerrain extends RgbTerrain {
13
+ constructor(name, options) {
14
+ super(name || "GlobusEarthRgb", {
15
+ maxNativeZoom: 6,
16
+ maxZoom: 17,
17
+ url: "https://{s}.terrain.openglobus.org/public/all/{z}/{x}/{y}.png",
18
+ urlRewrite: urlRewriteFunc,
19
+ ...options
20
+ });
21
+ }
22
+ isReadyToLoad(segment) {
23
+ return this._extent.overlaps(segment.getExtentLonLat());
24
+ }
25
+ }