@luma.gl/engine 9.1.9 → 9.2.0-alpha.2

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 (102) hide show
  1. package/README.md +5 -0
  2. package/dist/animation-loop/animation-loop.d.ts +12 -12
  3. package/dist/animation-loop/animation-loop.d.ts.map +1 -1
  4. package/dist/animation-loop/animation-loop.js +26 -62
  5. package/dist/animation-loop/animation-loop.js.map +1 -1
  6. package/dist/animation-loop/animation-props.d.ts +3 -4
  7. package/dist/animation-loop/animation-props.d.ts.map +1 -1
  8. package/dist/animation-loop/make-animation-loop.d.ts +4 -1
  9. package/dist/animation-loop/make-animation-loop.d.ts.map +1 -1
  10. package/dist/animation-loop/make-animation-loop.js +39 -7
  11. package/dist/animation-loop/make-animation-loop.js.map +1 -1
  12. package/dist/async-texture/async-texture.d.ts +106 -2
  13. package/dist/async-texture/async-texture.d.ts.map +1 -1
  14. package/dist/async-texture/async-texture.js +281 -13
  15. package/dist/async-texture/async-texture.js.map +1 -1
  16. package/dist/compute/computation.d.ts +1 -1
  17. package/dist/compute/computation.d.ts.map +1 -1
  18. package/dist/compute/computation.js +2 -2
  19. package/dist/compute/computation.js.map +1 -1
  20. package/dist/compute/swap.d.ts.map +1 -1
  21. package/dist/compute/swap.js +6 -2
  22. package/dist/compute/swap.js.map +1 -1
  23. package/dist/compute/texture-transform.d.ts.map +1 -1
  24. package/dist/compute/texture-transform.js +4 -2
  25. package/dist/compute/texture-transform.js.map +1 -1
  26. package/dist/debug/copy-texture-to-image.d.ts +23 -1
  27. package/dist/debug/copy-texture-to-image.d.ts.map +1 -1
  28. package/dist/debug/copy-texture-to-image.js +37 -1
  29. package/dist/debug/copy-texture-to-image.js.map +1 -1
  30. package/dist/dist.dev.js +566 -232
  31. package/dist/dist.min.js +26 -26
  32. package/dist/factories/pipeline-factory.d.ts +11 -1
  33. package/dist/factories/pipeline-factory.d.ts.map +1 -1
  34. package/dist/factories/pipeline-factory.js +107 -25
  35. package/dist/factories/pipeline-factory.js.map +1 -1
  36. package/dist/factories/shader-factory.d.ts +5 -1
  37. package/dist/factories/shader-factory.d.ts.map +1 -1
  38. package/dist/factories/shader-factory.js +40 -6
  39. package/dist/factories/shader-factory.js.map +1 -1
  40. package/dist/geometries/cube-geometry.d.ts +3 -3
  41. package/dist/geometries/cube-geometry.d.ts.map +1 -1
  42. package/dist/geometry/geometry.d.ts.map +1 -1
  43. package/dist/geometry/geometry.js +3 -2
  44. package/dist/geometry/geometry.js.map +1 -1
  45. package/dist/index.cjs +581 -251
  46. package/dist/index.cjs.map +4 -4
  47. package/dist/index.d.ts +1 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/model/model.d.ts +4 -25
  51. package/dist/model/model.d.ts.map +1 -1
  52. package/dist/model/model.js +26 -71
  53. package/dist/model/model.js.map +1 -1
  54. package/dist/models/billboard-texture-model.d.ts.map +1 -1
  55. package/dist/models/billboard-texture-model.js +6 -4
  56. package/dist/models/billboard-texture-model.js.map +1 -1
  57. package/dist/modules/picking/legacy-picking-manager.d.ts +1 -1
  58. package/dist/modules/picking/legacy-picking-manager.d.ts.map +1 -1
  59. package/dist/modules/picking/legacy-picking-manager.js +1 -1
  60. package/dist/modules/picking/legacy-picking-manager.js.map +1 -1
  61. package/dist/modules/picking/picking-manager.d.ts +2 -2
  62. package/dist/modules/picking/picking-manager.d.ts.map +1 -1
  63. package/dist/modules/picking/picking-manager.js +2 -2
  64. package/dist/modules/picking/picking-manager.js.map +1 -1
  65. package/dist/passes/get-fragment-shader.js +2 -2
  66. package/dist/passes/shader-pass-renderer.d.ts +4 -4
  67. package/dist/passes/shader-pass-renderer.d.ts.map +1 -1
  68. package/dist/passes/shader-pass-renderer.js +15 -5
  69. package/dist/passes/shader-pass-renderer.js.map +1 -1
  70. package/dist/shader-inputs.js +1 -1
  71. package/dist/shader-inputs.js.map +1 -1
  72. package/dist/utils/buffer-layout-helper.d.ts +12 -0
  73. package/dist/utils/buffer-layout-helper.d.ts.map +1 -0
  74. package/dist/utils/buffer-layout-helper.js +41 -0
  75. package/dist/utils/buffer-layout-helper.js.map +1 -0
  76. package/dist/utils/buffer-layout-order.d.ts +3 -0
  77. package/dist/utils/buffer-layout-order.d.ts.map +1 -0
  78. package/dist/utils/buffer-layout-order.js +16 -0
  79. package/dist/utils/buffer-layout-order.js.map +1 -0
  80. package/package.json +4 -4
  81. package/src/animation-loop/animation-loop.ts +31 -71
  82. package/src/animation-loop/animation-props.ts +3 -5
  83. package/src/animation-loop/make-animation-loop.ts +41 -9
  84. package/src/async-texture/async-texture.ts +386 -23
  85. package/src/async-texture/texture-setters.ts.disabled +296 -0
  86. package/src/compute/computation.ts +3 -3
  87. package/src/compute/swap.ts +7 -2
  88. package/src/compute/texture-transform.ts +4 -2
  89. package/src/debug/copy-texture-to-image.ts +52 -2
  90. package/src/factories/pipeline-factory.ts +122 -26
  91. package/src/factories/shader-factory.ts +43 -7
  92. package/src/geometry/geometry.ts +3 -2
  93. package/src/index.ts +12 -0
  94. package/src/model/model.ts +31 -86
  95. package/src/models/billboard-texture-model.ts +6 -4
  96. package/src/modules/picking/legacy-picking-manager.ts +2 -2
  97. package/src/modules/picking/picking-manager.ts +3 -3
  98. package/src/passes/get-fragment-shader.ts +2 -2
  99. package/src/passes/shader-pass-renderer.ts +18 -8
  100. package/src/shader-inputs.ts +1 -1
  101. package/src/utils/buffer-layout-helper.ts +51 -0
  102. package/src/utils/buffer-layout-order.ts +26 -0
@@ -27,11 +27,11 @@ export function getFragmentShaderForRenderPass(options) {
27
27
  function getFilterShaderWGSL(func) {
28
28
  return /* wgsl */ `\
29
29
  // Binding 0:1 is reserved for shader passes
30
- @group(0) @binding(0) var<uniform> brightnessContrast : brightnessContrastUniforms;
30
+ // @group(0) @binding(0) var<uniform> brightnessContrast : brightnessContrastUniforms;
31
31
  @group(0) @binding(1) var texture: texture_2d<f32>;
32
32
  @group(0) @binding(2) var sampler: sampler;
33
33
 
34
- struct FragmentInputs = {
34
+ struct FragmentInputs {
35
35
  @location(0) fragUV: vec2f,
36
36
  @location(1) fragPosition: vec4f,
37
37
  @location(2) fragCoordinate: vec4f
@@ -28,16 +28,16 @@ export declare class ShaderPassRenderer {
28
28
  resize(width: number, height: number): void;
29
29
  renderToScreen(options: {
30
30
  sourceTexture: AsyncTexture;
31
- uniforms: any;
32
- bindings: any;
31
+ uniforms?: any;
32
+ bindings?: any;
33
33
  }): boolean;
34
34
  /** Runs the shaderPasses in sequence on the sourceTexture and returns a texture with the results.
35
35
  * @returns null if the the sourceTexture has not yet been loaded
36
36
  */
37
37
  renderToTexture(options: {
38
38
  sourceTexture: AsyncTexture;
39
- uniforms: any;
40
- bindings: any;
39
+ uniforms?: any;
40
+ bindings?: any;
41
41
  }): Texture | null;
42
42
  }
43
43
  /** renders one ShaderPass */
@@ -1 +1 @@
1
- {"version":3,"file":"shader-pass-renderer.d.ts","sourceRoot":"","sources":["../../src/passes/shader-pass-renderer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAC,YAAY,EAAC,4BAAyB;AAC9C,OAAO,EAAC,YAAY,EAAC,0CAAuC;AAC5D,OAAO,EAAC,SAAS,EAAC,gCAA6B;AAC/C,OAAO,EAAC,gBAAgB,EAAC,2BAAwB;AACjD,OAAO,EAAC,sBAAsB,EAAC,6CAA0C;AAIzE,KAAK,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1D,mCAAmC;AACnC,MAAM,MAAM,uBAAuB,GAAG;IACpC,yDAAyD;IACzD,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,8DAA8D;IAC9D,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,4DAA4D;AAC5D,qBAAa,kBAAkB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,kCAAkC;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,sBAAsB,CAAC;gBAEzB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB;IAoD1D,4DAA4D;IAC5D,OAAO;IAQP,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAK3C,cAAc,CAAC,OAAO,EAAE;QAAC,aAAa,EAAE,YAAY,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAA;KAAC,GAAG,OAAO;IAe7F;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE;QACvB,aAAa,EAAE,YAAY,CAAC;QAC5B,QAAQ,EAAE,GAAG,CAAC;QACd,QAAQ,EAAE,GAAG,CAAC;KACf,GAAG,OAAO,GAAG,IAAI;CAuDnB;AAED,6BAA6B;AAC7B,cAAM,YAAY;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,eAAe,EAAE,CAAC;gBAExB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,KAAK;IAa9D,OAAO;CAKR;AAED,0CAA0C;AAC1C,cAAM,eAAe;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;gBAEX,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa;IAuB1E,OAAO;IAIP,MAAM,CAAC,OAAO,EAAE;QAAC,UAAU,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAA;KAAC,GAAG,IAAI;CAa/D"}
1
+ {"version":3,"file":"shader-pass-renderer.d.ts","sourceRoot":"","sources":["../../src/passes/shader-pass-renderer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAC,YAAY,EAAC,4BAAyB;AAC9C,OAAO,EAAC,YAAY,EAAC,0CAAuC;AAC5D,OAAO,EAAC,SAAS,EAAC,gCAA6B;AAC/C,OAAO,EAAC,gBAAgB,EAAC,2BAAwB;AACjD,OAAO,EAAC,sBAAsB,EAAC,6CAA0C;AAIzE,KAAK,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1D,mCAAmC;AACnC,MAAM,MAAM,uBAAuB,GAAG;IACpC,yDAAyD;IACzD,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,8DAA8D;IAC9D,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,4DAA4D;AAC5D,qBAAa,kBAAkB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,kCAAkC;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,sBAAsB,CAAC;gBAEzB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB;IAoD1D,4DAA4D;IAC5D,OAAO;IAQP,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAK3C,cAAc,CAAC,OAAO,EAAE;QAAC,aAAa,EAAE,YAAY,CAAC;QAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;QAAC,QAAQ,CAAC,EAAE,GAAG,CAAA;KAAC,GAAG,OAAO;IAwB/F;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE;QACvB,aAAa,EAAE,YAAY,CAAC;QAC5B,QAAQ,CAAC,EAAE,GAAG,CAAC;QACf,QAAQ,CAAC,EAAE,GAAG,CAAC;KAChB,GAAG,OAAO,GAAG,IAAI;CAyDnB;AAED,6BAA6B;AAC7B,cAAM,YAAY;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,eAAe,EAAE,CAAC;gBAExB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,KAAK;IAa9D,OAAO;CAKR;AAED,0CAA0C;AAC1C,cAAM,eAAe;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;gBAEX,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa;IAsB1E,OAAO;IAIP,MAAM,CAAC,OAAO,EAAE;QAAC,UAAU,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAA;KAAC,GAAG,IAAI;CAa/D"}
@@ -21,9 +21,9 @@ export class ShaderPassRenderer {
21
21
  props.shaderPasses.map(shaderPass => initializeShaderModule(shaderPass));
22
22
  const modules = props.shaderPasses.reduce((object, shaderPass) => ({ ...object, [shaderPass.name]: shaderPass }), {});
23
23
  this.shaderInputs = props.shaderInputs || new ShaderInputs(modules);
24
- const size = device.getCanvasContext().getPixelSize();
24
+ const size = device.getCanvasContext().getDrawingBufferSize();
25
25
  this.swapFramebuffers = new SwapFramebuffers(device, {
26
- colorAttachments: ['rgba8unorm'],
26
+ colorAttachments: [device.preferredColorFormat],
27
27
  width: size[0],
28
28
  height: size[1]
29
29
  });
@@ -76,7 +76,16 @@ void main() {
76
76
  // source texture not yet loaded
77
77
  return false;
78
78
  }
79
- const renderPass = this.device.beginRenderPass({ clearColor: [0, 0, 0, 1], clearDepth: 1 });
79
+ const framebuffer = this.device
80
+ .getDefaultCanvasContext()
81
+ // @ts-expect-error TODO - remove after republish
82
+ .getCurrentFramebuffer({ depthStencilAttachment: false });
83
+ const renderPass = this.device.beginRenderPass({
84
+ id: 'shader-pass-renderer-to-screen',
85
+ framebuffer,
86
+ clearColor: [0, 0, 0, 1],
87
+ clearDepth: 1
88
+ });
80
89
  this.clipSpace.setBindings({ sourceTexture: outputTexture });
81
90
  this.clipSpace.draw(renderPass);
82
91
  renderPass.end();
@@ -96,6 +105,7 @@ void main() {
96
105
  });
97
106
  // Clear the current texture before we begin
98
107
  const clearTexturePass = this.device.beginRenderPass({
108
+ id: 'shader-pass-renderer-clear-texture',
99
109
  framebuffer: this.swapFramebuffers.current,
100
110
  clearColor: [0, 0, 0, 1]
101
111
  });
@@ -120,6 +130,7 @@ void main() {
120
130
  // texSize: [sourceTextures.width, sourceTextures.height]
121
131
  };
122
132
  const renderPass = this.device.beginRenderPass({
133
+ id: 'shader-pass-renderer-run-pass',
123
134
  framebuffer: this.swapFramebuffers.next,
124
135
  clearColor: [0, 0, 0, 1],
125
136
  clearDepth: 1
@@ -173,8 +184,7 @@ class SubPassRenderer {
173
184
  fs,
174
185
  modules: [shaderPass],
175
186
  parameters: {
176
- depthWriteEnabled: false,
177
- depthCompare: 'always'
187
+ depthWriteEnabled: false
178
188
  }
179
189
  });
180
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shader-pass-renderer.js","sourceRoot":"","sources":["../../src/passes/shader-pass-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shader-pass-renderer.js","sourceRoot":"","sources":["../../src/passes/shader-pass-renderer.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { log } from '@luma.gl/core';
5
- // import type {ShaderUniformType, UniformValue, UniformFormat, UniformInfoDevice, Texture, Sampler} from '@luma.gl/core';
5
+ // import type {VariableShaderType, UniformValue, UniformFormat, UniformInfoDevice, Texture, Sampler} from '@luma.gl/core';
6
6
  import { getShaderModuleDependencies } from '@luma.gl/shadertools';
7
7
  import { splitUniformsAndBindings } from "./model/split-uniforms-and-bindings.js";
8
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"shader-inputs.js","sourceRoot":"","sources":["../src/shader-inputs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shader-inputs.js","sourceRoot":"","sources":["../src/shader-inputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type BufferLayout } from '@luma.gl/core';
2
+ /** BufferLayoutHelper is a helper class that should not be used directly by applications */
3
+ export declare class BufferLayoutHelper {
4
+ bufferLayouts: BufferLayout[];
5
+ constructor(bufferLayouts: BufferLayout[]);
6
+ getBufferLayout(name: string): BufferLayout | null;
7
+ /** Get attribute names from a BufferLayout */
8
+ getAttributeNamesForBuffer(bufferLayout: BufferLayout): string[];
9
+ mergeBufferLayouts(bufferLayouts1: BufferLayout[], bufferLayouts2: BufferLayout[]): BufferLayout[];
10
+ getBufferIndex(bufferName: string): number;
11
+ }
12
+ //# sourceMappingURL=buffer-layout-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer-layout-helper.d.ts","sourceRoot":"","sources":["../../src/utils/buffer-layout-helper.ts"],"names":[],"mappings":"AAIA,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,eAAe,CAAC;AAErD,4FAA4F;AAC5F,qBAAa,kBAAkB;IAC7B,aAAa,EAAE,YAAY,EAAE,CAAC;gBAElB,aAAa,EAAE,YAAY,EAAE;IAIzC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAIlD,8CAA8C;IAC9C,0BAA0B,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE;IAMhE,kBAAkB,CAChB,cAAc,EAAE,YAAY,EAAE,EAC9B,cAAc,EAAE,YAAY,EAAE,GAC7B,YAAY,EAAE;IAajB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;CAS3C"}
@@ -0,0 +1,41 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { log } from '@luma.gl/core';
5
+ /** BufferLayoutHelper is a helper class that should not be used directly by applications */
6
+ export class BufferLayoutHelper {
7
+ bufferLayouts;
8
+ constructor(bufferLayouts) {
9
+ this.bufferLayouts = bufferLayouts;
10
+ }
11
+ getBufferLayout(name) {
12
+ return this.bufferLayouts.find(layout => layout.name === name) || null;
13
+ }
14
+ /** Get attribute names from a BufferLayout */
15
+ getAttributeNamesForBuffer(bufferLayout) {
16
+ return bufferLayout.attributes
17
+ ? bufferLayout.attributes?.map(layout => layout.attribute)
18
+ : [bufferLayout.name];
19
+ }
20
+ mergeBufferLayouts(bufferLayouts1, bufferLayouts2) {
21
+ const mergedLayouts = [...bufferLayouts1];
22
+ for (const attribute of bufferLayouts2) {
23
+ const index = mergedLayouts.findIndex(attribute2 => attribute2.name === attribute.name);
24
+ if (index < 0) {
25
+ mergedLayouts.push(attribute);
26
+ }
27
+ else {
28
+ mergedLayouts[index] = attribute;
29
+ }
30
+ }
31
+ return mergedLayouts;
32
+ }
33
+ getBufferIndex(bufferName) {
34
+ const bufferIndex = this.bufferLayouts.findIndex(layout => layout.name === bufferName);
35
+ if (bufferIndex === -1) {
36
+ log.warn(`BufferLayout: Missing buffer for "${bufferName}".`)();
37
+ }
38
+ return bufferIndex;
39
+ }
40
+ }
41
+ //# sourceMappingURL=buffer-layout-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer-layout-helper.js","sourceRoot":"","sources":["../../src/utils/buffer-layout-helper.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,GAAG,EAAoB,MAAM,eAAe,CAAC;AAErD,4FAA4F;AAC5F,MAAM,OAAO,kBAAkB;IAC7B,aAAa,CAAiB;IAE9B,YAAY,aAA6B;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,eAAe,CAAC,IAAY;QAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;IACzE,CAAC;IAED,8CAA8C;IAC9C,0BAA0B,CAAC,YAA0B;QACnD,OAAO,YAAY,CAAC,UAAU;YAC5B,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;YAC1D,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,kBAAkB,CAChB,cAA8B,EAC9B,cAA8B;QAE9B,MAAM,aAAa,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;QAC1C,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;YACxF,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;YACnC,CAAC;QACH,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,cAAc,CAAC,UAAkB;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEvF,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,qCAAqC,UAAU,IAAI,CAAC,EAAE,CAAC;QAClE,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import { type BufferLayout, type ShaderLayout } from '@luma.gl/core';
2
+ export declare function sortedBufferLayoutByShaderSourceLocations(shaderLayout: ShaderLayout, bufferLayout: BufferLayout[]): BufferLayout[];
3
+ //# sourceMappingURL=buffer-layout-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer-layout-order.d.ts","sourceRoot":"","sources":["../../src/utils/buffer-layout-order.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,KAAK,YAAY,EAAE,KAAK,YAAY,EAAC,MAAM,eAAe,CAAC;AAEnE,wBAAgB,yCAAyC,CACvD,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAAE,GAC3B,YAAY,EAAE,CAgBhB"}
@@ -0,0 +1,16 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ export function sortedBufferLayoutByShaderSourceLocations(shaderLayout, bufferLayout) {
5
+ const shaderLayoutMap = Object.fromEntries(shaderLayout.attributes.map(attr => [attr.name, attr.location]));
6
+ const sortedLayout = bufferLayout.slice();
7
+ sortedLayout.sort((a, b) => {
8
+ const attributeNamesA = a.attributes ? a.attributes.map(attr => attr.attribute) : [a.name];
9
+ const attributeNamesB = b.attributes ? b.attributes.map(attr => attr.attribute) : [b.name];
10
+ const minLocationA = Math.min(...attributeNamesA.map(name => shaderLayoutMap[name]));
11
+ const minLocationB = Math.min(...attributeNamesB.map(name => shaderLayoutMap[name]));
12
+ return minLocationA - minLocationB;
13
+ });
14
+ return sortedLayout;
15
+ }
16
+ //# sourceMappingURL=buffer-layout-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer-layout-order.js","sourceRoot":"","sources":["../../src/utils/buffer-layout-order.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAIpC,MAAM,UAAU,yCAAyC,CACvD,YAA0B,EAC1B,YAA4B;IAE5B,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CACxC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAChE,CAAC;IAEF,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;IAC1C,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,eAAe,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3F,MAAM,eAAe,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3F,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAErF,OAAO,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luma.gl/engine",
3
- "version": "9.1.9",
3
+ "version": "9.2.0-alpha.2",
4
4
  "description": "3D Engine Components for luma.gl",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -40,8 +40,8 @@
40
40
  "prepublishOnly": "npm run build-minified-bundle && npm run build-dev-bundle"
41
41
  },
42
42
  "peerDependencies": {
43
- "@luma.gl/core": "^9.1.0",
44
- "@luma.gl/shadertools": "^9.1.0"
43
+ "@luma.gl/core": "9.2.0-alpha.1",
44
+ "@luma.gl/shadertools": "9.2.0-alpha.1"
45
45
  },
46
46
  "dependencies": {
47
47
  "@math.gl/core": "^4.1.0",
@@ -49,5 +49,5 @@
49
49
  "@probe.gl/log": "^4.0.8",
50
50
  "@probe.gl/stats": "^4.0.8"
51
51
  },
52
- "gitHead": "2d0d93f337120d670e03bd2d5141d90d0d582b44"
52
+ "gitHead": "dc1e71675ea19a4afbb59d3b9dcd3b01deea3cae"
53
53
  }
@@ -27,38 +27,30 @@ export type AnimationLoopProps = {
27
27
 
28
28
  // view parameters - TODO move to CanvasContext?
29
29
  autoResizeViewport?: boolean;
30
- autoResizeDrawingBuffer?: boolean;
31
- useDevicePixels?: number | boolean;
32
30
  };
33
31
 
34
32
  export type MutableAnimationLoopProps = {
35
33
  // view parameters
36
34
  autoResizeViewport?: boolean;
37
- autoResizeDrawingBuffer?: boolean;
38
- useDevicePixels?: number | boolean;
39
35
  };
40
36
 
41
- const DEFAULT_ANIMATION_LOOP_PROPS: Required<AnimationLoopProps> = {
42
- device: null!,
37
+ /** Convenient animation loop */
38
+ export class AnimationLoop {
39
+ static defaultAnimationLoopProps = {
40
+ device: null!,
43
41
 
44
- onAddHTML: () => '',
45
- onInitialize: async () => {
46
- return null;
47
- },
48
- onRender: () => {},
49
- onFinalize: () => {},
50
- onError: error => console.error(error), // eslint-disable-line no-console
42
+ onAddHTML: () => '',
43
+ onInitialize: async () => null,
44
+ onRender: () => {},
45
+ onFinalize: () => {},
46
+ onError: error => console.error(error), // eslint-disable-line no-console
51
47
 
52
- stats: luma.stats.get(`animation-loop-${statIdCounter++}`),
48
+ stats: luma.stats.get(`animation-loop-${statIdCounter++}`),
53
49
 
54
- // view parameters
55
- useDevicePixels: true,
56
- autoResizeViewport: false,
57
- autoResizeDrawingBuffer: false
58
- };
50
+ // view parameters
51
+ autoResizeViewport: false
52
+ } as const satisfies Readonly<Required<AnimationLoopProps>>;
59
53
 
60
- /** Convenient animation loop */
61
- export class AnimationLoop {
62
54
  device: Device | null = null;
63
55
  canvas: HTMLCanvasElement | OffscreenCanvas | null = null;
64
56
 
@@ -88,26 +80,20 @@ export class AnimationLoop {
88
80
  * @param {HTMLCanvasElement} canvas - if provided, width and height will be passed to context
89
81
  */
90
82
  constructor(props: AnimationLoopProps) {
91
- this.props = {...DEFAULT_ANIMATION_LOOP_PROPS, ...props};
83
+ this.props = {...AnimationLoop.defaultAnimationLoopProps, ...props};
92
84
  props = this.props;
93
85
 
94
86
  if (!props.device) {
95
87
  throw new Error('No device provided');
96
88
  }
97
89
 
98
- const {useDevicePixels = true} = this.props;
99
-
100
90
  // state
101
91
  this.stats = props.stats || new Stats({id: 'animation-loop-stats'});
102
92
  this.cpuTime = this.stats.get('CPU Time');
103
93
  this.gpuTime = this.stats.get('GPU Time');
104
94
  this.frameRate = this.stats.get('Frame Rate');
105
95
 
106
- this.setProps({
107
- autoResizeViewport: props.autoResizeViewport,
108
- autoResizeDrawingBuffer: props.autoResizeDrawingBuffer,
109
- useDevicePixels
110
- });
96
+ this.setProps({autoResizeViewport: props.autoResizeViewport});
111
97
 
112
98
  // Bind methods
113
99
  this.start = this.start.bind(this);
@@ -127,21 +113,9 @@ export class AnimationLoop {
127
113
  this.destroy();
128
114
  }
129
115
 
130
- setError(error: Error): void {
116
+ reportError(error: Error): void {
131
117
  this.props.onError(error);
132
- this._error = Error();
133
- const canvas = this.device?.canvasContext?.canvas;
134
- if (canvas instanceof HTMLCanvasElement) {
135
- const errorDiv = document.createElement('h1');
136
- errorDiv.innerHTML = error.message;
137
- errorDiv.style.position = 'absolute';
138
- errorDiv.style.top = '20%'; // left: 50%; transform: translate(-50%, -50%);';
139
- errorDiv.style.left = '10px';
140
- errorDiv.style.color = 'black';
141
- errorDiv.style.backgroundColor = 'red';
142
- document.body.appendChild(errorDiv);
143
- // canvas.style.position = 'absolute';
144
- }
118
+ this._error = error;
145
119
  }
146
120
 
147
121
  /** Flags this animation loop as needing redraw */
@@ -150,17 +124,10 @@ export class AnimationLoop {
150
124
  return this;
151
125
  }
152
126
 
153
- /** TODO - move these props to CanvasContext? */
154
127
  setProps(props: MutableAnimationLoopProps): this {
155
128
  if ('autoResizeViewport' in props) {
156
129
  this.props.autoResizeViewport = props.autoResizeViewport || false;
157
130
  }
158
- if ('autoResizeDrawingBuffer' in props) {
159
- this.props.autoResizeDrawingBuffer = props.autoResizeDrawingBuffer || false;
160
- }
161
- if ('useDevicePixels' in props) {
162
- this.props.useDevicePixels = props.useDevicePixels || false;
163
- }
164
131
  return this;
165
132
  }
166
133
 
@@ -292,7 +259,6 @@ export class AnimationLoop {
292
259
  this._updateAnimationProps();
293
260
 
294
261
  // Default viewport setup, in case onInitialize wants to render
295
- this._resizeCanvasDrawingBuffer();
296
262
  this._resizeViewport();
297
263
 
298
264
  // this._gpuTimeQuery = Query.isSupported(this.gl, ['timers']) ? new Query(this.gl) : null;
@@ -371,26 +337,30 @@ export class AnimationLoop {
371
337
  }
372
338
 
373
339
  _setupFrame(): void {
374
- this._resizeCanvasDrawingBuffer();
375
340
  this._resizeViewport();
376
341
  }
377
342
 
378
343
  // Initialize the object that will be passed to app callbacks
379
344
  _initializeAnimationProps(): void {
380
- const canvas = this.device?.canvasContext?.canvas;
381
-
382
- if (!this.device || !canvas) {
345
+ const canvasContext = this.device?.getDefaultCanvasContext();
346
+ if (!this.device || !canvasContext) {
383
347
  throw new Error('loop');
384
348
  }
349
+
350
+ const canvas = canvasContext?.canvas;
351
+ const useDevicePixels = canvasContext.props.useDevicePixels;
352
+
385
353
  this.animationProps = {
386
354
  animationLoop: this,
387
355
 
388
356
  device: this.device,
357
+ canvasContext,
389
358
  canvas,
359
+ // @ts-expect-error Deprecated
360
+ useDevicePixels,
361
+
390
362
  timeline: this.timeline,
391
363
 
392
- // Initial values
393
- useDevicePixels: this.props.useDevicePixels,
394
364
  needsRedraw: false,
395
365
 
396
366
  // Placeholders
@@ -460,7 +430,7 @@ export class AnimationLoop {
460
430
  if (!this.device) {
461
431
  throw new Error('No device provided');
462
432
  }
463
- this.canvas = this.device.canvasContext?.canvas || null;
433
+ this.canvas = this.device.getDefaultCanvasContext().canvas || null;
464
434
  // this._createInfoDiv();
465
435
  }
466
436
 
@@ -491,11 +461,11 @@ export class AnimationLoop {
491
461
  return {width: 1, height: 1, aspect: 1};
492
462
  }
493
463
  // https://webglfundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html
494
- const [width, height] = this.device?.canvasContext?.getPixelSize() || [1, 1];
464
+ const [width, height] = this.device?.getDefaultCanvasContext().getDevicePixelSize() || [1, 1];
495
465
 
496
466
  // https://webglfundamentals.org/webgl/lessons/webgl-anti-patterns.html
497
467
  let aspect = 1;
498
- const canvas = this.device?.canvasContext?.canvas;
468
+ const canvas = this.device?.getDefaultCanvasContext().canvas;
499
469
 
500
470
  // @ts-expect-error
501
471
  if (canvas && canvas.clientHeight) {
@@ -508,7 +478,7 @@ export class AnimationLoop {
508
478
  return {width, height, aspect};
509
479
  }
510
480
 
511
- /** Default viewport setup */
481
+ /** @deprecated Default viewport setup */
512
482
  _resizeViewport(): void {
513
483
  // TODO can we use canvas context to code this in a portable way?
514
484
  // @ts-expect-error Expose on canvasContext
@@ -525,16 +495,6 @@ export class AnimationLoop {
525
495
  }
526
496
  }
527
497
 
528
- /**
529
- * Resize the render buffer of the canvas to match canvas client size
530
- * Optionally multiplying with devicePixel ratio
531
- */
532
- _resizeCanvasDrawingBuffer(): void {
533
- if (this.props.autoResizeDrawingBuffer) {
534
- this.device?.canvasContext?.resize({useDevicePixels: this.props.useDevicePixels});
535
- }
536
- }
537
-
538
498
  _beginFrameTimers() {
539
499
  this.frameRate.timeEnd();
540
500
  this.frameRate.timeStart();
@@ -2,18 +2,16 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import {Device} from '@luma.gl/core';
5
+ import {CanvasContext, Device} from '@luma.gl/core';
6
6
  import {Timeline} from '../animation/timeline';
7
7
  import type {AnimationLoop} from './animation-loop';
8
8
 
9
9
  /** Properties passed to every render frame */
10
10
  export type AnimationProps = {
11
- device: Device;
12
11
  animationLoop: AnimationLoop;
13
-
14
- /** @todo Should be canvasContext */
12
+ device: Device;
13
+ canvasContext: CanvasContext;
15
14
  canvas: HTMLCanvasElement | OffscreenCanvas;
16
- useDevicePixels: number | boolean;
17
15
  width: number;
18
16
  height: number;
19
17
  aspect: number;
@@ -2,7 +2,7 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import {luma, Adapter} from '@luma.gl/core';
5
+ import {luma, Adapter, Device} from '@luma.gl/core';
6
6
  import {AnimationLoopTemplate} from './animation-loop-template';
7
7
  import {AnimationLoop, AnimationLoopProps} from './animation-loop';
8
8
  import type {AnimationProps} from './animation-props';
@@ -15,7 +15,10 @@ export type MakeAnimationLoopProps = Omit<
15
15
  adapters?: Adapter[];
16
16
  };
17
17
 
18
- /** Instantiates and runs the render loop */
18
+ /**
19
+ * Instantiates an animation loop and initializes it with the template.
20
+ * @note The application needs to call `start()` on the returned animation loop to start the rendering loop.
21
+ */
19
22
  export function makeAnimationLoop(
20
23
  AnimationLoopTemplateCtor: typeof AnimationLoopTemplate,
21
24
  props?: MakeAnimationLoopProps
@@ -33,10 +36,16 @@ export function makeAnimationLoop(
33
36
  device,
34
37
 
35
38
  async onInitialize(animationProps: AnimationProps): Promise<unknown> {
36
- // @ts-expect-error abstract to prevent instantiation
37
- renderLoop = new AnimationLoopTemplateCtor(animationProps);
38
- // Any async loading can be handled here
39
- return await renderLoop?.onInitialize(animationProps);
39
+ clearError(animationProps.animationLoop.device!);
40
+ try {
41
+ // @ts-expect-error abstract to prevent instantiation
42
+ renderLoop = new AnimationLoopTemplateCtor(animationProps);
43
+ // Any async loading can be handled here
44
+ return await renderLoop?.onInitialize(animationProps);
45
+ } catch (error) {
46
+ setError(animationProps.animationLoop.device!, error as Error);
47
+ return null;
48
+ }
40
49
  },
41
50
 
42
51
  onRender: (animationProps: AnimationProps) => renderLoop?.onRender(animationProps),
@@ -51,8 +60,31 @@ export function makeAnimationLoop(
51
60
  return this.AnimationLoopTemplateCtor.info;
52
61
  };
53
62
 
54
- // Start the loop automatically
55
- // animationLoop.start();
56
-
57
63
  return animationLoop;
58
64
  }
65
+
66
+ function setError(device: Device, error: Error): void {
67
+ const canvas = device?.getDefaultCanvasContext().canvas;
68
+ if (canvas instanceof HTMLCanvasElement) {
69
+ canvas.style.overflow = 'visible';
70
+ let errorDiv = document.getElementById('animation-loop-error');
71
+ errorDiv?.remove();
72
+ errorDiv = document.createElement('h1');
73
+ errorDiv.id = 'animation-loop-error';
74
+ errorDiv.innerHTML = error.message;
75
+ errorDiv.style.position = 'absolute';
76
+ errorDiv.style.top = '10px'; // left: 50%; transform: translate(-50%, -50%);';
77
+ errorDiv.style.left = '10px';
78
+ errorDiv.style.color = 'black';
79
+ errorDiv.style.backgroundColor = 'red';
80
+ canvas.parentElement?.appendChild(errorDiv);
81
+ // canvas.style.position = 'absolute';
82
+ }
83
+ }
84
+
85
+ function clearError(device: Device): void {
86
+ const errorDiv = document.getElementById('animation-loop-error');
87
+ if (errorDiv) {
88
+ errorDiv.remove();
89
+ }
90
+ }