@babylonjs/core 7.41.1 → 7.43.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 (170) hide show
  1. package/Animations/animation.js +1 -1
  2. package/Animations/animation.js.map +1 -1
  3. package/Culling/Helper/computeShaderBoundingHelper.js +3 -4
  4. package/Culling/Helper/computeShaderBoundingHelper.js.map +1 -1
  5. package/Culling/Helper/transformFeedbackBoundingHelper.js +27 -64
  6. package/Culling/Helper/transformFeedbackBoundingHelper.js.map +1 -1
  7. package/Engines/Extensions/engine.multiRender.js +3 -2
  8. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  9. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -0
  10. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -0
  11. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  12. package/Engines/WebGPU/webgpuTextureManager.js +6 -1
  13. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  14. package/Engines/abstractEngine.js +2 -2
  15. package/Engines/abstractEngine.js.map +1 -1
  16. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.d.ts +64 -0
  17. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js +147 -0
  18. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js.map +1 -0
  19. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +0 -15
  20. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  21. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.d.ts +4 -0
  22. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +9 -0
  23. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
  24. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.d.ts +1 -6
  25. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js +0 -13
  26. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js.map +1 -1
  27. package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js +0 -1
  28. package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js.map +1 -1
  29. package/FrameGraph/Node/Blocks/index.d.ts +1 -0
  30. package/FrameGraph/Node/Blocks/index.js +1 -0
  31. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  32. package/FrameGraph/Node/nodeRenderGraphBlock.js +17 -0
  33. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  34. package/FrameGraph/Passes/renderPass.d.ts +0 -8
  35. package/FrameGraph/Passes/renderPass.js +0 -10
  36. package/FrameGraph/Passes/renderPass.js.map +1 -1
  37. package/FrameGraph/Tasks/Layers/glowLayerTask.d.ts +57 -0
  38. package/FrameGraph/Tasks/Layers/glowLayerTask.js +173 -0
  39. package/FrameGraph/Tasks/Layers/glowLayerTask.js.map +1 -0
  40. package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js +1 -1
  41. package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js.map +1 -1
  42. package/FrameGraph/Tasks/PostProcesses/bloomTask.js +7 -0
  43. package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
  44. package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js +1 -1
  45. package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js.map +1 -1
  46. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +1 -1
  47. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
  48. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js +5 -5
  49. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js.map +1 -1
  50. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +12 -4
  51. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
  52. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +1 -1
  53. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
  54. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +0 -8
  55. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +1 -17
  56. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
  57. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +3 -0
  58. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  59. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +4 -6
  60. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +20 -22
  61. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  62. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.d.ts +7 -1
  63. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js +21 -5
  64. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -1
  65. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js +4 -6
  66. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js.map +1 -1
  67. package/FrameGraph/Tasks/Texture/copyToTextureTask.js +1 -1
  68. package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
  69. package/FrameGraph/frameGraph.js +22 -11
  70. package/FrameGraph/frameGraph.js.map +1 -1
  71. package/FrameGraph/frameGraphRenderContext.d.ts +2 -1
  72. package/FrameGraph/frameGraphRenderContext.js +2 -1
  73. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  74. package/FrameGraph/frameGraphTask.d.ts +11 -1
  75. package/FrameGraph/frameGraphTask.js +8 -0
  76. package/FrameGraph/frameGraphTask.js.map +1 -1
  77. package/FrameGraph/frameGraphTextureManager.d.ts +8 -2
  78. package/FrameGraph/frameGraphTextureManager.js +10 -4
  79. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  80. package/FrameGraph/index.d.ts +1 -0
  81. package/FrameGraph/index.js +1 -0
  82. package/FrameGraph/index.js.map +1 -1
  83. package/Layers/effectLayer.d.ts +32 -33
  84. package/Layers/effectLayer.js +144 -530
  85. package/Layers/effectLayer.js.map +1 -1
  86. package/Layers/glowLayer.d.ts +14 -41
  87. package/Layers/glowLayer.js +92 -178
  88. package/Layers/glowLayer.js.map +1 -1
  89. package/Layers/highlightLayer.d.ts +0 -1
  90. package/Layers/highlightLayer.js +0 -1
  91. package/Layers/highlightLayer.js.map +1 -1
  92. package/Layers/index.d.ts +2 -0
  93. package/Layers/index.js +2 -0
  94. package/Layers/index.js.map +1 -1
  95. package/Layers/thinEffectLayer.d.ts +230 -0
  96. package/Layers/thinEffectLayer.js +734 -0
  97. package/Layers/thinEffectLayer.js.map +1 -0
  98. package/Layers/thinGlowLayer.d.ts +141 -0
  99. package/Layers/thinGlowLayer.js +292 -0
  100. package/Layers/thinGlowLayer.js.map +1 -0
  101. package/Lights/Shadows/shadowGenerator.js +40 -19
  102. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  103. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js +17 -11
  104. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js.map +1 -1
  105. package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js +18 -12
  106. package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js.map +1 -1
  107. package/Materials/Node/Blocks/Input/inputBlock.js +34 -2
  108. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  109. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +34 -24
  110. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  111. package/Materials/Node/nodeMaterial.d.ts +10 -0
  112. package/Materials/Node/nodeMaterial.js +12 -0
  113. package/Materials/Node/nodeMaterial.js.map +1 -1
  114. package/Materials/PBR/pbrBaseMaterial.d.ts +5 -0
  115. package/Materials/PBR/pbrBaseMaterial.js +5 -0
  116. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  117. package/Materials/Textures/renderTargetTexture.d.ts +12 -0
  118. package/Materials/Textures/renderTargetTexture.js +29 -8
  119. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  120. package/Materials/materialHelper.functions.d.ts +17 -1
  121. package/Materials/materialHelper.functions.js +76 -4
  122. package/Materials/materialHelper.functions.js.map +1 -1
  123. package/Materials/shaderMaterial.d.ts +5 -4
  124. package/Materials/shaderMaterial.js +28 -51
  125. package/Materials/shaderMaterial.js.map +1 -1
  126. package/Materials/standardMaterial.d.ts +5 -0
  127. package/Materials/standardMaterial.js +5 -0
  128. package/Materials/standardMaterial.js.map +1 -1
  129. package/Meshes/Builders/greasedLineBuilder.d.ts +1 -1
  130. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +5 -0
  131. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +30 -22
  132. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  133. package/Meshes/GreasedLine/greasedLineBaseMesh.js +1 -0
  134. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  135. package/Meshes/abstractMesh.d.ts +1 -2
  136. package/Meshes/abstractMesh.js +1 -2
  137. package/Meshes/abstractMesh.js.map +1 -1
  138. package/Meshes/linesMesh.js +2 -2
  139. package/Meshes/linesMesh.js.map +1 -1
  140. package/Meshes/mesh.d.ts +30 -3
  141. package/Meshes/mesh.js +56 -29
  142. package/Meshes/mesh.js.map +1 -1
  143. package/Meshes/subMesh.js +16 -3
  144. package/Meshes/subMesh.js.map +1 -1
  145. package/Misc/fileTools.js +14 -7
  146. package/Misc/fileTools.js.map +1 -1
  147. package/Morph/morphTargetManager.d.ts +20 -0
  148. package/Morph/morphTargetManager.js +31 -1
  149. package/Morph/morphTargetManager.js.map +1 -1
  150. package/PostProcesses/volumetricLightScatteringPostProcess.js +15 -16
  151. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  152. package/Rendering/depthRenderer.js +13 -15
  153. package/Rendering/depthRenderer.js.map +1 -1
  154. package/Rendering/geometryBufferRenderer.js +13 -15
  155. package/Rendering/geometryBufferRenderer.js.map +1 -1
  156. package/Rendering/objectRenderer.d.ts +9 -2
  157. package/Rendering/objectRenderer.js +44 -7
  158. package/Rendering/objectRenderer.js.map +1 -1
  159. package/Rendering/outlineRenderer.js +13 -15
  160. package/Rendering/outlineRenderer.js.map +1 -1
  161. package/Shaders/ShadersInclude/morphTargetsVertex.js +16 -4
  162. package/Shaders/ShadersInclude/morphTargetsVertex.js.map +1 -1
  163. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +17 -5
  164. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
  165. package/assetContainer.d.ts +43 -0
  166. package/assetContainer.js +67 -0
  167. package/assetContainer.js.map +1 -1
  168. package/package.json +1 -1
  169. package/scene.js +10 -3
  170. package/scene.js.map +1 -1
@@ -11,7 +11,7 @@ import { PushMaterial } from "./pushMaterial.js";
11
11
  import { EngineStore } from "../Engines/engineStore.js";
12
12
 
13
13
  import { addClipPlaneUniforms, bindClipPlane, prepareStringDefinesForClipPlanes } from "./clipPlaneMaterialHelper.js";
14
- import { BindBonesParameters, BindFogParameters, BindLogDepth, BindMorphTargetParameters, BindSceneUniformBuffer, PrepareAttributesForBakedVertexAnimation, PushAttributesForInstances, } from "./materialHelper.functions.js";
14
+ import { BindBonesParameters, BindFogParameters, BindLogDepth, BindMorphTargetParameters, BindSceneUniformBuffer, PrepareAttributesForBakedVertexAnimation, PrepareDefinesAndAttributesForMorphTargets, PushAttributesForInstances, } from "./materialHelper.functions.js";
15
15
  const onCreatedEffectParameters = { effect: null, subMesh: null };
16
16
  /**
17
17
  * The ShaderMaterial object has the necessary methods to pass data from your scene to the Vertex and Fragment Shaders and returns a material that can be applied to any mesh.
@@ -510,7 +510,7 @@ export class ShaderMaterial extends PushMaterial {
510
510
  // Instances
511
511
  const defines = [];
512
512
  const attribs = [];
513
- const fallbacks = new EffectFallbacks();
513
+ let fallbacks = null;
514
514
  let shaderName = this._shaderPath, uniforms = this._options.uniforms, uniformBuffers = this._options.uniformBuffers, samplers = this._options.samplers;
515
515
  // global multiview
516
516
  if (engine.getCaps().multiview && scene.activeCamera && scene.activeCamera.outputRenderTarget && scene.activeCamera.outputRenderTarget.getViewCount() > 1) {
@@ -554,6 +554,7 @@ export class ShaderMaterial extends PushMaterial {
554
554
  }
555
555
  const skeleton = mesh.skeleton;
556
556
  defines.push("#define NUM_BONE_INFLUENCERS " + mesh.numBoneInfluencers);
557
+ fallbacks = new EffectFallbacks();
557
558
  fallbacks.addCPUSkinningFallback(0, mesh);
558
559
  if (skeleton.isUsingTextureForMatrices) {
559
560
  defines.push("#define BONETEXTURE");
@@ -578,32 +579,17 @@ export class ShaderMaterial extends PushMaterial {
578
579
  let numInfluencers = 0;
579
580
  const manager = mesh ? mesh.morphTargetManager : null;
580
581
  if (manager) {
581
- const uv = manager.supportsUVs && defines.indexOf("#define UV1") !== -1;
582
- const uv2 = manager.supportsUV2s && defines.indexOf("#define UV2") !== -1;
583
- const tangent = manager.supportsTangents && defines.indexOf("#define TANGENT") !== -1;
584
- const normal = manager.supportsNormals && defines.indexOf("#define NORMAL") !== -1;
585
- const position = manager.supportsPositions;
586
- numInfluencers = manager.numMaxInfluencers || manager.numInfluencers;
587
- if (uv) {
588
- defines.push("#define MORPHTARGETS_UV");
589
- }
590
- if (uv2) {
591
- defines.push("#define MORPHTARGETS_UV2");
592
- }
593
- if (tangent) {
594
- defines.push("#define MORPHTARGETS_TANGENT");
595
- }
596
- if (normal) {
597
- defines.push("#define MORPHTARGETS_NORMAL");
598
- }
599
- if (position) {
600
- defines.push("#define MORPHTARGETS_POSITION");
601
- }
602
- if (numInfluencers > 0) {
603
- defines.push("#define MORPHTARGETS");
604
- }
582
+ const uv = defines.indexOf("#define UV1") !== -1;
583
+ const uv2 = defines.indexOf("#define UV2") !== -1;
584
+ const tangent = defines.indexOf("#define TANGENT") !== -1;
585
+ const normal = defines.indexOf("#define NORMAL") !== -1;
586
+ numInfluencers = PrepareDefinesAndAttributesForMorphTargets(manager, defines, attribs, mesh, true, // usePositionMorph
587
+ normal, // useNormalMorph
588
+ tangent, // useTangentMorph
589
+ uv, // useUVMorph
590
+ uv2 // useUV2Morph
591
+ );
605
592
  if (manager.isUsingTextureForTargets) {
606
- defines.push("#define MORPHTARGETS_TEXTURE");
607
593
  if (uniforms.indexOf("morphTargetTextureIndices") === -1) {
608
594
  uniforms.push("morphTargetTextureIndices");
609
595
  }
@@ -611,19 +597,6 @@ export class ShaderMaterial extends PushMaterial {
611
597
  this._options.samplers.push("morphTargets");
612
598
  }
613
599
  }
614
- defines.push("#define NUM_MORPH_INFLUENCERS " + numInfluencers);
615
- for (let index = 0; index < numInfluencers; index++) {
616
- attribs.push(VertexBuffer.PositionKind + index);
617
- if (normal) {
618
- attribs.push(VertexBuffer.NormalKind + index);
619
- }
620
- if (tangent) {
621
- attribs.push(VertexBuffer.TangentKind + index);
622
- }
623
- if (uv) {
624
- attribs.push(VertexBuffer.UVKind + "_" + index);
625
- }
626
- }
627
600
  if (numInfluencers > 0) {
628
601
  uniforms = uniforms.slice();
629
602
  uniforms.push("morphTargetInfluences");
@@ -743,23 +716,24 @@ export class ShaderMaterial extends PushMaterial {
743
716
  * @param effectOverride - If provided, use this effect instead of internal effect
744
717
  */
745
718
  bindOnlyWorldMatrix(world, effectOverride) {
746
- const scene = this.getScene();
747
719
  const effect = effectOverride ?? this.getEffect();
748
720
  if (!effect) {
749
721
  return;
750
722
  }
751
- if (this._options.uniforms.indexOf("world") !== -1) {
723
+ const uniforms = this._options.uniforms;
724
+ if (uniforms.indexOf("world") !== -1) {
752
725
  effect.setMatrix("world", world);
753
726
  }
754
- if (this._options.uniforms.indexOf("worldView") !== -1) {
727
+ const scene = this.getScene();
728
+ if (uniforms.indexOf("worldView") !== -1) {
755
729
  world.multiplyToRef(scene.getViewMatrix(), this._cachedWorldViewMatrix);
756
730
  effect.setMatrix("worldView", this._cachedWorldViewMatrix);
757
731
  }
758
- if (this._options.uniforms.indexOf("worldViewProjection") !== -1) {
732
+ if (uniforms.indexOf("worldViewProjection") !== -1) {
759
733
  world.multiplyToRef(scene.getTransformMatrix(), this._cachedWorldViewProjectionMatrix);
760
734
  effect.setMatrix("worldViewProjection", this._cachedWorldViewProjectionMatrix);
761
735
  }
762
- if (this._options.uniforms.indexOf("view") !== -1) {
736
+ if (uniforms.indexOf("view") !== -1) {
763
737
  effect.setMatrix("view", scene.getViewMatrix());
764
738
  }
765
739
  }
@@ -960,9 +934,9 @@ export class ShaderMaterial extends PushMaterial {
960
934
  }
961
935
  if (effect && mesh && (mustRebind || !this.isFrozen)) {
962
936
  // Morph targets
963
- const manager = mesh.morphTargetManager;
964
- if (manager && manager.numInfluencers > 0) {
965
- BindMorphTargetParameters(mesh, effect);
937
+ BindMorphTargetParameters(mesh, effect);
938
+ if (mesh.morphTargetManager && mesh.morphTargetManager.isUsingTextureForTargets) {
939
+ mesh.morphTargetManager._bind(effect);
966
940
  }
967
941
  const bvaManager = mesh.bakedVertexAnimationManager;
968
942
  if (bvaManager && bvaManager.isEnabled) {
@@ -1235,17 +1209,20 @@ export class ShaderMaterial extends PushMaterial {
1235
1209
  // Vector2
1236
1210
  serializationObject.vectors2 = {};
1237
1211
  for (name in this._vectors2) {
1238
- serializationObject.vectors2[name] = this._vectors2[name].asArray();
1212
+ const v2 = this._vectors2[name];
1213
+ serializationObject.vectors2[name] = [v2.x, v2.y];
1239
1214
  }
1240
1215
  // Vector3
1241
1216
  serializationObject.vectors3 = {};
1242
1217
  for (name in this._vectors3) {
1243
- serializationObject.vectors3[name] = this._vectors3[name].asArray();
1218
+ const v3 = this._vectors3[name];
1219
+ serializationObject.vectors3[name] = [v3.x, v3.y, v3.z];
1244
1220
  }
1245
1221
  // Vector4
1246
1222
  serializationObject.vectors4 = {};
1247
1223
  for (name in this._vectors4) {
1248
- serializationObject.vectors4[name] = this._vectors4[name].asArray();
1224
+ const v4 = this._vectors4[name];
1225
+ serializationObject.vectors4[name] = [v4.x, v4.y, v4.z, v4.w];
1249
1226
  }
1250
1227
  // Quaternion
1251
1228
  serializationObject.quaternions = {};