@luma.gl/webgl 9.0.17 → 9.1.0-alpha.10
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/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +30 -12
- package/dist/adapter/converters/texture-formats.d.ts +22 -16
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +39 -47
- package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/webgl-device-features.js +1 -2
- package/dist/adapter/device-helpers/webgl-device-limits.js +1 -1
- package/dist/adapter/helpers/webgl-texture-utils.d.ts +300 -0
- package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -0
- package/dist/adapter/helpers/webgl-texture-utils.js +370 -0
- package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
- package/dist/adapter/helpers/webgl-topology-utils.js +0 -4
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +2 -2
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +6 -9
- package/dist/adapter/resources/webgl-framebuffer.d.ts +32 -5
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +42 -60
- package/dist/adapter/resources/webgl-render-pass.d.ts +3 -2
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +18 -7
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +46 -21
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +3 -3
- package/dist/adapter/resources/webgl-texture-view.d.ts +1 -1
- package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture-view.js +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +76 -172
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +397 -511
- package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -2
- package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-vertex-array.js +2 -2
- package/dist/adapter/webgl-adapter.d.ts +21 -0
- package/dist/adapter/webgl-adapter.d.ts.map +1 -0
- package/dist/adapter/webgl-adapter.js +91 -0
- package/dist/adapter/webgl-canvas-context.d.ts +3 -1
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +2 -0
- package/dist/adapter/webgl-device.d.ts +19 -30
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +35 -114
- package/dist/classic/accessor.d.ts +22 -1
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +1 -9
- package/dist/classic/clear.d.ts.map +1 -1
- package/dist/classic/clear.js +2 -5
- package/dist/classic/copy-and-blit.d.ts +3 -1
- package/dist/classic/copy-and-blit.d.ts.map +1 -1
- package/dist/classic/copy-and-blit.js +21 -18
- package/dist/classic/format-utils.d.ts.map +1 -1
- package/dist/classic/format-utils.js +0 -3
- package/dist/classic/typed-array-utils.d.ts +1 -1
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/context/debug/spector-types.d.ts +1108 -0
- package/dist/context/debug/spector-types.d.ts.map +1 -0
- package/dist/context/debug/spector-types.js +697 -0
- package/dist/context/debug/spector.d.ts +12 -8
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +25 -18
- package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +2 -5
- package/dist/context/parameters/webgl-parameter-tables.js +1 -1
- package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts +9 -0
- package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts.map +1 -0
- package/dist/context/polyfills/polyfill-webgl1-extensions.js +181 -0
- package/dist/context/state-tracker/webgl-state-tracker.d.ts +43 -0
- package/dist/context/state-tracker/webgl-state-tracker.d.ts.map +1 -0
- package/dist/context/state-tracker/{track-context-state.js → webgl-state-tracker.js} +46 -77
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +5 -4
- package/dist/dist.dev.js +1112 -1380
- package/dist/dist.min.js +2 -2
- package/dist/index.cjs +1122 -1284
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/utils/fill-array.d.ts +8 -0
- package/dist/utils/fill-array.d.ts.map +1 -0
- package/dist/utils/fill-array.js +26 -0
- package/dist/utils/load-script.d.ts +8 -0
- package/dist/utils/load-script.d.ts.map +1 -0
- package/dist/utils/load-script.js +26 -0
- package/dist/utils/split-uniforms-and-bindings.d.ts +9 -0
- package/dist/utils/split-uniforms-and-bindings.d.ts.map +1 -0
- package/dist/utils/split-uniforms-and-bindings.js +20 -0
- package/dist/utils/uid.d.ts +7 -0
- package/dist/utils/uid.d.ts.map +1 -0
- package/dist/utils/uid.js +14 -0
- package/package.json +6 -5
- package/src/adapter/converters/device-parameters.ts +31 -13
- package/src/adapter/converters/texture-formats.ts +51 -56
- package/src/adapter/device-helpers/webgl-device-features.ts +1 -2
- package/src/adapter/device-helpers/webgl-device-limits.ts +1 -1
- package/src/adapter/helpers/webgl-texture-utils.ts +484 -0
- package/src/adapter/helpers/webgl-topology-utils.ts +0 -4
- package/src/adapter/resources/webgl-buffer.ts +2 -2
- package/src/adapter/resources/webgl-command-buffer.ts +8 -10
- package/src/adapter/resources/webgl-framebuffer.ts +22 -56
- package/src/adapter/resources/webgl-render-pass.ts +21 -9
- package/src/adapter/resources/webgl-render-pipeline.ts +50 -24
- package/src/adapter/resources/webgl-shader.ts +4 -4
- package/src/adapter/resources/webgl-texture-view.ts +1 -3
- package/src/adapter/resources/webgl-texture.ts +445 -784
- package/src/adapter/resources/webgl-vertex-array.ts +8 -7
- package/src/adapter/webgl-adapter.ts +113 -0
- package/src/adapter/webgl-canvas-context.ts +4 -1
- package/src/adapter/webgl-device.ts +40 -151
- package/src/classic/accessor.ts +31 -11
- package/src/classic/clear.ts +3 -6
- package/src/classic/copy-and-blit.ts +32 -27
- package/src/classic/format-utils.ts +0 -3
- package/src/classic/typed-array-utils.ts +1 -1
- package/src/context/debug/spector-types.ts +1154 -0
- package/src/context/debug/spector.ts +40 -30
- package/src/context/debug/webgl-developer-tools.ts +3 -7
- package/src/context/parameters/webgl-parameter-tables.ts +3 -3
- package/src/context/polyfills/polyfill-webgl1-extensions.ts +202 -0
- package/src/context/state-tracker/{track-context-state.ts → webgl-state-tracker.ts} +57 -97
- package/src/context/state-tracker/with-parameters.ts +5 -4
- package/src/index.ts +5 -13
- package/src/utils/fill-array.ts +35 -0
- package/src/utils/load-script.ts +30 -0
- package/src/utils/split-uniforms-and-bindings.ts +31 -0
- package/src/utils/uid.ts +16 -0
- package/dist/adapter/objects/constants-to-keys.d.ts +0 -3
- package/dist/adapter/objects/constants-to-keys.d.ts.map +0 -1
- package/dist/adapter/objects/constants-to-keys.js +0 -22
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +0 -43
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +0 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +0 -95
- package/dist/adapter/objects/webgl-resource.d.ts +0 -32
- package/dist/adapter/objects/webgl-resource.d.ts.map +0 -1
- package/dist/adapter/objects/webgl-resource.js +0 -114
- package/dist/context/state-tracker/track-context-state.d.ts +0 -22
- package/dist/context/state-tracker/track-context-state.d.ts.map +0 -1
- package/src/adapter/objects/constants-to-keys.ts +0 -27
- package/src/adapter/objects/webgl-renderbuffer.ts +0 -132
- package/src/adapter/objects/webgl-resource.ts +0 -183
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import {Buffer, Texture, Framebuffer, FramebufferProps} from '@luma.gl/core';
|
|
6
6
|
import {GL} from '@luma.gl/constants';
|
|
7
7
|
|
|
8
|
-
import {WEBGLTextureView} from '../adapter/resources/webgl-texture-view';
|
|
9
8
|
import {WEBGLFramebuffer} from '../adapter/resources/webgl-framebuffer';
|
|
10
9
|
import {getGLTypeFromTypedArray, getTypedArrayFromGLType} from './typed-array-utils';
|
|
11
10
|
import {glFormatToComponents, glTypeToBytes} from './format-utils';
|
|
12
11
|
import {WEBGLBuffer} from '../adapter/resources/webgl-buffer';
|
|
12
|
+
import {WEBGLTexture} from '../adapter/resources/webgl-texture';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Copies data from a type or a Texture object into ArrayBuffer object.
|
|
@@ -33,13 +33,13 @@ export function readPixelsToArray(
|
|
|
33
33
|
// following parameters are auto deduced if not provided
|
|
34
34
|
sourceWidth?: number;
|
|
35
35
|
sourceHeight?: number;
|
|
36
|
+
sourceDepth?: number;
|
|
36
37
|
sourceType?: number;
|
|
37
38
|
}
|
|
38
39
|
): Uint8Array | Uint16Array | Float32Array {
|
|
39
40
|
const {
|
|
40
41
|
sourceX = 0,
|
|
41
42
|
sourceY = 0,
|
|
42
|
-
sourceFormat = GL.RGBA,
|
|
43
43
|
sourceAttachment = GL.COLOR_ATTACHMENT0 // TODO - support gl.readBuffer
|
|
44
44
|
} = options || {};
|
|
45
45
|
let {
|
|
@@ -47,31 +47,32 @@ export function readPixelsToArray(
|
|
|
47
47
|
// following parameters are auto deduced if not provided
|
|
48
48
|
sourceWidth,
|
|
49
49
|
sourceHeight,
|
|
50
|
+
sourceDepth,
|
|
51
|
+
sourceFormat,
|
|
50
52
|
sourceType
|
|
51
53
|
} = options || {};
|
|
52
54
|
|
|
53
55
|
const {framebuffer, deleteFramebuffer} = getFramebuffer(source);
|
|
54
|
-
assert(framebuffer);
|
|
55
|
-
const {gl, handle} = framebuffer
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
// assert(framebuffer);
|
|
57
|
+
const {gl, handle} = framebuffer;
|
|
58
|
+
const attachment = sourceAttachment - GL.COLOR_ATTACHMENT0;
|
|
59
|
+
|
|
60
|
+
sourceWidth ||= framebuffer.width;
|
|
61
|
+
sourceHeight ||= framebuffer.height;
|
|
58
62
|
|
|
59
63
|
// TODO - Set and unset gl.readBuffer
|
|
60
64
|
// if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {
|
|
61
65
|
// sourceAttachment = GL.FRONT;
|
|
62
66
|
// }
|
|
63
67
|
|
|
64
|
-
|
|
65
|
-
// assert(attachments[sourceAttachment]);
|
|
68
|
+
sourceDepth = framebuffer.colorAttachments[attachment]?.texture?.depth || 1;
|
|
66
69
|
|
|
70
|
+
sourceFormat ||= framebuffer.colorAttachments[attachment]?.texture?.glFormat || GL.RGBA;
|
|
67
71
|
// Deduce the type from color attachment if not provided.
|
|
68
|
-
sourceType
|
|
69
|
-
sourceType ||
|
|
70
|
-
(framebuffer.colorAttachments[attachment] as WEBGLTextureView)?.texture?.type ||
|
|
71
|
-
GL.UNSIGNED_BYTE;
|
|
72
|
+
sourceType ||= framebuffer.colorAttachments[attachment]?.texture?.glType || GL.UNSIGNED_BYTE;
|
|
72
73
|
|
|
73
74
|
// Deduce type and allocated pixelArray if needed
|
|
74
|
-
target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);
|
|
75
|
+
target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight, sourceDepth);
|
|
75
76
|
|
|
76
77
|
// Pixel array available, if necessary, deduce type from it.
|
|
77
78
|
sourceType = sourceType || getGLTypeFromTypedArray(target);
|
|
@@ -117,12 +118,12 @@ export function readPixelsToBuffer(
|
|
|
117
118
|
// following parameters are auto deduced if not provided
|
|
118
119
|
let {sourceWidth, sourceHeight, sourceType} = options || {};
|
|
119
120
|
const {framebuffer, deleteFramebuffer} = getFramebuffer(source);
|
|
120
|
-
assert(framebuffer);
|
|
121
|
+
// assert(framebuffer);
|
|
121
122
|
sourceWidth = sourceWidth || framebuffer.width;
|
|
122
123
|
sourceHeight = sourceHeight || framebuffer.height;
|
|
123
124
|
|
|
124
125
|
// Asynchronous read (PIXEL_PACK_BUFFER) is WebGL2 only feature
|
|
125
|
-
const webglFramebuffer = framebuffer
|
|
126
|
+
const webglFramebuffer = framebuffer;
|
|
126
127
|
|
|
127
128
|
// deduce type if not available.
|
|
128
129
|
sourceType = sourceType || GL.UNSIGNED_BYTE;
|
|
@@ -193,8 +194,8 @@ export function copyToTexture(
|
|
|
193
194
|
} = options || {};
|
|
194
195
|
|
|
195
196
|
const {framebuffer, deleteFramebuffer} = getFramebuffer(source);
|
|
196
|
-
assert(framebuffer);
|
|
197
|
-
const webglFramebuffer = framebuffer
|
|
197
|
+
// assert(framebuffer);
|
|
198
|
+
const webglFramebuffer = framebuffer;
|
|
198
199
|
const {device, handle} = webglFramebuffer;
|
|
199
200
|
const isSubCopy =
|
|
200
201
|
typeof targetX !== 'undefined' ||
|
|
@@ -206,16 +207,18 @@ export function copyToTexture(
|
|
|
206
207
|
const prevHandle = device.gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
|
|
207
208
|
// TODO - support gl.readBuffer (WebGL2 only)
|
|
208
209
|
// const prevBuffer = gl.readBuffer(attachment);
|
|
209
|
-
assert(target);
|
|
210
|
-
let texture = null;
|
|
210
|
+
// assert(target);
|
|
211
|
+
let texture: WEBGLTexture | null = null;
|
|
211
212
|
let textureTarget: GL;
|
|
212
|
-
if (target instanceof
|
|
213
|
+
if (target instanceof WEBGLTexture) {
|
|
213
214
|
texture = target;
|
|
214
215
|
width = Number.isFinite(width) ? width : texture.width;
|
|
215
216
|
height = Number.isFinite(height) ? height : texture.height;
|
|
216
|
-
texture
|
|
217
|
+
texture?.bind(0);
|
|
218
|
+
// @ts-ignore
|
|
217
219
|
textureTarget = texture.target;
|
|
218
220
|
} else {
|
|
221
|
+
// @ts-ignore
|
|
219
222
|
textureTarget = target;
|
|
220
223
|
}
|
|
221
224
|
|
|
@@ -274,20 +277,20 @@ export function copyToTexture(
|
|
|
274
277
|
}
|
|
275
278
|
|
|
276
279
|
function getFramebuffer(source: Texture | Framebuffer): {
|
|
277
|
-
framebuffer:
|
|
280
|
+
framebuffer: WEBGLFramebuffer;
|
|
278
281
|
deleteFramebuffer: boolean;
|
|
279
282
|
} {
|
|
280
283
|
if (!(source instanceof Framebuffer)) {
|
|
281
284
|
return {framebuffer: toFramebuffer(source), deleteFramebuffer: true};
|
|
282
285
|
}
|
|
283
|
-
return {framebuffer: source, deleteFramebuffer: false};
|
|
286
|
+
return {framebuffer: source as WEBGLFramebuffer, deleteFramebuffer: false};
|
|
284
287
|
}
|
|
285
288
|
|
|
286
289
|
/**
|
|
287
290
|
* Wraps a given texture into a framebuffer object, that can be further used
|
|
288
291
|
* to read data from the texture object.
|
|
289
292
|
*/
|
|
290
|
-
export function toFramebuffer(texture: Texture, props?: FramebufferProps):
|
|
293
|
+
export function toFramebuffer(texture: Texture, props?: FramebufferProps): WEBGLFramebuffer {
|
|
291
294
|
const {device, width, height, id} = texture;
|
|
292
295
|
const framebuffer = device.createFramebuffer({
|
|
293
296
|
...props,
|
|
@@ -296,15 +299,17 @@ export function toFramebuffer(texture: Texture, props?: FramebufferProps): Frame
|
|
|
296
299
|
height,
|
|
297
300
|
colorAttachments: [texture]
|
|
298
301
|
});
|
|
299
|
-
return framebuffer;
|
|
302
|
+
return framebuffer as WEBGLFramebuffer;
|
|
300
303
|
}
|
|
301
304
|
|
|
305
|
+
// eslint-disable-next-line max-params
|
|
302
306
|
function getPixelArray(
|
|
303
307
|
pixelArray,
|
|
304
308
|
type,
|
|
305
309
|
format,
|
|
306
310
|
width: number,
|
|
307
|
-
height: number
|
|
311
|
+
height: number,
|
|
312
|
+
depth?: number
|
|
308
313
|
): Uint8Array | Uint16Array | Float32Array {
|
|
309
314
|
if (pixelArray) {
|
|
310
315
|
return pixelArray;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
import {assert} from '@luma.gl/core';
|
|
6
5
|
import {GL} from '@luma.gl/constants';
|
|
7
6
|
|
|
8
7
|
// Returns number of components in a specific readPixels WebGL format
|
|
@@ -23,7 +22,6 @@ export function glFormatToComponents(format) {
|
|
|
23
22
|
return 4;
|
|
24
23
|
// TODO: Add support for additional WebGL2 formats
|
|
25
24
|
default:
|
|
26
|
-
assert(false);
|
|
27
25
|
return 0;
|
|
28
26
|
}
|
|
29
27
|
}
|
|
@@ -41,7 +39,6 @@ export function glTypeToBytes(type) {
|
|
|
41
39
|
return 4;
|
|
42
40
|
// TODO: Add support for additional WebGL2 types
|
|
43
41
|
default:
|
|
44
|
-
assert(false);
|
|
45
42
|
return 0;
|
|
46
43
|
}
|
|
47
44
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
import {TypedArray, TypedArrayConstructor} from '@
|
|
5
|
+
import {TypedArray, TypedArrayConstructor} from '@math.gl/types';
|
|
6
6
|
import {GL, GLDataType, GLPixelType} from '@luma.gl/constants';
|
|
7
7
|
|
|
8
8
|
const ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';
|