@openglobus/og 0.20.4 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/lib/@openglobus/js/Globe.d.ts +5 -1
  2. package/lib/@openglobus/js/Object3d.d.ts +8 -2
  3. package/lib/@openglobus/js/camera/Camera.d.ts +2 -0
  4. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +58 -0
  5. package/lib/@openglobus/js/ellipsoid/Ellipsoid.d.ts +1 -1
  6. package/lib/@openglobus/js/ellipsoid/index.d.ts +4 -3
  7. package/lib/@openglobus/js/ellipsoid/mars.d.ts +6 -0
  8. package/lib/@openglobus/js/ellipsoid/moon.d.ts +6 -0
  9. package/lib/@openglobus/js/entity/Entity.d.ts +4 -2
  10. package/lib/@openglobus/js/entity/EntityCollection.d.ts +3 -2
  11. package/lib/@openglobus/js/entity/GeoObject.d.ts +6 -1
  12. package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +4 -0
  13. package/lib/@openglobus/js/entity/GeometryHandler.d.ts +3 -2
  14. package/lib/@openglobus/js/entity/Label.d.ts +14 -0
  15. package/lib/@openglobus/js/entity/LabelHandler.d.ts +1 -1
  16. package/lib/@openglobus/js/index.d.ts +3 -3
  17. package/lib/@openglobus/js/layer/Vector.d.ts +12 -29
  18. package/lib/@openglobus/js/proj/equi.d.ts +9 -0
  19. package/lib/@openglobus/js/quadTree/{EPSG4326QuadTreeStrategy.d.ts → EPSG4326/EPSG4326QuadTreeStrategy.d.ts} +2 -2
  20. package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +5 -13
  21. package/lib/@openglobus/js/quadTree/EntityCollectionsTreeStrategy.d.ts +25 -0
  22. package/lib/@openglobus/js/quadTree/QuadTreeStrategy.d.ts +11 -0
  23. package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +18 -0
  24. package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +19 -0
  25. package/lib/@openglobus/js/quadTree/earth/EarthQuadTreeStrategy.d.ts +29 -0
  26. package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +17 -0
  27. package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.d.ts +17 -0
  28. package/lib/@openglobus/js/quadTree/equi/EquiQuadTreeStrategy.d.ts +19 -0
  29. package/lib/@openglobus/js/quadTree/index.d.ts +6 -6
  30. package/lib/{js/quadTree → @openglobus/js/quadTree/wgs84}/Wgs84QuadTreeStrategy.d.ts +2 -2
  31. package/lib/@openglobus/js/renderer/Renderer.d.ts +2 -0
  32. package/lib/@openglobus/js/scene/Planet.d.ts +0 -27
  33. package/lib/@openglobus/js/segment/Segment.d.ts +0 -1
  34. package/lib/@openglobus/js/segment/SegmentLonLat.d.ts +0 -4
  35. package/lib/@openglobus/js/segment/{SegmentLonLatWgs84.d.ts → SegmentLonLatEqui.d.ts} +1 -1
  36. package/lib/@openglobus/js/terrain/RgbTerrain.d.ts +20 -0
  37. package/lib/@openglobus/og.esm.js +1 -1
  38. package/lib/@openglobus/og.esm.js.map +1 -1
  39. package/lib/@openglobus/og.umd.js +1 -1
  40. package/lib/@openglobus/og.umd.js.map +1 -1
  41. package/lib/@openglobus/res/fonts/Ephesis-Regular.json +4648 -0
  42. package/lib/@openglobus/res/fonts/Ephesis-Regular.ttf.cfg +1282 -0
  43. package/lib/@openglobus/res/fonts/Ephesis-Regular.ttf.png +0 -0
  44. package/lib/js/Globe.d.ts +5 -1
  45. package/lib/js/Globe.js +13 -4
  46. package/lib/js/Object3d.d.ts +8 -2
  47. package/lib/js/Object3d.js +64 -6
  48. package/lib/js/camera/Camera.d.ts +2 -0
  49. package/lib/js/camera/Camera.js +8 -0
  50. package/lib/js/control/elevationProfile/ElevationProfileScene.js +2 -0
  51. package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +58 -0
  52. package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.js +105 -0
  53. package/lib/js/ellipsoid/Ellipsoid.d.ts +1 -1
  54. package/lib/js/ellipsoid/Ellipsoid.js +1 -1
  55. package/lib/js/ellipsoid/index.d.ts +4 -3
  56. package/lib/js/ellipsoid/index.js +4 -3
  57. package/lib/js/ellipsoid/mars.d.ts +6 -0
  58. package/lib/js/ellipsoid/mars.js +6 -0
  59. package/lib/js/ellipsoid/moon.d.ts +6 -0
  60. package/lib/js/ellipsoid/moon.js +6 -0
  61. package/lib/js/entity/Entity.d.ts +4 -2
  62. package/lib/js/entity/Entity.js +4 -1
  63. package/lib/js/entity/EntityCollection.d.ts +3 -2
  64. package/lib/js/entity/EntityCollection.js +26 -2
  65. package/lib/js/entity/GeoObject.d.ts +6 -1
  66. package/lib/js/entity/GeoObject.js +9 -0
  67. package/lib/js/entity/GeoObjectHandler.d.ts +4 -0
  68. package/lib/js/entity/GeoObjectHandler.js +32 -1
  69. package/lib/js/entity/GeometryHandler.d.ts +3 -2
  70. package/lib/js/entity/GeometryHandler.js +58 -0
  71. package/lib/js/entity/Label.d.ts +14 -0
  72. package/lib/js/entity/Label.js +24 -4
  73. package/lib/js/entity/LabelHandler.d.ts +1 -1
  74. package/lib/js/entity/LabelHandler.js +4 -4
  75. package/lib/js/entity/Polyline.js +1 -1
  76. package/lib/js/index.d.ts +3 -3
  77. package/lib/js/index.js +3 -3
  78. package/lib/js/layer/Bing.js +1 -0
  79. package/lib/js/layer/Layer.js +7 -4
  80. package/lib/js/layer/Vector.d.ts +12 -29
  81. package/lib/js/layer/Vector.js +38 -161
  82. package/lib/js/layer/XYZ.js +1 -1
  83. package/lib/js/proj/equi.d.ts +9 -0
  84. package/lib/js/proj/equi.js +9 -0
  85. package/lib/js/quadTree/{EPSG4326QuadTreeStrategy.d.ts → EPSG4326/EPSG4326QuadTreeStrategy.d.ts} +2 -2
  86. package/lib/js/quadTree/EPSG4326/EPSG4326QuadTreeStrategy.js +16 -0
  87. package/lib/js/quadTree/EntityCollectionNode.d.ts +5 -13
  88. package/lib/js/quadTree/EntityCollectionNode.js +18 -83
  89. package/lib/js/quadTree/EntityCollectionsTreeStrategy.d.ts +25 -0
  90. package/lib/js/quadTree/EntityCollectionsTreeStrategy.js +49 -0
  91. package/lib/js/quadTree/Node.js +6 -12
  92. package/lib/js/quadTree/QuadTreeStrategy.d.ts +11 -0
  93. package/lib/js/quadTree/QuadTreeStrategy.js +12 -0
  94. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +18 -0
  95. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.js +74 -0
  96. package/lib/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +19 -0
  97. package/lib/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.js +103 -0
  98. package/lib/js/quadTree/earth/EarthQuadTreeStrategy.d.ts +29 -0
  99. package/lib/js/quadTree/{EarthQuadTreeStrategy.js → earth/EarthQuadTreeStrategy.js} +29 -6
  100. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +17 -0
  101. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.js +70 -0
  102. package/lib/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.d.ts +17 -0
  103. package/lib/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.js +75 -0
  104. package/lib/js/quadTree/equi/EquiQuadTreeStrategy.d.ts +19 -0
  105. package/lib/js/quadTree/equi/EquiQuadTreeStrategy.js +62 -0
  106. package/lib/js/quadTree/index.d.ts +6 -6
  107. package/lib/js/quadTree/index.js +6 -6
  108. package/lib/{@openglobus/js/quadTree → js/quadTree/wgs84}/Wgs84QuadTreeStrategy.d.ts +2 -2
  109. package/lib/js/quadTree/wgs84/Wgs84QuadTreeStrategy.js +15 -0
  110. package/lib/js/renderer/Renderer.d.ts +2 -0
  111. package/lib/js/renderer/Renderer.js +2 -2
  112. package/lib/js/scene/Planet.d.ts +0 -27
  113. package/lib/js/scene/Planet.js +2 -9
  114. package/lib/js/segment/Segment.d.ts +0 -1
  115. package/lib/js/segment/Segment.js +0 -3
  116. package/lib/js/segment/SegmentLonLat.d.ts +0 -4
  117. package/lib/js/segment/SegmentLonLat.js +0 -11
  118. package/lib/js/segment/{SegmentLonLatWgs84.d.ts → SegmentLonLatEqui.d.ts} +1 -1
  119. package/lib/js/segment/{SegmentLonLatWgs84.js → SegmentLonLatEqui.js} +3 -1
  120. package/lib/js/shaders/geoObject.js +10 -5
  121. package/lib/js/shaders/polyline.js +8 -6
  122. package/lib/js/terrain/RgbTerrain.d.ts +20 -0
  123. package/lib/js/terrain/RgbTerrain.js +227 -214
  124. package/lib/js/utils/PlainSegmentWorker.js +3 -1
  125. package/lib/js/webgl/Handler.js +1 -1
  126. package/package.json +15 -15
  127. package/lib/@openglobus/js/quadTree/EarthQuadTreeStrategy.d.ts +0 -9
  128. package/lib/@openglobus/js/quadTree/MarsQuadTreeStrategy.d.ts +0 -11
  129. package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +0 -16
  130. package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +0 -9
  131. package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +0 -11
  132. package/lib/js/quadTree/MarsQuadTreeStrategy.js +0 -43
  133. package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +0 -15
@@ -0,0 +1,62 @@
1
+ import { Extent } from "../../Extent";
2
+ import { equi } from "../../proj/equi";
3
+ import { Node } from "../Node";
4
+ import { SegmentLonLatEqui } from "../../segment/SegmentLonLatEqui";
5
+ import { QuadTreeStrategy } from "../QuadTreeStrategy";
6
+ import { getTileCellExtent, getTileCellIndex, TILEGROUP_COMMON } from "../../segment/Segment";
7
+ import { EquiEntityCollectionsTreeStrategy } from "./EquiEntityCollectionsTreeStrategy";
8
+ export class EquiQuadTreeStrategy extends QuadTreeStrategy {
9
+ constructor(planet) {
10
+ super(planet, "Mars", equi);
11
+ this._westExtent = Extent.createFromArray([-180, -90, 0, 90]);
12
+ this._eastExtent = Extent.createFromArray([0, -90, 180, 90]);
13
+ this._visibleNodesWest = {};
14
+ this._visibleNodesEast = {};
15
+ }
16
+ init() {
17
+ this._quadTreeList = [
18
+ new Node(SegmentLonLatEqui, this.planet, 0, null, 0, this._westExtent),
19
+ new Node(SegmentLonLatEqui, this.planet, 0, null, 0, this._eastExtent)
20
+ ];
21
+ }
22
+ getTileXY(lonLat, zoom) {
23
+ let z = zoom, x = -1, y = -1, pz = (1 << z);
24
+ if (lonLat.lon > 0) {
25
+ x = getTileCellIndex(lonLat.lon, 180 / pz, 0) + pz;
26
+ }
27
+ else {
28
+ x = getTileCellIndex(lonLat.lon, 180 / pz, -180);
29
+ }
30
+ y = getTileCellIndex(lonLat.lat, 180 / pz, 90);
31
+ return [x, y, z, TILEGROUP_COMMON];
32
+ }
33
+ getLonLatTileOffset(lonLat, x, y, z, gridSize) {
34
+ let coords = lonLat;
35
+ let extent = new Extent();
36
+ if (lonLat.lon > 0) {
37
+ extent = getTileCellExtent(x - (1 << z), y, z, this._eastExtent);
38
+ }
39
+ else {
40
+ extent = getTileCellExtent(x, y, z, this._westExtent);
41
+ }
42
+ let sizeImgW = extent.getWidth() / (gridSize - 1), sizeImgH = extent.getHeight() / (gridSize - 1);
43
+ let i = gridSize - Math.ceil((coords.lat - extent.southWest.lat) / sizeImgH) - 1, j = Math.floor((coords.lon - extent.southWest.lon) / sizeImgW);
44
+ return [i, j];
45
+ }
46
+ createEntitiCollectionsTreeStrategy(layer, nodeCapacity) {
47
+ return new EquiEntityCollectionsTreeStrategy(layer, nodeCapacity);
48
+ }
49
+ collectVisibleNode(node) {
50
+ let ext = node.segment.getExtent();
51
+ if (ext.southWest.lon < 0) {
52
+ this._visibleNodesWest[node.nodeId] = node;
53
+ }
54
+ else {
55
+ this._visibleNodesEast[node.nodeId] = node;
56
+ }
57
+ }
58
+ _clearVisibleNodes() {
59
+ this._visibleNodesWest = {};
60
+ this._visibleNodesEast = {};
61
+ }
62
+ }
@@ -1,12 +1,12 @@
1
- import { EarthQuadTreeStrategy } from "./EarthQuadTreeStrategy";
2
- import { MarsQuadTreeStrategy } from "./MarsQuadTreeStrategy";
3
- import { EPSG4326QuadTreeStrategy } from "./EPSG4326QuadTreeStrategy";
1
+ import { EarthQuadTreeStrategy } from "./earth/EarthQuadTreeStrategy";
2
+ import { EquiQuadTreeStrategy } from "./equi/EquiQuadTreeStrategy";
3
+ import { EPSG4326QuadTreeStrategy } from "./EPSG4326/EPSG4326QuadTreeStrategy";
4
4
  import { QuadTreeStrategy } from "./QuadTreeStrategy";
5
- import { Wgs84QuadTreeStrategy } from "./Wgs84QuadTreeStrategy";
5
+ import { Wgs84QuadTreeStrategy } from "./wgs84/Wgs84QuadTreeStrategy";
6
6
  declare const quadTreeStrategyType: {
7
7
  epsg4326: typeof EPSG4326QuadTreeStrategy;
8
8
  earth: typeof EarthQuadTreeStrategy;
9
- mars: typeof MarsQuadTreeStrategy;
9
+ equi: typeof EquiQuadTreeStrategy;
10
10
  wgs84: typeof Wgs84QuadTreeStrategy;
11
11
  };
12
- export { quadTreeStrategyType, QuadTreeStrategy, Wgs84QuadTreeStrategy, MarsQuadTreeStrategy, EarthQuadTreeStrategy };
12
+ export { quadTreeStrategyType, QuadTreeStrategy, Wgs84QuadTreeStrategy, EquiQuadTreeStrategy, EarthQuadTreeStrategy };
@@ -1,12 +1,12 @@
1
- import { EarthQuadTreeStrategy } from "./EarthQuadTreeStrategy";
2
- import { MarsQuadTreeStrategy } from "./MarsQuadTreeStrategy";
3
- import { EPSG4326QuadTreeStrategy } from "./EPSG4326QuadTreeStrategy";
1
+ import { EarthQuadTreeStrategy } from "./earth/EarthQuadTreeStrategy";
2
+ import { EquiQuadTreeStrategy } from "./equi/EquiQuadTreeStrategy";
3
+ import { EPSG4326QuadTreeStrategy } from "./EPSG4326/EPSG4326QuadTreeStrategy";
4
4
  import { QuadTreeStrategy } from "./QuadTreeStrategy";
5
- import { Wgs84QuadTreeStrategy } from "./Wgs84QuadTreeStrategy";
5
+ import { Wgs84QuadTreeStrategy } from "./wgs84/Wgs84QuadTreeStrategy";
6
6
  const quadTreeStrategyType = {
7
7
  epsg4326: EPSG4326QuadTreeStrategy,
8
8
  earth: EarthQuadTreeStrategy,
9
- mars: MarsQuadTreeStrategy,
9
+ equi: EquiQuadTreeStrategy,
10
10
  wgs84: Wgs84QuadTreeStrategy
11
11
  };
12
- export { quadTreeStrategyType, QuadTreeStrategy, Wgs84QuadTreeStrategy, MarsQuadTreeStrategy, EarthQuadTreeStrategy };
12
+ export { quadTreeStrategyType, QuadTreeStrategy, Wgs84QuadTreeStrategy, EquiQuadTreeStrategy, EarthQuadTreeStrategy };
@@ -1,5 +1,5 @@
1
- import { Planet } from "../scene/Planet";
2
- import { QuadTreeStrategy } from "./QuadTreeStrategy";
1
+ import { Planet } from "../../scene/Planet";
2
+ import { QuadTreeStrategy } from "../QuadTreeStrategy";
3
3
  export declare class Wgs84QuadTreeStrategy extends QuadTreeStrategy {
4
4
  constructor(planet: Planet);
5
5
  init(): void;
@@ -0,0 +1,15 @@
1
+ import { Extent } from "../../Extent";
2
+ import { EPSG4326 } from "../../proj/EPSG4326";
3
+ import { Node } from "../Node";
4
+ import { SegmentLonLatEqui } from "../../segment/SegmentLonLatEqui";
5
+ import { QuadTreeStrategy } from "../QuadTreeStrategy";
6
+ export class Wgs84QuadTreeStrategy extends QuadTreeStrategy {
7
+ constructor(planet) {
8
+ super(planet, "wgs84", EPSG4326);
9
+ }
10
+ init() {
11
+ this._quadTreeList = [
12
+ new Node(SegmentLonLatEqui, this.planet, 0, null, 0, Extent.createFromArray([-180, -90, 180, 90]))
13
+ ];
14
+ }
15
+ }
@@ -16,6 +16,8 @@ interface IRendererParams {
16
16
  msaa?: number;
17
17
  autoActivate?: boolean;
18
18
  fontsSrc?: string;
19
+ gamma?: number;
20
+ exposure?: number;
19
21
  }
20
22
  interface IPickingObject {
21
23
  _pickingColor?: Vec3;
@@ -130,8 +130,8 @@ class Renderer {
130
130
  };
131
131
  this.div = null;
132
132
  this.handler = handler;
133
- this.exposure = 3.01;
134
- this.gamma = 0.47;
133
+ this.exposure = params.exposure || 3.01;
134
+ this.gamma = params.gamma || 0.47;
135
135
  this.whitepoint = 1.0;
136
136
  this.brightThreshold = 0.9;
137
137
  this._renderNodesArr = [];
@@ -184,33 +184,6 @@ export declare class Planet extends RenderNode {
184
184
  _renderedNodesInFrustum: Node[][];
185
185
  _fadingNodes: Map<number, Node>;
186
186
  _fadingNodesInFrustum: Node[][];
187
- /**
188
- * Current visible mercator segments tree nodes array.
189
- * @public
190
- * @type {Node}
191
- *
192
- * @todo
193
- * _visibleNodes, _visibleNodesNorth and _visibleNodesSouth should
194
- * be replaced to strategy and Vector layer reworked in collecting methods.
195
- * _visibleNodes, and _visibleNodesNorth and South are used in Vector
196
- * layer only, for entity terrain collision
197
- *
198
- */
199
- _visibleNodes: Record<number, Node>;
200
- /**
201
- * Current visible north pole nodes tree nodes array.
202
- * @public
203
- * @type {Node}
204
- * @todo
205
- */
206
- _visibleNodesNorth: Record<number, Node>;
207
- /**
208
- * Current visible south pole nodes tree nodes array.
209
- * @public
210
- * @type {Node}
211
- * @todo
212
- */
213
- _visibleNodesSouth: Record<number, Node>;
214
187
  /**
215
188
  * Layers activity lock.
216
189
  * @public
@@ -6,7 +6,7 @@ import { Atmosphere } from "../control/Atmosphere";
6
6
  import { createColorRGB } from "../utils/shared";
7
7
  import { createEvents } from "../Events";
8
8
  import { decodeFloatFromRGBAArr } from "../math/coder";
9
- import { EarthQuadTreeStrategy } from "../quadTree/EarthQuadTreeStrategy";
9
+ import { EarthQuadTreeStrategy } from "../quadTree/earth/EarthQuadTreeStrategy";
10
10
  import { Extent } from "../Extent";
11
11
  import { Geoid } from "../terrain/Geoid";
12
12
  import { GeoImageCreator } from "../utils/GeoImageCreator";
@@ -108,7 +108,7 @@ export class Planet extends RenderNode {
108
108
  this.transitionTime = 580;
109
109
  this.ellipsoid = options.ellipsoid || wgs84;
110
110
  this.lightEnabled = true;
111
- this._planetRadius2 = this.ellipsoid.getPolarSize() * this.ellipsoid.getPolarSize();
111
+ this._planetRadius2 = (this.ellipsoid.getPolarSize() - 10000.0) * (this.ellipsoid.getPolarSize() - 10000.0);
112
112
  this._layers = [];
113
113
  this._updateLayer = false;
114
114
  this.visibleTileLayers = [];
@@ -142,9 +142,6 @@ export class Planet extends RenderNode {
142
142
  this._renderedNodesInFrustum = [];
143
143
  this._fadingNodes = new Map;
144
144
  this._fadingNodesInFrustum = [];
145
- this._visibleNodes = {};
146
- this._visibleNodesNorth = {};
147
- this._visibleNodesSouth = {};
148
145
  this.layerLock = new Lock();
149
146
  this.terrainLock = new Lock();
150
147
  this._heightFactor = 1.0;
@@ -798,10 +795,6 @@ export class Planet extends RenderNode {
798
795
  this._viewExtent.southWest.set(180, 180);
799
796
  this._viewExtent.northEast.set(-180, -180);
800
797
  // todo: replace to camera
801
- this._visibleNodes = {};
802
- this._visibleNodesNorth = {};
803
- this._visibleNodesSouth = {};
804
- // todo: replace to camera
805
798
  this.minCurrZoom = math.MAX;
806
799
  this.maxCurrZoom = math.MIN;
807
800
  this.quadTreeStrategy.collectRenderNodes();
@@ -277,7 +277,6 @@ declare class Segment {
277
277
  colorPickingRendering(sh: Program, layerSlice: Layer[], sliceIndex: number, defaultTexture?: WebGLTextureExt | null, isOverlay?: boolean): void;
278
278
  depthRendering(sh: Program, layerSlice: Layer[]): void;
279
279
  protected _getIndexBuffer(): WebGLBufferExt;
280
- _collectVisibleNodes(): void;
281
280
  layerOverlap(layer: Layer): boolean;
282
281
  getDefaultTexture(): WebGLTextureExt | null;
283
282
  getExtentLonLat(): Extent;
@@ -1174,9 +1174,6 @@ class Segment {
1174
1174
  }
1175
1175
  return cache.buffer;
1176
1176
  }
1177
- _collectVisibleNodes() {
1178
- this.planet._visibleNodes[this.node.nodeId] = this.node;
1179
- }
1180
1177
  layerOverlap(layer) {
1181
1178
  return this._extent.overlaps(layer._extentMerc);
1182
1179
  }
@@ -25,10 +25,6 @@ declare class SegmentLonLat extends Segment {
25
25
  protected _assignTileYIndexes(extent: Extent): void;
26
26
  protected _projToDeg(lon: number, lat: number): LonLat;
27
27
  protected _assignGlobalTextureCoordinates(): void;
28
- /**
29
- * @todo: replace to the strategy
30
- */
31
- _collectVisibleNodes(): void;
32
28
  /**
33
29
  * @param layer
34
30
  * @protected
@@ -80,17 +80,6 @@ class SegmentLonLat extends Segment {
80
80
  this._globalTextureCoordinates[2] = (e.northEast.lon + 180.0) / 360.0;
81
81
  this._globalTextureCoordinates[3] = (90 - e.southWest.lat) / 180.0;
82
82
  }
83
- /**
84
- * @todo: replace to the strategy
85
- */
86
- _collectVisibleNodes() {
87
- if (this._isNorth) {
88
- this.planet._visibleNodesNorth[this.node.nodeId] = this.node;
89
- }
90
- else {
91
- this.planet._visibleNodesSouth[this.node.nodeId] = this.node;
92
- }
93
- }
94
83
  /**
95
84
  * @param layer
96
85
  * @protected
@@ -2,7 +2,7 @@ import { Extent } from "../Extent";
2
2
  import { Node } from "../quadTree/Node";
3
3
  import { Planet } from "../scene/Planet";
4
4
  import { SegmentLonLat } from "./SegmentLonLat";
5
- export declare class SegmentLonLatWgs84 extends SegmentLonLat {
5
+ export declare class SegmentLonLatEqui extends SegmentLonLat {
6
6
  constructor(node: Node, planet: Planet, tileZoom: number, extent: Extent);
7
7
  protected _getMaxZoom(): number;
8
8
  protected _assignTileYIndexes(extent: Extent): void;
@@ -1,8 +1,10 @@
1
1
  import { SegmentLonLat } from "./SegmentLonLat";
2
2
  import { getTileCellIndex, TILEGROUP_COMMON } from "./Segment";
3
- export class SegmentLonLatWgs84 extends SegmentLonLat {
3
+ import { equi } from "../proj/equi";
4
+ export class SegmentLonLatEqui extends SegmentLonLat {
4
5
  constructor(node, planet, tileZoom, extent) {
5
6
  super(node, planet, tileZoom, extent);
7
+ this._projection = equi;
6
8
  this.isPole = false;
7
9
  this._tileGroup = TILEGROUP_COMMON;
8
10
  }
@@ -24,6 +24,7 @@ export const geo_object = () => new Program("geo_object", {
24
24
  aPositionLow: { type: "vec3", divisor: 1 },
25
25
  aColor: { type: "vec4", divisor: 1 },
26
26
  aScale: { type: "vec3", divisor: 1 },
27
+ aTranslate: { type: "vec3", divisor: 1 },
27
28
  aDispose: { type: "float", divisor: 1 },
28
29
  qRot: { type: "vec4", divisor: 1 }
29
30
  },
@@ -35,6 +36,7 @@ export const geo_object = () => new Program("geo_object", {
35
36
  attribute vec3 aPositionLow;
36
37
  attribute vec4 aColor;
37
38
  attribute vec3 aScale;
39
+ attribute vec3 aTranslate;
38
40
  attribute float aDispose;
39
41
  attribute float aUseTexture;
40
42
  attribute vec2 aTexCoord;
@@ -91,7 +93,7 @@ export const geo_object = () => new Program("geo_object", {
91
93
  // use scaleByDistance: [1.0, 1.0, 1.0] for real sized objects
92
94
  float scd = uScaleByDistance[2] * clamp(lookLength, uScaleByDistance[0], uScaleByDistance[1]) / uScaleByDistance[0];
93
95
 
94
- vec3 vert = qRotate(qRot, (aVertexPosition * aScale)) * scd;
96
+ vec3 vert = qRotate(qRot, scd * (aVertexPosition * aScale + aTranslate));
95
97
 
96
98
  vert += lowDiff;
97
99
 
@@ -146,7 +148,7 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
146
148
  uScaleByDistance: "vec3",
147
149
  eyePositionHigh: "vec3",
148
150
  eyePositionLow: "vec3",
149
- pickingScale: "float"
151
+ pickingScale: "vec3"
150
152
  },
151
153
  attributes: {
152
154
  aVertexPosition: "vec3",
@@ -154,6 +156,7 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
154
156
  aPositionLow: { type: "vec3", divisor: 1 },
155
157
  aPickingColor: { type: "vec3", divisor: 1 },
156
158
  aScale: { type: "vec3", divisor: 1 },
159
+ aTranslate: { type: "vec3", divisor: 1 },
157
160
  aDispose: { type: "float", divisor: 1 },
158
161
  qRot: { type: "vec4", divisor: 1 }
159
162
  },
@@ -164,6 +167,7 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
164
167
  attribute vec3 aPositionLow;
165
168
  attribute vec3 aPickingColor;
166
169
  attribute vec3 aScale;
170
+ attribute vec3 aTranslate;
167
171
  attribute float aDispose;
168
172
  attribute vec4 qRot;
169
173
 
@@ -172,7 +176,7 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
172
176
  uniform vec3 uScaleByDistance;
173
177
  uniform mat4 projectionMatrix;
174
178
  uniform mat4 viewMatrix;
175
- uniform float pickingScale;
179
+ uniform vec3 pickingScale;
176
180
 
177
181
  varying vec3 vColor;
178
182
 
@@ -210,9 +214,10 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
210
214
  // @hack
211
215
  // pickingScale replace to this line, because when it s
212
216
  // tays in the vert above it affects on Mac Safari jitter
213
- float scd = pickingScale * uScaleByDistance[2] * clamp(lookLength, uScaleByDistance[0], uScaleByDistance[1]) / uScaleByDistance[0];
217
+ float scd = uScaleByDistance[2] * clamp(lookLength, uScaleByDistance[0], uScaleByDistance[1]) / uScaleByDistance[0];
214
218
 
215
- vec3 vert = qRotate(qRot, (aVertexPosition * aScale)) * scd;
219
+ //vec3 vert = qRotate(qRot, (aVertexPosition * aScale + aTranslate) * pickingScale) * scd;
220
+ vec3 vert = qRotate(qRot, scd * pickingScale * (aVertexPosition * aScale + aTranslate));
216
221
 
217
222
  vert += lowDiff;
218
223
 
@@ -7,7 +7,7 @@ export function polyline_screen() {
7
7
  view: "mat4",
8
8
  eyePositionHigh: "vec3",
9
9
  eyePositionLow: "vec3",
10
- uFloatParams: "vec2",
10
+ //uFloatParams: "vec2",
11
11
  thickness: "float",
12
12
  opacity: "float",
13
13
  depthOffset: "float"
@@ -161,14 +161,15 @@ export function polyline_screen() {
161
161
  gl_Position = vec4((2.0 * m / viewport - 1.0) * dCurrent.w, dCurrent.z + depthOffset, dCurrent.w);
162
162
  }`,
163
163
  fragmentShader: `precision highp float;
164
- uniform vec2 uFloatParams;
164
+ //uniform vec2 uFloatParams;
165
165
  varying vec3 uCamPos;
166
166
  varying vec4 vColor;
167
167
  varying vec3 vPos;
168
168
  void main() {
169
169
  vec3 look = vPos - uCamPos;
170
170
  float lookLength = length(look);
171
- float a = vColor.a * step(lookLength, sqrt(dot(uCamPos,uCamPos) - uFloatParams[0]) + sqrt(dot(vPos,vPos) - uFloatParams[0]));
171
+ //float a = vColor.a * step(lookLength, sqrt(dot(uCamPos,uCamPos) - uFloatParams[0]) + sqrt(dot(vPos,vPos) - uFloatParams[0]));
172
+ float a = vColor.a;
172
173
  gl_FragColor = vec4(vColor.rgb, a);
173
174
  }`
174
175
  });
@@ -181,7 +182,7 @@ export function polyline_picking() {
181
182
  view: "mat4",
182
183
  eyePositionHigh: "vec3",
183
184
  eyePositionLow: "vec3",
184
- uFloatParams: "vec2",
185
+ //uFloatParams: "vec2",
185
186
  color: "vec4",
186
187
  thickness: "float",
187
188
  depthOffset: "float"
@@ -331,14 +332,15 @@ export function polyline_picking() {
331
332
  gl_Position = vec4((2.0 * m / viewport - 1.0) * dCurrent.w, dCurrent.z + depthOffset, dCurrent.w);
332
333
  }`,
333
334
  fragmentShader: `precision highp float;
334
- uniform vec2 uFloatParams;
335
+ //uniform vec2 uFloatParams;
335
336
  varying vec3 uCamPos;
336
337
  varying vec4 vColor;
337
338
  varying vec3 vPos;
338
339
  void main() {
339
340
  vec3 look = vPos - uCamPos;
340
341
  float lookLength = length(look);
341
- float a = vColor.a * step(lookLength, sqrt(dot(uCamPos,uCamPos) - uFloatParams[0]) + sqrt(dot(vPos,vPos) - uFloatParams[0]));
342
+ //float a = vColor.a * step(lookLength, sqrt(dot(uCamPos,uCamPos) - uFloatParams[0]) + sqrt(dot(vPos,vPos) - uFloatParams[0]));
343
+ float a = vColor.a;
342
344
  gl_FragColor = vec4(vColor.rgb, a);
343
345
  }`
344
346
  });
@@ -7,16 +7,36 @@ export interface IRgbTerrainParams extends IGlobusTerrainParams {
7
7
  equalizeNormals?: boolean;
8
8
  key?: string;
9
9
  imageSize?: number;
10
+ minHeight?: number;
11
+ resolution?: number;
10
12
  }
13
+ /**
14
+ * @class
15
+ * @extends {GlobusTerrain}
16
+ * @param {string} [name=""] - Terrain provider name.
17
+ * @param {IRgbTerrainParams} [options]:
18
+ * @param {boolean} [equalizeNormals=true] - Make normal equalization on the edges of the tiles.
19
+ * @param {string} [key=""] - API key.
20
+ * @param {number} [imageSize=256] - Image size.
21
+ * @param {number} [minHeight=-10000] - Minimal height for rgb to height converter.
22
+ * @param {number} [resolution=0.1] - Height converter resolution.
23
+ */
11
24
  declare class RgbTerrain extends GlobusTerrain {
12
25
  protected _imageSize: number;
13
26
  protected _ctx: CanvasRenderingContext2D;
14
27
  protected _imageDataCache: Record<string, Uint8ClampedArray>;
28
+ protected _minHeight: number;
29
+ protected _resolution: number;
15
30
  constructor(name: string | null, options?: IRgbTerrainParams);
16
31
  static checkNoDataValue(noDataValues: number[] | TypedArray, value: number): boolean;
32
+ rgb2Height(r: number, g: number, b: number): number;
17
33
  isBlur(segment: Segment): boolean;
18
34
  protected _createTemporalCanvas(size: number): CanvasRenderingContext2D;
19
35
  protected _createHeights(data: HTMLImageElement | ImageBitmap, segment: Segment | null, tileGroup: number, tileX: number, tileY: number, tileZoom: number, extent: Extent, preventChildren: boolean): TypedArray | number[];
20
36
  getHeightAsync(lonLat: LonLat, callback: (h: number) => void, zoom?: number): boolean;
37
+ extractElevationSimple(rgbaData: number[] | TypedArray, noDataValues: number[] | TypedArray, availableParentData: (TypedArray | number[] | null) | undefined, availableParentOffsetX: number, availableParentOffsetY: number, availableZoomDiff: number, skipPositiveHeights: boolean, outCurrenElevations: number[] | TypedArray, heightFactor: number | undefined, imageSize: number): void;
38
+ extractElevationTilesRgbNonPowerOfTwo(rgbaData: number[] | TypedArray, outCurrenElevations: number[] | TypedArray, heightFactor?: number): void;
39
+ extractElevationTilesRgb(rgbaData: number[] | TypedArray, heightFactor: number, noDataValues: number[] | TypedArray, availableParentData: (TypedArray | number[] | null) | undefined, availableParentTileX: number, availableParentTileY: number, availableParentTileZoom: number, currentTileX: number, currentTileY: number, currentTileZoom: number, skipPositiveHeights: boolean, outCurrenElevations: number[] | TypedArray, outChildrenElevations: number[][][] | TypedArray[][]): void;
40
+ extractElevationTilesRgbNoChildren(rgbaData: number[] | TypedArray, heightFactor: number, noDataValues: number[] | TypedArray, availableParentData: (TypedArray | number[] | null) | undefined, availableParentTileX: number, availableParentTileY: number, availableParentTileZoom: number, currentTileX: number, currentTileY: number, currentTileZoom: number, skipPositiveHeights: boolean, outCurrenElevations: number[] | TypedArray): void;
21
41
  }
22
42
  export { RgbTerrain };