@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
@@ -13,7 +13,7 @@ import { EffectFallbacks } from "../../Materials/effectFallbacks.js";
13
13
  import { RenderingManager } from "../../Rendering/renderingManager.js";
14
14
  import { DrawWrapper } from "../../Materials/drawWrapper.js";
15
15
  import { addClipPlaneUniforms, bindClipPlane, prepareStringDefinesForClipPlanes } from "../../Materials/clipPlaneMaterialHelper.js";
16
- import { BindMorphTargetParameters, BindSceneUniformBuffer, PrepareAttributesForMorphTargetsInfluencers, PushAttributesForInstances, } from "../../Materials/materialHelper.functions.js";
16
+ import { BindMorphTargetParameters, BindSceneUniformBuffer, PrepareDefinesAndAttributesForMorphTargets, PushAttributesForInstances, } from "../../Materials/materialHelper.functions.js";
17
17
  /**
18
18
  * Default implementation IShadowGenerator.
19
19
  * This is the main object responsible of generating shadows in the framework.
@@ -636,11 +636,32 @@ export class ShadowGenerator {
636
636
  }
637
637
  // Custom render function.
638
638
  this._shadowMap.customRenderFunction = (opaqueSubMeshes, alphaTestSubMeshes, transparentSubMeshes, depthOnlySubMeshes) => this._renderForShadowMap(opaqueSubMeshes, alphaTestSubMeshes, transparentSubMeshes, depthOnlySubMeshes);
639
- // Force the mesh is ready function to true as we are double checking it
639
+ // When preWarm is false, forces the mesh is ready function to true as we are double checking it
640
640
  // in the custom render function. Also it prevents side effects and useless
641
641
  // shader variations in DEPTHPREPASS mode.
642
- this._shadowMap.customIsReadyFunction = () => {
643
- return true;
642
+ this._shadowMap.customIsReadyFunction = (mesh, _refreshRate, preWarm) => {
643
+ if (!preWarm || !mesh.subMeshes) {
644
+ return true;
645
+ }
646
+ let isReady = true;
647
+ for (const subMesh of mesh.subMeshes) {
648
+ const renderingMesh = subMesh.getRenderingMesh();
649
+ const scene = this._scene;
650
+ const engine = scene.getEngine();
651
+ const material = subMesh.getMaterial();
652
+ if (!material || subMesh.verticesCount === 0 || (this.customAllowRendering && !this.customAllowRendering(subMesh))) {
653
+ continue;
654
+ }
655
+ const batch = renderingMesh._getInstancesRenderList(subMesh._id, !!subMesh.getReplacementMesh());
656
+ if (batch.mustReturn) {
657
+ continue;
658
+ }
659
+ const hardwareInstancedRendering = engine.getCaps().instancedArrays &&
660
+ ((batch.visibleInstances[subMesh._id] !== null && batch.visibleInstances[subMesh._id] !== undefined) || renderingMesh.hasThinInstances);
661
+ const isTransparent = material.needAlphaBlendingForMesh(renderingMesh);
662
+ isReady = this.isReady(subMesh, hardwareInstancedRendering, isTransparent) && isReady;
663
+ }
664
+ return isReady;
644
665
  };
645
666
  const engine = this._scene.getEngine();
646
667
  this._shadowMap.onBeforeBindObservable.add(() => {
@@ -1060,10 +1081,14 @@ export class ShadowGenerator {
1060
1081
  let cachedDefines = subMeshEffect.defines;
1061
1082
  const attribs = [VertexBuffer.PositionKind];
1062
1083
  const mesh = subMesh.getMesh();
1084
+ let useNormal = false;
1085
+ let uv1 = false;
1086
+ let uv2 = false;
1063
1087
  // Normal bias.
1064
1088
  if (this.normalBias && mesh.isVerticesDataPresent(VertexBuffer.NormalKind)) {
1065
1089
  attribs.push(VertexBuffer.NormalKind);
1066
1090
  defines.push("#define NORMAL");
1091
+ useNormal = true;
1067
1092
  if (mesh.nonUniformScaling) {
1068
1093
  defines.push("#define NONUNIFORMSCALING");
1069
1094
  }
@@ -1089,11 +1114,13 @@ export class ShadowGenerator {
1089
1114
  if (mesh.isVerticesDataPresent(VertexBuffer.UVKind)) {
1090
1115
  attribs.push(VertexBuffer.UVKind);
1091
1116
  defines.push("#define UV1");
1117
+ uv1 = true;
1092
1118
  }
1093
1119
  if (mesh.isVerticesDataPresent(VertexBuffer.UV2Kind)) {
1094
1120
  if (this._opacityTexture.coordinatesIndex === 1) {
1095
1121
  attribs.push(VertexBuffer.UV2Kind);
1096
1122
  defines.push("#define UV2");
1123
+ uv2 = true;
1097
1124
  }
1098
1125
  }
1099
1126
  }
@@ -1123,20 +1150,14 @@ export class ShadowGenerator {
1123
1150
  defines.push("#define NUM_BONE_INFLUENCERS 0");
1124
1151
  }
1125
1152
  // Morph targets
1126
- const manager = mesh.morphTargetManager;
1127
- let morphInfluencers = 0;
1128
- if (manager) {
1129
- morphInfluencers = manager.numMaxInfluencers || manager.numInfluencers;
1130
- if (morphInfluencers > 0) {
1131
- defines.push("#define MORPHTARGETS");
1132
- defines.push("#define MORPHTARGETS_POSITION");
1133
- defines.push("#define NUM_MORPH_INFLUENCERS " + morphInfluencers);
1134
- if (manager.isUsingTextureForTargets) {
1135
- defines.push("#define MORPHTARGETS_TEXTURE");
1136
- }
1137
- PrepareAttributesForMorphTargetsInfluencers(attribs, mesh, morphInfluencers);
1138
- }
1139
- }
1153
+ const numMorphInfluencers = mesh.morphTargetManager
1154
+ ? PrepareDefinesAndAttributesForMorphTargets(mesh.morphTargetManager, defines, attribs, mesh, true, // usePositionMorph
1155
+ useNormal, // useNormalMorph
1156
+ false, // useTangentMorph
1157
+ uv1, // useUVMorph
1158
+ uv2 // useUV2Morph
1159
+ )
1160
+ : 0;
1140
1161
  // ClipPlanes
1141
1162
  prepareStringDefinesForClipPlanes(material, this._scene, defines);
1142
1163
  // Instances
@@ -1226,7 +1247,7 @@ export class ShadowGenerator {
1226
1247
  fallbacks: fallbacks,
1227
1248
  onCompiled: null,
1228
1249
  onError: null,
1229
- indexParameters: { maxSimultaneousMorphTargets: morphInfluencers },
1250
+ indexParameters: { maxSimultaneousMorphTargets: numMorphInfluencers },
1230
1251
  shaderLanguage: this._shaderLanguage,
1231
1252
  }, engine);
1232
1253
  subMeshEffect.setEffect(effect, cachedDefines);