@luma.gl/webgl 8.5.10 → 8.5.13

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 (83) hide show
  1. package/dist/dist.js +420 -457
  2. package/dist/dist.min.js +1 -1
  3. package/dist/es5/bundle.js +2 -4
  4. package/dist/es5/bundle.js.map +1 -1
  5. package/dist/es5/classes/buffer.js +9 -2
  6. package/dist/es5/classes/buffer.js.map +1 -1
  7. package/dist/es5/classes/framebuffer.js +5 -0
  8. package/dist/es5/classes/framebuffer.js.map +1 -1
  9. package/dist/es5/classes/program.js +9 -2
  10. package/dist/es5/classes/program.js.map +1 -1
  11. package/dist/es5/classes/query.js +6 -1
  12. package/dist/es5/classes/query.js.map +1 -1
  13. package/dist/es5/classes/renderbuffer.js +6 -1
  14. package/dist/es5/classes/renderbuffer.js.map +1 -1
  15. package/dist/es5/classes/resource.js +13 -6
  16. package/dist/es5/classes/resource.js.map +1 -1
  17. package/dist/es5/classes/shader.js +20 -1
  18. package/dist/es5/classes/shader.js.map +1 -1
  19. package/dist/es5/classes/texture-2d.js +6 -1
  20. package/dist/es5/classes/texture-2d.js.map +1 -1
  21. package/dist/es5/classes/texture-3d.js +6 -1
  22. package/dist/es5/classes/texture-3d.js.map +1 -1
  23. package/dist/es5/classes/texture-cube.js +9 -2
  24. package/dist/es5/classes/texture-cube.js.map +1 -1
  25. package/dist/es5/classes/texture.js +12 -5
  26. package/dist/es5/classes/texture.js.map +1 -1
  27. package/dist/es5/classes/transform-feedback.js +6 -1
  28. package/dist/es5/classes/transform-feedback.js.map +1 -1
  29. package/dist/es5/classes/vertex-array-object.js +6 -1
  30. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  31. package/dist/es5/init.js +7 -7
  32. package/dist/es5/init.js.map +1 -1
  33. package/dist/es5/utils/is-old-ie.js +1 -1
  34. package/dist/es5/utils/is-old-ie.js.map +1 -1
  35. package/dist/esm/bundle.js +2 -4
  36. package/dist/esm/bundle.js.map +1 -1
  37. package/dist/esm/classes/buffer.js +4 -0
  38. package/dist/esm/classes/buffer.js.map +1 -1
  39. package/dist/esm/classes/framebuffer.js +4 -0
  40. package/dist/esm/classes/framebuffer.js.map +1 -1
  41. package/dist/esm/classes/program.js +4 -0
  42. package/dist/esm/classes/program.js.map +1 -1
  43. package/dist/esm/classes/query.js +4 -0
  44. package/dist/esm/classes/query.js.map +1 -1
  45. package/dist/esm/classes/renderbuffer.js +4 -0
  46. package/dist/esm/classes/renderbuffer.js.map +1 -1
  47. package/dist/esm/classes/resource.js +10 -6
  48. package/dist/esm/classes/resource.js.map +1 -1
  49. package/dist/esm/classes/shader.js +12 -0
  50. package/dist/esm/classes/shader.js.map +1 -1
  51. package/dist/esm/classes/texture-2d.js +4 -0
  52. package/dist/esm/classes/texture-2d.js.map +1 -1
  53. package/dist/esm/classes/texture-3d.js +4 -0
  54. package/dist/esm/classes/texture-3d.js.map +1 -1
  55. package/dist/esm/classes/texture-cube.js +4 -0
  56. package/dist/esm/classes/texture-cube.js.map +1 -1
  57. package/dist/esm/classes/texture.js +10 -3
  58. package/dist/esm/classes/texture.js.map +1 -1
  59. package/dist/esm/classes/transform-feedback.js +4 -0
  60. package/dist/esm/classes/transform-feedback.js.map +1 -1
  61. package/dist/esm/classes/vertex-array-object.js +4 -0
  62. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  63. package/dist/esm/init.js +7 -7
  64. package/dist/esm/init.js.map +1 -1
  65. package/dist/esm/utils/is-old-ie.js +1 -1
  66. package/dist/esm/utils/is-old-ie.js.map +1 -1
  67. package/package.json +5 -4
  68. package/src/bundle.js +2 -3
  69. package/src/classes/buffer.js +4 -0
  70. package/src/classes/framebuffer.js +4 -0
  71. package/src/classes/program.js +4 -0
  72. package/src/classes/query.js +4 -0
  73. package/src/classes/renderbuffer.js +4 -0
  74. package/src/classes/resource.js +10 -6
  75. package/src/classes/shader.js +14 -0
  76. package/src/classes/texture-2d.js +5 -0
  77. package/src/classes/texture-3d.js +5 -0
  78. package/src/classes/texture-cube.js +5 -0
  79. package/src/classes/texture.js +11 -4
  80. package/src/classes/transform-feedback.js +4 -0
  81. package/src/classes/vertex-array-object.js +4 -0
  82. package/src/init.js +6 -6
  83. package/src/utils/is-old-ie.js +1 -1
@@ -13,6 +13,10 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
13
13
  // }
14
14
 
15
15
  export default class Resource {
16
+ // eslint-disable-next-line accessor-pairs
17
+ get [Symbol.toStringTag]() {
18
+ return 'Resource';
19
+ }
16
20
  constructor(gl, opts = {}) {
17
21
  assertWebGLContext(gl);
18
22
 
@@ -21,7 +25,7 @@ export default class Resource {
21
25
  // @ts-ignore
22
26
  this.gl2 = gl;
23
27
  // this.ext = polyfillContext(gl);
24
- this.id = id || uid(this.constructor.name);
28
+ this.id = id || uid(this[Symbol.toStringTag]);
25
29
  this.userData = userData;
26
30
  this._bound = false;
27
31
 
@@ -44,7 +48,7 @@ export default class Resource {
44
48
  }
45
49
 
46
50
  toString() {
47
- return `${this.constructor.name}(${this.id})`;
51
+ return `${this[Symbol.toStringTag] || this.constructor.name}(${this.id})`;
48
52
  }
49
53
 
50
54
  get handle() {
@@ -275,7 +279,7 @@ export default class Resource {
275
279
  }
276
280
 
277
281
  _addStats() {
278
- const name = this.constructor.name;
282
+ const name = this[Symbol.toStringTag];
279
283
  const stats = lumaStats.get('Resource Counts');
280
284
 
281
285
  stats.get('Resources Created').incrementCount();
@@ -284,13 +288,13 @@ export default class Resource {
284
288
  }
285
289
 
286
290
  _removeStats() {
287
- const name = this.constructor.name;
291
+ const name = this[Symbol.toStringTag];
288
292
  const stats = lumaStats.get('Resource Counts');
289
293
 
290
294
  stats.get(`${name}s Active`).decrementCount();
291
295
  }
292
296
 
293
- _trackAllocatedMemory(bytes, name = this.constructor.name) {
297
+ _trackAllocatedMemory(bytes, name = this[Symbol.toStringTag]) {
294
298
  const stats = lumaStats.get('Memory Usage');
295
299
 
296
300
  stats.get('GPU Memory').addCount(bytes);
@@ -298,7 +302,7 @@ export default class Resource {
298
302
  this.byteLength = bytes;
299
303
  }
300
304
 
301
- _trackDeallocatedMemory(name = this.constructor.name) {
305
+ _trackDeallocatedMemory(name = this[Symbol.toStringTag]) {
302
306
  const stats = lumaStats.get('Memory Usage');
303
307
 
304
308
  stats.get('GPU Memory').subtractCount(this.byteLength);
@@ -9,6 +9,11 @@ const ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';
9
9
 
10
10
  // For now this is an internal class
11
11
  export class Shader extends Resource {
12
+ // eslint-disable-next-line accessor-pairs
13
+ get [Symbol.toStringTag]() {
14
+ return 'Shader';
15
+ }
16
+
12
17
  static getTypeName(shaderType) {
13
18
  switch (shaderType) {
14
19
  case GL.VERTEX_SHADER:
@@ -116,6 +121,11 @@ export class Shader extends Resource {
116
121
  }
117
122
 
118
123
  export class VertexShader extends Shader {
124
+ // eslint-disable-next-line accessor-pairs
125
+ get [Symbol.toStringTag]() {
126
+ return 'VertexShader';
127
+ }
128
+
119
129
  constructor(gl, props) {
120
130
  // Signature: new VertexShader(gl, source)
121
131
  if (typeof props === 'string') {
@@ -131,6 +141,10 @@ export class VertexShader extends Shader {
131
141
  }
132
142
 
133
143
  export class FragmentShader extends Shader {
144
+ // eslint-disable-next-line accessor-pairs
145
+ get [Symbol.toStringTag]() {
146
+ return 'FragmentShader';
147
+ }
134
148
  constructor(gl, props) {
135
149
  // Signature: new FragmentShader(gl, source)
136
150
  if (typeof props === 'string') {
@@ -4,6 +4,11 @@ import Texture from './texture';
4
4
  import {loadImage} from '../utils/load-file';
5
5
 
6
6
  export default class Texture2D extends Texture {
7
+ // eslint-disable-next-line accessor-pairs
8
+ get [Symbol.toStringTag]() {
9
+ return 'Texture2D';
10
+ }
11
+
7
12
  static isSupported(gl, opts) {
8
13
  return Texture.isSupported(gl, opts);
9
14
  }
@@ -5,6 +5,11 @@ import {DATA_FORMAT_CHANNELS, TYPE_SIZES} from './texture-formats';
5
5
  import Buffer from './buffer';
6
6
 
7
7
  export default class Texture3D extends Texture {
8
+ // eslint-disable-next-line accessor-pairs
9
+ get [Symbol.toStringTag]() {
10
+ return 'Texture3D';
11
+ }
12
+
8
13
  static isSupported(gl) {
9
14
  return isWebGL2(gl);
10
15
  }
@@ -12,6 +12,11 @@ const FACES = [
12
12
  ];
13
13
 
14
14
  export default class TextureCube extends Texture {
15
+ // eslint-disable-next-line accessor-pairs
16
+ get [Symbol.toStringTag]() {
17
+ return 'TextureCube';
18
+ }
19
+
15
20
  constructor(gl, props = {}) {
16
21
  assertWebGLContext(gl);
17
22
 
@@ -1,6 +1,5 @@
1
1
  import GL from '@luma.gl/constants';
2
2
  import {isWebGL2, assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';
3
- import {global} from 'probe.gl/env';
4
3
 
5
4
  import Resource from './resource';
6
5
  import Buffer from './buffer';
@@ -19,9 +18,13 @@ const NPOT_MIN_FILTERS = [GL.LINEAR, GL.NEAREST];
19
18
 
20
19
  // Polyfill
21
20
  // Note (Tarek): Do we really need to support this API?
22
- const WebGLBuffer = global.WebGLBuffer || function WebGLBuffer() {};
21
+ const WebGLBuffer = globalThis.WebGLBuffer || function WebGLBuffer() {};
23
22
 
24
23
  export default class Texture extends Resource {
24
+ // eslint-disable-next-line accessor-pairs
25
+ get [Symbol.toStringTag]() {
26
+ return 'Texture';
27
+ }
25
28
  static isSupported(gl, opts = {}) {
26
29
  const {format, linearFiltering} = opts;
27
30
  let supported = true;
@@ -310,6 +313,8 @@ export default class Texture extends Resource {
310
313
 
311
314
  let gl2;
312
315
 
316
+ let compressedTextureSize = 0;
317
+
313
318
  withParameters(this.gl, parameters, () => {
314
319
  switch (dataType) {
315
320
  case 'null':
@@ -358,15 +363,17 @@ export default class Texture extends Resource {
358
363
  border,
359
364
  levelData.data
360
365
  );
366
+ compressedTextureSize += levelData.levelSize;
361
367
  }
362
-
363
368
  break;
364
369
  default:
365
370
  assert(false, 'Unknown image data type');
366
371
  }
367
372
  });
368
373
 
369
- if (data && data.byteLength) {
374
+ if (dataType === 'compressed') {
375
+ this._trackAllocatedMemory(compressedTextureSize, 'Texture');
376
+ } else if (data && data.byteLength) {
370
377
  this._trackAllocatedMemory(data.byteLength, 'Texture');
371
378
  } else {
372
379
  // NOTE(Tarek): Default to RGBA bytes
@@ -8,6 +8,10 @@ import {isObjectEmpty} from '../utils/utils';
8
8
  // See https://github.com/KhronosGroup/WebGL/issues/2346
9
9
 
10
10
  export default class TransformFeedback extends Resource {
11
+ // eslint-disable-next-line accessor-pairs
12
+ get [Symbol.toStringTag]() {
13
+ return 'TransformFeedback';
14
+ }
11
15
  static isSupported(gl) {
12
16
  return isWebGL2(gl);
13
17
  }
@@ -9,6 +9,10 @@ import {getBrowser} from 'probe.gl';
9
9
  const ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
10
10
 
11
11
  export default class VertexArrayObject extends Resource {
12
+ // eslint-disable-next-line accessor-pairs
13
+ get [Symbol.toStringTag]() {
14
+ return 'VertexArrayObject';
15
+ }
12
16
  static isSupported(gl, options = {}) {
13
17
  // Attribute 0 can not be disable on most desktop OpenGL based browsers
14
18
  // and on iOS Safari browser.
package/src/init.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {log} from '@luma.gl/gltools';
2
2
  import {Stats} from 'probe.gl';
3
- import {isBrowser, global} from 'probe.gl/env';
3
+ import {isBrowser} from '@probe.gl/env';
4
4
 
5
5
  // Version detection using babel plugin
6
6
  /* global __VERSION__ */
@@ -28,16 +28,16 @@ class StatsManager {
28
28
 
29
29
  const lumaStats = new StatsManager();
30
30
 
31
- if (global.luma && global.luma.VERSION !== VERSION) {
32
- throw new Error(`luma.gl - multiple VERSIONs detected: ${global.luma.VERSION} vs ${VERSION}`);
31
+ if (globalThis.luma && globalThis.luma.VERSION !== VERSION) {
32
+ throw new Error(`luma.gl - multiple VERSIONs detected: ${globalThis.luma.VERSION} vs ${VERSION}`);
33
33
  }
34
34
 
35
- if (!global.luma) {
35
+ if (!globalThis.luma) {
36
36
  if (isBrowser()) {
37
37
  log.log(1, `luma.gl ${VERSION} - ${STARTUP_MESSAGE}`)();
38
38
  }
39
39
 
40
- global.luma = global.luma || {
40
+ globalThis.luma = globalThis.luma || {
41
41
  VERSION,
42
42
  version: VERSION,
43
43
  log,
@@ -59,4 +59,4 @@ if (!global.luma) {
59
59
  }
60
60
 
61
61
  export {lumaStats};
62
- export default global.luma;
62
+ export default globalThis.luma;
@@ -1,4 +1,4 @@
1
- import {getBrowser} from 'probe.gl/env';
1
+ import {getBrowser} from '@probe.gl/env';
2
2
 
3
3
  // opts allows user agent to be overridden for testing
4
4
  export function isOldIE(opts = {}) {