@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
@@ -9,16 +9,26 @@ export declare class PipelineFactory {
9
9
  /** Get the singleton default pipeline factory for the specified device */
10
10
  static getDefaultPipelineFactory(device: Device): PipelineFactory;
11
11
  readonly device: Device;
12
+ readonly cachingEnabled: boolean;
12
13
  readonly destroyPolicy: 'unused' | 'never';
14
+ readonly debug: boolean;
13
15
  private _hashCounter;
14
16
  private readonly _hashes;
15
17
  private readonly _renderPipelineCache;
16
18
  private readonly _computePipelineCache;
19
+ get [Symbol.toStringTag](): string;
20
+ toString(): string;
17
21
  constructor(device: Device);
18
- /** Return a RenderPipeline matching props. Reuses a similar pipeline if already created. */
22
+ /** Return a RenderPipeline matching supplied props. Reuses an equivalent pipeline if already created. */
19
23
  createRenderPipeline(props: RenderPipelineProps): RenderPipeline;
24
+ /** Return a ComputePipeline matching supplied props. Reuses an equivalent pipeline if already created. */
20
25
  createComputePipeline(props: ComputePipelineProps): ComputePipeline;
21
26
  release(pipeline: RenderPipeline | ComputePipeline): void;
27
+ /** Destroy a cached pipeline, removing it from the cache (depending on destroy policy) */
28
+ private _destroyPipeline;
29
+ /** Get the appropriate cache for the type of pipeline */
30
+ private _getCache;
31
+ /** Calculate a hash based on all the inputs for a compute pipeline */
22
32
  private _hashComputePipeline;
23
33
  /** Calculate a hash based on all the inputs for a render pipeline */
24
34
  private _hashRenderPipeline;
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline-factory.d.ts","sourceRoot":"","sources":["../../src/factories/pipeline-factory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,mBAAmB,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAC,MAAM,EAAE,cAAc,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAEtE,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAKvD;;GAEG;AACH,qBAAa,eAAe;IAC1B,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAoC;IAEvF,0EAA0E;IAC1E,MAAM,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IAMjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE3C,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA+C;IACpF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgD;gBAE1E,MAAM,EAAE,MAAM;IAK1B,4FAA4F;IAC5F,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc;IAkBhE,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe;IAkBnE,OAAO,CAAC,QAAQ,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI;IAczD,OAAO,CAAC,oBAAoB;IAK5B,qEAAqE;IACrE,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,QAAQ;CAMjB"}
1
+ {"version":3,"file":"pipeline-factory.d.ts","sourceRoot":"","sources":["../../src/factories/pipeline-factory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,mBAAmB,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAC,MAAM,EAAE,cAAc,EAAE,eAAe,EAAM,MAAM,eAAe,CAAC;AAG3E,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAKvD;;GAEG;AACH,qBAAa,eAAe;IAC1B,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAoC;IAEvF,0EAA0E;IAC1E,MAAM,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IAMjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA+C;IACpF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgD;IAEtF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;IAED,QAAQ,IAAI,MAAM;gBAIN,MAAM,EAAE,MAAM;IAO1B,yGAAyG;IACzG,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc;IAiChE,0GAA0G;IAC1G,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe;IAiCnE,OAAO,CAAC,QAAQ,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI;IAyBzD,0FAA0F;IAC1F,OAAO,CAAC,gBAAgB;IAaxB,yDAAyD;IACzD,OAAO,CAAC,SAAS;IAsBjB,sEAAsE;IACtE,OAAO,CAAC,oBAAoB;IAM5B,qEAAqE;IACrE,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,QAAQ;CAMjB"}
@@ -1,7 +1,8 @@
1
1
  // luma.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { RenderPipeline, ComputePipeline } from '@luma.gl/core';
4
+ import { RenderPipeline, ComputePipeline, log } from '@luma.gl/core';
5
+ import { uid } from "../utils/uid.js";
5
6
  /**
6
7
  * Efficiently creates / caches pipelines
7
8
  */
@@ -9,64 +10,143 @@ export class PipelineFactory {
9
10
  static defaultProps = { ...RenderPipeline.defaultProps };
10
11
  /** Get the singleton default pipeline factory for the specified device */
11
12
  static getDefaultPipelineFactory(device) {
12
- device._lumaData.defaultPipelineFactory =
13
- device._lumaData.defaultPipelineFactory || new PipelineFactory(device);
14
- return device._lumaData.defaultPipelineFactory;
13
+ device._lumaData['defaultPipelineFactory'] =
14
+ device._lumaData['defaultPipelineFactory'] || new PipelineFactory(device);
15
+ return device._lumaData['defaultPipelineFactory'];
15
16
  }
16
17
  device;
18
+ cachingEnabled;
17
19
  destroyPolicy;
20
+ debug;
18
21
  _hashCounter = 0;
19
22
  _hashes = {};
20
23
  _renderPipelineCache = {};
21
24
  _computePipelineCache = {};
25
+ get [Symbol.toStringTag]() {
26
+ return 'PipelineFactory';
27
+ }
28
+ toString() {
29
+ return `PipelineFactory(${this.device.id})`;
30
+ }
22
31
  constructor(device) {
23
32
  this.device = device;
24
- this.destroyPolicy = device.props._factoryDestroyPolicy;
33
+ this.cachingEnabled = device.props._cachePipelines;
34
+ this.destroyPolicy = device.props._cacheDestroyPolicy;
35
+ this.debug = device.props.debugFactories;
25
36
  }
26
- /** Return a RenderPipeline matching props. Reuses a similar pipeline if already created. */
37
+ /** Return a RenderPipeline matching supplied props. Reuses an equivalent pipeline if already created. */
27
38
  createRenderPipeline(props) {
39
+ if (!this.cachingEnabled) {
40
+ return this.device.createRenderPipeline(props);
41
+ }
28
42
  const allProps = { ...RenderPipeline.defaultProps, ...props };
43
+ const cache = this._renderPipelineCache;
29
44
  const hash = this._hashRenderPipeline(allProps);
30
- if (!this._renderPipelineCache[hash]) {
31
- const pipeline = this.device.createRenderPipeline({
45
+ let pipeline = cache[hash]?.pipeline;
46
+ if (!pipeline) {
47
+ pipeline = this.device.createRenderPipeline({
32
48
  ...allProps,
33
- id: allProps.id ? `${allProps.id}-cached` : undefined
49
+ id: allProps.id ? `${allProps.id}-cached` : uid('unnamed-cached')
34
50
  });
35
51
  pipeline.hash = hash;
36
- this._renderPipelineCache[hash] = { pipeline, useCount: 0 };
52
+ cache[hash] = { pipeline, useCount: 1 };
53
+ if (this.debug) {
54
+ log.warn(`${this}: ${pipeline} created, count=${cache[hash].useCount}`)();
55
+ }
37
56
  }
38
- this._renderPipelineCache[hash].useCount++;
39
- return this._renderPipelineCache[hash].pipeline;
57
+ else {
58
+ cache[hash].useCount++;
59
+ if (this.debug) {
60
+ log.warn(`${this}: ${cache[hash].pipeline} reused, count=${cache[hash].useCount}, (id=${props.id})`)();
61
+ }
62
+ }
63
+ return pipeline;
40
64
  }
65
+ /** Return a ComputePipeline matching supplied props. Reuses an equivalent pipeline if already created. */
41
66
  createComputePipeline(props) {
67
+ if (!this.cachingEnabled) {
68
+ return this.device.createComputePipeline(props);
69
+ }
42
70
  const allProps = { ...ComputePipeline.defaultProps, ...props };
71
+ const cache = this._computePipelineCache;
43
72
  const hash = this._hashComputePipeline(allProps);
44
- if (!this._computePipelineCache[hash]) {
45
- const pipeline = this.device.createComputePipeline({
73
+ let pipeline = cache[hash]?.pipeline;
74
+ if (!pipeline) {
75
+ pipeline = this.device.createComputePipeline({
46
76
  ...allProps,
47
77
  id: allProps.id ? `${allProps.id}-cached` : undefined
48
78
  });
49
79
  pipeline.hash = hash;
50
- this._computePipelineCache[hash] = { pipeline, useCount: 0 };
80
+ cache[hash] = { pipeline, useCount: 1 };
81
+ if (this.debug) {
82
+ log.warn(`${this}: ${pipeline} created, count=${cache[hash].useCount}`)();
83
+ }
84
+ }
85
+ else {
86
+ cache[hash].useCount++;
87
+ if (this.debug) {
88
+ log.warn(`${this}: ${cache[hash].pipeline} reused, count=${cache[hash].useCount}, (id=${props.id})`)();
89
+ }
51
90
  }
52
- this._computePipelineCache[hash].useCount++;
53
- return this._computePipelineCache[hash].pipeline;
91
+ return pipeline;
54
92
  }
55
93
  release(pipeline) {
94
+ if (!this.cachingEnabled) {
95
+ pipeline.destroy();
96
+ return;
97
+ }
98
+ const cache = this._getCache(pipeline);
56
99
  const hash = pipeline.hash;
57
- const cache = pipeline instanceof ComputePipeline ? this._computePipelineCache : this._renderPipelineCache;
58
100
  cache[hash].useCount--;
59
101
  if (cache[hash].useCount === 0) {
60
- if (this.destroyPolicy === 'unused') {
61
- cache[hash].pipeline.destroy();
62
- delete cache[hash];
102
+ this._destroyPipeline(pipeline);
103
+ if (this.debug) {
104
+ log.warn(`${this}: ${pipeline} released and destroyed`)();
63
105
  }
64
106
  }
107
+ else if (cache[hash].useCount < 0) {
108
+ log.error(`${this}: ${pipeline} released, useCount < 0, resetting`)();
109
+ cache[hash].useCount = 0;
110
+ }
111
+ else if (this.debug) {
112
+ log.warn(`${this}: ${pipeline} released, count=${cache[hash].useCount}`)();
113
+ }
65
114
  }
66
115
  // PRIVATE
116
+ /** Destroy a cached pipeline, removing it from the cache (depending on destroy policy) */
117
+ _destroyPipeline(pipeline) {
118
+ const cache = this._getCache(pipeline);
119
+ switch (this.destroyPolicy) {
120
+ case 'never':
121
+ return false;
122
+ case 'unused':
123
+ delete cache[pipeline.hash];
124
+ pipeline.destroy();
125
+ return true;
126
+ }
127
+ }
128
+ /** Get the appropriate cache for the type of pipeline */
129
+ _getCache(pipeline) {
130
+ let cache;
131
+ if (pipeline instanceof ComputePipeline) {
132
+ cache = this._computePipelineCache;
133
+ }
134
+ if (pipeline instanceof RenderPipeline) {
135
+ cache = this._renderPipelineCache;
136
+ }
137
+ if (!cache) {
138
+ throw new Error(`${this}`);
139
+ }
140
+ if (!cache[pipeline.hash]) {
141
+ throw new Error(`${this}: ${pipeline} matched incorrect entry`);
142
+ }
143
+ return cache;
144
+ }
145
+ /** Calculate a hash based on all the inputs for a compute pipeline */
67
146
  _hashComputePipeline(props) {
147
+ const { type } = this.device;
68
148
  const shaderHash = this._getHash(props.shader.source);
69
- return `${shaderHash}`;
149
+ return `${type}/C/${shaderHash}`;
70
150
  }
71
151
  /** Calculate a hash based on all the inputs for a render pipeline */
72
152
  _hashRenderPipeline(props) {
@@ -77,16 +157,18 @@ export class PipelineFactory {
77
157
  // const varyingHashes = varyings.map((v) => this._getHash(v));
78
158
  const varyingHash = '-'; // `${varyingHashes.join('/')}B${bufferMode}`
79
159
  const bufferLayoutHash = this._getHash(JSON.stringify(props.bufferLayout));
80
- switch (this.device.type) {
160
+ const { type } = this.device;
161
+ switch (type) {
81
162
  case 'webgl':
82
163
  // WebGL is more dynamic
83
- return `${vsHash}/${fsHash}V${varyingHash}BL${bufferLayoutHash}`;
164
+ return `${type}/R/${vsHash}/${fsHash}V${varyingHash}BL${bufferLayoutHash}`;
165
+ case 'webgpu':
84
166
  default:
85
167
  // On WebGPU we need to rebuild the pipeline if topology, parameters or bufferLayout change
86
168
  const parameterHash = this._getHash(JSON.stringify(props.parameters));
87
169
  // TODO - Can json.stringify() generate different strings for equivalent objects if order of params is different?
88
170
  // create a deepHash() to deduplicate?
89
- return `${vsHash}/${fsHash}V${varyingHash}T${props.topology}P${parameterHash}BL${bufferLayoutHash}`;
171
+ return `${type}/R/${vsHash}/${fsHash}V${varyingHash}T${props.topology}P${parameterHash}BL${bufferLayoutHash}`;
90
172
  }
91
173
  }
92
174
  _getHash(key) {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline-factory.js","sourceRoot":"","sources":["../../src/factories/pipeline-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline-factory.js","sourceRoot":"","sources":["../../src/factories/pipeline-factory.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,18 @@ export declare class ShaderFactory {
5
5
  /** Returns the default ShaderFactory for the given {@link Device}, creating one if necessary. */
6
6
  static getDefaultShaderFactory(device: Device): ShaderFactory;
7
7
  readonly device: Device;
8
+ readonly cachingEnabled: boolean;
8
9
  readonly destroyPolicy: 'unused' | 'never';
10
+ readonly debug: boolean;
9
11
  private readonly _cache;
12
+ get [Symbol.toStringTag](): string;
13
+ toString(): string;
10
14
  /** @internal */
11
15
  constructor(device: Device);
12
16
  /** Requests a {@link Shader} from the cache, creating a new Shader only if necessary. */
13
17
  createShader(props: ShaderProps): Shader;
14
18
  /** Releases a previously-requested {@link Shader}, destroying it if no users remain. */
15
19
  release(shader: Shader): void;
16
- private _hashShader;
20
+ protected _hashShader(value: Shader | ShaderProps): string;
17
21
  }
18
22
  //# sourceMappingURL=shader-factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shader-factory.d.ts","sourceRoot":"","sources":["../../src/factories/shader-factory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1D,kDAAkD;AAClD,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,CAA4B;IAE/E,iGAAiG;IACjG,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAK7D,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0D;IAEjF,gBAAgB;gBACJ,MAAM,EAAE,MAAM;IAK1B,yFAAyF;IACzF,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;IAgBxC,wFAAwF;IACxF,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAgB7B,OAAO,CAAC,WAAW;CAGpB"}
1
+ {"version":3,"file":"shader-factory.d.ts","sourceRoot":"","sources":["../../src/factories/shader-factory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAM,MAAM,eAAe,CAAC;AAE/D,kDAAkD;AAClD,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,CAA4B;IAE/E,iGAAiG;IACjG,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAK7D,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0D;IAEjF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;IAED,QAAQ,IAAI,MAAM;IAIlB,gBAAgB;gBACJ,MAAM,EAAE,MAAM;IAO1B,yFAAyF;IACzF,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;IA2BxC,wFAAwF;IACxF,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA4B7B,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM;CAG3D"}
@@ -1,25 +1,38 @@
1
1
  // luma.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { Shader } from '@luma.gl/core';
4
+ import { Shader, log } from '@luma.gl/core';
5
5
  /** Manages a cached pool of Shaders for reuse. */
6
6
  export class ShaderFactory {
7
7
  static defaultProps = { ...Shader.defaultProps };
8
8
  /** Returns the default ShaderFactory for the given {@link Device}, creating one if necessary. */
9
9
  static getDefaultShaderFactory(device) {
10
- device._lumaData.defaultShaderFactory ||= new ShaderFactory(device);
11
- return device._lumaData.defaultShaderFactory;
10
+ device._lumaData['defaultShaderFactory'] ||= new ShaderFactory(device);
11
+ return device._lumaData['defaultShaderFactory'];
12
12
  }
13
13
  device;
14
+ cachingEnabled;
14
15
  destroyPolicy;
16
+ debug;
15
17
  _cache = {};
18
+ get [Symbol.toStringTag]() {
19
+ return 'ShaderFactory';
20
+ }
21
+ toString() {
22
+ return `${this[Symbol.toStringTag]}(${this.device.id})`;
23
+ }
16
24
  /** @internal */
17
25
  constructor(device) {
18
26
  this.device = device;
19
- this.destroyPolicy = device.props._factoryDestroyPolicy;
27
+ this.cachingEnabled = device.props._cacheShaders;
28
+ this.destroyPolicy = device.props._cacheDestroyPolicy;
29
+ this.debug = true; // device.props.debugFactories;
20
30
  }
21
31
  /** Requests a {@link Shader} from the cache, creating a new Shader only if necessary. */
22
32
  createShader(props) {
33
+ if (!this.cachingEnabled) {
34
+ return this.device.createShader(props);
35
+ }
23
36
  const key = this._hashShader(props);
24
37
  let cacheEntry = this._cache[key];
25
38
  if (!cacheEntry) {
@@ -27,13 +40,25 @@ export class ShaderFactory {
27
40
  ...props,
28
41
  id: props.id ? `${props.id}-cached` : undefined
29
42
  });
30
- this._cache[key] = cacheEntry = { shader, useCount: 0 };
43
+ this._cache[key] = cacheEntry = { shader, useCount: 1 };
44
+ if (this.debug) {
45
+ log.warn(`${this}: Created new shader ${shader.id}`)();
46
+ }
47
+ }
48
+ else {
49
+ cacheEntry.useCount++;
50
+ if (this.debug) {
51
+ log.warn(`${this}: Reusing shader ${cacheEntry.shader.id} count=${cacheEntry.useCount}`)();
52
+ }
31
53
  }
32
- cacheEntry.useCount++;
33
54
  return cacheEntry.shader;
34
55
  }
35
56
  /** Releases a previously-requested {@link Shader}, destroying it if no users remain. */
36
57
  release(shader) {
58
+ if (!this.cachingEnabled) {
59
+ shader.destroy();
60
+ return;
61
+ }
37
62
  const key = this._hashShader(shader);
38
63
  const cacheEntry = this._cache[key];
39
64
  if (cacheEntry) {
@@ -42,8 +67,17 @@ export class ShaderFactory {
42
67
  if (this.destroyPolicy === 'unused') {
43
68
  delete this._cache[key];
44
69
  cacheEntry.shader.destroy();
70
+ if (this.debug) {
71
+ log.warn(`${this}: Releasing shader ${shader.id}, destroyed`)();
72
+ }
45
73
  }
46
74
  }
75
+ else if (cacheEntry.useCount < 0) {
76
+ throw new Error(`ShaderFactory: Shader ${shader.id} released too many times`);
77
+ }
78
+ else if (this.debug) {
79
+ log.warn(`${this}: Releasing shader ${shader.id} count=${cacheEntry.useCount}`)();
80
+ }
47
81
  }
48
82
  }
49
83
  // PRIVATE
@@ -1 +1 @@
1
- {"version":3,"file":"shader-factory.js","sourceRoot":"","sources":["../../src/factories/shader-factory.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAS,MAAM,EAAc,MAAM,eAAe,CAAC;AAE1D,kDAAkD;AAClD,MAAM,OAAO,aAAa;IACxB,MAAM,CAAU,YAAY,GAA0B,EAAC,GAAG,MAAM,CAAC,YAAY,EAAC,CAAC;IAE/E,iGAAiG;IACjG,MAAM,CAAC,uBAAuB,CAAC,MAAc;QAC3C,MAAM,CAAC,SAAS,CAAC,oBAAoB,KAAK,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QACpE,OAAO,MAAM,CAAC,SAAS,CAAC,oBAAqC,CAAC;IAChE,CAAC;IAEe,MAAM,CAAS;IACtB,aAAa,CAAqB;IAC1B,MAAM,GAAuD,EAAE,CAAC;IAEjF,gBAAgB;IAChB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAC1D,CAAC;IAED,yFAAyF;IACzF,YAAY,CAAC,KAAkB;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;gBACtC,GAAG,KAAK;gBACR,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS;aAChD,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,EAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC;QACxD,CAAC;QAED,UAAU,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,wFAAwF;IACxF,OAAO,CAAC,MAAc;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,UAAU,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;oBACpC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACxB,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;IAEF,WAAW,CAAC,KAA2B;QAC7C,OAAO,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;IAC1C,CAAC"}
1
+ {"version":3,"file":"shader-factory.js","sourceRoot":"","sources":["../../src/factories/shader-factory.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export type CubeGeometryProps = {
7
7
  export declare class CubeGeometry extends Geometry {
8
8
  constructor(props?: CubeGeometryProps);
9
9
  }
10
- export declare const CUBE_NON_INDEXED_POSITIONS: Float32Array;
11
- export declare const CUBE_NON_INDEXED_TEX_COORDS: Float32Array;
12
- export declare const CUBE_NON_INDEXED_COLORS: Float32Array;
10
+ export declare const CUBE_NON_INDEXED_POSITIONS: Float32Array<ArrayBuffer>;
11
+ export declare const CUBE_NON_INDEXED_TEX_COORDS: Float32Array<ArrayBuffer>;
12
+ export declare const CUBE_NON_INDEXED_COLORS: Float32Array<ArrayBuffer>;
13
13
  //# sourceMappingURL=cube-geometry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cube-geometry.d.ts","sourceRoot":"","sources":["../../src/geometries/cube-geometry.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAC,gCAA6B;AAI9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB,CAAC;AAEF,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,KAAK,GAAE,iBAAsB;CAoB1C;AAqDD,eAAO,MAAM,0BAA0B,cA0CrC,CAAC;AAIH,eAAO,MAAM,2BAA2B,cA0CtC,CAAC;AAIH,eAAO,MAAM,uBAAuB,cA0ClC,CAAC"}
1
+ {"version":3,"file":"cube-geometry.d.ts","sourceRoot":"","sources":["../../src/geometries/cube-geometry.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAC,gCAA6B;AAI9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB,CAAC;AAEF,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,KAAK,GAAE,iBAAsB;CAoB1C;AAqDD,eAAO,MAAM,0BAA0B,2BA0CrC,CAAC;AAIH,eAAO,MAAM,2BAA2B,2BA0CtC,CAAC;AAIH,eAAO,MAAM,uBAAuB,2BA0ClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/geometry/geometry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAGrD,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,QAAQ,EAAE,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,eAAe,GAAG,gBAAgB,CAAC;IACzF,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAAC,CAAC;IAC3D,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,GAAG;QAAC,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAAA;KAAC,CAAC;CAC3E,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,qBAAa,QAAQ;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,MAAM,EAAE,iBAAiB,CAAC;QAC1B,UAAU,EAAE,iBAAiB,CAAC;QAC9B,OAAO,CAAC,EAAE,iBAAiB,CAAC;QAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;KAC9C,CAAC;IAEF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;gBAE3B,KAAK,EAAE,aAAa;IAgDhC,cAAc,IAAI,MAAM;IAIxB;;;OAGG;IACH,aAAa,IAAI,kBAAkB;IAMnC,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAIrC;;;;;;;;;;OAUG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAIjF,qBAAqB,CAAC,UAAU,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM;CAe3F"}
1
+ {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/geometry/geometry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAGrD,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,QAAQ,EAAE,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,eAAe,GAAG,gBAAgB,CAAC;IACzF,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAAC,CAAC;IAC3D,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,GAAG;QAAC,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAAA;KAAC,CAAC;CAC3E,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,qBAAa,QAAQ;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,MAAM,EAAE,iBAAiB,CAAC;QAC1B,UAAU,EAAE,iBAAiB,CAAC;QAC9B,OAAO,CAAC,EAAE,iBAAiB,CAAC;QAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;KAC9C,CAAC;IAEF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;gBAE3B,KAAK,EAAE,aAAa;IAgDhC,cAAc,IAAI,MAAM;IAIxB;;;OAGG;IACH,aAAa,IAAI,kBAAkB;IAOnC,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAIrC;;;;;;;;;;OAUG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAIjF,qBAAqB,CAAC,UAAU,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM;CAe3F"}
@@ -41,9 +41,9 @@ export class Geometry {
41
41
  this.attributes[attributeName] = attribute;
42
42
  }
43
43
  }
44
- if (this.indices && this.indices.isIndexed !== undefined) {
44
+ if (this.indices && this.indices['isIndexed'] !== undefined) {
45
45
  this.indices = Object.assign({}, this.indices);
46
- delete this.indices.isIndexed;
46
+ delete this.indices['isIndexed'];
47
47
  }
48
48
  this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);
49
49
  }
@@ -55,6 +55,7 @@ export class Geometry {
55
55
  * TODO Geometry types are a mess
56
56
  */
57
57
  getAttributes() {
58
+ // @ts-ignore
58
59
  return this.indices ? { indices: this.indices, ...this.attributes } : this.attributes;
59
60
  }
60
61
  // PRIVATE
@@ -1 +1 @@
1
- {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/geometry/geometry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/geometry/geometry.ts"],"names":[],"mappings":"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"}