@babylonjs/core 5.1.0 → 5.4.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 (172) hide show
  1. package/Audio/audioSceneComponent.d.ts +2 -0
  2. package/Audio/audioSceneComponent.js +9 -7
  3. package/Audio/audioSceneComponent.js.map +1 -1
  4. package/Behaviors/Cameras/autoRotationBehavior.d.ts +7 -0
  5. package/Behaviors/Cameras/autoRotationBehavior.js +15 -0
  6. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  7. package/Behaviors/Meshes/pointerDragBehavior.js +1 -0
  8. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  9. package/Bones/skeleton.js +2 -0
  10. package/Bones/skeleton.js.map +1 -1
  11. package/Cameras/arcRotateCamera.d.ts +5 -0
  12. package/Cameras/arcRotateCamera.js +5 -0
  13. package/Cameras/arcRotateCamera.js.map +1 -1
  14. package/Cameras/camera.d.ts +7 -2
  15. package/Cameras/camera.js +11 -8
  16. package/Cameras/camera.js.map +1 -1
  17. package/Debug/debugLayer.d.ts +5 -0
  18. package/Debug/debugLayer.js +24 -0
  19. package/Debug/debugLayer.js.map +1 -1
  20. package/DeviceInput/Helpers/eventFactory.js +14 -3
  21. package/DeviceInput/Helpers/eventFactory.js.map +1 -1
  22. package/DeviceInput/InputDevices/deviceTypes.d.ts +1 -1
  23. package/DeviceInput/InputDevices/deviceTypes.js.map +1 -1
  24. package/DeviceInput/InputDevices/nativeDeviceInputSystem.js +2 -8
  25. package/DeviceInput/InputDevices/nativeDeviceInputSystem.js.map +1 -1
  26. package/Engines/Processors/shaderCodeCursor.js +5 -0
  27. package/Engines/Processors/shaderCodeCursor.js.map +1 -1
  28. package/Engines/WebGPU/Extensions/engine.renderTarget.js +2 -2
  29. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  30. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +1 -1
  31. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  32. package/Engines/WebGPU/webgpuTextureHelper.d.ts +1 -0
  33. package/Engines/WebGPU/webgpuTextureHelper.js +16 -3
  34. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  35. package/Engines/constants.d.ts +29 -1
  36. package/Engines/constants.js +29 -1
  37. package/Engines/constants.js.map +1 -1
  38. package/Engines/engine.d.ts +3 -3
  39. package/Engines/engine.js +2 -1
  40. package/Engines/engine.js.map +1 -1
  41. package/Engines/nativeEngine.d.ts +1 -1
  42. package/Engines/nativeEngine.js +7 -8
  43. package/Engines/nativeEngine.js.map +1 -1
  44. package/Engines/thinEngine.js +2 -2
  45. package/Engines/thinEngine.js.map +1 -1
  46. package/Engines/webgpuEngine.d.ts +4 -0
  47. package/Engines/webgpuEngine.js +16 -5
  48. package/Engines/webgpuEngine.js.map +1 -1
  49. package/Gizmos/axisScaleGizmo.js +3 -2
  50. package/Gizmos/axisScaleGizmo.js.map +1 -1
  51. package/Gizmos/boundingBoxGizmo.js +11 -11
  52. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  53. package/Gizmos/gizmo.d.ts +5 -0
  54. package/Gizmos/gizmo.js +11 -4
  55. package/Gizmos/gizmo.js.map +1 -1
  56. package/Gizmos/planeRotationGizmo.js +3 -3
  57. package/Gizmos/planeRotationGizmo.js.map +1 -1
  58. package/Inputs/scene.inputManager.js +7 -1
  59. package/Inputs/scene.inputManager.js.map +1 -1
  60. package/Layers/effectLayer.js +1 -1
  61. package/Layers/effectLayer.js.map +1 -1
  62. package/Lights/Shadows/shadowGenerator.d.ts +9 -0
  63. package/Lights/Shadows/shadowGenerator.js +25 -3
  64. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  65. package/Loading/Plugins/babylonFileLoader.js +10 -8
  66. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  67. package/Materials/Background/backgroundMaterial.js +1 -1
  68. package/Materials/Background/backgroundMaterial.js.map +1 -1
  69. package/Materials/Node/Blocks/PBR/clearCoatBlock.d.ts +4 -0
  70. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +19 -1
  71. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  72. package/Materials/Node/Blocks/PBR/iridescenceBlock.d.ts +54 -0
  73. package/Materials/Node/Blocks/PBR/iridescenceBlock.js +135 -0
  74. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -0
  75. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +4 -0
  76. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +42 -24
  77. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  78. package/Materials/PBR/index.d.ts +1 -0
  79. package/Materials/PBR/index.js +1 -0
  80. package/Materials/PBR/index.js.map +1 -1
  81. package/Materials/PBR/pbrBaseMaterial.d.ts +5 -0
  82. package/Materials/PBR/pbrBaseMaterial.js +2 -0
  83. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  84. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +102 -0
  85. package/Materials/PBR/pbrIridescenceConfiguration.js +257 -0
  86. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -0
  87. package/Materials/Textures/Loaders/ktxTextureLoader.js +31 -0
  88. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  89. package/Materials/Textures/cubeTexture.js +3 -0
  90. package/Materials/Textures/cubeTexture.js.map +1 -1
  91. package/Materials/Textures/videoTexture.js +12 -12
  92. package/Materials/Textures/videoTexture.js.map +1 -1
  93. package/Materials/materialFlags.d.ts +6 -0
  94. package/Materials/materialFlags.js +18 -0
  95. package/Materials/materialFlags.js.map +1 -1
  96. package/Materials/materialHelper.js +1 -1
  97. package/Materials/materialHelper.js.map +1 -1
  98. package/Materials/materialPluginFactoryExport.d.ts +6 -0
  99. package/Materials/materialPluginFactoryExport.js +12 -0
  100. package/Materials/materialPluginFactoryExport.js.map +1 -1
  101. package/Materials/shaderMaterial.js +1 -0
  102. package/Materials/shaderMaterial.js.map +1 -1
  103. package/Materials/uniformBuffer.d.ts +2 -1
  104. package/Materials/uniformBuffer.js +2 -1
  105. package/Materials/uniformBuffer.js.map +1 -1
  106. package/Maths/math.vector.d.ts +4 -0
  107. package/Maths/math.vector.js +10 -0
  108. package/Maths/math.vector.js.map +1 -1
  109. package/Meshes/abstractMesh.d.ts +1 -1
  110. package/Meshes/abstractMesh.js +5 -2
  111. package/Meshes/abstractMesh.js.map +1 -1
  112. package/Meshes/mesh.d.ts +2 -2
  113. package/Meshes/mesh.js +11 -3
  114. package/Meshes/mesh.js.map +1 -1
  115. package/Meshes/subMesh.js +1 -1
  116. package/Meshes/subMesh.js.map +1 -1
  117. package/Meshes/thinInstanceMesh.js +2 -1
  118. package/Meshes/thinInstanceMesh.js.map +1 -1
  119. package/Misc/khronosTextureContainer.js +1 -1
  120. package/Misc/khronosTextureContainer.js.map +1 -1
  121. package/Misc/screenshotTools.js +6 -6
  122. package/Misc/screenshotTools.js.map +1 -1
  123. package/Physics/Plugins/oimoJSPlugin.js +1 -1
  124. package/Physics/Plugins/oimoJSPlugin.js.map +1 -1
  125. package/Physics/physicsImpostor.js +1 -1
  126. package/Physics/physicsImpostor.js.map +1 -1
  127. package/PostProcesses/volumetricLightScatteringPostProcess.js +6 -1
  128. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  129. package/Rendering/boundingBoxRenderer.js +4 -4
  130. package/Rendering/boundingBoxRenderer.js.map +1 -1
  131. package/Rendering/renderingGroup.js +8 -0
  132. package/Rendering/renderingGroup.js.map +1 -1
  133. package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js +1 -1
  134. package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js.map +1 -1
  135. package/Shaders/ShadersInclude/helperFunctions.js +1 -1
  136. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  137. package/Shaders/ShadersInclude/lightFragment.js +1 -1
  138. package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
  139. package/Shaders/ShadersInclude/pbrBRDFFunctions.js +1 -1
  140. package/Shaders/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  141. package/Shaders/ShadersInclude/pbrBlockIridescence.d.ts +5 -0
  142. package/Shaders/ShadersInclude/pbrBlockIridescence.js +9 -0
  143. package/Shaders/ShadersInclude/pbrBlockIridescence.js.map +1 -0
  144. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
  145. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  146. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +1 -1
  147. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
  148. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +1 -1
  149. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  150. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +1 -1
  151. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  152. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -1
  153. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  154. package/Shaders/pbr.fragment.d.ts +1 -0
  155. package/Shaders/pbr.fragment.js +2 -1
  156. package/Shaders/pbr.fragment.js.map +1 -1
  157. package/Shaders/pbr.vertex.js +1 -1
  158. package/Shaders/pbr.vertex.js.map +1 -1
  159. package/Shaders/spriteMap.fragment.js +1 -1
  160. package/Shaders/spriteMap.fragment.js.map +1 -1
  161. package/XR/features/WebXRControllerPointerSelection.js +1 -0
  162. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  163. package/XR/features/WebXRImageTracking.d.ts +0 -5
  164. package/XR/features/WebXRImageTracking.js +5 -8
  165. package/XR/features/WebXRImageTracking.js.map +1 -1
  166. package/XR/native/nativeXRFrame.d.ts +2 -1
  167. package/XR/native/nativeXRFrame.js +5 -1
  168. package/XR/native/nativeXRFrame.js.map +1 -1
  169. package/package.json +1 -1
  170. package/scene.d.ts +7 -1
  171. package/scene.js +11 -3
  172. package/scene.js.map +1 -1
@@ -129,6 +129,10 @@ export interface WebGPUEngineOptions extends GPURequestAdapterOptions {
129
129
  * Defines whether the canvas should be created in "premultiplied" mode (if false, the canvas is created in the "opaque" mode) (true by default)
130
130
  */
131
131
  premultipliedAlpha?: boolean;
132
+ /**
133
+ * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
134
+ */
135
+ useHighPrecisionMatrix?: boolean;
132
136
  }
133
137
  /**
134
138
  * The web GPU engine class provides support for WebGPU version of babylon.js.
@@ -36,6 +36,7 @@ import { WebGPUTintWASM } from "./WebGPU/webgpuTintWASM.js";
36
36
  import { WebGPUShaderProcessor } from "./WebGPU/webgpuShaderProcessor.js";
37
37
  import { ShaderLanguage } from "../Materials/shaderLanguage.js";
38
38
  import { WebGPUSnapshotRendering } from "./WebGPU/webgpuSnapshotRendering.js";
39
+ import { PerformanceConfigurator } from "./performanceConfigurator.js";
39
40
  /**
40
41
  * The web GPU engine class provides support for WebGPU version of babylon.js.
41
42
  * @since 5.0.0
@@ -142,6 +143,7 @@ var WebGPUEngine = /** @class */ (function (_super) {
142
143
  options.antialiasing = options.antialiasing === undefined ? true : options.antialiasing;
143
144
  options.stencil = (_a = options.stencil) !== null && _a !== void 0 ? _a : true;
144
145
  options.enableGPUDebugMarkers = (_b = options.enableGPUDebugMarkers) !== null && _b !== void 0 ? _b : false;
146
+ PerformanceConfigurator.SetMatrixPrecision(!!options.useHighPrecisionMatrix);
145
147
  Logger.Log("Babylon.js v".concat(Engine.Version, " - ").concat(_this.description, " engine"));
146
148
  if (!navigator.gpu) {
147
149
  Logger.Error("WebGPU is not supported by your browser.");
@@ -673,8 +675,8 @@ var WebGPUEngine = /** @class */ (function (_super) {
673
675
  depthLoadOp: WebGPUConstants.LoadOp.Clear,
674
676
  depthStoreOp: WebGPUConstants.StoreOp.Store,
675
677
  stencilClearValue: this._clearStencilValue,
676
- stencilLoadOp: WebGPUConstants.LoadOp.Clear,
677
- stencilStoreOp: WebGPUConstants.StoreOp.Store,
678
+ stencilLoadOp: !this.isStencilEnable ? undefined : WebGPUConstants.LoadOp.Clear,
679
+ stencilStoreOp: !this.isStencilEnable ? undefined : WebGPUConstants.StoreOp.Store,
678
680
  };
679
681
  this._mainRenderPassWrapper.renderPassDescriptor = {
680
682
  colorAttachments: mainColorAttachments,
@@ -2087,6 +2089,7 @@ var WebGPUEngine = /** @class */ (function (_super) {
2087
2089
  var gpuDepthStencilMSAATexture = gpuDepthStencilWrapper === null || gpuDepthStencilWrapper === void 0 ? void 0 : gpuDepthStencilWrapper.msaaTexture;
2088
2090
  var depthTextureView = gpuDepthStencilTexture === null || gpuDepthStencilTexture === void 0 ? void 0 : gpuDepthStencilTexture.createView(this._rttRenderPassWrapper.depthAttachmentViewDescriptor);
2089
2091
  var depthMSAATextureView = gpuDepthStencilMSAATexture === null || gpuDepthStencilMSAATexture === void 0 ? void 0 : gpuDepthStencilMSAATexture.createView(this._rttRenderPassWrapper.depthAttachmentViewDescriptor);
2092
+ var depthTextureHasStencil = gpuDepthStencilWrapper ? WebGPUTextureHelper.HasStencilAspect(gpuDepthStencilWrapper.format) : false;
2090
2093
  var colorAttachments = [];
2091
2094
  if (this.useReverseDepthBuffer) {
2092
2095
  this.setDepthFunctionToGreaterOrEqual();
@@ -2147,8 +2150,12 @@ var WebGPUEngine = /** @class */ (function (_super) {
2147
2150
  depthLoadOp: mustClearDepth ? WebGPUConstants.LoadOp.Clear : WebGPUConstants.LoadOp.Load,
2148
2151
  depthStoreOp: WebGPUConstants.StoreOp.Store,
2149
2152
  stencilClearValue: rtWrapper._depthStencilTextureWithStencil && mustClearStencil ? this._clearStencilValue : undefined,
2150
- stencilLoadOp: rtWrapper._depthStencilTextureWithStencil && mustClearStencil ? WebGPUConstants.LoadOp.Clear : WebGPUConstants.LoadOp.Load,
2151
- stencilStoreOp: WebGPUConstants.StoreOp.Store,
2153
+ stencilLoadOp: !depthTextureHasStencil
2154
+ ? undefined
2155
+ : rtWrapper._depthStencilTextureWithStencil && mustClearStencil
2156
+ ? WebGPUConstants.LoadOp.Clear
2157
+ : WebGPUConstants.LoadOp.Load,
2158
+ stencilStoreOp: !depthTextureHasStencil ? undefined : WebGPUConstants.StoreOp.Store,
2152
2159
  }
2153
2160
  : undefined,
2154
2161
  occlusionQuerySet: ((_b = this._occlusionQuery) === null || _b === void 0 ? void 0 : _b.hasQueries) ? this._occlusionQuery.querySet : undefined,
@@ -2234,7 +2241,11 @@ var WebGPUEngine = /** @class */ (function (_super) {
2234
2241
  : undefined;
2235
2242
  this._mainRenderPassWrapper.renderPassDescriptor.depthStencilAttachment.depthLoadOp = mustClearDepth ? WebGPUConstants.LoadOp.Clear : WebGPUConstants.LoadOp.Load;
2236
2243
  this._mainRenderPassWrapper.renderPassDescriptor.depthStencilAttachment.stencilClearValue = mustClearStencil ? this._clearStencilValue : undefined;
2237
- this._mainRenderPassWrapper.renderPassDescriptor.depthStencilAttachment.stencilLoadOp = mustClearStencil ? WebGPUConstants.LoadOp.Clear : WebGPUConstants.LoadOp.Load;
2244
+ this._mainRenderPassWrapper.renderPassDescriptor.depthStencilAttachment.stencilLoadOp = !this.isStencilEnable
2245
+ ? undefined
2246
+ : mustClearStencil
2247
+ ? WebGPUConstants.LoadOp.Clear
2248
+ : WebGPUConstants.LoadOp.Load;
2238
2249
  this._mainRenderPassWrapper.renderPassDescriptor.occlusionQuerySet = ((_a = this._occlusionQuery) === null || _a === void 0 ? void 0 : _a.hasQueries) ? this._occlusionQuery.querySet : undefined;
2239
2250
  this._swapChainTexture = this._context.getCurrentTexture();
2240
2251
  this._mainRenderPassWrapper.colorAttachmentGPUTextures[0].set(this._swapChainTexture);