@openglobus/og 0.18.0 → 0.18.1
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 +8 -8
- package/lib/@openglobus/og.esm.js +2 -0
- package/lib/@openglobus/og.esm.js.map +1 -0
- package/lib/@openglobus/og.umd.js +2 -0
- package/lib/@openglobus/og.umd.js.map +1 -0
- package/lib/js/Clock.d.ts +106 -0
- package/{src/Clock.ts → lib/js/Clock.js} +31 -126
- package/lib/js/Deferred.d.ts +6 -0
- package/lib/js/Deferred.js +13 -0
- package/lib/js/Events.d.ts +90 -0
- package/{src/Events.ts → lib/js/Events.js} +29 -84
- package/lib/js/Extent.d.ts +145 -0
- package/{src/Extent.ts → lib/js/Extent.js} +74 -120
- package/lib/js/Globe.d.ts +132 -0
- package/{src/Globe.ts → lib/js/Globe.js} +61 -159
- package/lib/js/ImageCanvas.d.ts +128 -0
- package/{src/ImageCanvas.ts → lib/js/ImageCanvas.js} +24 -65
- package/lib/js/Lock.d.ts +15 -0
- package/{src/Lock.ts → lib/js/Lock.js} +7 -21
- package/lib/js/LonLat.d.ts +128 -0
- package/{src/LonLat.ts → lib/js/LonLat.js} +44 -75
- package/lib/js/Object3d.d.ts +49 -0
- package/{src/Object3d.ts → lib/js/Object3d.js} +64 -184
- package/lib/js/Popup.d.ts +46 -0
- package/{src/Popup.ts → lib/js/Popup.js} +42 -110
- package/lib/js/QueueArray.d.ts +16 -0
- package/{src/QueueArray.ts → lib/js/QueueArray.js} +12 -25
- package/lib/js/Rectangle.d.ts +76 -0
- package/{src/Rectangle.ts → lib/js/Rectangle.js} +12 -50
- package/lib/js/Stack.d.ts +20 -0
- package/{src/Stack.ts → lib/js/Stack.js} +13 -29
- package/lib/js/astro/astro.d.ts +39 -0
- package/{src/astro/astro.ts → lib/js/astro/astro.js} +2 -8
- package/lib/js/astro/earth.d.ts +8 -0
- package/{src/astro/earth.ts → lib/js/astro/earth.js} +3 -39
- package/lib/js/astro/jd.d.ts +234 -0
- package/{src/astro/jd.ts → lib/js/astro/jd.js} +55 -134
- package/lib/js/astro/orbit.d.ts +5 -0
- package/{src/astro/orbit.ts → lib/js/astro/orbit.js} +26 -39
- package/lib/js/astro/rotation.d.ts +2 -0
- package/{src/astro/rotation.ts → lib/js/astro/rotation.js} +2 -11
- package/lib/js/bv/Box.d.ts +32 -0
- package/{src/bv/Box.ts → lib/js/bv/Box.js} +7 -35
- package/lib/js/bv/Sphere.d.ts +37 -0
- package/{src/bv/Sphere.ts → lib/js/bv/Sphere.js} +6 -34
- package/{src/bv/index.ts → lib/js/bv/index.d.ts} +0 -1
- package/lib/js/bv/index.js +3 -0
- package/lib/js/camera/Camera.d.ts +314 -0
- package/{src/camera/Camera.ts → lib/js/camera/Camera.js} +77 -326
- package/lib/js/camera/Frustum.d.ts +139 -0
- package/{src/camera/Frustum.ts → lib/js/camera/Frustum.js} +66 -185
- package/lib/js/camera/PlanetCamera.d.ts +234 -0
- package/{src/camera/PlanetCamera.ts → lib/js/camera/PlanetCamera.js} +65 -338
- package/{src/camera/index.ts → lib/js/camera/index.d.ts} +0 -1
- package/lib/js/camera/index.js +3 -0
- package/lib/js/cons.d.ts +40 -0
- package/{src/cons.ts → lib/js/cons.js} +10 -22
- package/lib/js/control/Atmosphere.d.ts +16 -0
- package/{src/control/Atmosphere.ts → lib/js/control/Atmosphere.js} +33 -86
- package/lib/js/control/CompassButton.d.ts +16 -0
- package/{src/control/CompassButton.ts → lib/js/control/CompassButton.js} +18 -43
- package/lib/js/control/Control.d.ts +100 -0
- package/{src/control/Control.ts → lib/js/control/Control.js} +22 -89
- package/lib/js/control/DebugInfo.d.ts +25 -0
- package/{src/control/DebugInfo.ts → lib/js/control/DebugInfo.js} +38 -84
- package/lib/js/control/DrawingSwitcher.d.ts +13 -0
- package/{src/control/DrawingSwitcher.ts → lib/js/control/DrawingSwitcher.js} +13 -30
- package/lib/js/control/EarthCoordinates.d.ts +41 -0
- package/{src/control/EarthCoordinates.ts → lib/js/control/EarthCoordinates.js} +58 -119
- package/lib/js/control/EarthNavigation.d.ts +50 -0
- package/{src/control/EarthNavigation.ts → lib/js/control/EarthNavigation.js} +70 -161
- package/lib/js/control/GeoImageDragControl.d.ts +22 -0
- package/{src/control/GeoImageDragControl.ts → lib/js/control/GeoImageDragControl.js} +26 -49
- package/lib/js/control/KeyboardNavigation.d.ts +28 -0
- package/{src/control/KeyboardNavigation.ts → lib/js/control/KeyboardNavigation.js} +67 -92
- package/lib/js/control/LayerAnimation.d.ts +71 -0
- package/{src/control/LayerAnimation.ts → lib/js/control/LayerAnimation.js} +82 -162
- package/lib/js/control/LayerSwitcher.d.ts +21 -0
- package/{src/control/LayerSwitcher.ts → lib/js/control/LayerSwitcher.js} +16 -41
- package/lib/js/control/Lighting.d.ts +49 -0
- package/{src/control/Lighting.ts → lib/js/control/Lighting.js} +106 -219
- package/lib/js/control/MouseNavigation.d.ts +62 -0
- package/{src/control/MouseNavigation.ts → lib/js/control/MouseNavigation.js} +105 -211
- package/lib/js/control/MouseWheelZoomControl.d.ts +44 -0
- package/lib/js/control/MouseWheelZoomControl.js +181 -0
- package/lib/js/control/RulerSwitcher.d.ts +17 -0
- package/{src/control/RulerSwitcher.ts → lib/js/control/RulerSwitcher.js} +13 -28
- package/lib/js/control/ScaleControl.d.ts +24 -0
- package/lib/js/control/ScaleControl.js +91 -0
- package/lib/js/control/SegmentBoundVisualization.d.ts +12 -0
- package/lib/js/control/SegmentBoundVisualization.js +37 -0
- package/lib/js/control/ShowFps.d.ts +9 -0
- package/lib/js/control/ShowFps.js +20 -0
- package/lib/js/control/SimpleNavigation.d.ts +25 -0
- package/{src/control/SimpleNavigation.ts → lib/js/control/SimpleNavigation.js} +29 -51
- package/lib/js/control/SimpleSkyBackground.d.ts +15 -0
- package/{src/control/SimpleSkyBackground.ts → lib/js/control/SimpleSkyBackground.js} +21 -48
- package/lib/js/control/Sun.d.ts +33 -0
- package/{src/control/Sun.ts → lib/js/control/Sun.js} +34 -85
- package/lib/js/control/ToggleWireframe.d.ts +14 -0
- package/lib/js/control/ToggleWireframe.js +28 -0
- package/lib/js/control/TouchNavigation.d.ts +52 -0
- package/{src/control/TouchNavigation.ts → lib/js/control/TouchNavigation.js} +88 -193
- package/lib/js/control/ZoomControl.d.ts +27 -0
- package/{src/control/ZoomControl.ts → lib/js/control/ZoomControl.js} +25 -50
- package/lib/js/control/drawing/DrawingControl.d.ts +12 -0
- package/{src/control/drawing/DrawingControl.ts → lib/js/control/drawing/DrawingControl.js} +10 -20
- package/lib/js/control/drawing/LineStringDrawingScene.d.ts +15 -0
- package/{src/control/drawing/LineStringDrawingScene.ts → lib/js/control/drawing/LineStringDrawingScene.js} +28 -85
- package/lib/js/control/drawing/PolygonDrawingScene.d.ts +98 -0
- package/{src/control/drawing/PolygonDrawingScene.ts → lib/js/control/drawing/PolygonDrawingScene.js} +190 -388
- package/lib/js/control/elevationProfile/ElevationProfile.d.ts +61 -0
- package/{src/control/elevationProfile/ElevationProfile.ts → lib/js/control/elevationProfile/ElevationProfile.js} +56 -148
- package/lib/js/control/heightRuler/HeightRuler.d.ts +7 -0
- package/{src/control/heightRuler/HeightRuler.ts → lib/js/control/heightRuler/HeightRuler.js} +4 -9
- package/lib/js/control/heightRuler/HeightRulerScene.d.ts +35 -0
- package/{src/control/heightRuler/HeightRulerScene.ts → lib/js/control/heightRuler/HeightRulerScene.js} +47 -99
- package/lib/js/control/heightRuler/HeightRulerSwitcher.d.ts +6 -0
- package/{src/control/heightRuler/HeightRulerSwitcher.ts → lib/js/control/heightRuler/HeightRulerSwitcher.js} +2 -4
- package/{src/control/index.ts → lib/js/control/index.d.ts} +1 -18
- package/lib/js/control/index.js +28 -0
- package/lib/js/control/ruler/Ruler.d.ts +13 -0
- package/lib/js/control/ruler/Ruler.js +23 -0
- package/lib/js/control/ruler/RulerScene.d.ts +88 -0
- package/lib/js/control/ruler/RulerScene.js +324 -0
- package/lib/js/control/selection/Selection.d.ts +55 -0
- package/{src/control/selection/Selection.ts → lib/js/control/selection/Selection.js} +15 -34
- package/lib/js/control/selection/SelectionScene.d.ts +44 -0
- package/{src/control/selection/SelectionScene.ts → lib/js/control/selection/SelectionScene.js} +26 -113
- package/lib/js/control/timeline/TimelineControl.d.ts +18 -0
- package/{src/control/timeline/TimelineControl.ts → lib/js/control/timeline/TimelineControl.js} +13 -43
- package/lib/js/control/timeline/TimelineModel.d.ts +41 -0
- package/{src/control/timeline/TimelineModel.ts → lib/js/control/timeline/TimelineModel.js} +26 -74
- package/lib/js/control/timeline/TimelineView.d.ts +85 -0
- package/{src/control/timeline/TimelineView.ts → lib/js/control/timeline/TimelineView.js} +133 -281
- package/lib/js/control/timeline/timelineUtils.d.ts +12 -0
- package/lib/js/control/timeline/timelineUtils.js +112 -0
- package/lib/js/control/visibleExtent/Segment.d.ts +277 -0
- package/{src → lib/js}/control/visibleExtent/Segment.js +145 -698
- package/lib/js/control/visibleExtent/VisibleExtent.d.ts +5 -0
- package/{src → lib/js}/control/visibleExtent/VisibleExtent.js +1 -18
- package/lib/js/control/visibleExtent/drawnode.d.ts +7 -0
- package/{src/control/visibleExtent/drawnode.ts → lib/js/control/visibleExtent/drawnode.js} +1 -28
- package/lib/js/ellipsoid/Ellipsoid.d.ts +187 -0
- package/{src/ellipsoid/Ellipsoid.ts → lib/js/ellipsoid/Ellipsoid.js} +82 -267
- package/lib/js/ellipsoid/index.d.ts +3 -0
- package/lib/js/ellipsoid/index.js +3 -0
- package/lib/js/ellipsoid/wgs84.d.ts +6 -0
- package/{src/ellipsoid/wgs84.ts → lib/js/ellipsoid/wgs84.js} +1 -2
- package/lib/js/entity/BaseBillboard.d.ts +222 -0
- package/{src/entity/BaseBillboard.ts → lib/js/entity/BaseBillboard.js} +48 -165
- package/lib/js/entity/BaseBillboardHandler.d.ts +81 -0
- package/{src/entity/BaseBillboardHandler.ts → lib/js/entity/BaseBillboardHandler.js} +139 -365
- package/lib/js/entity/Billboard.d.ts +113 -0
- package/{src/entity/Billboard.ts → lib/js/entity/Billboard.js} +19 -83
- package/lib/js/entity/BillboardHandler.d.ts +15 -0
- package/{src/entity/BillboardHandler.ts → lib/js/entity/BillboardHandler.js} +27 -59
- package/lib/js/entity/Entity.d.ts +354 -0
- package/{src/entity/Entity.ts → lib/js/entity/Entity.js} +101 -373
- package/lib/js/entity/EntityCollection.d.ts +364 -0
- package/{src/entity/EntityCollection.ts → lib/js/entity/EntityCollection.js} +51 -353
- package/lib/js/entity/GeoObject.d.ts +138 -0
- package/{src/entity/GeoObject.ts → lib/js/entity/GeoObject.js} +41 -146
- package/lib/js/entity/GeoObjectHandler.d.ts +99 -0
- package/{src/entity/GeoObjectHandler.ts → lib/js/entity/GeoObjectHandler.js} +162 -423
- package/lib/js/entity/Geometry.d.ts +111 -0
- package/lib/js/entity/Geometry.js +283 -0
- package/lib/js/entity/GeometryHandler.d.ts +84 -0
- package/{src/entity/GeometryHandler.ts → lib/js/entity/GeometryHandler.js} +162 -657
- package/lib/js/entity/Label.d.ts +207 -0
- package/{src/entity/Label.ts → lib/js/entity/Label.js} +62 -164
- package/lib/js/entity/LabelHandler.d.ts +65 -0
- package/{src/entity/LabelHandler.ts → lib/js/entity/LabelHandler.js} +175 -408
- package/lib/js/entity/LabelWorker.d.ts +15 -0
- package/{src/entity/LabelWorker.ts → lib/js/entity/LabelWorker.js} +24 -45
- package/lib/js/entity/PointCloud.d.ts +179 -0
- package/{src/entity/PointCloud.ts → lib/js/entity/PointCloud.js} +65 -265
- package/lib/js/entity/PointCloudHandler.d.ts +42 -0
- package/{src/entity/PointCloudHandler.ts → lib/js/entity/PointCloudHandler.js} +19 -62
- package/lib/js/entity/Polyline.d.ts +337 -0
- package/{src/entity/Polyline.ts → lib/js/entity/Polyline.js} +289 -924
- package/lib/js/entity/PolylineHandler.d.ts +22 -0
- package/{src/entity/PolylineHandler.ts → lib/js/entity/PolylineHandler.js} +12 -37
- package/lib/js/entity/Ray.d.ts +133 -0
- package/{src/entity/Ray.ts → lib/js/entity/Ray.js} +26 -146
- package/lib/js/entity/RayHandler.d.ts +70 -0
- package/{src/entity/RayHandler.ts → lib/js/entity/RayHandler.js} +102 -342
- package/lib/js/entity/Strip.d.ts +127 -0
- package/{src/entity/Strip.ts → lib/js/entity/Strip.js} +102 -372
- package/lib/js/entity/StripHandler.d.ts +42 -0
- package/{src/entity/StripHandler.ts → lib/js/entity/StripHandler.js} +22 -74
- package/{src/entity/index.ts → lib/js/entity/index.d.ts} +1 -2
- package/lib/js/entity/index.js +11 -0
- package/lib/js/index.d.ts +33 -0
- package/lib/js/index.js +33 -0
- package/lib/js/input/KeyboardHandler.d.ts +33 -0
- package/{src/input/KeyboardHandler.ts → lib/js/input/KeyboardHandler.js} +45 -84
- package/lib/js/input/MouseHandler.d.ts +16 -0
- package/{src/input/MouseHandler.ts → lib/js/input/MouseHandler.js} +12 -36
- package/lib/js/input/TouchHandler.d.ts +11 -0
- package/{src/input/TouchHandler.ts → lib/js/input/TouchHandler.js} +11 -23
- package/lib/js/input/input.d.ts +3 -0
- package/{src/input/input.ts → lib/js/input/input.js} +1 -1
- package/lib/js/layer/BaseGeoImage.d.ts +145 -0
- package/{src/layer/BaseGeoImage.ts → lib/js/layer/BaseGeoImage.js} +70 -235
- package/lib/js/layer/CanvasTiles.d.ts +103 -0
- package/{src/layer/CanvasTiles.ts → lib/js/layer/CanvasTiles.js} +54 -146
- package/lib/js/layer/GeoImage.d.ts +61 -0
- package/{src/layer/GeoImage.ts → lib/js/layer/GeoImage.js} +24 -54
- package/lib/js/layer/GeoTexture2d.d.ts +17 -0
- package/lib/js/layer/GeoTexture2d.js +37 -0
- package/lib/js/layer/GeoVideo.d.ts +68 -0
- package/{src/layer/GeoVideo.ts → lib/js/layer/GeoVideo.js} +31 -61
- package/lib/js/layer/KML.d.ts +72 -0
- package/{src/layer/KML.ts → lib/js/layer/KML.js} +94 -138
- package/lib/js/layer/Layer.d.ts +401 -0
- package/{src/layer/Layer.ts → lib/js/layer/Layer.js} +92 -443
- package/lib/js/layer/Material.d.ts +34 -0
- package/{src/layer/Material.ts → lib/js/layer/Material.js} +9 -43
- package/lib/js/layer/Vector.d.ts +244 -0
- package/{src/layer/Vector.ts → lib/js/layer/Vector.js} +147 -418
- package/lib/js/layer/WMS.d.ts +75 -0
- package/{src/layer/WMS.ts → lib/js/layer/WMS.js} +18 -100
- package/lib/js/layer/XYZ.d.ts +149 -0
- package/{src/layer/XYZ.ts → lib/js/layer/XYZ.js} +71 -171
- package/lib/js/layer/index.d.ts +11 -0
- package/lib/js/layer/index.js +11 -0
- package/lib/js/light/LightSource.d.ts +174 -0
- package/{src/light/LightSource.ts → lib/js/light/LightSource.js} +22 -131
- package/lib/js/math/Line2.d.ts +11 -0
- package/{src/math/Line2.ts → lib/js/math/Line2.js} +5 -15
- package/lib/js/math/Line3.d.ts +28 -0
- package/lib/js/math/Line3.js +85 -0
- package/lib/js/math/Mat3.d.ts +77 -0
- package/{src/math/Mat3.ts → lib/js/math/Mat3.js} +22 -51
- package/lib/js/math/Mat4.d.ts +195 -0
- package/{src/math/Mat4.ts → lib/js/math/Mat4.js} +53 -219
- package/lib/js/math/Plane.d.ts +20 -0
- package/{src/math/Plane.ts → lib/js/math/Plane.js} +26 -40
- package/lib/js/math/Quat.d.ts +373 -0
- package/{src/math/Quat.ts → lib/js/math/Quat.js} +106 -319
- package/lib/js/math/Ray.d.ts +76 -0
- package/{src/math/Ray.ts → lib/js/math/Ray.js} +21 -66
- package/lib/js/math/Vec2.d.ts +310 -0
- package/{src/math/Vec2.ts → lib/js/math/Vec2.js} +55 -121
- package/lib/js/math/Vec3.d.ts +472 -0
- package/{src/math/Vec3.ts → lib/js/math/Vec3.js} +103 -236
- package/lib/js/math/Vec4.d.ts +163 -0
- package/{src/math/Vec4.ts → lib/js/math/Vec4.js} +23 -79
- package/lib/js/math/coder.d.ts +51 -0
- package/{src/math/coder.ts → lib/js/math/coder.js} +14 -20
- package/lib/js/math/index.d.ts +11 -0
- package/lib/js/math/index.js +11 -0
- package/lib/js/math.d.ts +266 -0
- package/{src/math.ts → lib/js/math.js} +37 -85
- package/lib/js/mercator.d.ts +92 -0
- package/{src/mercator.ts → lib/js/mercator.js} +13 -37
- package/lib/js/proj/EPSG3857.d.ts +9 -0
- package/{src/proj/EPSG3857.ts → lib/js/proj/EPSG3857.js} +0 -2
- package/lib/js/proj/EPSG4326.d.ts +9 -0
- package/{src/proj/EPSG4326.ts → lib/js/proj/EPSG4326.js} +0 -2
- package/lib/js/proj/Proj.d.ts +43 -0
- package/{src/proj/Proj.ts → lib/js/proj/Proj.js} +4 -29
- package/lib/js/quadTree/EPSG4326QuadTreeStrategy.d.ts +6 -0
- package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +17 -0
- package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +6 -0
- package/lib/js/quadTree/EarthQuadTreeStrategy.js +19 -0
- package/lib/js/quadTree/EntityCollectionNode.d.ts +54 -0
- package/{src/quadTree/EntityCollectionNode.ts → lib/js/quadTree/EntityCollectionNode.js} +83 -150
- package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +6 -0
- package/lib/js/quadTree/MarsQuadTreeStrategy.js +17 -0
- package/lib/js/quadTree/Node.d.ts +61 -0
- package/{src/quadTree/Node.ts → lib/js/quadTree/Node.js} +140 -357
- package/lib/js/quadTree/QuadTreeStrategy.d.ts +25 -0
- package/{src/quadTree/QuadTreeStrategy.ts → lib/js/quadTree/QuadTreeStrategy.js} +13 -44
- package/lib/js/quadTree/Wgs84QuadTreeStrategy.d.ts +6 -0
- package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +15 -0
- package/lib/js/quadTree/index.d.ts +12 -0
- package/lib/js/quadTree/index.js +12 -0
- package/lib/js/quadTree/quadTree.d.ts +40 -0
- package/{src/quadTree/quadTree.ts → lib/js/quadTree/quadTree.js} +0 -9
- package/lib/js/renderer/Renderer.d.ts +311 -0
- package/{src/renderer/Renderer.ts → lib/js/renderer/Renderer.js} +169 -611
- package/lib/js/renderer/RendererEvents.d.ts +237 -0
- package/{src/renderer/RendererEvents.ts → lib/js/renderer/RendererEvents.js} +134 -471
- package/lib/js/scene/Axes.d.ts +12 -0
- package/lib/js/scene/Axes.js +59 -0
- package/lib/js/scene/BaseNode.d.ts +61 -0
- package/{src/scene/BaseNode.ts → lib/js/scene/BaseNode.js} +11 -57
- package/lib/js/scene/Planet.d.ts +623 -0
- package/{src/scene/Planet.ts → lib/js/scene/Planet.js} +251 -935
- package/lib/js/scene/RenderNode.d.ts +150 -0
- package/{src/scene/RenderNode.ts → lib/js/scene/RenderNode.js} +33 -138
- package/lib/js/scene/SkyBox.d.ts +13 -0
- package/{src/scene/SkyBox.ts → lib/js/scene/SkyBox.js} +16 -37
- package/{src/scene/index.ts → lib/js/scene/index.d.ts} +0 -1
- package/lib/js/scene/index.js +5 -0
- package/lib/js/segment/Segment.d.ts +278 -0
- package/{src/segment/Segment.ts → lib/js/segment/Segment.js} +242 -913
- package/lib/js/segment/SegmentLonLat.d.ts +48 -0
- package/{src/segment/SegmentLonLat.ts → lib/js/segment/SegmentLonLat.js} +58 -132
- package/lib/js/segment/SegmentLonLatWgs84.d.ts +10 -0
- package/lib/js/segment/SegmentLonLatWgs84.js +23 -0
- package/lib/js/segment/Slice.d.ts +13 -0
- package/{src/segment/Slice.ts → lib/js/segment/Slice.js} +4 -22
- package/lib/js/segment/segmentHelper.d.ts +18 -0
- package/{src/segment/segmentHelper.ts → lib/js/segment/segmentHelper.js} +30 -88
- package/lib/js/shaders/atmos.d.ts +4 -0
- package/{src/shaders/atmos.ts → lib/js/shaders/atmos.js} +8 -26
- package/lib/js/shaders/billboard.d.ts +3 -0
- package/{src/shaders/billboard.ts → lib/js/shaders/billboard.js} +9 -18
- package/lib/js/shaders/bloom.d.ts +2 -0
- package/{src/shaders/bloom.ts → lib/js/shaders/bloom.js} +5 -8
- package/lib/js/shaders/blur.d.ts +3 -0
- package/{src/shaders/blur.ts → lib/js/shaders/blur.js} +11 -19
- package/lib/js/shaders/depth.d.ts +2 -0
- package/{src/shaders/depth.ts → lib/js/shaders/depth.js} +3 -6
- package/lib/js/shaders/drawnode.d.ts +8 -0
- package/{src/shaders/drawnode.ts → lib/js/shaders/drawnode.js} +23 -75
- package/lib/js/shaders/geoObject.d.ts +3 -0
- package/{src/shaders/geoObject.ts → lib/js/shaders/geoObject.js} +51 -63
- package/lib/js/shaders/label.d.ts +4 -0
- package/{src/shaders/label.ts → lib/js/shaders/label.js} +12 -25
- package/lib/js/shaders/lumFilter.d.ts +2 -0
- package/{src/shaders/lumFilter.ts → lib/js/shaders/lumFilter.js} +4 -7
- package/lib/js/shaders/pickingMask.d.ts +2 -0
- package/{src/shaders/pickingMask.ts → lib/js/shaders/pickingMask.js} +5 -8
- package/lib/js/shaders/pointCloud.d.ts +2 -0
- package/{src/shaders/pointCloud.ts → lib/js/shaders/pointCloud.js} +4 -7
- package/lib/js/shaders/polyline.d.ts +3 -0
- package/{src/shaders/polyline.ts → lib/js/shaders/polyline.js} +7 -22
- package/lib/js/shaders/ray.d.ts +2 -0
- package/{src/shaders/ray.ts → lib/js/shaders/ray.js} +4 -7
- package/lib/js/shaders/screenFrame.d.ts +2 -0
- package/{src/shaders/screenFrame.ts → lib/js/shaders/screenFrame.js} +5 -8
- package/lib/js/shaders/skybox.d.ts +2 -0
- package/{src/shaders/skybox.ts → lib/js/shaders/skybox.js} +10 -13
- package/lib/js/shaders/toneMapping.d.ts +2 -0
- package/{src/shaders/toneMapping.ts → lib/js/shaders/toneMapping.js} +5 -8
- package/lib/js/shaders/utils.d.ts +1 -0
- package/{src/shaders/utils.ts → lib/js/shaders/utils.js} +1 -1
- package/lib/js/terrain/BilTerrain.d.ts +18 -0
- package/{src/terrain/BilTerrain.ts → lib/js/terrain/BilTerrain.js} +21 -118
- package/lib/js/terrain/EmptyTerrain.d.ts +106 -0
- package/{src/terrain/EmptyTerrain.ts → lib/js/terrain/EmptyTerrain.js} +20 -144
- package/lib/js/terrain/Geoid.d.ts +33 -0
- package/lib/js/terrain/Geoid.js +191 -0
- package/lib/js/terrain/GlobusTerrain.d.ts +134 -0
- package/{src/terrain/GlobusTerrain.ts → lib/js/terrain/GlobusTerrain.js} +82 -239
- package/lib/js/terrain/MapboxTerrain.d.ts +21 -0
- package/{src/terrain/MapboxTerrain.ts → lib/js/terrain/MapboxTerrain.js} +46 -215
- package/{src/terrain/index.ts → lib/js/terrain/index.d.ts} +0 -1
- package/lib/js/terrain/index.js +5 -0
- package/lib/js/ui/Button.d.ts +32 -0
- package/lib/js/ui/Button.js +78 -0
- package/lib/js/ui/ButtonGroup.d.ts +16 -0
- package/lib/js/ui/ButtonGroup.js +41 -0
- package/lib/js/ui/Dialog.d.ts +55 -0
- package/lib/js/ui/Dialog.js +173 -0
- package/lib/js/ui/Slider.d.ts +38 -0
- package/lib/js/ui/Slider.js +129 -0
- package/lib/js/ui/ToggleButton.d.ts +20 -0
- package/lib/js/ui/ToggleButton.js +42 -0
- package/lib/js/ui/View.d.ts +37 -0
- package/{src/ui/View.ts → lib/js/ui/View.js} +31 -77
- package/lib/js/ui/icons.d.ts +1 -0
- package/{src/ui/icons.ts → lib/js/ui/icons.js} +1 -1
- package/lib/js/utils/BaseWorker.d.ts +14 -0
- package/{src/utils/BaseWorker.ts → lib/js/utils/BaseWorker.js} +15 -28
- package/lib/js/utils/FontAtlas.d.ts +82 -0
- package/{src/utils/FontAtlas.ts → lib/js/utils/FontAtlas.js} +45 -181
- package/lib/js/utils/GeoImageCreator.d.ts +34 -0
- package/{src/utils/GeoImageCreator.ts → lib/js/utils/GeoImageCreator.js} +34 -91
- package/lib/js/utils/ImagesCacheManager.d.ts +22 -0
- package/{src/utils/ImagesCacheManager.ts → lib/js/utils/ImagesCacheManager.js} +16 -38
- package/lib/js/utils/Loader.d.ts +63 -0
- package/lib/js/utils/Loader.js +156 -0
- package/lib/js/utils/NormalMapCreator.d.ts +52 -0
- package/{src/utils/NormalMapCreator.ts → lib/js/utils/NormalMapCreator.js} +64 -195
- package/lib/js/utils/PlainSegmentWorker.d.ts +24 -0
- package/{src/utils/PlainSegmentWorker.ts → lib/js/utils/PlainSegmentWorker.js} +24 -56
- package/lib/js/utils/TerrainWorker.d.ts +28 -0
- package/{src/utils/TerrainWorker.ts → lib/js/utils/TerrainWorker.js} +19 -56
- package/lib/js/utils/TextureAtlas.d.ts +113 -0
- package/{src/utils/TextureAtlas.ts → lib/js/utils/TextureAtlas.js} +40 -131
- package/lib/js/utils/VectorTileCreator.d.ts +18 -0
- package/{src/utils/VectorTileCreator.ts → lib/js/utils/VectorTileCreator.js} +61 -147
- package/lib/js/utils/colorTable.d.ts +3 -0
- package/{src/utils/colorTable.ts → lib/js/utils/colorTable.js} +2 -2
- package/lib/js/utils/earcut.d.ts +7 -0
- package/{src/utils/earcut.ts → lib/js/utils/earcut.js} +95 -223
- package/lib/js/utils/objParser.d.ts +24 -0
- package/{src/utils/objParser.ts → lib/js/utils/objParser.js} +38 -93
- package/lib/js/utils/shared.d.ts +267 -0
- package/{src/utils/shared.ts → lib/js/utils/shared.js} +184 -341
- package/lib/js/utils/units.d.ts +16 -0
- package/lib/js/utils/units.js +61 -0
- package/lib/js/webgl/BaseFramebuffer.d.ts +53 -0
- package/{src/webgl/BaseFramebuffer.ts → lib/js/webgl/BaseFramebuffer.js} +22 -59
- package/lib/js/webgl/Framebuffer.d.ts +69 -0
- package/{src/webgl/Framebuffer.ts → lib/js/webgl/Framebuffer.js} +30 -87
- package/lib/js/webgl/Handler.d.ts +473 -0
- package/{src/webgl/Handler.ts → lib/js/webgl/Handler.js} +175 -586
- package/lib/js/webgl/Multisample.d.ts +27 -0
- package/lib/js/webgl/Multisample.js +77 -0
- package/lib/js/webgl/Program.d.ts +159 -0
- package/{src/webgl/Program.ts → lib/js/webgl/Program.js} +73 -210
- package/lib/js/webgl/ProgramController.d.ts +86 -0
- package/{src/webgl/ProgramController.ts → lib/js/webgl/ProgramController.js} +11 -45
- package/{src/webgl/index.ts → lib/js/webgl/index.d.ts} +1 -8
- package/lib/js/webgl/index.js +6 -0
- package/lib/js/webgl/types.d.ts +9 -0
- package/{src/webgl/types.ts → lib/js/webgl/types.js} +5 -8
- package/lib/js/webgl/variableHandlers.d.ts +22 -0
- package/lib/js/webgl/variableHandlers.js +78 -0
- package/package.json +23 -34
- package/dist/@openglobus/og.esm.js +0 -2
- package/dist/@openglobus/og.esm.js.map +0 -1
- package/dist/@openglobus/og.umd.js +0 -2
- package/dist/@openglobus/og.umd.js.map +0 -1
- package/src/Deferred.ts +0 -17
- package/src/control/MouseWheelZoomControl.ts +0 -269
- package/src/control/ScaleControl.ts +0 -131
- package/src/control/SegmentBoundVisualization.ts +0 -50
- package/src/control/ShowFps.ts +0 -28
- package/src/control/ToggleWireframe.ts +0 -35
- package/src/control/ruler/Ruler.ts +0 -35
- package/src/control/ruler/RulerScene.ts +0 -437
- package/src/control/timeline/timelineUtils.ts +0 -133
- package/src/ellipsoid/index.ts +0 -4
- package/src/entity/Geometry.ts +0 -486
- package/src/index.ts +0 -173
- package/src/layer/GeoTexture2d.ts +0 -56
- package/src/layer/index.ts +0 -12
- package/src/math/Line3.ts +0 -162
- package/src/math/index.ts +0 -26
- package/src/quadTree/EPSG4326QuadTreeStrategy.ts +0 -24
- package/src/quadTree/EarthQuadTreeStrategy.ts +0 -28
- package/src/quadTree/MarsQuadTreeStrategy.ts +0 -25
- package/src/quadTree/Wgs84QuadTreeStrategy.ts +0 -22
- package/src/quadTree/index.ts +0 -14
- package/src/scene/Axes.ts +0 -78
- package/src/segment/SegmentLonLatWgs84.ts +0 -33
- package/src/terrain/Geoid.ts +0 -273
- package/src/ui/Button.ts +0 -121
- package/src/ui/ButtonGroup.ts +0 -63
- package/src/ui/Dialog.ts +0 -244
- package/src/ui/Slider.ts +0 -188
- package/src/ui/ToggleButton.ts +0 -68
- package/src/utils/Loader.ts +0 -247
- package/src/utils/units.ts +0 -78
- package/src/webgl/Multisample.ts +0 -153
- package/src/webgl/variableHandlers.ts +0 -114
- /package/{dist → lib}/@openglobus/og.css +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Bold.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Bold.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Light.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Light.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Medium.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Medium.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/NotoSansArabic-Regular.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Roboto-Regular.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/arial.js +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/arial.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/arial.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/arial.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/night-4326.png +0 -0
- /package/{dist → lib}/@openglobus/res/night.png +0 -0
- /package/{dist → lib}/@openglobus/res/spec.png +0 -0
|
@@ -1,51 +1,23 @@
|
|
|
1
|
-
import {Camera} from "../camera/Camera";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {toneMapping} from "../shaders/toneMapping";
|
|
18
|
-
import {TextureAtlas} from "../utils/TextureAtlas";
|
|
19
|
-
import {Vec2} from "../math/Vec2";
|
|
20
|
-
import {NumberArray3, Vec3} from "../math/Vec3";
|
|
21
|
-
import {Vec4} from "../math/Vec4";
|
|
22
|
-
|
|
23
|
-
interface IRendererParams {
|
|
24
|
-
controls?: Control[];
|
|
25
|
-
msaa?: number;
|
|
26
|
-
autoActivate?: boolean;
|
|
27
|
-
fontsSrc?: string;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
interface IPickingObject {
|
|
31
|
-
_pickingColor?: Vec3;
|
|
32
|
-
_pickingColorU?: Float32Array;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
interface IFrameCallbackHandler {
|
|
36
|
-
id: number;
|
|
37
|
-
callback: Function;
|
|
38
|
-
sender: any;
|
|
39
|
-
}
|
|
40
|
-
|
|
1
|
+
import { Camera } from "../camera/Camera";
|
|
2
|
+
import { cons } from "../cons";
|
|
3
|
+
import { createRendererEvents } from "./RendererEvents";
|
|
4
|
+
import { depth } from "../shaders/depth";
|
|
5
|
+
import { Framebuffer, Multisample } from "../webgl/index";
|
|
6
|
+
import { FontAtlas } from "../utils/FontAtlas";
|
|
7
|
+
import { input } from "../input/input";
|
|
8
|
+
import { isEmpty } from "../utils/shared";
|
|
9
|
+
import { LabelWorker } from "../entity/LabelWorker";
|
|
10
|
+
import { pickingMask } from "../shaders/pickingMask";
|
|
11
|
+
import { randomi } from "../math";
|
|
12
|
+
import { screenFrame } from "../shaders/screenFrame";
|
|
13
|
+
import { toneMapping } from "../shaders/toneMapping";
|
|
14
|
+
import { TextureAtlas } from "../utils/TextureAtlas";
|
|
15
|
+
import { Vec2 } from "../math/Vec2";
|
|
16
|
+
import { Vec3 } from "../math/Vec3";
|
|
41
17
|
const MSAA_DEFAULT = 0;
|
|
42
|
-
|
|
43
18
|
let __pickingCallbackCounter__ = 0;
|
|
44
|
-
|
|
45
19
|
let __depthCallbackCounter__ = 0;
|
|
46
|
-
|
|
47
20
|
let __distanceCallbackCounter__ = 0;
|
|
48
|
-
|
|
49
21
|
/**
|
|
50
22
|
* Represents high level WebGL context interface that starts WebGL handler working in real time.
|
|
51
23
|
* @class
|
|
@@ -79,320 +51,109 @@ let __distanceCallbackCounter__ = 0;
|
|
|
79
51
|
* @fires EventsHandler<RendererEventsType>#touchleave
|
|
80
52
|
* @fires EventsHandler<RendererEventsType>#touchenter
|
|
81
53
|
*/
|
|
82
|
-
|
|
83
|
-
let __resizeTimeout: any;
|
|
84
|
-
|
|
85
|
-
export interface HTMLDivElementExt extends HTMLDivElement {
|
|
86
|
-
attributions?: HTMLElement;
|
|
87
|
-
}
|
|
88
|
-
|
|
54
|
+
let __resizeTimeout;
|
|
89
55
|
class Renderer {
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Div element with WebGL canvas. Assigned in Globe class.
|
|
93
|
-
* @public
|
|
94
|
-
* @type {HTMLElement | null}
|
|
95
|
-
*/
|
|
96
|
-
public div: HTMLDivElementExt | null;
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* WebGL handler context.
|
|
100
|
-
* @public
|
|
101
|
-
* @type {Handler}
|
|
102
|
-
*/
|
|
103
|
-
public handler: Handler;
|
|
104
|
-
public exposure: number;
|
|
105
|
-
public gamma: number;
|
|
106
|
-
public whitepoint: number;
|
|
107
|
-
public brightThreshold: number;
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Render nodes drawing queue.
|
|
111
|
-
* @public
|
|
112
|
-
* @type {Array.<RenderNode>}
|
|
113
|
-
*/
|
|
114
|
-
public _renderNodesArr: RenderNode[];
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Render nodes store for the comfortable access by the node name.
|
|
118
|
-
* @public
|
|
119
|
-
* @type {Object.<RenderNode>}
|
|
120
|
-
*/
|
|
121
|
-
public renderNodes: Record<string, RenderNode>;
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Current active camera.
|
|
125
|
-
* @public
|
|
126
|
-
* @type {Camera}
|
|
127
|
-
*/
|
|
128
|
-
public activeCamera: Camera | null;
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Renderer events. Represents interface for setting events like mousemove, draw, keypress etc.
|
|
132
|
-
* @public
|
|
133
|
-
* @type {RendererEvents}
|
|
134
|
-
*/
|
|
135
|
-
public events: RendererEventsHandler;
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Controls array.
|
|
139
|
-
* @public
|
|
140
|
-
* @type {Object}
|
|
141
|
-
*/
|
|
142
|
-
public controls: Record<string, Control>;
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Provides exchange between controls.
|
|
146
|
-
* @public
|
|
147
|
-
* @type {any}
|
|
148
|
-
*/
|
|
149
|
-
public controlsBag: any;
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Hash table for drawing objects.
|
|
153
|
-
* @public
|
|
154
|
-
* @type {Map<string, any>}
|
|
155
|
-
*/
|
|
156
|
-
public colorObjects: Map<string, any>;
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* Color picking objects rendering queue.
|
|
160
|
-
* @type {Function[]}
|
|
161
|
-
*/
|
|
162
|
-
protected _pickingCallbacks: IFrameCallbackHandler[];
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Picking objects(labels and billboards) framebuffer.
|
|
166
|
-
* @public
|
|
167
|
-
* @type {Framebuffer}
|
|
168
|
-
*/
|
|
169
|
-
public pickingFramebuffer: Framebuffer | null;
|
|
170
|
-
|
|
171
|
-
protected _tempPickingPix_: Uint8Array;
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* @public
|
|
175
|
-
* @type {Framebuffer}
|
|
176
|
-
*/
|
|
177
|
-
public distanceFramebuffer: Framebuffer | null;
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* @type {Function[]}
|
|
181
|
-
*/
|
|
182
|
-
protected _distanceCallbacks: IFrameCallbackHandler[];
|
|
183
|
-
|
|
184
|
-
protected _tempDistancePix_: Uint8Array;
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Depth objects rendering queue.
|
|
188
|
-
* @type {Function[]}
|
|
189
|
-
*/
|
|
190
|
-
protected _depthCallbacks: IFrameCallbackHandler[];
|
|
191
|
-
|
|
192
|
-
public depthFramebuffer: Framebuffer | null;
|
|
193
|
-
|
|
194
|
-
protected _msaa: number;
|
|
195
|
-
|
|
196
|
-
protected _internalFormat: string;
|
|
197
|
-
protected _format: string;
|
|
198
|
-
protected _type: string;
|
|
199
|
-
|
|
200
|
-
public sceneFramebuffer: Framebuffer | Multisample | null;
|
|
201
|
-
|
|
202
|
-
protected blitFramebuffer: Framebuffer | null;
|
|
203
|
-
|
|
204
|
-
protected toneMappingFramebuffer: Framebuffer | null;
|
|
205
|
-
|
|
206
|
-
protected _initialized: boolean;
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Texture atlas for the billboards images. One atlas per node.
|
|
210
|
-
* @public
|
|
211
|
-
* @type {TextureAtlas}
|
|
212
|
-
*/
|
|
213
|
-
public billboardsTextureAtlas: TextureAtlas;
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* Texture atlas for the billboards images. One atlas per node.
|
|
217
|
-
* @public
|
|
218
|
-
* @type {TextureAtlas}
|
|
219
|
-
*/
|
|
220
|
-
public geoObjectsTextureAtlas: TextureAtlas;
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Texture font atlas for the font families and styles. One atlas per node.
|
|
224
|
-
* @public
|
|
225
|
-
* @type {FontAtlas}
|
|
226
|
-
*/
|
|
227
|
-
public fontAtlas: FontAtlas;
|
|
228
|
-
|
|
229
|
-
protected _entityCollections: EntityCollection[];
|
|
230
|
-
|
|
231
|
-
protected _currentOutput: string;
|
|
232
|
-
|
|
233
|
-
protected _fnScreenFrame: Function | null;
|
|
234
|
-
|
|
235
|
-
public labelWorker: LabelWorker;
|
|
236
|
-
|
|
237
|
-
public __useDistanceFramebuffer__: boolean;
|
|
238
|
-
|
|
239
|
-
public screenDepthFramebuffer: Framebuffer | null;
|
|
240
|
-
|
|
241
|
-
public screenFramePositionBuffer: WebGLBufferExt | null;
|
|
242
|
-
|
|
243
|
-
public screenTexture: Record<string, WebGLTexture>;
|
|
244
|
-
|
|
245
|
-
public outputTexture: WebGLTexture | null;
|
|
246
|
-
|
|
247
|
-
protected _pickingMaskCoordinatesBuffer: WebGLBufferExt | null;
|
|
248
|
-
|
|
249
|
-
constructor(handler: Handler, params: IRendererParams = {}) {
|
|
250
|
-
|
|
56
|
+
constructor(handler, params = {}) {
|
|
251
57
|
this.div = null;
|
|
252
|
-
|
|
253
58
|
this.handler = handler;
|
|
254
|
-
|
|
255
59
|
this.exposure = 3.01;
|
|
256
|
-
|
|
257
60
|
this.gamma = 0.47;
|
|
258
|
-
|
|
259
61
|
this.whitepoint = 1.0;
|
|
260
|
-
|
|
261
62
|
this.brightThreshold = 0.9;
|
|
262
|
-
|
|
263
63
|
this._renderNodesArr = [];
|
|
264
|
-
|
|
265
64
|
this.renderNodes = {};
|
|
266
|
-
|
|
267
65
|
this.activeCamera = null;
|
|
268
|
-
|
|
269
66
|
this.events = createRendererEvents(this);
|
|
270
|
-
|
|
271
67
|
this.controls = {};
|
|
272
|
-
|
|
273
68
|
if (params.controls) {
|
|
274
69
|
for (let i in params.controls) {
|
|
275
70
|
this.controls[params.controls[i].name] = params.controls[i];
|
|
276
71
|
}
|
|
277
72
|
}
|
|
278
|
-
|
|
279
73
|
this.controlsBag = {};
|
|
280
|
-
|
|
281
|
-
this.colorObjects = new Map<string, any>();
|
|
282
|
-
|
|
74
|
+
this.colorObjects = new Map();
|
|
283
75
|
this._pickingCallbacks = [];
|
|
284
|
-
|
|
285
76
|
this.pickingFramebuffer = null;
|
|
286
|
-
|
|
287
77
|
this._tempPickingPix_ = new Uint8Array([]);
|
|
288
|
-
|
|
289
78
|
this.distanceFramebuffer = null;
|
|
290
|
-
|
|
291
79
|
this._distanceCallbacks = [];
|
|
292
|
-
|
|
293
80
|
this._tempDistancePix_ = new Uint8Array([]);
|
|
294
|
-
|
|
295
81
|
this._depthCallbacks = [];
|
|
296
|
-
|
|
297
82
|
this.depthFramebuffer = null;
|
|
298
|
-
|
|
299
83
|
let urlParams = new URLSearchParams(location.search);
|
|
300
84
|
let msaaParam = urlParams.get('og_msaa');
|
|
301
85
|
if (msaaParam) {
|
|
302
86
|
this._msaa = Number(urlParams.get('og_msaa'));
|
|
303
|
-
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
304
89
|
this._msaa = params.msaa != undefined ? params.msaa : MSAA_DEFAULT;
|
|
305
90
|
}
|
|
306
|
-
|
|
307
91
|
this._internalFormat = "RGBA16F";
|
|
308
92
|
this._format = "RGBA";
|
|
309
93
|
this._type = "FLOAT";
|
|
310
|
-
|
|
311
94
|
this.sceneFramebuffer = null;
|
|
312
|
-
|
|
313
95
|
this.blitFramebuffer = null;
|
|
314
|
-
|
|
315
96
|
this.toneMappingFramebuffer = null;
|
|
316
|
-
|
|
317
97
|
this._initialized = false;
|
|
318
|
-
|
|
319
98
|
/**
|
|
320
99
|
* Texture atlas for the billboards images. One atlas per node.
|
|
321
100
|
* @public
|
|
322
101
|
* @type {TextureAtlas}
|
|
323
102
|
*/
|
|
324
103
|
this.billboardsTextureAtlas = new TextureAtlas();
|
|
325
|
-
|
|
326
104
|
/**
|
|
327
105
|
* Texture atlas for the billboards images. One atlas per node.
|
|
328
106
|
* @public
|
|
329
107
|
* @type {TextureAtlas}
|
|
330
108
|
*/
|
|
331
109
|
this.geoObjectsTextureAtlas = new TextureAtlas();
|
|
332
|
-
|
|
333
110
|
/**
|
|
334
111
|
* Texture font atlas for the font families and styles. One atlas per node.
|
|
335
112
|
* @public
|
|
336
113
|
* @type {FontAtlas}
|
|
337
114
|
*/
|
|
338
115
|
this.fontAtlas = new FontAtlas(params.fontsSrc);
|
|
339
|
-
|
|
340
116
|
this._entityCollections = [];
|
|
341
|
-
|
|
342
117
|
this._currentOutput = "screen";
|
|
343
|
-
|
|
344
118
|
this._fnScreenFrame = null;
|
|
345
|
-
|
|
346
119
|
this.labelWorker = new LabelWorker(4);
|
|
347
|
-
|
|
348
120
|
this.__useDistanceFramebuffer__ = true;
|
|
349
|
-
|
|
350
121
|
this.screenDepthFramebuffer = null;
|
|
351
|
-
|
|
352
122
|
this.screenFramePositionBuffer = null;
|
|
353
|
-
|
|
354
123
|
this.screenTexture = {};
|
|
355
|
-
|
|
356
124
|
this.outputTexture = null;
|
|
357
|
-
|
|
358
125
|
this._pickingMaskCoordinatesBuffer = null;
|
|
359
|
-
|
|
360
126
|
if (params.autoActivate || isEmpty(params.autoActivate)) {
|
|
361
127
|
this.start();
|
|
362
128
|
}
|
|
363
129
|
}
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
let gl = this.handler.gl!;
|
|
130
|
+
enableBlendOneSrcAlpha() {
|
|
131
|
+
let gl = this.handler.gl;
|
|
367
132
|
gl.enable(gl.BLEND);
|
|
368
133
|
gl.blendEquation(gl.FUNC_ADD);
|
|
369
134
|
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
370
135
|
}
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
let gl = this.handler.gl!;
|
|
136
|
+
enableBlendDefault() {
|
|
137
|
+
let gl = this.handler.gl;
|
|
374
138
|
gl.enable(gl.BLEND);
|
|
375
139
|
gl.blendEquation(gl.FUNC_ADD);
|
|
376
140
|
gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE);
|
|
377
141
|
}
|
|
378
|
-
|
|
379
142
|
/**
|
|
380
143
|
* Sets renderer events activity.
|
|
381
144
|
* @param {Boolean} activity - Events activity.
|
|
382
145
|
*/
|
|
383
|
-
|
|
146
|
+
setEventsActivity(activity) {
|
|
384
147
|
this.events.active = activity;
|
|
385
148
|
}
|
|
386
|
-
|
|
387
|
-
public addDepthCallback(sender: any, callback: Function) {
|
|
149
|
+
addDepthCallback(sender, callback) {
|
|
388
150
|
let id = __depthCallbackCounter__++;
|
|
389
151
|
this._depthCallbacks.push({
|
|
390
152
|
id: id, callback: callback, sender: sender
|
|
391
153
|
});
|
|
392
154
|
return id;
|
|
393
155
|
}
|
|
394
|
-
|
|
395
|
-
public removeDepthCallback(id: number) {
|
|
156
|
+
removeDepthCallback(id) {
|
|
396
157
|
for (let i = 0; i < this._depthCallbacks.length; i++) {
|
|
397
158
|
if (id === this._depthCallbacks[i].id) {
|
|
398
159
|
this._depthCallbacks.splice(i, 1);
|
|
@@ -400,16 +161,14 @@ class Renderer {
|
|
|
400
161
|
}
|
|
401
162
|
}
|
|
402
163
|
}
|
|
403
|
-
|
|
404
|
-
public addDistanceCallback(sender: any, callback: Function) {
|
|
164
|
+
addDistanceCallback(sender, callback) {
|
|
405
165
|
let id = __distanceCallbackCounter__++;
|
|
406
166
|
this._distanceCallbacks.push({
|
|
407
167
|
id: id, callback: callback, sender: sender
|
|
408
168
|
});
|
|
409
169
|
return id;
|
|
410
170
|
}
|
|
411
|
-
|
|
412
|
-
public removeDistanceCallback(id: number) {
|
|
171
|
+
removeDistanceCallback(id) {
|
|
413
172
|
for (let i = 0; i < this._distanceCallbacks.length; i++) {
|
|
414
173
|
if (id === this._distanceCallbacks[i].id) {
|
|
415
174
|
this._distanceCallbacks.splice(i, 1);
|
|
@@ -417,27 +176,24 @@ class Renderer {
|
|
|
417
176
|
}
|
|
418
177
|
}
|
|
419
178
|
}
|
|
420
|
-
|
|
421
|
-
|
|
422
179
|
/**
|
|
423
180
|
* Adds picking rendering callback function.
|
|
424
181
|
* @param {object} sender - Callback context.
|
|
425
182
|
* @param {Function} callback - Rendering callback.
|
|
426
183
|
* @returns {Number} Handler id
|
|
427
184
|
*/
|
|
428
|
-
|
|
185
|
+
addPickingCallback(sender, callback) {
|
|
429
186
|
let id = __pickingCallbackCounter__++;
|
|
430
187
|
this._pickingCallbacks.push({
|
|
431
188
|
id: id, callback: callback, sender: sender
|
|
432
189
|
});
|
|
433
190
|
return id;
|
|
434
191
|
}
|
|
435
|
-
|
|
436
192
|
/**
|
|
437
193
|
* Removes picking rendering callback function.
|
|
438
194
|
* @param {Number} id - Handler id to remove.
|
|
439
195
|
*/
|
|
440
|
-
|
|
196
|
+
removePickingCallback(id) {
|
|
441
197
|
for (let i = 0; i < this._pickingCallbacks.length; i++) {
|
|
442
198
|
if (id === this._pickingCallbacks[i].id) {
|
|
443
199
|
this._pickingCallbacks.splice(i, 1);
|
|
@@ -445,25 +201,21 @@ class Renderer {
|
|
|
445
201
|
}
|
|
446
202
|
}
|
|
447
203
|
}
|
|
448
|
-
|
|
449
|
-
public getPickingObject<T>(r: number, g: number, b: number): T {
|
|
204
|
+
getPickingObject(r, g, b) {
|
|
450
205
|
return this.colorObjects.get(`${r}_${g}_${b}`);
|
|
451
206
|
}
|
|
452
|
-
|
|
453
|
-
public getPickingObjectArr<T>(arr: NumberArray3 | Uint8Array): T {
|
|
207
|
+
getPickingObjectArr(arr) {
|
|
454
208
|
return this.colorObjects.get(`${arr[0]}_${arr[1]}_${arr[2]}`);
|
|
455
209
|
}
|
|
456
|
-
|
|
457
|
-
public getPickingObject3v<T>(vec: Vec3 | Vec4): T {
|
|
210
|
+
getPickingObject3v(vec) {
|
|
458
211
|
return this.colorObjects.get(`${vec.x}_${vec.y}_${vec.z}`);
|
|
459
212
|
}
|
|
460
|
-
|
|
461
213
|
/**
|
|
462
214
|
* Assign picking color to the object.
|
|
463
215
|
* @public
|
|
464
216
|
* @param {Object} obj - Object that presume to be picked.
|
|
465
217
|
*/
|
|
466
|
-
|
|
218
|
+
assignPickingColor(obj) {
|
|
467
219
|
if (!obj._pickingColor || obj._pickingColor.isZero()) {
|
|
468
220
|
let r = 0, g = 0, b = 0;
|
|
469
221
|
let str = "0_0_0";
|
|
@@ -473,25 +225,22 @@ class Renderer {
|
|
|
473
225
|
b = randomi(1, 255);
|
|
474
226
|
str = `${r}_${g}_${b}`;
|
|
475
227
|
}
|
|
476
|
-
|
|
477
228
|
if (!obj._pickingColor) {
|
|
478
229
|
obj._pickingColor = new Vec3(r, g, b);
|
|
479
|
-
}
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
480
232
|
obj._pickingColor.set(r, g, b);
|
|
481
233
|
}
|
|
482
|
-
|
|
483
234
|
obj._pickingColorU = new Float32Array([r / 255, g / 255, b / 255]);
|
|
484
|
-
|
|
485
235
|
this.colorObjects.set(str, obj);
|
|
486
236
|
}
|
|
487
237
|
}
|
|
488
|
-
|
|
489
238
|
/**
|
|
490
239
|
* Removes picking color from object.
|
|
491
240
|
* @public
|
|
492
241
|
* @param {Object} obj - Object to remove picking color.
|
|
493
242
|
*/
|
|
494
|
-
|
|
243
|
+
clearPickingColor(obj) {
|
|
495
244
|
if (obj._pickingColor && !obj._pickingColor.isZero()) {
|
|
496
245
|
let c = obj._pickingColor;
|
|
497
246
|
if (!c.isZero()) {
|
|
@@ -500,125 +249,103 @@ class Renderer {
|
|
|
500
249
|
}
|
|
501
250
|
}
|
|
502
251
|
}
|
|
503
|
-
|
|
504
252
|
/**
|
|
505
253
|
* Get the client width.
|
|
506
254
|
* @public
|
|
507
255
|
* @returns {number} -
|
|
508
256
|
*/
|
|
509
|
-
|
|
510
|
-
return this.handler.canvas
|
|
257
|
+
getWidth() {
|
|
258
|
+
return this.handler.canvas.clientWidth;
|
|
511
259
|
}
|
|
512
|
-
|
|
513
260
|
/**
|
|
514
261
|
* Get the client height.
|
|
515
262
|
* @public
|
|
516
263
|
* @returns {number} -
|
|
517
264
|
*/
|
|
518
|
-
|
|
519
|
-
return this.handler.canvas
|
|
265
|
+
getHeight() {
|
|
266
|
+
return this.handler.canvas.clientHeight;
|
|
520
267
|
}
|
|
521
|
-
|
|
522
268
|
/**
|
|
523
269
|
* Get center of the canvas
|
|
524
270
|
* @public
|
|
525
271
|
* @returns {Vec2} -
|
|
526
272
|
*/
|
|
527
|
-
|
|
528
|
-
let cnv = this.handler.canvas
|
|
273
|
+
getCenter() {
|
|
274
|
+
let cnv = this.handler.canvas;
|
|
529
275
|
return new Vec2(Math.round(cnv.width * 0.5), Math.round(cnv.height * 0.5));
|
|
530
276
|
}
|
|
531
|
-
|
|
532
277
|
/**
|
|
533
278
|
* Get center of the screen viewport
|
|
534
279
|
* @public
|
|
535
280
|
* @returns {Vec2} -
|
|
536
281
|
*/
|
|
537
|
-
|
|
538
|
-
let cnv = this.handler.canvas
|
|
282
|
+
getClientCenter() {
|
|
283
|
+
let cnv = this.handler.canvas;
|
|
539
284
|
return new Vec2(Math.round(cnv.clientWidth * 0.5), Math.round(cnv.clientHeight * 0.5));
|
|
540
285
|
}
|
|
541
|
-
|
|
542
286
|
/**
|
|
543
287
|
* Add the given control to the renderer.
|
|
544
288
|
* @param {Control} control - Control.
|
|
545
289
|
*/
|
|
546
|
-
|
|
290
|
+
addControl(control) {
|
|
547
291
|
control.addTo(this);
|
|
548
292
|
}
|
|
549
|
-
|
|
550
293
|
/**
|
|
551
294
|
* Add the given controls array to the planet node.
|
|
552
295
|
* @param {Array.<Control>} cArr - Control array.
|
|
553
296
|
*/
|
|
554
|
-
|
|
297
|
+
addControls(cArr) {
|
|
555
298
|
for (let i = 0; i < cArr.length; i++) {
|
|
556
299
|
cArr[i].addTo(this);
|
|
557
300
|
}
|
|
558
301
|
}
|
|
559
|
-
|
|
560
302
|
/**
|
|
561
303
|
* Remove control from the renderer.
|
|
562
304
|
* @param {Control} control - Control.
|
|
563
305
|
*/
|
|
564
|
-
|
|
306
|
+
removeControl(control) {
|
|
565
307
|
control.remove();
|
|
566
308
|
}
|
|
567
|
-
|
|
568
|
-
public isInitialized(): boolean {
|
|
309
|
+
isInitialized() {
|
|
569
310
|
return this._initialized;
|
|
570
311
|
}
|
|
571
|
-
|
|
572
312
|
/**
|
|
573
313
|
* Renderer initialization.
|
|
574
314
|
* @public
|
|
575
315
|
*/
|
|
576
|
-
|
|
577
|
-
|
|
316
|
+
initialize() {
|
|
578
317
|
if (this._initialized) {
|
|
579
318
|
return;
|
|
580
|
-
}
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
581
321
|
this._initialized = true;
|
|
582
322
|
}
|
|
583
|
-
|
|
584
323
|
this.handler.initialize();
|
|
585
|
-
|
|
586
324
|
this.billboardsTextureAtlas.assignHandler(this.handler);
|
|
587
325
|
this.geoObjectsTextureAtlas.assignHandler(this.handler);
|
|
588
|
-
|
|
589
326
|
this.fontAtlas.assignHandler(this.handler);
|
|
590
|
-
|
|
591
327
|
this.handler.setFrameCallback(() => {
|
|
592
328
|
this.draw();
|
|
593
329
|
});
|
|
594
|
-
|
|
595
330
|
this.activeCamera = new Camera(this, {
|
|
596
331
|
eye: new Vec3(0, 0, 0), look: new Vec3(0, 0, -1), up: new Vec3(0, 1, 0)
|
|
597
332
|
});
|
|
598
|
-
|
|
599
333
|
this.events.initialize();
|
|
600
|
-
|
|
601
334
|
// Bind console key
|
|
602
335
|
this.events.on("charkeypress", input.KEY_APOSTROPHE, function () {
|
|
603
336
|
cons.setVisibility(!cons.getVisibility());
|
|
604
337
|
});
|
|
605
|
-
|
|
606
338
|
this.handler.addProgram(screenFrame());
|
|
607
|
-
|
|
608
339
|
this.pickingFramebuffer = new Framebuffer(this.handler, {
|
|
609
340
|
width: 640, height: 480, depthComponent: "DEPTH_STENCIL", renderbufferTarget: "DEPTH_STENCIL_ATTACHMENT"
|
|
610
341
|
});
|
|
611
342
|
this.pickingFramebuffer.init();
|
|
612
|
-
|
|
613
343
|
this._tempPickingPix_ = new Uint8Array(this.pickingFramebuffer.width * this.pickingFramebuffer.height * 4);
|
|
614
|
-
|
|
615
344
|
this.distanceFramebuffer = new Framebuffer(this.handler, {
|
|
616
345
|
width: 320, height: 240
|
|
617
346
|
});
|
|
618
347
|
this.distanceFramebuffer.init();
|
|
619
|
-
|
|
620
348
|
this._tempDistancePix_ = new Uint8Array(this.distanceFramebuffer.width * this.distanceFramebuffer.height * 4);
|
|
621
|
-
|
|
622
349
|
this.depthFramebuffer = new Framebuffer(this.handler, {
|
|
623
350
|
size: 2,
|
|
624
351
|
internalFormat: ["RGBA", "DEPTH_COMPONENT24"],
|
|
@@ -628,44 +355,35 @@ class Renderer {
|
|
|
628
355
|
useDepth: false
|
|
629
356
|
});
|
|
630
357
|
this.depthFramebuffer.init();
|
|
631
|
-
|
|
632
358
|
this.screenDepthFramebuffer = new Framebuffer(this.handler, {
|
|
633
359
|
useDepth: false
|
|
634
360
|
});
|
|
635
361
|
this.screenDepthFramebuffer.init();
|
|
636
|
-
|
|
637
|
-
if (this.handler.gl!.type === "webgl") {
|
|
362
|
+
if (this.handler.gl.type === "webgl") {
|
|
638
363
|
this.sceneFramebuffer = new Framebuffer(this.handler);
|
|
639
364
|
this.sceneFramebuffer.init();
|
|
640
|
-
|
|
641
365
|
this._fnScreenFrame = this._screenFrameNoMSAA;
|
|
642
|
-
|
|
643
366
|
this.screenTexture = {
|
|
644
|
-
screen: this.sceneFramebuffer
|
|
645
|
-
picking: this.pickingFramebuffer
|
|
646
|
-
distance: this.distanceFramebuffer
|
|
647
|
-
depth: this.screenDepthFramebuffer
|
|
367
|
+
screen: this.sceneFramebuffer.textures[0],
|
|
368
|
+
picking: this.pickingFramebuffer.textures[0],
|
|
369
|
+
distance: this.distanceFramebuffer.textures[0],
|
|
370
|
+
depth: this.screenDepthFramebuffer.textures[0]
|
|
648
371
|
};
|
|
649
|
-
}
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
650
374
|
let _maxMSAA = this.getMaxMSAA(this._internalFormat);
|
|
651
|
-
|
|
652
375
|
if (this._msaa > _maxMSAA) {
|
|
653
376
|
this._msaa = _maxMSAA;
|
|
654
377
|
}
|
|
655
|
-
|
|
656
378
|
this.handler.addPrograms([toneMapping()]);
|
|
657
|
-
|
|
658
379
|
this.handler.addPrograms([depth()]);
|
|
659
|
-
|
|
660
380
|
this.sceneFramebuffer = new Multisample(this.handler, {
|
|
661
381
|
size: 1,
|
|
662
382
|
msaa: this._msaa,
|
|
663
383
|
internalFormat: this._internalFormat,
|
|
664
384
|
filter: "LINEAR"
|
|
665
385
|
});
|
|
666
|
-
|
|
667
386
|
this.sceneFramebuffer.init();
|
|
668
|
-
|
|
669
387
|
this.blitFramebuffer = new Framebuffer(this.handler, {
|
|
670
388
|
size: 1,
|
|
671
389
|
useDepth: false,
|
|
@@ -674,28 +392,21 @@ class Renderer {
|
|
|
674
392
|
type: this._type,
|
|
675
393
|
filter: "NEAREST"
|
|
676
394
|
});
|
|
677
|
-
|
|
678
395
|
this.blitFramebuffer.init();
|
|
679
|
-
|
|
680
396
|
this.toneMappingFramebuffer = new Framebuffer(this.handler, {
|
|
681
397
|
useDepth: false
|
|
682
398
|
});
|
|
683
|
-
|
|
684
399
|
this.toneMappingFramebuffer.init();
|
|
685
|
-
|
|
686
400
|
this._fnScreenFrame = this._screenFrameMSAA;
|
|
687
|
-
|
|
688
401
|
this.screenTexture = {
|
|
689
|
-
screen: this.toneMappingFramebuffer
|
|
690
|
-
picking: this.pickingFramebuffer
|
|
691
|
-
distance: this.distanceFramebuffer
|
|
692
|
-
depth: this.screenDepthFramebuffer
|
|
693
|
-
frustum: this.depthFramebuffer
|
|
402
|
+
screen: this.toneMappingFramebuffer.textures[0],
|
|
403
|
+
picking: this.pickingFramebuffer.textures[0],
|
|
404
|
+
distance: this.distanceFramebuffer.textures[0],
|
|
405
|
+
depth: this.screenDepthFramebuffer.textures[0],
|
|
406
|
+
frustum: this.depthFramebuffer.textures[0]
|
|
694
407
|
};
|
|
695
408
|
}
|
|
696
|
-
|
|
697
409
|
this.handler.addProgram(pickingMask());
|
|
698
|
-
|
|
699
410
|
this.handler.ONCANVASRESIZE = () => {
|
|
700
411
|
this._resizeStart();
|
|
701
412
|
this.events.dispatch(this.events.resize, this.handler.canvas);
|
|
@@ -705,107 +416,89 @@ class Renderer {
|
|
|
705
416
|
this.events.dispatch(this.events.resizeend, this.handler.canvas);
|
|
706
417
|
}, 320);
|
|
707
418
|
};
|
|
708
|
-
|
|
709
419
|
this.screenFramePositionBuffer = this.handler.createArrayBuffer(new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), 2, 4);
|
|
710
|
-
|
|
711
|
-
|
|
712
420
|
this.outputTexture = this.screenTexture.screen;
|
|
713
|
-
|
|
714
421
|
this._pickingMaskCoordinatesBuffer = this.handler.createArrayBuffer(new Float32Array([0, 0]), 2, 1);
|
|
715
|
-
|
|
716
422
|
this._initializeRenderNodes();
|
|
717
|
-
|
|
718
423
|
this._initializeControls();
|
|
719
424
|
}
|
|
720
|
-
|
|
721
|
-
public _initializeControls() {
|
|
425
|
+
_initializeControls() {
|
|
722
426
|
let temp = this.controls;
|
|
723
427
|
this.controls = {};
|
|
724
428
|
for (let i in temp) {
|
|
725
429
|
this.addControl(temp[i]);
|
|
726
430
|
}
|
|
727
431
|
}
|
|
728
|
-
|
|
729
|
-
public resize() {
|
|
432
|
+
resize() {
|
|
730
433
|
this._resizeEnd();
|
|
731
434
|
}
|
|
732
|
-
|
|
733
|
-
public setCurrentScreen(screenName: string) {
|
|
435
|
+
setCurrentScreen(screenName) {
|
|
734
436
|
this._currentOutput = screenName;
|
|
735
437
|
if (this.screenTexture[screenName]) {
|
|
736
438
|
this.outputTexture = this.screenTexture[screenName];
|
|
737
439
|
}
|
|
738
440
|
}
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
this.activeCamera!.setAspectRatio(c.width / c.height);
|
|
744
|
-
this.sceneFramebuffer!.setSize(c.width * 0.5, c.height * 0.5);
|
|
441
|
+
_resizeStart() {
|
|
442
|
+
let c = this.handler.canvas;
|
|
443
|
+
this.activeCamera.setAspectRatio(c.width / c.height);
|
|
444
|
+
this.sceneFramebuffer.setSize(c.width * 0.5, c.height * 0.5);
|
|
745
445
|
this.blitFramebuffer && this.blitFramebuffer.setSize(c.width * 0.5, c.height * 0.5, true);
|
|
746
446
|
}
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
this.activeCamera!.setAspectRatio(c.width / c.height);
|
|
752
|
-
this.sceneFramebuffer!.setSize(c.width, c.height);
|
|
447
|
+
_resizeEnd() {
|
|
448
|
+
let c = this.handler.canvas;
|
|
449
|
+
this.activeCamera.setAspectRatio(c.width / c.height);
|
|
450
|
+
this.sceneFramebuffer.setSize(c.width, c.height);
|
|
753
451
|
this.blitFramebuffer && this.blitFramebuffer.setSize(c.width, c.height, true);
|
|
754
|
-
|
|
755
452
|
this.toneMappingFramebuffer && this.toneMappingFramebuffer.setSize(c.width, c.height, true);
|
|
756
453
|
this.depthFramebuffer && this.depthFramebuffer.setSize(c.clientWidth, c.clientHeight, true);
|
|
757
454
|
this.screenDepthFramebuffer && this.screenDepthFramebuffer.setSize(c.clientWidth, c.clientHeight, true);
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
this.screenTexture.
|
|
761
|
-
this.screenTexture.
|
|
762
|
-
this.screenTexture.
|
|
763
|
-
this.screenTexture.
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
this.screenTexture.screen = this.toneMappingFramebuffer
|
|
767
|
-
this.screenTexture.picking = this.pickingFramebuffer
|
|
768
|
-
this.screenTexture.distance = this.distanceFramebuffer
|
|
769
|
-
this.screenTexture.depth = this.screenDepthFramebuffer
|
|
770
|
-
this.screenTexture.frustum = this.depthFramebuffer
|
|
455
|
+
if (this.handler.gl.type === "webgl") {
|
|
456
|
+
this.screenTexture.screen = this.sceneFramebuffer.textures[0];
|
|
457
|
+
this.screenTexture.picking = this.pickingFramebuffer.textures[0];
|
|
458
|
+
this.screenTexture.distance = this.distanceFramebuffer.textures[0];
|
|
459
|
+
this.screenTexture.depth = this.screenDepthFramebuffer.textures[0];
|
|
460
|
+
this.screenTexture.frustum = this.depthFramebuffer.textures[0];
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
this.screenTexture.screen = this.toneMappingFramebuffer.textures[0];
|
|
464
|
+
this.screenTexture.picking = this.pickingFramebuffer.textures[0];
|
|
465
|
+
this.screenTexture.distance = this.distanceFramebuffer.textures[0];
|
|
466
|
+
this.screenTexture.depth = this.screenDepthFramebuffer.textures[0];
|
|
467
|
+
this.screenTexture.frustum = this.depthFramebuffer.textures[0];
|
|
771
468
|
}
|
|
772
|
-
|
|
773
469
|
this.setCurrentScreen(this._currentOutput);
|
|
774
470
|
}
|
|
775
|
-
|
|
776
|
-
public removeNode(renderNode: RenderNode) {
|
|
471
|
+
removeNode(renderNode) {
|
|
777
472
|
// TODO: replace from RenderNode to this method
|
|
778
473
|
renderNode.remove();
|
|
779
474
|
}
|
|
780
|
-
|
|
781
475
|
/**
|
|
782
476
|
* Adds render node to the renderer.
|
|
783
477
|
* @public
|
|
784
478
|
* @param {RenderNode} renderNode - Render node.
|
|
785
479
|
*/
|
|
786
|
-
|
|
480
|
+
addNode(renderNode) {
|
|
787
481
|
if (!this.renderNodes[renderNode.name]) {
|
|
788
482
|
renderNode.assign(this);
|
|
789
483
|
this._renderNodesArr.unshift(renderNode);
|
|
790
484
|
this.renderNodes[renderNode.name] = renderNode;
|
|
791
|
-
}
|
|
485
|
+
}
|
|
486
|
+
else {
|
|
792
487
|
cons.logWrn(`Node name ${renderNode.name} already exists.`);
|
|
793
488
|
}
|
|
794
489
|
}
|
|
795
|
-
|
|
796
|
-
protected _initializeRenderNodes() {
|
|
490
|
+
_initializeRenderNodes() {
|
|
797
491
|
for (let i = 0; i < this._renderNodesArr.length; i++) {
|
|
798
492
|
this._renderNodesArr[i].initialize();
|
|
799
493
|
}
|
|
800
494
|
}
|
|
801
|
-
|
|
802
495
|
/**
|
|
803
496
|
* Adds render node to the renderer before specific node.
|
|
804
497
|
* @public
|
|
805
498
|
* @param {RenderNode} renderNode - Render node.
|
|
806
499
|
* @param {RenderNode} renderNodeBefore - Insert before the renderNodeBefore node.
|
|
807
500
|
*/
|
|
808
|
-
|
|
501
|
+
addNodeBefore(renderNode, renderNodeBefore) {
|
|
809
502
|
if (!this.renderNodes[renderNode.name]) {
|
|
810
503
|
renderNode.assign(this);
|
|
811
504
|
this.renderNodes[renderNode.name] = renderNode;
|
|
@@ -816,50 +509,43 @@ class Renderer {
|
|
|
816
509
|
}
|
|
817
510
|
}
|
|
818
511
|
this._renderNodesArr.unshift(renderNode);
|
|
819
|
-
}
|
|
512
|
+
}
|
|
513
|
+
else {
|
|
820
514
|
cons.logWrn(`Node name ${renderNode.name} already exists.`);
|
|
821
515
|
}
|
|
822
516
|
}
|
|
823
|
-
|
|
824
517
|
/**
|
|
825
518
|
* Adds render nodes array to the renderer.
|
|
826
519
|
* @public
|
|
827
520
|
* @param {Array.<RenderNode>} nodesArr - Render nodes array.
|
|
828
521
|
*/
|
|
829
|
-
|
|
522
|
+
addNodes(nodesArr) {
|
|
830
523
|
for (let i = 0; i < nodesArr.length; i++) {
|
|
831
524
|
this.addNode(nodesArr[i]);
|
|
832
525
|
}
|
|
833
526
|
}
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
let
|
|
837
|
-
let samples = gl.getInternalformatParameter(gl.RENDERBUFFER, (gl as any)[internalFormat], gl.SAMPLES);
|
|
527
|
+
getMaxMSAA(internalFormat) {
|
|
528
|
+
let gl = this.handler.gl;
|
|
529
|
+
let samples = gl.getInternalformatParameter(gl.RENDERBUFFER, gl[internalFormat], gl.SAMPLES);
|
|
838
530
|
return samples[0];
|
|
839
531
|
}
|
|
840
|
-
|
|
841
|
-
public getMSAA(): number {
|
|
532
|
+
getMSAA() {
|
|
842
533
|
return this._msaa;
|
|
843
534
|
}
|
|
844
|
-
|
|
845
535
|
/**
|
|
846
536
|
* TODO: replace with cache friendly linked list by BillboardHandler, LabelHandler etc.
|
|
847
537
|
*/
|
|
848
|
-
|
|
538
|
+
enqueueEntityCollectionsToDraw(ecArr) {
|
|
849
539
|
this._entityCollections.push.apply(this._entityCollections, ecArr);
|
|
850
540
|
}
|
|
851
|
-
|
|
852
541
|
/**
|
|
853
542
|
* Draws opaque items entity collections.
|
|
854
543
|
* @protected
|
|
855
544
|
*/
|
|
856
|
-
|
|
545
|
+
_drawOpaqueEntityCollections() {
|
|
857
546
|
let ec = this._entityCollections;
|
|
858
|
-
|
|
859
547
|
if (ec.length) {
|
|
860
|
-
|
|
861
548
|
this.enableBlendDefault();
|
|
862
|
-
|
|
863
549
|
//geoObject
|
|
864
550
|
let i = ec.length;
|
|
865
551
|
while (i--) {
|
|
@@ -869,7 +555,6 @@ class Renderer {
|
|
|
869
555
|
ec[i].geoObjectHandler.draw();
|
|
870
556
|
}
|
|
871
557
|
}
|
|
872
|
-
|
|
873
558
|
// pointClouds pass
|
|
874
559
|
i = ec.length;
|
|
875
560
|
while (i--) {
|
|
@@ -877,54 +562,43 @@ class Renderer {
|
|
|
877
562
|
}
|
|
878
563
|
}
|
|
879
564
|
}
|
|
880
|
-
|
|
881
|
-
|
|
882
565
|
/**
|
|
883
566
|
* Draws transparent items entity collections.
|
|
884
567
|
* @protected
|
|
885
568
|
*/
|
|
886
|
-
|
|
569
|
+
_drawTransparentEntityCollections() {
|
|
887
570
|
let ec = this._entityCollections;
|
|
888
|
-
|
|
889
571
|
if (ec.length) {
|
|
890
|
-
let gl = this.handler.gl
|
|
891
|
-
|
|
572
|
+
let gl = this.handler.gl;
|
|
892
573
|
this.enableBlendDefault();
|
|
893
|
-
|
|
894
574
|
// billboards pass
|
|
895
575
|
gl.activeTexture(gl.TEXTURE0);
|
|
896
576
|
gl.bindTexture(gl.TEXTURE_2D, this.billboardsTextureAtlas.texture);
|
|
897
|
-
|
|
898
577
|
let i = ec.length;
|
|
899
578
|
while (i--) {
|
|
900
579
|
let eci = ec[i];
|
|
901
580
|
eci._fadingOpacity && eci.billboardHandler.draw();
|
|
902
581
|
}
|
|
903
|
-
|
|
904
582
|
// labels pass
|
|
905
583
|
let fa = this.fontAtlas.atlasesArr;
|
|
906
584
|
for (i = 0; i < fa.length; i++) {
|
|
907
585
|
gl.activeTexture(gl.TEXTURE0 + i);
|
|
908
586
|
gl.bindTexture(gl.TEXTURE_2D, fa[i].texture);
|
|
909
587
|
}
|
|
910
|
-
|
|
911
588
|
i = ec.length;
|
|
912
589
|
while (i--) {
|
|
913
590
|
ec[i]._fadingOpacity && ec[i].labelHandler.draw();
|
|
914
591
|
}
|
|
915
|
-
|
|
916
592
|
// rays
|
|
917
593
|
i = ec.length;
|
|
918
594
|
while (i--) {
|
|
919
595
|
ec[i]._fadingOpacity && ec[i].rayHandler.draw();
|
|
920
596
|
}
|
|
921
|
-
|
|
922
597
|
// polyline pass
|
|
923
598
|
i = ec.length;
|
|
924
599
|
while (i--) {
|
|
925
600
|
ec[i]._fadingOpacity && ec[i].polylineHandler.draw();
|
|
926
601
|
}
|
|
927
|
-
|
|
928
602
|
// Strip pass
|
|
929
603
|
i = ec.length;
|
|
930
604
|
while (i--) {
|
|
@@ -932,71 +606,51 @@ class Renderer {
|
|
|
932
606
|
}
|
|
933
607
|
}
|
|
934
608
|
}
|
|
935
|
-
|
|
936
|
-
protected _clearEntityCollectionQueue() {
|
|
609
|
+
_clearEntityCollectionQueue() {
|
|
937
610
|
this._entityCollections.length = 0;
|
|
938
611
|
this._entityCollections = [];
|
|
939
612
|
}
|
|
940
|
-
|
|
941
613
|
/**
|
|
942
614
|
* Draw nodes.
|
|
943
615
|
* @public
|
|
944
616
|
*/
|
|
945
|
-
|
|
946
|
-
this.activeCamera
|
|
947
|
-
|
|
617
|
+
draw() {
|
|
618
|
+
this.activeCamera.checkMoveEnd();
|
|
948
619
|
let e = this.events;
|
|
949
620
|
e.handleEvents();
|
|
950
|
-
|
|
951
|
-
let sceneFramebuffer = this.sceneFramebuffer!;
|
|
621
|
+
let sceneFramebuffer = this.sceneFramebuffer;
|
|
952
622
|
sceneFramebuffer.activate();
|
|
953
|
-
|
|
954
|
-
let h = this.handler,
|
|
955
|
-
gl = h.gl!;
|
|
956
|
-
|
|
623
|
+
let h = this.handler, gl = h.gl;
|
|
957
624
|
gl.clearColor(0.0, 0.0, 0.0, 1.0);
|
|
958
625
|
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
959
|
-
|
|
960
626
|
e.dispatch(e.draw, this);
|
|
961
|
-
|
|
962
|
-
let
|
|
963
|
-
|
|
964
|
-
let pointerEvent = e.pointerEvent() || this.activeCamera!.isMoving;
|
|
965
|
-
|
|
627
|
+
let frustums = this.activeCamera.frustums;
|
|
628
|
+
let pointerEvent = e.pointerEvent() || this.activeCamera.isMoving;
|
|
966
629
|
// Rendering scene nodes and entityCollections
|
|
967
630
|
let rn = this._renderNodesArr;
|
|
968
631
|
let k = frustums.length;
|
|
969
|
-
|
|
970
632
|
while (k--) {
|
|
971
|
-
this.activeCamera
|
|
633
|
+
this.activeCamera.setCurrentFrustum(k);
|
|
972
634
|
gl.clear(gl.DEPTH_BUFFER_BIT);
|
|
973
|
-
|
|
974
635
|
let i = rn.length;
|
|
975
636
|
while (i--) {
|
|
976
637
|
rn[i].preDrawNode();
|
|
977
638
|
}
|
|
978
|
-
|
|
979
639
|
this._drawOpaqueEntityCollections();
|
|
980
|
-
|
|
981
640
|
i = rn.length;
|
|
982
641
|
while (i--) {
|
|
983
642
|
this.enableBlendDefault();
|
|
984
643
|
rn[i].drawNode();
|
|
985
644
|
}
|
|
986
|
-
|
|
987
645
|
this._drawTransparentEntityCollections();
|
|
988
646
|
this._clearEntityCollectionQueue();
|
|
989
|
-
|
|
990
647
|
if (pointerEvent) {
|
|
991
648
|
this._drawPickingBuffer();
|
|
992
649
|
this.__useDistanceFramebuffer__ && this._drawDistanceBuffer();
|
|
993
650
|
}
|
|
994
651
|
}
|
|
995
|
-
|
|
996
652
|
sceneFramebuffer.deactivate();
|
|
997
|
-
|
|
998
|
-
this.blitFramebuffer && (sceneFramebuffer as Multisample).blitTo(this.blitFramebuffer, 0);
|
|
999
|
-
|
|
653
|
+
this.blitFramebuffer && sceneFramebuffer.blitTo(this.blitFramebuffer, 0);
|
|
1000
654
|
if (pointerEvent) {
|
|
1001
655
|
// It works ONLY for 0 (closest) frustum
|
|
1002
656
|
if (h.isWebGl2()) {
|
|
@@ -1005,46 +659,31 @@ class Renderer {
|
|
|
1005
659
|
this._readPickingBuffer();
|
|
1006
660
|
this.__useDistanceFramebuffer__ && this._readDistanceBuffer();
|
|
1007
661
|
}
|
|
1008
|
-
|
|
1009
662
|
// Tone mapping followed by rendering on the screen
|
|
1010
|
-
this._fnScreenFrame
|
|
1011
|
-
|
|
663
|
+
this._fnScreenFrame();
|
|
1012
664
|
e.dispatch(e.postdraw, this);
|
|
1013
|
-
|
|
1014
665
|
e.mouseState.wheelDelta = 0;
|
|
1015
666
|
e.mouseState.justStopped = false;
|
|
1016
667
|
e.mouseState.moving = false;
|
|
1017
668
|
e.touchState.moving = false;
|
|
1018
669
|
}
|
|
1019
|
-
|
|
1020
|
-
protected _screenFrameMSAA() {
|
|
670
|
+
_screenFrameMSAA() {
|
|
1021
671
|
let h = this.handler;
|
|
1022
|
-
|
|
1023
|
-
let sh = h.programs.toneMapping,
|
|
1024
|
-
p = sh._program,
|
|
1025
|
-
gl = h.gl!;
|
|
1026
|
-
|
|
672
|
+
let sh = h.programs.toneMapping, p = sh._program, gl = h.gl;
|
|
1027
673
|
gl.disable(gl.DEPTH_TEST);
|
|
1028
|
-
|
|
1029
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer as WebGLBuffer);
|
|
674
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer);
|
|
1030
675
|
gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
|
|
1031
|
-
|
|
1032
|
-
this.toneMappingFramebuffer!.activate();
|
|
1033
|
-
|
|
676
|
+
this.toneMappingFramebuffer.activate();
|
|
1034
677
|
sh.activate();
|
|
1035
|
-
|
|
1036
678
|
// screen texture
|
|
1037
679
|
gl.activeTexture(gl.TEXTURE0);
|
|
1038
|
-
gl.bindTexture(gl.TEXTURE_2D, this.blitFramebuffer
|
|
680
|
+
gl.bindTexture(gl.TEXTURE_2D, this.blitFramebuffer.textures[0]);
|
|
1039
681
|
gl.uniform1i(p.uniforms.hdrBuffer, 0);
|
|
1040
|
-
|
|
1041
682
|
gl.uniform1f(p.uniforms.gamma, this.gamma);
|
|
1042
683
|
gl.uniform1f(p.uniforms.exposure, this.exposure);
|
|
1043
684
|
gl.uniform1f(p.uniforms.whitepoint, this.whitepoint);
|
|
1044
685
|
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
|
|
1045
|
-
|
|
1046
|
-
this.toneMappingFramebuffer!.deactivate();
|
|
1047
|
-
|
|
686
|
+
this.toneMappingFramebuffer.deactivate();
|
|
1048
687
|
// SCREEN PASS
|
|
1049
688
|
sh = h.programs.screenFrame;
|
|
1050
689
|
p = sh._program;
|
|
@@ -1053,79 +692,60 @@ class Renderer {
|
|
|
1053
692
|
gl.bindTexture(gl.TEXTURE_2D, this.outputTexture);
|
|
1054
693
|
gl.uniform1i(p.uniforms.texture, 0);
|
|
1055
694
|
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
|
|
1056
|
-
|
|
1057
695
|
gl.enable(gl.DEPTH_TEST);
|
|
1058
696
|
}
|
|
1059
|
-
|
|
1060
|
-
protected _screenFrameNoMSAA() {
|
|
1061
|
-
|
|
697
|
+
_screenFrameNoMSAA() {
|
|
1062
698
|
let h = this.handler;
|
|
1063
|
-
let sh = h.programs.screenFrame,
|
|
1064
|
-
p = sh._program,
|
|
1065
|
-
gl = h.gl!;
|
|
1066
|
-
|
|
699
|
+
let sh = h.programs.screenFrame, p = sh._program, gl = h.gl;
|
|
1067
700
|
gl.disable(gl.DEPTH_TEST);
|
|
1068
701
|
sh.activate();
|
|
1069
702
|
gl.activeTexture(gl.TEXTURE0);
|
|
1070
703
|
gl.bindTexture(gl.TEXTURE_2D, this.outputTexture);
|
|
1071
704
|
gl.uniform1i(p.uniforms.texture, 0);
|
|
1072
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer
|
|
705
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer);
|
|
1073
706
|
gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
|
|
1074
707
|
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
|
|
1075
708
|
gl.enable(gl.DEPTH_TEST);
|
|
1076
709
|
}
|
|
1077
|
-
|
|
1078
710
|
/**
|
|
1079
711
|
* Draw picking objects framebuffer.
|
|
1080
712
|
* @private
|
|
1081
713
|
*/
|
|
1082
|
-
|
|
1083
|
-
this.pickingFramebuffer
|
|
1084
|
-
|
|
714
|
+
_drawPickingBuffer() {
|
|
715
|
+
this.pickingFramebuffer.activate();
|
|
1085
716
|
let h = this.handler;
|
|
1086
|
-
let gl = h.gl
|
|
1087
|
-
|
|
1088
|
-
if (this.activeCamera!.isFirstPass) {
|
|
717
|
+
let gl = h.gl;
|
|
718
|
+
if (this.activeCamera.isFirstPass) {
|
|
1089
719
|
gl.clearColor(0.0, 0.0, 0.0, 1.0);
|
|
1090
720
|
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
|
|
1091
|
-
}
|
|
721
|
+
}
|
|
722
|
+
else {
|
|
1092
723
|
gl.clear(gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
|
|
1093
724
|
}
|
|
1094
|
-
|
|
1095
725
|
//
|
|
1096
726
|
// draw picking mask
|
|
1097
727
|
//
|
|
1098
728
|
h.programs.pickingMask.activate();
|
|
1099
729
|
let sh = h.programs.pickingMask._program;
|
|
1100
730
|
let shu = sh.uniforms, sha = sh.attributes;
|
|
1101
|
-
|
|
1102
|
-
let /*ts = this.events.touchState,*/
|
|
1103
|
-
ms = this.events.mouseState;
|
|
1104
|
-
|
|
731
|
+
let /*ts = this.events.touchState,*/ ms = this.events.mouseState;
|
|
1105
732
|
gl.disable(gl.DEPTH_TEST);
|
|
1106
|
-
|
|
1107
733
|
gl.enable(gl.STENCIL_TEST);
|
|
1108
734
|
gl.colorMask(false, false, false, false);
|
|
1109
735
|
gl.stencilFunc(gl.ALWAYS, 2, 0xFF);
|
|
1110
736
|
gl.stencilOp(gl.REPLACE, gl.ZERO, gl.REPLACE);
|
|
1111
|
-
|
|
1112
737
|
gl.uniform2f(shu.offset, (ms.nx - 0.5) * 2, (0.5 - ms.ny) * 2);
|
|
1113
|
-
|
|
1114
|
-
gl.
|
|
1115
|
-
gl.
|
|
1116
|
-
gl.drawArrays(gl.POINTS, 0, this._pickingMaskCoordinatesBuffer!.numItems);
|
|
1117
|
-
|
|
738
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this._pickingMaskCoordinatesBuffer);
|
|
739
|
+
gl.vertexAttribPointer(sha.coordinates, this._pickingMaskCoordinatesBuffer.itemSize, gl.FLOAT, false, 0, 0);
|
|
740
|
+
gl.drawArrays(gl.POINTS, 0, this._pickingMaskCoordinatesBuffer.numItems);
|
|
1118
741
|
gl.enable(gl.DEPTH_TEST);
|
|
1119
|
-
|
|
1120
742
|
//
|
|
1121
743
|
// draw picking scenes
|
|
1122
744
|
//
|
|
1123
745
|
gl.colorMask(true, true, true, true);
|
|
1124
746
|
gl.stencilFunc(gl.EQUAL, 2, 0xFF);
|
|
1125
747
|
gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
|
|
1126
|
-
|
|
1127
748
|
gl.disable(gl.BLEND);
|
|
1128
|
-
|
|
1129
749
|
let dp = this._pickingCallbacks;
|
|
1130
750
|
for (let i = 0, len = dp.length; i < len; i++) {
|
|
1131
751
|
/**
|
|
@@ -1134,33 +754,26 @@ class Renderer {
|
|
|
1134
754
|
*/
|
|
1135
755
|
dp[i].callback.call(dp[i].sender);
|
|
1136
756
|
}
|
|
1137
|
-
|
|
1138
757
|
gl.enable(gl.BLEND);
|
|
1139
|
-
|
|
1140
758
|
gl.disable(gl.STENCIL_TEST);
|
|
1141
|
-
|
|
1142
|
-
this.pickingFramebuffer!.deactivate();
|
|
759
|
+
this.pickingFramebuffer.deactivate();
|
|
1143
760
|
}
|
|
1144
|
-
|
|
1145
761
|
/**
|
|
1146
762
|
* Draw picking objects framebuffer.
|
|
1147
763
|
* @private
|
|
1148
764
|
*/
|
|
1149
|
-
|
|
1150
|
-
this.distanceFramebuffer
|
|
1151
|
-
|
|
765
|
+
_drawDistanceBuffer() {
|
|
766
|
+
this.distanceFramebuffer.activate();
|
|
1152
767
|
let h = this.handler;
|
|
1153
|
-
let gl = h.gl
|
|
1154
|
-
|
|
1155
|
-
if (this.activeCamera!.isFirstPass) {
|
|
768
|
+
let gl = h.gl;
|
|
769
|
+
if (this.activeCamera.isFirstPass) {
|
|
1156
770
|
gl.clearColor(0.0, 0.0, 0.0, 1.0);
|
|
1157
771
|
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
1158
|
-
}
|
|
772
|
+
}
|
|
773
|
+
else {
|
|
1159
774
|
gl.clear(gl.DEPTH_BUFFER_BIT);
|
|
1160
775
|
}
|
|
1161
|
-
|
|
1162
776
|
gl.disable(gl.BLEND);
|
|
1163
|
-
|
|
1164
777
|
let dp = this._distanceCallbacks;
|
|
1165
778
|
let i = dp.length;
|
|
1166
779
|
while (i--) {
|
|
@@ -1170,23 +783,16 @@ class Renderer {
|
|
|
1170
783
|
*/
|
|
1171
784
|
dp[i].callback.call(dp[i].sender);
|
|
1172
785
|
}
|
|
1173
|
-
|
|
1174
786
|
gl.enable(gl.BLEND);
|
|
1175
|
-
|
|
1176
|
-
this.distanceFramebuffer!.deactivate();
|
|
787
|
+
this.distanceFramebuffer.deactivate();
|
|
1177
788
|
}
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
this.depthFramebuffer!.activate();
|
|
1181
|
-
|
|
789
|
+
_drawDepthBuffer() {
|
|
790
|
+
this.depthFramebuffer.activate();
|
|
1182
791
|
let h = this.handler;
|
|
1183
|
-
let gl = h.gl
|
|
1184
|
-
|
|
792
|
+
let gl = h.gl;
|
|
1185
793
|
gl.clearColor(0.0, 0.0, 0.0, 1.0);
|
|
1186
794
|
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
1187
|
-
|
|
1188
795
|
gl.enable(gl.DEPTH_TEST);
|
|
1189
|
-
|
|
1190
796
|
let dp = this._depthCallbacks;
|
|
1191
797
|
let i = dp.length;
|
|
1192
798
|
while (i--) {
|
|
@@ -1196,146 +802,98 @@ class Renderer {
|
|
|
1196
802
|
*/
|
|
1197
803
|
dp[i].callback.call(dp[i].sender);
|
|
1198
804
|
}
|
|
1199
|
-
|
|
1200
|
-
this.depthFramebuffer!.deactivate();
|
|
1201
|
-
|
|
805
|
+
this.depthFramebuffer.deactivate();
|
|
1202
806
|
//
|
|
1203
807
|
// PASS to depth visualization
|
|
1204
|
-
this.screenDepthFramebuffer
|
|
808
|
+
this.screenDepthFramebuffer.activate();
|
|
1205
809
|
let sh = h.programs.depth, p = sh._program;
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer as WebGLBuffer);
|
|
810
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer);
|
|
1209
811
|
gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
|
|
1210
|
-
|
|
1211
812
|
sh.activate();
|
|
1212
|
-
|
|
1213
813
|
gl.activeTexture(gl.TEXTURE0);
|
|
1214
|
-
gl.bindTexture(gl.TEXTURE_2D, this.depthFramebuffer
|
|
814
|
+
gl.bindTexture(gl.TEXTURE_2D, this.depthFramebuffer.textures[1]);
|
|
1215
815
|
gl.uniform1i(p.uniforms.depthTexture, 0);
|
|
1216
|
-
|
|
1217
816
|
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
|
|
1218
|
-
|
|
1219
|
-
this.screenDepthFramebuffer!.deactivate();
|
|
817
|
+
this.screenDepthFramebuffer.deactivate();
|
|
1220
818
|
}
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
this.pickingFramebuffer
|
|
1224
|
-
this.pickingFramebuffer
|
|
1225
|
-
this.pickingFramebuffer!.deactivate();
|
|
819
|
+
_readPickingBuffer() {
|
|
820
|
+
this.pickingFramebuffer.activate();
|
|
821
|
+
this.pickingFramebuffer.readAllPixels(this._tempPickingPix_);
|
|
822
|
+
this.pickingFramebuffer.deactivate();
|
|
1226
823
|
}
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
this.distanceFramebuffer
|
|
1230
|
-
this.distanceFramebuffer
|
|
1231
|
-
this.distanceFramebuffer!.deactivate();
|
|
824
|
+
_readDistanceBuffer() {
|
|
825
|
+
this.distanceFramebuffer.activate();
|
|
826
|
+
this.distanceFramebuffer.readAllPixels(this._tempDistancePix_);
|
|
827
|
+
this.distanceFramebuffer.deactivate();
|
|
1232
828
|
}
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
let
|
|
1236
|
-
let h = this.pickingFramebuffer!.height;
|
|
1237
|
-
|
|
829
|
+
readPickingColor(x, y, outColor) {
|
|
830
|
+
let w = this.pickingFramebuffer.width;
|
|
831
|
+
let h = this.pickingFramebuffer.height;
|
|
1238
832
|
x = Math.round(x * w);
|
|
1239
833
|
y = Math.round(y * h);
|
|
1240
|
-
|
|
1241
834
|
let ind = (y * w + x) * 4;
|
|
1242
|
-
|
|
1243
835
|
outColor[0] = this._tempPickingPix_[ind];
|
|
1244
836
|
outColor[1] = this._tempPickingPix_[ind + 1];
|
|
1245
837
|
outColor[2] = this._tempPickingPix_[ind + 2];
|
|
1246
838
|
}
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
let w = this.distanceFramebuffer!.width;
|
|
1251
|
-
let h = this.distanceFramebuffer!.height;
|
|
1252
|
-
|
|
839
|
+
readDistanceColor(x, y, outColor) {
|
|
840
|
+
let w = this.distanceFramebuffer.width;
|
|
841
|
+
let h = this.distanceFramebuffer.height;
|
|
1253
842
|
x = Math.round(x * w);
|
|
1254
843
|
y = Math.round(y * h);
|
|
1255
|
-
|
|
1256
844
|
let ind = (y * w + x) * 4;
|
|
1257
|
-
|
|
1258
845
|
outColor[0] = this._tempDistancePix_[ind];
|
|
1259
846
|
outColor[1] = this._tempDistancePix_[ind + 1];
|
|
1260
847
|
outColor[2] = this._tempDistancePix_[ind + 2];
|
|
1261
848
|
}
|
|
1262
|
-
|
|
1263
849
|
/**
|
|
1264
850
|
* Function starts renderer
|
|
1265
851
|
* @public
|
|
1266
852
|
*/
|
|
1267
|
-
|
|
853
|
+
start() {
|
|
1268
854
|
if (!this._initialized) {
|
|
1269
855
|
this.initialize();
|
|
1270
856
|
}
|
|
1271
857
|
this.handler.start();
|
|
1272
858
|
}
|
|
1273
|
-
|
|
1274
|
-
public destroy() {
|
|
859
|
+
destroy() {
|
|
1275
860
|
for (let i in this.controls) {
|
|
1276
861
|
this.controls[i].remove();
|
|
1277
862
|
}
|
|
1278
|
-
|
|
1279
863
|
for (let i = 0; i < this._renderNodesArr.length; i++) {
|
|
1280
864
|
this._renderNodesArr[i].remove();
|
|
1281
865
|
}
|
|
1282
|
-
|
|
1283
866
|
this.div = null;
|
|
1284
|
-
|
|
1285
867
|
this._renderNodesArr = [];
|
|
1286
|
-
|
|
1287
868
|
this.renderNodes = {};
|
|
1288
|
-
|
|
1289
869
|
this.activeCamera = null;
|
|
1290
|
-
|
|
1291
870
|
this.controls = {};
|
|
1292
|
-
|
|
1293
871
|
this.controlsBag = {};
|
|
1294
|
-
|
|
1295
872
|
this.colorObjects.clear();
|
|
1296
|
-
|
|
1297
873
|
// @ts-ignore
|
|
1298
874
|
this.colorObjects = null;
|
|
1299
|
-
|
|
1300
875
|
this._pickingCallbacks = [];
|
|
1301
|
-
|
|
1302
876
|
this.pickingFramebuffer = null;
|
|
1303
|
-
|
|
1304
877
|
//@ts-ignore
|
|
1305
878
|
this._tempPickingPix_ = null;
|
|
1306
|
-
|
|
1307
879
|
this.distanceFramebuffer = null;
|
|
1308
|
-
|
|
1309
880
|
this._distanceCallbacks = [];
|
|
1310
|
-
|
|
1311
881
|
//@ts-ignore
|
|
1312
882
|
this._tempDistancePix_ = null;
|
|
1313
|
-
|
|
1314
883
|
this._depthCallbacks = [];
|
|
1315
|
-
|
|
1316
884
|
this.depthFramebuffer = null;
|
|
1317
|
-
|
|
1318
885
|
this.sceneFramebuffer = null;
|
|
1319
|
-
|
|
1320
886
|
this.blitFramebuffer = null;
|
|
1321
|
-
|
|
1322
887
|
this.toneMappingFramebuffer = null;
|
|
1323
|
-
|
|
1324
888
|
// todo
|
|
1325
889
|
//this.billboardsTextureAtlas.clear();
|
|
1326
890
|
//this.geoObjectsTextureAtlas.clear()
|
|
1327
891
|
//this.fontAtlas.clear();
|
|
1328
|
-
|
|
1329
892
|
this._entityCollections = [];
|
|
1330
|
-
|
|
1331
893
|
this.handler.destroy();
|
|
1332
|
-
|
|
1333
894
|
// @ts-ignore
|
|
1334
895
|
this.handler = null;
|
|
1335
|
-
|
|
1336
896
|
this._initialized = false;
|
|
1337
897
|
}
|
|
1338
|
-
|
|
1339
898
|
}
|
|
1340
|
-
|
|
1341
|
-
export {Renderer};
|
|
899
|
+
export { Renderer };
|