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