@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.
- package/README.md +3 -3
- package/css/og.css +18 -4
- package/lib/@openglobus/js/Clock.d.ts +106 -0
- package/lib/@openglobus/js/Deferred.d.ts +6 -0
- package/lib/@openglobus/js/Events.d.ts +90 -0
- package/lib/@openglobus/js/Extent.d.ts +145 -0
- package/lib/@openglobus/js/Globe.d.ts +134 -0
- package/lib/@openglobus/js/ImageCanvas.d.ts +128 -0
- package/lib/@openglobus/js/Lock.d.ts +15 -0
- package/lib/@openglobus/js/LonLat.d.ts +128 -0
- package/lib/@openglobus/js/Object3d.d.ts +64 -0
- package/lib/@openglobus/js/Popup.d.ts +46 -0
- package/lib/@openglobus/js/QueueArray.d.ts +16 -0
- package/lib/@openglobus/js/Rectangle.d.ts +76 -0
- package/lib/@openglobus/js/Stack.d.ts +20 -0
- package/lib/@openglobus/js/astro/astro.d.ts +39 -0
- package/lib/@openglobus/js/astro/earth.d.ts +8 -0
- package/lib/@openglobus/js/astro/jd.d.ts +234 -0
- package/lib/@openglobus/js/astro/orbit.d.ts +5 -0
- package/lib/@openglobus/js/astro/rotation.d.ts +2 -0
- package/lib/@openglobus/js/bv/Box.d.ts +32 -0
- package/lib/@openglobus/js/bv/Sphere.d.ts +37 -0
- package/lib/@openglobus/js/bv/index.d.ts +3 -0
- package/lib/@openglobus/js/camera/Camera.d.ts +314 -0
- package/lib/@openglobus/js/camera/Frustum.d.ts +139 -0
- package/lib/@openglobus/js/camera/PlanetCamera.d.ts +234 -0
- package/lib/@openglobus/js/camera/index.d.ts +3 -0
- package/lib/@openglobus/js/cons.d.ts +40 -0
- package/lib/@openglobus/js/control/Atmosphere.d.ts +16 -0
- package/lib/@openglobus/js/control/CompassButton.d.ts +16 -0
- package/lib/@openglobus/js/control/Control.d.ts +100 -0
- package/lib/@openglobus/js/control/DebugInfo.d.ts +25 -0
- package/lib/@openglobus/js/control/DrawingSwitcher.d.ts +13 -0
- package/lib/@openglobus/js/control/EarthCoordinates.d.ts +41 -0
- package/lib/@openglobus/js/control/EarthNavigation.d.ts +50 -0
- package/lib/@openglobus/js/control/GeoImageDragControl.d.ts +22 -0
- package/lib/@openglobus/js/control/KeyboardNavigation.d.ts +28 -0
- package/lib/@openglobus/js/control/LayerAnimation.d.ts +71 -0
- package/lib/@openglobus/js/control/LayerSwitcher.d.ts +36 -0
- package/lib/@openglobus/js/control/Lighting.d.ts +53 -0
- package/lib/@openglobus/js/control/MouseNavigation.d.ts +64 -0
- package/lib/@openglobus/js/control/MouseWheelZoomControl.d.ts +44 -0
- package/lib/@openglobus/js/control/RulerSwitcher.d.ts +17 -0
- package/lib/@openglobus/js/control/ScaleControl.d.ts +24 -0
- package/lib/@openglobus/js/control/SegmentBoundVisualization.d.ts +12 -0
- package/lib/@openglobus/js/control/ShowFps.d.ts +9 -0
- package/lib/@openglobus/js/control/SimpleNavigation.d.ts +25 -0
- package/lib/@openglobus/js/control/SimpleSkyBackground.d.ts +17 -0
- package/lib/@openglobus/js/control/Sun.d.ts +33 -0
- package/lib/@openglobus/js/control/ToggleWireframe.d.ts +14 -0
- package/lib/@openglobus/js/control/TouchNavigation.d.ts +52 -0
- package/lib/@openglobus/js/control/ZoomControl.d.ts +27 -0
- package/lib/@openglobus/js/control/drawing/DrawingControl.d.ts +12 -0
- package/lib/@openglobus/js/control/drawing/LineStringDrawingScene.d.ts +15 -0
- package/lib/@openglobus/js/control/drawing/PolygonDrawingScene.d.ts +98 -0
- package/lib/@openglobus/js/control/elevationProfile/ElevationProfile.d.ts +77 -0
- package/lib/@openglobus/js/control/elevationProfile/ElevationProfileButtonsView.d.ts +14 -0
- package/lib/@openglobus/js/control/elevationProfile/ElevationProfileControl.d.ts +33 -0
- package/lib/@openglobus/js/control/elevationProfile/ElevationProfileLegend.d.ts +20 -0
- package/lib/@openglobus/js/control/elevationProfile/ElevationProfileScene.d.ts +80 -0
- package/lib/@openglobus/js/control/elevationProfile/ElevationProfileView.d.ts +63 -0
- package/lib/@openglobus/js/control/elevationProfile/PointListDialog.d.ts +12 -0
- package/lib/@openglobus/js/control/heightRuler/HeightRuler.d.ts +7 -0
- package/lib/@openglobus/js/control/heightRuler/HeightRulerScene.d.ts +35 -0
- package/lib/@openglobus/js/control/heightRuler/HeightRulerSwitcher.d.ts +6 -0
- package/lib/@openglobus/js/control/index.d.ts +29 -0
- package/lib/@openglobus/js/control/ruler/Ruler.d.ts +13 -0
- package/lib/@openglobus/js/control/ruler/RulerScene.d.ts +88 -0
- package/lib/@openglobus/js/control/selection/Selection.d.ts +55 -0
- package/lib/@openglobus/js/control/selection/SelectionScene.d.ts +44 -0
- package/lib/@openglobus/js/control/timeline/TimelineControl.d.ts +18 -0
- package/lib/@openglobus/js/control/timeline/TimelineModel.d.ts +41 -0
- package/lib/@openglobus/js/control/timeline/TimelineView.d.ts +85 -0
- package/lib/@openglobus/js/control/timeline/timelineUtils.d.ts +12 -0
- package/lib/@openglobus/js/control/visibleExtent/drawnode.d.ts +7 -0
- package/lib/@openglobus/js/ellipsoid/Ellipsoid.d.ts +193 -0
- package/lib/@openglobus/js/ellipsoid/index.d.ts +3 -0
- package/lib/@openglobus/js/ellipsoid/wgs84.d.ts +6 -0
- package/lib/@openglobus/js/entity/BaseBillboard.d.ts +222 -0
- package/lib/@openglobus/js/entity/BaseBillboardHandler.d.ts +81 -0
- package/lib/@openglobus/js/entity/Billboard.d.ts +113 -0
- package/lib/@openglobus/js/entity/BillboardHandler.d.ts +15 -0
- package/lib/@openglobus/js/entity/Entity.d.ts +354 -0
- package/lib/@openglobus/js/entity/EntityCollection.d.ts +363 -0
- package/lib/@openglobus/js/entity/GeoObject.d.ts +152 -0
- package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +104 -0
- package/lib/@openglobus/js/entity/Geometry.d.ts +124 -0
- package/lib/@openglobus/js/entity/GeometryHandler.d.ts +84 -0
- package/lib/@openglobus/js/entity/Label.d.ts +214 -0
- package/lib/@openglobus/js/entity/LabelHandler.d.ts +65 -0
- package/lib/@openglobus/js/entity/LabelWorker.d.ts +15 -0
- package/lib/@openglobus/js/entity/PointCloud.d.ts +179 -0
- package/lib/@openglobus/js/entity/PointCloudHandler.d.ts +42 -0
- package/lib/@openglobus/js/entity/Polyline.d.ts +345 -0
- package/lib/@openglobus/js/entity/PolylineHandler.d.ts +22 -0
- package/lib/@openglobus/js/entity/Ray.d.ts +133 -0
- package/lib/@openglobus/js/entity/RayHandler.d.ts +70 -0
- package/lib/@openglobus/js/entity/Strip.d.ts +139 -0
- package/lib/@openglobus/js/entity/StripHandler.d.ts +42 -0
- package/lib/@openglobus/js/entity/index.d.ts +10 -0
- package/lib/@openglobus/js/index.d.ts +33 -0
- package/lib/@openglobus/js/input/KeyboardHandler.d.ts +33 -0
- package/lib/@openglobus/js/input/MouseHandler.d.ts +16 -0
- package/lib/@openglobus/js/input/TouchHandler.d.ts +11 -0
- package/lib/@openglobus/js/input/input.d.ts +3 -0
- package/lib/@openglobus/js/layer/BaseGeoImage.d.ts +145 -0
- package/lib/@openglobus/js/layer/Bing.d.ts +4 -0
- package/lib/@openglobus/js/layer/CanvasTiles.d.ts +103 -0
- package/lib/@openglobus/js/layer/GeoImage.d.ts +61 -0
- package/lib/@openglobus/js/layer/GeoTexture2d.d.ts +17 -0
- package/lib/@openglobus/js/layer/GeoVideo.d.ts +68 -0
- package/lib/@openglobus/js/layer/KML.d.ts +72 -0
- package/lib/@openglobus/js/layer/Layer.d.ts +415 -0
- package/lib/@openglobus/js/layer/Material.d.ts +34 -0
- package/lib/@openglobus/js/layer/OpenStreetMap.d.ts +4 -0
- package/lib/@openglobus/js/layer/Vector.d.ts +246 -0
- package/lib/@openglobus/js/layer/WMS.d.ts +75 -0
- package/lib/@openglobus/js/layer/XYZ.d.ts +148 -0
- package/lib/@openglobus/js/layer/index.d.ts +12 -0
- package/lib/@openglobus/js/light/LightSource.d.ts +174 -0
- package/lib/@openglobus/js/math/Line2.d.ts +11 -0
- package/lib/@openglobus/js/math/Line3.d.ts +28 -0
- package/lib/@openglobus/js/math/Mat3.d.ts +77 -0
- package/lib/@openglobus/js/math/Mat4.d.ts +195 -0
- package/lib/@openglobus/js/math/Plane.d.ts +20 -0
- package/lib/@openglobus/js/math/Quat.d.ts +373 -0
- package/lib/@openglobus/js/math/Ray.d.ts +76 -0
- package/lib/@openglobus/js/math/Vec2.d.ts +310 -0
- package/lib/@openglobus/js/math/Vec3.d.ts +472 -0
- package/lib/@openglobus/js/math/Vec4.d.ts +163 -0
- package/lib/@openglobus/js/math/coder.d.ts +51 -0
- package/lib/@openglobus/js/math/index.d.ts +11 -0
- package/lib/@openglobus/js/math.d.ts +266 -0
- package/lib/@openglobus/js/mercator.d.ts +92 -0
- package/lib/@openglobus/js/proj/EPSG3857.d.ts +9 -0
- package/lib/@openglobus/js/proj/EPSG4326.d.ts +9 -0
- package/lib/@openglobus/js/proj/Proj.d.ts +43 -0
- package/lib/@openglobus/js/quadTree/EPSG4326QuadTreeStrategy.d.ts +6 -0
- package/lib/@openglobus/js/quadTree/EarthQuadTreeStrategy.d.ts +9 -0
- package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +54 -0
- package/lib/@openglobus/js/quadTree/MarsQuadTreeStrategy.d.ts +11 -0
- package/lib/@openglobus/js/quadTree/Node.d.ts +80 -0
- package/lib/@openglobus/js/quadTree/QuadTreeStrategy.d.ts +28 -0
- package/lib/@openglobus/js/quadTree/Wgs84QuadTreeStrategy.d.ts +6 -0
- package/lib/@openglobus/js/quadTree/index.d.ts +12 -0
- package/lib/@openglobus/js/quadTree/quadTree.d.ts +40 -0
- package/lib/@openglobus/js/renderer/Renderer.d.ts +319 -0
- package/lib/@openglobus/js/renderer/RendererEvents.d.ts +240 -0
- package/lib/@openglobus/js/scene/Axes.d.ts +12 -0
- package/lib/@openglobus/js/scene/BaseNode.d.ts +61 -0
- package/lib/@openglobus/js/scene/Planet.d.ts +652 -0
- package/lib/@openglobus/js/scene/RenderNode.d.ts +150 -0
- package/lib/@openglobus/js/scene/SkyBox.d.ts +13 -0
- package/lib/@openglobus/js/scene/index.d.ts +5 -0
- package/lib/@openglobus/js/segment/Segment.d.ts +288 -0
- package/lib/@openglobus/js/segment/SegmentLonLat.d.ts +44 -0
- package/lib/@openglobus/js/segment/SegmentLonLatWgs84.d.ts +10 -0
- package/lib/@openglobus/js/segment/Slice.d.ts +13 -0
- package/lib/@openglobus/js/segment/segmentHelper.d.ts +18 -0
- package/lib/@openglobus/js/shaders/atmos.d.ts +4 -0
- package/lib/@openglobus/js/shaders/billboard.d.ts +3 -0
- package/lib/@openglobus/js/shaders/bloom.d.ts +2 -0
- package/lib/@openglobus/js/shaders/blur.d.ts +3 -0
- package/lib/@openglobus/js/shaders/depth.d.ts +2 -0
- package/lib/@openglobus/js/shaders/drawnode.d.ts +8 -0
- package/lib/@openglobus/js/shaders/geoObject.d.ts +3 -0
- package/lib/@openglobus/js/shaders/label.d.ts +4 -0
- package/lib/@openglobus/js/shaders/lumFilter.d.ts +2 -0
- package/lib/@openglobus/js/shaders/pointCloud.d.ts +2 -0
- package/lib/@openglobus/js/shaders/polyline.d.ts +3 -0
- package/lib/@openglobus/js/shaders/ray.d.ts +2 -0
- package/lib/@openglobus/js/shaders/screenFrame.d.ts +2 -0
- package/lib/@openglobus/js/shaders/skybox.d.ts +2 -0
- package/lib/@openglobus/js/shaders/toneMapping.d.ts +2 -0
- package/lib/@openglobus/js/shaders/utils.d.ts +1 -0
- package/lib/@openglobus/js/terrain/BilTerrain.d.ts +18 -0
- package/lib/@openglobus/js/terrain/EmptyTerrain.d.ts +113 -0
- package/lib/@openglobus/js/terrain/Geoid.d.ts +33 -0
- package/lib/@openglobus/js/terrain/GlobusRgbTerrain.d.ts +6 -0
- package/lib/@openglobus/js/terrain/GlobusTerrain.d.ts +137 -0
- package/lib/{js/terrain/MapboxTerrain.d.ts → @openglobus/js/terrain/RgbTerrain.d.ts} +5 -5
- package/lib/@openglobus/js/terrain/index.d.ts +6 -0
- package/lib/@openglobus/js/ui/Button.d.ts +32 -0
- package/lib/@openglobus/js/ui/ButtonGroup.d.ts +16 -0
- package/lib/@openglobus/js/ui/Color.d.ts +22 -0
- package/lib/@openglobus/js/ui/Dialog.d.ts +55 -0
- package/lib/@openglobus/js/ui/Slider.d.ts +38 -0
- package/lib/@openglobus/js/ui/ToggleButton.d.ts +20 -0
- package/lib/@openglobus/js/ui/View.d.ts +37 -0
- package/lib/@openglobus/js/ui/icons.d.ts +1 -0
- package/lib/@openglobus/js/utils/BaseWorker.d.ts +14 -0
- package/lib/@openglobus/js/utils/FontAtlas.d.ts +82 -0
- package/lib/@openglobus/js/utils/GeoImageCreator.d.ts +34 -0
- package/lib/@openglobus/js/utils/ImagesCacheManager.d.ts +22 -0
- package/lib/@openglobus/js/utils/Loader.d.ts +63 -0
- package/lib/@openglobus/js/utils/NormalMapCreator.d.ts +52 -0
- package/lib/@openglobus/js/utils/PlainSegmentWorker.d.ts +24 -0
- package/lib/@openglobus/js/utils/TerrainWorker.d.ts +28 -0
- package/lib/@openglobus/js/utils/TextureAtlas.d.ts +113 -0
- package/lib/@openglobus/js/utils/VectorTileCreator.d.ts +18 -0
- package/lib/@openglobus/js/utils/colorTable.d.ts +3 -0
- package/lib/@openglobus/js/utils/earcut.d.ts +7 -0
- package/lib/@openglobus/js/utils/objParser.d.ts +24 -0
- package/lib/@openglobus/js/utils/shared.d.ts +263 -0
- package/lib/@openglobus/js/utils/units.d.ts +16 -0
- package/lib/@openglobus/js/webgl/BaseFramebuffer.d.ts +53 -0
- package/lib/@openglobus/js/webgl/Framebuffer.d.ts +69 -0
- package/lib/@openglobus/js/webgl/Handler.d.ts +473 -0
- package/lib/@openglobus/js/webgl/Multisample.d.ts +27 -0
- package/lib/@openglobus/js/webgl/Program.d.ts +159 -0
- package/lib/@openglobus/js/webgl/ProgramController.d.ts +86 -0
- package/lib/@openglobus/js/webgl/index.d.ts +6 -0
- package/lib/@openglobus/js/webgl/types.d.ts +9 -0
- package/lib/@openglobus/js/webgl/variableHandlers.d.ts +22 -0
- package/lib/@openglobus/og.css +1 -1
- package/lib/@openglobus/og.esm.js +1 -1
- package/lib/@openglobus/og.esm.js.map +1 -1
- package/lib/@openglobus/og.umd.js +1 -1
- package/lib/@openglobus/og.umd.js.map +1 -1
- package/lib/js/Extent.js +2 -2
- package/lib/js/Globe.d.ts +1 -1
- package/lib/js/Object3d.d.ts +8 -1
- package/lib/js/Object3d.js +12 -2
- package/lib/js/camera/Frustum.d.ts +1 -1
- package/lib/js/camera/Frustum.js +3 -2
- package/lib/js/control/DebugInfo.js +19 -18
- package/lib/js/control/Lighting.d.ts +4 -0
- package/lib/js/control/Lighting.js +51 -12
- package/lib/js/control/SimpleSkyBackground.d.ts +2 -0
- package/lib/js/control/SimpleSkyBackground.js +13 -3
- package/lib/js/control/drawing/PolygonDrawingScene.js +2 -2
- package/lib/js/control/visibleExtent/drawnode.js +1 -1
- package/lib/js/entity/GeoObject.d.ts +12 -3
- package/lib/js/entity/GeoObject.js +34 -2
- package/lib/js/entity/GeoObjectHandler.d.ts +5 -0
- package/lib/js/entity/GeoObjectHandler.js +47 -0
- package/lib/js/entity/Geometry.d.ts +24 -11
- package/lib/js/entity/Geometry.js +17 -9
- package/lib/js/entity/GeometryHandler.js +5 -5
- package/lib/js/entity/Label.d.ts +7 -0
- package/lib/js/entity/Label.js +11 -0
- package/lib/js/entity/Polyline.d.ts +15 -7
- package/lib/js/entity/Polyline.js +54 -6
- package/lib/js/entity/Strip.d.ts +12 -0
- package/lib/js/entity/Strip.js +16 -0
- package/lib/js/entity/StripHandler.js +1 -1
- package/lib/js/entity/index.d.ts +10 -11
- package/lib/js/entity/index.js +10 -11
- package/lib/js/index.d.ts +5 -5
- package/lib/js/index.js +5 -5
- package/lib/js/layer/Bing.d.ts +4 -0
- package/lib/js/layer/Bing.js +40 -0
- package/lib/js/layer/GeoImage.d.ts +1 -1
- package/lib/js/layer/GeoVideo.d.ts +1 -1
- package/lib/js/layer/Layer.d.ts +1 -1
- package/lib/js/layer/Layer.js +2 -2
- package/lib/js/layer/OpenStreetMap.d.ts +4 -0
- package/lib/js/layer/OpenStreetMap.js +19 -0
- package/lib/js/layer/Vector.d.ts +3 -0
- package/lib/js/layer/Vector.js +3 -3
- package/lib/js/layer/index.d.ts +12 -11
- package/lib/js/layer/index.js +12 -11
- package/lib/js/math/Mat4.js +18 -17
- package/lib/js/mercator.js +2 -1
- package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +4 -5
- package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +3 -0
- package/lib/js/quadTree/EarthQuadTreeStrategy.js +40 -5
- package/lib/js/quadTree/EntityCollectionNode.d.ts +2 -2
- package/lib/js/quadTree/EntityCollectionNode.js +13 -14
- package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +5 -0
- package/lib/js/quadTree/MarsQuadTreeStrategy.js +31 -5
- package/lib/js/quadTree/Node.d.ts +2 -1
- package/lib/js/quadTree/Node.js +38 -28
- package/lib/js/quadTree/QuadTreeStrategy.d.ts +3 -0
- package/lib/js/quadTree/QuadTreeStrategy.js +17 -0
- package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +3 -3
- package/lib/js/renderer/Renderer.js +1 -0
- package/lib/js/scene/Planet.js +6 -4
- package/lib/js/segment/Segment.d.ts +12 -9
- package/lib/js/segment/Segment.js +47 -24
- package/lib/js/segment/SegmentLonLat.d.ts +1 -5
- package/lib/js/segment/SegmentLonLat.js +8 -100
- package/lib/js/segment/SegmentLonLatWgs84.js +5 -3
- package/lib/js/shaders/billboard.js +4 -4
- package/lib/js/shaders/drawnode.js +16 -19
- package/lib/js/shaders/geoObject.js +4 -5
- package/lib/js/shaders/ray.js +7 -3
- package/lib/js/terrain/BilTerrain.d.ts +1 -1
- package/lib/js/terrain/BilTerrain.js +7 -6
- package/lib/js/terrain/EmptyTerrain.d.ts +7 -0
- package/lib/js/terrain/EmptyTerrain.js +7 -0
- package/lib/js/terrain/GlobusRgbTerrain.d.ts +6 -0
- package/lib/js/terrain/GlobusRgbTerrain.js +25 -0
- package/lib/js/terrain/GlobusTerrain.d.ts +5 -5
- package/lib/js/terrain/GlobusTerrain.js +35 -30
- package/lib/js/terrain/RgbTerrain.d.ts +22 -0
- package/lib/js/terrain/RgbTerrain.js +415 -0
- package/lib/js/terrain/index.d.ts +3 -2
- package/lib/js/terrain/index.js +3 -2
- package/lib/js/ui/Color.d.ts +22 -0
- package/lib/js/ui/Color.js +58 -0
- package/lib/js/utils/GeoImageCreator.js +1 -1
- package/lib/js/utils/NormalMapCreator.js +1 -1
- package/lib/js/utils/VectorTileCreator.js +3 -3
- package/lib/js/utils/shared.d.ts +1 -8
- package/lib/js/utils/shared.js +17 -8
- package/package.json +2 -1
- 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,
|
|
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 =
|
|
16
|
-
export const TILEGROUP_SOUTH =
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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(
|
|
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.
|
|
1044
|
-
this.planet._fadingNodes.set(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
|
|
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 =
|
|
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 =
|
|
64
|
+
this.tileY = getTileCellIndex(lat, extent.getHeight(), 90.0);
|
|
68
65
|
}
|
|
69
66
|
else {
|
|
70
67
|
this._tileGroup = TILEGROUP_SOUTH;
|
|
71
|
-
this.tileY =
|
|
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
|
-
|
|
77
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
153
|
-
|
|
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
|
-
|
|
334
|
-
|
|
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
|
-
|
|
531
|
-
|
|
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;
|
package/lib/js/shaders/ray.js
CHANGED
|
@@ -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
|
-
|
|
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[],
|
|
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,
|
|
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
|
-
|
|
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.
|
|
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
|
+
}
|