@openglobus/og 0.11.5 → 0.12.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.
- package/css/og.css +5 -2
- package/package.json +12 -14
- package/src/og/Clock.js +6 -10
- package/src/og/Events.js +5 -7
- package/src/og/Extent.js +73 -32
- package/src/og/Globe.js +25 -10
- package/src/og/ImageCanvas.js +18 -15
- package/src/og/LonLat.js +13 -10
- package/src/og/Popup.js +19 -17
- package/src/og/QueueArray.js +3 -4
- package/src/og/Rectangle.js +4 -6
- package/src/og/Stack.js +2 -4
- package/src/og/ajax.js +20 -14
- package/src/og/astro/earth.js +21 -15
- package/src/og/bv/Box.js +2 -3
- package/src/og/bv/Sphere.js +10 -7
- package/src/og/camera/Camera.js +70 -79
- package/src/og/camera/Frustum.js +19 -12
- package/src/og/camera/PlanetCamera.js +33 -34
- package/src/og/control/CompassButton.js +1 -2
- package/src/og/control/Control.js +7 -9
- package/src/og/control/DebugInfo.js +2 -3
- package/src/og/control/EarthNavigation.js +26 -17
- package/src/og/control/KeyboardNavigation.js +9 -9
- package/src/og/control/LayerSwitcher.js +21 -20
- 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/SegmentBoundVisualization.js +5 -6
- package/src/og/control/ShowFps.js +12 -7
- package/src/og/control/SimpleNavigation.js +5 -7
- package/src/og/control/Sun.js +24 -14
- package/src/og/control/ToggleWireframe.js +3 -3
- package/src/og/control/TouchNavigation.js +43 -32
- package/src/og/control/ZoomControl.js +40 -24
- 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 +149 -57
- package/src/og/ellipsoid/wgs84.js +3 -3
- package/src/og/entity/BaseBillboard.js +72 -30
- package/src/og/entity/Billboard.js +9 -5
- package/src/og/entity/BillboardHandler.js +315 -62
- package/src/og/entity/Entity.js +742 -704
- package/src/og/entity/EntityCollection.js +47 -24
- package/src/og/entity/GeoObject.js +228 -0
- package/src/og/entity/GeoObjectHandler.js +895 -0
- package/src/og/entity/GeometryHandler.js +595 -123
- package/src/og/entity/Label.js +62 -30
- package/src/og/entity/LabelHandler.js +42 -243
- package/src/og/entity/LabelWorker.js +218 -0
- package/src/og/entity/Object3d.js +504 -0
- package/src/og/entity/PointCloud.js +76 -28
- package/src/og/entity/PointCloudHandler.js +5 -5
- package/src/og/entity/Ray.js +49 -16
- package/src/og/entity/Strip.js +72 -43
- package/src/og/entity/StripHandler.js +23 -23
- package/src/og/layer/BaseGeoImage.js +50 -19
- package/src/og/layer/CanvasTiles.js +16 -17
- package/src/og/layer/GeoImage.js +8 -16
- package/src/og/layer/GeoTexture2d.js +2 -10
- package/src/og/layer/GeoVideo.js +2 -10
- package/src/og/layer/KML.js +55 -33
- package/src/og/layer/Layer.js +24 -33
- package/src/og/layer/Material.js +1 -1
- package/src/og/layer/Vector.js +94 -48
- package/src/og/layer/WMS.js +33 -18
- package/src/og/layer/XYZ.js +24 -26
- package/src/og/light/LightSource.js +19 -12
- package/src/og/math/Mat3.js +24 -12
- package/src/og/math/Mat4.js +603 -603
- package/src/og/math/Plane.js +19 -18
- package/src/og/math/Ray.js +17 -12
- package/src/og/math/Vec2.js +24 -14
- package/src/og/math/Vec3.js +78 -32
- package/src/og/math/coder.js +7 -7
- package/src/og/proj/EPSG3857.js +3 -3
- package/src/og/proj/EPSG4326.js +3 -3
- package/src/og/proj/Proj.js +2 -4
- package/src/og/quadTree/Node.js +50 -95
- package/src/og/quadTree/quadTree.js +1 -1
- package/src/og/renderer/Renderer.js +106 -126
- package/src/og/renderer/RendererEvents.js +45 -23
- package/src/og/scene/BaseNode.js +2 -3
- package/src/og/scene/Planet.js +139 -191
- package/src/og/scene/RenderNode.js +15 -8
- package/src/og/segment/Segment.js +93 -268
- package/src/og/segment/Slice.js +45 -0
- package/src/og/shaders/drawnode.js +174 -360
- package/src/og/shaders/geoObject.js +211 -0
- package/src/og/shaders/pointCloud.js +41 -41
- package/src/og/shaders/shape.js +12 -18
- package/src/og/shaders/skybox.js +36 -36
- package/src/og/shaders/toneMapping.js +1 -0
- package/src/og/shapes/BaseShape.js +108 -36
- package/src/og/shapes/Icosphere.js +25 -10
- package/src/og/shapes/Sphere.js +8 -11
- 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 +18 -20
- package/src/og/utils/VectorTileCreator.js +1 -3
- package/src/og/utils/shared.js +2 -2
- package/src/og/webgl/Handler.js +219 -162
- package/src/og/webgl/Multisample.js +44 -16
- package/src/og/webgl/Program.js +78 -33
- package/src/og/webgl/callbacks.js +3 -3
- 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 -208
- package/types/entity/Billboard.d.ts +0 -94
- package/types/entity/BillboardHandler.d.ts +0 -78
- package/types/entity/Entity.d.ts +0 -333
- package/types/entity/EntityCollection.d.ts +0 -311
- 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 -29
- 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 -298
- 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/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 -388
- package/types/webgl/Multisample.d.ts +0 -89
- package/types/webgl/Program.d.ts +0 -155
- 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
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
|
-
import { BaseNode } from
|
|
4
|
-
import { Events } from
|
|
3
|
+
import { BaseNode } from "./BaseNode.js";
|
|
4
|
+
import { Events } from "../Events.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Render node is a logical part of a render mechanism. Represents scene rendering.
|
|
@@ -98,8 +98,7 @@ class RenderNode extends BaseNode {
|
|
|
98
98
|
n = this.name;
|
|
99
99
|
|
|
100
100
|
if (r) {
|
|
101
|
-
if (r.renderNodes[n] &&
|
|
102
|
-
r.renderNodes[n].isEqual(this)) {
|
|
101
|
+
if (r.renderNodes[n] && r.renderNodes[n].isEqual(this)) {
|
|
103
102
|
r.renderNodes[n] = null;
|
|
104
103
|
delete r.renderNodes[n];
|
|
105
104
|
}
|
|
@@ -195,7 +194,10 @@ class RenderNode extends BaseNode {
|
|
|
195
194
|
|
|
196
195
|
if (this.renderer) {
|
|
197
196
|
if (this._isActive && this._pickingId === -1) {
|
|
198
|
-
this._pickingId = this.renderer.addPickingCallback(
|
|
197
|
+
this._pickingId = this.renderer.addPickingCallback(
|
|
198
|
+
this,
|
|
199
|
+
this._entityCollectionPickingCallback
|
|
200
|
+
);
|
|
199
201
|
} else if (!this._isActive && this._pickingId !== -1) {
|
|
200
202
|
this.renderer.removePickingCallback(this._pickingId);
|
|
201
203
|
this._pickingId = -1;
|
|
@@ -277,7 +279,6 @@ class RenderNode extends BaseNode {
|
|
|
277
279
|
*/
|
|
278
280
|
drawPickingEntityCollections(ec) {
|
|
279
281
|
if (ec.length) {
|
|
280
|
-
|
|
281
282
|
var gl = this.renderer.handler.gl;
|
|
282
283
|
|
|
283
284
|
gl.disable(gl.CULL_FACE);
|
|
@@ -292,6 +293,12 @@ class RenderNode extends BaseNode {
|
|
|
292
293
|
ec[i]._fadingOpacity && ec[i].billboardHandler.drawPicking();
|
|
293
294
|
}
|
|
294
295
|
|
|
296
|
+
// geoObject pass
|
|
297
|
+
i = ec.length;
|
|
298
|
+
while (i--) {
|
|
299
|
+
ec[i]._fadingOpacity && ec[i].geoObjectHandler.drawPicking();
|
|
300
|
+
}
|
|
301
|
+
|
|
295
302
|
// label pass
|
|
296
303
|
i = ec.length;
|
|
297
304
|
while (i--) {
|
|
@@ -344,4 +351,4 @@ class RenderNode extends BaseNode {
|
|
|
344
351
|
}
|
|
345
352
|
}
|
|
346
353
|
|
|
347
|
-
export { RenderNode };
|
|
354
|
+
export { RenderNode };
|
|
@@ -12,26 +12,11 @@ import { Box } from "../bv/Box.js";
|
|
|
12
12
|
import { Vec3 } from "../math/Vec3.js";
|
|
13
13
|
import * as segmentHelper from "../segment/segmentHelper.js";
|
|
14
14
|
import { getMatrixSubArray } from "../utils/shared.js";
|
|
15
|
-
|
|
16
|
-
export const MAX_NORMAL_ZOOM = 7;
|
|
15
|
+
import { Slice } from "./Slice.js";
|
|
17
16
|
|
|
18
17
|
var _tempHigh = new Vec3();
|
|
19
18
|
var _tempLow = new Vec3();
|
|
20
19
|
|
|
21
|
-
var _RenderingSlice = function (p) {
|
|
22
|
-
this.layers = [];
|
|
23
|
-
this.tileOffsetArr = new Float32Array(p.SLICE_SIZE_4);
|
|
24
|
-
this.visibleExtentOffsetArr = new Float32Array(p.SLICE_SIZE_4);
|
|
25
|
-
this.transparentColorArr = new Float32Array(p.SLICE_SIZE_4);
|
|
26
|
-
|
|
27
|
-
this.clear = function () {
|
|
28
|
-
this.layers = null;
|
|
29
|
-
this.tileOffsetArr = null;
|
|
30
|
-
this.visibleExtentOffsetArr = null;
|
|
31
|
-
this.transparentColorArr = null;
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
|
|
35
20
|
let _v0 = new Vec3(),
|
|
36
21
|
_v1 = new Vec3(),
|
|
37
22
|
_v2 = new Vec3(),
|
|
@@ -54,8 +39,6 @@ _V[E] = true;
|
|
|
54
39
|
_V[S] = false;
|
|
55
40
|
_V[W] = true;
|
|
56
41
|
|
|
57
|
-
window.BBSC = 100;
|
|
58
|
-
|
|
59
42
|
/**
|
|
60
43
|
* Planet segment Web Mercator tile class that stored and rendered with quad tree.
|
|
61
44
|
* @class
|
|
@@ -110,10 +93,17 @@ class Segment {
|
|
|
110
93
|
*/
|
|
111
94
|
this.bbox = new Box();
|
|
112
95
|
|
|
113
|
-
this._swNorm = null;
|
|
114
|
-
this._nwNorm = null;
|
|
115
|
-
this._seNorm = null;
|
|
116
|
-
this._neNorm = null;
|
|
96
|
+
//this._swNorm = null;
|
|
97
|
+
//this._nwNorm = null;
|
|
98
|
+
//this._seNorm = null;
|
|
99
|
+
//this._neNorm = null;
|
|
100
|
+
|
|
101
|
+
this._sw = new Vec3();
|
|
102
|
+
this._nw = new Vec3();
|
|
103
|
+
this._se = new Vec3();
|
|
104
|
+
this._ne = new Vec3();
|
|
105
|
+
|
|
106
|
+
this.centerNormal = new Vec3();
|
|
117
107
|
|
|
118
108
|
/**
|
|
119
109
|
* Geographical extent.
|
|
@@ -241,7 +231,7 @@ class Segment {
|
|
|
241
231
|
this._inTheQueue = false;
|
|
242
232
|
this._appliedNeighborsZoom = [0, 0, 0, 0];
|
|
243
233
|
|
|
244
|
-
this.
|
|
234
|
+
this._slices = [];
|
|
245
235
|
|
|
246
236
|
this._indexBuffer = null;
|
|
247
237
|
|
|
@@ -250,19 +240,6 @@ class Segment {
|
|
|
250
240
|
this.plainProcessing = false;
|
|
251
241
|
}
|
|
252
242
|
|
|
253
|
-
/**
|
|
254
|
-
* Returns that segment good for rendering with camera by current lod ratio.
|
|
255
|
-
* @public
|
|
256
|
-
* @param {Camera} camera - Camera object.
|
|
257
|
-
* @returns {boolean} -
|
|
258
|
-
*/
|
|
259
|
-
acceptForRendering(camera) {
|
|
260
|
-
return (
|
|
261
|
-
camera.projectedSize(this.bsphere.center, this._plainRadius) <
|
|
262
|
-
256 / this.planet._lodRatio
|
|
263
|
-
);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
243
|
/**
|
|
267
244
|
* Returns entity terrain point.
|
|
268
245
|
* @public
|
|
@@ -946,12 +923,12 @@ class Segment {
|
|
|
946
923
|
|
|
947
924
|
this.clearSegment();
|
|
948
925
|
|
|
949
|
-
var i = this.
|
|
926
|
+
var i = this._slices.length;
|
|
950
927
|
while (i--) {
|
|
951
|
-
this.
|
|
928
|
+
this._slices[i].clear();
|
|
952
929
|
}
|
|
953
930
|
|
|
954
|
-
this.
|
|
931
|
+
this._slices = null;
|
|
955
932
|
|
|
956
933
|
this.node = null;
|
|
957
934
|
|
|
@@ -990,9 +967,6 @@ class Segment {
|
|
|
990
967
|
this.vertexPositionBufferLow = null;
|
|
991
968
|
this.vertexTextureCoordBuffer = null;
|
|
992
969
|
|
|
993
|
-
this._tileOffsetArr = null;
|
|
994
|
-
this._visibleExtentOffsetArr = null;
|
|
995
|
-
|
|
996
970
|
this._projection = null;
|
|
997
971
|
this._appliedNeighborsZoom = null;
|
|
998
972
|
|
|
@@ -1013,22 +987,19 @@ class Segment {
|
|
|
1013
987
|
var coord_sw = ellipsoid.geodeticToCartesian(extent.southWest.lon, extent.southWest.lat);
|
|
1014
988
|
var coord_ne = ellipsoid.geodeticToCartesian(extent.northEast.lon, extent.northEast.lat);
|
|
1015
989
|
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
extent.southWest.lat
|
|
1025
|
-
);
|
|
990
|
+
var coord_nw = ellipsoid.geodeticToCartesian(
|
|
991
|
+
extent.southWest.lon,
|
|
992
|
+
extent.northEast.lat
|
|
993
|
+
);
|
|
994
|
+
var coord_se = ellipsoid.geodeticToCartesian(
|
|
995
|
+
extent.northEast.lon,
|
|
996
|
+
extent.southWest.lat
|
|
997
|
+
);
|
|
1026
998
|
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
}
|
|
999
|
+
this._sw.copy(coord_sw);
|
|
1000
|
+
this._nw.copy(coord_nw);
|
|
1001
|
+
this._ne.copy(coord_ne);
|
|
1002
|
+
this._se.copy(coord_se);
|
|
1032
1003
|
|
|
1033
1004
|
this.setBoundingVolume3v(coord_sw, coord_ne);
|
|
1034
1005
|
}
|
|
@@ -1057,31 +1028,30 @@ class Segment {
|
|
|
1057
1028
|
this.bsphere.center.z = pn.segment.bsphere.center.z;
|
|
1058
1029
|
this.bsphere.radius = pn.segment.bsphere.radius;
|
|
1059
1030
|
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
let j0 = gridSize * offsetX;
|
|
1031
|
+
let i0 = gridSize * offsetY;
|
|
1032
|
+
let j0 = gridSize * offsetX;
|
|
1063
1033
|
|
|
1064
|
-
|
|
1034
|
+
let pnGsOne = pn.segment.gridSize + 1;
|
|
1065
1035
|
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1036
|
+
let ind_sw = 3 * ((i0 + gridSize) * pnGsOne + j0),
|
|
1037
|
+
ind_nw = 3 * (i0 * pnGsOne + j0),
|
|
1038
|
+
ind_ne = 3 * (i0 * pnGsOne + j0 + gridSize),
|
|
1039
|
+
ind_se = 3 * ((i0 + gridSize) * pnGsOne + j0 + gridSize);
|
|
1070
1040
|
|
|
1071
|
-
|
|
1041
|
+
let pVerts = pn.segment.tempVertices;
|
|
1072
1042
|
|
|
1073
|
-
|
|
1074
|
-
|
|
1043
|
+
let v_sw = new Vec3(pVerts[ind_sw], pVerts[ind_sw + 1], pVerts[ind_sw + 2]),
|
|
1044
|
+
v_ne = new Vec3(pVerts[ind_ne], pVerts[ind_ne + 1], pVerts[ind_ne + 2]);
|
|
1075
1045
|
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1046
|
+
// check for segment zoom
|
|
1047
|
+
let v_nw = new Vec3(pVerts[ind_nw], pVerts[ind_nw + 1], pVerts[ind_nw + 2]),
|
|
1048
|
+
v_se = new Vec3(pVerts[ind_se], pVerts[ind_se + 1], pVerts[ind_se + 2]);
|
|
1049
|
+
|
|
1050
|
+
this._sw.copy(v_sw);
|
|
1051
|
+
this._nw.copy(v_nw);
|
|
1052
|
+
this._ne.copy(v_ne);
|
|
1053
|
+
this._se.copy(v_se);
|
|
1079
1054
|
|
|
1080
|
-
this._swNorm = v_sw.normal();
|
|
1081
|
-
this._nwNorm = v_nw.normal();
|
|
1082
|
-
this._neNorm = v_ne.normal();
|
|
1083
|
-
this._seNorm = v_se.normal();
|
|
1084
|
-
}
|
|
1085
1055
|
} else {
|
|
1086
1056
|
let pseg = pn.segment;
|
|
1087
1057
|
|
|
@@ -1104,10 +1074,10 @@ class Segment {
|
|
|
1104
1074
|
v_rb = new Vec3(bigOne[9], bigOne[10], bigOne[11]);
|
|
1105
1075
|
|
|
1106
1076
|
let vn = new Vec3(
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1077
|
+
bigOne[3] - bigOne[0],
|
|
1078
|
+
bigOne[4] - bigOne[1],
|
|
1079
|
+
bigOne[5] - bigOne[2]
|
|
1080
|
+
),
|
|
1111
1081
|
vw = new Vec3(
|
|
1112
1082
|
bigOne[6] - bigOne[0],
|
|
1113
1083
|
bigOne[7] - bigOne[1],
|
|
@@ -1291,13 +1261,13 @@ class Segment {
|
|
|
1291
1261
|
n.sideSize[2] =
|
|
1292
1262
|
n.sideSize[3] =
|
|
1293
1263
|
this.gridSize =
|
|
1294
|
-
|
|
1264
|
+
p.terrain.gridSizeByZoom[this.tileZoom] || p.terrain.plainGridSize;
|
|
1295
1265
|
|
|
1296
1266
|
n.sideSizeLog2[0] =
|
|
1297
1267
|
n.sideSizeLog2[1] =
|
|
1298
1268
|
n.sideSizeLog2[2] =
|
|
1299
1269
|
n.sideSizeLog2[3] =
|
|
1300
|
-
|
|
1270
|
+
Math.log2(p.terrain.gridSizeByZoom[this.tileZoom] || p.terrain.plainGridSize);
|
|
1301
1271
|
|
|
1302
1272
|
if (this.tileZoom <= p.terrain.maxZoom) {
|
|
1303
1273
|
var nmc = this.planet._normalMapCreator;
|
|
@@ -1484,11 +1454,12 @@ class Segment {
|
|
|
1484
1454
|
|
|
1485
1455
|
var notEmpty = false;
|
|
1486
1456
|
|
|
1487
|
-
var slice = this.
|
|
1457
|
+
var slice = this._slices[sliceIndex];
|
|
1488
1458
|
|
|
1489
1459
|
if (!slice) {
|
|
1490
|
-
slice = this.
|
|
1460
|
+
slice = this._slices[sliceIndex] = new Slice(this);
|
|
1491
1461
|
} else {
|
|
1462
|
+
//TODO: optimization!!!
|
|
1492
1463
|
slice.layers = [];
|
|
1493
1464
|
}
|
|
1494
1465
|
|
|
@@ -1511,40 +1482,7 @@ class Segment {
|
|
|
1511
1482
|
this.planet._renderCompleted = false;
|
|
1512
1483
|
}
|
|
1513
1484
|
|
|
1514
|
-
slice.
|
|
1515
|
-
|
|
1516
|
-
var n4 = n * 4,
|
|
1517
|
-
n3 = n * 3;
|
|
1518
|
-
|
|
1519
|
-
var arr = li.applyMaterial(m);
|
|
1520
|
-
slice.tileOffsetArr[n4] = arr[0];
|
|
1521
|
-
slice.tileOffsetArr[n4 + 1] = arr[1];
|
|
1522
|
-
slice.tileOffsetArr[n4 + 2] = arr[2];
|
|
1523
|
-
slice.tileOffsetArr[n4 + 3] = arr[3];
|
|
1524
|
-
|
|
1525
|
-
arr = this._getLayerExtentOffset(li);
|
|
1526
|
-
slice.visibleExtentOffsetArr[n4] = arr[0];
|
|
1527
|
-
slice.visibleExtentOffsetArr[n4 + 1] = arr[1];
|
|
1528
|
-
slice.visibleExtentOffsetArr[n4 + 2] = arr[2];
|
|
1529
|
-
slice.visibleExtentOffsetArr[n4 + 3] = arr[3];
|
|
1530
|
-
|
|
1531
|
-
slice.transparentColorArr[n4] = li.transparentColor[0];
|
|
1532
|
-
slice.transparentColorArr[n4 + 1] = li.transparentColor[1];
|
|
1533
|
-
slice.transparentColorArr[n4 + 2] = li.transparentColor[2];
|
|
1534
|
-
slice.transparentColorArr[n4 + 3] = li.opacity;
|
|
1535
|
-
|
|
1536
|
-
p._diffuseMaterialArr[n3 + 3] = li.diffuse.x;
|
|
1537
|
-
p._diffuseMaterialArr[n3 + 1 + 3] = li.diffuse.y;
|
|
1538
|
-
p._diffuseMaterialArr[n3 + 2 + 3] = li.diffuse.z;
|
|
1539
|
-
|
|
1540
|
-
p._ambientMaterialArr[n3 + 3] = li.ambient.x;
|
|
1541
|
-
p._ambientMaterialArr[n3 + 1 + 3] = li.ambient.y;
|
|
1542
|
-
p._ambientMaterialArr[n3 + 2 + 3] = li.ambient.z;
|
|
1543
|
-
|
|
1544
|
-
p._specularMaterialArr[n4 + 4] = li.specular.x;
|
|
1545
|
-
p._specularMaterialArr[n4 + 1 + 4] = li.specular.y;
|
|
1546
|
-
p._specularMaterialArr[n4 + 2 + 4] = li.specular.z;
|
|
1547
|
-
p._specularMaterialArr[n4 + 3 + 4] = li.shininess;
|
|
1485
|
+
slice.append(li, m);
|
|
1548
1486
|
|
|
1549
1487
|
p._samplerArr[n] = n;
|
|
1550
1488
|
|
|
@@ -1561,9 +1499,12 @@ class Segment {
|
|
|
1561
1499
|
gl.uniform1i(shu.samplerCount, n);
|
|
1562
1500
|
gl.uniform1f(shu.height, currHeight);
|
|
1563
1501
|
gl.uniform1iv(shu.samplerArr, p._samplerArr);
|
|
1502
|
+
|
|
1503
|
+
//slice.uniform(gl, shu);
|
|
1504
|
+
|
|
1564
1505
|
gl.uniform4fv(shu.tileOffsetArr, slice.tileOffsetArr);
|
|
1565
|
-
gl.
|
|
1566
|
-
gl.uniform4fv(shu.
|
|
1506
|
+
gl.uniform1fv(shu.layerOpacityArr, slice.layerOpacityArr);
|
|
1507
|
+
//gl.uniform4fv(shu.visibleExtentOffsetArr, slice.visibleExtentOffsetArr);
|
|
1567
1508
|
|
|
1568
1509
|
// bind normalmap texture
|
|
1569
1510
|
if (p.lightEnabled) {
|
|
@@ -1575,30 +1516,12 @@ class Segment {
|
|
|
1575
1516
|
|
|
1576
1517
|
// bind segment specular and night material texture coordinates
|
|
1577
1518
|
gl.uniform4fv(shu.uGlobalTextureCoord, this._globalTextureCoordinates);
|
|
1578
|
-
|
|
1579
|
-
gl.uniform3fv(shu.diffuseMaterial, p._diffuseMaterialArr);
|
|
1580
|
-
gl.uniform3fv(shu.ambientMaterial, p._ambientMaterialArr);
|
|
1581
|
-
gl.uniform4fv(shu.specularMaterial, p._specularMaterialArr);
|
|
1582
1519
|
}
|
|
1583
1520
|
|
|
1584
1521
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferHigh);
|
|
1585
|
-
gl.vertexAttribPointer(
|
|
1586
|
-
sha.aVertexPositionHigh,
|
|
1587
|
-
this.vertexPositionBufferHigh.itemSize,
|
|
1588
|
-
gl.FLOAT,
|
|
1589
|
-
false,
|
|
1590
|
-
0,
|
|
1591
|
-
0
|
|
1592
|
-
);
|
|
1522
|
+
gl.vertexAttribPointer(sha.aVertexPositionHigh, this.vertexPositionBufferHigh.itemSize, gl.FLOAT, false, 0, 0);
|
|
1593
1523
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
|
|
1594
|
-
gl.vertexAttribPointer(
|
|
1595
|
-
sha.aVertexPositionLow,
|
|
1596
|
-
this.vertexPositionBufferLow.itemSize,
|
|
1597
|
-
gl.FLOAT,
|
|
1598
|
-
false,
|
|
1599
|
-
0,
|
|
1600
|
-
0
|
|
1601
|
-
);
|
|
1524
|
+
gl.vertexAttribPointer(sha.aVertexPositionLow, this.vertexPositionBufferLow.itemSize, gl.FLOAT, false, 0, 0);
|
|
1602
1525
|
|
|
1603
1526
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexTextureCoordBuffer);
|
|
1604
1527
|
gl.vertexAttribPointer(sha.aTextureCoord, 2, gl.UNSIGNED_SHORT, true, 0, 0);
|
|
@@ -1608,7 +1531,7 @@ class Segment {
|
|
|
1608
1531
|
}
|
|
1609
1532
|
}
|
|
1610
1533
|
|
|
1611
|
-
heightPickingRendering(sh, layerSlice
|
|
1534
|
+
heightPickingRendering(sh, layerSlice) {
|
|
1612
1535
|
var gl = this.handler.gl;
|
|
1613
1536
|
var sha = sh.attributes,
|
|
1614
1537
|
shu = sh.uniforms;
|
|
@@ -1616,11 +1539,6 @@ class Segment {
|
|
|
1616
1539
|
var pm = this.materials,
|
|
1617
1540
|
p = this.planet;
|
|
1618
1541
|
|
|
1619
|
-
// First always draw whole planet base layer segment with solid texture.
|
|
1620
|
-
gl.activeTexture(gl.TEXTURE0 + p.SLICE_SIZE);
|
|
1621
|
-
gl.bindTexture(gl.TEXTURE_2D, defaultTexture || p.solidTextureOne);
|
|
1622
|
-
gl.uniform1i(shu.defaultTexture, p.SLICE_SIZE);
|
|
1623
|
-
|
|
1624
1542
|
var currHeight;
|
|
1625
1543
|
if (layerSlice) {
|
|
1626
1544
|
currHeight = layerSlice[0]._height;
|
|
@@ -1628,53 +1546,16 @@ class Segment {
|
|
|
1628
1546
|
currHeight = 0;
|
|
1629
1547
|
}
|
|
1630
1548
|
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
var slice = this._renderingSlices[sliceIndex];
|
|
1549
|
+
gl.uniform1f(shu.height, currHeight);
|
|
1634
1550
|
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
for (n = 0; n < slice.layers.length; n++) {
|
|
1638
|
-
notEmpty = true;
|
|
1639
|
-
p._samplerArr[n] = n;
|
|
1640
|
-
gl.activeTexture(gl.TEXTURE0 + n);
|
|
1641
|
-
gl.bindTexture(gl.TEXTURE_2D, pm[slice.layers[n]._id].texture || p.transparentTexture);
|
|
1642
|
-
}
|
|
1551
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferHigh);
|
|
1552
|
+
gl.vertexAttribPointer(sha.aVertexPositionHigh, this.vertexPositionBufferHigh.itemSize, gl.FLOAT, false, 0, 0);
|
|
1643
1553
|
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
gl.uniform1f(shu.height, currHeight);
|
|
1647
|
-
gl.uniform1iv(shu.samplerArr, p._samplerArr);
|
|
1648
|
-
gl.uniform4fv(shu.tileOffsetArr, slice.tileOffsetArr);
|
|
1649
|
-
gl.uniform4fv(shu.visibleExtentOffsetArr, slice.visibleExtentOffsetArr);
|
|
1650
|
-
gl.uniform4fv(shu.transparentColorArr, slice.transparentColorArr);
|
|
1554
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
|
|
1555
|
+
gl.vertexAttribPointer(sha.aVertexPositionLow, this.vertexPositionBufferLow.itemSize, gl.FLOAT, false, 0, 0);
|
|
1651
1556
|
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
sha.aVertexPositionHigh,
|
|
1655
|
-
this.vertexPositionBufferHigh.itemSize,
|
|
1656
|
-
gl.FLOAT,
|
|
1657
|
-
false,
|
|
1658
|
-
0,
|
|
1659
|
-
0
|
|
1660
|
-
);
|
|
1661
|
-
|
|
1662
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
|
|
1663
|
-
gl.vertexAttribPointer(
|
|
1664
|
-
sha.aVertexPositionLow,
|
|
1665
|
-
this.vertexPositionBufferLow.itemSize,
|
|
1666
|
-
gl.FLOAT,
|
|
1667
|
-
false,
|
|
1668
|
-
0,
|
|
1669
|
-
0
|
|
1670
|
-
);
|
|
1671
|
-
|
|
1672
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexTextureCoordBuffer);
|
|
1673
|
-
gl.vertexAttribPointer(sha.aTextureCoord, 2, gl.UNSIGNED_SHORT, true, 0, 0);
|
|
1674
|
-
|
|
1675
|
-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer);
|
|
1676
|
-
gl.drawElements(gl.TRIANGLE_STRIP, this._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
|
|
1677
|
-
}
|
|
1557
|
+
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer);
|
|
1558
|
+
gl.drawElements(gl.TRIANGLE_STRIP, this._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
|
|
1678
1559
|
}
|
|
1679
1560
|
|
|
1680
1561
|
colorPickingRendering(sh, layerSlice, sliceIndex, defaultTexture, isOverlay) {
|
|
@@ -1694,9 +1575,11 @@ class Segment {
|
|
|
1694
1575
|
|
|
1695
1576
|
var notEmpty = false;
|
|
1696
1577
|
|
|
1697
|
-
var slice = this.
|
|
1578
|
+
var slice = this._slices[sliceIndex];
|
|
1579
|
+
|
|
1580
|
+
let len = slice.layers.length;
|
|
1698
1581
|
|
|
1699
|
-
for (
|
|
1582
|
+
for (let n = 0; n < len; n++) {
|
|
1700
1583
|
notEmpty = true;
|
|
1701
1584
|
|
|
1702
1585
|
var li = slice.layers[n];
|
|
@@ -1717,33 +1600,22 @@ class Segment {
|
|
|
1717
1600
|
}
|
|
1718
1601
|
|
|
1719
1602
|
if (notEmpty || !isOverlay) {
|
|
1720
|
-
gl.uniform1i(shu.samplerCount,
|
|
1603
|
+
gl.uniform1i(shu.samplerCount, len);
|
|
1721
1604
|
gl.uniform1f(shu.height, currHeight);
|
|
1722
1605
|
gl.uniform1iv(shu.samplerArr, p._samplerArr);
|
|
1723
1606
|
gl.uniform1iv(shu.pickingMaskArr, p._pickingMaskArr);
|
|
1724
|
-
gl.uniform4fv(shu.tileOffsetArr, slice.tileOffsetArr);
|
|
1725
|
-
gl.uniform4fv(shu.visibleExtentOffsetArr, slice.visibleExtentOffsetArr);
|
|
1726
|
-
gl.uniform4fv(shu.transparentColorArr, slice.transparentColorArr);
|
|
1727
1607
|
gl.uniform4fv(shu.pickingColorArr, p._pickingColorArr);
|
|
1728
1608
|
|
|
1609
|
+
//slice.uniform(gl, shu);
|
|
1610
|
+
|
|
1611
|
+
gl.uniform4fv(shu.tileOffsetArr, slice.tileOffsetArr);
|
|
1612
|
+
gl.uniform1fv(shu.layerOpacityArr, slice.layerOpacityArr);
|
|
1613
|
+
//gl.uniform4fv(shu.visibleExtentOffsetArr, slice.visibleExtentOffsetArr);
|
|
1614
|
+
|
|
1729
1615
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferHigh);
|
|
1730
|
-
gl.vertexAttribPointer(
|
|
1731
|
-
sha.aVertexPositionHigh,
|
|
1732
|
-
this.vertexPositionBufferHigh.itemSize,
|
|
1733
|
-
gl.FLOAT,
|
|
1734
|
-
false,
|
|
1735
|
-
0,
|
|
1736
|
-
0
|
|
1737
|
-
);
|
|
1616
|
+
gl.vertexAttribPointer(sha.aVertexPositionHigh, this.vertexPositionBufferHigh.itemSize, gl.FLOAT, false, 0, 0);
|
|
1738
1617
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
|
|
1739
|
-
gl.vertexAttribPointer(
|
|
1740
|
-
sha.aVertexPositionLow,
|
|
1741
|
-
this.vertexPositionBufferLow.itemSize,
|
|
1742
|
-
gl.FLOAT,
|
|
1743
|
-
false,
|
|
1744
|
-
0,
|
|
1745
|
-
0
|
|
1746
|
-
);
|
|
1618
|
+
gl.vertexAttribPointer(sha.aVertexPositionLow, this.vertexPositionBufferLow.itemSize, gl.FLOAT, false, 0, 0);
|
|
1747
1619
|
|
|
1748
1620
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexTextureCoordBuffer);
|
|
1749
1621
|
gl.vertexAttribPointer(sha.aTextureCoord, 2, gl.UNSIGNED_SHORT, true, 0, 0);
|
|
@@ -1753,19 +1625,11 @@ class Segment {
|
|
|
1753
1625
|
}
|
|
1754
1626
|
}
|
|
1755
1627
|
|
|
1756
|
-
depthRendering(sh, layerSlice
|
|
1628
|
+
depthRendering(sh, layerSlice) {
|
|
1757
1629
|
var gl = this.handler.gl;
|
|
1758
1630
|
var sha = sh.attributes,
|
|
1759
1631
|
shu = sh.uniforms;
|
|
1760
1632
|
|
|
1761
|
-
var pm = this.materials,
|
|
1762
|
-
p = this.planet;
|
|
1763
|
-
|
|
1764
|
-
// First always draw whole planet base layer segment with solid texture.
|
|
1765
|
-
gl.activeTexture(gl.TEXTURE0 + p.SLICE_SIZE);
|
|
1766
|
-
gl.bindTexture(gl.TEXTURE_2D, defaultTexture || p.solidTextureOne);
|
|
1767
|
-
gl.uniform1i(shu.defaultTexture, p.SLICE_SIZE);
|
|
1768
|
-
|
|
1769
1633
|
var currHeight;
|
|
1770
1634
|
if (layerSlice) {
|
|
1771
1635
|
currHeight = layerSlice[0]._height;
|
|
@@ -1773,62 +1637,23 @@ class Segment {
|
|
|
1773
1637
|
currHeight = 0;
|
|
1774
1638
|
}
|
|
1775
1639
|
|
|
1776
|
-
|
|
1640
|
+
gl.uniform1f(shu.height, currHeight);
|
|
1777
1641
|
|
|
1778
|
-
|
|
1642
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferHigh);
|
|
1643
|
+
gl.vertexAttribPointer(sha.aVertexPositionHigh, this.vertexPositionBufferHigh.itemSize, gl.FLOAT, false, 0, 0);
|
|
1779
1644
|
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
for (n = 0; n < slice.layers.length; n++) {
|
|
1783
|
-
notEmpty = true;
|
|
1784
|
-
p._samplerArr[n] = n;
|
|
1785
|
-
gl.activeTexture(gl.TEXTURE0 + n);
|
|
1786
|
-
gl.bindTexture(gl.TEXTURE_2D, pm[slice.layers[n]._id].texture || p.transparentTexture);
|
|
1787
|
-
}
|
|
1788
|
-
|
|
1789
|
-
if (notEmpty || !isOverlay) {
|
|
1790
|
-
gl.uniform1i(shu.samplerCount, n);
|
|
1791
|
-
gl.uniform1f(shu.height, currHeight);
|
|
1792
|
-
gl.uniform1iv(shu.samplerArr, p._samplerArr);
|
|
1793
|
-
gl.uniform4fv(shu.tileOffsetArr, slice.tileOffsetArr);
|
|
1794
|
-
gl.uniform4fv(shu.visibleExtentOffsetArr, slice.visibleExtentOffsetArr);
|
|
1795
|
-
gl.uniform4fv(shu.transparentColorArr, slice.transparentColorArr);
|
|
1645
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
|
|
1646
|
+
gl.vertexAttribPointer(sha.aVertexPositionLow, this.vertexPositionBufferLow.itemSize, gl.FLOAT, false, 0, 0);
|
|
1796
1647
|
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
sha.aVertexPositionHigh,
|
|
1800
|
-
this.vertexPositionBufferHigh.itemSize,
|
|
1801
|
-
gl.FLOAT,
|
|
1802
|
-
false,
|
|
1803
|
-
0,
|
|
1804
|
-
0
|
|
1805
|
-
);
|
|
1806
|
-
|
|
1807
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
|
|
1808
|
-
gl.vertexAttribPointer(
|
|
1809
|
-
sha.aVertexPositionLow,
|
|
1810
|
-
this.vertexPositionBufferLow.itemSize,
|
|
1811
|
-
gl.FLOAT,
|
|
1812
|
-
false,
|
|
1813
|
-
0,
|
|
1814
|
-
0
|
|
1815
|
-
);
|
|
1816
|
-
|
|
1817
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexTextureCoordBuffer);
|
|
1818
|
-
gl.vertexAttribPointer(sha.aTextureCoord, 2, gl.UNSIGNED_SHORT, true, 0, 0);
|
|
1819
|
-
|
|
1820
|
-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer);
|
|
1821
|
-
gl.drawElements(gl.TRIANGLE_STRIP, this._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
|
|
1822
|
-
}
|
|
1648
|
+
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer);
|
|
1649
|
+
gl.drawElements(gl.TRIANGLE_STRIP, this._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
|
|
1823
1650
|
}
|
|
1824
1651
|
|
|
1825
1652
|
_getIndexBuffer() {
|
|
1826
1653
|
var s = this.node.sideSizeLog2;
|
|
1827
1654
|
var cache = this.planet._indexesCache[Math.log2(this.gridSize)][s[0]][s[1]][s[2]][s[3]];
|
|
1828
1655
|
if (!cache.buffer) {
|
|
1829
|
-
let indexes = segmentHelper
|
|
1830
|
-
.getInstance()
|
|
1831
|
-
.createSegmentIndexes(Math.log2(this.gridSize), [s[0], s[1], s[2], s[3]]);
|
|
1656
|
+
let indexes = segmentHelper.getInstance().createSegmentIndexes(Math.log2(this.gridSize), [s[0], s[1], s[2], s[3]]);
|
|
1832
1657
|
cache.buffer = this.planet.renderer.handler.createElementArrayBuffer(indexes, 1);
|
|
1833
1658
|
this.planet._indexesCacheToRemoveCounter++;
|
|
1834
1659
|
indexes = null;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
class Slice {
|
|
4
|
+
constructor(segment) {
|
|
5
|
+
this.segment = segment;
|
|
6
|
+
this.layers = [];
|
|
7
|
+
this.tileOffsetArr = new Float32Array(segment.planet.SLICE_SIZE_4);
|
|
8
|
+
this.layerOpacityArr = new Float32Array(segment.planet.SLICE_SIZE);
|
|
9
|
+
this.init();
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
init() {}
|
|
13
|
+
|
|
14
|
+
clear() {
|
|
15
|
+
this.layers = null;
|
|
16
|
+
this.tileOffsetArr = null;
|
|
17
|
+
this.layerOpacityArr = null;
|
|
18
|
+
//this.visibleExtentOffsetArr = null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
append(layer, material) {
|
|
22
|
+
let n = this.layers.length;
|
|
23
|
+
|
|
24
|
+
this.layers.push(layer);
|
|
25
|
+
|
|
26
|
+
this.layerOpacityArr[n] = layer.opacity;
|
|
27
|
+
|
|
28
|
+
let n4 = n * 4;
|
|
29
|
+
|
|
30
|
+
let arr = layer.applyMaterial(material);
|
|
31
|
+
this.tileOffsetArr[n4] = arr[0];
|
|
32
|
+
this.tileOffsetArr[n4 + 1] = arr[1];
|
|
33
|
+
this.tileOffsetArr[n4 + 2] = arr[2];
|
|
34
|
+
this.tileOffsetArr[n4 + 3] = arr[3];
|
|
35
|
+
|
|
36
|
+
//arr = this.segment._getLayerExtentOffset(layer);
|
|
37
|
+
//slice.visibleExtentOffsetArr[n4] = arr[0];
|
|
38
|
+
//slice.visibleExtentOffsetArr[n4 + 1] = arr[1];
|
|
39
|
+
//slice.visibleExtentOffsetArr[n4 + 2] = arr[2];
|
|
40
|
+
//slice.visibleExtentOffsetArr[n4 + 3] = arr[3];
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { Slice }
|