@babylonjs/core 7.19.1 → 7.20.0

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 (175) hide show
  1. package/Buffers/buffer.nonFloatVertexBuffers.js +1 -1
  2. package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
  3. package/Collisions/gpuPicker.d.ts +8 -2
  4. package/Collisions/gpuPicker.js +41 -20
  5. package/Collisions/gpuPicker.js.map +1 -1
  6. package/Engines/Processors/shaderProcessor.d.ts +1 -0
  7. package/Engines/Processors/shaderProcessor.js +1 -0
  8. package/Engines/Processors/shaderProcessor.js.map +1 -1
  9. package/Engines/WebGPU/Extensions/engine.rawTexture.js +1 -0
  10. package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
  11. package/Engines/WebGPU/webgpuShaderProcessingContext.d.ts +1 -1
  12. package/Engines/WebGPU/webgpuShaderProcessingContext.js +4 -2
  13. package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
  14. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +2 -1
  15. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +12 -5
  16. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  17. package/Engines/WebGPU/webgpuTextureManager.d.ts +1 -4
  18. package/Engines/WebGPU/webgpuTextureManager.js +90 -75
  19. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  20. package/Engines/abstractEngine.d.ts +2 -2
  21. package/Engines/abstractEngine.js +2 -2
  22. package/Engines/abstractEngine.js.map +1 -1
  23. package/Engines/nativeEngine.d.ts +1 -1
  24. package/Engines/nativeEngine.js +2 -1
  25. package/Engines/nativeEngine.js.map +1 -1
  26. package/Engines/thinEngine.d.ts +1 -1
  27. package/Engines/thinEngine.functions.d.ts +1 -1
  28. package/Engines/thinEngine.functions.js +2 -1
  29. package/Engines/thinEngine.functions.js.map +1 -1
  30. package/Engines/thinEngine.js +2 -2
  31. package/Engines/thinEngine.js.map +1 -1
  32. package/Engines/webgpuEngine.d.ts +9 -5
  33. package/Engines/webgpuEngine.js +35 -22
  34. package/Engines/webgpuEngine.js.map +1 -1
  35. package/Layers/effectLayer.d.ts +16 -1
  36. package/Layers/effectLayer.js +32 -2
  37. package/Layers/effectLayer.js.map +1 -1
  38. package/Layers/glowLayer.d.ts +1 -2
  39. package/Layers/glowLayer.js +16 -3
  40. package/Layers/glowLayer.js.map +1 -1
  41. package/Layers/highlightLayer.d.ts +5 -4
  42. package/Layers/highlightLayer.js +36 -11
  43. package/Layers/highlightLayer.js.map +1 -1
  44. package/Layers/index.d.ts +10 -0
  45. package/Layers/index.js +12 -0
  46. package/Layers/index.js.map +1 -1
  47. package/Lights/Shadows/index.d.ts +8 -0
  48. package/Lights/Shadows/index.js +9 -0
  49. package/Lights/Shadows/index.js.map +1 -1
  50. package/Lights/Shadows/shadowGenerator.d.ts +18 -5
  51. package/Lights/Shadows/shadowGenerator.js +44 -5
  52. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  53. package/Loading/sceneLoader.d.ts +155 -16
  54. package/Loading/sceneLoader.js +197 -99
  55. package/Loading/sceneLoader.js.map +1 -1
  56. package/Materials/Node/nodeMaterial.js +8 -1
  57. package/Materials/Node/nodeMaterial.js.map +1 -1
  58. package/Materials/Node/nodeMaterialBuildState.js +1 -1
  59. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  60. package/Materials/effect.functions.d.ts +1 -1
  61. package/Materials/effect.functions.js +6 -3
  62. package/Materials/effect.functions.js.map +1 -1
  63. package/Materials/effect.js +1 -1
  64. package/Materials/effect.js.map +1 -1
  65. package/Materials/standardMaterial.d.ts +1 -1
  66. package/Materials/standardMaterial.js +1 -1
  67. package/Materials/standardMaterial.js.map +1 -1
  68. package/Maths/math.constants.d.ts +1 -2
  69. package/Maths/math.constants.js +1 -2
  70. package/Maths/math.constants.js.map +1 -1
  71. package/Maths/math.like.d.ts +9 -0
  72. package/Maths/math.like.js.map +1 -1
  73. package/Maths/math.vector.d.ts +23 -23
  74. package/Maths/math.vector.js +43 -11
  75. package/Maths/math.vector.js.map +1 -1
  76. package/Misc/index.d.ts +4 -0
  77. package/Misc/index.js +5 -0
  78. package/Misc/index.js.map +1 -1
  79. package/Misc/rgbdTextureTools.d.ts +1 -0
  80. package/Misc/rgbdTextureTools.js +15 -2
  81. package/Misc/rgbdTextureTools.js.map +1 -1
  82. package/PostProcesses/blurPostProcess.d.ts +6 -0
  83. package/PostProcesses/blurPostProcess.js +21 -2
  84. package/PostProcesses/blurPostProcess.js.map +1 -1
  85. package/PostProcesses/index.d.ts +8 -0
  86. package/PostProcesses/index.js +10 -0
  87. package/PostProcesses/index.js.map +1 -1
  88. package/PostProcesses/passPostProcess.d.ts +2 -0
  89. package/PostProcesses/passPostProcess.js +26 -2
  90. package/PostProcesses/passPostProcess.js.map +1 -1
  91. package/PostProcesses/postProcess.d.ts +11 -2
  92. package/PostProcesses/postProcess.js +17 -1
  93. package/PostProcesses/postProcess.js.map +1 -1
  94. package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.d.ts +5 -0
  95. package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.js +17 -0
  96. package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.js.map +1 -0
  97. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js +1 -1
  98. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js.map +1 -1
  99. package/ShadersWGSL/ShadersInclude/kernelBlurFragment.d.ts +5 -0
  100. package/ShadersWGSL/ShadersInclude/kernelBlurFragment.js +20 -0
  101. package/ShadersWGSL/ShadersInclude/kernelBlurFragment.js.map +1 -0
  102. package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.d.ts +5 -0
  103. package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.js +19 -0
  104. package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.js.map +1 -0
  105. package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.d.ts +5 -0
  106. package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.js +9 -0
  107. package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.js.map +1 -0
  108. package/ShadersWGSL/ShadersInclude/kernelBlurVertex.d.ts +5 -0
  109. package/ShadersWGSL/ShadersInclude/kernelBlurVertex.js +9 -0
  110. package/ShadersWGSL/ShadersInclude/kernelBlurVertex.js.map +1 -0
  111. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +4 -4
  112. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
  113. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js +1 -1
  114. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  115. package/ShadersWGSL/ShadersInclude/shadowMapFragment.js +5 -5
  116. package/ShadersWGSL/ShadersInclude/shadowMapFragment.js.map +1 -1
  117. package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.d.ts +7 -0
  118. package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.js +26 -0
  119. package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.js.map +1 -0
  120. package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.d.ts +5 -0
  121. package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +12 -0
  122. package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js.map +1 -0
  123. package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.d.ts +5 -0
  124. package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.js +19 -0
  125. package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.js.map +1 -0
  126. package/ShadersWGSL/ShadersInclude/shadowMapVertexMetric.js +4 -4
  127. package/ShadersWGSL/ShadersInclude/shadowMapVertexMetric.js.map +1 -1
  128. package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.d.ts +5 -0
  129. package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.js +17 -0
  130. package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.js.map +1 -0
  131. package/ShadersWGSL/default.fragment.js +2 -2
  132. package/ShadersWGSL/default.fragment.js.map +1 -1
  133. package/ShadersWGSL/depthBoxBlur.fragment.d.ts +5 -0
  134. package/ShadersWGSL/depthBoxBlur.fragment.js +14 -0
  135. package/ShadersWGSL/depthBoxBlur.fragment.js.map +1 -0
  136. package/ShadersWGSL/glowBlurPostProcess.fragment.d.ts +5 -0
  137. package/ShadersWGSL/glowBlurPostProcess.fragment.js +15 -0
  138. package/ShadersWGSL/glowBlurPostProcess.fragment.js.map +1 -0
  139. package/ShadersWGSL/glowMapGeneration.fragment.d.ts +8 -0
  140. package/ShadersWGSL/glowMapGeneration.fragment.js +74 -0
  141. package/ShadersWGSL/glowMapGeneration.fragment.js.map +1 -0
  142. package/ShadersWGSL/glowMapGeneration.vertex.d.ts +17 -0
  143. package/ShadersWGSL/glowMapGeneration.vertex.js +92 -0
  144. package/ShadersWGSL/glowMapGeneration.vertex.js.map +1 -0
  145. package/ShadersWGSL/glowMapMerge.fragment.d.ts +5 -0
  146. package/ShadersWGSL/glowMapMerge.fragment.js +32 -0
  147. package/ShadersWGSL/glowMapMerge.fragment.js.map +1 -0
  148. package/ShadersWGSL/glowMapMerge.vertex.d.ts +5 -0
  149. package/ShadersWGSL/glowMapMerge.vertex.js +16 -0
  150. package/ShadersWGSL/glowMapMerge.vertex.js.map +1 -0
  151. package/ShadersWGSL/kernelBlur.fragment.d.ts +9 -0
  152. package/ShadersWGSL/kernelBlur.fragment.js +48 -0
  153. package/ShadersWGSL/kernelBlur.fragment.js.map +1 -0
  154. package/ShadersWGSL/kernelBlur.vertex.d.ts +7 -0
  155. package/ShadersWGSL/kernelBlur.vertex.js +21 -0
  156. package/ShadersWGSL/kernelBlur.vertex.js.map +1 -0
  157. package/ShadersWGSL/pass.fragment.d.ts +5 -0
  158. package/ShadersWGSL/pass.fragment.js +12 -0
  159. package/ShadersWGSL/pass.fragment.js.map +1 -0
  160. package/ShadersWGSL/passCube.fragment.d.ts +5 -0
  161. package/ShadersWGSL/passCube.fragment.js +31 -0
  162. package/ShadersWGSL/passCube.fragment.js.map +1 -0
  163. package/ShadersWGSL/rgbdDecode.fragment.d.ts +6 -0
  164. package/ShadersWGSL/rgbdDecode.fragment.js +14 -0
  165. package/ShadersWGSL/rgbdDecode.fragment.js.map +1 -0
  166. package/ShadersWGSL/rgbdEncode.fragment.d.ts +6 -0
  167. package/ShadersWGSL/rgbdEncode.fragment.js +14 -0
  168. package/ShadersWGSL/rgbdEncode.fragment.js.map +1 -0
  169. package/ShadersWGSL/shadowMap.fragment.d.ts +9 -0
  170. package/ShadersWGSL/shadowMap.fragment.js +39 -0
  171. package/ShadersWGSL/shadowMap.fragment.js.map +1 -0
  172. package/ShadersWGSL/shadowMap.vertex.d.ts +22 -0
  173. package/ShadersWGSL/shadowMap.vertex.js +89 -0
  174. package/ShadersWGSL/shadowMap.vertex.js.map +1 -0
  175. package/package.json +1 -1
@@ -120,10 +120,8 @@ export interface WebGPUEngineOptions extends AbstractEngineOptions, GPURequestAd
120
120
  * @since 5.0.0
121
121
  */
122
122
  export declare class WebGPUEngine extends AbstractEngine {
123
- private static readonly _GLSLslangDefaultOptions;
123
+ private static readonly _GlslangDefaultOptions;
124
124
  private static _InstanceId;
125
- /** true to enable using TintWASM to convert Spir-V to WGSL */
126
- static UseTWGSL: boolean;
127
125
  /** A unique id to identify this instance */
128
126
  readonly uniqueId = -1;
129
127
  private readonly _uploadEncoderDescriptor;
@@ -373,6 +371,12 @@ export declare class WebGPUEngine extends AbstractEngine {
373
371
  * @param options Defines the options passed to the engine to create the GPU context dependencies
374
372
  */
375
373
  constructor(canvas: HTMLCanvasElement | OffscreenCanvas, options?: WebGPUEngineOptions);
374
+ private _workingGlslangAndTintPromise;
375
+ /**
376
+ * Load the glslang and tintWASM libraries and prepare them for use.
377
+ * @returns a promise that resolves when the engine is ready to use the glslang and tintWASM
378
+ */
379
+ prepareGlslangAndTintAsync(): Promise<void>;
376
380
  /**
377
381
  * Initializes the WebGPU context and dependencies.
378
382
  * @param glslangOptions Defines the GLSLang compiler options if necessary
@@ -445,7 +449,7 @@ export declare class WebGPUEngine extends AbstractEngine {
445
449
  /**
446
450
  * @internal
447
451
  */
448
- _getShaderProcessingContext(shaderLanguage: ShaderLanguage): Nullable<ShaderProcessingContext>;
452
+ _getShaderProcessingContext(shaderLanguage: ShaderLanguage, pureMode: boolean): Nullable<ShaderProcessingContext>;
449
453
  private _currentPassIsMainPass;
450
454
  private _getCurrentRenderPass;
451
455
  /** @internal */
@@ -666,7 +670,7 @@ export declare class WebGPUEngine extends AbstractEngine {
666
670
  /**
667
671
  * @internal
668
672
  */
669
- _preparePipelineContext(pipelineContext: IPipelineContext, vertexSourceCode: string, fragmentSourceCode: string, createAsRaw: boolean, rawVertexSourceCode: string, rawFragmentSourceCode: string, rebuildRebind: any, defines: Nullable<string>): void;
673
+ _preparePipelineContext(pipelineContext: IPipelineContext, vertexSourceCode: string, fragmentSourceCode: string, createAsRaw: boolean, rawVertexSourceCode: string, rawFragmentSourceCode: string, _rebuildRebind: any, defines: Nullable<string>, _transformFeedbackVaryings: Nullable<string[]>, _key: string, onReady: () => void): Promise<void>;
670
674
  /**
671
675
  * Gets the list of active attributes for a given WebGPU program
672
676
  * @param pipelineContext defines the pipeline context to use
@@ -351,6 +351,10 @@ export class WebGPUEngine extends AbstractEngine {
351
351
  */
352
352
  this.hasOriginBottomLeft = false;
353
353
  //------------------------------------------------------------------------------
354
+ // Initialization
355
+ //------------------------------------------------------------------------------
356
+ this._workingGlslangAndTintPromise = null;
357
+ //------------------------------------------------------------------------------
354
358
  // Dynamic WebGPU States
355
359
  //------------------------------------------------------------------------------
356
360
  // index 0 is for main render pass, 1 for RTT render pass
@@ -382,9 +386,24 @@ export class WebGPUEngine extends AbstractEngine {
382
386
  this._shaderProcessor = new WebGPUShaderProcessorGLSL();
383
387
  this._shaderProcessorWGSL = new WebGPUShaderProcessorWGSL();
384
388
  }
385
- //------------------------------------------------------------------------------
386
- // Initialization
387
- //------------------------------------------------------------------------------
389
+ /**
390
+ * Load the glslang and tintWASM libraries and prepare them for use.
391
+ * @returns a promise that resolves when the engine is ready to use the glslang and tintWASM
392
+ */
393
+ prepareGlslangAndTintAsync() {
394
+ if (!this._workingGlslangAndTintPromise) {
395
+ this._workingGlslangAndTintPromise = new Promise((resolve) => {
396
+ this._initGlslang(this._glslangOptions ?? this._options?.glslangOptions).then((glslang) => {
397
+ this._glslang = glslang;
398
+ this._tintWASM = new WebGPUTintWASM();
399
+ this._tintWASM.initTwgsl(this._twgslOptions ?? this._options?.twgslOptions).then(() => {
400
+ resolve();
401
+ });
402
+ });
403
+ });
404
+ }
405
+ return this._workingGlslangAndTintPromise;
406
+ }
388
407
  /**
389
408
  * Initializes the WebGPU context and dependencies.
390
409
  * @param glslangOptions Defines the GLSLang compiler options if necessary
@@ -395,16 +414,8 @@ export class WebGPUEngine extends AbstractEngine {
395
414
  this.uniqueId = WebGPUEngine._InstanceId++;
396
415
  this._glslangOptions = glslangOptions;
397
416
  this._twgslOptions = twgslOptions;
398
- return this._initGlslang(glslangOptions ?? this._options?.glslangOptions)
399
- .then((glslang) => {
400
- this._glslang = glslang;
401
- this._tintWASM = WebGPUEngine.UseTWGSL ? new WebGPUTintWASM() : null;
402
- return this._tintWASM
403
- ? this._tintWASM.initTwgsl(twgslOptions ?? this._options?.twgslOptions).then(() => {
404
- return navigator.gpu.requestAdapter(this._options);
405
- })
406
- : navigator.gpu.requestAdapter(this._options);
407
- })
417
+ return navigator
418
+ .gpu.requestAdapter(this._options)
408
419
  .then((adapter) => {
409
420
  if (!adapter) {
410
421
  // eslint-disable-next-line no-throw-literal
@@ -486,8 +497,9 @@ export class WebGPUEngine extends AbstractEngine {
486
497
  }
487
498
  })
488
499
  .then(() => {
500
+ this._initializeLimits();
489
501
  this._bufferManager = new WebGPUBufferManager(this, this._device);
490
- this._textureHelper = new WebGPUTextureManager(this, this._device, this._glslang, this._tintWASM, this._bufferManager, this._deviceEnabledExtensions);
502
+ this._textureHelper = new WebGPUTextureManager(this, this._device, this._bufferManager, this._deviceEnabledExtensions);
491
503
  this._cacheSampler = new WebGPUCacheSampler(this._device);
492
504
  this._cacheBindGroups = new WebGPUCacheBindGroups(this._device, this._cacheSampler, this);
493
505
  this._timestampQuery = new WebGPUTimestampQuery(this, this._device, this._bufferManager);
@@ -504,7 +516,6 @@ export class WebGPUEngine extends AbstractEngine {
504
516
  }
505
517
  this._uploadEncoder = this._device.createCommandEncoder(this._uploadEncoderDescriptor);
506
518
  this._renderEncoder = this._device.createCommandEncoder(this._renderEncoderDescriptor);
507
- this._initializeLimits();
508
519
  this._emptyVertexBuffer = new VertexBuffer(this, [0], "", {
509
520
  stride: 1,
510
521
  offset: 0,
@@ -536,7 +547,7 @@ export class WebGPUEngine extends AbstractEngine {
536
547
  _initGlslang(glslangOptions) {
537
548
  glslangOptions = glslangOptions || {};
538
549
  glslangOptions = {
539
- ...WebGPUEngine._GLSLslangDefaultOptions,
550
+ ...WebGPUEngine._GlslangDefaultOptions,
540
551
  ...glslangOptions,
541
552
  };
542
553
  if (glslangOptions.glslang) {
@@ -901,8 +912,8 @@ export class WebGPUEngine extends AbstractEngine {
901
912
  /**
902
913
  * @internal
903
914
  */
904
- _getShaderProcessingContext(shaderLanguage) {
905
- return new WebGPUShaderProcessingContext(shaderLanguage);
915
+ _getShaderProcessingContext(shaderLanguage, pureMode) {
916
+ return new WebGPUShaderProcessingContext(shaderLanguage, pureMode);
906
917
  }
907
918
  _currentPassIsMainPass() {
908
919
  return this._currentRenderTarget === null;
@@ -1598,9 +1609,12 @@ export class WebGPUEngine extends AbstractEngine {
1598
1609
  /**
1599
1610
  * @internal
1600
1611
  */
1601
- _preparePipelineContext(pipelineContext, vertexSourceCode, fragmentSourceCode, createAsRaw, rawVertexSourceCode, rawFragmentSourceCode, rebuildRebind, defines) {
1612
+ async _preparePipelineContext(pipelineContext, vertexSourceCode, fragmentSourceCode, createAsRaw, rawVertexSourceCode, rawFragmentSourceCode, _rebuildRebind, defines, _transformFeedbackVaryings, _key, onReady) {
1602
1613
  const webGpuContext = pipelineContext;
1603
1614
  const shaderLanguage = webGpuContext.shaderProcessingContext.shaderLanguage;
1615
+ if (shaderLanguage === 0 /* ShaderLanguage.GLSL */ && (!this._glslang || !this._tintWASM)) {
1616
+ await this.prepareGlslangAndTintAsync();
1617
+ }
1604
1618
  if (this.dbgShowShaderCode) {
1605
1619
  Logger.Log(["defines", defines]);
1606
1620
  Logger.Log(vertexSourceCode);
@@ -1619,6 +1633,7 @@ export class WebGPUEngine extends AbstractEngine {
1619
1633
  else {
1620
1634
  webGpuContext.stages = this._compilePipelineStageDescriptor(vertexSourceCode, fragmentSourceCode, defines, shaderLanguage);
1621
1635
  }
1636
+ onReady();
1622
1637
  }
1623
1638
  /**
1624
1639
  * Gets the list of active attributes for a given WebGPU program
@@ -3175,11 +3190,9 @@ export class WebGPUEngine extends AbstractEngine {
3175
3190
  }
3176
3191
  }
3177
3192
  // Default glslang options.
3178
- WebGPUEngine._GLSLslangDefaultOptions = {
3193
+ WebGPUEngine._GlslangDefaultOptions = {
3179
3194
  jsPath: `${Tools._DefaultCdnUrl}/glslang/glslang.js`,
3180
3195
  wasmPath: `${Tools._DefaultCdnUrl}/glslang/glslang.wasm`,
3181
3196
  };
3182
3197
  WebGPUEngine._InstanceId = 0;
3183
- /** true to enable using TintWASM to convert Spir-V to WGSL */
3184
- WebGPUEngine.UseTWGSL = true;
3185
3198
  //# sourceMappingURL=webgpuEngine.js.map