@luma.gl/webgl 9.1.0-alpha.2 → 9.1.0-alpha.9

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 (74) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +18 -11
  3. package/dist/adapter/converters/texture-formats.d.ts +1 -1
  4. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  5. package/dist/adapter/converters/texture-formats.js +9 -16
  6. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  7. package/dist/adapter/device-helpers/webgl-device-features.js +0 -1
  8. package/dist/adapter/helpers/webgl-texture-utils.d.ts +4 -4
  9. package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -1
  10. package/dist/adapter/helpers/webgl-texture-utils.js +11 -9
  11. package/dist/adapter/resources/webgl-framebuffer.js +1 -1
  12. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  13. package/dist/adapter/resources/webgl-render-pass.js +17 -4
  14. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  15. package/dist/adapter/resources/webgl-render-pipeline.js +1 -1
  16. package/dist/adapter/resources/webgl-shader.js +1 -1
  17. package/dist/adapter/resources/webgl-texture.d.ts +2 -2
  18. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  19. package/dist/adapter/resources/webgl-texture.js +12 -27
  20. package/dist/adapter/webgl-adapter.d.ts +21 -0
  21. package/dist/adapter/webgl-adapter.d.ts.map +1 -0
  22. package/dist/adapter/webgl-adapter.js +91 -0
  23. package/dist/adapter/webgl-device.d.ts +15 -27
  24. package/dist/adapter/webgl-device.d.ts.map +1 -1
  25. package/dist/adapter/webgl-device.js +32 -112
  26. package/dist/classic/copy-and-blit.d.ts +1 -0
  27. package/dist/classic/copy-and-blit.d.ts.map +1 -1
  28. package/dist/classic/copy-and-blit.js +11 -10
  29. package/dist/context/debug/spector-types.d.ts +1108 -0
  30. package/dist/context/debug/spector-types.d.ts.map +1 -0
  31. package/dist/context/debug/spector-types.js +697 -0
  32. package/dist/context/debug/spector.d.ts +12 -8
  33. package/dist/context/debug/spector.d.ts.map +1 -1
  34. package/dist/context/debug/spector.js +23 -17
  35. package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts +9 -0
  36. package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts.map +1 -0
  37. package/dist/context/polyfills/polyfill-webgl1-extensions.js +181 -0
  38. package/dist/context/state-tracker/webgl-state-tracker.d.ts +43 -0
  39. package/dist/context/state-tracker/webgl-state-tracker.d.ts.map +1 -0
  40. package/dist/context/state-tracker/{track-context-state.js → webgl-state-tracker.js} +44 -74
  41. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  42. package/dist/context/state-tracker/with-parameters.js +5 -4
  43. package/dist/dist.dev.js +339 -233
  44. package/dist/dist.min.js +2 -2
  45. package/dist/index.cjs +342 -235
  46. package/dist/index.cjs.map +4 -4
  47. package/dist/index.d.ts +3 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +3 -2
  50. package/dist/utils/uid.d.ts +7 -0
  51. package/dist/utils/uid.d.ts.map +1 -0
  52. package/dist/utils/uid.js +14 -0
  53. package/package.json +3 -3
  54. package/src/adapter/converters/device-parameters.ts +18 -12
  55. package/src/adapter/converters/texture-formats.ts +12 -20
  56. package/src/adapter/device-helpers/webgl-device-features.ts +0 -1
  57. package/src/adapter/helpers/webgl-texture-utils.ts +12 -9
  58. package/src/adapter/resources/webgl-framebuffer.ts +1 -1
  59. package/src/adapter/resources/webgl-render-pass.ts +17 -4
  60. package/src/adapter/resources/webgl-render-pipeline.ts +2 -1
  61. package/src/adapter/resources/webgl-shader.ts +1 -1
  62. package/src/adapter/resources/webgl-texture.ts +17 -27
  63. package/src/adapter/webgl-adapter.ts +113 -0
  64. package/src/adapter/webgl-device.ts +32 -135
  65. package/src/classic/copy-and-blit.ts +14 -9
  66. package/src/context/debug/spector-types.ts +1154 -0
  67. package/src/context/debug/spector.ts +38 -29
  68. package/src/context/polyfills/polyfill-webgl1-extensions.ts +202 -0
  69. package/src/context/state-tracker/{track-context-state.ts → webgl-state-tracker.ts} +55 -94
  70. package/src/context/state-tracker/with-parameters.ts +5 -4
  71. package/src/index.ts +5 -7
  72. package/src/utils/uid.ts +16 -0
  73. package/dist/context/state-tracker/track-context-state.d.ts +0 -22
  74. package/dist/context/state-tracker/track-context-state.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"device-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/device-parameters.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,eAAe,EAAgD,MAAM,eAAe,CAAC;AAClG,OAAO,EAAC,MAAM,EAAO,UAAU,EAA+B,MAAM,eAAe,CAAC;AAEpF,OAAO,KAAK,EAGV,UAAU,EACV,YAAY,EAIb,MAAM,oBAAoB,CAAC;AAO5B;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,GAAG,OAAO,EACnD,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAgBH;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAC1C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,YAAY,EACxB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAeH;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,OAAO,EAC9C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAgBH;AAED,kCAAkC;AAClC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,QAwMzE;AAyBD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,UAAU,CAW5F;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,eAAe,CAW9F"}
1
+ {"version":3,"file":"device-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/device-parameters.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,eAAe,EAAgD,MAAM,eAAe,CAAC;AAClG,OAAO,EAAC,MAAM,EAAO,UAAU,EAA+B,MAAM,eAAe,CAAC;AAEpF,OAAO,KAAK,EAGV,UAAU,EACV,YAAY,EAIb,MAAM,oBAAoB,CAAC;AAM5B;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,GAAG,OAAO,EACnD,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAgBH;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAC1C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,YAAY,EACxB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAeH;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,OAAO,EAC9C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAeH;AAED,kCAAkC;AAClC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,QAgNzE;AAyBD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,UAAU,CAW5F;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,eAAe,CAW9F"}
@@ -3,7 +3,6 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { log } from '@luma.gl/core';
5
5
  import { GL } from '@luma.gl/constants';
6
- import { pushContextState, popContextState } from "../../context/state-tracker/track-context-state.js";
7
6
  import { setGLParameters } from "../../context/parameters/unified-parameter-api.js";
8
7
  /* eslint-disable no-unused-expressions */ // For expression ? gl.enable() : gl.disable()
9
8
  /**
@@ -21,14 +20,14 @@ export function withDeviceAndGLParameters(device, parameters, glParameters, func
21
20
  }
22
21
  // Wrap in a try-catch to ensure that parameters are restored on exceptions
23
22
  const webglDevice = device;
24
- pushContextState(webglDevice.gl);
23
+ webglDevice.pushState();
25
24
  try {
26
25
  setDeviceParameters(device, parameters);
27
26
  setGLParameters(webglDevice.gl, glParameters);
28
27
  return func(device);
29
28
  }
30
29
  finally {
31
- popContextState(webglDevice.gl);
30
+ webglDevice.popState();
32
31
  }
33
32
  }
34
33
  /**
@@ -47,13 +46,13 @@ export function withGLParameters(device, parameters, func) {
47
46
  }
48
47
  // Wrap in a try-catch to ensure that parameters are restored on exceptions
49
48
  const webglDevice = device;
50
- pushContextState(webglDevice.gl);
49
+ webglDevice.pushState();
51
50
  try {
52
51
  setGLParameters(webglDevice.gl, parameters);
53
52
  return func(device);
54
53
  }
55
54
  finally {
56
- popContextState(webglDevice.gl);
55
+ webglDevice.popState();
57
56
  }
58
57
  }
59
58
  /**
@@ -69,16 +68,15 @@ export function withDeviceParameters(device, parameters, func) {
69
68
  // Avoid setting state if no parameters provided. Just call and return
70
69
  return func(device);
71
70
  }
72
- // Wrap in a try-catch to ensure that parameters are restored on exceptions
73
- // @ts-expect-error
74
- pushContextState(device.gl);
71
+ // Wrap in a try-catch to ensure that parameters are restored on exceptions'
72
+ const webglDevice = device;
73
+ webglDevice.pushState();
75
74
  try {
76
75
  setDeviceParameters(device, parameters);
77
76
  return func(device);
78
77
  }
79
78
  finally {
80
- // @ts-expect-error
81
- popContextState(device.gl);
79
+ webglDevice.popState();
82
80
  }
83
81
  }
84
82
  /** Set WebGPU Style Parameters */
@@ -218,8 +216,17 @@ export function setDeviceParameters(device, parameters) {
218
216
  // // handled by stencilPassOperation
219
217
  // },
220
218
  // COLOR STATE
219
+ switch (parameters.blend) {
220
+ case true:
221
+ gl.enable(3042);
222
+ break;
223
+ case false:
224
+ gl.disable(3042);
225
+ break;
226
+ default:
227
+ // leave WebGL blend state unchanged if `parameters.blend` is not set
228
+ }
221
229
  if (parameters.blendColorOperation || parameters.blendAlphaOperation) {
222
- gl.enable(3042);
223
230
  const colorEquation = convertBlendOperationToEquation('blendColorOperation', parameters.blendColorOperation || 'add');
224
231
  const alphaEquation = convertBlendOperationToEquation('blendAlphaOperation', parameters.blendAlphaOperation || 'add');
225
232
  gl.blendEquationSeparate(colorEquation, alphaEquation);
@@ -65,7 +65,7 @@ export declare function getTextureFormatWebGL(format: TextureFormat): {
65
65
  export declare function getDepthStencilAttachmentWebGL(format: TextureFormat): GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT;
66
66
  /** TODO - VERY roundabout legacy way of calculating bytes per pixel */
67
67
  export declare function getTextureFormatBytesPerPixel(format: TextureFormat): number;
68
- export declare function getWebGLPixelDataFormat(dataFormat: string, integer: boolean, normalized: boolean, format: GL): GLTexelDataFormat;
68
+ export declare function getWebGLPixelDataFormat(channels: 'r' | 'rg' | 'rgb' | 'rgba' | 'bgra', integer: boolean, normalized: boolean, format: GL): GLTexelDataFormat;
69
69
  export {};
70
70
  /**
71
71
  * Map WebGL texture formats (GL constants) to WebGPU-style TextureFormat strings
@@ -1 +1 @@
1
- {"version":3,"file":"texture-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/texture-formats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"texture-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/texture-formats.ts"],"names":[],"mappings":"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"}
@@ -82,14 +82,6 @@ export function checkTextureFeature(gl, feature, extensions) {
82
82
  */
83
83
  // prettier-ignore
84
84
  export const TEXTURE_FORMATS = {
85
- // Unsized formats that leave the precision up to the driver. TODO - Fix bpp constants
86
- 'rgb8unorm-unsized': { gl: 6407, b: 4, c: 2, bpp: 4,
87
- dataFormat: 6407, types: [5121, 33635] },
88
- 'rgba8unorm-unsized': { gl: 6408, b: 4, c: 2, bpp: 4,
89
- dataFormat: 6408, types: [5121, 32819, 32820] },
90
- // 'r8unorm-unsized': {gl: GL.LUMINANCE, b: 4, c: 2, bpp: 4},
91
- // 'rgb8unorm-srgb-unsized': {gl: GL.SRGB_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},
92
- // 'rgba8unorm-srgb-unsized': {gl: GL.SRGB_ALPHA_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},
93
85
  // 8-bit formats
94
86
  'r8unorm': { gl: 33321, b: 1, c: 1, rb: true },
95
87
  'r8snorm': { gl: 36756, b: 1, c: 1, render: snorm8_renderable },
@@ -164,9 +156,6 @@ export const TEXTURE_FORMATS = {
164
156
  // The depth component of the "depth24plus" and "depth24plus-stencil8" formats may be implemented as either a 24-bit depth value or a "depth32float" value.
165
157
  'depth24plus-stencil8': { gl: 35056, b: 4, c: 2, p: 1, attachment: 33306, rb: true, depthTexture: true,
166
158
  dataFormat: 34041, types: [34042] },
167
- // "depth24unorm-stencil8" feature
168
- 'depth24unorm-stencil8': { gl: 35056, b: 4, c: 2, p: 1, attachment: 33306,
169
- dataFormat: 34041, types: [34042], rb: true },
170
159
  // "depth32float-stencil8" feature - TODO below is render buffer only?
171
160
  'depth32float-stencil8': { gl: 36013, b: 5, c: 2, p: 1, attachment: 33306,
172
161
  dataFormat: 34041, types: [36269], rb: true },
@@ -370,6 +359,10 @@ export function isTextureFormatSupported(gl, format, extensions) {
370
359
  if (info.gl === undefined) {
371
360
  return false;
372
361
  }
362
+ const feature = info.f;
363
+ if (feature) {
364
+ return checkTextureFeature(gl, feature, extensions);
365
+ }
373
366
  // Check extensions
374
367
  const extension = info.x || info.gl2ext;
375
368
  if (extension) {
@@ -452,13 +445,12 @@ export function getTextureFormatWebGL(format) {
452
445
  return {
453
446
  internalFormat: webglFormat,
454
447
  format: formatData?.dataFormat ||
455
- getWebGLPixelDataFormat(decoded.format, decoded.integer, decoded.normalized, webglFormat),
448
+ getWebGLPixelDataFormat(decoded.channels, decoded.integer, decoded.normalized, webglFormat),
456
449
  // depth formats don't have a type
457
450
  type: decoded.dataType
458
451
  ? getGLFromVertexType(decoded.dataType)
459
452
  : formatData?.types?.[0] || 5121,
460
- // @ts-expect-error
461
- compressed: decoded.compressed
453
+ compressed: decoded.compressed || false
462
454
  };
463
455
  }
464
456
  export function getDepthStencilAttachmentWebGL(format) {
@@ -478,17 +470,18 @@ export function getTextureFormatBytesPerPixel(format) {
478
470
  return channels * channelSize;
479
471
  }
480
472
  // DATA TYPE HELPERS
481
- export function getWebGLPixelDataFormat(dataFormat, integer, normalized, format) {
473
+ export function getWebGLPixelDataFormat(channels, integer, normalized, format) {
482
474
  // WebGL1 formats use same internalFormat
483
475
  if (format === 6408 || format === 6407) {
484
476
  return format;
485
477
  }
486
478
  // prettier-ignore
487
- switch (dataFormat) {
479
+ switch (channels) {
488
480
  case 'r': return integer && !normalized ? 36244 : 6403;
489
481
  case 'rg': return integer && !normalized ? 33320 : 33319;
490
482
  case 'rgb': return integer && !normalized ? 36248 : 6407;
491
483
  case 'rgba': return integer && !normalized ? 36249 : 6408;
484
+ case 'bgra': throw new Error('bgra pixels not supported by WebGL');
492
485
  default: return 6408;
493
486
  }
494
487
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-device-features.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/webgl-device-features.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AA8BhD;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,SAAS,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACrC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC;IACnC,SAAS,CAAC,cAAc,qBAA4B;gBAGlD,EAAE,EAAE,sBAAsB,EAC1B,UAAU,EAAE,YAAY,EACxB,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAU1D,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,aAAa,CAAC;IAU5C,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAuB7C,kBAAkB;IAWlB,WAAW;IAIX,iCAAiC;IACjC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;CAU3D"}
1
+ {"version":3,"file":"webgl-device-features.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/webgl-device-features.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AA6BhD;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,SAAS,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACrC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC;IACnC,SAAS,CAAC,cAAc,qBAA4B;gBAGlD,EAAE,EAAE,sBAAsB,EAC1B,UAAU,EAAE,YAAY,EACxB,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAU1D,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,aAAa,CAAC;IAU5C,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAuB7C,kBAAkB;IAWlB,WAAW,IACoE,aAAa,EAAE;IAG9F,iCAAiC;IACjC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;CAU3D"}
@@ -17,7 +17,6 @@ const WEBGL_FEATURES = {
17
17
  // 'timestamp-query' // GPUQueryType "timestamp-query"
18
18
  // "indirect-first-instance"
19
19
  // Textures are handled by getTextureFeatures()
20
- // 'depth24unorm-stencil8' // GPUTextureFormat 'depth24unorm-stencil8'
21
20
  // 'depth32float-stencil8' // GPUTextureFormat 'depth32float-stencil8'
22
21
  // optional WebGL features
23
22
  'timer-query-webgl': 'EXT_disjoint_timer_query_webgl2',
@@ -87,7 +87,7 @@ export declare function getWebGLTextureTarget(dimension: '1d' | '2d' | '2d-array
87
87
  export function clearMipLevel(gl: WebGL2RenderingContext, options: WebGLSetTextureOptions): void {
88
88
  const {dimension, width, height, depth = 0, level = 0} = options;
89
89
  const {glInternalFormat, glFormat, glType, compressed} = options;
90
- const glTarget = getCubeTargetWebGL(options.glTarget, dimension, depth);
90
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
91
91
 
92
92
  switch (dimension) {
93
93
  case '2d-array':
@@ -130,7 +130,7 @@ export function setMipLevelFromExternalImage(
130
130
  const {dimension, width, height, depth = 0, level = 0} = options;
131
131
  const {glInternalFormat, glType} = options;
132
132
 
133
- const glTarget = getCubeTargetWebGL(options.glTarget, dimension, depth);
133
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
134
134
 
135
135
  // TODO - we can't change texture width (due to WebGPU limitations) -
136
136
  // and the width/heigh of an external image is implicit, so why do we need to extract it?
@@ -181,7 +181,7 @@ export function setMipLevelFromTypedArray(
181
181
  const {dimension, width, height, depth = 0, level = 0, offset = 0} = options;
182
182
  const {glInternalFormat, glFormat, glType, compressed} = options;
183
183
 
184
- const glTarget = getCubeTargetWebGL(options.glTarget, dimension, depth);
184
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
185
185
 
186
186
  withGLParameters(gl, parameters, () => {
187
187
  switch (dimension) {
@@ -260,7 +260,7 @@ export function setMipLevelFromGPUBuffer(
260
260
  ): void {
261
261
  const {dimension, width, height, depth = 0, level = 0, byteOffset = 0} = options;
262
262
  const {glInternalFormat, glFormat, glType, compressed} = options;
263
- const glTarget = getCubeTargetWebGL(options.glTarget, dimension, depth);
263
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
264
264
 
265
265
  const webglBuffer = buffer as WEBGLBuffer;
266
266
  const imageSize = buffer.byteLength;
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-texture-utils.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/webgl-texture-utils.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AAEjD,OAAO,EACL,EAAE,EACF,eAAe,EAEf,iBAAiB,EACjB,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAK1C,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,gBAAgB,EAAE,EAAE,CAAC;IACrB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IAEX,QAAQ,EAAE,eAAe,CAAC;IAC1B,gBAAgB,EAAE,EAAE,CAAC;IACrB,QAAQ,EAAE,EAAE,CAAC;IACb,MAAM,EAAE,EAAE,CAAC;IACX,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,sBAAsB,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,sBAAsB,GAC9B,IAAI,CAaN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,sBAAsB,EAC1B,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAyBN;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,sBAAsB,EAC1B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAgCN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,sBAAsB,EAC1B,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAoCN;AAID,gFAAgF;AAChF,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,GACjE,eAAe,CAWjB;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwNE"}
1
+ {"version":3,"file":"webgl-texture-utils.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/webgl-texture-utils.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AAEjD,OAAO,EACL,EAAE,EACF,eAAe,EAEf,iBAAiB,EACjB,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAK1C,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,gBAAgB,EAAE,EAAE,CAAC;IACrB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IAEX,QAAQ,EAAE,eAAe,CAAC;IAC1B,gBAAgB,EAAE,EAAE,CAAC;IACrB,QAAQ,EAAE,EAAE,CAAC;IACb,MAAM,EAAE,EAAE,CAAC;IACX,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,sBAAsB,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,sBAAsB,GAC9B,IAAI,CAaN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,sBAAsB,EAC1B,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAyBN;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,sBAAsB,EAC1B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAkCN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,sBAAsB,EAC1B,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAoCN;AAID,gFAAgF;AAChF,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,GACjE,eAAe,CAWjB;AAiBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwNE"}
@@ -19,7 +19,7 @@ const BORDER = 0;
19
19
  export function initializeTextureStorage(gl, levels, options) {
20
20
  const { dimension, width, height, depth = 0 } = options;
21
21
  const { glInternalFormat } = options;
22
- const glTarget = options.glTarget; // getCubeTargetWebGL(options.glTarget, dimension, depth);
22
+ const glTarget = options.glTarget; // getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
23
23
  switch (dimension) {
24
24
  case '2d-array':
25
25
  case '3d':
@@ -36,7 +36,7 @@ export function copyCPUImageToMipLevel(gl, image, options) {
36
36
  const { dimension, width, height, depth = 0, level = 0 } = options;
37
37
  const { x = 0, y = 0, z = 0 } = options;
38
38
  const { glFormat, glType } = options;
39
- const glTarget = getCubeTargetWebGL(options.glTarget, dimension, depth);
39
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
40
40
  // width = size.width,
41
41
  // height = size.height
42
42
  switch (dimension) {
@@ -61,7 +61,8 @@ export function copyCPUDataToMipLevel(gl, typedArray, options) {
61
61
  const { dimension, width, height, depth = 0, level = 0, byteOffset = 0 } = options;
62
62
  const { x = 0, y = 0, z = 0 } = options;
63
63
  const { glFormat, glType, compressed } = options;
64
- const glTarget = getCubeTargetWebGL(options.glTarget, dimension, depth);
64
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
65
+ // gl.bindTexture(glTarget, null);
65
66
  switch (dimension) {
66
67
  case '2d-array':
67
68
  case '3d':
@@ -96,7 +97,7 @@ export function copyGPUBufferToMipLevel(gl, webglBuffer, byteLength, options) {
96
97
  const { dimension, width, height, depth = 0, level = 0, byteOffset = 0 } = options;
97
98
  const { x = 0, y = 0, z = 0 } = options;
98
99
  const { glFormat, glType, compressed } = options;
99
- const glTarget = getCubeTargetWebGL(options.glTarget, dimension, depth);
100
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
100
101
  gl.bindBuffer(35052, webglBuffer);
101
102
  switch (dimension) {
102
103
  case '2d-array':
@@ -143,9 +144,10 @@ export function getWebGLTextureTarget(dimension) {
143
144
  }
144
145
  /**
145
146
  * In WebGL, cube maps specify faces by overriding target instead of using the depth parameter.
147
+ * @note We still bind the texture using GL.TEXTURE_CUBE_MAP, but we need to use the face-specific target when setting mip levels.
146
148
  * @returns glTarget unchanged, if dimension !== 'cube'.
147
149
  */
148
- function getCubeTargetWebGL(glTarget, dimension, level) {
150
+ function getWebGLCubeFaceTarget(glTarget, dimension, level) {
149
151
  return dimension === 'cube' ? 34069 + level : glTarget;
150
152
  }
151
153
  // texImage methods
@@ -156,7 +158,7 @@ function getCubeTargetWebGL(glTarget, dimension, level) {
156
158
  export function clearMipLevel(gl: WebGL2RenderingContext, options: WebGLSetTextureOptions): void {
157
159
  const {dimension, width, height, depth = 0, level = 0} = options;
158
160
  const {glInternalFormat, glFormat, glType, compressed} = options;
159
- const glTarget = getCubeTargetWebGL(options.glTarget, dimension, depth);
161
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
160
162
 
161
163
  switch (dimension) {
162
164
  case '2d-array':
@@ -199,7 +201,7 @@ export function setMipLevelFromExternalImage(
199
201
  const {dimension, width, height, depth = 0, level = 0} = options;
200
202
  const {glInternalFormat, glType} = options;
201
203
 
202
- const glTarget = getCubeTargetWebGL(options.glTarget, dimension, depth);
204
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
203
205
 
204
206
  // TODO - we can't change texture width (due to WebGPU limitations) -
205
207
  // and the width/heigh of an external image is implicit, so why do we need to extract it?
@@ -250,7 +252,7 @@ export function setMipLevelFromTypedArray(
250
252
  const {dimension, width, height, depth = 0, level = 0, offset = 0} = options;
251
253
  const {glInternalFormat, glFormat, glType, compressed} = options;
252
254
 
253
- const glTarget = getCubeTargetWebGL(options.glTarget, dimension, depth);
255
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
254
256
 
255
257
  withGLParameters(gl, parameters, () => {
256
258
  switch (dimension) {
@@ -329,7 +331,7 @@ export function setMipLevelFromGPUBuffer(
329
331
  ): void {
330
332
  const {dimension, width, height, depth = 0, level = 0, byteOffset = 0} = options;
331
333
  const {glInternalFormat, glFormat, glType, compressed} = options;
332
- const glTarget = getCubeTargetWebGL(options.glTarget, dimension, depth);
334
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
333
335
 
334
336
  const webglBuffer = buffer as WEBGLBuffer;
335
337
  const imageSize = buffer.byteLength;
@@ -123,7 +123,7 @@ export class WEBGLFramebuffer extends Framebuffer {
123
123
  switch (texture.glTarget) {
124
124
  case 35866:
125
125
  case 32879:
126
- gl.framebufferTextureLayer(36160, attachment, texture.glTarget, level, layer);
126
+ gl.framebufferTextureLayer(36160, attachment, texture.handle, level, layer);
127
127
  break;
128
128
  case 34067:
129
129
  // layer must be a cubemap face (or if index, converted to cube map face)
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-render-pass.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pass.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAChF,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAC5C,OAAO,EAAK,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAcpD,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,8DAA8D;IAC9D,YAAY,EAAE,YAAY,CAAC;gBAEf,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe;IAYvD,GAAG,IAAI,IAAI;IAKX,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACxC,aAAa,IAAI,IAAI;IACrB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAO5C;;OAEG;IACH,aAAa,CAAC,UAAU,GAAE,oBAAyB,GAAG,IAAI;IAmD1D,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKpC,iBAAiB,IAAI,IAAI;IAOlC;;OAEG;IACH,SAAS,CAAC,KAAK,IAAI,IAAI;IA+BvB;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,UAAU,GAAE,MAAU,EAAE,KAAK,GAAE,YAA2B;CAwCtF"}
1
+ {"version":3,"file":"webgl-render-pass.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pass.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAChF,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAC5C,OAAO,EAAK,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAapD,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,8DAA8D;IAC9D,YAAY,EAAE,YAAY,CAAC;gBAEf,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe;IA0BvD,GAAG,IAAI,IAAI;IAKX,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACxC,aAAa,IAAI,IAAI;IACrB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAO5C;;OAEG;IACH,aAAa,CAAC,UAAU,GAAE,oBAAyB,GAAG,IAAI;IAmD1D,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKpC,iBAAiB,IAAI,IAAI;IAOlC;;OAEG;IACH,SAAS,CAAC,KAAK,IAAI,IAAI;IA+BvB;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,UAAU,GAAE,MAAU,EAAE,KAAK,GAAE,YAA2B;CAwCtF"}
@@ -5,7 +5,6 @@ import { RenderPass } from '@luma.gl/core';
5
5
  import { GL } from '@luma.gl/constants';
6
6
  import { withGLParameters } from "../../context/state-tracker/with-parameters.js";
7
7
  import { setGLParameters } from "../../context/parameters/unified-parameter-api.js";
8
- import { pushContextState, popContextState } from "../../context/state-tracker/track-context-state.js";
9
8
  // Should collapse during minification
10
9
  const GL_DEPTH_BUFFER_BIT = 0x00000100;
11
10
  const GL_STENCIL_BUFFER_BIT = 0x00000400;
@@ -19,14 +18,28 @@ export class WEBGLRenderPass extends RenderPass {
19
18
  constructor(device, props) {
20
19
  super(device, props);
21
20
  this.device = device;
21
+ // If no viewport is provided, apply reasonably defaults
22
+ let viewport;
23
+ if (!props?.parameters?.viewport) {
24
+ if (props?.framebuffer) {
25
+ // Set the viewport to the size of the framebuffer
26
+ const { width, height } = props.framebuffer;
27
+ viewport = [0, 0, width, height];
28
+ }
29
+ else {
30
+ // Instead of using our own book-keeping, we can just read the values from the WebGL context
31
+ const [width, height] = device.getCanvasContext().getDrawingBufferSize();
32
+ viewport = [0, 0, width, height];
33
+ }
34
+ }
22
35
  // TODO - do parameters (scissorRect) affect the clear operation?
23
- pushContextState(this.device.gl);
24
- this.setParameters(this.props.parameters);
36
+ this.device.pushState();
37
+ this.setParameters({ viewport, ...this.props.parameters });
25
38
  // Hack - for now WebGL draws in "immediate mode" (instead of queueing the operations)...
26
39
  this.clear();
27
40
  }
28
41
  end() {
29
- popContextState(this.device.gl);
42
+ this.device.popState();
30
43
  // should add commands to CommandEncoder.
31
44
  }
32
45
  pushDebugGroup(groupLabel) { }
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,mBAAmB,EAAE,wBAAwB,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAC;AACpG,OAAO,KAAK,EAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAC,UAAU,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,cAAc,EAAM,MAAM,eAAe,CAAC;AAUlD,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C,OAAO,EAAC,WAAW,EAAC,0BAAuB;AAK3C,OAAO,EAAC,sBAAsB,EAAC,sCAAmC;AAKlE,oCAAoC;AACpC,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,yDAAyD;IACzD,MAAM,EAAE,WAAW,CAAC;IACpB,yCAAyC;IACzC,MAAM,EAAE,YAAY,CAAC;IACrB,oBAAoB;IACpB,EAAE,EAAE,WAAW,CAAC;IAChB,sBAAsB;IACtB,EAAE,EAAE,WAAW,CAAC;IAChB,mEAAmE;IACnE,kBAAkB,EAAE,YAAY,CAAC;IAEjC,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAM;IAC5C,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IACvC,qBAAqB;IACrB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IAEjC,aAAa,EAAE,MAAM,CAAK;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAM;gBAEnC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB;IA8BlD,OAAO,IAAI,IAAI;IAQxB;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI;IAyD3F;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,EAAE,UAAU,CAAC;QACvB,UAAU,CAAC,EAAE,wBAAwB,CAAC;QACtC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;QAC7B,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;KAC5C,GAAG,OAAO;IAgGF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;cAkBhD,YAAY;IA2B5B,wFAAwF;IACxF,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY;IAmB9D;;;;OAIG;IACH,cAAc,IAAI,SAAS,GAAG,SAAS,GAAG,YAAY;IAmBtD,6DAA6D;IACvD,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3C;;;;OAIG;IACH,sBAAsB;IAsBtB,iDAAiD;IACjD,cAAc;IAyFd;;;OAGG;IACH,cAAc;CASf"}
1
+ {"version":3,"file":"webgl-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,mBAAmB,EAAE,wBAAwB,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAC;AACpG,OAAO,KAAK,EAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAC,UAAU,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,cAAc,EAAM,MAAM,eAAe,CAAC;AAUlD,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C,OAAO,EAAC,WAAW,EAAC,0BAAuB;AAK3C,OAAO,EAAC,sBAAsB,EAAC,sCAAmC;AAKlE,oCAAoC;AACpC,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,yDAAyD;IACzD,MAAM,EAAE,WAAW,CAAC;IACpB,yCAAyC;IACzC,MAAM,EAAE,YAAY,CAAC;IACrB,oBAAoB;IACpB,EAAE,EAAE,WAAW,CAAC;IAChB,sBAAsB;IACtB,EAAE,EAAE,WAAW,CAAC;IAChB,mEAAmE;IACnE,kBAAkB,EAAE,YAAY,CAAC;IAEjC,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAM;IAC5C,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IACvC,qBAAqB;IACrB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IAEjC,aAAa,EAAE,MAAM,CAAK;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAM;gBAEnC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB;IA8BlD,OAAO,IAAI,IAAI;IAQxB;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI;IA0D3F;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,EAAE,UAAU,CAAC;QACvB,UAAU,CAAC,EAAE,wBAAwB,CAAC;QACtC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;QAC7B,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;KAC5C,GAAG,OAAO;IAgGF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;cAkBhD,YAAY;IA2B5B,wFAAwF;IACxF,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY;IAmB9D;;;;OAIG;IACH,cAAc,IAAI,SAAS,GAAG,SAAS,GAAG,YAAY;IAmBtD,6DAA6D;IACvD,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3C;;;;OAIG;IACH,sBAAsB;IAsBtB,iDAAiD;IACjD,cAAc;IAyFd;;;OAGG;IACH,cAAc;CASf"}
@@ -85,7 +85,7 @@ export class WEBGLRenderPipeline extends RenderPipeline {
85
85
  .map(binding => `"${binding.name}"`)
86
86
  .join(', ');
87
87
  if (!options?.disableWarnings) {
88
- log.warn(`Unknown binding "${name}" in render pipeline "${this.id}", expected one of ${validBindings}`)();
88
+ log.warn(`No binding "${name}" in render pipeline "${this.id}", expected one of ${validBindings}`, value)();
89
89
  }
90
90
  continue; // eslint-disable-line no-continue
91
91
  }
@@ -49,7 +49,7 @@ export class WEBGLShader extends Shader {
49
49
  // PRIVATE METHODS
50
50
  /** Compile a shader and get compilation status */
51
51
  async _compile(source) {
52
- const addGLSLVersion = (source) => source.startsWith('#version ') ? source : `#version 100\n${source}`;
52
+ const addGLSLVersion = (source) => source.startsWith('#version ') ? source : `#version 300 es\n${source}`;
53
53
  source = addGLSLVersion(source);
54
54
  const { gl } = this.device;
55
55
  gl.shaderSource(this.handle, source);
@@ -54,7 +54,7 @@ export declare class WEBGLTexture extends Texture {
54
54
  generateMipmap(params?: {}): void;
55
55
  setTexture1DData(data: Texture1DData): void;
56
56
  /** Set a simple texture */
57
- setTexture2DData(lodData: Texture2DData, depth?: number, glTarget?: GLTextureTarget): void;
57
+ setTexture2DData(lodData: Texture2DData, depth?: number): void;
58
58
  /**
59
59
  * Sets a 3D texture
60
60
  * @param data
@@ -89,7 +89,7 @@ export declare class WEBGLTexture extends Texture {
89
89
  * Copy a region of data from a CPU memory buffer into this texture.
90
90
  * @todo - GLUnpackParameters parameters
91
91
  */
92
- protected _setMipLevel(depth: number, level: number, textureData: Texture2DData, offset?: number): void;
92
+ protected _setMipLevel(depth: number, level: number, textureData: Texture2DData, glTarget?: GL): void;
93
93
  getActiveUnit(): number;
94
94
  bind(textureUnit?: number): number;
95
95
  unbind(textureUnit?: number): number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-texture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webgl-texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-texture.ts"],"names":[],"mappings":"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"}
@@ -267,7 +267,7 @@ export class WEBGLTexture extends Texture {
267
267
  throw new Error('setTexture1DData not supported in WebGL.');
268
268
  }
269
269
  /** Set a simple texture */
270
- setTexture2DData(lodData, depth = 0, glTarget = this.glTarget) {
270
+ setTexture2DData(lodData, depth = 0) {
271
271
  this.bind();
272
272
  const lodArray = normalizeTextureData(lodData, this);
273
273
  // If the user provides multiple LODs, then automatic mipmap
@@ -290,7 +290,9 @@ export class WEBGLTexture extends Texture {
290
290
  throw new Error(this.id);
291
291
  }
292
292
  if (ArrayBuffer.isView(data)) {
293
+ this.bind();
293
294
  copyCPUDataToMipLevel(this.device.gl, data, this);
295
+ this.unbind();
294
296
  }
295
297
  }
296
298
  /**
@@ -303,9 +305,9 @@ export class WEBGLTexture extends Texture {
303
305
  if (this.props.dimension !== 'cube') {
304
306
  throw new Error(this.id);
305
307
  }
306
- // for (const face of Texture.CubeFaces) {
307
- // // this.setTextureCubeFaceData(face, data[face]);
308
- // }
308
+ for (const face of Texture.CubeFaces) {
309
+ this.setTextureCubeFaceData(data[face], face);
310
+ }
309
311
  }
310
312
  /**
311
313
  * Sets an entire texture array
@@ -331,26 +333,8 @@ export class WEBGLTexture extends Texture {
331
333
  if (Array.isArray(lodData) && lodData.length > 1 && this.props.mipmaps !== false) {
332
334
  log.warn(`${this.id} has mipmap and multiple LODs.`)();
333
335
  }
334
- // const glFace = GL.TEXTURE_CUBE_MAP_POSITIVE_X + Texture.CubeFaces.indexOf(face);
335
- // const glType = GL.UNSIGNED_BYTE;
336
- // const {width, height, format = GL.RGBA, type = GL.UNSIGNED_BYTE} = this;
337
- // const {width, height, format = GL.RGBA, type = GL.UNSIGNED_BYTE} = this;
338
- this.bind();
339
- // for (let lodLevel = 0; lodLevel < lodData.length; lodLevel++) {
340
- // const imageData = lodData[lodLevel];
341
- // if (imageData instanceof ArrayBuffer) {
342
- // // const imageData = image instanceof ArrayBuffer ? new ImageData(new Uint8ClampedArray(image), this.width) : image;
343
- // this.device.gl.texImage2D?.(
344
- // glFace,
345
- // lodLevel,
346
- // this.glInternalFormat,
347
- // this.glInternalFormat,
348
- // glType,
349
- // imageData
350
- // );
351
- // }
352
- // }
353
- this.unbind();
336
+ const faceDepth = Texture.CubeFaces.indexOf(face);
337
+ this.setTexture2DData(lodData, faceDepth);
354
338
  }
355
339
  // INTERNAL METHODS
356
340
  /** @todo update this method to accept LODs */
@@ -482,13 +466,13 @@ export class WEBGLTexture extends Texture {
482
466
  * Copy a region of data from a CPU memory buffer into this texture.
483
467
  * @todo - GLUnpackParameters parameters
484
468
  */
485
- _setMipLevel(depth, level, textureData, offset = 0) {
469
+ _setMipLevel(depth, level, textureData, glTarget = this.glTarget) {
486
470
  // if (!textureData) {
487
471
  // clearMipLevel(this.device.gl, {...this, depth, level});
488
472
  // return;
489
473
  // }
490
474
  if (Texture.isExternalImage(textureData)) {
491
- copyCPUImageToMipLevel(this.device.gl, textureData, { ...this, depth, level });
475
+ copyCPUImageToMipLevel(this.device.gl, textureData, { ...this, depth, level, glTarget });
492
476
  return;
493
477
  }
494
478
  // @ts-expect-error
@@ -496,7 +480,8 @@ export class WEBGLTexture extends Texture {
496
480
  copyCPUDataToMipLevel(this.device.gl, textureData.data, {
497
481
  ...this,
498
482
  depth,
499
- level
483
+ level,
484
+ glTarget
500
485
  });
501
486
  return;
502
487
  }
@@ -0,0 +1,21 @@
1
+ import { Adapter, Device, DeviceProps } from '@luma.gl/core';
2
+ import { WebGLDevice } from "./webgl-device.js";
3
+ export declare class WebGLAdapter extends Adapter {
4
+ /** type of device's created by this adapter */
5
+ readonly type: Device['type'];
6
+ constructor();
7
+ /** Check if WebGL 2 is available */
8
+ isSupported(): boolean;
9
+ /** Force any created WebGL contexts to be WebGL2 contexts, polyfilled with WebGL1 extensions */
10
+ enforceWebGL2(enable: boolean): void;
11
+ /**
12
+ * Get a device instance from a GL context
13
+ * Creates and instruments the device if not already created
14
+ * @param gl
15
+ * @returns
16
+ */
17
+ attach(gl: Device | WebGL2RenderingContext): Promise<WebGLDevice>;
18
+ create(props?: DeviceProps): Promise<WebGLDevice>;
19
+ }
20
+ export declare const webgl2Adapter: WebGLAdapter;
21
+ //# sourceMappingURL=webgl-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/webgl-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAqB,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAC,WAAW,EAAC,0BAAuB;AAO3C,qBAAa,YAAa,SAAQ,OAAO;IACvC,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAW;;IAYxC,oCAAoC;IACpC,WAAW,IAAI,OAAO;IAItB,gGAAgG;IAChG,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAIpC;;;;;OAKG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC;IAejE,MAAM,CAAC,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;CA4C5D;AAWD,eAAO,MAAM,aAAa,cAAqB,CAAC"}