@openglobus/og 0.11.6 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/og.css +5 -2
- package/package.json +12 -12
- package/src/og/Globe.js +25 -10
- package/src/og/Popup.js +3 -2
- package/src/og/camera/Camera.js +70 -79
- package/src/og/camera/PlanetCamera.js +33 -33
- package/src/og/control/DebugInfo.js +2 -2
- package/src/og/control/EarthNavigation.js +26 -17
- package/src/og/control/Lighting.js +74 -64
- package/src/og/control/MouseNavigation.js +30 -29
- package/src/og/control/MouseWheelZoomControl.js +257 -0
- package/src/og/control/Sun.js +3 -3
- package/src/og/control/index.js +2 -0
- package/src/og/control/visibleExtent/Segment.js +1862 -0
- package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
- package/src/og/control/visibleExtent/drawnode.js +751 -0
- package/src/og/ellipsoid/Ellipsoid.js +1 -1
- package/src/og/entity/BaseBillboard.js +67 -76
- package/src/og/entity/BillboardHandler.js +15 -8
- package/src/og/entity/Entity.js +742 -742
- package/src/og/entity/GeoObjectHandler.js +102 -117
- package/src/og/entity/Label.js +45 -48
- package/src/og/entity/LabelHandler.js +24 -23
- package/src/og/entity/LabelWorker.js +21 -16
- package/src/og/layer/CanvasTiles.js +8 -12
- package/src/og/layer/GeoImage.js +2 -10
- package/src/og/layer/GeoTexture2d.js +2 -10
- package/src/og/layer/GeoVideo.js +2 -10
- package/src/og/layer/Layer.js +23 -32
- package/src/og/layer/Material.js +1 -1
- package/src/og/layer/WMS.js +0 -2
- package/src/og/layer/XYZ.js +31 -33
- package/src/og/math/Vec3.js +18 -2
- package/src/og/quadTree/Node.js +52 -111
- package/src/og/quadTree/quadTree.js +1 -1
- package/src/og/renderer/Renderer.js +85 -122
- package/src/og/renderer/RendererEvents.js +44 -22
- package/src/og/scene/Planet.js +179 -198
- package/src/og/segment/Segment.js +99 -268
- package/src/og/segment/Slice.js +45 -0
- package/src/og/shaders/drawnode.js +174 -360
- package/src/og/shaders/toneMapping.js +1 -0
- package/src/og/shapes/BaseShape.js +1 -1
- package/src/og/terrain/EmptyTerrain.js +3 -2
- package/src/og/terrain/GlobusTerrain.js +2 -0
- package/src/og/utils/FontAtlas.js +6 -2
- package/src/og/utils/GeoImageCreator.js +5 -1
- package/src/og/utils/Loader.js +1 -1
- package/src/og/utils/PlainSegmentWorker.js +0 -13
- package/src/og/utils/TextureAtlas.js +2 -2
- package/src/og/utils/VectorTileCreator.js +1 -3
- package/src/og/utils/shared.js +1 -1
- package/src/og/webgl/Handler.js +156 -118
- package/types/Clock.d.ts +0 -94
- package/types/Deferred.d.ts +0 -6
- package/types/Events.d.ts +0 -77
- package/types/Extent.d.ts +0 -166
- package/types/Globe.d.ts +0 -82
- package/types/ImageCanvas.d.ts +0 -123
- package/types/Lock.d.ts +0 -12
- package/types/LonLat.d.ts +0 -108
- package/types/Popup.d.ts +0 -42
- package/types/QueueArray.d.ts +0 -19
- package/types/Rectangle.d.ts +0 -80
- package/types/Stack.d.ts +0 -19
- package/types/ajax.d.ts +0 -24
- package/types/arial.d.ts +0 -48
- package/types/astro/astro.d.ts +0 -38
- package/types/astro/earth.d.ts +0 -7
- package/types/astro/jd.d.ts +0 -254
- package/types/bv/Box.d.ts +0 -30
- package/types/bv/Sphere.d.ts +0 -38
- package/types/bv/index.d.ts +0 -3
- package/types/camera/Camera.d.ts +0 -312
- package/types/camera/Frustum.d.ts +0 -133
- package/types/camera/PlanetCamera.d.ts +0 -218
- package/types/camera/index.d.ts +0 -3
- package/types/cons.d.ts +0 -40
- package/types/control/CompassButton.d.ts +0 -17
- package/types/control/Control.d.ts +0 -104
- package/types/control/DebugInfo.d.ts +0 -15
- package/types/control/EarthCoordinates.d.ts +0 -47
- package/types/control/EarthNavigation.d.ts +0 -42
- package/types/control/GeoImageDragControl.d.ts +0 -6
- package/types/control/KeyboardNavigation.d.ts +0 -21
- package/types/control/LayerSwitcher.d.ts +0 -21
- package/types/control/Lighting.d.ts +0 -16
- package/types/control/MouseNavigation.d.ts +0 -47
- package/types/control/ScaleControl.d.ts +0 -22
- package/types/control/ShowFps.d.ts +0 -11
- package/types/control/SimpleNavigation.d.ts +0 -25
- package/types/control/Sun.d.ts +0 -50
- package/types/control/ToggleWireframe.d.ts +0 -12
- package/types/control/TouchNavigation.d.ts +0 -48
- package/types/control/ZoomControl.d.ts +0 -27
- package/types/control/index.d.ts +0 -17
- package/types/ellipsoid/Ellipsoid.d.ts +0 -146
- package/types/ellipsoid/index.d.ts +0 -3
- package/types/ellipsoid/wgs84.d.ts +0 -6
- package/types/entity/BaseBillboard.d.ts +0 -215
- package/types/entity/Billboard.d.ts +0 -94
- package/types/entity/BillboardHandler.d.ts +0 -78
- package/types/entity/Entity.d.ts +0 -348
- package/types/entity/EntityCollection.d.ts +0 -317
- package/types/entity/GeoObject.d.ts +0 -111
- package/types/entity/GeoObjectHandler.d.ts +0 -77
- package/types/entity/Geometry.d.ts +0 -74
- package/types/entity/GeometryHandler.d.ts +0 -76
- package/types/entity/Label.d.ts +0 -189
- package/types/entity/LabelHandler.d.ts +0 -31
- package/types/entity/LabelWorker.d.ts +0 -9
- package/types/entity/PointCloud.d.ts +0 -174
- package/types/entity/PointCloudHandler.d.ts +0 -38
- package/types/entity/Polyline.d.ts +0 -306
- package/types/entity/PolylineHandler.d.ts +0 -18
- package/types/entity/Ray.d.ts +0 -124
- package/types/entity/RayHandler.d.ts +0 -67
- package/types/entity/ShapeHandler.d.ts +0 -22
- package/types/entity/Strip.d.ts +0 -119
- package/types/entity/StripHandler.d.ts +0 -38
- package/types/entity/index.d.ts +0 -8
- package/types/index.core.d.ts +0 -65
- package/types/index.d.ts +0 -45
- package/types/index.webgl.d.ts +0 -7
- package/types/input/KeyboardHandler.d.ts +0 -10
- package/types/input/MouseHandler.d.ts +0 -5
- package/types/input/TouchHandler.d.ts +0 -5
- package/types/input/input.d.ts +0 -34
- package/types/layer/BaseGeoImage.d.ts +0 -94
- package/types/layer/CanvasTiles.d.ts +0 -68
- package/types/layer/GeoImage.d.ts +0 -52
- package/types/layer/GeoTexture2d.d.ts +0 -8
- package/types/layer/GeoVideo.d.ts +0 -55
- package/types/layer/KML.d.ts +0 -63
- package/types/layer/Layer.d.ts +0 -326
- package/types/layer/Material.d.ts +0 -45
- package/types/layer/Vector.d.ts +0 -208
- package/types/layer/WMS.d.ts +0 -63
- package/types/layer/XYZ.d.ts +0 -120
- package/types/layer/index.d.ts +0 -10
- package/types/light/LightSource.d.ts +0 -178
- package/types/math/Line2.d.ts +0 -11
- package/types/math/Line3.d.ts +0 -10
- package/types/math/Mat3.d.ts +0 -65
- package/types/math/Mat4.d.ts +0 -176
- package/types/math/Plane.d.ts +0 -18
- package/types/math/Quat.d.ts +0 -379
- package/types/math/Ray.d.ts +0 -82
- package/types/math/Vec2.d.ts +0 -309
- package/types/math/Vec3.d.ts +0 -460
- package/types/math/Vec4.d.ts +0 -162
- package/types/math/coder.d.ts +0 -43
- package/types/math/index.d.ts +0 -11
- package/types/math.d.ts +0 -261
- package/types/mercator.d.ts +0 -92
- package/types/proj/EPSG3857.d.ts +0 -6
- package/types/proj/EPSG4326.d.ts +0 -6
- package/types/proj/Proj.d.ts +0 -42
- package/types/quadTree/EntityCollectionNode.d.ts +0 -34
- package/types/quadTree/Node.d.ts +0 -61
- package/types/quadTree/quadTree.d.ts +0 -40
- package/types/renderer/Renderer.d.ts +0 -300
- package/types/renderer/RendererEvents.d.ts +0 -233
- package/types/res/images.d.ts +0 -3
- package/types/scene/Axes.d.ts +0 -11
- package/types/scene/BaseNode.d.ts +0 -60
- package/types/scene/Planet.d.ts +0 -577
- package/types/scene/RenderNode.d.ts +0 -142
- package/types/scene/SkyBox.d.ts +0 -10
- package/types/scene/index.d.ts +0 -4
- package/types/segment/Segment.d.ts +0 -279
- package/types/segment/SegmentLonLat.d.ts +0 -16
- package/types/segment/segmentHelper.d.ts +0 -13
- package/types/shaders/billboard.d.ts +0 -3
- package/types/shaders/depth.d.ts +0 -2
- package/types/shaders/drawnode.d.ts +0 -7
- package/types/shaders/geoObject.d.ts +0 -3
- package/types/shaders/label.d.ts +0 -4
- package/types/shaders/pointCloud.d.ts +0 -2
- package/types/shaders/polyline.d.ts +0 -3
- package/types/shaders/ray.d.ts +0 -2
- package/types/shaders/screenFrame.d.ts +0 -2
- package/types/shaders/shape.d.ts +0 -4
- package/types/shaders/skybox.d.ts +0 -2
- package/types/shaders/toneMapping.d.ts +0 -2
- package/types/shapes/BaseShape.d.ts +0 -250
- package/types/shapes/Sphere.d.ts +0 -41
- package/types/terrain/BilTerrain.d.ts +0 -7
- package/types/terrain/EmptyTerrain.d.ts +0 -72
- package/types/terrain/Geoid.d.ts +0 -26
- package/types/terrain/GlobusTerrain.d.ts +0 -116
- package/types/terrain/MapboxTerrain.d.ts +0 -7
- package/types/terrain/index.d.ts +0 -5
- package/types/utils/FontAtlas.d.ts +0 -14
- package/types/utils/GeoImageCreator.d.ts +0 -30
- package/types/utils/ImagesCacheManager.d.ts +0 -10
- package/types/utils/Loader.d.ts +0 -25
- package/types/utils/NormalMapCreator.d.ts +0 -39
- package/types/utils/PlainSegmentWorker.d.ts +0 -10
- package/types/utils/TerrainWorker.d.ts +0 -9
- package/types/utils/TextureAtlas.d.ts +0 -111
- package/types/utils/VectorTileCreator.d.ts +0 -16
- package/types/utils/colorTable.d.ts +0 -143
- package/types/utils/earcut.d.ts +0 -6
- package/types/utils/shared.d.ts +0 -231
- package/types/webgl/Framebuffer.d.ts +0 -135
- package/types/webgl/Handler.d.ts +0 -397
- package/types/webgl/Multisample.d.ts +0 -89
- package/types/webgl/Program.d.ts +0 -161
- package/types/webgl/ProgramController.d.ts +0 -89
- package/types/webgl/callbacks.d.ts +0 -1
- package/types/webgl/index.d.ts +0 -6
- package/types/webgl/types.d.ts +0 -2
package/src/og/quadTree/Node.js
CHANGED
|
@@ -7,7 +7,6 @@ import { Vec3 } from "../math/Vec3.js";
|
|
|
7
7
|
import { MAX_LAT } from "../mercator.js";
|
|
8
8
|
import { EPSG3857 } from "../proj/EPSG3857.js";
|
|
9
9
|
import { EPSG4326 } from "../proj/EPSG4326.js";
|
|
10
|
-
import { MAX_NORMAL_ZOOM } from "../segment/Segment.js";
|
|
11
10
|
import { getMatrixSubArray, getMatrixSubArrayBoundsExt } from "../utils/shared.js";
|
|
12
11
|
import {
|
|
13
12
|
COMSIDE,
|
|
@@ -30,8 +29,6 @@ import {
|
|
|
30
29
|
WALKTHROUGH
|
|
31
30
|
} from "./quadTree.js";
|
|
32
31
|
|
|
33
|
-
const VISIBLE_HEIGHT = 1400000.0;
|
|
34
|
-
|
|
35
32
|
let _tempHigh = new Vec3(),
|
|
36
33
|
_tempLow = new Vec3();
|
|
37
34
|
|
|
@@ -64,8 +61,10 @@ let BOUNDS = {
|
|
|
64
61
|
* @param {Extent} extent - Planet segment extent.
|
|
65
62
|
*/
|
|
66
63
|
class Node {
|
|
64
|
+
|
|
67
65
|
constructor(SegmentPrototype, planet, partId, parent, id, tileZoom, extent) {
|
|
68
66
|
this.SegmentPrototype = SegmentPrototype;
|
|
67
|
+
planet._createdNodesCount++;
|
|
69
68
|
this.planet = planet;
|
|
70
69
|
this.parentNode = parent;
|
|
71
70
|
this.partId = partId;
|
|
@@ -83,7 +82,6 @@ class Node {
|
|
|
83
82
|
this._cameraInside = false;
|
|
84
83
|
this.inFrustum = 0;
|
|
85
84
|
this.createBounds();
|
|
86
|
-
this.planet._createdNodesCount++;
|
|
87
85
|
}
|
|
88
86
|
|
|
89
87
|
createChildrenNodes() {
|
|
@@ -101,45 +99,10 @@ class Node {
|
|
|
101
99
|
var c = new LonLat(sw.lon + size_x, sw.lat + size_y);
|
|
102
100
|
var nd = this.nodes;
|
|
103
101
|
|
|
104
|
-
nd[NW] = new Node(
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
this,
|
|
109
|
-
id,
|
|
110
|
-
z,
|
|
111
|
-
new Extent(new LonLat(sw.lon, sw.lat + size_y), new LonLat(sw.lon + size_x, ne.lat))
|
|
112
|
-
);
|
|
113
|
-
|
|
114
|
-
nd[NE] = new Node(
|
|
115
|
-
this.SegmentPrototype,
|
|
116
|
-
p,
|
|
117
|
-
NE,
|
|
118
|
-
this,
|
|
119
|
-
id,
|
|
120
|
-
z,
|
|
121
|
-
new Extent(c, new LonLat(ne.lon, ne.lat))
|
|
122
|
-
);
|
|
123
|
-
|
|
124
|
-
nd[SW] = new Node(
|
|
125
|
-
this.SegmentPrototype,
|
|
126
|
-
p,
|
|
127
|
-
SW,
|
|
128
|
-
this,
|
|
129
|
-
id,
|
|
130
|
-
z,
|
|
131
|
-
new Extent(new LonLat(sw.lon, sw.lat), c)
|
|
132
|
-
);
|
|
133
|
-
|
|
134
|
-
nd[SE] = new Node(
|
|
135
|
-
this.SegmentPrototype,
|
|
136
|
-
p,
|
|
137
|
-
SE,
|
|
138
|
-
this,
|
|
139
|
-
id,
|
|
140
|
-
z,
|
|
141
|
-
new Extent(new LonLat(sw.lon + size_x, sw.lat), new LonLat(ne.lon, sw.lat + size_y))
|
|
142
|
-
);
|
|
102
|
+
nd[NW] = new Node(this.SegmentPrototype, p, NW, this, id, z, new Extent(new LonLat(sw.lon, sw.lat + size_y), new LonLat(sw.lon + size_x, ne.lat)));
|
|
103
|
+
nd[NE] = new Node(this.SegmentPrototype, p, NE, this, id, z, new Extent(c, new LonLat(ne.lon, ne.lat)));
|
|
104
|
+
nd[SW] = new Node(this.SegmentPrototype, p, SW, this, id, z, new Extent(new LonLat(sw.lon, sw.lat), c));
|
|
105
|
+
nd[SE] = new Node(this.SegmentPrototype, p, SE, this, id, z, new Extent(new LonLat(sw.lon + size_x, sw.lat), new LonLat(ne.lon, sw.lat + size_y)));
|
|
143
106
|
}
|
|
144
107
|
|
|
145
108
|
createBounds() {
|
|
@@ -152,6 +115,15 @@ class Node {
|
|
|
152
115
|
} else {
|
|
153
116
|
seg.createBoundsByParent();
|
|
154
117
|
}
|
|
118
|
+
|
|
119
|
+
let x = seg.bsphere.center.x,
|
|
120
|
+
y = seg.bsphere.center.y,
|
|
121
|
+
z = seg.bsphere.center.z;
|
|
122
|
+
|
|
123
|
+
let length = 1.0 / Math.sqrt(x * x + y * y + z * z);
|
|
124
|
+
seg.centerNormal.x = x * length;
|
|
125
|
+
seg.centerNormal.y = y * length;
|
|
126
|
+
seg.centerNormal.z = z * length;
|
|
155
127
|
}
|
|
156
128
|
|
|
157
129
|
getState() {
|
|
@@ -203,15 +175,10 @@ class Node {
|
|
|
203
175
|
}
|
|
204
176
|
|
|
205
177
|
renderTree(cam, maxZoom, terrainReadySegment, stopLoading) {
|
|
206
|
-
if (
|
|
207
|
-
this.planet._renderedNodes.length >= MAX_RENDERED_NODES ||
|
|
208
|
-
this.planet._nodeCounterError_ > 2000
|
|
209
|
-
) {
|
|
178
|
+
if (this.planet._renderedNodes.length >= MAX_RENDERED_NODES) {
|
|
210
179
|
return;
|
|
211
180
|
}
|
|
212
181
|
|
|
213
|
-
this.planet._nodeCounterError_++;
|
|
214
|
-
|
|
215
182
|
this.state = WALKTHROUGH;
|
|
216
183
|
|
|
217
184
|
this.neighbors[0] = null;
|
|
@@ -281,39 +248,49 @@ class Node {
|
|
|
281
248
|
if (this.inFrustum || this._cameraInside || seg.tileZoom < 3) {
|
|
282
249
|
let h = cam._lonLat.height;
|
|
283
250
|
|
|
284
|
-
let
|
|
285
|
-
|
|
286
|
-
|
|
251
|
+
let eye = cam.eye;
|
|
252
|
+
let horizonDist = eye.length2() - this.planet.ellipsoid._b2;
|
|
253
|
+
|
|
254
|
+
let altVis = seg.tileZoom > 19 ||
|
|
287
255
|
(seg.tileZoom < 4 && !seg.terrainReady) ||
|
|
288
256
|
seg.tileZoom < 2;
|
|
289
257
|
|
|
258
|
+
if (h > 21000) {
|
|
259
|
+
altVis = altVis || eye.distance2(seg._sw) < horizonDist
|
|
260
|
+
|| eye.distance2(seg._nw) < horizonDist
|
|
261
|
+
|| eye.distance2(seg._ne) < horizonDist
|
|
262
|
+
|| eye.distance2(seg._se) < horizonDist;
|
|
263
|
+
} else {
|
|
264
|
+
altVis = altVis || cam.eye.distance(seg.bsphere.center) - seg.bsphere.radius < VISIBLE_DISTANCE * Math.sqrt(h);
|
|
265
|
+
}
|
|
266
|
+
|
|
290
267
|
if ((this.inFrustum && (altVis || h > 10000.0)) || this._cameraInside) {
|
|
291
268
|
seg._collectVisibleNodes();
|
|
292
269
|
}
|
|
293
270
|
|
|
294
271
|
if (seg.tileZoom < 2 && seg.normalMapReady) {
|
|
295
272
|
this.traverseNodes(cam, maxZoom, terrainReadySegment, stopLoading);
|
|
296
|
-
} else if (
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
stopLoading
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
273
|
+
} else if (seg.terrainReady && (
|
|
274
|
+
!maxZoom && cam.projectedSize(seg.bsphere.center, seg._plainRadius) < planet._lodSize ||
|
|
275
|
+
maxZoom && ((seg.tileZoom === maxZoom) || !altVis))) {
|
|
276
|
+
|
|
277
|
+
if (altVis) {
|
|
278
|
+
seg.passReady = true;
|
|
279
|
+
this.renderNode(this.inFrustum, !this.inFrustum, terrainReadySegment, stopLoading);
|
|
280
|
+
} else {
|
|
281
|
+
this.state = NOTRENDERING;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
} else if (
|
|
285
|
+
seg.terrainReady &&
|
|
286
|
+
seg.tileZoom < planet.terrain._maxNodeZoom &&
|
|
287
|
+
(!maxZoom || maxZoom && cam.projectedSize(seg.bsphere.center, seg.bsphere.radius) > this.planet._maxLodSize)) {
|
|
308
288
|
this.traverseNodes(cam, maxZoom, seg, stopLoading);
|
|
289
|
+
} else if (altVis) {
|
|
290
|
+
seg.passReady = maxZoom ? seg.terrainReady : false;
|
|
291
|
+
this.renderNode(this.inFrustum, !this.inFrustum, terrainReadySegment, stopLoading);
|
|
309
292
|
} else {
|
|
310
|
-
this.
|
|
311
|
-
cam,
|
|
312
|
-
altVis,
|
|
313
|
-
this.inFrustum,
|
|
314
|
-
terrainReadySegment,
|
|
315
|
-
stopLoading
|
|
316
|
-
);
|
|
293
|
+
this.state = NOTRENDERING;
|
|
317
294
|
}
|
|
318
295
|
} else {
|
|
319
296
|
this.state = NOTRENDERING;
|
|
@@ -333,33 +310,6 @@ class Node {
|
|
|
333
310
|
n[3].renderTree(cam, maxZoom, terrainReadySegment, stopLoading);
|
|
334
311
|
}
|
|
335
312
|
|
|
336
|
-
prepareForRendering(cam, altVis, inFrustum, terrainReadySegment, stopLoading) {
|
|
337
|
-
let seg = this.segment;
|
|
338
|
-
|
|
339
|
-
if (cam._lonLat.height < VISIBLE_HEIGHT) {
|
|
340
|
-
if (altVis) {
|
|
341
|
-
this.renderNode(inFrustum, !inFrustum, terrainReadySegment, stopLoading);
|
|
342
|
-
} else {
|
|
343
|
-
this.state = NOTRENDERING;
|
|
344
|
-
}
|
|
345
|
-
} else {
|
|
346
|
-
if (seg.tileZoom < 2) {
|
|
347
|
-
this.renderNode(inFrustum, !inFrustum, terrainReadySegment, stopLoading);
|
|
348
|
-
} else if (seg.tileZoom > MAX_NORMAL_ZOOM) {
|
|
349
|
-
this.renderNode(inFrustum, !inFrustum, terrainReadySegment, stopLoading);
|
|
350
|
-
} else if (
|
|
351
|
-
seg._swNorm.dot(cam._n) > 0.0 ||
|
|
352
|
-
seg._nwNorm.dot(cam._n) > 0.0 ||
|
|
353
|
-
seg._neNorm.dot(cam._n) > 0.0 ||
|
|
354
|
-
seg._seNorm.dot(cam._n) > 0.0
|
|
355
|
-
) {
|
|
356
|
-
this.renderNode(inFrustum, !inFrustum, terrainReadySegment, stopLoading);
|
|
357
|
-
} else {
|
|
358
|
-
this.state = NOTRENDERING;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
313
|
renderNode(inFrustum, onlyTerrain, terrainReadySegment, stopLoading) {
|
|
364
314
|
var seg = this.segment;
|
|
365
315
|
|
|
@@ -381,7 +331,7 @@ class Node {
|
|
|
381
331
|
}
|
|
382
332
|
|
|
383
333
|
// Create normal map texture
|
|
384
|
-
if (seg.planet.lightEnabled && !seg.normalMapReady
|
|
334
|
+
if (seg.planet.lightEnabled && !seg.normalMapReady /*&& !seg.parentNormalMapReady*/) {
|
|
385
335
|
this.whileNormalMapCreating();
|
|
386
336
|
}
|
|
387
337
|
|
|
@@ -774,16 +724,8 @@ class Node {
|
|
|
774
724
|
let v_lt = new Vec3(bigOne[0], bigOne[1], bigOne[2]),
|
|
775
725
|
v_rb = new Vec3(bigOne[9], bigOne[10], bigOne[11]);
|
|
776
726
|
|
|
777
|
-
let vn = new Vec3(
|
|
778
|
-
|
|
779
|
-
bigOne[4] - bigOne[1],
|
|
780
|
-
bigOne[5] - bigOne[2]
|
|
781
|
-
),
|
|
782
|
-
vw = new Vec3(
|
|
783
|
-
bigOne[6] - bigOne[0],
|
|
784
|
-
bigOne[7] - bigOne[1],
|
|
785
|
-
bigOne[8] - bigOne[2]
|
|
786
|
-
),
|
|
727
|
+
let vn = new Vec3(bigOne[3] - bigOne[0], bigOne[4] - bigOne[1], bigOne[5] - bigOne[2]),
|
|
728
|
+
vw = new Vec3(bigOne[6] - bigOne[0], bigOne[7] - bigOne[1], bigOne[8] - bigOne[2]),
|
|
787
729
|
ve = new Vec3(
|
|
788
730
|
bigOne[3] - bigOne[9],
|
|
789
731
|
bigOne[4] - bigOne[10],
|
|
@@ -996,8 +938,7 @@ class Node {
|
|
|
996
938
|
offset = 0;
|
|
997
939
|
|
|
998
940
|
while (pNode.segment.tileZoom > neighbourZoom) {
|
|
999
|
-
offset +=
|
|
1000
|
-
PARTOFFSET[pNode.partId][side] / (1 << (pNode.segment.tileZoom - neighbourZoom));
|
|
941
|
+
offset += PARTOFFSET[pNode.partId][side] / (1 << (pNode.segment.tileZoom - neighbourZoom));
|
|
1001
942
|
pNode = pNode.parentNode;
|
|
1002
943
|
}
|
|
1003
944
|
|
|
@@ -73,9 +73,9 @@ class Renderer {
|
|
|
73
73
|
*/
|
|
74
74
|
this.handler = handler;
|
|
75
75
|
|
|
76
|
-
this.exposure =
|
|
76
|
+
this.exposure = 3.01;
|
|
77
77
|
|
|
78
|
-
this.gamma = 0.
|
|
78
|
+
this.gamma = 0.47;
|
|
79
79
|
|
|
80
80
|
this.whitepoint = 1.0;
|
|
81
81
|
|
|
@@ -159,13 +159,11 @@ class Renderer {
|
|
|
159
159
|
|
|
160
160
|
this.depthFramebuffer = null;
|
|
161
161
|
|
|
162
|
-
this._msaa = params.msaa ||
|
|
162
|
+
this._msaa = params.msaa || 4;
|
|
163
163
|
this._internalFormat = "RGBA16F";
|
|
164
164
|
this._format = "RGBA";
|
|
165
165
|
this._type = "FLOAT";
|
|
166
166
|
|
|
167
|
-
this._screenScale = params.screenScale || 1.0;
|
|
168
|
-
|
|
169
167
|
this.sceneFramebuffer = null;
|
|
170
168
|
|
|
171
169
|
this.blitFramebuffer = null;
|
|
@@ -184,8 +182,7 @@ class Renderer {
|
|
|
184
182
|
* @private
|
|
185
183
|
* @type {Array.<number>} - (exactly 3 entries)
|
|
186
184
|
*/
|
|
187
|
-
this._prevPickingColor =
|
|
188
|
-
|
|
185
|
+
this._prevPickingColor = new Uint8Array(4);
|
|
189
186
|
this._tempPickingColor_ = new Uint8Array(4);
|
|
190
187
|
|
|
191
188
|
this._initialized = false;
|
|
@@ -224,11 +221,6 @@ class Renderer {
|
|
|
224
221
|
this.events.active = activity;
|
|
225
222
|
}
|
|
226
223
|
|
|
227
|
-
setScreenScale(scale) {
|
|
228
|
-
this._screenScale = scale;
|
|
229
|
-
this._resize();
|
|
230
|
-
}
|
|
231
|
-
|
|
232
224
|
addDepthCallback(sender, callback) {
|
|
233
225
|
var id = __depthCallbackCounter__++;
|
|
234
226
|
this._depthCallbacks.push({
|
|
@@ -333,7 +325,7 @@ class Renderer {
|
|
|
333
325
|
* @returns {number} -
|
|
334
326
|
*/
|
|
335
327
|
getWidth() {
|
|
336
|
-
return this.handler.canvas.
|
|
328
|
+
return this.handler.canvas.clientWidth;
|
|
337
329
|
}
|
|
338
330
|
|
|
339
331
|
/**
|
|
@@ -342,7 +334,7 @@ class Renderer {
|
|
|
342
334
|
* @returns {number} -
|
|
343
335
|
*/
|
|
344
336
|
getHeight() {
|
|
345
|
-
return this.handler.canvas.
|
|
337
|
+
return this.handler.canvas.clientHeight;
|
|
346
338
|
}
|
|
347
339
|
|
|
348
340
|
/**
|
|
@@ -352,7 +344,7 @@ class Renderer {
|
|
|
352
344
|
*/
|
|
353
345
|
getCenter() {
|
|
354
346
|
var cnv = this.handler.canvas;
|
|
355
|
-
return new Vec2(Math.round(cnv.
|
|
347
|
+
return new Vec2(Math.round(cnv.clientWidth * 0.5), Math.round(cnv.clientHeight * 0.5));
|
|
356
348
|
}
|
|
357
349
|
|
|
358
350
|
/**
|
|
@@ -431,20 +423,10 @@ class Renderer {
|
|
|
431
423
|
useDepth: false
|
|
432
424
|
}).init();
|
|
433
425
|
|
|
434
|
-
//this.depthFramebuffer = new Framebuffer(this.handler, {
|
|
435
|
-
// size: 2,
|
|
436
|
-
// internalFormat: ["RGBA", "RGBA"],
|
|
437
|
-
// format: ["RGBA", "RGBA"],
|
|
438
|
-
// type: ["UNSIGNED_BYTE", "UNSIGNED_BYTE"],
|
|
439
|
-
// attachment: ["COLOR_ATTACHMENT", "COLOR_ATTACHMENT"],
|
|
440
|
-
// useDepth: true
|
|
441
|
-
//}).init();
|
|
442
426
|
this.screenDepthFramebuffer = new Framebuffer(this.handler, {
|
|
443
427
|
useDepth: false
|
|
444
428
|
}).init();
|
|
445
429
|
|
|
446
|
-
this.readPixels = () => {};
|
|
447
|
-
|
|
448
430
|
if (this.handler.gl.type === "webgl") {
|
|
449
431
|
this.sceneFramebuffer = new Framebuffer(this.handler);
|
|
450
432
|
this.sceneFramebuffer.init();
|
|
@@ -479,7 +461,7 @@ class Renderer {
|
|
|
479
461
|
internalFormat: this._internalFormat,
|
|
480
462
|
format: this._format,
|
|
481
463
|
type: this._type,
|
|
482
|
-
filter: "
|
|
464
|
+
filter: "NEAREST"
|
|
483
465
|
}).init();
|
|
484
466
|
|
|
485
467
|
this.toneMappingFramebuffer = new Framebuffer(this.handler, {
|
|
@@ -497,8 +479,8 @@ class Renderer {
|
|
|
497
479
|
}
|
|
498
480
|
|
|
499
481
|
this.handler.onCanvasResize = () => {
|
|
482
|
+
this.resize();
|
|
500
483
|
this.events.dispatch(this.events.resize, this.handler.canvas);
|
|
501
|
-
this._resize();
|
|
502
484
|
};
|
|
503
485
|
|
|
504
486
|
this._screenFrameCornersBuffer = this.handler.createArrayBuffer(
|
|
@@ -525,25 +507,22 @@ class Renderer {
|
|
|
525
507
|
}
|
|
526
508
|
}
|
|
527
509
|
|
|
528
|
-
|
|
529
|
-
let
|
|
530
|
-
this.activeCamera.setAspectRatio(
|
|
531
|
-
this.sceneFramebuffer.setSize(
|
|
532
|
-
|
|
533
|
-
obj.clientHeight * this._screenScale
|
|
534
|
-
);
|
|
510
|
+
resize() {
|
|
511
|
+
let c = this.handler.canvas;
|
|
512
|
+
this.activeCamera.setAspectRatio(c.width / c.height);
|
|
513
|
+
this.sceneFramebuffer.setSize(c.width, c.height);
|
|
514
|
+
|
|
535
515
|
this.blitFramebuffer &&
|
|
536
|
-
this.blitFramebuffer.setSize(
|
|
537
|
-
|
|
538
|
-
obj.clientHeight * this._screenScale,
|
|
539
|
-
true
|
|
540
|
-
);
|
|
516
|
+
this.blitFramebuffer.setSize(c.width, c.height, true);
|
|
517
|
+
|
|
541
518
|
this.toneMappingFramebuffer &&
|
|
542
|
-
this.toneMappingFramebuffer.setSize(
|
|
519
|
+
this.toneMappingFramebuffer.setSize(c.width, c.height, true);
|
|
520
|
+
|
|
543
521
|
this.depthFramebuffer &&
|
|
544
|
-
this.depthFramebuffer.setSize(
|
|
522
|
+
this.depthFramebuffer.setSize(c.clientWidth, c.clientHeight, true);
|
|
523
|
+
|
|
545
524
|
this.screenDepthFramebuffer &&
|
|
546
|
-
this.screenDepthFramebuffer.setSize(
|
|
525
|
+
this.screenDepthFramebuffer.setSize(c.clientWidth, c.clientHeight, true);
|
|
547
526
|
|
|
548
527
|
if (this.handler.gl.type === "webgl") {
|
|
549
528
|
this.screenTexture.screen = this.sceneFramebuffer.textures[0];
|
|
@@ -763,6 +742,8 @@ class Renderer {
|
|
|
763
742
|
|
|
764
743
|
let frustums = this.activeCamera.frustums;
|
|
765
744
|
|
|
745
|
+
let anyEvent = this.events.mouseState.anyEvent();
|
|
746
|
+
|
|
766
747
|
// Rendering scene nodes and entityCollections
|
|
767
748
|
let rn = this._renderNodesArr;
|
|
768
749
|
let k = frustums.length;
|
|
@@ -775,17 +756,19 @@ class Renderer {
|
|
|
775
756
|
}
|
|
776
757
|
this._drawEntityCollections();
|
|
777
758
|
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
this._drawPickingBuffer(k);
|
|
759
|
+
if (anyEvent) {
|
|
760
|
+
this._drawPickingBuffer(k);
|
|
761
|
+
}
|
|
782
762
|
}
|
|
783
763
|
|
|
784
764
|
sfb.deactivate();
|
|
785
765
|
|
|
786
766
|
this.blitFramebuffer && sfb.blitTo(this.blitFramebuffer);
|
|
787
767
|
|
|
788
|
-
if (
|
|
768
|
+
if (anyEvent) {
|
|
769
|
+
// It works ONLY for 0 (closest) frustum
|
|
770
|
+
this._drawDepthBuffer();
|
|
771
|
+
|
|
789
772
|
this._readPickingColor();
|
|
790
773
|
}
|
|
791
774
|
|
|
@@ -856,99 +839,81 @@ class Renderer {
|
|
|
856
839
|
gl.enable(gl.DEPTH_TEST);
|
|
857
840
|
}
|
|
858
841
|
|
|
859
|
-
/**
|
|
860
|
-
* Returns picking object by screen coordinates
|
|
861
|
-
* @param {number} x - X position
|
|
862
|
-
* @param {number} y - Y position
|
|
863
|
-
* @return {Object} -
|
|
864
|
-
*/
|
|
865
|
-
getPickingObject(x, y) {
|
|
866
|
-
let cnv = this.renderer.handler.canvas,
|
|
867
|
-
c = new Uint8Array(3);
|
|
868
|
-
this.readPixels(c, x / cnv.width, (cnv.height - y) / cnv.height, 1);
|
|
869
|
-
return this.colorObjects[c[0] + "_" + c[1] + "_" + c[2]];
|
|
870
|
-
}
|
|
871
|
-
|
|
872
842
|
/**
|
|
873
843
|
* Draw picking objects framebuffer.
|
|
874
844
|
* @private
|
|
875
845
|
*/
|
|
876
846
|
_drawPickingBuffer(frustumIndex) {
|
|
877
|
-
|
|
878
|
-
this.pickingFramebuffer.activate();
|
|
879
|
-
|
|
880
|
-
var h = this.handler;
|
|
881
|
-
var gl = h.gl;
|
|
847
|
+
this.pickingFramebuffer.activate();
|
|
882
848
|
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
886
|
-
} else {
|
|
887
|
-
gl.clear(gl.DEPTH_BUFFER_BIT);
|
|
888
|
-
}
|
|
849
|
+
var h = this.handler;
|
|
850
|
+
var gl = h.gl;
|
|
889
851
|
|
|
890
|
-
|
|
852
|
+
if (frustumIndex === this.activeCamera.FARTHEST_FRUSTUM_INDEX) {
|
|
853
|
+
gl.clearColor(0.0, 0.0, 0.0, 1.0);
|
|
854
|
+
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
855
|
+
} else {
|
|
856
|
+
gl.clear(gl.DEPTH_BUFFER_BIT);
|
|
857
|
+
}
|
|
891
858
|
|
|
892
|
-
|
|
893
|
-
var i = dp.length;
|
|
894
|
-
while (i--) {
|
|
895
|
-
/**
|
|
896
|
-
* This callback renders picking frame.
|
|
897
|
-
* @callback og.Renderer~pickingCallback
|
|
898
|
-
*/
|
|
899
|
-
dp[i].callback.call(dp[i].sender);
|
|
900
|
-
}
|
|
859
|
+
gl.disable(h.gl.BLEND);
|
|
901
860
|
|
|
902
|
-
|
|
861
|
+
var dp = this._pickingCallbacks;
|
|
862
|
+
var i = dp.length;
|
|
863
|
+
while (i--) {
|
|
864
|
+
/**
|
|
865
|
+
* This callback renders picking frame.
|
|
866
|
+
* @callback og.Renderer~pickingCallback
|
|
867
|
+
*/
|
|
868
|
+
dp[i].callback.call(dp[i].sender);
|
|
903
869
|
}
|
|
904
|
-
}
|
|
905
870
|
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
this.depthFramebuffer.activate();
|
|
871
|
+
this.pickingFramebuffer.deactivate();
|
|
872
|
+
}
|
|
909
873
|
|
|
910
|
-
|
|
911
|
-
|
|
874
|
+
_drawDepthBuffer() {
|
|
875
|
+
this.depthFramebuffer.activate();
|
|
912
876
|
|
|
913
|
-
|
|
914
|
-
|
|
877
|
+
var h = this.handler;
|
|
878
|
+
var gl = h.gl;
|
|
915
879
|
|
|
916
|
-
|
|
880
|
+
gl.clearColor(0.0, 0.0, 0.0, 1.0);
|
|
881
|
+
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
917
882
|
|
|
918
|
-
|
|
919
|
-
var i = dp.length;
|
|
920
|
-
while (i--) {
|
|
921
|
-
/**
|
|
922
|
-
* This callback renders depth frame.
|
|
923
|
-
* @callback og.Renderer~depthCallback
|
|
924
|
-
*/
|
|
925
|
-
dp[i].callback.call(dp[i].sender);
|
|
926
|
-
}
|
|
883
|
+
gl.enable(gl.DEPTH_TEST);
|
|
927
884
|
|
|
928
|
-
|
|
885
|
+
var dp = this._depthCallbacks;
|
|
886
|
+
var i = dp.length;
|
|
887
|
+
while (i--) {
|
|
888
|
+
/**
|
|
889
|
+
* This callback renders depth frame.
|
|
890
|
+
* @callback og.Renderer~depthCallback
|
|
891
|
+
*/
|
|
892
|
+
dp[i].callback.call(dp[i].sender);
|
|
893
|
+
}
|
|
929
894
|
|
|
930
|
-
|
|
931
|
-
// PASS to depth visualization
|
|
932
|
-
var sh = h.programs.depth,
|
|
933
|
-
p = sh._program;
|
|
895
|
+
this.depthFramebuffer.deactivate();
|
|
934
896
|
|
|
935
|
-
|
|
897
|
+
//
|
|
898
|
+
// PASS to depth visualization
|
|
899
|
+
this.screenDepthFramebuffer.activate();
|
|
900
|
+
var sh = h.programs.depth,
|
|
901
|
+
p = sh._program;
|
|
936
902
|
|
|
937
|
-
|
|
938
|
-
gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
|
|
903
|
+
gl = h.gl;
|
|
939
904
|
|
|
940
|
-
|
|
905
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this._screenFrameCornersBuffer);
|
|
906
|
+
gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
|
|
941
907
|
|
|
942
|
-
|
|
908
|
+
sh.activate();
|
|
943
909
|
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
910
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
911
|
+
gl.bindTexture(gl.TEXTURE_2D, this.depthFramebuffer.textures[1]);
|
|
912
|
+
gl.uniform1i(p.uniforms.depthTexture, 0);
|
|
947
913
|
|
|
948
|
-
|
|
914
|
+
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
|
|
949
915
|
|
|
950
|
-
|
|
951
|
-
}
|
|
916
|
+
this.screenDepthFramebuffer.deactivate();
|
|
952
917
|
}
|
|
953
918
|
|
|
954
919
|
_readPickingColor() {
|
|
@@ -962,15 +927,13 @@ class Renderer {
|
|
|
962
927
|
|
|
963
928
|
var pc = this._currPickingColor;
|
|
964
929
|
if (ts.x || ts.y) {
|
|
930
|
+
this.pickingFramebuffer.activate();
|
|
965
931
|
this.pickingFramebuffer.readPixels(pc, ts.nx, 1.0 - ts.ny);
|
|
966
|
-
|
|
967
|
-
this.readPixels(pc, ts.nx, 1.0 - ts.ny, 1);
|
|
968
|
-
}
|
|
932
|
+
this.pickingFramebuffer.deactivate();
|
|
969
933
|
} else {
|
|
934
|
+
this.pickingFramebuffer.activate();
|
|
970
935
|
this.pickingFramebuffer.readPixels(pc, ms.nx, 1.0 - ms.ny);
|
|
971
|
-
|
|
972
|
-
this.readPixels(pc, ms.nx, 1.0 - ms.ny, 1);
|
|
973
|
-
}
|
|
936
|
+
this.pickingFramebuffer.deactivate();
|
|
974
937
|
}
|
|
975
938
|
}
|
|
976
939
|
}
|