@babylonjs/core 6.34.2 → 6.34.3

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 (49) hide show
  1. package/Compute/computeShader.d.ts +8 -2
  2. package/Compute/computeShader.js +5 -1
  3. package/Compute/computeShader.js.map +1 -1
  4. package/Engines/Extensions/engine.computeShader.d.ts +3 -1
  5. package/Engines/Extensions/engine.computeShader.js.map +1 -1
  6. package/Engines/Extensions/engine.multiRender.js +3 -2
  7. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  8. package/Engines/WebGPU/Extensions/engine.computeShader.js +10 -2
  9. package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
  10. package/Engines/WebGPU/Extensions/engine.multiRender.js +3 -2
  11. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  12. package/Engines/WebGPU/Extensions/engine.storageBuffer.js +8 -1
  13. package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
  14. package/Engines/WebGPU/webgpuBufferManager.d.ts +3 -1
  15. package/Engines/WebGPU/webgpuBufferManager.js +10 -2
  16. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  17. package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
  18. package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
  19. package/Engines/WebGPU/webgpuPerfCounter.d.ts +15 -0
  20. package/Engines/WebGPU/webgpuPerfCounter.js +31 -0
  21. package/Engines/WebGPU/webgpuPerfCounter.js.map +1 -0
  22. package/Engines/WebGPU/webgpuQuerySet.d.ts +3 -1
  23. package/Engines/WebGPU/webgpuQuerySet.js +37 -18
  24. package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
  25. package/Engines/WebGPU/webgpuRenderTargetWrapper.d.ts +20 -1
  26. package/Engines/WebGPU/webgpuRenderTargetWrapper.js +18 -1
  27. package/Engines/WebGPU/webgpuRenderTargetWrapper.js.map +1 -1
  28. package/Engines/WebGPU/webgpuTimestampQuery.d.ts +11 -2
  29. package/Engines/WebGPU/webgpuTimestampQuery.js +45 -7
  30. package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
  31. package/Engines/engine.d.ts +1 -1
  32. package/Engines/index.d.ts +1 -0
  33. package/Engines/index.js +1 -0
  34. package/Engines/index.js.map +1 -1
  35. package/Engines/thinEngine.js +2 -2
  36. package/Engines/thinEngine.js.map +1 -1
  37. package/Engines/webgpuEngine.d.ts +16 -1
  38. package/Engines/webgpuEngine.js +33 -4
  39. package/Engines/webgpuEngine.js.map +1 -1
  40. package/Materials/Textures/multiRenderTarget.d.ts +4 -0
  41. package/Materials/Textures/multiRenderTarget.js +1 -0
  42. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  43. package/Misc/perfCounter.d.ts +2 -1
  44. package/Misc/perfCounter.js +1 -0
  45. package/Misc/perfCounter.js.map +1 -1
  46. package/Particles/computeShaderParticleSystem.js.map +1 -1
  47. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +3 -1
  48. package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  49. package/package.json +1 -1
@@ -1,7 +1,10 @@
1
1
  import type { WebGPUBufferManager } from "./webgpuBufferManager";
2
2
  import { PerfCounter } from "../../Misc/perfCounter";
3
+ import type { WebGPUEngine } from "../webgpuEngine";
4
+ import type { WebGPUPerfCounter } from "./webgpuPerfCounter";
3
5
  /** @internal */
4
6
  export declare class WebGPUTimestampQuery {
7
+ private _engine;
5
8
  private _device;
6
9
  private _bufferManager;
7
10
  private _enabled;
@@ -9,17 +12,23 @@ export declare class WebGPUTimestampQuery {
9
12
  private _measureDuration;
10
13
  private _measureDurationState;
11
14
  get gpuFrameTimeCounter(): PerfCounter;
12
- constructor(device: GPUDevice, bufferManager: WebGPUBufferManager);
15
+ constructor(engine: WebGPUEngine, device: GPUDevice, bufferManager: WebGPUBufferManager);
13
16
  get enable(): boolean;
14
17
  set enable(value: boolean);
15
18
  startFrame(commandEncoder: GPUCommandEncoder): void;
16
19
  endFrame(commandEncoder: GPUCommandEncoder): void;
20
+ startPass(descriptor: GPURenderPassDescriptor | GPUComputePassDescriptor, index: number): void;
21
+ endPass(index: number, gpuPerfCounter?: WebGPUPerfCounter): void;
22
+ dispose(): void;
17
23
  }
18
24
  /** @internal */
19
25
  export declare class WebGPUDurationMeasure {
20
26
  private _querySet;
21
- constructor(device: GPUDevice, bufferManager: WebGPUBufferManager);
27
+ private _count;
28
+ constructor(engine: WebGPUEngine, device: GPUDevice, bufferManager: WebGPUBufferManager, count?: number, querySetLabel?: string);
22
29
  start(encoder: GPUCommandEncoder): void;
23
30
  stop(encoder: GPUCommandEncoder): Promise<number | null>;
31
+ startPass(descriptor: GPURenderPassDescriptor | GPUComputePassDescriptor, index: number): void;
32
+ stopPass(index: number): Promise<number | null>;
24
33
  dispose(): void;
25
34
  }
@@ -6,10 +6,11 @@ export class WebGPUTimestampQuery {
6
6
  get gpuFrameTimeCounter() {
7
7
  return this._gpuFrameTimeCounter;
8
8
  }
9
- constructor(device, bufferManager) {
9
+ constructor(engine, device, bufferManager) {
10
10
  this._enabled = false;
11
11
  this._gpuFrameTimeCounter = new PerfCounter();
12
12
  this._measureDurationState = 0;
13
+ this._engine = engine;
13
14
  this._device = device;
14
15
  this._bufferManager = bufferManager;
15
16
  }
@@ -23,7 +24,7 @@ export class WebGPUTimestampQuery {
23
24
  this._enabled = value;
24
25
  this._measureDurationState = 0;
25
26
  if (value) {
26
- this._measureDuration = new WebGPUDurationMeasure(this._device, this._bufferManager);
27
+ this._measureDuration = new WebGPUDurationMeasure(this._engine, this._device, this._bufferManager, 2000, "QuerySet_TimestampQuery");
27
28
  }
28
29
  else {
29
30
  this._measureDuration.dispose();
@@ -47,18 +48,55 @@ export class WebGPUTimestampQuery {
47
48
  });
48
49
  }
49
50
  }
51
+ startPass(descriptor, index) {
52
+ if (this._enabled) {
53
+ this._measureDuration.startPass(descriptor, index);
54
+ }
55
+ else {
56
+ descriptor.timestampWrites = undefined;
57
+ }
58
+ }
59
+ endPass(index, gpuPerfCounter) {
60
+ if (!this._enabled || !gpuPerfCounter) {
61
+ return;
62
+ }
63
+ const currentFrameId = this._engine.frameId;
64
+ this._measureDuration.stopPass(index).then((duration_) => {
65
+ gpuPerfCounter._addDuration(currentFrameId, duration_ !== null && duration_ > 0 ? duration_ : 0);
66
+ });
67
+ }
68
+ dispose() {
69
+ var _a;
70
+ (_a = this._measureDuration) === null || _a === void 0 ? void 0 : _a.dispose();
71
+ }
50
72
  }
51
73
  /** @internal */
52
74
  export class WebGPUDurationMeasure {
53
- constructor(device, bufferManager) {
54
- this._querySet = new WebGPUQuerySet(2, WebGPUConstants.QueryType.Timestamp, device, bufferManager);
75
+ constructor(engine, device, bufferManager, count = 2, querySetLabel) {
76
+ this._count = count;
77
+ this._querySet = new WebGPUQuerySet(engine, count, WebGPUConstants.QueryType.Timestamp, device, bufferManager, true, querySetLabel);
55
78
  }
56
79
  start(encoder) {
57
- encoder.writeTimestamp(this._querySet.querySet, 0);
80
+ var _a;
81
+ (_a = encoder.writeTimestamp) === null || _a === void 0 ? void 0 : _a.call(encoder, this._querySet.querySet, 0);
58
82
  }
59
83
  async stop(encoder) {
60
- encoder.writeTimestamp(this._querySet.querySet, 1);
61
- return this._querySet.readTwoValuesAndSubtract(0);
84
+ var _a;
85
+ (_a = encoder.writeTimestamp) === null || _a === void 0 ? void 0 : _a.call(encoder, this._querySet.querySet, 1);
86
+ return encoder.writeTimestamp ? this._querySet.readTwoValuesAndSubtract(0) : 0;
87
+ }
88
+ startPass(descriptor, index) {
89
+ if (index + 3 > this._count) {
90
+ throw new Error("WebGPUDurationMeasure: index out of range (" + index + ")");
91
+ }
92
+ descriptor.timestampWrites = {
93
+ querySet: this._querySet.querySet,
94
+ beginningOfPassWriteIndex: index + 2,
95
+ endOfPassWriteIndex: index + 3,
96
+ };
97
+ }
98
+ async stopPass(index) {
99
+ return this._querySet.readTwoValuesAndSubtract(index + 2);
62
100
  }
63
101
  dispose() {
64
102
  this._querySet.dispose();
@@ -1 +1 @@
1
- {"version":3,"file":"webgpuTimestampQuery.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuTimestampQuery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,gBAAgB;AAChB,MAAM,OAAO,oBAAoB;IAS7B,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAED,YAAY,MAAiB,EAAE,aAAkC;QATzD,aAAQ,GAAG,KAAK,CAAC;QACjB,yBAAoB,GAAgB,IAAI,WAAW,EAAE,CAAC;QAEtD,0BAAqB,GAAG,CAAC,CAAC;QAO9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACxC,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAW,MAAM,CAAC,KAAc;QAC5B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;YACzB,OAAO;SACV;QAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,gBAAgB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;SACxF;aAAM;YACH,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;SACnC;IACL,CAAC;IAEM,UAAU,CAAC,cAAiC;QAC/C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,qBAAqB,KAAK,CAAC,EAAE;YACnD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC5C,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;SAClC;IACL,CAAC;IAEM,QAAQ,CAAC,cAAiC;QAC7C,IAAI,IAAI,CAAC,qBAAqB,KAAK,CAAC,EAAE;YAClC,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACzD,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,IAAI,CAAC,EAAE;oBACpC,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,CAAC;oBAC1C,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;iBACtD;gBACD,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;SACN;IACL,CAAC;CACJ;AAED,gBAAgB;AAChB,MAAM,OAAO,qBAAqB;IAG9B,YAAY,MAAiB,EAAE,aAAkC;QAC7D,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IACvG,CAAC;IAEM,KAAK,CAAC,OAA0B;QACnC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,OAA0B;QACxC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CACJ","sourcesContent":["import type { WebGPUBufferManager } from \"./webgpuBufferManager\";\r\nimport * as WebGPUConstants from \"./webgpuConstants\";\r\nimport { PerfCounter } from \"../../Misc/perfCounter\";\r\nimport { WebGPUQuerySet } from \"./webgpuQuerySet\";\r\n\r\n/** @internal */\r\nexport class WebGPUTimestampQuery {\r\n private _device: GPUDevice;\r\n private _bufferManager: WebGPUBufferManager;\r\n\r\n private _enabled = false;\r\n private _gpuFrameTimeCounter: PerfCounter = new PerfCounter();\r\n private _measureDuration: WebGPUDurationMeasure;\r\n private _measureDurationState = 0;\r\n\r\n public get gpuFrameTimeCounter() {\r\n return this._gpuFrameTimeCounter;\r\n }\r\n\r\n constructor(device: GPUDevice, bufferManager: WebGPUBufferManager) {\r\n this._device = device;\r\n this._bufferManager = bufferManager;\r\n }\r\n\r\n public get enable(): boolean {\r\n return this._enabled;\r\n }\r\n\r\n public set enable(value: boolean) {\r\n if (this._enabled === value) {\r\n return;\r\n }\r\n\r\n this._enabled = value;\r\n this._measureDurationState = 0;\r\n if (value) {\r\n this._measureDuration = new WebGPUDurationMeasure(this._device, this._bufferManager);\r\n } else {\r\n this._measureDuration.dispose();\r\n }\r\n }\r\n\r\n public startFrame(commandEncoder: GPUCommandEncoder): void {\r\n if (this._enabled && this._measureDurationState === 0) {\r\n this._measureDuration.start(commandEncoder);\r\n this._measureDurationState = 1;\r\n }\r\n }\r\n\r\n public endFrame(commandEncoder: GPUCommandEncoder): void {\r\n if (this._measureDurationState === 1) {\r\n this._measureDurationState = 2;\r\n this._measureDuration.stop(commandEncoder).then((duration) => {\r\n if (duration !== null && duration >= 0) {\r\n this._gpuFrameTimeCounter.fetchNewFrame();\r\n this._gpuFrameTimeCounter.addCount(duration, true);\r\n }\r\n this._measureDurationState = 0;\r\n });\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPUDurationMeasure {\r\n private _querySet: WebGPUQuerySet;\r\n\r\n constructor(device: GPUDevice, bufferManager: WebGPUBufferManager) {\r\n this._querySet = new WebGPUQuerySet(2, WebGPUConstants.QueryType.Timestamp, device, bufferManager);\r\n }\r\n\r\n public start(encoder: GPUCommandEncoder): void {\r\n encoder.writeTimestamp(this._querySet.querySet, 0);\r\n }\r\n\r\n public async stop(encoder: GPUCommandEncoder): Promise<number | null> {\r\n encoder.writeTimestamp(this._querySet.querySet, 1);\r\n\r\n return this._querySet.readTwoValuesAndSubtract(0);\r\n }\r\n\r\n public dispose() {\r\n this._querySet.dispose();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"webgpuTimestampQuery.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuTimestampQuery.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable babylonjs/available */\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { WebGPUBufferManager } from \"./webgpuBufferManager\";\r\nimport * as WebGPUConstants from \"./webgpuConstants\";\r\nimport { PerfCounter } from \"../../Misc/perfCounter\";\r\nimport { WebGPUQuerySet } from \"./webgpuQuerySet\";\r\nimport type { WebGPUEngine } from \"../webgpuEngine\";\r\nimport type { WebGPUPerfCounter } from \"./webgpuPerfCounter\";\r\n\r\n/** @internal */\r\nexport class WebGPUTimestampQuery {\r\n private _engine: WebGPUEngine;\r\n private _device: GPUDevice;\r\n private _bufferManager: WebGPUBufferManager;\r\n\r\n private _enabled = false;\r\n private _gpuFrameTimeCounter: PerfCounter = new PerfCounter();\r\n private _measureDuration: WebGPUDurationMeasure;\r\n private _measureDurationState = 0;\r\n\r\n public get gpuFrameTimeCounter() {\r\n return this._gpuFrameTimeCounter;\r\n }\r\n\r\n constructor(engine: WebGPUEngine, device: GPUDevice, bufferManager: WebGPUBufferManager) {\r\n this._engine = engine;\r\n this._device = device;\r\n this._bufferManager = bufferManager;\r\n }\r\n\r\n public get enable(): boolean {\r\n return this._enabled;\r\n }\r\n\r\n public set enable(value: boolean) {\r\n if (this._enabled === value) {\r\n return;\r\n }\r\n\r\n this._enabled = value;\r\n this._measureDurationState = 0;\r\n if (value) {\r\n this._measureDuration = new WebGPUDurationMeasure(this._engine, this._device, this._bufferManager, 2000, \"QuerySet_TimestampQuery\");\r\n } else {\r\n this._measureDuration.dispose();\r\n }\r\n }\r\n\r\n public startFrame(commandEncoder: GPUCommandEncoder): void {\r\n if (this._enabled && this._measureDurationState === 0) {\r\n this._measureDuration.start(commandEncoder);\r\n this._measureDurationState = 1;\r\n }\r\n }\r\n\r\n public endFrame(commandEncoder: GPUCommandEncoder): void {\r\n if (this._measureDurationState === 1) {\r\n this._measureDurationState = 2;\r\n this._measureDuration.stop(commandEncoder).then((duration) => {\r\n if (duration !== null && duration >= 0) {\r\n this._gpuFrameTimeCounter.fetchNewFrame();\r\n this._gpuFrameTimeCounter.addCount(duration, true);\r\n }\r\n this._measureDurationState = 0;\r\n });\r\n }\r\n }\r\n\r\n public startPass(descriptor: GPURenderPassDescriptor | GPUComputePassDescriptor, index: number): void {\r\n if (this._enabled) {\r\n this._measureDuration.startPass(descriptor, index);\r\n } else {\r\n descriptor.timestampWrites = undefined;\r\n }\r\n }\r\n\r\n public endPass(index: number, gpuPerfCounter?: WebGPUPerfCounter): void {\r\n if (!this._enabled || !gpuPerfCounter) {\r\n return;\r\n }\r\n\r\n const currentFrameId = this._engine.frameId;\r\n\r\n this._measureDuration.stopPass(index).then((duration_) => {\r\n gpuPerfCounter._addDuration(currentFrameId, duration_ !== null && duration_ > 0 ? duration_ : 0);\r\n });\r\n }\r\n\r\n public dispose() {\r\n this._measureDuration?.dispose();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPUDurationMeasure {\r\n private _querySet: WebGPUQuerySet;\r\n private _count: number;\r\n\r\n constructor(engine: WebGPUEngine, device: GPUDevice, bufferManager: WebGPUBufferManager, count = 2, querySetLabel?: string) {\r\n this._count = count;\r\n this._querySet = new WebGPUQuerySet(engine, count, WebGPUConstants.QueryType.Timestamp, device, bufferManager, true, querySetLabel);\r\n }\r\n\r\n public start(encoder: GPUCommandEncoder): void {\r\n encoder.writeTimestamp?.(this._querySet.querySet, 0);\r\n }\r\n\r\n public async stop(encoder: GPUCommandEncoder): Promise<number | null> {\r\n encoder.writeTimestamp?.(this._querySet.querySet, 1);\r\n\r\n return encoder.writeTimestamp ? this._querySet.readTwoValuesAndSubtract(0) : 0;\r\n }\r\n\r\n public startPass(descriptor: GPURenderPassDescriptor | GPUComputePassDescriptor, index: number): void {\r\n if (index + 3 > this._count) {\r\n throw new Error(\"WebGPUDurationMeasure: index out of range (\" + index + \")\");\r\n }\r\n\r\n descriptor.timestampWrites = {\r\n querySet: this._querySet.querySet,\r\n beginningOfPassWriteIndex: index + 2,\r\n endOfPassWriteIndex: index + 3,\r\n };\r\n }\r\n\r\n public async stopPass(index: number): Promise<number | null> {\r\n return this._querySet.readTwoValuesAndSubtract(index + 2);\r\n }\r\n\r\n public dispose() {\r\n this._querySet.dispose();\r\n }\r\n}\r\n"]}
@@ -1927,7 +1927,7 @@ class GPUCommandEncoder implements GPUObjectBase, GPUCommandsMixin, GPUDebugComm
1927
1927
  copyTextureToTexture(source: GPUImageCopyTexture, destination: GPUImageCopyTexture, copySize: GPUExtent3D): void;
1928
1928
  clearBuffer(buffer: GPUBuffer, offset?: GPUSize64 /* default=0 */, size?: GPUSize64): void;
1929
1929
 
1930
- writeTimestamp(querySet: GPUQuerySet, queryIndex: GPUSize32): void;
1930
+ writeTimestamp?(querySet: GPUQuerySet, queryIndex: GPUSize32): void;
1931
1931
 
1932
1932
  resolveQuerySet(querySet: GPUQuerySet, firstQuery: GPUSize32, queryCount: GPUSize32, destination: GPUBuffer, destinationOffset: GPUSize64): void;
1933
1933
 
@@ -19,6 +19,7 @@ export * from "./WebGPU/webgpuCacheRenderPipelineTree";
19
19
  export * from "./WebGPU/webgpuCacheBindGroups";
20
20
  export * from "./WebGPU/webgpuCacheSampler";
21
21
  export * from "./WebGPU/webgpuDrawContext";
22
+ export * from "./WebGPU/webgpuRenderTargetWrapper";
22
23
  export * from "./WebGPU/webgpuTintWASM";
23
24
  export * from "./WebGL/webGL2ShaderProcessors";
24
25
  export * from "./nativeEngine";
package/Engines/index.js CHANGED
@@ -20,6 +20,7 @@ export * from "./WebGPU/webgpuCacheRenderPipelineTree.js";
20
20
  export * from "./WebGPU/webgpuCacheBindGroups.js";
21
21
  export * from "./WebGPU/webgpuCacheSampler.js";
22
22
  export * from "./WebGPU/webgpuDrawContext.js";
23
+ export * from "./WebGPU/webgpuRenderTargetWrapper.js";
23
24
  export * from "./WebGPU/webgpuTintWASM.js";
24
25
  export * from "./WebGL/webGL2ShaderProcessors.js";
25
26
  export * from "./nativeEngine.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Engines/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nexport * from \"./constants\";\r\nexport * from \"./engineCapabilities\";\r\nexport * from \"./instancingAttributeInfo\";\r\nexport * from \"./thinEngine\";\r\nexport * from \"./engine\";\r\nexport * from \"./engineStore\";\r\nexport * from \"./nullEngine\";\r\nexport * from \"./Extensions/index\";\r\nexport * from \"./Native/index\";\r\nexport * from \"./WebGPU/Extensions/index\";\r\nexport * from \"./IPipelineContext\";\r\nexport * from \"./ICanvas\";\r\nexport * from \"./WebGL/webGLPipelineContext\";\r\nexport * from \"./WebGL/webGLHardwareTexture\";\r\nexport * from \"./WebGPU/webgpuConstants\";\r\nexport * from \"./webgpuEngine\";\r\nexport * from \"./WebGPU/webgpuCacheRenderPipeline\";\r\nexport * from \"./WebGPU/webgpuCacheRenderPipelineTree\";\r\nexport * from \"./WebGPU/webgpuCacheBindGroups\";\r\nexport * from \"./WebGPU/webgpuCacheSampler\";\r\nexport * from \"./WebGPU/webgpuDrawContext\";\r\nexport * from \"./WebGPU/webgpuTintWASM\";\r\nexport * from \"./WebGL/webGL2ShaderProcessors\";\r\nexport * from \"./nativeEngine\";\r\nexport * from \"./Processors/shaderCodeInliner\";\r\nexport * from \"./performanceConfigurator\";\r\nexport * from \"./engineFeatures\";\r\nexport * from \"./engineFactory\";\r\nexport * from \"./IMaterialContext\";\r\nexport * from \"./IDrawContext\";\r\nexport * from \"./shaderStore\";\r\nexport * from \"./renderTargetWrapper\";\r\nexport * from \"./Processors/iShaderProcessor\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Engines/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nexport * from \"./constants\";\r\nexport * from \"./engineCapabilities\";\r\nexport * from \"./instancingAttributeInfo\";\r\nexport * from \"./thinEngine\";\r\nexport * from \"./engine\";\r\nexport * from \"./engineStore\";\r\nexport * from \"./nullEngine\";\r\nexport * from \"./Extensions/index\";\r\nexport * from \"./Native/index\";\r\nexport * from \"./WebGPU/Extensions/index\";\r\nexport * from \"./IPipelineContext\";\r\nexport * from \"./ICanvas\";\r\nexport * from \"./WebGL/webGLPipelineContext\";\r\nexport * from \"./WebGL/webGLHardwareTexture\";\r\nexport * from \"./WebGPU/webgpuConstants\";\r\nexport * from \"./webgpuEngine\";\r\nexport * from \"./WebGPU/webgpuCacheRenderPipeline\";\r\nexport * from \"./WebGPU/webgpuCacheRenderPipelineTree\";\r\nexport * from \"./WebGPU/webgpuCacheBindGroups\";\r\nexport * from \"./WebGPU/webgpuCacheSampler\";\r\nexport * from \"./WebGPU/webgpuDrawContext\";\r\nexport * from \"./WebGPU/webgpuRenderTargetWrapper\";\r\nexport * from \"./WebGPU/webgpuTintWASM\";\r\nexport * from \"./WebGL/webGL2ShaderProcessors\";\r\nexport * from \"./nativeEngine\";\r\nexport * from \"./Processors/shaderCodeInliner\";\r\nexport * from \"./performanceConfigurator\";\r\nexport * from \"./engineFeatures\";\r\nexport * from \"./engineFactory\";\r\nexport * from \"./IMaterialContext\";\r\nexport * from \"./IDrawContext\";\r\nexport * from \"./shaderStore\";\r\nexport * from \"./renderTargetWrapper\";\r\nexport * from \"./Processors/iShaderProcessor\";\r\n"]}
@@ -34,13 +34,13 @@ export class ThinEngine {
34
34
  */
35
35
  // Not mixed with Version for tooling purpose.
36
36
  static get NpmPackage() {
37
- return "babylonjs@6.34.2";
37
+ return "babylonjs@6.34.3";
38
38
  }
39
39
  /**
40
40
  * Returns the current version of the framework
41
41
  */
42
42
  static get Version() {
43
- return "6.34.2";
43
+ return "6.34.3";
44
44
  }
45
45
  /**
46
46
  * Returns a string describing the current engine