@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.
Files changed (144) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +30 -12
  3. package/dist/adapter/converters/texture-formats.d.ts +22 -16
  4. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  5. package/dist/adapter/converters/texture-formats.js +39 -47
  6. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  7. package/dist/adapter/device-helpers/webgl-device-features.js +1 -2
  8. package/dist/adapter/device-helpers/webgl-device-limits.js +1 -1
  9. package/dist/adapter/helpers/webgl-texture-utils.d.ts +300 -0
  10. package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -0
  11. package/dist/adapter/helpers/webgl-texture-utils.js +370 -0
  12. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  13. package/dist/adapter/helpers/webgl-topology-utils.js +0 -4
  14. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  15. package/dist/adapter/resources/webgl-buffer.js +2 -2
  16. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  17. package/dist/adapter/resources/webgl-command-buffer.js +6 -9
  18. package/dist/adapter/resources/webgl-framebuffer.d.ts +32 -5
  19. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  20. package/dist/adapter/resources/webgl-framebuffer.js +42 -60
  21. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -2
  22. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  23. package/dist/adapter/resources/webgl-render-pass.js +18 -7
  24. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  25. package/dist/adapter/resources/webgl-render-pipeline.js +46 -21
  26. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  27. package/dist/adapter/resources/webgl-shader.js +3 -3
  28. package/dist/adapter/resources/webgl-texture-view.d.ts +1 -1
  29. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -1
  30. package/dist/adapter/resources/webgl-texture-view.js +1 -1
  31. package/dist/adapter/resources/webgl-texture.d.ts +76 -172
  32. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  33. package/dist/adapter/resources/webgl-texture.js +397 -511
  34. package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -2
  35. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  36. package/dist/adapter/resources/webgl-vertex-array.js +2 -2
  37. package/dist/adapter/webgl-adapter.d.ts +21 -0
  38. package/dist/adapter/webgl-adapter.d.ts.map +1 -0
  39. package/dist/adapter/webgl-adapter.js +91 -0
  40. package/dist/adapter/webgl-canvas-context.d.ts +3 -1
  41. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  42. package/dist/adapter/webgl-canvas-context.js +2 -0
  43. package/dist/adapter/webgl-device.d.ts +19 -30
  44. package/dist/adapter/webgl-device.d.ts.map +1 -1
  45. package/dist/adapter/webgl-device.js +35 -114
  46. package/dist/classic/accessor.d.ts +22 -1
  47. package/dist/classic/accessor.d.ts.map +1 -1
  48. package/dist/classic/accessor.js +1 -9
  49. package/dist/classic/clear.d.ts.map +1 -1
  50. package/dist/classic/clear.js +2 -5
  51. package/dist/classic/copy-and-blit.d.ts +3 -1
  52. package/dist/classic/copy-and-blit.d.ts.map +1 -1
  53. package/dist/classic/copy-and-blit.js +21 -18
  54. package/dist/classic/format-utils.d.ts.map +1 -1
  55. package/dist/classic/format-utils.js +0 -3
  56. package/dist/classic/typed-array-utils.d.ts +1 -1
  57. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  58. package/dist/context/debug/spector-types.d.ts +1108 -0
  59. package/dist/context/debug/spector-types.d.ts.map +1 -0
  60. package/dist/context/debug/spector-types.js +697 -0
  61. package/dist/context/debug/spector.d.ts +12 -8
  62. package/dist/context/debug/spector.d.ts.map +1 -1
  63. package/dist/context/debug/spector.js +25 -18
  64. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  65. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  66. package/dist/context/debug/webgl-developer-tools.js +2 -5
  67. package/dist/context/parameters/webgl-parameter-tables.js +1 -1
  68. package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts +9 -0
  69. package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts.map +1 -0
  70. package/dist/context/polyfills/polyfill-webgl1-extensions.js +181 -0
  71. package/dist/context/state-tracker/webgl-state-tracker.d.ts +43 -0
  72. package/dist/context/state-tracker/webgl-state-tracker.d.ts.map +1 -0
  73. package/dist/context/state-tracker/{track-context-state.js → webgl-state-tracker.js} +46 -77
  74. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  75. package/dist/context/state-tracker/with-parameters.js +5 -4
  76. package/dist/dist.dev.js +1112 -1380
  77. package/dist/dist.min.js +2 -2
  78. package/dist/index.cjs +1122 -1284
  79. package/dist/index.cjs.map +4 -4
  80. package/dist/index.d.ts +3 -5
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +3 -5
  83. package/dist/utils/fill-array.d.ts +8 -0
  84. package/dist/utils/fill-array.d.ts.map +1 -0
  85. package/dist/utils/fill-array.js +26 -0
  86. package/dist/utils/load-script.d.ts +8 -0
  87. package/dist/utils/load-script.d.ts.map +1 -0
  88. package/dist/utils/load-script.js +26 -0
  89. package/dist/utils/split-uniforms-and-bindings.d.ts +9 -0
  90. package/dist/utils/split-uniforms-and-bindings.d.ts.map +1 -0
  91. package/dist/utils/split-uniforms-and-bindings.js +20 -0
  92. package/dist/utils/uid.d.ts +7 -0
  93. package/dist/utils/uid.d.ts.map +1 -0
  94. package/dist/utils/uid.js +14 -0
  95. package/package.json +6 -5
  96. package/src/adapter/converters/device-parameters.ts +31 -13
  97. package/src/adapter/converters/texture-formats.ts +51 -56
  98. package/src/adapter/device-helpers/webgl-device-features.ts +1 -2
  99. package/src/adapter/device-helpers/webgl-device-limits.ts +1 -1
  100. package/src/adapter/helpers/webgl-texture-utils.ts +484 -0
  101. package/src/adapter/helpers/webgl-topology-utils.ts +0 -4
  102. package/src/adapter/resources/webgl-buffer.ts +2 -2
  103. package/src/adapter/resources/webgl-command-buffer.ts +8 -10
  104. package/src/adapter/resources/webgl-framebuffer.ts +22 -56
  105. package/src/adapter/resources/webgl-render-pass.ts +21 -9
  106. package/src/adapter/resources/webgl-render-pipeline.ts +50 -24
  107. package/src/adapter/resources/webgl-shader.ts +4 -4
  108. package/src/adapter/resources/webgl-texture-view.ts +1 -3
  109. package/src/adapter/resources/webgl-texture.ts +445 -784
  110. package/src/adapter/resources/webgl-vertex-array.ts +8 -7
  111. package/src/adapter/webgl-adapter.ts +113 -0
  112. package/src/adapter/webgl-canvas-context.ts +4 -1
  113. package/src/adapter/webgl-device.ts +40 -151
  114. package/src/classic/accessor.ts +31 -11
  115. package/src/classic/clear.ts +3 -6
  116. package/src/classic/copy-and-blit.ts +32 -27
  117. package/src/classic/format-utils.ts +0 -3
  118. package/src/classic/typed-array-utils.ts +1 -1
  119. package/src/context/debug/spector-types.ts +1154 -0
  120. package/src/context/debug/spector.ts +40 -30
  121. package/src/context/debug/webgl-developer-tools.ts +3 -7
  122. package/src/context/parameters/webgl-parameter-tables.ts +3 -3
  123. package/src/context/polyfills/polyfill-webgl1-extensions.ts +202 -0
  124. package/src/context/state-tracker/{track-context-state.ts → webgl-state-tracker.ts} +57 -97
  125. package/src/context/state-tracker/with-parameters.ts +5 -4
  126. package/src/index.ts +5 -13
  127. package/src/utils/fill-array.ts +35 -0
  128. package/src/utils/load-script.ts +30 -0
  129. package/src/utils/split-uniforms-and-bindings.ts +31 -0
  130. package/src/utils/uid.ts +16 -0
  131. package/dist/adapter/objects/constants-to-keys.d.ts +0 -3
  132. package/dist/adapter/objects/constants-to-keys.d.ts.map +0 -1
  133. package/dist/adapter/objects/constants-to-keys.js +0 -22
  134. package/dist/adapter/objects/webgl-renderbuffer.d.ts +0 -43
  135. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +0 -1
  136. package/dist/adapter/objects/webgl-renderbuffer.js +0 -95
  137. package/dist/adapter/objects/webgl-resource.d.ts +0 -32
  138. package/dist/adapter/objects/webgl-resource.d.ts.map +0 -1
  139. package/dist/adapter/objects/webgl-resource.js +0 -114
  140. package/dist/context/state-tracker/track-context-state.d.ts +0 -22
  141. package/dist/context/state-tracker/track-context-state.d.ts.map +0 -1
  142. package/src/adapter/objects/constants-to-keys.ts +0 -27
  143. package/src/adapter/objects/webgl-renderbuffer.ts +0 -132
  144. 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 {assert, Buffer, Texture, Framebuffer, FramebufferProps} from '@luma.gl/core';
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 as WEBGLFramebuffer;
56
- sourceWidth = sourceWidth || framebuffer.width;
57
- sourceHeight = sourceHeight || framebuffer.height;
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
- const attachment = sourceAttachment - GL.COLOR_ATTACHMENT0;
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 as WEBGLFramebuffer;
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 as WEBGLFramebuffer;
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 Texture) {
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.bind(0);
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: 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): Framebuffer {
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 '@luma.gl/core';
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';