@openglobus/og 0.28.7 → 1.0.0-rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/LICENSE.md +218 -4
  2. package/README.md +31 -18
  3. package/lib/Deferred.d.ts +2 -2
  4. package/lib/Events.d.ts +1 -1
  5. package/lib/Globe.d.ts +8 -5
  6. package/lib/Object3d.d.ts +17 -14
  7. package/lib/Popup.d.ts +2 -2
  8. package/lib/assets/LabelWorker.worker-DYd7xn3M.js.map +1 -0
  9. package/lib/assets/PlainSegmentWorker.worker-JsKldq-e.js.map +1 -0
  10. package/lib/assets/TerrainWorker.worker-CqUJvMOv.js.map +1 -0
  11. package/lib/bv/index.d.ts +2 -2
  12. package/lib/camera/Camera.d.ts +280 -27
  13. package/lib/camera/Frustum.d.ts +100 -15
  14. package/lib/camera/PlanetCamera.d.ts +93 -8
  15. package/lib/camera/index.d.ts +2 -2
  16. package/lib/control/CameraFrameComposer.d.ts +2 -2
  17. package/lib/control/CameraFrameHandler.d.ts +1 -1
  18. package/lib/control/CompassButton.d.ts +2 -2
  19. package/lib/control/EarthCoordinates.d.ts +5 -2
  20. package/lib/control/FramebufferPreview.d.ts +3 -3
  21. package/lib/control/GeoImageDragControl.d.ts +1 -1
  22. package/lib/control/LayerAnimation.d.ts +2 -2
  23. package/lib/control/LayerSwitcher.d.ts +3 -0
  24. package/lib/control/Lighting.d.ts +4 -2
  25. package/lib/control/Navigation.d.ts +15 -11
  26. package/lib/control/OrthoSwitcher.d.ts +18 -0
  27. package/lib/control/SimpleTouchNavigation.d.ts +44 -0
  28. package/lib/control/Sun.d.ts +4 -2
  29. package/lib/control/TouchNavigation.d.ts +4 -8
  30. package/lib/control/atmosphere/Atmosphere.d.ts +2 -0
  31. package/lib/control/atmosphere/AtmosphereConfig.d.ts +2 -6
  32. package/lib/control/cameraDepthHandler/CameraDepthHandler.d.ts +17 -3
  33. package/lib/control/cameraDepthHandler/camera_depth.d.ts +2 -2
  34. package/lib/control/drawing/LineStringDrawingScene.d.ts +1 -0
  35. package/lib/control/drawing/PolygonDrawingScene.d.ts +14 -14
  36. package/lib/control/elevationProfile/ElevationProfile.d.ts +1 -1
  37. package/lib/control/elevationProfile/ElevationProfileLegend.d.ts +1 -1
  38. package/lib/control/elevationProfile/ElevationProfileScene.d.ts +9 -12
  39. package/lib/control/elevationProfile/ElevationProfileView.d.ts +16 -5
  40. package/lib/control/entityEditor/EntityEditor.d.ts +19 -0
  41. package/lib/control/{geoObjectEditor/GeoObjectEditorDialog.d.ts → entityEditor/EntityEditorDialog.d.ts} +9 -8
  42. package/lib/control/{geoObjectEditor/GeoObjectEditorScene.d.ts → entityEditor/EntityEditorScene.d.ts} +12 -12
  43. package/lib/control/{geoObjectEditor → entityEditor}/colors.d.ts +2 -2
  44. package/lib/control/entityTree/EntityTree.d.ts +46 -0
  45. package/lib/control/entityTree/EntityTreeView.d.ts +24 -0
  46. package/lib/control/heightRuler/HeightRulerScene.d.ts +3 -2
  47. package/lib/control/index.d.ts +5 -3
  48. package/lib/control/ruler/RulerScene.d.ts +8 -8
  49. package/lib/control/selection/SelectionScene.d.ts +6 -6
  50. package/lib/control/timeline/TimelineControl.d.ts +2 -2
  51. package/lib/control/timeline/TimelineModel.d.ts +1 -1
  52. package/lib/control/timeline/TimelineView.d.ts +52 -13
  53. package/lib/control/visibleExtent/segment.d.ts +7 -0
  54. package/lib/ellipsoid/index.d.ts +4 -4
  55. package/lib/entity/Entity.d.ts +114 -100
  56. package/lib/entity/EntityCollection.d.ts +95 -70
  57. package/lib/entity/{BaseBillboard.d.ts → billboard/BaseBillboard.d.ts} +16 -17
  58. package/lib/entity/{BaseBillboardHandler.d.ts → billboard/BaseBillboardHandler.d.ts} +24 -9
  59. package/lib/entity/{Billboard.d.ts → billboard/Billboard.d.ts} +11 -7
  60. package/lib/entity/{BillboardHandler.d.ts → billboard/BillboardHandler.d.ts} +1 -1
  61. package/lib/entity/{GeoObject.d.ts → geoObject/GeoObject.d.ts} +7 -6
  62. package/lib/entity/{GeoObjectHandler.d.ts → geoObject/GeoObjectHandler.d.ts} +29 -11
  63. package/lib/entity/{InstanceData.d.ts → geoObject/InstanceData.d.ts} +18 -13
  64. package/lib/entity/{Geometry.d.ts → geometry/Geometry.d.ts} +10 -10
  65. package/lib/entity/{GeometryHandler.d.ts → geometry/GeometryHandler.d.ts} +7 -7
  66. package/lib/entity/index.d.ts +8 -8
  67. package/lib/entity/{Label.d.ts → label/Label.d.ts} +12 -13
  68. package/lib/entity/{LabelHandler.d.ts → label/LabelHandler.d.ts} +31 -7
  69. package/lib/entity/{LabelWorker.d.ts → label/LabelWorker.d.ts} +3 -3
  70. package/lib/entity/{PointCloud.d.ts → pointCloud/PointCloud.d.ts} +18 -12
  71. package/lib/entity/{PointCloudHandler.d.ts → pointCloud/PointCloudHandler.d.ts} +4 -4
  72. package/lib/entity/polyline/Polyline.d.ts +242 -0
  73. package/lib/entity/polyline/PolylineBatchRenderer.d.ts +443 -0
  74. package/lib/entity/{PolylineHandler.d.ts → polyline/PolylineHandler.d.ts} +19 -7
  75. package/lib/entity/{Ray.d.ts → ray/Ray.d.ts} +27 -9
  76. package/lib/entity/{RayHandler.d.ts → ray/RayHandler.d.ts} +18 -8
  77. package/lib/entity/{Strip.d.ts → strip/Strip.d.ts} +21 -17
  78. package/lib/entity/{StripHandler.d.ts → strip/StripHandler.d.ts} +11 -6
  79. package/lib/index.d.ts +47 -42
  80. package/lib/layer/BaseGeoImage.d.ts +20 -17
  81. package/lib/layer/CanvasTiles.d.ts +14 -12
  82. package/lib/layer/GeoImage.d.ts +1 -1
  83. package/lib/layer/GeoTexture2d.d.ts +2 -2
  84. package/lib/layer/KML.d.ts +19 -18
  85. package/lib/layer/Layer.d.ts +72 -53
  86. package/lib/layer/Vector.d.ts +47 -30
  87. package/lib/layer/WMS.d.ts +1 -1
  88. package/lib/layer/XYZ.d.ts +11 -12
  89. package/lib/layer/index.d.ts +12 -12
  90. package/lib/math/Line2.d.ts +1 -1
  91. package/lib/math/Line3.d.ts +1 -1
  92. package/lib/math/Mat3.d.ts +3 -13
  93. package/lib/math/Mat4.d.ts +16 -10
  94. package/lib/math/Plane.d.ts +1 -1
  95. package/lib/math/Quat.d.ts +14 -12
  96. package/lib/math/Ray.d.ts +4 -3
  97. package/lib/math/Vec2.d.ts +25 -17
  98. package/lib/math/Vec3.d.ts +33 -31
  99. package/lib/math/Vec4.d.ts +1 -1
  100. package/lib/math/coder.d.ts +1 -1
  101. package/lib/math/index.d.ts +13 -14
  102. package/lib/mercator.d.ts +4 -4
  103. package/lib/og.css +1 -1
  104. package/lib/og.es.js +1 -1
  105. package/lib/og.es.js.map +1 -1
  106. package/lib/quadTree/EntityCollectionNode.d.ts +10 -10
  107. package/lib/quadTree/EntityCollectionsTreeStrategy.d.ts +5 -5
  108. package/lib/quadTree/QuadTreeStrategy.d.ts +3 -4
  109. package/lib/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +4 -4
  110. package/lib/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +4 -4
  111. package/lib/renderer/AtmosphereDeferredShading.d.ts +12 -0
  112. package/lib/renderer/IDeferredShadingPass.d.ts +8 -0
  113. package/lib/renderer/ITransparencyPass.d.ts +8 -0
  114. package/lib/renderer/PhongDeferredShading.d.ts +16 -0
  115. package/lib/renderer/Renderer.d.ts +166 -99
  116. package/lib/renderer/RendererEvents.d.ts +15 -5
  117. package/lib/renderer/WOITPass.d.ts +14 -0
  118. package/lib/res/fonts/Ephesis-Regular.json +1 -0
  119. package/lib/res/fonts/Ephesis-Regular.png +0 -0
  120. package/lib/res/fonts/Karla-Bold.json +1 -0
  121. package/lib/res/fonts/Karla-Bold.png +0 -0
  122. package/lib/res/fonts/Karla-Italic.json +1 -0
  123. package/lib/res/fonts/Karla-Italic.png +0 -0
  124. package/lib/res/fonts/Karla-Light.json +1 -0
  125. package/lib/res/fonts/Karla-Light.png +0 -0
  126. package/lib/res/fonts/Karla-Medium.json +1 -0
  127. package/lib/res/fonts/Karla-Medium.png +0 -0
  128. package/lib/res/fonts/Roboto-Regular.json +1 -37147
  129. package/lib/res/fonts/Roboto-Regular.png +0 -0
  130. package/lib/res/fonts/arial.json +1 -4321
  131. package/lib/res/fonts/arial.png +0 -0
  132. package/lib/res/night-4326.png +0 -0
  133. package/lib/res/night.png +0 -0
  134. package/lib/scene/AltitudeNearPlaneStrategy.d.ts +17 -0
  135. package/lib/scene/Axes.d.ts +4 -3
  136. package/lib/scene/Planet.d.ts +244 -69
  137. package/lib/scene/{RenderNode.d.ts → Scene.d.ts} +49 -46
  138. package/lib/scene/SkyBox.d.ts +5 -3
  139. package/lib/scene/index.d.ts +2 -2
  140. package/lib/segment/Segment.d.ts +29 -15
  141. package/lib/segment/SegmentLonLat.d.ts +0 -1
  142. package/lib/shadeModeConstants.d.ts +7 -0
  143. package/lib/shaders/applyDeferredDepth.d.ts +2 -0
  144. package/lib/shaders/atmos/atmos.d.ts +3 -3
  145. package/lib/shaders/billboard/billboard.d.ts +4 -3
  146. package/lib/shaders/deferredShading/deferredShading.d.ts +2 -0
  147. package/lib/shaders/deferredShading/deferredShadingAtmos.d.ts +3 -0
  148. package/lib/shaders/depth.d.ts +2 -2
  149. package/lib/shaders/geo_object/geo_object.d.ts +8 -4
  150. package/lib/shaders/label/label.d.ts +4 -4
  151. package/lib/shaders/pointCloud.d.ts +2 -2
  152. package/lib/shaders/polyline/polyline.d.ts +7 -3
  153. package/lib/shaders/ray/ray.d.ts +3 -2
  154. package/lib/shaders/screenFrame.d.ts +2 -2
  155. package/lib/shaders/segment/segment.d.ts +7 -0
  156. package/lib/shaders/skybox.d.ts +2 -2
  157. package/lib/shaders/strip/strip.d.ts +3 -0
  158. package/lib/shaders/tone_mapping/toneMapping.d.ts +2 -2
  159. package/lib/shaders/weightedOITResolve.d.ts +2 -0
  160. package/lib/terrain/BilTerrain.d.ts +1 -1
  161. package/lib/terrain/EmptyTerrain.d.ts +5 -6
  162. package/lib/terrain/GlobusTerrain.d.ts +18 -23
  163. package/lib/terrain/RgbTerrain.d.ts +8 -8
  164. package/lib/terrain/index.d.ts +5 -5
  165. package/lib/tsconfig.tsbuildinfo +1 -1
  166. package/lib/ui/Button.d.ts +7 -5
  167. package/lib/ui/ButtonGroup.d.ts +1 -1
  168. package/lib/ui/Checkbox.d.ts +2 -2
  169. package/lib/ui/Color.d.ts +2 -2
  170. package/lib/ui/Dialog.d.ts +30 -3
  171. package/lib/ui/Input.d.ts +7 -2
  172. package/lib/ui/Slider.d.ts +5 -2
  173. package/lib/ui/ToggleButton.d.ts +2 -2
  174. package/lib/ui/View.d.ts +1 -1
  175. package/lib/ui/icons.d.ts +1 -1
  176. package/lib/ui/index.d.ts +9 -9
  177. package/lib/utils/FontAtlas.d.ts +57 -8
  178. package/lib/utils/GeoImageCreator.d.ts +2 -2
  179. package/lib/utils/ImagesCacheManager.d.ts +3 -3
  180. package/lib/utils/Loader.d.ts +2 -2
  181. package/lib/utils/PlainSegmentWorker.d.ts +2 -2
  182. package/lib/utils/TerrainWorker.d.ts +2 -2
  183. package/lib/utils/TextureAtlas.d.ts +7 -2
  184. package/lib/utils/TextureResourceManager.d.ts +162 -0
  185. package/lib/utils/VectorTileCreator.d.ts +1 -1
  186. package/lib/utils/colorSpace.d.ts +9 -0
  187. package/lib/utils/gltf/gltfParser.d.ts +9 -2
  188. package/lib/utils/gltf/types.d.ts +20 -2
  189. package/lib/utils/shared.d.ts +11 -5
  190. package/lib/utils/textureResourceMeta.d.ts +9 -0
  191. package/lib/webgl/BaseFramebuffer.d.ts +7 -0
  192. package/lib/webgl/Framebuffer.d.ts +9 -6
  193. package/lib/webgl/Handler.d.ts +81 -99
  194. package/lib/webgl/ShaderProgram.d.ts +190 -0
  195. package/lib/webgl/index.d.ts +2 -2
  196. package/lib/webgl/variableHandlers.d.ts +2 -1
  197. package/package.json +77 -76
  198. package/lib/assets/LabelWorker.worker-BT1uJgYn.js.map +0 -1
  199. package/lib/assets/PlainSegmentWorker.worker-CT1cj8jj.js.map +0 -1
  200. package/lib/assets/TerrainWorker.worker-DmikdfB2.js.map +0 -1
  201. package/lib/control/OldMouseNavigation.d.ts +0 -65
  202. package/lib/control/ZoomControl.d.ts +0 -28
  203. package/lib/control/geoObjectEditor/GeoObjectEditor.d.ts +0 -13
  204. package/lib/control/visibleExtent/drawnode.d.ts +0 -7
  205. package/lib/entity/Polyline.d.ts +0 -417
  206. package/lib/light/LightSource.d.ts +0 -36
  207. package/lib/res/fonts/Roboto-Regular.ttf.cfg +0 -1340
  208. package/lib/res/fonts/Roboto-Regular.ttf.png +0 -0
  209. package/lib/res/fonts/arial.ttf.cfg +0 -1570
  210. package/lib/res/fonts/arial.ttf.png +0 -0
  211. package/lib/scene/BaseNode.d.ts +0 -61
  212. package/lib/shaders/drawnode/drawnode.d.ts +0 -8
  213. package/lib/webgl/Program.d.ts +0 -161
  214. package/lib/webgl/ProgramController.d.ts +0 -87
  215. /package/lib/control/{geoObjectEditor → entityEditor}/ArrowEntity.d.ts +0 -0
  216. /package/lib/control/{geoObjectEditor → entityEditor}/AxisTrackEntity.d.ts +0 -0
  217. /package/lib/control/{geoObjectEditor → entityEditor}/MoveAxisEntity.d.ts +0 -0
  218. /package/lib/control/{geoObjectEditor → entityEditor}/MovePlaneEntity.d.ts +0 -0
  219. /package/lib/control/{geoObjectEditor → entityEditor}/RotateEntity.d.ts +0 -0
  220. /package/lib/entity/{LabelWorker.worker.d.ts → label/LabelWorker.worker.d.ts} +0 -0
Binary file
Binary file
package/lib/res/night.png CHANGED
Binary file
@@ -0,0 +1,17 @@
1
+ import type { PlanetCamera } from "../camera/PlanetCamera";
2
+ export interface INearPlaneStrategy {
3
+ applyNear(camera: PlanetCamera): void;
4
+ }
5
+ export interface IAltitudeNearPlaneRule {
6
+ maxAltitude: number;
7
+ near: number;
8
+ }
9
+ export interface IAltitudeNearPlaneStrategyParams {
10
+ rules?: IAltitudeNearPlaneRule[];
11
+ }
12
+ export declare class AltitudeNearPlaneStrategy implements INearPlaneStrategy {
13
+ protected readonly _rules: IAltitudeNearPlaneRule[];
14
+ constructor(params?: IAltitudeNearPlaneStrategyParams);
15
+ applyNear(camera: PlanetCamera): void;
16
+ protected _resolveNear(altitude: number): number;
17
+ }
@@ -1,12 +1,13 @@
1
- import { RenderNode } from './RenderNode';
1
+ import { Scene } from "./Scene";
2
2
  import type { WebGLBufferExt } from "../webgl/Handler";
3
- declare class Axes extends RenderNode {
3
+ declare class Axes extends Scene {
4
4
  size: number;
5
5
  axesBuffer: WebGLBufferExt | null;
6
6
  axesColorBuffer: WebGLBufferExt | null;
7
7
  constructor(size?: number);
8
8
  init(): void;
9
- frame(): void;
9
+ onremove(): void;
10
+ forward: () => void;
10
11
  createAxesBuffer(gridSize: number): void;
11
12
  }
12
13
  export { Axes };
@@ -20,17 +20,19 @@ import { IPlanetFlyCartesianParams, PlanetCamera } from "../camera/PlanetCamera"
20
20
  import { Quat } from "../math/Quat";
21
21
  import { QuadTreeStrategy } from "../quadTree/QuadTreeStrategy";
22
22
  import { Ray } from "../math/Ray";
23
- import { RenderNode } from "./RenderNode";
23
+ import { type INearPlaneStrategy } from "./AltitudeNearPlaneStrategy";
24
+ import { Scene } from "./Scene";
24
25
  import { Sun } from "../control/Sun";
25
26
  import { TerrainWorker } from "../utils/TerrainWorker";
26
27
  import { Vec2, Vec3 } from "../math/index";
27
- import type { NumberArray2, NumberArray3, NumberArray4 } from "../math/index";
28
+ import type { NumberArray2, NumberArray4 } from "../math/index";
28
29
  import { Vector } from "../layer/Vector";
29
30
  import { VectorTileCreator } from "../utils/VectorTileCreator";
30
31
  import type { WebGLBufferExt, WebGLTextureExt, IDefaultTextureParams } from "../webgl/Handler";
31
- import { Program } from "../webgl/Program";
32
+ import { ShaderProgram } from "../webgl/ShaderProgram";
32
33
  import { Segment } from "../segment/Segment";
33
34
  import type { AtmosphereParameters } from "../shaders/atmos/atmos";
35
+ import { type ShadeMode, type ShadeModeInput } from "../shadeModeConstants";
34
36
  export interface IPlanetParams {
35
37
  name?: string;
36
38
  ellipsoid?: Ellipsoid;
@@ -41,10 +43,6 @@ export interface IPlanetParams {
41
43
  minEqualZoomAltitude?: number;
42
44
  minEqualZoomCameraSlope?: number;
43
45
  quadTreeStrategyPrototype?: typeof QuadTreeStrategy;
44
- ambient?: string | NumberArray3 | Vec3;
45
- diffuse?: string | NumberArray3 | Vec3;
46
- specular?: string | NumberArray3 | Vec3;
47
- shininess?: number;
48
46
  nightTextureSrc?: string | null;
49
47
  specularTextureSrc?: string | null;
50
48
  maxGridSize?: number;
@@ -56,6 +54,9 @@ export interface IPlanetParams {
56
54
  vectorTileSize?: number;
57
55
  maxNodesCount?: number;
58
56
  transparentBackground?: boolean;
57
+ nearPlaneStrategy?: INearPlaneStrategy;
58
+ shadeMode?: ShadeModeInput;
59
+ reverseDepth?: boolean;
59
60
  }
60
61
  export type PlanetEventsList = [
61
62
  "draw",
@@ -71,24 +72,44 @@ type IndexBufferCacheData = {
71
72
  buffer: WebGLBufferExt | null;
72
73
  };
73
74
  /**
74
- * Main class for rendering planet
75
+ * Main class for rendering a planet.
75
76
  * @class
76
- * @extends {RenderNode}
77
- * @param {string} [options.name="Earth"] - Planet name(Earth by default)
78
- * @param {Ellipsoid} [options.ellipsoid] - Planet ellipsoid(WGS84 by default)
79
- * @param {Number} [options.maxGridSize=128] - Segment maximal grid size
80
- * @param {Number} [options.maxEqualZoomAltitude=15000000.0] - Maximal altitude since segments on the screen become the same zoom level
81
- * @param {Number} [options.minEqualZoomAltitude=10000.0] - Minimal altitude since segments on the screen become the same zoom level
82
- * @param {Number} [options.minEqualZoomCameraSlope=0.8] - Minimal camera slope above te globe where segments on the screen become the same zoom level
77
+ * @extends {Scene}
78
+ * @param {IPlanetParams} [options={}] - Planet configuration parameters.
79
+ * @param {string} [options.name] - Planet name.
80
+ * @param {Ellipsoid} [options.ellipsoid=wgs84] - Planet ellipsoid.
81
+ * @param {number} [options.minAltitude] - Minimum camera altitude above terrain.
82
+ * @param {number} [options.maxAltitude] - Maximum camera altitude above terrain.
83
+ * @param {Array.<Array.<number>>} [options.frustums] - Planet camera frustum configuration.
84
+ * @param {number} [options.maxGridSize=256] - Maximum terrain segment grid size.
85
+ * @param {number} [options.maxLoadingRequests=12] - Maximum concurrent tile loading requests.
86
+ * @param {number} [options.maxNodesCount=400] - Maximum number of created quadtree nodes.
87
+ * @param {number} [options.maxEqualZoomAltitude=15000000.0] - Max altitude where visible segments keep the same zoom.
88
+ * @param {number} [options.minEqualZoomAltitude=10000.0] - Min altitude where visible segments keep the same zoom.
89
+ * @param {number} [options.minEqualZoomCameraSlope=0.8] - Min camera slope for equal-zoom segment strategy.
90
+ * @param {Function} [options.quadTreeStrategyPrototype=EarthQuadTreeStrategy] - Quadtree strategy class.
91
+ * @param {string|null} [options.nightTextureSrc] - Night lights texture URL (`null` disables texture loading).
92
+ * @param {string|null} [options.specularTextureSrc] - Water/specular mask texture URL (`null` disables texture loading).
93
+ * @param {boolean} [options.atmosphereEnabled=false] - Enables atmosphere rendering.
94
+ * @param {boolean} [options.transitionOpacityEnabled] - Enables terrain transition opacity blending.
95
+ * @param {IAtmosphereParams} [options.atmosphereParameters] - Atmosphere model parameters.
96
+ * @param {number} [options.minDistanceBeforeMemClear] - Camera travel distance threshold before automatic memory cleanup.
97
+ * @param {number} [options.vectorTileSize] - Vector tile texture size for vector layer baking.
98
+ * @param {boolean} [options.transparentBackground=false] - Enables transparent renderer background.
99
+ * @param {INearPlaneStrategy} [options.nearPlaneStrategy] - Near-plane strategy implementation.
100
+ * @param {number|string} [options.shadeMode=0.5] - Terrain shading mode: `0|none|unlit`, `0.5|phong`, `1|pbr`.
101
+ * @param {boolean} [options.reverseDepth=true] - Enables reverse-Z depth for the default planet camera in perspective mode.
83
102
  *
84
- * @fires EventsHandler<PlanetEventList>#draw
85
- * @fires EventsHandler<PlanetEventList>#layeradd
86
- * @fires EventsHandler<PlanetEventList>#baselayerchange
87
- * @fires EventsHandler<PlanetEventList>#layerremove
88
- * @fires EventsHandler<PlanetEventList>#layervisibilitychange
89
- * @fires EventsHandler<PlanetEventList>#geoimageadd
103
+ * @fires draw - Triggered before globe frame begins to render.
104
+ * @fires layeradd - Triggered when a layer is added to the planet.
105
+ * @fires baselayerchange - Triggered when the base layer changes.
106
+ * @fires layerremove - Triggered when a layer is removed from the planet.
107
+ * @fires layervisibilitychange - Triggered when layer visibility changes.
108
+ * @fires rendercompleted - Triggered when all data is loaded.
109
+ * @fires terraincompleted - Triggered when terrain data is loaded.
110
+ * @fires layerloadend - Triggered when layer data finishes loading.
90
111
  */
91
- export declare class Planet extends RenderNode {
112
+ export declare class Planet extends Scene {
92
113
  events: EventsHandler<PlanetEventsList>;
93
114
  _createdNodesCount: number;
94
115
  /**
@@ -96,12 +117,6 @@ export declare class Planet extends RenderNode {
96
117
  * @type {Ellipsoid}
97
118
  */
98
119
  ellipsoid: Ellipsoid;
99
- /**
100
- * @public
101
- * @override
102
- * @type {Boolean}
103
- */
104
- lightEnabled: boolean;
105
120
  /**
106
121
  * Squared ellipsoid radius.
107
122
  * @public
@@ -158,12 +173,7 @@ export declare class Planet extends RenderNode {
158
173
  * @type {PlanetCamera}
159
174
  */
160
175
  camera: PlanetCamera;
161
- /**
162
- * Screen mouse pointer projected to planet cartesian position.
163
- * @public
164
- * @type {Vec3}
165
- */
166
- mousePositionOnEarth: Vec3;
176
+ nearPlaneStrategy: INearPlaneStrategy;
167
177
  emptyTexture: WebGLTextureExt | null;
168
178
  transparentTexture: WebGLTextureExt | null;
169
179
  defaultTexture: WebGLTextureExt | null;
@@ -212,9 +222,6 @@ export declare class Planet extends RenderNode {
212
222
  * @protected
213
223
  */
214
224
  protected _specularTexture: WebGLTextureExt | null;
215
- _ambient: Float32Array;
216
- _diffuse: Float32Array;
217
- _specular: Float32Array;
218
225
  protected _maxGridSize: number;
219
226
  /**
220
227
  * Segment multiple textures size.(4 - convenient value for the most devices)
@@ -258,10 +265,15 @@ export declare class Planet extends RenderNode {
258
265
  * @type {number}
259
266
  */
260
267
  nightTextureCoefficient: number;
261
- protected _renderScreenNodesPASS: () => void;
262
- protected _renderScreenNodesWithHeightPASS: () => void;
268
+ /**
269
+ * Global terrain shading for segment (forward + deferred): 0 unlit, 0.5 Phong, 1 PBR.
270
+ * @public
271
+ */
272
+ protected _shadeMode: ShadeMode;
263
273
  protected _atmosphereEnabled: boolean;
264
274
  protected _atmosphereMaxMinOpacity: Float32Array;
275
+ atmosphereFadeDist: Float32Array;
276
+ protected _atmosphereBottomRadius: number;
265
277
  solidTextureOne: WebGLTextureExt | null;
266
278
  solidTextureTwo: WebGLTextureExt | null;
267
279
  protected _nightTextureSrc: string | null;
@@ -273,41 +285,126 @@ export declare class Planet extends RenderNode {
273
285
  protected _transparentBackground: boolean;
274
286
  constructor(options?: IPlanetParams);
275
287
  /**
276
- * Returns true if current terrain data set is loaded
288
+ * Returns true if the current terrain data set is loaded
289
+ * @public
277
290
  */
278
291
  get terrainReady(): boolean;
292
+ /**
293
+ * Returns max segment grid size used by the quadtree.
294
+ * @public
295
+ * @returns {number} - Max grid size.
296
+ */
279
297
  get maxGridSize(): number;
298
+ /**
299
+ * Returns local north frame rotation for a cartesian point.
300
+ * @public
301
+ * @param {Vec3} cartesian - Cartesian point.
302
+ * @returns {Quat} - Rotation from world frame to local north frame.
303
+ */
280
304
  getNorthFrameRotation(cartesian: Vec3): Quat;
305
+ /**
306
+ * Returns local frame rotation for a cartesian point.
307
+ * @public
308
+ * @param {Vec3} cartesian - Cartesian point.
309
+ * @returns {Quat} - Rotation from world frame to local frame.
310
+ */
281
311
  getFrameRotation(cartesian: Vec3): Quat;
312
+ /**
313
+ * Sets maximum atmosphere opacity.
314
+ * @public
315
+ * @param {number} opacity - Opacity value in range `[0..1]`.
316
+ */
282
317
  set atmosphereMaxOpacity(opacity: number);
318
+ /**
319
+ * Gets maximum atmosphere opacity.
320
+ * @public
321
+ * @returns {number} - Max opacity.
322
+ */
283
323
  get atmosphereMaxOpacity(): number;
324
+ /**
325
+ * Sets minimum atmosphere opacity.
326
+ * @public
327
+ * @param {number} opacity - Opacity value in range `[0..1]`.
328
+ */
284
329
  set atmosphereMinOpacity(opacity: number);
330
+ /**
331
+ * Gets minimum atmosphere opacity.
332
+ * @public
333
+ * @returns {number} - Min opacity.
334
+ */
285
335
  get atmosphereMinOpacity(): number;
336
+ /**
337
+ * Gets atmosphere opacity range `[max, min]`.
338
+ * @public
339
+ * @returns {Float32Array} - Opacity range.
340
+ */
341
+ get atmosphereMaxMinOpacity(): Float32Array;
342
+ protected _calcAtmosphereFadeDist(): void;
343
+ /**
344
+ * Enables or disables atmosphere rendering and related programs.
345
+ * @public
346
+ * @param {boolean} enabled - Atmosphere activity flag.
347
+ */
286
348
  set atmosphereEnabled(enabled: boolean);
349
+ /**
350
+ * Returns atmosphere activity flag.
351
+ * @public
352
+ * @returns {boolean} - `true` when atmosphere is enabled.
353
+ */
287
354
  get atmosphereEnabled(): boolean;
288
- set diffuse(rgb: string | NumberArray3 | Vec3);
289
- set ambient(rgb: string | NumberArray3 | Vec3);
290
- set specular(rgb: string | NumberArray3 | Vec3);
291
- set shininess(v: number);
355
+ /**
356
+ * Returns active terrain shade mode.
357
+ * @public
358
+ * @returns {number} - Shade mode id.
359
+ */
360
+ get shadeMode(): ShadeMode;
361
+ /**
362
+ * Sets terrain shade mode.
363
+ * @public
364
+ * @param {number|string} m - Shade mode id (`0|0.5|1` or `none|phong|pbr`).
365
+ */
366
+ set shadeMode(m: ShadeModeInput);
367
+ /**
368
+ * Returns normal-map generator used by the planet.
369
+ * @public
370
+ * @returns {NormalMapCreator} - Normal map creator.
371
+ */
292
372
  get normalMapCreator(): NormalMapCreator;
373
+ /**
374
+ * Returns current layers snapshot.
375
+ * @public
376
+ * @returns {Layer[]} - Layer array copy.
377
+ */
293
378
  get layers(): Layer[];
379
+ /**
380
+ * Returns Sun control instance if attached to the renderer.
381
+ * @public
382
+ * @returns {Sun | undefined} - Sun control.
383
+ */
294
384
  get sun(): Sun | undefined;
385
+ /**
386
+ * Returns current sun world position.
387
+ * @public
388
+ * @returns {Vec3} - Sun position.
389
+ */
295
390
  get sunPos(): Vec3;
296
391
  /**
297
392
  * Add the given control to the renderer of the planet scene.
393
+ * @public
298
394
  * @param {Control} control - Control.
299
395
  */
300
396
  addControl(control: Control): void;
301
397
  /**
302
398
  * Add the given controls array to the renderer of the planet.
399
+ * @public
303
400
  * @param {Array.<Control>} cArr - Control array.
304
401
  */
305
402
  addControls(cArr: Control[]): void;
306
403
  /**
307
- * Return layer by it name
308
- * @param {string} name - Name of the layer. og.Layer.prototype.name
404
+ * Returns a layer by name.
405
+ * @param {string} name - Layer name.
309
406
  * @public
310
- * @returns {Layer} -
407
+ * @returns {Layer | undefined} -
311
408
  */
312
409
  getLayerByName(name: string): Layer | undefined;
313
410
  /**
@@ -335,7 +432,7 @@ export declare class Planet extends RenderNode {
335
432
  */
336
433
  removeLayer(layer: Layer): void;
337
434
  /**
338
- *
435
+ * Clears material resources related to a layer in quadtree segments.
339
436
  * @public
340
437
  * @param {Layer} layer - Material layer.
341
438
  */
@@ -346,35 +443,67 @@ export declare class Planet extends RenderNode {
346
443
  * @public
347
444
  */
348
445
  setBaseLayer(layer: Layer): void;
446
+ protected _applyBaseLayerLighting(layer: Layer): void;
349
447
  /**
350
448
  * Sets elevation scale. 1.0 is default.
449
+ * @public
351
450
  * @param {number} factor - Elevation scale.
352
451
  */
353
452
  setHeightFactor(factor: number): void;
354
453
  /**
355
454
  * Gets elevation scale.
455
+ * @public
356
456
  * @returns {number} Terrain elevation scale
357
457
  */
358
458
  getHeightFactor(): number;
459
+ /**
460
+ * Sets LOD thresholds for quadtree terrain rendering.
461
+ * Proxy to {@link QuadTreeStrategy.setLodSize}.
462
+ * @public
463
+ * @param {number} currentLodSize - Current LOD size target.
464
+ * @param {number} [minLodSize] - Minimum LOD size.
465
+ * @param {number} [maxLodSize] - Maximum LOD size.
466
+ */
467
+ setLodSize(currentLodSize: number, minLodSize?: number, maxLodSize?: number): void;
359
468
  /**
360
469
  * Sets terrain provider
361
470
  * @public
362
471
  * @param {EmptyTerrain} terrain - Terrain provider.
363
472
  */
364
473
  setTerrain(terrain: EmptyTerrain): void;
474
+ /**
475
+ * Reinitializes terrain forward/deferred shaders for atmosphere mode.
476
+ * @public
477
+ * @param {AtmosphereParameters} [atmosParams] - Optional atmosphere shader parameters.
478
+ */
365
479
  initAtmosphereShader(atmosParams?: AtmosphereParameters): void;
480
+ /**
481
+ * Returns atmosphere control instance bound to the planet.
482
+ * @public
483
+ * @returns {Atmosphere} - Atmosphere control.
484
+ */
366
485
  get atmosphereControl(): Atmosphere;
367
486
  protected _initializeAtmosphere(): void;
487
+ protected _swapDeferredShadingPass(atmosParams?: AtmosphereParameters): void;
488
+ protected _restoreDefaultDeferredShadingPass(): void;
368
489
  protected _initializeShaders(): void;
369
490
  protected _onLayerLoadend(layer: Layer): void;
491
+ /**
492
+ * Initializes render resources, workers, shaders, and layer state.
493
+ * @public
494
+ */
370
495
  init(): void;
496
+ /**
497
+ * Reattaches already registered layers to apply initialization logic.
498
+ * @public
499
+ */
371
500
  initLayers(): void;
372
501
  protected _clearIndexesCache(): void;
373
502
  /**
374
503
  * Creates default textures first for the North Pole and whole globe and second for the South Pole.
375
504
  * @public
376
- * @param{IDefaultTextureParams} param0 -
377
- * @param{IDefaultTextureParams} param1 -
505
+ * @param {IDefaultTextureParams} param0 - Default texture params for the first texture.
506
+ * @param {IDefaultTextureParams} param1 - Default texture params for the second texture.
378
507
  */
379
508
  createDefaultTextures(param0: IDefaultTextureParams, param1: IDefaultTextureParams): void;
380
509
  protected _getLayerAttributionHTML(layer: Layer): string;
@@ -383,6 +512,10 @@ export declare class Planet extends RenderNode {
383
512
  * @public
384
513
  */
385
514
  updateAttributionsList(): void;
515
+ /**
516
+ * Schedules visible layers list refresh for the next frame.
517
+ * @public
518
+ */
386
519
  updateVisibleLayers(): void;
387
520
  protected _updateVisibleLayers(): void;
388
521
  /**
@@ -395,9 +528,10 @@ export declare class Planet extends RenderNode {
395
528
  * @protected
396
529
  */
397
530
  protected _sortLayers(): void;
398
- protected _renderScreenNodesPASSNoAtmos(): void;
399
- protected _renderScreenNodesPASSAtmos(): void;
531
+ protected _renderOpaqueScreenNodesDeferredPASS(): void;
532
+ protected _renderTransparentScreenNodesPASSNoAtmos(): void;
400
533
  protected _renderScreenNodesWithHeightPASSNoAtmos(): void;
534
+ protected _renderTransparentScreenNodesPASSAtmos(): void;
401
535
  protected _renderScreenNodesWithHeightPASSAtmos(): void;
402
536
  protected _globalPreDraw(): void;
403
537
  /**
@@ -406,35 +540,44 @@ export declare class Planet extends RenderNode {
406
540
  */
407
541
  preFrame(): void;
408
542
  /**
409
- * Render node callback.
410
- * Frame function is called for each renderer activrCamera frustum.
543
+ * Pauses quadtree render-node collection and disables camera terrain collision checks.
411
544
  * @public
412
- * @override
413
545
  */
414
- frame(): void;
415
546
  lockQuadTree(): void;
547
+ applyNear(camera?: PlanetCamera): void;
548
+ /**
549
+ * Resumes quadtree render-node collection and enables camera terrain collision checks.
550
+ * @public
551
+ */
416
552
  unlockQuadTree(): void;
417
- protected _setUniformsNoAtmos(cam: PlanetCamera): Program;
418
- protected _setUniformsAtmos(cam: PlanetCamera): Program;
419
- protected _renderingFadingNodes: (quadTreeStrategy: QuadTreeStrategy, nodes: Map<number, boolean>, sh: Program, currentNode: Node, sl: Layer[], sliceIndex: number, outTransparentSegments?: Segment[], outOpaqueSegments?: Segment[]) => void;
420
- protected _renderingFadingNodesNoDepth: (quadTreeStrategy: QuadTreeStrategy, nodes: Map<number, boolean>, sh: Program, currentNode: Node, sl: Layer[], sliceIndex: number, outOpaqueSegments?: Segment[]) => void;
553
+ protected _setUniformsDeferred(cam: PlanetCamera, program: ShaderProgram): ShaderProgram;
554
+ protected _setUniformsNoAtmos(cam: PlanetCamera, program: ShaderProgram, disableBlend: boolean): ShaderProgram;
555
+ protected _setUniformsAtmos(cam: PlanetCamera, program: ShaderProgram, disableBlend: boolean): ShaderProgram;
556
+ protected _renderingFadingNodes: (camera: PlanetCamera, quadTreeStrategy: QuadTreeStrategy, nodes: Map<number, boolean>, sh: ShaderProgram, currentNode: Node, sl: Layer[], sliceIndex: number, outTransparentSegments?: Segment[], outOpaqueSegments?: Segment[]) => void;
421
557
  protected static __refreshLayersFadingOpacity__(layersRef: Layer[], minCurrZoom: number, maxCurrZoom: number): void;
422
558
  /**
423
559
  * Drawing nodes
424
560
  */
425
- protected _renderingScreenNodes(quadTreeStrategy: QuadTreeStrategy, sh: Program, cam: PlanetCamera, renderedNodes: Node[]): void;
426
- protected _renderingScreenNodesWithHeight(quadTreeStrategy: QuadTreeStrategy, sh: Program, cam: PlanetCamera, renderedNodes: Node[]): void;
561
+ protected _renderingOpaqueScreenNodes(cam: PlanetCamera, quadTreeStrategy: QuadTreeStrategy, sh: ShaderProgram, renderedNodes: Node[]): void;
562
+ protected _renderingTransparentScreenNodes(camera: PlanetCamera, quadTreeStrategy: QuadTreeStrategy, sh: ShaderProgram): void;
563
+ protected _renderingScreenNodesWithHeight(camera: PlanetCamera, quadTreeStrategy: QuadTreeStrategy, sh: ShaderProgram, renderedNodes: Node[]): void;
427
564
  protected _renderColorPickingFramebufferPASS(): void;
565
+ /**
566
+ * Renders terrain depth and frustum id into the depth framebuffer.
567
+ * @public
568
+ * @param {PlanetCamera} cam - Camera used for rendering.
569
+ * @param {QuadTreeStrategy} quadTreeStrategy - Quadtree strategy with rendered node lists.
570
+ */
428
571
  renderDepthFramebuffer(cam: PlanetCamera, quadTreeStrategy: QuadTreeStrategy): void;
429
572
  protected _collectVectorLayerCollections(): void;
430
573
  /**
431
- * Starts clear memory thread.
574
+ * Starts a clear memory thread.
432
575
  * @public
433
576
  */
434
577
  memClear(): void;
435
578
  /**
436
579
  * Returns ray vector hit ellipsoid coordinates.
437
- * If the ray doesn't hit ellipsoid it returns 'undefined'.
580
+ * If the ray doesn't hit ellipsoid, it returns 'undefined'.
438
581
  * @public
439
582
  * @param {Ray} ray - Ray.
440
583
  * @returns {Vec3 | undefined} -
@@ -450,7 +593,7 @@ export declare class Planet extends RenderNode {
450
593
  /**
451
594
  * Project screen coordinates to the planet ellipsoid.
452
595
  * @public
453
- * @param {Vec2 | IBaseInputState} px - Screen coordinates.
596
+ * @param {Vec2} px - Screen coordinates.
454
597
  * @returns {LonLat | undefined} - Geodetic coordinates.
455
598
  */
456
599
  getLonLatFromPixelEllipsoid(px: Vec2): LonLat | undefined;
@@ -464,7 +607,7 @@ export declare class Planet extends RenderNode {
464
607
  * Returns screen coordinates cartesian coordinates on the current terrain.
465
608
  * position or null if input coordinates is outside the planet.
466
609
  * @public
467
- * @param {Vec2} px - Pixel screen 2d coordinates.
610
+ * @param {Vec2 | IBaseInputState} px - Pixel screen 2d coordinates.
468
611
  * @returns {Vec3 | undefined} -
469
612
  */
470
613
  getCartesianFromPixelTerrain(px: Vec2 | IBaseInputState): Vec3 | undefined;
@@ -493,15 +636,15 @@ export declare class Planet extends RenderNode {
493
636
  /**
494
637
  * Returns distance from an active (screen) camera to the planet ellipsoid.
495
638
  * @public
496
- * @param {Vec2} px - Screen coordinates.
497
- * @returns {number} -
639
+ * @param {Vec2 | IBaseInputState} px - Screen coordinates.
640
+ * @returns {number | undefined} -
498
641
  */
499
642
  getDistanceFromPixelEllipsoid(px: Vec2 | IBaseInputState): number | undefined;
500
643
  /**
501
644
  * Returns distance from active (screen) camera to the planet terrain by screen coordinates.
502
645
  * @public
503
646
  * @param {Vec2 | IBaseInputState} px - Screen coordinates.
504
- * @returns {number | undefined} -
647
+ * @returns {number} -
505
648
  */
506
649
  getDistanceFromPixel(px: Vec2 | IBaseInputState): number;
507
650
  /**
@@ -523,6 +666,11 @@ export declare class Planet extends RenderNode {
523
666
  * @returns {Extent} -
524
667
  */
525
668
  getExtent(): Extent;
669
+ /**
670
+ * Returns currently cached quadtree view extent.
671
+ * @public
672
+ * @returns {Extent} - Cached view extent.
673
+ */
526
674
  getViewExtent(): Extent;
527
675
  /**
528
676
  * Sets camera to the planet geographical position.
@@ -559,10 +707,37 @@ export declare class Planet extends RenderNode {
559
707
  * @public
560
708
  */
561
709
  stopFlying(): void;
710
+ /**
711
+ * Refreshes billboard texture coordinates for all visible entity collections.
712
+ * @public
713
+ */
562
714
  updateBillboardsTexCoords(): void;
715
+ /**
716
+ * Finds terrain point under an entity in currently rendered segments.
717
+ * @public
718
+ * @param {Entity} entity - Entity to test.
719
+ * @param {Vec3} res - Output vector for terrain point.
720
+ * @returns {Vec3 | undefined} - Terrain point if found.
721
+ */
563
722
  getEntityTerrainPoint(entity: Entity, res: Vec3): number | undefined;
723
+ /**
724
+ * Returns terrain height at the given coordinates in default terrain datum.
725
+ * @public
726
+ * @param {LonLat} lonLat - Geodetic coordinates.
727
+ * @returns {Promise<number>} - Height value.
728
+ */
564
729
  getHeightDefault(lonLat: LonLat): Promise<number>;
730
+ /**
731
+ * Returns terrain height above ellipsoid at the given coordinates.
732
+ * @public
733
+ * @param {LonLat} lonLat - Geodetic coordinates.
734
+ * @returns {Promise<number>} - Height above ellipsoid.
735
+ */
565
736
  getHeightAboveELL(lonLat: LonLat): Promise<number>;
737
+ /**
738
+ * Handles node detachment and frees runtime terrain data.
739
+ * @public
740
+ */
566
741
  onremove(): void;
567
742
  /**
568
743
  * Destroy planet.