@babylonjs/core 5.30.0 → 5.31.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 (70) hide show
  1. package/Cameras/cameraInputsManager.d.ts +2 -2
  2. package/Cameras/cameraInputsManager.js +5 -4
  3. package/Cameras/cameraInputsManager.js.map +1 -1
  4. package/Engines/Processors/iShaderProcessor.d.ts +4 -0
  5. package/Engines/Processors/iShaderProcessor.js.map +1 -1
  6. package/Engines/Processors/shaderCodeNode.js +11 -2
  7. package/Engines/Processors/shaderCodeNode.js.map +1 -1
  8. package/Engines/Processors/shaderProcessor.js +4 -1
  9. package/Engines/Processors/shaderProcessor.js.map +1 -1
  10. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +6 -0
  11. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +36 -8
  12. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  13. package/Engines/nativeEngine.js +1 -0
  14. package/Engines/nativeEngine.js.map +1 -1
  15. package/Engines/thinEngine.js +2 -2
  16. package/Engines/thinEngine.js.map +1 -1
  17. package/Layers/effectLayer.js +1 -1
  18. package/Layers/effectLayer.js.map +1 -1
  19. package/Lights/Shadows/cascadedShadowGenerator.d.ts +3 -1
  20. package/Lights/Shadows/cascadedShadowGenerator.js +19 -16
  21. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  22. package/Lights/Shadows/shadowGenerator.d.ts +6 -2
  23. package/Lights/Shadows/shadowGenerator.js +32 -7
  24. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  25. package/Lights/Shadows/shadowGeneratorSceneComponent.js +16 -8
  26. package/Lights/Shadows/shadowGeneratorSceneComponent.js.map +1 -1
  27. package/Lights/light.d.ts +10 -3
  28. package/Lights/light.js +28 -6
  29. package/Lights/light.js.map +1 -1
  30. package/Lights/pointLight.js +6 -2
  31. package/Lights/pointLight.js.map +1 -1
  32. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.d.ts +3 -1
  33. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +8 -2
  34. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  35. package/Materials/Node/Blocks/PBR/anisotropyBlock.d.ts +4 -0
  36. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +11 -1
  37. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  38. package/Materials/Node/Blocks/PBR/clearCoatBlock.d.ts +1 -0
  39. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +7 -1
  40. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  41. package/Materials/materialHelper.js +2 -1
  42. package/Materials/materialHelper.js.map +1 -1
  43. package/Materials/uniformBuffer.js +1 -1
  44. package/Materials/uniformBuffer.js.map +1 -1
  45. package/Maths/math.vector.d.ts +16 -0
  46. package/Maths/math.vector.js +16 -0
  47. package/Maths/math.vector.js.map +1 -1
  48. package/Meshes/abstractMesh.js +11 -7
  49. package/Meshes/abstractMesh.js.map +1 -1
  50. package/Meshes/mesh.d.ts +2 -2
  51. package/Meshes/mesh.js +26 -18
  52. package/Meshes/mesh.js.map +1 -1
  53. package/Meshes/transformNode.d.ts +1 -1
  54. package/Meshes/transformNode.js +1 -1
  55. package/Meshes/transformNode.js.map +1 -1
  56. package/Misc/sceneRecorder.js +10 -4
  57. package/Misc/sceneRecorder.js.map +1 -1
  58. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +3 -3
  59. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  60. package/Shaders/ShadersInclude/helperFunctions.js +2 -2
  61. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  62. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +1 -1
  63. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
  64. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +3 -3
  65. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
  66. package/Shaders/fxaa.fragment.js +1 -1
  67. package/Shaders/fxaa.fragment.js.map +1 -1
  68. package/Shaders/spriteMap.fragment.js +1 -1
  69. package/Shaders/spriteMap.fragment.js.map +1 -1
  70. package/package.json +1 -1
package/Meshes/mesh.d.ts CHANGED
@@ -221,7 +221,7 @@ export declare class Mesh extends AbstractMesh implements IGetSetVerticesData {
221
221
  get hasThinInstances(): boolean;
222
222
  /**
223
223
  * Gets the delay loading state of the mesh (when delay loading is turned on)
224
- * @see https://doc.babylonjs.com/how_to/using_the_incremental_loading_system
224
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/importers/incrementalLoading
225
225
  */
226
226
  delayLoadState: number;
227
227
  /**
@@ -366,7 +366,7 @@ export declare class Mesh extends AbstractMesh implements IGetSetVerticesData {
366
366
  removeLODLevel(mesh: Mesh): Mesh;
367
367
  /**
368
368
  * Returns the registered LOD mesh distant from the parameter `camera` position if any, else returns the current mesh.
369
- * @see https://doc.babylonjs.com/how_to/how_to_use_lod
369
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/LOD
370
370
  * @param camera defines the camera to use to compute distance
371
371
  * @param boundingSphere defines a custom bounding sphere to use instead of the one from this mesh
372
372
  * @returns This mesh (for chaining)
package/Meshes/mesh.js CHANGED
@@ -105,7 +105,7 @@ export class Mesh extends AbstractMesh {
105
105
  // Members
106
106
  /**
107
107
  * Gets the delay loading state of the mesh (when delay loading is turned on)
108
- * @see https://doc.babylonjs.com/how_to/using_the_incremental_loading_system
108
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/importers/incrementalLoading
109
109
  */
110
110
  this.delayLoadState = 0;
111
111
  /**
@@ -620,7 +620,7 @@ export class Mesh extends AbstractMesh {
620
620
  }
621
621
  /**
622
622
  * Returns the registered LOD mesh distant from the parameter `camera` position if any, else returns the current mesh.
623
- * @see https://doc.babylonjs.com/how_to/how_to_use_lod
623
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/LOD
624
624
  * @param camera defines the camera to use to compute distance
625
625
  * @param boundingSphere defines a custom bounding sphere to use instead of the one from this mesh
626
626
  * @returns This mesh (for chaining)
@@ -905,18 +905,25 @@ export class Mesh extends AbstractMesh {
905
905
  // Shadows
906
906
  const currentRenderPassId = engine.currentRenderPassId;
907
907
  for (const light of this.lightSources) {
908
- const generator = light.getShadowGenerator();
909
- if (generator && (!((_a = generator.getShadowMap()) === null || _a === void 0 ? void 0 : _a.renderList) || (((_b = generator.getShadowMap()) === null || _b === void 0 ? void 0 : _b.renderList) && ((_d = (_c = generator.getShadowMap()) === null || _c === void 0 ? void 0 : _c.renderList) === null || _d === void 0 ? void 0 : _d.indexOf(this)) !== -1))) {
910
- if (generator.getShadowMap()) {
911
- engine.currentRenderPassId = generator.getShadowMap().renderPassId;
912
- }
913
- for (const subMesh of this.subMeshes) {
914
- if (!generator.isReady(subMesh, hardwareInstancedRendering, (_f = (_e = subMesh.getMaterial()) === null || _e === void 0 ? void 0 : _e.needAlphaBlendingForMesh(this)) !== null && _f !== void 0 ? _f : false)) {
915
- engine.currentRenderPassId = currentRenderPassId;
916
- return false;
908
+ const generators = light.getShadowGenerators();
909
+ if (!generators) {
910
+ continue;
911
+ }
912
+ const iterator = generators.values();
913
+ for (let key = iterator.next(); key.done !== true; key = iterator.next()) {
914
+ const generator = key.value;
915
+ if (generator && (!((_a = generator.getShadowMap()) === null || _a === void 0 ? void 0 : _a.renderList) || (((_b = generator.getShadowMap()) === null || _b === void 0 ? void 0 : _b.renderList) && ((_d = (_c = generator.getShadowMap()) === null || _c === void 0 ? void 0 : _c.renderList) === null || _d === void 0 ? void 0 : _d.indexOf(this)) !== -1))) {
916
+ if (generator.getShadowMap()) {
917
+ engine.currentRenderPassId = generator.getShadowMap().renderPassId;
918
+ }
919
+ for (const subMesh of this.subMeshes) {
920
+ if (!generator.isReady(subMesh, hardwareInstancedRendering, (_f = (_e = subMesh.getMaterial()) === null || _e === void 0 ? void 0 : _e.needAlphaBlendingForMesh(this)) !== null && _f !== void 0 ? _f : false)) {
921
+ engine.currentRenderPassId = currentRenderPassId;
922
+ return false;
923
+ }
917
924
  }
925
+ engine.currentRenderPassId = currentRenderPassId;
918
926
  }
919
- engine.currentRenderPassId = currentRenderPassId;
920
927
  }
921
928
  }
922
929
  // LOD
@@ -2148,20 +2155,21 @@ export class Mesh extends AbstractMesh {
2148
2155
  const submeshes = this.subMeshes.splice(0);
2149
2156
  this._resetPointsArrayCache();
2150
2157
  let data = this.getVerticesData(VertexBuffer.PositionKind);
2151
- let temp = new Array();
2158
+ const temp = Vector3.Zero();
2152
2159
  let index;
2153
2160
  for (index = 0; index < data.length; index += 3) {
2154
- Vector3.TransformCoordinates(Vector3.FromArray(data, index), transform).toArray(temp, index);
2161
+ Vector3.TransformCoordinatesFromFloatsToRef(data[index], data[index + 1], data[index + 2], transform, temp).toArray(data, index);
2155
2162
  }
2156
- this.setVerticesData(VertexBuffer.PositionKind, temp, this.getVertexBuffer(VertexBuffer.PositionKind).isUpdatable());
2163
+ this.setVerticesData(VertexBuffer.PositionKind, data, this.getVertexBuffer(VertexBuffer.PositionKind).isUpdatable());
2157
2164
  // Normals
2158
2165
  if (this.isVerticesDataPresent(VertexBuffer.NormalKind)) {
2159
2166
  data = this.getVerticesData(VertexBuffer.NormalKind);
2160
- temp = [];
2161
2167
  for (index = 0; index < data.length; index += 3) {
2162
- Vector3.TransformNormal(Vector3.FromArray(data, index), transform).normalize().toArray(temp, index);
2168
+ Vector3.TransformNormalFromFloatsToRef(data[index], data[index + 1], data[index + 2], transform, temp)
2169
+ .normalize()
2170
+ .toArray(data, index);
2163
2171
  }
2164
- this.setVerticesData(VertexBuffer.NormalKind, temp, this.getVertexBuffer(VertexBuffer.NormalKind).isUpdatable());
2172
+ this.setVerticesData(VertexBuffer.NormalKind, data, this.getVertexBuffer(VertexBuffer.NormalKind).isUpdatable());
2165
2173
  }
2166
2174
  // flip faces?
2167
2175
  if (transform.determinant() < 0) {