@openglobus/og 0.22.2 → 0.23.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 +137 -1
- package/lib/@openglobus/js/Object3d.d.ts +20 -10
- package/lib/@openglobus/js/camera/Camera.d.ts +9 -0
- package/lib/@openglobus/js/camera/Frustum.d.ts +3 -0
- package/lib/@openglobus/js/control/CameraLock.d.ts +38 -0
- package/lib/@openglobus/js/control/SimpleNavigation.d.ts +27 -10
- package/lib/@openglobus/js/control/geoObjectEditor/ArrowEntity.d.ts +15 -0
- package/lib/@openglobus/js/control/geoObjectEditor/AxisTrackEntity.d.ts +9 -0
- package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditor.d.ts +13 -0
- package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorDialog.d.ts +69 -0
- package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +78 -9
- package/lib/@openglobus/js/control/geoObjectEditor/MoveAxisEntity.d.ts +17 -0
- package/lib/@openglobus/js/control/geoObjectEditor/MovePlaneEntity.d.ts +7 -0
- package/lib/@openglobus/js/control/geoObjectEditor/RotateEntity.d.ts +9 -0
- package/lib/@openglobus/js/control/geoObjectEditor/colors.d.ts +8 -0
- package/lib/@openglobus/js/control/index.d.ts +2 -0
- package/lib/@openglobus/js/entity/Entity.d.ts +278 -19
- package/lib/@openglobus/js/entity/EntityCollection.d.ts +8 -9
- package/lib/@openglobus/js/entity/GeoObject.d.ts +141 -36
- package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +39 -63
- package/lib/@openglobus/js/entity/InstanceData.d.ts +76 -0
- package/lib/@openglobus/js/entity/Polyline.d.ts +19 -6
- package/lib/@openglobus/js/entity/PolylineHandler.d.ts +7 -0
- package/lib/@openglobus/js/index.d.ts +2 -1
- package/lib/@openglobus/js/layer/Vector.d.ts +4 -0
- package/lib/@openglobus/js/light/LightSource.d.ts +1 -139
- package/lib/@openglobus/js/math/Quat.d.ts +46 -33
- package/lib/@openglobus/js/math/Ray.d.ts +10 -4
- package/lib/@openglobus/js/math/Vec3.d.ts +15 -0
- package/lib/@openglobus/js/math.d.ts +2 -2
- package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +2 -2
- package/lib/@openglobus/js/quadTree/Node.d.ts +1 -1
- package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +1 -1
- package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +1 -1
- package/lib/@openglobus/js/renderer/Renderer.d.ts +63 -44
- package/lib/@openglobus/js/renderer/RendererEvents.d.ts +1 -0
- package/lib/@openglobus/js/scene/Planet.d.ts +11 -7
- package/lib/@openglobus/js/scene/RenderNode.d.ts +10 -25
- package/lib/@openglobus/js/shaders/drawnode.d.ts +1 -0
- package/lib/@openglobus/js/shaders/geoObject.d.ts +1 -0
- package/lib/@openglobus/js/shaders/utils.d.ts +1 -1
- package/lib/@openglobus/js/ui/Checkbox.d.ts +31 -0
- package/lib/@openglobus/js/ui/Dialog.d.ts +3 -0
- package/lib/@openglobus/js/ui/Input.d.ts +32 -0
- package/lib/@openglobus/js/ui/View.d.ts +3 -1
- package/lib/@openglobus/js/utils/objParser.d.ts +44 -12
- package/lib/@openglobus/js/utils/shared.d.ts +22 -0
- package/lib/@openglobus/js/webgl/BaseFramebuffer.d.ts +0 -1
- package/lib/@openglobus/js/webgl/Framebuffer.d.ts +35 -8
- package/lib/@openglobus/js/webgl/Handler.d.ts +1 -0
- package/lib/@openglobus/og.css +1 -1
- package/lib/@openglobus/og.esm.js +1 -1
- package/lib/@openglobus/og.esm.js.map +1 -1
- package/lib/@openglobus/og.umd.js +1 -1
- package/lib/@openglobus/og.umd.js.map +1 -1
- package/lib/js/Object3d.d.ts +20 -10
- package/lib/js/Object3d.js +124 -48
- package/lib/js/camera/Camera.d.ts +9 -0
- package/lib/js/camera/Camera.js +27 -1
- package/lib/js/camera/Frustum.d.ts +3 -0
- package/lib/js/camera/Frustum.js +7 -0
- package/lib/js/control/Atmosphere.js +10 -6
- package/lib/js/control/CameraLock.d.ts +38 -0
- package/lib/js/control/CameraLock.js +216 -0
- package/lib/js/control/Control.js +1 -1
- package/lib/js/control/DebugInfo.js +13 -3
- package/lib/js/control/KeyboardNavigation.js +1 -1
- package/lib/js/control/ScaleControl.js +9 -3
- package/lib/js/control/SimpleNavigation.d.ts +27 -10
- package/lib/js/control/SimpleNavigation.js +148 -49
- package/lib/js/control/Sun.js +1 -1
- package/lib/js/control/elevationProfile/ElevationProfileScene.js +4 -4
- package/lib/js/control/geoObjectEditor/ArrowEntity.d.ts +15 -0
- package/lib/js/control/geoObjectEditor/ArrowEntity.js +59 -0
- package/lib/js/control/geoObjectEditor/AxisTrackEntity.d.ts +9 -0
- package/lib/js/control/geoObjectEditor/AxisTrackEntity.js +93 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditor.d.ts +13 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditor.js +30 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditorDialog.d.ts +69 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditorDialog.js +502 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +78 -9
- package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.js +487 -43
- package/lib/js/control/geoObjectEditor/MoveAxisEntity.d.ts +17 -0
- package/lib/js/control/geoObjectEditor/MoveAxisEntity.js +106 -0
- package/lib/js/control/geoObjectEditor/MovePlaneEntity.d.ts +7 -0
- package/lib/js/control/geoObjectEditor/MovePlaneEntity.js +34 -0
- package/lib/js/control/geoObjectEditor/RotateEntity.d.ts +9 -0
- package/lib/js/control/geoObjectEditor/RotateEntity.js +105 -0
- package/lib/js/control/geoObjectEditor/colors.d.ts +8 -0
- package/lib/js/control/geoObjectEditor/colors.js +8 -0
- package/lib/js/control/index.d.ts +2 -0
- package/lib/js/control/index.js +2 -0
- package/lib/js/control/timeline/TimelineControl.js +2 -0
- package/lib/js/entity/Entity.d.ts +278 -19
- package/lib/js/entity/Entity.js +483 -63
- package/lib/js/entity/EntityCollection.d.ts +8 -9
- package/lib/js/entity/EntityCollection.js +48 -45
- package/lib/js/entity/GeoObject.d.ts +141 -36
- package/lib/js/entity/GeoObject.js +153 -90
- package/lib/js/entity/GeoObjectHandler.d.ts +39 -63
- package/lib/js/entity/GeoObjectHandler.js +198 -295
- package/lib/js/entity/InstanceData.d.ts +76 -0
- package/lib/js/entity/InstanceData.js +344 -0
- package/lib/js/entity/Polyline.d.ts +19 -6
- package/lib/js/entity/Polyline.js +76 -36
- package/lib/js/entity/PolylineHandler.d.ts +7 -0
- package/lib/js/entity/PolylineHandler.js +26 -1
- package/lib/js/index.d.ts +2 -1
- package/lib/js/index.js +2 -1
- package/lib/js/layer/Bing.js +2 -2
- package/lib/js/layer/Vector.d.ts +4 -0
- package/lib/js/layer/Vector.js +16 -0
- package/lib/js/light/LightSource.d.ts +1 -139
- package/lib/js/light/LightSource.js +21 -227
- package/lib/js/math/Quat.d.ts +46 -33
- package/lib/js/math/Quat.js +91 -90
- package/lib/js/math/Ray.d.ts +10 -4
- package/lib/js/math/Ray.js +20 -4
- package/lib/js/math/Vec3.d.ts +15 -0
- package/lib/js/math/Vec3.js +30 -1
- package/lib/js/math.d.ts +2 -2
- package/lib/js/math.js +3 -3
- package/lib/js/quadTree/EntityCollectionNode.d.ts +2 -2
- package/lib/js/quadTree/EntityCollectionNode.js +8 -8
- package/lib/js/quadTree/Node.d.ts +1 -1
- package/lib/js/quadTree/Node.js +2 -2
- package/lib/js/quadTree/QuadTreeStrategy.js +1 -1
- package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +1 -1
- package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.js +2 -2
- package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +1 -1
- package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.js +2 -2
- package/lib/js/renderer/Renderer.d.ts +63 -44
- package/lib/js/renderer/Renderer.js +260 -263
- package/lib/js/renderer/RendererEvents.d.ts +1 -0
- package/lib/js/renderer/RendererEvents.js +2 -1
- package/lib/js/scene/Planet.d.ts +11 -7
- package/lib/js/scene/Planet.js +109 -87
- package/lib/js/scene/RenderNode.d.ts +10 -25
- package/lib/js/scene/RenderNode.js +70 -58
- package/lib/js/shaders/depth.js +2 -5
- package/lib/js/shaders/drawnode.d.ts +1 -0
- package/lib/js/shaders/drawnode.js +51 -52
- package/lib/js/shaders/geoObject.d.ts +1 -0
- package/lib/js/shaders/geoObject.js +154 -91
- package/lib/js/shaders/polyline.js +68 -51
- package/lib/js/shaders/utils.d.ts +1 -1
- package/lib/js/shaders/utils.js +11 -0
- package/lib/js/ui/Checkbox.d.ts +31 -0
- package/lib/js/ui/Checkbox.js +110 -0
- package/lib/js/ui/Color.js +2 -1
- package/lib/js/ui/Dialog.d.ts +3 -0
- package/lib/js/ui/Dialog.js +20 -0
- package/lib/js/ui/Input.d.ts +32 -0
- package/lib/js/ui/Input.js +107 -0
- package/lib/js/ui/View.d.ts +3 -1
- package/lib/js/ui/View.js +6 -0
- package/lib/js/utils/objParser.d.ts +44 -12
- package/lib/js/utils/objParser.js +241 -149
- package/lib/js/utils/shared.d.ts +22 -0
- package/lib/js/utils/shared.js +34 -0
- package/lib/js/webgl/BaseFramebuffer.d.ts +0 -1
- package/lib/js/webgl/Framebuffer.d.ts +35 -8
- package/lib/js/webgl/Framebuffer.js +136 -29
- package/lib/js/webgl/Handler.d.ts +1 -0
- package/lib/js/webgl/Handler.js +11 -1
- package/lib/js/webgl/Program.js +0 -8
- package/package.json +4 -2
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
import { BaseFramebuffer } from "./BaseFramebuffer";
|
|
2
2
|
import { ImageCanvas } from "../ImageCanvas";
|
|
3
|
+
const TypeArrayConstructor = {
|
|
4
|
+
"UNSIGNED_BYTE": Uint8Array,
|
|
5
|
+
"FLOAT": Float32Array
|
|
6
|
+
};
|
|
7
|
+
export function clientWaitAsync(gl, sync, flags) {
|
|
8
|
+
return new Promise((resolve, reject) => {
|
|
9
|
+
function check() {
|
|
10
|
+
const res = gl.clientWaitSync(sync, flags, 0);
|
|
11
|
+
if (res == gl.WAIT_FAILED) {
|
|
12
|
+
reject();
|
|
13
|
+
}
|
|
14
|
+
else if (res == gl.TIMEOUT_EXPIRED) {
|
|
15
|
+
requestAnimationFrame(check);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
resolve();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
check();
|
|
22
|
+
});
|
|
23
|
+
}
|
|
3
24
|
/**
|
|
4
25
|
* Class represents framebuffer.
|
|
5
26
|
* @class
|
|
@@ -9,24 +30,75 @@ import { ImageCanvas } from "../ImageCanvas";
|
|
|
9
30
|
export class Framebuffer extends BaseFramebuffer {
|
|
10
31
|
constructor(handler, options = {}) {
|
|
11
32
|
super(handler, options);
|
|
12
|
-
this.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
33
|
+
this.readPixelBuffersAsync = () => {
|
|
34
|
+
const gl = this.handler.gl;
|
|
35
|
+
if (this._skipFrame)
|
|
36
|
+
return;
|
|
37
|
+
this._skipFrame = true;
|
|
38
|
+
let w = this.width, h = this.height;
|
|
39
|
+
let pb = this.pixelBuffers;
|
|
40
|
+
this.activate();
|
|
41
|
+
for (let i = 0; i < pb.length; i++) {
|
|
42
|
+
let pbi = pb[i];
|
|
43
|
+
gl.bindBuffer(gl.PIXEL_PACK_BUFFER, pbi.buffer);
|
|
44
|
+
gl.bufferData(gl.PIXEL_PACK_BUFFER, pbi.data.byteLength, gl.STREAM_READ);
|
|
45
|
+
gl.readBuffer(pbi.glAttachment);
|
|
46
|
+
gl.readPixels(0, 0, w, h, gl.RGBA, pbi.glType, 0);
|
|
47
|
+
gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
|
|
48
|
+
}
|
|
49
|
+
this.deactivate();
|
|
50
|
+
const sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);
|
|
51
|
+
gl.flush();
|
|
52
|
+
clientWaitAsync(gl, sync, 0).then(() => {
|
|
53
|
+
this._skipFrame = false;
|
|
54
|
+
gl.deleteSync(sync);
|
|
55
|
+
for (let i = 0; i < pb.length; i++) {
|
|
56
|
+
let pbi = pb[i];
|
|
57
|
+
if (pbi.data) {
|
|
58
|
+
gl.bindBuffer(gl.PIXEL_PACK_BUFFER, pbi.buffer);
|
|
59
|
+
gl.getBufferSubData(gl.PIXEL_PACK_BUFFER, 0, pbi.data);
|
|
60
|
+
}
|
|
21
61
|
}
|
|
22
|
-
|
|
62
|
+
gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
|
|
23
63
|
});
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
64
|
+
};
|
|
65
|
+
this._targets = Framebuffer.createTargets(options.targets);
|
|
66
|
+
this._size = this._targets.length;
|
|
28
67
|
this._renderbufferTarget = options.renderbufferTarget != undefined ? options.renderbufferTarget : "DEPTH_ATTACHMENT";
|
|
29
68
|
this.textures = options.textures || new Array(this._size);
|
|
69
|
+
this.pixelBuffers = [];
|
|
70
|
+
this._skipFrame = false;
|
|
71
|
+
}
|
|
72
|
+
static createTargets(targets) {
|
|
73
|
+
let attInd = 0;
|
|
74
|
+
let pbInd = 0;
|
|
75
|
+
if (targets) {
|
|
76
|
+
return targets.map((ti) => {
|
|
77
|
+
let attachment = ti.attachment || "COLOR_ATTACHMENT";
|
|
78
|
+
if (attachment === "COLOR_ATTACHMENT") {
|
|
79
|
+
attachment = `COLOR_ATTACHMENT${attInd++}`;
|
|
80
|
+
}
|
|
81
|
+
let type = ti.type || "UNSIGNED_BYTE";
|
|
82
|
+
return {
|
|
83
|
+
internalFormat: ti.internalFormat || "RGBA",
|
|
84
|
+
format: ti.format || "RGBA",
|
|
85
|
+
type,
|
|
86
|
+
attachment,
|
|
87
|
+
filter: ti.filter || "NEAREST",
|
|
88
|
+
pixelBufferIndex: ti.readAsync ? pbInd++ : -1,
|
|
89
|
+
TypeArrayConstructor: TypeArrayConstructor[type]
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return [{
|
|
94
|
+
internalFormat: "RGBA",
|
|
95
|
+
format: "RGBA",
|
|
96
|
+
type: "UNSIGNED_BYTE",
|
|
97
|
+
attachment: "COLOR_ATTACHMENT0",
|
|
98
|
+
filter: "NEAREST",
|
|
99
|
+
pixelBufferIndex: -1,
|
|
100
|
+
TypeArrayConstructor: TypeArrayConstructor.UNSIGNED_BYTE
|
|
101
|
+
}];
|
|
30
102
|
}
|
|
31
103
|
// static blit(sourceFramebuffer: Framebuffer, destFramebuffer: Framebuffer, glAttachment: number, glMask: number, glFilter: number) {
|
|
32
104
|
// let gl = sourceFramebuffer.handler.gl!;
|
|
@@ -51,6 +123,11 @@ export class Framebuffer extends BaseFramebuffer {
|
|
|
51
123
|
gl.deleteTexture(this.textures[i]);
|
|
52
124
|
}
|
|
53
125
|
this.textures = new Array(this._size);
|
|
126
|
+
for (let i = 0; i < this.pixelBuffers.length; i++) {
|
|
127
|
+
this.pixelBuffers[i].data = null;
|
|
128
|
+
gl.deleteBuffer(this.pixelBuffers[i].buffer);
|
|
129
|
+
}
|
|
130
|
+
this.pixelBuffers = [];
|
|
54
131
|
gl.deleteFramebuffer(this._fbo);
|
|
55
132
|
gl.deleteRenderbuffer(this._depthRenderbuffer);
|
|
56
133
|
this._depthRenderbuffer = null;
|
|
@@ -68,21 +145,23 @@ export class Framebuffer extends BaseFramebuffer {
|
|
|
68
145
|
return;
|
|
69
146
|
this._fbo = gl.createFramebuffer();
|
|
70
147
|
gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
148
|
+
let attachmentArr = [];
|
|
149
|
+
for (let i = 0; i < this._targets.length; i++) {
|
|
150
|
+
let tr = this._targets[i];
|
|
151
|
+
let ti = this.textures[i] || this.handler.createEmptyTexture2DExt(this._width, this._height, tr.filter, tr.internalFormat, tr.format, tr.type);
|
|
152
|
+
let att_i = gl[tr.attachment];
|
|
153
|
+
if (ti) {
|
|
154
|
+
this.bindOutputTexture(ti, att_i);
|
|
155
|
+
this.textures[i] = ti;
|
|
156
|
+
}
|
|
157
|
+
if (tr.attachment !== "DEPTH_ATTACHMENT") {
|
|
158
|
+
attachmentArr.push(att_i);
|
|
159
|
+
}
|
|
160
|
+
if (tr.pixelBufferIndex !== -1) {
|
|
161
|
+
this._createPixelBuffer(tr);
|
|
83
162
|
}
|
|
84
|
-
gl.drawBuffers && gl.drawBuffers(attachmentArr);
|
|
85
163
|
}
|
|
164
|
+
gl.drawBuffers && gl.drawBuffers(attachmentArr);
|
|
86
165
|
if (this._useDepth) {
|
|
87
166
|
this._depthRenderbuffer = gl.createRenderbuffer();
|
|
88
167
|
gl.bindRenderbuffer(gl.RENDERBUFFER, this._depthRenderbuffer);
|
|
@@ -92,6 +171,34 @@ export class Framebuffer extends BaseFramebuffer {
|
|
|
92
171
|
}
|
|
93
172
|
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
94
173
|
}
|
|
174
|
+
getPixelBufferData(targetIndex) {
|
|
175
|
+
let pbInd = this._targets[targetIndex].pixelBufferIndex;
|
|
176
|
+
return pbInd !== -1 ? this.pixelBuffers[pbInd].data : null;
|
|
177
|
+
}
|
|
178
|
+
_createPixelBuffer(target) {
|
|
179
|
+
let gl = this.handler.gl;
|
|
180
|
+
let pbInd = target.pixelBufferIndex;
|
|
181
|
+
let pb = this.pixelBuffers[pbInd];
|
|
182
|
+
if (!pb) {
|
|
183
|
+
pb = this.pixelBuffers[pbInd] = {
|
|
184
|
+
buffer: null,
|
|
185
|
+
data: null,
|
|
186
|
+
glType: -1,
|
|
187
|
+
glAttachment: -1
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
let size = this.width * this.height * 4;
|
|
191
|
+
// clear current pixel buffer
|
|
192
|
+
pb.data = null;
|
|
193
|
+
pb.data = new target.TypeArrayConstructor(size);
|
|
194
|
+
//gl.deleteBuffer(pb.buffer);
|
|
195
|
+
pb.buffer = gl.createBuffer();
|
|
196
|
+
gl.bindBuffer(gl.PIXEL_PACK_BUFFER, pb.buffer);
|
|
197
|
+
gl.bufferData(gl.PIXEL_PACK_BUFFER, size, gl.STREAM_READ);
|
|
198
|
+
gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
|
|
199
|
+
pb.glType = gl[target.type];
|
|
200
|
+
pb.glAttachment = gl[target.attachment];
|
|
201
|
+
}
|
|
95
202
|
/**
|
|
96
203
|
* Bind buffer texture.
|
|
97
204
|
* @public
|
|
@@ -118,7 +225,7 @@ export class Framebuffer extends BaseFramebuffer {
|
|
|
118
225
|
let gl = this.handler.gl;
|
|
119
226
|
gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
|
|
120
227
|
gl.readBuffer && gl.readBuffer(gl.COLOR_ATTACHMENT0 + index || 0);
|
|
121
|
-
gl.readPixels(nx * this._width, ny * this._height, w, h, gl.RGBA, gl[this.
|
|
228
|
+
gl.readPixels(nx * this._width, ny * this._height, w, h, gl.RGBA, gl[this._targets[index].type], res);
|
|
122
229
|
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
123
230
|
}
|
|
124
231
|
/**
|
|
@@ -131,7 +238,7 @@ export class Framebuffer extends BaseFramebuffer {
|
|
|
131
238
|
let gl = this.handler.gl;
|
|
132
239
|
gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
|
|
133
240
|
gl.readBuffer && gl.readBuffer(gl.COLOR_ATTACHMENT0 + attachmentIndex);
|
|
134
|
-
gl.readPixels(0, 0, this._width, this._height, gl.RGBA, gl[this.
|
|
241
|
+
gl.readPixels(0, 0, this._width, this._height, gl.RGBA, gl[this._targets[attachmentIndex].type], res);
|
|
135
242
|
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
136
243
|
}
|
|
137
244
|
/**
|
package/lib/js/webgl/Handler.js
CHANGED
|
@@ -33,7 +33,16 @@ class Handler {
|
|
|
33
33
|
this.drawFrame = () => {
|
|
34
34
|
/** Calculating frame time */
|
|
35
35
|
let now = window.performance.now();
|
|
36
|
-
|
|
36
|
+
let prevDeltaTime = this.deltaTime;
|
|
37
|
+
//Make some filter:)
|
|
38
|
+
this.deltaTime = (now - this._lastAnimationFrameTime + this.prevDeltaTime) * 0.5;
|
|
39
|
+
if (this.deltaTime > 3) {
|
|
40
|
+
this.deltaTime = 3;
|
|
41
|
+
}
|
|
42
|
+
else if (this.deltaTime < 1) {
|
|
43
|
+
this.deltaTime = 1;
|
|
44
|
+
}
|
|
45
|
+
this.prevDeltaTime = prevDeltaTime;
|
|
37
46
|
this._lastAnimationFrameTime = now;
|
|
38
47
|
this.defaultClock.tick(this.deltaTime);
|
|
39
48
|
for (let i = 0; i < this._clocks.length; i++) {
|
|
@@ -57,6 +66,7 @@ class Handler {
|
|
|
57
66
|
this._throttledDrawFrame = this.drawFrame;
|
|
58
67
|
this.defaultClock = new Clock();
|
|
59
68
|
this._clocks = [];
|
|
69
|
+
this.prevDeltaTime = 0;
|
|
60
70
|
this.deltaTime = 0;
|
|
61
71
|
this.canvas = null;
|
|
62
72
|
this.gl = null;
|
package/lib/js/webgl/Program.js
CHANGED
|
@@ -222,10 +222,6 @@ class Program {
|
|
|
222
222
|
this.drawElementsInstanced = ext.drawElementsInstancedANGLE.bind(ext);
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
|
-
// this.drawElementsInstanced =
|
|
226
|
-
// gl.drawElementsInstanced ?
|
|
227
|
-
// gl.drawElementsInstanced.bind(gl) :
|
|
228
|
-
// gl.getExtension('ANGLE_instanced_arrays').drawElementsInstancedANGLE.bind(gl.getExtension('ANGLE_instanced_arrays'));
|
|
229
225
|
}
|
|
230
226
|
if (!this.vertexAttribDivisor) {
|
|
231
227
|
if (gl.vertexAttribDivisor) {
|
|
@@ -237,10 +233,6 @@ class Program {
|
|
|
237
233
|
this.vertexAttribDivisor = ext.vertexAttribDivisorANGLE.bind(ext);
|
|
238
234
|
}
|
|
239
235
|
}
|
|
240
|
-
// this.vertexAttribDivisor =
|
|
241
|
-
// gl.vertexAttribDivisor ?
|
|
242
|
-
// gl.vertexAttribDivisor.bind(gl) :
|
|
243
|
-
// gl.getExtension('ANGLE_instanced_arrays').vertexAttribDivisorANGLE.bind(gl.getExtension('ANGLE_instanced_arrays'));
|
|
244
236
|
}
|
|
245
237
|
if (!gl.getProgramParameter(this._p, gl.LINK_STATUS)) {
|
|
246
238
|
cons.logErr(`Shader program "${this.name}": initialization failed. ${gl.getProgramInfoLog(this._p)}.`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openglobus/og",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "[openglobus](https://www.openglobus.org/) is a javascript/typescript library designed to display interactive 3d maps and planets with map tiles, imagery and vector data, markers, and 3D objects. It uses the WebGL technology, open source, and completely free.",
|
|
5
5
|
"directories": {
|
|
6
6
|
"example": "./sandbox"
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
"test_watch": "jest --env=jsdom --watch",
|
|
21
21
|
"lint": "eslint src/",
|
|
22
22
|
"gen_js": "tsc --build tsconfig.json --declaration",
|
|
23
|
-
"font": "node ./fonts/index.js"
|
|
23
|
+
"font": "node ./fonts/index.js",
|
|
24
|
+
"dev_serve": "npm-run-all --parallel --continue-on-error --race dev serve"
|
|
24
25
|
},
|
|
25
26
|
"repository": {
|
|
26
27
|
"type": "git",
|
|
@@ -55,6 +56,7 @@
|
|
|
55
56
|
"jsdoc-babel": "^0.5.0",
|
|
56
57
|
"lint-staged": "^15.2.10",
|
|
57
58
|
"local-web-server": "^5.4.0",
|
|
59
|
+
"npm-run-all": "^4.1.5",
|
|
58
60
|
"postcss": "^8.4.45",
|
|
59
61
|
"prettier": "^3.3.3",
|
|
60
62
|
"rollup": "^4.22.4",
|