@babylonjs/core 8.23.0 → 8.23.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 (206) hide show
  1. package/Bones/skeleton.d.ts +4 -0
  2. package/Bones/skeleton.js +12 -0
  3. package/Bones/skeleton.js.map +1 -1
  4. package/Buffers/storageBuffer.d.ts +6 -0
  5. package/Buffers/storageBuffer.js +8 -0
  6. package/Buffers/storageBuffer.js.map +1 -1
  7. package/Engines/Extensions/engine.multiRender.d.ts +2 -1
  8. package/Engines/Extensions/engine.multiRender.js +12 -7
  9. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  10. package/Engines/WebGPU/Extensions/engine.multiRender.d.ts +2 -1
  11. package/Engines/WebGPU/Extensions/engine.multiRender.js +12 -7
  12. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  13. package/Engines/WebGPU/webgpuDrawContext.d.ts +6 -0
  14. package/Engines/WebGPU/webgpuDrawContext.js +9 -0
  15. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  16. package/Engines/abstractEngine.js +2 -2
  17. package/Engines/abstractEngine.js.map +1 -1
  18. package/Engines/engineCapabilities.d.ts +4 -0
  19. package/Engines/engineCapabilities.js.map +1 -1
  20. package/Engines/nativeEngine.js +2 -0
  21. package/Engines/nativeEngine.js.map +1 -1
  22. package/Engines/nullEngine.js +2 -0
  23. package/Engines/nullEngine.js.map +1 -1
  24. package/Engines/thinEngine.js +15 -0
  25. package/Engines/thinEngine.js.map +1 -1
  26. package/Engines/webgpuEngine.d.ts +7 -0
  27. package/Engines/webgpuEngine.js +12 -1
  28. package/Engines/webgpuEngine.js.map +1 -1
  29. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.d.ts +12 -0
  30. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +52 -0
  31. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  32. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +0 -3
  33. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
  34. package/FrameGraph/Node/nodeRenderGraph.js +7 -2
  35. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  36. package/FrameGraph/Tasks/Layers/baseLayerTask.js +1 -1
  37. package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
  38. package/FrameGraph/Tasks/Misc/cullObjectsTask.js +11 -2
  39. package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
  40. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +6 -6
  41. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  42. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +27 -1
  43. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +76 -8
  44. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  45. package/FrameGraph/Tasks/Texture/clearTextureTask.js +2 -1
  46. package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
  47. package/FrameGraph/frameGraph.js +0 -7
  48. package/FrameGraph/frameGraph.js.map +1 -1
  49. package/FrameGraph/frameGraphRenderTarget.js +1 -1
  50. package/FrameGraph/frameGraphRenderTarget.js.map +1 -1
  51. package/Lights/Clustered/clusteredLightContainer.d.ts +90 -0
  52. package/Lights/Clustered/clusteredLightContainer.js +401 -0
  53. package/Lights/Clustered/clusteredLightContainer.js.map +1 -0
  54. package/Lights/Clustered/clusteredLightingSceneComponent.d.ts +34 -0
  55. package/Lights/Clustered/clusteredLightingSceneComponent.js +47 -0
  56. package/Lights/Clustered/clusteredLightingSceneComponent.js.map +1 -0
  57. package/Lights/Clustered/index.d.ts +6 -0
  58. package/Lights/Clustered/index.js +7 -0
  59. package/Lights/Clustered/index.js.map +1 -0
  60. package/Lights/Shadows/shadowGenerator.js +9 -8
  61. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  62. package/Lights/index.d.ts +1 -0
  63. package/Lights/index.js +1 -0
  64. package/Lights/index.js.map +1 -1
  65. package/Lights/light.d.ts +2 -1
  66. package/Lights/light.js +2 -1
  67. package/Lights/light.js.map +1 -1
  68. package/Lights/lightConstants.d.ts +4 -0
  69. package/Lights/lightConstants.js +4 -0
  70. package/Lights/lightConstants.js.map +1 -1
  71. package/Lights/spotLight.d.ts +6 -3
  72. package/Lights/spotLight.js.map +1 -1
  73. package/Materials/PBR/pbrBaseMaterial.js +1 -1
  74. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  75. package/Materials/materialHelper.functions.d.ts +2 -1
  76. package/Materials/materialHelper.functions.js +9 -3
  77. package/Materials/materialHelper.functions.js.map +1 -1
  78. package/Materials/standardMaterial.js +2 -2
  79. package/Materials/standardMaterial.js.map +1 -1
  80. package/Materials/uniformBuffer.d.ts +1 -1
  81. package/Materials/uniformBuffer.js +2 -2
  82. package/Materials/uniformBuffer.js.map +1 -1
  83. package/Meshes/abstractMesh.d.ts +4 -0
  84. package/Meshes/abstractMesh.js +4 -0
  85. package/Meshes/abstractMesh.js.map +1 -1
  86. package/Meshes/csg2.js +1 -1
  87. package/Meshes/csg2.js.map +1 -1
  88. package/Meshes/geometry.js +1 -1
  89. package/Meshes/geometry.js.map +1 -1
  90. package/Meshes/mesh.js +2 -7
  91. package/Meshes/mesh.js.map +1 -1
  92. package/Misc/dumpTools.d.ts +1 -1
  93. package/Misc/dumpTools.js +23 -14
  94. package/Misc/dumpTools.js.map +1 -1
  95. package/Misc/fileTools.js +7 -0
  96. package/Misc/fileTools.js.map +1 -1
  97. package/Misc/index.d.ts +1 -0
  98. package/Misc/index.js +1 -0
  99. package/Misc/index.js.map +1 -1
  100. package/Misc/lazy.d.ts +16 -0
  101. package/Misc/lazy.js +25 -0
  102. package/Misc/lazy.js.map +1 -0
  103. package/Morph/morphTargetManager.d.ts +4 -0
  104. package/Morph/morphTargetManager.js +12 -0
  105. package/Morph/morphTargetManager.js.map +1 -1
  106. package/Particles/Node/Blocks/Emitters/createParticleBlock.d.ts +4 -0
  107. package/Particles/Node/Blocks/Emitters/createParticleBlock.js +13 -2
  108. package/Particles/Node/Blocks/Emitters/createParticleBlock.js.map +1 -1
  109. package/Particles/Node/Blocks/Emitters/meshShapeBlock.d.ts +4 -0
  110. package/Particles/Node/Blocks/Emitters/meshShapeBlock.js +18 -0
  111. package/Particles/Node/Blocks/Emitters/meshShapeBlock.js.map +1 -1
  112. package/Particles/Node/Blocks/Update/basicColorUpdateBlock.d.ts +31 -0
  113. package/Particles/Node/Blocks/Update/basicColorUpdateBlock.js +67 -0
  114. package/Particles/Node/Blocks/Update/basicColorUpdateBlock.js.map +1 -0
  115. package/Particles/Node/Blocks/index.d.ts +1 -0
  116. package/Particles/Node/Blocks/index.js +1 -0
  117. package/Particles/Node/Blocks/index.js.map +1 -1
  118. package/Particles/Node/Blocks/particleInputBlock.js +2 -0
  119. package/Particles/Node/Blocks/particleInputBlock.js.map +1 -1
  120. package/Particles/Node/Blocks/particleSourceTextureBlock.d.ts +2 -2
  121. package/Particles/Node/Blocks/particleSourceTextureBlock.js +3 -3
  122. package/Particles/Node/Blocks/particleSourceTextureBlock.js.map +1 -1
  123. package/Particles/Node/Enums/nodeParticleContextualSources.d.ts +5 -1
  124. package/Particles/Node/Enums/nodeParticleContextualSources.js +4 -0
  125. package/Particles/Node/Enums/nodeParticleContextualSources.js.map +1 -1
  126. package/Particles/Node/nodeParticleBuildState.js +4 -0
  127. package/Particles/Node/nodeParticleBuildState.js.map +1 -1
  128. package/Particles/Node/nodeParticleSystemSet.helper.d.ts +2 -1
  129. package/Particles/Node/nodeParticleSystemSet.helper.js +88 -61
  130. package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
  131. package/Particles/gpuParticleSystem.d.ts +4 -0
  132. package/Particles/gpuParticleSystem.js +10 -0
  133. package/Particles/gpuParticleSystem.js.map +1 -1
  134. package/Particles/particle.d.ts +4 -0
  135. package/Particles/particle.js +5 -0
  136. package/Particles/particle.js.map +1 -1
  137. package/Particles/particleSystem.d.ts +4 -0
  138. package/Particles/particleSystem.js +10 -0
  139. package/Particles/particleSystem.js.map +1 -1
  140. package/Rendering/objectRenderer.d.ts +17 -3
  141. package/Rendering/objectRenderer.js +111 -26
  142. package/Rendering/objectRenderer.js.map +1 -1
  143. package/Shaders/ShadersInclude/clusteredLightingFunctions.d.ts +5 -0
  144. package/Shaders/ShadersInclude/clusteredLightingFunctions.js +18 -0
  145. package/Shaders/ShadersInclude/clusteredLightingFunctions.js.map +1 -0
  146. package/Shaders/ShadersInclude/helperFunctions.js +5 -1
  147. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  148. package/Shaders/ShadersInclude/lightFragment.js +33 -1
  149. package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
  150. package/Shaders/ShadersInclude/lightFragmentDeclaration.js +3 -0
  151. package/Shaders/ShadersInclude/lightFragmentDeclaration.js.map +1 -1
  152. package/Shaders/ShadersInclude/lightUboDeclaration.js +5 -0
  153. package/Shaders/ShadersInclude/lightUboDeclaration.js.map +1 -1
  154. package/Shaders/ShadersInclude/lightVxUboDeclaration.js +2 -0
  155. package/Shaders/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  156. package/Shaders/ShadersInclude/lightsFragmentFunctions.d.ts +1 -0
  157. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +20 -0
  158. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  159. package/Shaders/ShadersInclude/pbrBlockPrePass.js +3 -1
  160. package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  161. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.d.ts +7 -0
  162. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js +125 -0
  163. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js.map +1 -0
  164. package/Shaders/default.fragment.js +2 -0
  165. package/Shaders/default.fragment.js.map +1 -1
  166. package/Shaders/lightProxy.fragment.d.ts +5 -0
  167. package/Shaders/lightProxy.fragment.js +13 -0
  168. package/Shaders/lightProxy.fragment.js.map +1 -0
  169. package/Shaders/lightProxy.vertex.d.ts +8 -0
  170. package/Shaders/lightProxy.vertex.js +19 -0
  171. package/Shaders/lightProxy.vertex.js.map +1 -0
  172. package/Shaders/pbr.fragment.d.ts +1 -0
  173. package/Shaders/pbr.fragment.js +4 -0
  174. package/Shaders/pbr.fragment.js.map +1 -1
  175. package/ShadersWGSL/ShadersInclude/clusteredLightingFunctions.d.ts +5 -0
  176. package/ShadersWGSL/ShadersInclude/clusteredLightingFunctions.js +23 -0
  177. package/ShadersWGSL/ShadersInclude/clusteredLightingFunctions.js.map +1 -0
  178. package/ShadersWGSL/ShadersInclude/lightFragment.js +33 -1
  179. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  180. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js +5 -0
  181. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js.map +1 -1
  182. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js +2 -0
  183. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  184. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.d.ts +1 -0
  185. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +21 -1
  186. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  187. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +3 -1
  188. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  189. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.d.ts +2 -0
  190. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +114 -0
  191. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  192. package/ShadersWGSL/default.fragment.js +2 -0
  193. package/ShadersWGSL/default.fragment.js.map +1 -1
  194. package/ShadersWGSL/lightProxy.fragment.d.ts +5 -0
  195. package/ShadersWGSL/lightProxy.fragment.js +13 -0
  196. package/ShadersWGSL/lightProxy.fragment.js.map +1 -0
  197. package/ShadersWGSL/lightProxy.vertex.d.ts +7 -0
  198. package/ShadersWGSL/lightProxy.vertex.js +19 -0
  199. package/ShadersWGSL/lightProxy.vertex.js.map +1 -0
  200. package/package.json +1 -1
  201. package/scene.d.ts +1 -0
  202. package/scene.js +140 -30
  203. package/scene.js.map +1 -1
  204. package/sceneComponent.d.ts +2 -0
  205. package/sceneComponent.js +2 -0
  206. package/sceneComponent.js.map +1 -1
@@ -999,6 +999,13 @@ export declare class WebGPUEngine extends ThinWebGPUEngine {
999
999
  * @returns the new buffer
1000
1000
  */
1001
1001
  createStorageBuffer(data: DataArray | number, creationFlags: number, label?: string): DataBuffer;
1002
+ /**
1003
+ * Clears a storage buffer to zeroes
1004
+ * @param storageBuffer the storage buffer to clear
1005
+ * @param byteOffset the byte offset to start clearing (optional)
1006
+ * @param byteLength the byte length to clear (optional)
1007
+ */
1008
+ clearStorageBuffer(storageBuffer: DataBuffer, byteOffset?: number, byteLength?: number): void;
1002
1009
  /**
1003
1010
  * Updates a storage buffer
1004
1011
  * @param buffer the storage buffer to update
@@ -579,6 +579,7 @@ export class WebGPUEngine extends ThinWebGPUEngine {
579
579
  maxVaryingVectors: this._deviceLimits.maxInterStageShaderVariables,
580
580
  maxFragmentUniformVectors: Math.floor(this._deviceLimits.maxUniformBufferBindingSize / 4),
581
581
  maxVertexUniformVectors: Math.floor(this._deviceLimits.maxUniformBufferBindingSize / 4),
582
+ shaderFloatPrecision: 23, // WGSL always uses IEEE-754 binary32 floats (which have 23 bits of significand)
582
583
  standardDerivatives: true,
583
584
  astc: (this._deviceEnabledExtensions.indexOf("texture-compression-astc" /* WebGPUConstants.FeatureName.TextureCompressionASTC */) >= 0 ? true : undefined),
584
585
  s3tc: (this._deviceEnabledExtensions.indexOf("texture-compression-bc" /* WebGPUConstants.FeatureName.TextureCompressionBC */) >= 0 ? true : undefined),
@@ -591,6 +592,7 @@ export class WebGPUEngine extends ThinWebGPUEngine {
591
592
  fragmentDepthSupported: true,
592
593
  highPrecisionShaderSupported: true,
593
594
  colorBufferFloat: true,
595
+ blendFloat: this._deviceEnabledExtensions.indexOf("float32-blendable" /* WebGPUConstants.FeatureName.Float32Blendable */) >= 0,
594
596
  supportFloatTexturesResolve: false, // See https://github.com/gpuweb/gpuweb/issues/3844
595
597
  rg11b10ufColorRenderable: this._deviceEnabledExtensions.indexOf("rg11b10ufloat-renderable" /* WebGPUConstants.FeatureName.RG11B10UFloatRenderable */) >= 0,
596
598
  textureFloat: true,
@@ -2917,7 +2919,7 @@ export class WebGPUEngine extends ThinWebGPUEngine {
2917
2919
  }
2918
2920
  // draw
2919
2921
  const nonCompatMode = !this.compatibilityMode && !this._snapshotRendering.record;
2920
- if (this._currentDrawContext.indirectDrawBuffer) {
2922
+ if ((nonCompatMode || this._currentDrawContext._enableIndirectDrawInCompatMode) && this._currentDrawContext.indirectDrawBuffer) {
2921
2923
  this._currentDrawContext.setIndirectData(count, instancesCount || 1, start);
2922
2924
  if (drawType === 0) {
2923
2925
  renderPass2.drawIndexedIndirect(this._currentDrawContext.indirectDrawBuffer, 0);
@@ -3061,6 +3063,15 @@ export class WebGPUEngine extends ThinWebGPUEngine {
3061
3063
  createStorageBuffer(data, creationFlags, label) {
3062
3064
  return this._createBuffer(data, creationFlags | 32, label);
3063
3065
  }
3066
+ /**
3067
+ * Clears a storage buffer to zeroes
3068
+ * @param storageBuffer the storage buffer to clear
3069
+ * @param byteOffset the byte offset to start clearing (optional)
3070
+ * @param byteLength the byte length to clear (optional)
3071
+ */
3072
+ clearStorageBuffer(storageBuffer, byteOffset, byteLength) {
3073
+ this._renderEncoder.clearBuffer(storageBuffer.underlyingResource, byteOffset, byteLength);
3074
+ }
3064
3075
  /**
3065
3076
  * Updates a storage buffer
3066
3077
  * @param buffer the storage buffer to update