@openglobus/og 0.11.6 → 0.11.7
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/package.json +11 -11
- package/src/og/Globe.js +8 -5
- package/src/og/Popup.js +3 -2
- package/src/og/camera/PlanetCamera.js +9 -4
- package/src/og/control/Lighting.js +33 -2
- 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/Label.js +44 -47
- package/src/og/entity/LabelHandler.js +25 -25
- package/src/og/entity/LabelWorker.js +21 -16
- package/src/og/layer/Layer.js +28 -15
- package/src/og/layer/Material.js +1 -1
- package/src/og/quadTree/Node.js +16 -30
- package/src/og/renderer/Renderer.js +19 -29
- package/src/og/renderer/RendererEvents.js +41 -21
- package/src/og/scene/Planet.js +11 -28
- package/src/og/shaders/drawnode.js +135 -142
- package/src/og/shaders/toneMapping.js +1 -0
- package/src/og/shapes/BaseShape.js +1 -1
- package/src/og/utils/FontAtlas.js +6 -2
- 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 +152 -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
|
@@ -84,10 +84,14 @@ class RendererEvents extends Events {
|
|
|
84
84
|
ms.moving ||
|
|
85
85
|
ms.justStopped
|
|
86
86
|
);
|
|
87
|
-
},
|
|
88
|
-
/** Current mouse X position. */
|
|
87
|
+
},
|
|
88
|
+
/** Current screen mouse X position. */
|
|
89
|
+
clientX: 0,
|
|
90
|
+
/** Current screen mouse Y position. */
|
|
91
|
+
clientY: 0,
|
|
92
|
+
/** Current viewport mouse X position. */
|
|
89
93
|
x: 0,
|
|
90
|
-
/** Current mouse Y position. */
|
|
94
|
+
/** Current viewport mouse Y position. */
|
|
91
95
|
y: 0,
|
|
92
96
|
/** Current mouse X position from 0 to 1 */
|
|
93
97
|
nx: 0,
|
|
@@ -357,16 +361,20 @@ class RendererEvents extends Events {
|
|
|
357
361
|
this._mClkBegins = 0;
|
|
358
362
|
}
|
|
359
363
|
|
|
360
|
-
if (ms.
|
|
364
|
+
if (ms.clientX === event.clientX && ms.clientY === event.clientY) {
|
|
361
365
|
return;
|
|
362
|
-
}
|
|
366
|
+
}
|
|
363
367
|
|
|
364
|
-
ms.
|
|
365
|
-
ms.
|
|
368
|
+
ms.clientX = event.clientX;
|
|
369
|
+
ms.clientY = event.clientY;
|
|
370
|
+
|
|
371
|
+
let h = this.renderer.handler;
|
|
372
|
+
|
|
373
|
+
ms.x = event.clientX * h.pixelRatio;
|
|
374
|
+
ms.y = event.clientY * h.pixelRatio;
|
|
366
375
|
|
|
367
|
-
|
|
368
|
-
ms.
|
|
369
|
-
ms.ny = ms.y / cnv.height;
|
|
376
|
+
ms.nx = ms.x / h.canvas.width;
|
|
377
|
+
ms.ny = ms.y / h.canvas.height;
|
|
370
378
|
|
|
371
379
|
ms.moving = true;
|
|
372
380
|
|
|
@@ -492,12 +500,18 @@ class RendererEvents extends Events {
|
|
|
492
500
|
*/
|
|
493
501
|
onTouchStart(event) {
|
|
494
502
|
var ts = this.touchState;
|
|
495
|
-
ts.sys = event;
|
|
496
|
-
|
|
497
|
-
ts.
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
503
|
+
ts.sys = event;
|
|
504
|
+
|
|
505
|
+
ts.clienX = event.touches.item(0).clientX - event.offsetLeft;
|
|
506
|
+
ts.clientY = event.touches.item(0).clientY - event.offsetTop;
|
|
507
|
+
|
|
508
|
+
let h = this.renderer.handler;
|
|
509
|
+
|
|
510
|
+
ts.x = ts.clientX * h.pixelRatio;
|
|
511
|
+
ts.y = ts.clientY * h.pixelRatio;
|
|
512
|
+
|
|
513
|
+
ts.nx = ts.x / h.canvas.width;
|
|
514
|
+
ts.ny = ts.y / h.canvas.height;
|
|
501
515
|
ts.prev_x = ts.x;
|
|
502
516
|
ts.prev_y = ts.y;
|
|
503
517
|
ts.touchStart = true;
|
|
@@ -551,11 +565,17 @@ class RendererEvents extends Events {
|
|
|
551
565
|
*/
|
|
552
566
|
onTouchMove(event) {
|
|
553
567
|
var ts = this.touchState;
|
|
554
|
-
ts.
|
|
555
|
-
ts.
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
568
|
+
ts.clientX = event.touches.item(0).clientX - event.offsetLeft;
|
|
569
|
+
ts.clientY = event.touches.item(0).clientY - event.offsetTop;
|
|
570
|
+
|
|
571
|
+
var h = this.renderer.handler;
|
|
572
|
+
|
|
573
|
+
ts.x = ts.clientX * h.pixelRatio;
|
|
574
|
+
ts.y = ts.clientY * h.pixelRatio;
|
|
575
|
+
|
|
576
|
+
ts.nx = ts.x / h.canvas.width;
|
|
577
|
+
ts.ny = ts.y / h.canvas.height;
|
|
578
|
+
|
|
559
579
|
ts.sys = event;
|
|
560
580
|
ts.moving = true;
|
|
561
581
|
this._dblTchBegins = 0;
|
package/src/og/scene/Planet.js
CHANGED
|
@@ -32,7 +32,7 @@ import { NIGHT, SPECULAR } from "../res/images.js";
|
|
|
32
32
|
import { Geoid } from "../terrain/Geoid.js";
|
|
33
33
|
import { isUndef } from "../utils/shared.js";
|
|
34
34
|
|
|
35
|
-
const MAX_LOD = 0
|
|
35
|
+
const MAX_LOD = 1.0;
|
|
36
36
|
const MIN_LOD = 0.75;
|
|
37
37
|
|
|
38
38
|
let _tempPickingPix_ = new Uint8Array(4),
|
|
@@ -93,7 +93,7 @@ const EVENT_NAMES = [
|
|
|
93
93
|
* @param {string} [options.name="Earth"] - Planet name(Earth by default)
|
|
94
94
|
* @param {Ellipsoid} [options.ellipsoid] - Planet ellipsoid(WGS84 by default)
|
|
95
95
|
* @param {Number} [options.maxGridSize=128] - Segment maximal grid size
|
|
96
|
-
* @param {Number} [options.maxEqualZoomAltitude=
|
|
96
|
+
* @param {Number} [options.maxEqualZoomAltitude=15000000.0] - Maximal altitude since segments on the screen bacame the same zoom level
|
|
97
97
|
* @param {Number} [options.minEqualZoomAltitude=10000.0] - Minimal altitude since segments on the screen bacame the same zoom level
|
|
98
98
|
* @param {Number} [options.minEqualZoomCameraSlope=0.8] - Minimal camera slope above te globe where segments on the screen bacame the same zoom level
|
|
99
99
|
* @fires og.scene.Planet#draw
|
|
@@ -180,7 +180,7 @@ export class Planet extends RenderNode {
|
|
|
180
180
|
this._minAltitude = options.minAltitude;
|
|
181
181
|
this._maxAltitude = options.maxAltitude;
|
|
182
182
|
|
|
183
|
-
this.maxEqualZoomAltitude = options.maxEqualZoomAltitude ||
|
|
183
|
+
this.maxEqualZoomAltitude = options.maxEqualZoomAltitude || 15000000.0;
|
|
184
184
|
this.minEqualZoomAltitude = options.minEqualZoomAltitude || 10000.0;
|
|
185
185
|
this.minEqualZoomCameraSlope = options.minEqualZoomCameraSlope || 0.8;
|
|
186
186
|
|
|
@@ -731,31 +731,13 @@ export class Planet extends RenderNode {
|
|
|
731
731
|
}
|
|
732
732
|
|
|
733
733
|
// Creating quad trees nodes
|
|
734
|
-
this._quadTree = new Node(
|
|
735
|
-
Segment,
|
|
736
|
-
this,
|
|
737
|
-
quadTree.NW,
|
|
738
|
-
null,
|
|
739
|
-
0,
|
|
740
|
-
0,
|
|
734
|
+
this._quadTree = new Node(Segment, this, quadTree.NW, null, 0, 0,
|
|
741
735
|
Extent.createFromArray([-20037508.34, -20037508.34, 20037508.34, 20037508.34])
|
|
742
736
|
);
|
|
743
|
-
this._quadTreeNorth = new Node(
|
|
744
|
-
SegmentLonLat,
|
|
745
|
-
this,
|
|
746
|
-
quadTree.NW,
|
|
747
|
-
null,
|
|
748
|
-
0,
|
|
749
|
-
0,
|
|
737
|
+
this._quadTreeNorth = new Node(SegmentLonLat, this, quadTree.NW, null, 0, 0,
|
|
750
738
|
Extent.createFromArray([-180, mercator.MAX_LAT, 180, 90])
|
|
751
739
|
);
|
|
752
|
-
this._quadTreeSouth = new Node(
|
|
753
|
-
SegmentLonLat,
|
|
754
|
-
this,
|
|
755
|
-
quadTree.NW,
|
|
756
|
-
null,
|
|
757
|
-
0,
|
|
758
|
-
0,
|
|
740
|
+
this._quadTreeSouth = new Node(SegmentLonLat, this, quadTree.NW, null, 0, 0,
|
|
759
741
|
Extent.createFromArray([-180, -90, 180, mercator.MIN_LAT])
|
|
760
742
|
);
|
|
761
743
|
|
|
@@ -771,7 +753,7 @@ export class Planet extends RenderNode {
|
|
|
771
753
|
// loading Earth night glowing texture
|
|
772
754
|
if (this._useNightTexture) {
|
|
773
755
|
createImageBitmap(NIGHT).then(
|
|
774
|
-
(e) => (this._nightTexture = this.renderer.handler.
|
|
756
|
+
(e) => (this._nightTexture = this.renderer.handler.createTextureDefault(e))
|
|
775
757
|
);
|
|
776
758
|
}
|
|
777
759
|
|
|
@@ -1147,12 +1129,13 @@ export class Planet extends RenderNode {
|
|
|
1147
1129
|
this._vectorTileCreator.frame();
|
|
1148
1130
|
}
|
|
1149
1131
|
|
|
1150
|
-
gl.blendEquation(gl.FUNC_ADD);
|
|
1151
1132
|
|
|
1152
|
-
gl.
|
|
1133
|
+
gl.enable(gl.CULL_FACE);
|
|
1153
1134
|
|
|
1154
1135
|
gl.enable(gl.BLEND);
|
|
1155
|
-
gl.
|
|
1136
|
+
gl.blendEquation(gl.FUNC_ADD);
|
|
1137
|
+
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
1138
|
+
//gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ZERO);
|
|
1156
1139
|
|
|
1157
1140
|
if (this.lightEnabled) {
|
|
1158
1141
|
h.programs.drawnode_screen_wl.activate();
|
|
@@ -5,9 +5,17 @@
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
7
|
import { Program } from "../webgl/Program.js";
|
|
8
|
+
|
|
9
|
+
// REMEMBER!
|
|
10
|
+
// src*(1)+dest*(1-src.alpha)
|
|
11
|
+
// glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
|
|
12
|
+
// src*(src.alpha)+dest*(1-src.alpha)
|
|
13
|
+
// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
8
14
|
|
|
9
15
|
const CORNERS = `const vec2 BOTTOMLEFT = vec2(-0.01);
|
|
10
|
-
const vec2 TOPRIGHT = vec2(1.01);`;
|
|
16
|
+
const vec2 TOPRIGHT = vec2(1.01);`;
|
|
17
|
+
|
|
18
|
+
const NIGHT = `const vec3 nightStep = 10.0 * vec3(0.58, 0.48, 0.25);`;
|
|
11
19
|
|
|
12
20
|
export function drawnode_screen_nl() {
|
|
13
21
|
return new Program("drawnode_screen_nl", {
|
|
@@ -66,42 +74,48 @@ export function drawnode_screen_nl() {
|
|
|
66
74
|
uniform sampler2D defaultTexture;
|
|
67
75
|
uniform sampler2D samplerArr[5];
|
|
68
76
|
uniform int samplerCount;
|
|
69
|
-
varying vec2 vTextureCoord;
|
|
77
|
+
varying vec2 vTextureCoord;
|
|
78
|
+
|
|
70
79
|
/* return 1 if v inside the box, return 0 otherwise */
|
|
71
80
|
float insideBox(vec2 v, vec2 bottomLeft, vec2 topRight) {
|
|
72
81
|
vec2 s = step(bottomLeft, v) - step(topRight, v);
|
|
73
82
|
return s.x * s.y;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
${CORNERS}
|
|
86
|
+
|
|
87
|
+
void blend(
|
|
88
|
+
out vec4 prevColor,
|
|
89
|
+
in sampler2D sampler,
|
|
90
|
+
in vec4 tileOffset,
|
|
91
|
+
in vec4 visibleExtentOffset,
|
|
92
|
+
in vec4 transparentColor)
|
|
93
|
+
{
|
|
94
|
+
vec4 t = texture2D( sampler, tileOffset.xy + vTextureCoord.xy * tileOffset.zw );
|
|
95
|
+
|
|
96
|
+
float emptiness = smoothstep(0.35, 0.5, distance( t.rgb, transparentColor.rgb )) *
|
|
97
|
+
insideBox(visibleExtentOffset.xy + vTextureCoord.xy * visibleExtentOffset.zw, BOTTOMLEFT, TOPRIGHT);
|
|
98
|
+
|
|
99
|
+
prevColor = prevColor * (1.0 - t.a * transparentColor.a * emptiness) + vec4(t.rgb, t.a) * transparentColor.a * emptiness;
|
|
74
100
|
}
|
|
75
101
|
|
|
76
|
-
${CORNERS}
|
|
77
|
-
|
|
78
102
|
void main(void) {
|
|
79
103
|
gl_FragColor = texture2D( defaultTexture, vTextureCoord );
|
|
80
|
-
if( samplerCount == 0 ) return;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if( samplerCount == 3 ) return;
|
|
96
|
-
|
|
97
|
-
t = texture2D( samplerArr[3], tileOffsetArr[3].xy + vTextureCoord * tileOffsetArr[3].zw ) * insideBox(visibleExtentOffsetArr[3].xy + vTextureCoord * visibleExtentOffsetArr[3].zw, BOTTOMLEFT, TOPRIGHT);
|
|
98
|
-
emptiness = t.a * smoothstep(0.35, 0.5, distance( t.rgb, transparentColorArr[3].rgb ));
|
|
99
|
-
gl_FragColor = mix( gl_FragColor, vec4(t.rgb, 1.0), transparentColorArr[3].a * t.a * emptiness);
|
|
100
|
-
if( samplerCount == 4 ) return;
|
|
101
|
-
|
|
102
|
-
t = texture2D( samplerArr[4], tileOffsetArr[4].xy + vTextureCoord * tileOffsetArr[4].zw ) * insideBox(visibleExtentOffsetArr[4].xy + vTextureCoord * visibleExtentOffsetArr[4].zw, BOTTOMLEFT, TOPRIGHT);
|
|
103
|
-
emptiness = t.a * smoothstep(0.35, 0.5, distance( t.rgb, transparentColorArr[4].rgb ));
|
|
104
|
-
gl_FragColor = mix( gl_FragColor, vec4(t.rgb, 1.0), transparentColorArr[4].a * t.a * emptiness);
|
|
104
|
+
if( samplerCount == 0 ) return;
|
|
105
|
+
|
|
106
|
+
blend(gl_FragColor, samplerArr[0], tileOffsetArr[0], visibleExtentOffsetArr[0], transparentColorArr[0]);
|
|
107
|
+
if( samplerCount == 1 ) return;
|
|
108
|
+
|
|
109
|
+
blend(gl_FragColor, samplerArr[1], tileOffsetArr[1], visibleExtentOffsetArr[1], transparentColorArr[1]);
|
|
110
|
+
if( samplerCount == 2 ) return;
|
|
111
|
+
|
|
112
|
+
blend(gl_FragColor, samplerArr[2], tileOffsetArr[2], visibleExtentOffsetArr[2], transparentColorArr[2]);
|
|
113
|
+
if( samplerCount == 3 ) return;
|
|
114
|
+
|
|
115
|
+
blend(gl_FragColor, samplerArr[3], tileOffsetArr[3], visibleExtentOffsetArr[3], transparentColorArr[3]);
|
|
116
|
+
if( samplerCount == 4 ) return;
|
|
117
|
+
|
|
118
|
+
blend(gl_FragColor, samplerArr[4], tileOffsetArr[4], visibleExtentOffsetArr[4], transparentColorArr[4]);
|
|
105
119
|
}`
|
|
106
120
|
});
|
|
107
121
|
}
|
|
@@ -209,9 +223,24 @@ export function drawnode_screen_wl() {
|
|
|
209
223
|
return s.x * s.y;
|
|
210
224
|
}
|
|
211
225
|
|
|
212
|
-
${CORNERS}
|
|
213
|
-
|
|
214
|
-
|
|
226
|
+
${CORNERS}
|
|
227
|
+
|
|
228
|
+
${NIGHT}
|
|
229
|
+
|
|
230
|
+
void blend(
|
|
231
|
+
out vec4 prevColor,
|
|
232
|
+
in sampler2D sampler,
|
|
233
|
+
in vec4 tileOffset,
|
|
234
|
+
in vec4 visibleExtentOffset,
|
|
235
|
+
in vec4 transparentColor)
|
|
236
|
+
{
|
|
237
|
+
vec4 t = texture2D( sampler, tileOffset.xy + vTextureCoord.xy * tileOffset.zw );
|
|
238
|
+
|
|
239
|
+
float emptiness = smoothstep(0.35, 0.5, distance( t.rgb, transparentColor.rgb )) *
|
|
240
|
+
insideBox(visibleExtentOffset.xy + vTextureCoord.xy * visibleExtentOffset.zw, BOTTOMLEFT, TOPRIGHT);
|
|
241
|
+
|
|
242
|
+
prevColor = prevColor * (1.0 - t.a * transparentColor.a * emptiness) + vec4(t.rgb, t.a) * transparentColor.a * emptiness;
|
|
243
|
+
}
|
|
215
244
|
|
|
216
245
|
void main(void) {
|
|
217
246
|
|
|
@@ -236,54 +265,24 @@ export function drawnode_screen_wl() {
|
|
|
236
265
|
gl_FragColor = vec4(t.rgb * lightWeighting + night + spec, t.a);
|
|
237
266
|
if( samplerCount == 0 ) return;
|
|
238
267
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
if( samplerCount == 2 ) return;
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
spec = specularMaterial[3].rgb * pow( reflection, specularMaterial[3].w);
|
|
262
|
-
lightWeighting = ambientMaterial[3] + diffuseMaterial[3] * diffuseLightWeighting + spec;
|
|
263
|
-
|
|
264
|
-
t = texture2D( samplerArr[2], tileOffsetArr[2].xy + vTextureCoord.xy * tileOffsetArr[2].zw ) * insideBox(visibleExtentOffsetArr[2].xy + vTextureCoord.xy * visibleExtentOffsetArr[2].zw, BOTTOMLEFT, TOPRIGHT);
|
|
265
|
-
emptiness = t.a * smoothstep(0.35, 0.5, distance( t.rgb, transparentColorArr[2].rgb ));
|
|
266
|
-
gl_FragColor = mix( gl_FragColor, vec4(t.rgb * lightWeighting + night + spec, 1.0), transparentColorArr[2].a * t.a * emptiness);
|
|
267
|
-
if( samplerCount == 3 ) return;
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
spec = specularMaterial[4].rgb * pow( reflection, specularMaterial[4].w);
|
|
272
|
-
lightWeighting = ambientMaterial[4] + diffuseMaterial[4] * diffuseLightWeighting + spec;
|
|
273
|
-
|
|
274
|
-
t = texture2D( samplerArr[3], tileOffsetArr[3].xy + vTextureCoord.xy * tileOffsetArr[3].zw ) * insideBox(visibleExtentOffsetArr[3].xy + vTextureCoord.xy * visibleExtentOffsetArr[3].zw, BOTTOMLEFT, TOPRIGHT);
|
|
275
|
-
emptiness = t.a * smoothstep(0.35, 0.5, distance( t.rgb, transparentColorArr[3].rgb ));
|
|
276
|
-
gl_FragColor = mix( gl_FragColor, vec4(t.rgb * lightWeighting + night + spec, 1.0), transparentColorArr[3].a * t.a * emptiness);
|
|
277
|
-
if( samplerCount == 4 ) return;
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
spec = specularMaterial[5].rgb * pow( reflection, specularMaterial[5].w);
|
|
282
|
-
lightWeighting = ambientMaterial[5] + diffuseMaterial[5] * diffuseLightWeighting + spec;
|
|
283
|
-
|
|
284
|
-
t = texture2D( samplerArr[4], tileOffsetArr[4].xy + vTextureCoord.xy * tileOffsetArr[4].zw ) * insideBox(visibleExtentOffsetArr[4].xy + vTextureCoord.xy * visibleExtentOffsetArr[4].zw, BOTTOMLEFT, TOPRIGHT);
|
|
285
|
-
emptiness = t.a * smoothstep(0.35, 0.5, distance( t.rgb, transparentColorArr[4].rgb ));
|
|
286
|
-
gl_FragColor = mix( gl_FragColor, vec4(t.rgb * lightWeighting + night + spec, 1.0), transparentColorArr[4].a * t.a * emptiness);
|
|
268
|
+
blend(gl_FragColor, samplerArr[0], tileOffsetArr[0], visibleExtentOffsetArr[0], transparentColorArr[0],
|
|
269
|
+
specularMaterial[1], ambientMaterial[1], diffuseMaterial[1]);
|
|
270
|
+
if( samplerCount == 1 ) return;
|
|
271
|
+
|
|
272
|
+
blend(gl_FragColor, samplerArr[1], tileOffsetArr[1], visibleExtentOffsetArr[1], transparentColorArr[1],
|
|
273
|
+
specularMaterial[2], ambientMaterial[2], diffuseMaterial[2]);
|
|
274
|
+
if( samplerCount == 2 ) return;
|
|
275
|
+
|
|
276
|
+
blend(gl_FragColor, samplerArr[2], tileOffsetArr[2], visibleExtentOffsetArr[2], transparentColorArr[2],
|
|
277
|
+
specularMaterial[3], ambientMaterial[3], diffuseMaterial[3]);
|
|
278
|
+
if( samplerCount == 3 ) return;
|
|
279
|
+
|
|
280
|
+
blend(gl_FragColor, samplerArr[3], tileOffsetArr[3], visibleExtentOffsetArr[3], transparentColorArr[3],
|
|
281
|
+
specularMaterial[4], ambientMaterial[4], diffuseMaterial[4]);
|
|
282
|
+
if( samplerCount == 4 ) return;
|
|
283
|
+
|
|
284
|
+
blend(gl_FragColor, samplerArr[4], tileOffsetArr[4], visibleExtentOffsetArr[4], transparentColorArr[4],
|
|
285
|
+
specularMaterial[5], ambientMaterial[5], diffuseMaterial[5]);
|
|
287
286
|
}`
|
|
288
287
|
});
|
|
289
288
|
}
|
|
@@ -321,7 +320,7 @@ export function drawnode_screen_wl_webgl2() {
|
|
|
321
320
|
aTextureCoord: "vec2"
|
|
322
321
|
},
|
|
323
322
|
|
|
324
|
-
vertexShader: `#version 300 es
|
|
323
|
+
vertexShader: `#version 300 es
|
|
325
324
|
|
|
326
325
|
in vec3 aVertexPositionHigh;
|
|
327
326
|
in vec3 aVertexPositionLow;
|
|
@@ -387,7 +386,12 @@ export function drawnode_screen_wl_webgl2() {
|
|
|
387
386
|
in vec4 vTextureCoord;
|
|
388
387
|
in vec2 vGlobalTextureCoord;
|
|
389
388
|
in vec4 v_vertex;
|
|
390
|
-
in float v_height;
|
|
389
|
+
in float v_height;
|
|
390
|
+
|
|
391
|
+
float shininess;
|
|
392
|
+
float reflection;
|
|
393
|
+
float diffuseLightWeighting;
|
|
394
|
+
vec3 night;
|
|
391
395
|
|
|
392
396
|
layout(location = 0) out vec4 fragColor;
|
|
393
397
|
|
|
@@ -399,7 +403,28 @@ export function drawnode_screen_wl_webgl2() {
|
|
|
399
403
|
|
|
400
404
|
${CORNERS}
|
|
401
405
|
|
|
402
|
-
|
|
406
|
+
${NIGHT}
|
|
407
|
+
|
|
408
|
+
void blend(
|
|
409
|
+
out vec4 dest,
|
|
410
|
+
in sampler2D sampler,
|
|
411
|
+
in vec4 tileOffset,
|
|
412
|
+
in vec4 visibleExtentOffset,
|
|
413
|
+
in vec4 transparentColor,
|
|
414
|
+
in vec4 specular,
|
|
415
|
+
in vec3 ambient,
|
|
416
|
+
in vec3 diffuse)
|
|
417
|
+
{
|
|
418
|
+
vec3 spec = specular.rgb * pow(reflection, specular.w) * (1.0 + shininess);
|
|
419
|
+
vec3 lightWeighting = ambient + diffuse * diffuseLightWeighting + spec;
|
|
420
|
+
|
|
421
|
+
vec4 src = texture( sampler, tileOffset.xy + vTextureCoord.xy * tileOffset.zw );
|
|
422
|
+
|
|
423
|
+
float emptiness = smoothstep(0.35, 0.5, distance( src.rgb, transparentColor.rgb )) *
|
|
424
|
+
insideBox(visibleExtentOffset.xy + vTextureCoord.xy * visibleExtentOffset.zw, BOTTOMLEFT, TOPRIGHT);
|
|
425
|
+
|
|
426
|
+
dest = dest * (1.0 - src.a * transparentColor.a * emptiness) + vec4(src.rgb * lightWeighting + night + spec * src.a, src.a) * transparentColor.a * emptiness;
|
|
427
|
+
}
|
|
403
428
|
|
|
404
429
|
void main(void) {
|
|
405
430
|
|
|
@@ -408,70 +433,38 @@ export function drawnode_screen_wl_webgl2() {
|
|
|
408
433
|
vec3 lightDirection = normalize(lightsPositions[0].xyz - v_vertex.xyz * lightsPositions[0].w);
|
|
409
434
|
vec3 eyeDirection = normalize(-v_vertex.xyz);
|
|
410
435
|
vec3 reflectionDirection = reflect(-lightDirection, normal);
|
|
411
|
-
vec4 nightImageColor = texture( nightTexture, vGlobalTextureCoord.st );
|
|
412
|
-
float shininess = texture( specularTexture, vGlobalTextureCoord.st ).r * 255.0 * overGround;
|
|
413
|
-
float reflection = max( dot(reflectionDirection, eyeDirection), 0.0);
|
|
414
|
-
float diffuseLightWeighting = max(dot(normal, lightDirection), 0.0);
|
|
415
|
-
vec3 night = nightStep * (0.3 - diffuseLightWeighting) * nightImageColor.rgb;
|
|
416
|
-
night *= overGround * step(0.0, night);
|
|
417
|
-
|
|
418
|
-
|
|
436
|
+
vec4 nightImageColor = texture( nightTexture, vGlobalTextureCoord.st );
|
|
419
437
|
|
|
438
|
+
shininess = texture( specularTexture, vGlobalTextureCoord.st ).r * 255.0 * overGround;
|
|
439
|
+
reflection = max( dot(reflectionDirection, eyeDirection), 0.0);
|
|
440
|
+
diffuseLightWeighting = max(dot(normal, lightDirection), 0.0);
|
|
441
|
+
night = nightStep * (.18 - diffuseLightWeighting * 3.0) * nightImageColor.rgb;
|
|
442
|
+
night *= overGround * step(0.0, night);
|
|
443
|
+
|
|
420
444
|
vec3 spec = specularMaterial[0].rgb * pow( reflection, specularMaterial[0].w) * shininess;
|
|
421
445
|
vec3 lightWeighting = ambientMaterial[0] + diffuseMaterial[0] * diffuseLightWeighting + spec;
|
|
422
|
-
|
|
423
446
|
vec4 t = texture( defaultTexture, vTextureCoord.xy );
|
|
424
447
|
fragColor = vec4(t.rgb * lightWeighting + night + spec, t.a);
|
|
425
|
-
if( samplerCount == 0 ) return;
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
if( samplerCount == 2 ) return;
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
spec = specularMaterial[3].rgb * pow( reflection, specularMaterial[3].w);
|
|
450
|
-
lightWeighting = ambientMaterial[3] + diffuseMaterial[3] * diffuseLightWeighting + spec;
|
|
451
|
-
|
|
452
|
-
t = texture( samplerArr[2], tileOffsetArr[2].xy + vTextureCoord.xy * tileOffsetArr[2].zw ) * insideBox(visibleExtentOffsetArr[2].xy + vTextureCoord.xy * visibleExtentOffsetArr[2].zw, BOTTOMLEFT, TOPRIGHT);
|
|
453
|
-
emptiness = t.a * smoothstep(0.35, 0.5, distance( t.rgb, transparentColorArr[2].rgb ));
|
|
454
|
-
fragColor = mix( fragColor, vec4(t.rgb * lightWeighting + night + spec, 1.0), transparentColorArr[2].a * t.a * emptiness);
|
|
455
|
-
if( samplerCount == 3 ) return;
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
spec = specularMaterial[4].rgb * pow( reflection, specularMaterial[4].w);
|
|
460
|
-
lightWeighting = ambientMaterial[4] + diffuseMaterial[4] * diffuseLightWeighting + spec;
|
|
461
|
-
|
|
462
|
-
t = texture( samplerArr[3], tileOffsetArr[3].xy + vTextureCoord.xy * tileOffsetArr[3].zw ) * insideBox(visibleExtentOffsetArr[3].xy + vTextureCoord.xy * visibleExtentOffsetArr[3].zw, BOTTOMLEFT, TOPRIGHT);
|
|
463
|
-
emptiness = t.a * smoothstep(0.35, 0.5, distance( t.rgb, transparentColorArr[3].rgb ));
|
|
464
|
-
fragColor = mix( fragColor, vec4(t.rgb * lightWeighting + night + spec, 1.0), transparentColorArr[3].a * t.a * emptiness);
|
|
465
|
-
if( samplerCount == 4 ) return;
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
spec = specularMaterial[5].rgb * pow( reflection, specularMaterial[5].w);
|
|
470
|
-
lightWeighting = ambientMaterial[5] + diffuseMaterial[5] * diffuseLightWeighting + spec;
|
|
471
|
-
|
|
472
|
-
t = texture( samplerArr[4], tileOffsetArr[4].xy + vTextureCoord.xy * tileOffsetArr[4].zw ) * insideBox(visibleExtentOffsetArr[4].xy + vTextureCoord.xy * visibleExtentOffsetArr[4].zw, BOTTOMLEFT, TOPRIGHT);
|
|
473
|
-
emptiness = t.a * smoothstep(0.35, 0.5, distance( t.rgb, transparentColorArr[4].rgb ));
|
|
474
|
-
fragColor = mix( fragColor, vec4(t.rgb * lightWeighting + night + spec, 1.0), transparentColorArr[4].a * t.a * emptiness);
|
|
448
|
+
if( samplerCount == 0 ) return;
|
|
449
|
+
|
|
450
|
+
blend(fragColor, samplerArr[0], tileOffsetArr[0], visibleExtentOffsetArr[0], transparentColorArr[0],
|
|
451
|
+
specularMaterial[1], ambientMaterial[1], diffuseMaterial[1]);
|
|
452
|
+
if( samplerCount == 1 ) return;
|
|
453
|
+
|
|
454
|
+
blend(fragColor, samplerArr[1], tileOffsetArr[1], visibleExtentOffsetArr[1], transparentColorArr[1],
|
|
455
|
+
specularMaterial[2], ambientMaterial[2], diffuseMaterial[2]);
|
|
456
|
+
if( samplerCount == 2 ) return;
|
|
457
|
+
|
|
458
|
+
blend(fragColor, samplerArr[2], tileOffsetArr[2], visibleExtentOffsetArr[2], transparentColorArr[2],
|
|
459
|
+
specularMaterial[3], ambientMaterial[3], diffuseMaterial[3]);
|
|
460
|
+
if( samplerCount == 3 ) return;
|
|
461
|
+
|
|
462
|
+
blend(fragColor, samplerArr[3], tileOffsetArr[3], visibleExtentOffsetArr[3], transparentColorArr[3],
|
|
463
|
+
specularMaterial[4], ambientMaterial[4], diffuseMaterial[4]);
|
|
464
|
+
if( samplerCount == 4 ) return;
|
|
465
|
+
|
|
466
|
+
blend(fragColor, samplerArr[4], tileOffsetArr[4], visibleExtentOffsetArr[4], transparentColorArr[4],
|
|
467
|
+
specularMaterial[5], ambientMaterial[5], diffuseMaterial[5]);
|
|
475
468
|
}`
|
|
476
469
|
});
|
|
477
470
|
}
|
|
@@ -80,6 +80,7 @@ export function toneMapping() {
|
|
|
80
80
|
float oneByGamma = gamma / gamma;
|
|
81
81
|
float oneByWhitePoint = whitepoint / whitepoint;
|
|
82
82
|
vec3 mapped = ReinhardToneMapping2(hdrColor) * oneByGamma * oneByWhitePoint;
|
|
83
|
+
//vec3 mapped = ACESFilmicToneMapping(hdrColor) * oneByGamma * oneByWhitePoint;
|
|
83
84
|
|
|
84
85
|
mapped = pow(mapped, vec3(1.0 / gamma));
|
|
85
86
|
|
|
@@ -304,7 +304,7 @@ class BaseShape {
|
|
|
304
304
|
var img = new Image();
|
|
305
305
|
var that = this;
|
|
306
306
|
img.onload = function () {
|
|
307
|
-
that.texture = renderNode.renderer.handler.
|
|
307
|
+
that.texture = renderNode.renderer.handler.createTextureDefault(this);
|
|
308
308
|
};
|
|
309
309
|
img.src = this._src;
|
|
310
310
|
}
|
|
@@ -138,10 +138,14 @@ class FontAtlas {
|
|
|
138
138
|
|
|
139
139
|
let img = new Image();
|
|
140
140
|
img.onload = () => {
|
|
141
|
-
|
|
141
|
+
this._createTexture(atlas, img);
|
|
142
142
|
def.resolve(index);
|
|
143
143
|
};
|
|
144
144
|
img.src = ARIAL_FONT_B64;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
_createTexture(atlas, img) {
|
|
148
|
+
atlas.createTexture(img);
|
|
145
149
|
}
|
|
146
150
|
|
|
147
151
|
loadFont(faceName, srcDir, atlasUrl) {
|
|
@@ -183,7 +187,7 @@ class FontAtlas {
|
|
|
183
187
|
|
|
184
188
|
let img = new Image();
|
|
185
189
|
img.onload = () => {
|
|
186
|
-
|
|
190
|
+
this._createTexture(atlas, img);
|
|
187
191
|
def.resolve(index);
|
|
188
192
|
};
|
|
189
193
|
|
|
@@ -180,14 +180,14 @@ class TextureAtlas {
|
|
|
180
180
|
* Creates atlas gl texture.
|
|
181
181
|
* @public
|
|
182
182
|
*/
|
|
183
|
-
createTexture(img) {
|
|
183
|
+
createTexture(img, internalFormat) {
|
|
184
184
|
if (this._handler) {
|
|
185
185
|
this._handler.gl.deleteTexture(this.texture);
|
|
186
186
|
if (img) {
|
|
187
187
|
this.canvas.resize(img.width, img.height);
|
|
188
188
|
this.canvas.drawImage(img, 0, 0, img.width, img.height);
|
|
189
189
|
}
|
|
190
|
-
this.texture = this._handler.createTexture_l(this.canvas._canvas);
|
|
190
|
+
this.texture = this._handler.createTexture_l(this.canvas._canvas, internalFormat);
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
193
|
|
|
@@ -217,8 +217,6 @@ export class VectorTileCreator {
|
|
|
217
217
|
|
|
218
218
|
// var prevLayerId = -1;
|
|
219
219
|
|
|
220
|
-
var extentParams = new Float32Array(4);
|
|
221
|
-
|
|
222
220
|
var extentParamsHigh = new Float32Array(4);
|
|
223
221
|
var extentParamsLow = new Float32Array(4);
|
|
224
222
|
|
|
@@ -245,7 +243,7 @@ export class VectorTileCreator {
|
|
|
245
243
|
|
|
246
244
|
f.bindOutputTexture(texture);
|
|
247
245
|
|
|
248
|
-
gl.clearColor(
|
|
246
|
+
gl.clearColor(0.0, 0.0, 0.0, 0.0);
|
|
249
247
|
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
250
248
|
|
|
251
249
|
var extent = material.segment.getExtentMerc();
|
package/src/og/utils/shared.js
CHANGED