@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
@@ -1,47 +1,51 @@
1
- import { BaseNode } from "./BaseNode";
2
1
  import { Renderer } from "../renderer/Renderer";
3
- import { LightSource } from "../light/LightSource";
4
- import { EntityCollection } from "../entity/EntityCollection";
2
+ import type { EntityCollection } from "../entity/EntityCollection";
5
3
  import { Quat } from "../math/Quat";
6
4
  import { Vec3 } from "../math/Vec3";
7
5
  /**
8
6
  * Render node is a logical part of a render mechanism. Represents scene rendering.
9
- * For example one scene node for rendering the Earth, another one for rendering the Moon, another node for rendering stars etc.
10
- * Each render node has own model view space defined with matrices(scale, rotation, translation, transformation).
11
- * There are collections of light sources, entities and so on in the node.
12
- * Access to the node is renderer.renderNodes["Earth"]
7
+ * For example, one scene node for rendering the Earth, another one for rendering the Moon, another node for rendering stars etc.
8
+ * Each render node has its own model view space defined with matrices(scale, rotation, translation, transformation).
9
+ * There are collections of light sources, entities, and so on in the node.
10
+ * Access to the node is renderer.scenes[ "Earth"]
13
11
  * @class
14
- * @extends {BaseNode}
15
12
  * @param {string} name - Node name.
16
13
  */
17
- declare class RenderNode extends BaseNode {
14
+ declare class Scene {
15
+ static __counter__: number;
16
+ protected __id: number;
18
17
  /**
19
- * Renderer that calls frame() callback.
18
+ * Node name.
19
+ * @protected
20
+ * @type {string}
21
+ */
22
+ protected _name: string;
23
+ /**
24
+ * Top scene tree node pointer.
20
25
  * @public
21
- * @type {Renderer}
26
+ * @type {Scene}
22
27
  */
23
- renderer: Renderer | null;
24
- drawMode: number;
25
- /** Show rendering.
28
+ topNode: Scene;
29
+ /**
30
+ * Children nodes.
26
31
  * @public
32
+ * @type {Array.<Scene>}
27
33
  */
28
- show: boolean;
29
- protected _isActive: boolean;
30
- childNodes: RenderNode[];
34
+ childNodes: Scene[];
31
35
  /**
32
- * Lighting calculations.
36
+ * Parent node pointer.
33
37
  * @public
34
- * @type {boolean}
38
+ * @type {Scene}
35
39
  */
36
- lightEnabled: boolean;
40
+ parentNode: Scene | null;
37
41
  /**
38
- * Point light array.
42
+ * Assigned renderer.
39
43
  * @public
40
- * @type {Array.<LightSource>}
44
+ * @type {Renderer}
41
45
  */
42
- _lightPosition: Float32Array;
43
- _lightParams: Float32Array;
44
- _lightShininess: number;
46
+ renderer: Renderer | null;
47
+ drawMode: number;
48
+ protected _isActive: boolean;
45
49
  /**
46
50
  * Entity collection array.
47
51
  * @public
@@ -51,13 +55,14 @@ declare class RenderNode extends BaseNode {
51
55
  protected _entityCollectionsByDepthOrder: EntityCollection[][];
52
56
  protected _pickingId: number;
53
57
  constructor(name?: string);
58
+ get name(): string;
54
59
  getFrameRotation(cartesian: Vec3): Quat;
55
60
  /**
56
61
  * Adds node to the current hierarchy.
57
62
  * @public
58
- * @type {RenderNode}
63
+ * @type {Scene}
59
64
  */
60
- addNode(node: RenderNode): void;
65
+ addNode(node: Scene): void;
61
66
  /**
62
67
  * Assign render node with renderer.
63
68
  * @public
@@ -69,11 +74,21 @@ declare class RenderNode extends BaseNode {
69
74
  onremove(): void;
70
75
  remove(): void;
71
76
  /**
72
- * Adds entity collection.
77
+ * Destroy node.
78
+ * @public
79
+ */
80
+ destroy(): void;
81
+ /**
82
+ * Clear current node.
83
+ * @protected
84
+ */
85
+ protected _clear(): void;
86
+ /**
87
+ * Adds an entity collection.
73
88
  * @public
74
89
  * @param {EntityCollection} entityCollection - Entity collection.
75
90
  * @param {boolean} [isHidden] - If it's true that this collection has specific rendering.
76
- * @returns {RenderNode} -
91
+ * @returns {Scene} -
77
92
  */
78
93
  addEntityCollection(entityCollection: EntityCollection, isHidden?: boolean): void;
79
94
  /**
@@ -84,22 +99,10 @@ declare class RenderNode extends BaseNode {
84
99
  removeEntityCollection(entityCollection: EntityCollection): void;
85
100
  updateEntityCollectionsDepthOrder(): void;
86
101
  /**
87
- * Adds point light source.
88
- * @public
89
- * @param {LightSource} light - Light source.
90
- * @returns {RenderNode}
91
- */
92
- addLight(light: LightSource): RenderNode;
93
- /**
94
- * Calls render frame node's callback. Used in renderer.
95
- * @public
96
- */
97
- preDrawNode(): void;
98
- /**
99
- * Calls render frame node's callback. Used in renderer.
102
+ * Calls render the frame node's callback. Used in renderer.
100
103
  * @public
101
104
  */
102
- drawNode(): void;
105
+ draw(): void;
103
106
  /**
104
107
  * Gets render node activity.
105
108
  * @public
@@ -122,8 +125,7 @@ declare class RenderNode extends BaseNode {
122
125
  updateStrokeTexCoords(): void;
123
126
  frame(): void;
124
127
  preFrame(): void;
125
- protected _preDrawNodes(): void;
126
- protected _drawNodes(): void;
128
+ protected _preDraw(): void;
127
129
  drawEntityCollections(ec: EntityCollection[], depthOrder?: number): void;
128
130
  /**
129
131
  * Draw entity collections picking frame.
@@ -132,5 +134,6 @@ declare class RenderNode extends BaseNode {
132
134
  */
133
135
  drawPickingEntityCollections(ec: EntityCollection[]): void;
134
136
  protected _entityCollectionPickingCallback(): void;
137
+ isEqual(node: Scene): boolean;
135
138
  }
136
- export { RenderNode };
139
+ export { Scene };
@@ -1,12 +1,14 @@
1
- import { RenderNode } from './RenderNode';
1
+ import { Scene } from "./Scene";
2
2
  import type { WebGLBufferExt, WebGLTextureExt, Texture3DParams } from "../webgl/Handler";
3
- declare class SkyBox extends RenderNode {
3
+ declare class SkyBox extends Scene {
4
4
  params: Texture3DParams;
5
+ size: number;
5
6
  vertexPositionBuffer: WebGLBufferExt | null;
6
7
  texture: WebGLTextureExt | null;
7
- constructor(params: Texture3DParams);
8
+ constructor(params: Texture3DParams, size?: number);
8
9
  static createDefault(RESOURCES_URL: string): SkyBox;
9
10
  init(): void;
11
+ setSize(size: number): void;
10
12
  preFrame(): void;
11
13
  protected _createBuffers(): void;
12
14
  }
@@ -1,5 +1,5 @@
1
1
  import { Axes } from "./Axes";
2
2
  import { Planet } from "./Planet";
3
3
  import { SkyBox } from "./SkyBox";
4
- import { RenderNode } from "./RenderNode";
5
- export { Planet, Axes, SkyBox, RenderNode };
4
+ import { Scene } from "./Scene";
5
+ export { Planet, Axes, SkyBox, Scene };
@@ -11,7 +11,7 @@ import { Material } from "../layer/Material";
11
11
  import { Node } from "../quadTree/Node";
12
12
  import { Planet } from "../scene/Planet";
13
13
  import { PlanetCamera } from "../camera/PlanetCamera";
14
- import { Program } from "../webgl/Program";
14
+ import { ShaderProgram } from "../webgl/ShaderProgram";
15
15
  import { Proj } from "../proj/Proj";
16
16
  import { Sphere } from "../bv/Sphere";
17
17
  import type { NumberArray6 } from "../bv/Sphere";
@@ -147,7 +147,7 @@ declare class Segment {
147
147
  */
148
148
  terrainExists: boolean;
149
149
  /**
150
- * Means that tree passage reach the segment, and the segment terrain is ready.
150
+ * Means that tree passage reaches the segment, and the segment terrain is ready.
151
151
  * @type {boolean}
152
152
  */
153
153
  passReady: boolean;
@@ -159,14 +159,12 @@ declare class Segment {
159
159
  terrainVerticesHigh: Float32Array | null;
160
160
  terrainVerticesLow: Float32Array | null;
161
161
  noDataVertices: Uint8Array | null;
162
- tempVertices: Float64Array | null;
163
- tempVerticesHigh: Float32Array | null;
164
- tempVerticesLow: Float32Array | null;
162
+ renderVertices: Float64Array | null;
163
+ renderVerticesHigh: Float32Array | null;
164
+ renderVerticesLow: Float32Array | null;
165
165
  normalMapTexture: WebGLTextureExt | null;
166
166
  normalMapTextureBias: Float32Array;
167
167
  normalMapVertices: Float64Array | null;
168
- normalMapVerticesHigh: Float32Array | null;
169
- normalMapVerticesLow: Float32Array | null;
170
168
  normalMapNormals: Float32Array | null;
171
169
  vertexNormalBuffer: WebGLBufferExt | null;
172
170
  vertexPositionBuffer: WebGLBufferExt | null;
@@ -176,6 +174,7 @@ declare class Segment {
176
174
  _globalTextureCoordinates: Float32Array;
177
175
  _inTheQueue: boolean;
178
176
  _appliedNeighborsZoom: [number, number, number, number];
177
+ _appliedNeighborsZoomNodeId: [number, number, number, number];
179
178
  _slices: Slice[];
180
179
  _indexBuffer: WebGLBufferExt | null;
181
180
  readyToEngage: boolean;
@@ -184,7 +183,18 @@ declare class Segment {
184
183
  _transitionOpacity: number;
185
184
  _transitionTimestamp: number;
186
185
  quadTreeStrategy: QuadTreeStrategy;
186
+ _relativeCenter: Vec3;
187
+ _rtcEyePositionHigh: Float32Array;
188
+ _rtcEyePositionLow: Float32Array;
189
+ __doubleToTwoFloats: (pos: Vec3, highPos: Vec3, lowPos: Vec3) => void;
187
190
  constructor(node: Node, quadTreeStrategy: QuadTreeStrategy, tileZoom: number, extent: Extent);
191
+ getRTCPosition(pos: Vec3, rtcPositionHigh: Vec3, rtcPositionLow: Vec3): void;
192
+ static recalcRTCVertices: (relativeCenter: Vec3, vertices: Float64Array, verticesHigh: Float32Array, verticesLow: Float32Array) => void;
193
+ setRelativeCenter(c: Vec3): void;
194
+ updateRTCEyePosition(camera: PlanetCamera): void;
195
+ protected _setRTCEyePositionUniforms(gl: WebGL2RenderingContext, shu: {
196
+ [id: string]: WebGLUniformLocation;
197
+ }): void;
188
198
  checkZoom(): boolean;
189
199
  /**
190
200
  * Returns entity terrain point.
@@ -226,6 +236,7 @@ declare class Segment {
226
236
  */
227
237
  elevationsNotExists(): void;
228
238
  protected _checkEqualization(neighborSide: number, neigborNode: Node): boolean;
239
+ protected _equalizeSide(side: number): void;
229
240
  equalize(): void;
230
241
  engage(): void;
231
242
  _terrainWorkerCallback(data: ITerrainWorkerData): void;
@@ -266,19 +277,22 @@ declare class Segment {
266
277
  */
267
278
  getMaterialByLayer(layer: Layer): Material | undefined;
268
279
  /**
269
- * @param layer
280
+ * Computes cyclic longitude shift for `sourceExtent` to align it with `targetExtent`
281
+ * in wrapped horizontal coordinate space (for example, Web Mercator world copies).
270
282
  * @protected
271
- *
272
- * @todo siplify layer._extentMerc in this.getLayerExtent(layer)
273
- *
283
+ * @param {Extent} sourceExtent - Source extent to shift along longitude.
284
+ * @param {Extent} targetExtent - Target extent used as alignment reference.
285
+ * @param {number} worldWidth - Full world width in projection units.
286
+ * @returns {number} Longitude shift to apply to `sourceExtent`.
274
287
  */
275
- protected _getLayerExtentOffset(layer: Layer): [number, number, number, number];
288
+ protected _getCyclicLonShift(sourceExtent: Extent, targetExtent: Extent, worldWidth: number): number;
276
289
  initSlice(sliceIndex: number): Slice;
277
- screenRendering(sh: Program, layerSlice: Layer[], sliceIndex: number, defaultTexture?: WebGLTextureExt | null, isOverlay?: boolean, forcedOpacity?: number): void;
290
+ screenRendering(sh: ShaderProgram, layerSlice: Layer[], sliceIndex: number, defaultTexture?: WebGLTextureExt | null, isOverlay?: boolean, forcedOpacity?: number): void;
278
291
  increaseTransitionOpacity(): void;
279
292
  fadingTransitionOpacity(): void;
280
- colorPickingRendering(sh: Program, layerSlice: Layer[], sliceIndex: number, defaultTexture?: WebGLTextureExt | null, isOverlay?: boolean): void;
281
- depthRendering(sh: Program, layerSlice?: Layer[]): void;
293
+ colorPickingRendering(sh: ShaderProgram, layerSlice: Layer[], sliceIndex: number, defaultTexture?: WebGLTextureExt | null, isOverlay?: boolean): void;
294
+ depthRendering(sh: ShaderProgram, layerSlice?: Layer[]): void;
295
+ ensureIndexBuffer(): void;
282
296
  protected _getIndexBuffer(): WebGLBufferExt;
283
297
  layerOverlap(layer: Layer): boolean;
284
298
  getDefaultTexture(): WebGLTextureExt | null;
@@ -32,7 +32,6 @@ declare class SegmentLonLat extends Segment {
32
32
  * @todo simplify layer._extentMerc in layer.getNativeExtent(this)
33
33
  *
34
34
  */
35
- protected _getLayerExtentOffset(layer: Layer): [number, number, number, number];
36
35
  layerOverlap(layer: Layer): boolean;
37
36
  getDefaultTexture(): WebGLTextureExt | null;
38
37
  getExtentLonLat(): Extent;
@@ -0,0 +1,7 @@
1
+ export declare const SHADE_UNLIT = 0;
2
+ export declare const SHADE_PHONG = 0.5;
3
+ export declare const SHADE_PBR = 1;
4
+ export type ShadeMode = typeof SHADE_UNLIT | typeof SHADE_PHONG | typeof SHADE_PBR;
5
+ export type ShadeModeString = "none" | "unlit" | "phong" | "pbr";
6
+ export type ShadeModeInput = ShadeMode | ShadeModeString;
7
+ export declare function normalizeShadeMode(mode: ShadeModeInput): ShadeMode;
@@ -0,0 +1,2 @@
1
+ import { ShaderProgram } from "../webgl/ShaderProgram";
2
+ export declare function applyDeferredDepth(): ShaderProgram;
@@ -1,4 +1,4 @@
1
- import { Program } from '../../webgl/Program';
1
+ import { ShaderProgram } from "../../webgl/ShaderProgram";
2
2
  export interface AtmosphereParameters {
3
3
  ATMOS_HEIGHT: number;
4
4
  RAYLEIGH_SCALE: number;
@@ -22,5 +22,5 @@ export interface AtmosphereParameters {
22
22
  }
23
23
  export declare const DEFAULT_PARAMS: AtmosphereParameters;
24
24
  export declare const MARS_PARAMS: AtmosphereParameters;
25
- export declare function transmittance(atmosParams?: AtmosphereParameters): Program;
26
- export declare function scattering(atmosParams?: AtmosphereParameters): Program;
25
+ export declare function transmittance(atmosParams?: AtmosphereParameters): ShaderProgram;
26
+ export declare function scattering(atmosParams?: AtmosphereParameters): ShaderProgram;
@@ -1,3 +1,4 @@
1
- import { Program } from '../../webgl/Program';
2
- export declare function billboardPicking(): Program;
3
- export declare function billboard_screen(): Program;
1
+ import { ShaderProgram } from "../../webgl/ShaderProgram";
2
+ export declare function billboardPicking(): ShaderProgram;
3
+ export declare function billboard_screen(): ShaderProgram;
4
+ export declare function billboard_screen_woit(): ShaderProgram;
@@ -0,0 +1,2 @@
1
+ import { ShaderProgram } from "../../webgl/ShaderProgram";
2
+ export declare function deferredShading(): ShaderProgram;
@@ -0,0 +1,3 @@
1
+ import { ShaderProgram } from "../../webgl/ShaderProgram";
2
+ import type { AtmosphereParameters } from "../atmos/atmos";
3
+ export declare function deferredShadingAtmos(atmosParams?: AtmosphereParameters): ShaderProgram;
@@ -1,2 +1,2 @@
1
- import { Program } from '../webgl/Program';
2
- export declare function depth(): Program;
1
+ import { ShaderProgram } from "../webgl/ShaderProgram";
2
+ export declare function depth(): ShaderProgram;
@@ -1,4 +1,8 @@
1
- import { Program } from "../../webgl/Program";
2
- export declare const geo_object: () => Program;
3
- export declare const geo_object_picking: () => Program;
4
- export declare const geo_object_depth: () => Program;
1
+ import { ShaderProgram } from "../../webgl/ShaderProgram";
2
+ import type { AtmosphereParameters } from "../atmos/atmos";
3
+ export declare const geo_object_deferred: () => ShaderProgram;
4
+ export declare const geo_object_forward: () => ShaderProgram;
5
+ export declare const geo_object_woit: () => ShaderProgram;
6
+ export declare function geo_object_woit_atmos(atmosParams?: AtmosphereParameters): ShaderProgram;
7
+ export declare const geo_object_picking: () => ShaderProgram;
8
+ export declare const geo_object_depth: () => ShaderProgram;
@@ -1,4 +1,4 @@
1
- import { Program } from '../../webgl/Program';
2
- export declare function label_webgl2(): Program;
3
- export declare function label_screen(): Program;
4
- export declare function labelPicking(): Program;
1
+ import { ShaderProgram } from "../../webgl/ShaderProgram";
2
+ export declare function label_webgl2(): ShaderProgram;
3
+ export declare function label_woit(): ShaderProgram;
4
+ export declare function labelPicking(): ShaderProgram;
@@ -1,2 +1,2 @@
1
- import { Program } from '../webgl/Program';
2
- export declare function pointCloud(): Program;
1
+ import { ShaderProgram } from "../webgl/ShaderProgram";
2
+ export declare function pointCloud(): ShaderProgram;
@@ -1,3 +1,7 @@
1
- import { Program } from '../../webgl/Program';
2
- export declare function polyline_screen(): Program;
3
- export declare function polyline_picking(): Program;
1
+ import { ShaderProgram } from "../../webgl/ShaderProgram";
2
+ export declare function polylineTex(): ShaderProgram;
3
+ export declare function polylinePlain(): ShaderProgram;
4
+ export declare function polylineTexWoit(): ShaderProgram;
5
+ export declare function polylineWoitTex(): ShaderProgram;
6
+ export declare function polylineWoitPlain(): ShaderProgram;
7
+ export declare function polyline_picking(): ShaderProgram;
@@ -1,2 +1,3 @@
1
- import { Program } from '../../webgl/Program';
2
- export declare function rayScreen(): Program;
1
+ import { ShaderProgram } from "../../webgl/ShaderProgram";
2
+ export declare function rayScreen(): ShaderProgram;
3
+ export declare function rayScreenWoit(): ShaderProgram;
@@ -1,2 +1,2 @@
1
- import { Program } from '../webgl/Program';
2
- export declare function screenFrame(): Program;
1
+ import { ShaderProgram } from "../webgl/ShaderProgram";
2
+ export declare function screenFrame(): ShaderProgram;
@@ -0,0 +1,7 @@
1
+ import { AtmosphereParameters } from "../atmos/atmos";
2
+ import { ShaderProgram } from "../../webgl/ShaderProgram";
3
+ export declare function segment_screen_deferred(): ShaderProgram;
4
+ export declare function segment_screen_wl_forward_noatmos(): ShaderProgram;
5
+ export declare function segment_screen_wl_forward_atmos(atmosParams?: AtmosphereParameters): ShaderProgram;
6
+ export declare function segment_colorPicking(): ShaderProgram;
7
+ export declare function segment_depth(): ShaderProgram;
@@ -1,2 +1,2 @@
1
- import { Program } from '../webgl/Program';
2
- export declare function skybox(): Program;
1
+ import { ShaderProgram } from "../webgl/ShaderProgram";
2
+ export declare function skybox(): ShaderProgram;
@@ -0,0 +1,3 @@
1
+ import { ShaderProgram } from "../../webgl/ShaderProgram";
2
+ export declare function stripTransparent(): ShaderProgram;
3
+ export declare function stripForward(): ShaderProgram;
@@ -1,2 +1,2 @@
1
- import { Program } from '../../webgl/Program';
2
- export declare function toneMapping(): Program;
1
+ import { ShaderProgram } from "../../webgl/ShaderProgram";
2
+ export declare function toneMapping(): ShaderProgram;
@@ -0,0 +1,2 @@
1
+ import { ShaderProgram } from "../webgl/ShaderProgram";
2
+ export declare function weightedOITResolve(): ShaderProgram;
@@ -1,5 +1,5 @@
1
- import { GlobusTerrain } from "./GlobusTerrain";
2
1
  import type { IGlobusTerrainParams } from "./GlobusTerrain";
2
+ import { GlobusTerrain } from "./GlobusTerrain";
3
3
  import { Segment } from "../segment/Segment";
4
4
  import { Extent } from "../Extent";
5
5
  import type { TypedArray } from "../utils/shared";
@@ -18,14 +18,13 @@ export type UrlRewriteFunc = (tileX: number, tileY: number, tileZoom: number, ti
18
18
  * Class represents terrain provider without elevation data.
19
19
  * @param {IEmptyTerrainParams} [options] - Provider options:
20
20
  * @param {string} [options.name="empty"] - Provider name.
21
- * @param {boolean} [options.equalizeVertices] -
21
+ * @param {boolean} [options.equalizeVertices=false] - Enables vertex equalization on tile borders.
22
22
  * @param {number} [options.minZoom=2] - Minimal visible zoom index when terrain handler works.
23
- * @param {number} [options.minZoom=50] - Maximal visible zoom index when terrain handler works.
23
+ * @param {number} [options.maxZoom=19] - Maximal visible zoom index when terrain handler works.
24
24
  * @param {number} [options.maxNativeZoom=19] - Maximal available terrain zoom level.
25
- * @param {Array.<number>} [options.gridSizeByZoom] - Array of segment triangulation grid sizes where array index agreed to the segment zoom index.
26
- * @param {Array.<number>} [gridSizeByZoom] - Array of values, where each value corresponds to the size of a tile(or segment) on the globe. Each value must be power of two.
27
- * @param {Geoid} [options.geoid] -
28
- * @param {string} [options.geoidSrc] -
25
+ * @param {Array.<number>} [options.gridSizeByZoom] - Segment triangulation grid sizes by zoom index.
26
+ * @param {Geoid} [options.geoid] - Geoid model instance.
27
+ * @param {string} [options.geoidSrc] - URL to geoid model source.
29
28
  */
30
29
  declare class EmptyTerrain {
31
30
  static __counter__: number;
@@ -29,22 +29,20 @@ type TileData = {
29
29
  /**
30
30
  * Class that loads segment elevation data, converts it to the array and passes it to the planet segment.
31
31
  * @class
32
- * @extends {GlobusTerrain}
32
+ * @extends {EmptyTerrain}
33
33
  * @param {string} [name=""] - Terrain provider name.
34
34
  * @param {IGlobusTerrainParams} [options] - Provider options:
35
35
  * @param {number} [options.minZoom=3] - Minimal visible zoom index when terrain handler works.
36
- * @param {number} [options.minZoom=14] - Maximal visible zoom index when terrain handler works.
37
- * @param {number} [options.minNativeZoom=14] - Maximal available terrain zoom level.
38
- * @param {string} [options.url="//openglobus.org/heights/srtm3/{z}/{y}/{x}.ddm"] - Terrain source path url template. Default is openglobus ddm elevation file.
39
- * @param {Array.<number>} [options.gridSizeByZoom] - Array of segment triangulation grid sizes where array index agreed to the segment zoom index.
36
+ * @param {number} [options.maxZoom=14] - Maximal visible zoom index when terrain handler works.
37
+ * @param {number} [options.maxNativeZoom=14] - Maximal available terrain zoom level.
38
+ * @param {string} [options.url="https://{s}.srtm3.openglobus.org/{z}/{y}/{x}.ddm"] - Terrain source URL template.
39
+ * @param {Array.<number>} [options.gridSizeByZoom] - Segment triangulation grid sizes where array index matches segment zoom index.
40
40
  * @param {number} [options.plainGridSize=32] - Elevation grid size. Default is 32x32. Must be power of two.
41
- * @param {string} [options.responseType="arraybuffer"] - Response type.
42
- * @param {number} [options.MAX_LOADING_TILES] - Maximum at one time loading tiles.
43
- * @param {Array.<number>} [gridSizeByZoom] - Array of values, where each value corresponds to the size of a tile(or segment) on the globe. Each value must be power of two.
44
- * @param {number} [heightFactor=1] - Elevation height multiplier.
41
+ * @param {number} [options.heightFactor=1] - Elevation height multiplier.
42
+ * @param {FetchCache} [options.cache="default"] - Fetch cache mode.
45
43
  *
46
- * @fires GlobusTerrainEvents#load
47
- * @fires GlobusTerrainEvents#loadend
44
+ * @fires load
45
+ * @fires loadend
48
46
  */
49
47
  declare class GlobusTerrain extends EmptyTerrain {
50
48
  events: GlobusTerrainEvents;
@@ -88,7 +86,7 @@ declare class GlobusTerrain extends EmptyTerrain {
88
86
  * @public
89
87
  * @param {string} url - Url template.
90
88
  * @example <caption>Default openglobus url template:</caption>:
91
- * "http://earth3.openglobus.org/{z}/{y}/{x}.ddm"
89
+ * "https://{s}.srtm3.openglobus.org/{z}/{y}/{x}.ddm"
92
90
  */
93
91
  setUrl(url: string): void;
94
92
  /**
@@ -101,8 +99,8 @@ declare class GlobusTerrain extends EmptyTerrain {
101
99
  /**
102
100
  * Starts to load segment elevation data.
103
101
  * @public
104
- * @param {Segment} segment - Segment that wants a terrain data.
105
- * @param {boolean} [forceLoading] -
102
+ * @param {Segment} segment - Segment that requests terrain data.
103
+ * @param {boolean} [forceLoading=false] - Forces loading even if default filter would skip it.
106
104
  */
107
105
  loadTerrain(segment: Segment, forceLoading?: boolean): void;
108
106
  protected _getSubdomain(): string;
@@ -110,15 +108,15 @@ declare class GlobusTerrain extends EmptyTerrain {
110
108
  /**
111
109
  * Creates default query url string.
112
110
  * @protected
113
- * @param {Segment} segment -
114
- * @returns {string} -
111
+ * @param {Segment} segment - Segment to create URL for.
112
+ * @returns {string} URL string.
115
113
  */
116
114
  protected _createUrl(segment: Segment): string;
117
115
  /**
118
116
  * Returns actual url query string.
119
117
  * @protected
120
- * @param {Segment} segment - Segment that loads image data.
121
- * @returns {string} - Url string.
118
+ * @param {Segment} segment - Segment that loads terrain data.
119
+ * @returns {string} URL string.
122
120
  */
123
121
  protected _getHTTPRequestString(segment: Segment): string;
124
122
  /**
@@ -130,7 +128,7 @@ declare class GlobusTerrain extends EmptyTerrain {
130
128
  /**
131
129
  * Converts loaded data to segment elevation data type(column major elevation data array in meters)
132
130
  * @public
133
- * @returns {Array.<number>} -
131
+ * @returns {Array.<number> | TypedArray} Column-major elevation data array in meters.
134
132
  */
135
133
  protected _createHeights(data: any, segment?: Segment | null, tileGroup?: number, x?: number, y?: number, z?: number, extent?: Extent, isMaxZoom?: boolean): TypedArray | number[];
136
134
  /**
@@ -138,9 +136,6 @@ declare class GlobusTerrain extends EmptyTerrain {
138
136
  */
139
137
  protected _applyElevationsData(segment: Segment, elevations: number[] | TypedArray | null): void;
140
138
  }
141
- type GlobusTerrainEventsList = [
142
- "load",
143
- "loadend"
144
- ];
139
+ type GlobusTerrainEventsList = ["load", "loadend"];
145
140
  type GlobusTerrainEvents = EventsHandler<GlobusTerrainEventsList>;
146
141
  export { GlobusTerrain };
@@ -1,6 +1,6 @@
1
1
  import { Extent } from "../Extent";
2
- import { GlobusTerrain } from "./GlobusTerrain";
3
2
  import type { IGlobusTerrainParams } from "./GlobusTerrain";
3
+ import { GlobusTerrain } from "./GlobusTerrain";
4
4
  import { LonLat } from "../LonLat";
5
5
  import { Segment } from "../segment/Segment";
6
6
  import type { TypedArray } from "../utils/shared";
@@ -14,13 +14,13 @@ export interface IRgbTerrainParams extends IGlobusTerrainParams {
14
14
  /**
15
15
  * @class
16
16
  * @extends {GlobusTerrain}
17
- * @param {string} [name=""] - Terrain provider name.
18
- * @param {IRgbTerrainParams} [options]:
19
- * @param {boolean} [equalizeNormals=true] - Make normal equalization on the edges of the tiles.
20
- * @param {string} [key=""] - API key.
21
- * @param {number} [imageSize=256] - Image size.
22
- * @param {number} [minHeight=-10000] - Minimal height for rgb to height converter.
23
- * @param {number} [resolution=0.1] - Height converter resolution.
17
+ * @param {string} [name="RgbTerrain"] - Terrain provider name.
18
+ * @param {IRgbTerrainParams} [options] - Provider options:
19
+ * @param {boolean} [options.equalizeNormals=true] - Enables normal equalization on tile edges.
20
+ * @param {string} [options.key=""] - API key.
21
+ * @param {number} [options.imageSize=256] - Source image size.
22
+ * @param {number} [options.minHeight=-10000] - Minimal height for RGB-to-height conversion.
23
+ * @param {number} [options.resolution=0.1] - RGB-to-height conversion resolution.
24
24
  */
25
25
  declare class RgbTerrain extends GlobusTerrain {
26
26
  protected _imageSize: number;
@@ -1,6 +1,6 @@
1
- import { BilTerrain } from './BilTerrain';
2
- import { EmptyTerrain } from './EmptyTerrain';
3
- import { GlobusTerrain } from './GlobusTerrain';
4
- import { RgbTerrain } from './RgbTerrain';
5
- import { GlobusRgbTerrain } from './GlobusRgbTerrain';
1
+ import { BilTerrain } from "./BilTerrain";
2
+ import { EmptyTerrain } from "./EmptyTerrain";
3
+ import { GlobusTerrain } from "./GlobusTerrain";
4
+ import { RgbTerrain } from "./RgbTerrain";
5
+ import { GlobusRgbTerrain } from "./GlobusRgbTerrain";
6
6
  export { EmptyTerrain, GlobusTerrain, RgbTerrain, BilTerrain, GlobusRgbTerrain };