@babylonjs/core 8.43.0 → 8.44.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 (111) hide show
  1. package/Engines/WebGPU/Extensions/engine.multiRender.js +5 -10
  2. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  3. package/Engines/WebGPU/Extensions/engine.renderTarget.js +4 -2
  4. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  5. package/Engines/WebGPU/webgpuDrawContext.d.ts +8 -0
  6. package/Engines/WebGPU/webgpuDrawContext.js +8 -0
  7. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  8. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +4 -3
  9. package/Engines/WebGPU/webgpuHardwareTexture.js +27 -21
  10. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  11. package/Engines/WebGPU/webgpuTextureManager.d.ts +5 -4
  12. package/Engines/WebGPU/webgpuTextureManager.js +20 -30
  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/Engines/engine.d.ts +1 -0
  17. package/Engines/thinEngine.js +9 -1
  18. package/Engines/thinEngine.js.map +1 -1
  19. package/Engines/thinWebGPUEngine.js +2 -3
  20. package/Engines/thinWebGPUEngine.js.map +1 -1
  21. package/Engines/webgpuEngine.js +28 -13
  22. package/Engines/webgpuEngine.js.map +1 -1
  23. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +2 -2
  24. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  25. package/FrameGraph/Node/Blocks/Textures/clearBlock.d.ts +1 -1
  26. package/FrameGraph/Node/Blocks/Textures/clearBlock.js +2 -2
  27. package/FrameGraph/Node/Blocks/Textures/clearBlock.js.map +1 -1
  28. package/FrameGraph/Node/Blocks/inputBlock.js +4 -0
  29. package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -1
  30. package/FrameGraph/Node/nodeRenderGraphBlock.d.ts +1 -0
  31. package/FrameGraph/Node/nodeRenderGraphBlock.js +19 -0
  32. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  33. package/FrameGraph/Passes/renderPass.d.ts +16 -0
  34. package/FrameGraph/Passes/renderPass.js +12 -0
  35. package/FrameGraph/Passes/renderPass.js.map +1 -1
  36. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +3 -3
  37. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -2
  38. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  39. package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +2 -2
  40. package/FrameGraph/Tasks/Texture/clearTextureTask.js +3 -2
  41. package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
  42. package/FrameGraph/frameGraphRenderContext.js +4 -15
  43. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  44. package/FrameGraph/frameGraphTask.d.ts +2 -2
  45. package/FrameGraph/frameGraphTask.js +6 -6
  46. package/FrameGraph/frameGraphTask.js.map +1 -1
  47. package/FrameGraph/frameGraphTaskMultiRenderTarget.d.ts +15 -0
  48. package/FrameGraph/frameGraphTaskMultiRenderTarget.js +25 -0
  49. package/FrameGraph/frameGraphTaskMultiRenderTarget.js.map +1 -0
  50. package/FrameGraph/frameGraphTextureManager.js +13 -2
  51. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  52. package/FrameGraph/frameGraphTypes.d.ts +9 -1
  53. package/FrameGraph/frameGraphTypes.js.map +1 -1
  54. package/Materials/Textures/textureCreationOptions.d.ts +2 -0
  55. package/Materials/Textures/textureCreationOptions.js +0 -1
  56. package/Materials/Textures/textureCreationOptions.js.map +1 -1
  57. package/Materials/index.d.ts +1 -0
  58. package/Materials/index.js +1 -0
  59. package/Materials/index.js.map +1 -1
  60. package/Materials/shaderMaterial.d.ts +1 -0
  61. package/Materials/shaderMaterial.js +22 -7
  62. package/Materials/shaderMaterial.js.map +1 -1
  63. package/Materials/vertexPullingHelper.functions.d.ts +32 -0
  64. package/Materials/vertexPullingHelper.functions.js +60 -0
  65. package/Materials/vertexPullingHelper.functions.js.map +1 -0
  66. package/Meshes/abstractMesh.js +1 -1
  67. package/Meshes/abstractMesh.js.map +1 -1
  68. package/Meshes/geometry.js +1 -0
  69. package/Meshes/geometry.js.map +1 -1
  70. package/Particles/solidParticleSystem.d.ts +2 -1
  71. package/Particles/solidParticleSystem.js.map +1 -1
  72. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +4 -0
  73. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  74. package/Shaders/ShadersInclude/lightFragment.js +7 -5
  75. package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
  76. package/Shaders/ShadersInclude/lightUboDeclaration.js +1 -1
  77. package/Shaders/ShadersInclude/lightUboDeclaration.js.map +1 -1
  78. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js +1 -1
  79. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js.map +1 -1
  80. package/Shaders/ShadersInclude/lightVxUboDeclaration.js +1 -1
  81. package/Shaders/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  82. package/Shaders/ShadersInclude/openpbrDirectLighting.js +4 -4
  83. package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  84. package/Shaders/ShadersInclude/openpbrDirectLightingInit.js +4 -2
  85. package/Shaders/ShadersInclude/openpbrDirectLightingInit.js.map +1 -1
  86. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +4 -12
  87. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
  88. package/Shaders/picking.vertex.js +2 -2
  89. package/Shaders/picking.vertex.js.map +1 -1
  90. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +2 -2
  91. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
  92. package/ShadersWGSL/ShadersInclude/lightFragment.js +6 -4
  93. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  94. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js +1 -1
  95. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js.map +1 -1
  96. package/ShadersWGSL/ShadersInclude/lightVxFragmentDeclaration.js +1 -1
  97. package/ShadersWGSL/ShadersInclude/lightVxFragmentDeclaration.js.map +1 -1
  98. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js +1 -1
  99. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  100. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +4 -4
  101. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  102. package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js +4 -2
  103. package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js.map +1 -1
  104. package/ShadersWGSL/ShadersInclude/shadowsFragmentFunctions.js +8 -14
  105. package/ShadersWGSL/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
  106. package/ShadersWGSL/iblVoxelGrid.vertex.d.ts +2 -0
  107. package/ShadersWGSL/iblVoxelGrid.vertex.js +78 -8
  108. package/ShadersWGSL/iblVoxelGrid.vertex.js.map +1 -1
  109. package/ShadersWGSL/picking.vertex.js +2 -2
  110. package/ShadersWGSL/picking.vertex.js.map +1 -1
  111. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,iCAAiC,CAAC;AAChD,OAAO,qBAAqB,CAAC;AAE7B,uBAAuB;AAEvB,mBAAmB;AACnB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAE9C,2BAA2B;AAC3B,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./Background/index\";\r\nexport * from \"./colorCurves\";\r\nexport * from \"./iEffectFallbacks\";\r\nexport * from \"./effectFallbacks\";\r\nexport * from \"./effect\";\r\nexport * from \"./fresnelParameters\";\r\nexport * from \"./imageProcessing\";\r\nexport * from \"./imageProcessingConfiguration\";\r\nexport * from \"./material\";\r\nexport * from \"./materialDefines\";\r\nexport * from \"./clipPlaneMaterialHelper\";\r\nexport * from \"./materialHelper\";\r\nexport * from \"./multiMaterial\";\r\nexport * from \"./Occlusion/index\";\r\nexport * from \"./PBR/index\";\r\nexport * from \"./pushMaterial\";\r\nexport * from \"./shaderLanguage\";\r\nexport * from \"./shaderMaterial\";\r\nexport * from \"./standardMaterial\";\r\nexport * from \"./Textures/index\";\r\nexport * from \"./uniformBuffer\";\r\nexport * from \"./materialFlags\";\r\nexport * from \"./Node/index\";\r\nexport * from \"./effectRenderer\";\r\nexport * from \"./shadowDepthWrapper\";\r\nexport * from \"./drawWrapper.functions\";\r\nexport * from \"./drawWrapper\";\r\nexport * from \"./materialPluginBase\";\r\nexport * from \"./materialPluginManager\";\r\nexport * from \"./materialPluginEvent\";\r\nexport * from \"./material.detailMapConfiguration\";\r\nexport * from \"./material.decalMapConfiguration\";\r\nexport * from \"./materialPluginFactoryExport\";\r\nexport * from \"./GreasedLine/greasedLinePluginMaterial\";\r\nexport * from \"./GreasedLine/greasedLineSimpleMaterial\";\r\nexport * from \"./GreasedLine/greasedLineMaterialInterfaces\";\r\nexport * from \"./GreasedLine/greasedLineMaterialDefaults\";\r\nexport * from \"./meshDebugPluginMaterial\";\r\nexport * from \"./GaussianSplatting/gaussianSplattingMaterial\";\r\nexport * from \"./materialHelper.functions\";\r\nexport * from \"./materialHelper.geometryrendering\";\r\nexport * from \"./materialStencilState\";\r\nexport * from \"./uv.defines\";\r\nexport * from \"./floatingOriginMatrixOverrides\";\r\nimport \"./material.decalMap\";\r\n\r\n// async-loaded shaders\r\n\r\n// StandardMaterial\r\nexport * from \"../Shaders/default.fragment\";\r\nexport * from \"../Shaders/default.vertex\";\r\nexport * from \"../ShadersWGSL/default.fragment\";\r\nexport * from \"../ShadersWGSL/default.vertex\";\r\n\r\n// GreasedLineSimplMaterial\r\nexport * from \"../Shaders/greasedLine.fragment\";\r\nexport * from \"../Shaders/greasedLine.vertex\";\r\nexport * from \"../ShadersWGSL/greasedLine.fragment\";\r\nexport * from \"../ShadersWGSL/greasedLine.vertex\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,OAAO,qBAAqB,CAAC;AAE7B,uBAAuB;AAEvB,mBAAmB;AACnB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAE9C,2BAA2B;AAC3B,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./Background/index\";\r\nexport * from \"./colorCurves\";\r\nexport * from \"./iEffectFallbacks\";\r\nexport * from \"./effectFallbacks\";\r\nexport * from \"./effect\";\r\nexport * from \"./fresnelParameters\";\r\nexport * from \"./imageProcessing\";\r\nexport * from \"./imageProcessingConfiguration\";\r\nexport * from \"./material\";\r\nexport * from \"./materialDefines\";\r\nexport * from \"./clipPlaneMaterialHelper\";\r\nexport * from \"./materialHelper\";\r\nexport * from \"./multiMaterial\";\r\nexport * from \"./Occlusion/index\";\r\nexport * from \"./PBR/index\";\r\nexport * from \"./pushMaterial\";\r\nexport * from \"./shaderLanguage\";\r\nexport * from \"./shaderMaterial\";\r\nexport * from \"./standardMaterial\";\r\nexport * from \"./Textures/index\";\r\nexport * from \"./uniformBuffer\";\r\nexport * from \"./materialFlags\";\r\nexport * from \"./Node/index\";\r\nexport * from \"./effectRenderer\";\r\nexport * from \"./shadowDepthWrapper\";\r\nexport * from \"./drawWrapper.functions\";\r\nexport * from \"./drawWrapper\";\r\nexport * from \"./materialPluginBase\";\r\nexport * from \"./materialPluginManager\";\r\nexport * from \"./materialPluginEvent\";\r\nexport * from \"./material.detailMapConfiguration\";\r\nexport * from \"./material.decalMapConfiguration\";\r\nexport * from \"./materialPluginFactoryExport\";\r\nexport * from \"./GreasedLine/greasedLinePluginMaterial\";\r\nexport * from \"./GreasedLine/greasedLineSimpleMaterial\";\r\nexport * from \"./GreasedLine/greasedLineMaterialInterfaces\";\r\nexport * from \"./GreasedLine/greasedLineMaterialDefaults\";\r\nexport * from \"./meshDebugPluginMaterial\";\r\nexport * from \"./GaussianSplatting/gaussianSplattingMaterial\";\r\nexport * from \"./materialHelper.functions\";\r\nexport * from \"./materialHelper.geometryrendering\";\r\nexport * from \"./materialStencilState\";\r\nexport * from \"./uv.defines\";\r\nexport * from \"./floatingOriginMatrixOverrides\";\r\nexport * from \"./vertexPullingHelper.functions\";\r\nimport \"./material.decalMap\";\r\n\r\n// async-loaded shaders\r\n\r\n// StandardMaterial\r\nexport * from \"../Shaders/default.fragment\";\r\nexport * from \"../Shaders/default.vertex\";\r\nexport * from \"../ShadersWGSL/default.fragment\";\r\nexport * from \"../ShadersWGSL/default.vertex\";\r\n\r\n// GreasedLineSimplMaterial\r\nexport * from \"../Shaders/greasedLine.fragment\";\r\nexport * from \"../Shaders/greasedLine.vertex\";\r\nexport * from \"../ShadersWGSL/greasedLine.fragment\";\r\nexport * from \"../ShadersWGSL/greasedLine.vertex\";\r\n"]}
@@ -111,6 +111,7 @@ export declare class ShaderMaterial extends PushMaterial {
111
111
  private _cachedWorldViewMatrix;
112
112
  private _cachedWorldViewProjectionMatrix;
113
113
  private _multiview;
114
+ private _vertexPullingMetadata;
114
115
  /**
115
116
  * @internal
116
117
  */
@@ -11,6 +11,7 @@ import { EngineStore } from "../Engines/engineStore.js";
11
11
 
12
12
  import { AddClipPlaneUniforms, BindClipPlane, PrepareStringDefinesForClipPlanes } from "./clipPlaneMaterialHelper.js";
13
13
  import { BindBonesParameters, BindFogParameters, BindLogDepth, BindMorphTargetParameters, BindSceneUniformBuffer, PrepareDefinesAndAttributesForMorphTargets, PushAttributesForInstances, } from "./materialHelper.functions.js";
14
+ import { PrepareVertexPullingUniforms, BindVertexPullingUniforms } from "./vertexPullingHelper.functions.js";
14
15
  const OnCreatedEffectParameters = { effect: null, subMesh: null };
15
16
  /**
16
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.
@@ -63,6 +64,7 @@ export class ShaderMaterial extends PushMaterial {
63
64
  this._cachedWorldViewMatrix = new Matrix();
64
65
  this._cachedWorldViewProjectionMatrix = new Matrix();
65
66
  this._multiview = false;
67
+ this._vertexPullingMetadata = null;
66
68
  /**
67
69
  * @internal
68
70
  */
@@ -685,23 +687,33 @@ export class ShaderMaterial extends PushMaterial {
685
687
  uniforms.push("logarithmicDepthConstant");
686
688
  }
687
689
  }
688
- if (this.customShaderNameResolve) {
689
- uniforms = uniforms.slice();
690
- uniformBuffers = uniformBuffers.slice();
691
- samplers = samplers.slice();
692
- shaderName = this.customShaderNameResolve(this.name, uniforms, uniformBuffers, samplers, defines, attribs);
693
- }
694
690
  const renderingMesh = subMesh ? subMesh.getRenderingMesh() : mesh;
695
691
  if (renderingMesh && this.useVertexPulling) {
692
+ // Add vertex buffer metadata defines for proper stride/offset handling
693
+ const geometry = renderingMesh.geometry;
694
+ if (geometry) {
695
+ this._vertexPullingMetadata = PrepareVertexPullingUniforms(geometry);
696
+ if (this._vertexPullingMetadata) {
697
+ this._vertexPullingMetadata.forEach((_, attribute) => {
698
+ uniforms.push(`vp_${attribute}_info`);
699
+ });
700
+ }
701
+ }
696
702
  defines.push("#define USE_VERTEX_PULLING");
697
703
  const indexBuffer = renderingMesh.geometry?.getIndexBuffer();
698
- if (indexBuffer) {
704
+ if (indexBuffer && !renderingMesh.isUnIndexed) {
699
705
  defines.push("#define VERTEX_PULLING_USE_INDEX_BUFFER");
700
706
  if (indexBuffer.is32Bits) {
701
707
  defines.push("#define VERTEX_PULLING_INDEX_BUFFER_32BITS");
702
708
  }
703
709
  }
704
710
  }
711
+ if (this.customShaderNameResolve) {
712
+ uniforms = uniforms.slice();
713
+ uniformBuffers = uniformBuffers.slice();
714
+ samplers = samplers.slice();
715
+ shaderName = this.customShaderNameResolve(this.name, uniforms, uniformBuffers, samplers, defines, attribs);
716
+ }
705
717
  const drawWrapper = storeEffectOnSubMeshes ? subMesh._getDrawWrapper(undefined, true) : this._drawWrapper;
706
718
  const previousEffect = drawWrapper?.effect ?? null;
707
719
  const previousDefines = drawWrapper?.defines ?? null;
@@ -837,6 +849,9 @@ export class ShaderMaterial extends PushMaterial {
837
849
  BindBonesParameters(mesh, effect);
838
850
  // Clip plane
839
851
  BindClipPlane(effect, this, scene);
852
+ if (this._vertexPullingMetadata) {
853
+ BindVertexPullingUniforms(effect, this._vertexPullingMetadata);
854
+ }
840
855
  // Misc
841
856
  if (this._useLogarithmicDepth) {
842
857
  BindLogDepth(storeEffectOnSubMeshes ? subMesh.materialDefines : effect.defines, effect, scene);