@luma.gl/webgl 9.1.0-alpha.9 → 9.1.0-beta.11

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 (198) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts +3 -3
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +1 -0
  4. package/dist/adapter/converters/device-parameters.js.map +1 -0
  5. package/dist/adapter/converters/sampler-parameters.js +7 -4
  6. package/dist/adapter/converters/sampler-parameters.js.map +1 -0
  7. package/dist/adapter/converters/shader-formats.js +1 -0
  8. package/dist/adapter/converters/shader-formats.js.map +1 -0
  9. package/dist/adapter/converters/vertex-formats.js +1 -0
  10. package/dist/adapter/converters/vertex-formats.js.map +1 -0
  11. package/dist/adapter/converters/webgl-texture-table.d.ts +40 -0
  12. package/dist/adapter/converters/webgl-texture-table.d.ts.map +1 -0
  13. package/dist/adapter/converters/webgl-texture-table.js +304 -0
  14. package/dist/adapter/converters/webgl-texture-table.js.map +1 -0
  15. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  16. package/dist/adapter/device-helpers/webgl-device-features.js +2 -2
  17. package/dist/adapter/device-helpers/webgl-device-features.js.map +1 -0
  18. package/dist/adapter/device-helpers/webgl-device-info.js +1 -0
  19. package/dist/adapter/device-helpers/webgl-device-info.js.map +1 -0
  20. package/dist/adapter/device-helpers/webgl-device-limits.js +1 -0
  21. package/dist/adapter/device-helpers/webgl-device-limits.js.map +1 -0
  22. package/dist/adapter/helpers/decode-webgl-types.js +1 -0
  23. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  24. package/dist/adapter/helpers/format-utils.d.ts.map +1 -0
  25. package/dist/{classic → adapter/helpers}/format-utils.js +7 -0
  26. package/dist/adapter/helpers/format-utils.js.map +1 -0
  27. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  28. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  29. package/dist/adapter/helpers/get-shader-layout.js +5 -4
  30. package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
  31. package/dist/adapter/helpers/parse-shader-compiler-log.js +1 -0
  32. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  33. package/dist/adapter/helpers/set-uniform.js +1 -0
  34. package/dist/adapter/helpers/set-uniform.js.map +1 -0
  35. package/dist/adapter/helpers/typed-array-utils.d.ts.map +1 -0
  36. package/dist/{classic → adapter/helpers}/typed-array-utils.js +1 -0
  37. package/dist/adapter/helpers/typed-array-utils.js.map +1 -0
  38. package/dist/adapter/helpers/webgl-texture-utils.d.ts +96 -25
  39. package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -1
  40. package/dist/adapter/helpers/webgl-texture-utils.js +225 -236
  41. package/dist/adapter/helpers/webgl-texture-utils.js.map +1 -0
  42. package/dist/adapter/helpers/webgl-topology-utils.js +1 -0
  43. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  44. package/dist/adapter/resources/webgl-buffer.js +1 -0
  45. package/dist/adapter/resources/webgl-buffer.js.map +1 -0
  46. package/dist/adapter/resources/webgl-command-buffer.d.ts +59 -2
  47. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  48. package/dist/adapter/resources/webgl-command-buffer.js +89 -32
  49. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
  50. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgl-command-encoder.js +4 -0
  52. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
  53. package/dist/adapter/resources/webgl-external-texture.js +15 -0
  54. package/dist/adapter/resources/webgl-external-texture.js.map +1 -0
  55. package/dist/adapter/resources/webgl-framebuffer.d.ts +33 -35
  56. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  57. package/dist/adapter/resources/webgl-framebuffer.js +68 -73
  58. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
  59. package/dist/adapter/resources/webgl-query-set.js +1 -0
  60. package/dist/adapter/resources/webgl-query-set.js.map +1 -0
  61. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  62. package/dist/adapter/resources/webgl-render-pass.js +30 -17
  63. package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
  64. package/dist/adapter/resources/webgl-render-pipeline.d.ts +2 -4
  65. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  66. package/dist/adapter/resources/webgl-render-pipeline.js +33 -18
  67. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
  68. package/dist/adapter/resources/webgl-sampler.js +1 -0
  69. package/dist/adapter/resources/webgl-sampler.js.map +1 -0
  70. package/dist/adapter/resources/webgl-shader.d.ts +1 -0
  71. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  72. package/dist/adapter/resources/webgl-shader.js +8 -5
  73. package/dist/adapter/resources/webgl-shader.js.map +1 -0
  74. package/dist/adapter/resources/webgl-texture-view.js +1 -0
  75. package/dist/adapter/resources/webgl-texture-view.js.map +1 -0
  76. package/dist/adapter/resources/webgl-texture.d.ts +32 -20
  77. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  78. package/dist/adapter/resources/webgl-texture.js +158 -218
  79. package/dist/adapter/resources/webgl-texture.js.map +1 -0
  80. package/dist/adapter/resources/webgl-transform-feedback.js +1 -0
  81. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  82. package/dist/adapter/resources/webgl-vertex-array.js +1 -0
  83. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  84. package/dist/adapter/webgl-adapter.d.ts.map +1 -1
  85. package/dist/adapter/webgl-adapter.js +5 -10
  86. package/dist/adapter/webgl-adapter.js.map +1 -0
  87. package/dist/adapter/webgl-canvas-context.d.ts +1 -0
  88. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  89. package/dist/adapter/webgl-canvas-context.js +4 -0
  90. package/dist/adapter/webgl-canvas-context.js.map +1 -0
  91. package/dist/adapter/webgl-device.d.ts +11 -14
  92. package/dist/adapter/webgl-device.d.ts.map +1 -1
  93. package/dist/adapter/webgl-device.js +60 -39
  94. package/dist/adapter/webgl-device.js.map +1 -0
  95. package/dist/context/debug/spector-types.js +2 -1
  96. package/dist/context/debug/spector-types.js.map +1 -0
  97. package/dist/context/debug/spector.d.ts +5 -5
  98. package/dist/context/debug/spector.d.ts.map +1 -1
  99. package/dist/context/debug/spector.js +7 -6
  100. package/dist/context/debug/spector.js.map +1 -0
  101. package/dist/context/debug/webgl-developer-tools.d.ts +2 -3
  102. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  103. package/dist/context/debug/webgl-developer-tools.js +7 -19
  104. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  105. package/dist/context/helpers/create-browser-context.d.ts +6 -22
  106. package/dist/context/helpers/create-browser-context.d.ts.map +1 -1
  107. package/dist/context/helpers/create-browser-context.js +41 -32
  108. package/dist/context/helpers/create-browser-context.js.map +1 -0
  109. package/dist/context/helpers/webgl-context-data.js +1 -0
  110. package/dist/context/helpers/webgl-context-data.js.map +1 -0
  111. package/dist/context/helpers/webgl-extensions.js +1 -0
  112. package/dist/context/helpers/webgl-extensions.js.map +1 -0
  113. package/dist/context/parameters/unified-parameter-api.js +1 -0
  114. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  115. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  116. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  117. package/dist/context/parameters/webgl-parameter-tables.js +3 -2
  118. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  119. package/dist/context/polyfills/polyfill-webgl1-extensions.js +1 -0
  120. package/dist/context/polyfills/polyfill-webgl1-extensions.js.map +1 -0
  121. package/dist/context/state-tracker/deep-array-equal.js +1 -0
  122. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  123. package/dist/context/state-tracker/webgl-state-tracker.js +1 -0
  124. package/dist/context/state-tracker/webgl-state-tracker.js.map +1 -0
  125. package/dist/context/state-tracker/with-parameters.js +1 -0
  126. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  127. package/dist/deprecated/accessor.d.ts.map +1 -0
  128. package/dist/{classic → deprecated}/accessor.js +37 -1
  129. package/dist/deprecated/accessor.js.map +1 -0
  130. package/dist/dist.dev.js +2217 -2366
  131. package/dist/dist.min.js +2 -2
  132. package/dist/index.cjs +2098 -2240
  133. package/dist/index.cjs.map +4 -4
  134. package/dist/index.d.ts +2 -3
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +3 -4
  137. package/dist/index.js.map +1 -0
  138. package/dist/types.js +1 -0
  139. package/dist/types.js.map +1 -0
  140. package/dist/utils/fill-array.d.ts +4 -4
  141. package/dist/utils/fill-array.d.ts.map +1 -1
  142. package/dist/utils/fill-array.js +1 -0
  143. package/dist/utils/fill-array.js.map +1 -0
  144. package/dist/utils/load-script.js +1 -0
  145. package/dist/utils/load-script.js.map +1 -0
  146. package/dist/utils/split-uniforms-and-bindings.d.ts +1 -1
  147. package/dist/utils/split-uniforms-and-bindings.d.ts.map +1 -1
  148. package/dist/utils/split-uniforms-and-bindings.js +1 -0
  149. package/dist/utils/split-uniforms-and-bindings.js.map +1 -0
  150. package/dist/utils/uid.js +1 -0
  151. package/dist/utils/uid.js.map +1 -0
  152. package/package.json +5 -5
  153. package/src/adapter/converters/device-parameters.ts +3 -3
  154. package/src/adapter/converters/sampler-parameters.ts +6 -4
  155. package/src/adapter/converters/webgl-texture-table.ts +404 -0
  156. package/src/adapter/device-helpers/webgl-device-features.ts +5 -2
  157. package/src/{classic → adapter/helpers}/format-utils.ts +6 -0
  158. package/src/adapter/helpers/get-shader-layout.ts +7 -4
  159. package/src/adapter/helpers/webgl-texture-utils.ts +400 -57
  160. package/src/adapter/resources/webgl-command-buffer.ts +125 -41
  161. package/src/adapter/resources/webgl-command-encoder.ts +6 -0
  162. package/src/adapter/resources/webgl-external-texture.ts +14 -0
  163. package/src/adapter/resources/webgl-framebuffer.ts +77 -83
  164. package/src/adapter/resources/webgl-render-pass.ts +52 -41
  165. package/src/adapter/resources/webgl-render-pipeline.ts +44 -21
  166. package/src/adapter/resources/webgl-shader.ts +8 -6
  167. package/src/adapter/resources/webgl-texture.ts +183 -250
  168. package/src/adapter/webgl-adapter.ts +4 -12
  169. package/src/adapter/webgl-canvas-context.ts +4 -0
  170. package/src/adapter/webgl-device.ts +100 -72
  171. package/src/context/debug/spector-types.ts +1 -1
  172. package/src/context/debug/spector.ts +11 -11
  173. package/src/context/debug/webgl-developer-tools.ts +8 -31
  174. package/src/context/helpers/create-browser-context.ts +53 -63
  175. package/src/context/parameters/webgl-parameter-tables.ts +2 -2
  176. package/src/{classic → deprecated}/accessor.ts +44 -3
  177. package/src/index.ts +2 -5
  178. package/src/utils/fill-array.ts +4 -4
  179. package/src/utils/split-uniforms-and-bindings.ts +3 -3
  180. package/dist/adapter/converters/texture-formats.d.ts +0 -83
  181. package/dist/adapter/converters/texture-formats.d.ts.map +0 -1
  182. package/dist/adapter/converters/texture-formats.js +0 -511
  183. package/dist/classic/accessor.d.ts.map +0 -1
  184. package/dist/classic/clear.d.ts +0 -22
  185. package/dist/classic/clear.d.ts.map +0 -1
  186. package/dist/classic/clear.js +0 -86
  187. package/dist/classic/copy-and-blit.d.ts +0 -64
  188. package/dist/classic/copy-and-blit.d.ts.map +0 -1
  189. package/dist/classic/copy-and-blit.js +0 -194
  190. package/dist/classic/format-utils.d.ts.map +0 -1
  191. package/dist/classic/typed-array-utils.d.ts.map +0 -1
  192. package/src/adapter/converters/texture-formats.ts +0 -657
  193. package/src/classic/clear.ts +0 -115
  194. package/src/classic/copy-and-blit.ts +0 -323
  195. /package/dist/{classic → adapter/helpers}/format-utils.d.ts +0 -0
  196. /package/dist/{classic → adapter/helpers}/typed-array-utils.d.ts +0 -0
  197. /package/dist/{classic → deprecated}/accessor.d.ts +0 -0
  198. /package/src/{classic → adapter/helpers}/typed-array-utils.ts +0 -0
@@ -2,14 +2,21 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import type {RenderPipelineProps, RenderPipelineParameters, PrimitiveTopology} from '@luma.gl/core';
6
- import type {ShaderLayout, UniformValue, Binding} from '@luma.gl/core';
7
- import type {RenderPass, VertexArray} from '@luma.gl/core';
5
+ import type {
6
+ RenderPipelineProps,
7
+ RenderPipelineParameters,
8
+ PrimitiveTopology,
9
+ ShaderLayout,
10
+ UniformValue,
11
+ Binding,
12
+ RenderPass,
13
+ VertexArray
14
+ } from '@luma.gl/core';
8
15
  import {RenderPipeline, log} from '@luma.gl/core';
9
16
  // import {getAttributeInfosFromLayouts} from '@luma.gl/core';
10
17
  import {GL} from '@luma.gl/constants';
11
18
 
12
- import {getShaderLayout} from '../helpers/get-shader-layout';
19
+ import {getShaderLayoutFromGLSL} from '../helpers/get-shader-layout';
13
20
  import {withDeviceAndGLParameters} from '../converters/device-parameters';
14
21
  import {setUniform} from '../helpers/set-uniform';
15
22
  import {splitUniformsAndBindings} from '../../utils/split-uniforms-and-bindings';
@@ -73,7 +80,7 @@ export class WEBGLRenderPipeline extends RenderPipeline {
73
80
  this._linkShaders();
74
81
 
75
82
  log.time(1, `RenderPipeline ${this.id} - shaderLayout introspection`)();
76
- this.introspectedLayout = getShaderLayout(this.device.gl, this.handle);
83
+ this.introspectedLayout = getShaderLayoutFromGLSL(this.device.gl, this.handle);
77
84
  log.timeEnd(1, `RenderPipeline ${this.id} - shaderLayout introspection`)();
78
85
 
79
86
  // Merge provided layout with introspected layout
@@ -103,12 +110,12 @@ export class WEBGLRenderPipeline extends RenderPipeline {
103
110
  // and reference them as `app` from both GLSL and JS.
104
111
  // TODO - this is rather hacky - we could also remap the name directly in the shader layout.
105
112
  const binding =
106
- this.shaderLayout.bindings.find(binding => binding.name === name) ||
107
- this.shaderLayout.bindings.find(binding => binding.name === `${name}Uniforms`);
113
+ this.shaderLayout.bindings.find(binding_ => binding_.name === name) ||
114
+ this.shaderLayout.bindings.find(binding_ => binding_.name === `${name}Uniforms`);
108
115
 
109
116
  if (!binding) {
110
117
  const validBindings = this.shaderLayout.bindings
111
- .map(binding => `"${binding.name}"`)
118
+ .map(binding_ => `"${binding_.name}"`)
112
119
  .join(', ');
113
120
  if (!options?.disableWarnings) {
114
121
  log.warn(
@@ -310,22 +317,37 @@ export class WEBGLRenderPipeline extends RenderPipeline {
310
317
  }
311
318
 
312
319
  /** Report link status. First, check for shader compilation failures if linking fails */
313
- _reportLinkStatus(status: 'success' | 'linking' | 'validation') {
320
+ async _reportLinkStatus(status: 'success' | 'linking' | 'validation'): Promise<void> {
314
321
  switch (status) {
315
322
  case 'success':
316
323
  return;
317
324
 
318
325
  default:
319
326
  // First check for shader compilation failures if linking fails
320
- if (this.vs.compilationStatus === 'error') {
321
- this.vs.debugShader();
322
- throw new Error(`Error during compilation of shader ${this.vs.id}`);
327
+ switch (this.vs.compilationStatus) {
328
+ case 'error':
329
+ this.vs.debugShader();
330
+ throw new Error(`Error during compilation of shader ${this.vs.id}`);
331
+ case 'pending':
332
+ this.vs.asyncCompilationStatus.then(() => this.vs.debugShader());
333
+ break;
334
+ case 'success':
335
+ break;
323
336
  }
324
- if (this.fs?.compilationStatus === 'error') {
325
- this.fs.debugShader();
326
- throw new Error(`Error during compilation of shader ${this.fs.id}`);
337
+
338
+ switch (this.fs?.compilationStatus) {
339
+ case 'error':
340
+ this.fs.debugShader();
341
+ throw new Error(`Error during compilation of shader ${this.fs.id}`);
342
+ case 'pending':
343
+ this.fs.asyncCompilationStatus.then(() => this.fs.debugShader());
344
+ break;
345
+ case 'success':
346
+ break;
327
347
  }
328
- throw new Error(`Error during ${status}: ${this.device.gl.getProgramInfoLog(this.handle)}`);
348
+
349
+ const linkErrorLog = this.device.gl.getProgramInfoLog(this.handle);
350
+ throw new Error(`Error during ${status}: ${linkErrorLog}`);
329
351
  }
330
352
  }
331
353
 
@@ -392,11 +414,12 @@ export class WEBGLRenderPipeline extends RenderPipeline {
392
414
  }
393
415
  }
394
416
 
395
- for (const [, texture] of Object.entries(this.bindings)) {
396
- if (texture instanceof WEBGLTexture) {
397
- texture.update();
398
- }
399
- }
417
+ // TODO - remove this should be handled by ExternalTexture
418
+ // for (const [, texture] of Object.entries(this.bindings)) {
419
+ // if (texture instanceof WEBGLTexture) {
420
+ // texture.update();
421
+ // }
422
+ // }
400
423
 
401
424
  return texturesRenderable;
402
425
  }
@@ -39,14 +39,18 @@ export class WEBGLShader extends Shader {
39
39
  }
40
40
  }
41
41
 
42
+ get asyncCompilationStatus(): Promise<'pending' | 'success' | 'error'> {
43
+ return this._waitForCompilationComplete().then(() => this.compilationStatus);
44
+ }
45
+
42
46
  override async getCompilationInfo(): Promise<readonly CompilerMessage[]> {
43
47
  await this._waitForCompilationComplete();
44
48
  return this.getCompilationInfoSync();
45
49
  }
46
50
 
47
51
  override getCompilationInfoSync(): readonly CompilerMessage[] {
48
- const log = this.device.gl.getShaderInfoLog(this.handle);
49
- return log ? parseShaderCompilerLog(log) : [];
52
+ const shaderLog = this.device.gl.getShaderInfoLog(this.handle);
53
+ return shaderLog ? parseShaderCompilerLog(shaderLog) : [];
50
54
  }
51
55
 
52
56
  override getTranslatedSource(): string | null {
@@ -59,16 +63,14 @@ export class WEBGLShader extends Shader {
59
63
 
60
64
  /** Compile a shader and get compilation status */
61
65
  protected async _compile(source: string): Promise<void> {
62
- const addGLSLVersion = (source: string) =>
63
- source.startsWith('#version ') ? source : `#version 300 es\n${source}`;
64
- source = addGLSLVersion(source);
66
+ source = source.startsWith('#version ') ? source : `#version 300 es\n${source}`;
65
67
 
66
68
  const {gl} = this.device;
67
69
  gl.shaderSource(this.handle, source);
68
70
  gl.compileShader(this.handle);
69
71
 
70
72
  // For performance reasons, avoid checking shader compilation errors on production
71
- if (log.level === 0) {
73
+ if (!this.device.props.debug) {
72
74
  this.compilationStatus = 'pending';
73
75
  return;
74
76
  }