@babylonjs/core 6.34.1 → 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 (153) hide show
  1. package/Cameras/Inputs/followCameraMouseWheelInput.js +12 -9
  2. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  3. package/Cameras/Inputs/followCameraPointersInput.js +28 -9
  4. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  5. package/Cameras/followCameraInputsManager.js +2 -1
  6. package/Cameras/followCameraInputsManager.js.map +1 -1
  7. package/Compute/computeShader.d.ts +8 -2
  8. package/Compute/computeShader.js +5 -1
  9. package/Compute/computeShader.js.map +1 -1
  10. package/Debug/skeletonViewer.js +2 -1
  11. package/Debug/skeletonViewer.js.map +1 -1
  12. package/Engines/Extensions/engine.computeShader.d.ts +3 -1
  13. package/Engines/Extensions/engine.computeShader.js.map +1 -1
  14. package/Engines/Extensions/engine.multiRender.js +3 -2
  15. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  16. package/Engines/Processors/shaderCodeInliner.js +15 -14
  17. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  18. package/Engines/WebGPU/Extensions/engine.computeShader.js +13 -4
  19. package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
  20. package/Engines/WebGPU/Extensions/engine.multiRender.js +3 -2
  21. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  22. package/Engines/WebGPU/Extensions/engine.storageBuffer.js +8 -1
  23. package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
  24. package/Engines/WebGPU/webgpuBufferManager.d.ts +3 -1
  25. package/Engines/WebGPU/webgpuBufferManager.js +10 -2
  26. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  27. package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
  28. package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
  29. package/Engines/WebGPU/webgpuPerfCounter.d.ts +15 -0
  30. package/Engines/WebGPU/webgpuPerfCounter.js +31 -0
  31. package/Engines/WebGPU/webgpuPerfCounter.js.map +1 -0
  32. package/Engines/WebGPU/webgpuQuerySet.d.ts +3 -1
  33. package/Engines/WebGPU/webgpuQuerySet.js +37 -18
  34. package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
  35. package/Engines/WebGPU/webgpuRenderTargetWrapper.d.ts +20 -1
  36. package/Engines/WebGPU/webgpuRenderTargetWrapper.js +18 -1
  37. package/Engines/WebGPU/webgpuRenderTargetWrapper.js.map +1 -1
  38. package/Engines/WebGPU/webgpuShaderProcessor.js +2 -1
  39. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  40. package/Engines/WebGPU/webgpuTimestampQuery.d.ts +11 -2
  41. package/Engines/WebGPU/webgpuTimestampQuery.js +45 -7
  42. package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
  43. package/Engines/WebGPU/webgpuTintWASM.js +3 -2
  44. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  45. package/Engines/engine.d.ts +3 -5
  46. package/Engines/engine.js.map +1 -1
  47. package/Engines/index.d.ts +1 -0
  48. package/Engines/index.js +1 -0
  49. package/Engines/index.js.map +1 -1
  50. package/Engines/nativeEngine.js +4 -2
  51. package/Engines/nativeEngine.js.map +1 -1
  52. package/Engines/thinEngine.js +4 -4
  53. package/Engines/thinEngine.js.map +1 -1
  54. package/Engines/webgpuEngine.d.ts +16 -1
  55. package/Engines/webgpuEngine.js +108 -54
  56. package/Engines/webgpuEngine.js.map +1 -1
  57. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js +2 -1
  58. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -1
  59. package/Gizmos/lightGizmo.js +2 -1
  60. package/Gizmos/lightGizmo.js.map +1 -1
  61. package/Gizmos/rotationGizmo.js +1 -1
  62. package/Gizmos/rotationGizmo.js.map +1 -1
  63. package/Lights/Shadows/cascadedShadowGenerator.js +1 -1
  64. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  65. package/Materials/Node/Blocks/Dual/lightBlock.js +2 -1
  66. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  67. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +3 -2
  68. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  69. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js +2 -1
  70. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
  71. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +2 -1
  72. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  73. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +2 -1
  74. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  75. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +3 -2
  76. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  77. package/Materials/Node/Blocks/PBR/reflectionBlock.js +2 -1
  78. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  79. package/Materials/Node/nodeMaterial.js +9 -8
  80. package/Materials/Node/nodeMaterial.js.map +1 -1
  81. package/Materials/Node/nodeMaterialBlock.js +2 -1
  82. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  83. package/Materials/Textures/multiRenderTarget.d.ts +4 -0
  84. package/Materials/Textures/multiRenderTarget.js +1 -0
  85. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  86. package/Materials/Textures/renderTargetTexture.js +1 -2
  87. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  88. package/Materials/uniformBuffer.d.ts +1 -4
  89. package/Materials/uniformBuffer.js +2 -5
  90. package/Materials/uniformBuffer.js.map +1 -1
  91. package/Meshes/Builders/groundBuilder.d.ts +7 -1
  92. package/Meshes/Builders/groundBuilder.js +17 -8
  93. package/Meshes/Builders/groundBuilder.js.map +1 -1
  94. package/Meshes/Compression/dracoCompression.js.map +1 -1
  95. package/Meshes/Node/nodeGeometryBlock.js +2 -1
  96. package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
  97. package/Meshes/mesh.d.ts +2 -1
  98. package/Meshes/mesh.js +3 -2
  99. package/Meshes/mesh.js.map +1 -1
  100. package/Misc/assetsManager.js +2 -2
  101. package/Misc/assetsManager.js.map +1 -1
  102. package/Misc/dds.js +1 -1
  103. package/Misc/dds.js.map +1 -1
  104. package/Misc/fileTools.js +4 -0
  105. package/Misc/fileTools.js.map +1 -1
  106. package/Misc/logger.d.ts +3 -3
  107. package/Misc/logger.js +8 -4
  108. package/Misc/logger.js.map +1 -1
  109. package/Misc/perfCounter.d.ts +2 -1
  110. package/Misc/perfCounter.js +1 -0
  111. package/Misc/perfCounter.js.map +1 -1
  112. package/Misc/sceneSerializer.js +2 -1
  113. package/Misc/sceneSerializer.js.map +1 -1
  114. package/Misc/tools.d.ts +2 -7
  115. package/Misc/tools.js.map +1 -1
  116. package/Navigation/Plugins/recastJSPlugin.js +3 -3
  117. package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
  118. package/Particles/computeShaderParticleSystem.js.map +1 -1
  119. package/Physics/v2/Plugins/havokPlugin.js +1 -1
  120. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  121. package/Physics/v2/physicsBody.d.ts +5 -0
  122. package/Physics/v2/physicsBody.js +7 -0
  123. package/Physics/v2/physicsBody.js.map +1 -1
  124. package/Physics/v2/ragdoll.d.ts +5 -10
  125. package/Physics/v2/ragdoll.js +29 -36
  126. package/Physics/v2/ragdoll.js.map +1 -1
  127. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +2 -2
  128. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  129. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +3 -2
  130. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  131. package/PostProcesses/screenSpaceCurvaturePostProcess.js +1 -1
  132. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  133. package/PostProcesses/screenSpaceReflectionPostProcess.js +3 -2
  134. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  135. package/Rendering/GaussianSplatting/gaussianSplatting.js.map +1 -1
  136. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +3 -1
  137. package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  138. package/XR/features/WebXRControllerPhysics.js +2 -2
  139. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  140. package/XR/features/WebXRMeshDetector.js +2 -1
  141. package/XR/features/WebXRMeshDetector.js.map +1 -1
  142. package/XR/features/WebXRWalkingLocomotion.js +1 -1
  143. package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
  144. package/XR/motionController/webXRMotionControllerManager.js +1 -1
  145. package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
  146. package/XR/webXRExperienceHelper.js +2 -2
  147. package/XR/webXRExperienceHelper.js.map +1 -1
  148. package/assetContainer.js +2 -2
  149. package/assetContainer.js.map +1 -1
  150. package/package.json +1 -1
  151. package/scene.d.ts +2 -4
  152. package/scene.js +2 -1
  153. package/scene.js.map +1 -1
@@ -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"]}
@@ -1,3 +1,4 @@
1
+ import { Logger } from "../../Misc/logger.js";
1
2
  import { Tools } from "../../Misc/tools.js";
2
3
  /** @internal */
3
4
  export class WebGPUTintWASM {
@@ -23,8 +24,8 @@ export class WebGPUTintWASM {
23
24
  convertSpirV2WGSL(code, disableUniformityAnalysis = false) {
24
25
  const ccode = WebGPUTintWASM._twgsl.convertSpirV2WGSL(code, WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis);
25
26
  if (WebGPUTintWASM.ShowWGSLShaderCode) {
26
- console.log(ccode);
27
- console.log("***********************************************");
27
+ Logger.Log(ccode);
28
+ Logger.Log("***********************************************");
28
29
  }
29
30
  return WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis ? "diagnostic(off, derivative_uniformity);\n" + ccode : ccode;
30
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webgpuTintWASM.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuTintWASM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAoBzC,gBAAgB;AAChB,MAAM,OAAO,cAAc;IAahB,KAAK,CAAC,SAAS,CAAC,YAA2B;QAC9C,IAAI,cAAc,CAAC,MAAM,EAAE;YACvB,OAAO;SACV;QAED,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;QAClC,YAAY,mCACL,cAAc,CAAC,oBAAoB,GACnC,YAAY,CAClB,CAAC;QAEF,IAAI,YAAY,CAAC,KAAK,EAAE;YACpB,cAAc,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;YAC3C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QAED,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE;YAC9C,MAAM,KAAK,CAAC,sBAAsB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC3D;QAED,IAAK,IAAY,CAAC,KAAK,EAAE;YACrB,cAAc,CAAC,MAAM,GAAG,MAAO,IAAY,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,YAAa,CAAC,QAAS,CAAC,CAAC,CAAC;YACtG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACrD,CAAC;IAEM,iBAAiB,CAAC,IAAiB,EAAE,yBAAyB,GAAG,KAAK;QACzE,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,yBAAyB,IAAI,yBAAyB,CAAC,CAAC;QACnI,IAAI,cAAc,CAAC,kBAAkB,EAAE;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;SAClE;QACD,OAAO,cAAc,CAAC,yBAAyB,IAAI,yBAAyB,CAAC,CAAC,CAAC,2CAA2C,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/I,CAAC;;AA/CD,yBAAyB;AACD,mCAAoB,GAAiB;IACzD,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,iBAAiB;IAChD,QAAQ,EAAE,GAAG,KAAK,CAAC,cAAc,mBAAmB;CACvD,CAAC;AAEY,iCAAkB,GAAG,KAAK,CAAC;AAE3B,wCAAyB,GAAG,KAAK,CAAC;AAEjC,qBAAM,GAAQ,IAAI,CAAC","sourcesContent":["import { Tools } from \"../../Misc/tools\";\r\n\r\n/**\r\n * Options to load the associated Twgsl library\r\n */\r\nexport interface TwgslOptions {\r\n /**\r\n * Defines an existing instance of Twgsl (useful in modules who do not access the global instance).\r\n */\r\n twgsl?: any;\r\n /**\r\n * Defines the URL of the twgsl JS File.\r\n */\r\n jsPath?: string;\r\n /**\r\n * Defines the URL of the twgsl WASM File.\r\n */\r\n wasmPath?: string;\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPUTintWASM {\r\n // Default twgsl options.\r\n private static readonly _TWgslDefaultOptions: TwgslOptions = {\r\n jsPath: `${Tools._DefaultCdnUrl}/twgsl/twgsl.js`,\r\n wasmPath: `${Tools._DefaultCdnUrl}/twgsl/twgsl.wasm`,\r\n };\r\n\r\n public static ShowWGSLShaderCode = false;\r\n\r\n public static DisableUniformityAnalysis = false;\r\n\r\n private static _twgsl: any = null;\r\n\r\n public async initTwgsl(twgslOptions?: TwgslOptions): Promise<void> {\r\n if (WebGPUTintWASM._twgsl) {\r\n return;\r\n }\r\n\r\n twgslOptions = twgslOptions || {};\r\n twgslOptions = {\r\n ...WebGPUTintWASM._TWgslDefaultOptions,\r\n ...twgslOptions,\r\n };\r\n\r\n if (twgslOptions.twgsl) {\r\n WebGPUTintWASM._twgsl = twgslOptions.twgsl;\r\n return Promise.resolve();\r\n }\r\n\r\n if (twgslOptions.jsPath && twgslOptions.wasmPath) {\r\n await Tools.LoadBabylonScriptAsync(twgslOptions.jsPath);\r\n }\r\n\r\n if ((self as any).twgsl) {\r\n WebGPUTintWASM._twgsl = await (self as any).twgsl(Tools.GetBabylonScriptURL(twgslOptions!.wasmPath!));\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.reject(\"twgsl is not available.\");\r\n }\r\n\r\n public convertSpirV2WGSL(code: Uint32Array, disableUniformityAnalysis = false): string {\r\n const ccode = WebGPUTintWASM._twgsl.convertSpirV2WGSL(code, WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis);\r\n if (WebGPUTintWASM.ShowWGSLShaderCode) {\r\n console.log(ccode);\r\n console.log(\"***********************************************\");\r\n }\r\n return WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis ? \"diagnostic(off, derivative_uniformity);\\n\" + ccode : ccode;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"webgpuTintWASM.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuTintWASM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,6BAAyB;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAoBzC,gBAAgB;AAChB,MAAM,OAAO,cAAc;IAahB,KAAK,CAAC,SAAS,CAAC,YAA2B;QAC9C,IAAI,cAAc,CAAC,MAAM,EAAE;YACvB,OAAO;SACV;QAED,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;QAClC,YAAY,mCACL,cAAc,CAAC,oBAAoB,GACnC,YAAY,CAClB,CAAC;QAEF,IAAI,YAAY,CAAC,KAAK,EAAE;YACpB,cAAc,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;YAC3C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QAED,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE;YAC9C,MAAM,KAAK,CAAC,sBAAsB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC3D;QAED,IAAK,IAAY,CAAC,KAAK,EAAE;YACrB,cAAc,CAAC,MAAM,GAAG,MAAO,IAAY,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,YAAa,CAAC,QAAS,CAAC,CAAC,CAAC;YACtG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACrD,CAAC;IAEM,iBAAiB,CAAC,IAAiB,EAAE,yBAAyB,GAAG,KAAK;QACzE,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,yBAAyB,IAAI,yBAAyB,CAAC,CAAC;QACnI,IAAI,cAAc,CAAC,kBAAkB,EAAE;YACnC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;SACjE;QACD,OAAO,cAAc,CAAC,yBAAyB,IAAI,yBAAyB,CAAC,CAAC,CAAC,2CAA2C,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/I,CAAC;;AA/CD,yBAAyB;AACD,mCAAoB,GAAiB;IACzD,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,iBAAiB;IAChD,QAAQ,EAAE,GAAG,KAAK,CAAC,cAAc,mBAAmB;CACvD,CAAC;AAEY,iCAAkB,GAAG,KAAK,CAAC;AAE3B,wCAAyB,GAAG,KAAK,CAAC;AAEjC,qBAAM,GAAQ,IAAI,CAAC","sourcesContent":["import { Logger } from \"core/Misc/logger\";\r\nimport { Tools } from \"../../Misc/tools\";\r\n\r\n/**\r\n * Options to load the associated Twgsl library\r\n */\r\nexport interface TwgslOptions {\r\n /**\r\n * Defines an existing instance of Twgsl (useful in modules who do not access the global instance).\r\n */\r\n twgsl?: any;\r\n /**\r\n * Defines the URL of the twgsl JS File.\r\n */\r\n jsPath?: string;\r\n /**\r\n * Defines the URL of the twgsl WASM File.\r\n */\r\n wasmPath?: string;\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPUTintWASM {\r\n // Default twgsl options.\r\n private static readonly _TWgslDefaultOptions: TwgslOptions = {\r\n jsPath: `${Tools._DefaultCdnUrl}/twgsl/twgsl.js`,\r\n wasmPath: `${Tools._DefaultCdnUrl}/twgsl/twgsl.wasm`,\r\n };\r\n\r\n public static ShowWGSLShaderCode = false;\r\n\r\n public static DisableUniformityAnalysis = false;\r\n\r\n private static _twgsl: any = null;\r\n\r\n public async initTwgsl(twgslOptions?: TwgslOptions): Promise<void> {\r\n if (WebGPUTintWASM._twgsl) {\r\n return;\r\n }\r\n\r\n twgslOptions = twgslOptions || {};\r\n twgslOptions = {\r\n ...WebGPUTintWASM._TWgslDefaultOptions,\r\n ...twgslOptions,\r\n };\r\n\r\n if (twgslOptions.twgsl) {\r\n WebGPUTintWASM._twgsl = twgslOptions.twgsl;\r\n return Promise.resolve();\r\n }\r\n\r\n if (twgslOptions.jsPath && twgslOptions.wasmPath) {\r\n await Tools.LoadBabylonScriptAsync(twgslOptions.jsPath);\r\n }\r\n\r\n if ((self as any).twgsl) {\r\n WebGPUTintWASM._twgsl = await (self as any).twgsl(Tools.GetBabylonScriptURL(twgslOptions!.wasmPath!));\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.reject(\"twgsl is not available.\");\r\n }\r\n\r\n public convertSpirV2WGSL(code: Uint32Array, disableUniformityAnalysis = false): string {\r\n const ccode = WebGPUTintWASM._twgsl.convertSpirV2WGSL(code, WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis);\r\n if (WebGPUTintWASM.ShowWGSLShaderCode) {\r\n Logger.Log(ccode);\r\n Logger.Log(\"***********************************************\");\r\n }\r\n return WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis ? \"diagnostic(off, derivative_uniformity);\\n\" + ccode : ccode;\r\n }\r\n}\r\n"]}
@@ -644,10 +644,8 @@ export declare class Engine extends ThinEngine {
644
644
  * @internal
645
645
  */
646
646
  _reportDrawCall(numDrawCalls?: number): void;
647
- /**
648
- * @internal
649
- */
650
- _loadFileAsync(url: string, offlineProvider?: IOfflineProvider, useArrayBuffer?: boolean): Promise<string | ArrayBuffer>;
647
+ _loadFileAsync(url: string, offlineProvider?: IOfflineProvider, useArrayBuffer?: false): Promise<string>;
648
+ _loadFileAsync(url: string, offlineProvider?: IOfflineProvider, useArrayBuffer?: true): Promise<ArrayBuffer>;
651
649
  /**
652
650
  * Gets the source code of the vertex shader associated with a specific webGL program
653
651
  * @param program defines the program to use
@@ -1929,7 +1927,7 @@ class GPUCommandEncoder implements GPUObjectBase, GPUCommandsMixin, GPUDebugComm
1929
1927
  copyTextureToTexture(source: GPUImageCopyTexture, destination: GPUImageCopyTexture, copySize: GPUExtent3D): void;
1930
1928
  clearBuffer(buffer: GPUBuffer, offset?: GPUSize64 /* default=0 */, size?: GPUSize64): void;
1931
1929
 
1932
- writeTimestamp(querySet: GPUQuerySet, queryIndex: GPUSize32): void;
1930
+ writeTimestamp?(querySet: GPUQuerySet, queryIndex: GPUSize32): void;
1933
1931
 
1934
1932
  resolveQuerySet(querySet: GPUQuerySet, firstQuery: GPUSize32, queryCount: GPUSize32, destination: GPUBuffer, destinationOffset: GPUSize64): void;
1935
1933