@babylonjs/core 7.3.0 → 7.3.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 (454) hide show
  1. package/Actions/condition.js.map +1 -1
  2. package/Actions/directActions.js.map +1 -1
  3. package/Actions/directAudioActions.js.map +1 -1
  4. package/Actions/interpolateValueAction.js.map +1 -1
  5. package/Animations/easing.js.map +1 -1
  6. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  7. package/Bones/bone.js.map +1 -1
  8. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  9. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  10. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  11. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js.map +1 -1
  12. package/Cameras/Stereoscopic/anaglyphFreeCamera.js.map +1 -1
  13. package/Cameras/Stereoscopic/anaglyphGamepadCamera.js.map +1 -1
  14. package/Cameras/Stereoscopic/anaglyphUniversalCamera.js.map +1 -1
  15. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js.map +1 -1
  16. package/Cameras/Stereoscopic/stereoscopicFreeCamera.js.map +1 -1
  17. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js.map +1 -1
  18. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  19. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js.map +1 -1
  20. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  21. package/Cameras/VR/vrDeviceOrientationFreeCamera.js.map +1 -1
  22. package/Cameras/VR/vrDeviceOrientationGamepadCamera.js.map +1 -1
  23. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  24. package/Cameras/arcRotateCamera.js.map +1 -1
  25. package/Cameras/camera.js.map +1 -1
  26. package/Cameras/deviceOrientationCamera.js.map +1 -1
  27. package/Cameras/flyCamera.js.map +1 -1
  28. package/Cameras/followCamera.js.map +1 -1
  29. package/Cameras/freeCamera.js.map +1 -1
  30. package/Cameras/freeCameraInputsManager.js.map +1 -1
  31. package/Cameras/gamepadCamera.js.map +1 -1
  32. package/Cameras/targetCamera.js.map +1 -1
  33. package/Cameras/touchCamera.js.map +1 -1
  34. package/Cameras/universalCamera.js.map +1 -1
  35. package/Cameras/virtualJoysticksCamera.js.map +1 -1
  36. package/Debug/boneAxesViewer.js.map +1 -1
  37. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  38. package/Engines/Processors/Expressions/Operators/shaderDefineAndOperator.js.map +1 -1
  39. package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js.map +1 -1
  40. package/Engines/Processors/Expressions/Operators/shaderDefineIsDefinedOperator.js.map +1 -1
  41. package/Engines/Processors/Expressions/Operators/shaderDefineOrOperator.js.map +1 -1
  42. package/Engines/Processors/shaderCodeConditionNode.js.map +1 -1
  43. package/Engines/Processors/shaderCodeTestNode.js.map +1 -1
  44. package/Engines/WebGL/webGLRenderTargetWrapper.js.map +1 -1
  45. package/Engines/WebGPU/Extensions/engine.rawTexture.js +10 -10
  46. package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
  47. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
  48. package/Engines/WebGPU/webgpuDepthCullingState.js.map +1 -1
  49. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +2 -0
  50. package/Engines/WebGPU/webgpuHardwareTexture.js +2 -0
  51. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  52. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  53. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  54. package/Engines/WebGPU/webgpuStencilStateComposer.js.map +1 -1
  55. package/Engines/abstractEngine.js +14 -2
  56. package/Engines/abstractEngine.js.map +1 -1
  57. package/Engines/engine.d.ts +0 -8
  58. package/Engines/engine.js +0 -28
  59. package/Engines/engine.js.map +1 -1
  60. package/Engines/nativeEngine.js.map +1 -1
  61. package/Engines/nullEngine.js.map +1 -1
  62. package/Engines/thinEngine.js.map +1 -1
  63. package/Engines/webgpuEngine.d.ts +4 -0
  64. package/Engines/webgpuEngine.js +4 -0
  65. package/Engines/webgpuEngine.js.map +1 -1
  66. package/Events/keyboardEvents.js.map +1 -1
  67. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js.map +1 -1
  68. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  69. package/FlowGraph/Blocks/Data/flowGraphConditionalDataBlock.js.map +1 -1
  70. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js.map +1 -1
  71. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.js.map +1 -1
  72. package/FlowGraph/Blocks/Data/flowGraphCoordinateTransformBlock.js.map +1 -1
  73. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js.map +1 -1
  74. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js.map +1 -1
  75. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js.map +1 -1
  76. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.js.map +1 -1
  77. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js.map +1 -1
  78. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
  79. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js.map +1 -1
  80. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js.map +1 -1
  81. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js.map +1 -1
  82. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
  83. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js.map +1 -1
  84. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.js.map +1 -1
  85. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.js.map +1 -1
  86. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphBranchBlock.js.map +1 -1
  87. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js.map +1 -1
  88. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js.map +1 -1
  89. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js.map +1 -1
  90. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.js.map +1 -1
  91. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js.map +1 -1
  92. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.js.map +1 -1
  93. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js.map +1 -1
  94. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.js.map +1 -1
  95. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js.map +1 -1
  96. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js.map +1 -1
  97. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js.map +1 -1
  98. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js.map +1 -1
  99. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -1
  100. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js.map +1 -1
  101. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js.map +1 -1
  102. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js.map +1 -1
  103. package/FlowGraph/flowGraphDataConnection.js.map +1 -1
  104. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  105. package/FlowGraph/flowGraphSignalConnection.js.map +1 -1
  106. package/Gamepads/dualShockGamepad.js.map +1 -1
  107. package/Gamepads/gamepad.js.map +1 -1
  108. package/Gamepads/xboxGamepad.js.map +1 -1
  109. package/Gizmos/axisDragGizmo.js.map +1 -1
  110. package/Gizmos/axisScaleGizmo.js.map +1 -1
  111. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  112. package/Gizmos/cameraGizmo.js.map +1 -1
  113. package/Gizmos/lightGizmo.js.map +1 -1
  114. package/Gizmos/planeDragGizmo.js.map +1 -1
  115. package/Gizmos/planeRotationGizmo.js.map +1 -1
  116. package/Gizmos/positionGizmo.js.map +1 -1
  117. package/Gizmos/rotationGizmo.js.map +1 -1
  118. package/Gizmos/scaleGizmo.js.map +1 -1
  119. package/Helpers/photoDome.js.map +1 -1
  120. package/Helpers/textureDome.js.map +1 -1
  121. package/Helpers/videoDome.js.map +1 -1
  122. package/Layers/glowLayer.js.map +1 -1
  123. package/Layers/highlightLayer.js.map +1 -1
  124. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  125. package/Lights/directionalLight.js.map +1 -1
  126. package/Lights/hemisphericLight.js.map +1 -1
  127. package/Lights/light.js.map +1 -1
  128. package/Lights/pointLight.js.map +1 -1
  129. package/Lights/shadowLight.js.map +1 -1
  130. package/Lights/spotLight.js.map +1 -1
  131. package/Materials/Background/backgroundMaterial.js.map +1 -1
  132. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
  133. package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
  134. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  135. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
  136. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  137. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  138. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  139. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  140. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  141. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  142. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  143. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  144. package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
  145. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  146. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  147. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  148. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
  149. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  150. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  151. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  152. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  153. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  154. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.js.map +1 -1
  155. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  156. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  157. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js.map +1 -1
  158. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  159. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  160. package/Materials/Node/Blocks/Input/prePassTextureBlock.js.map +1 -1
  161. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  162. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  163. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
  164. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  165. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  166. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  167. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  168. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  169. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
  170. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
  171. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  172. package/Materials/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
  173. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
  174. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  175. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  176. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  177. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  178. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  179. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  180. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  181. package/Materials/Node/Blocks/biPlanarBlock.js.map +1 -1
  182. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  183. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  184. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  185. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  186. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  187. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  188. package/Materials/Node/Blocks/curveBlock.js.map +1 -1
  189. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  190. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  191. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  192. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  193. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  194. package/Materials/Node/Blocks/elbowBlock.js.map +1 -1
  195. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  196. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  197. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  198. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  199. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  200. package/Materials/Node/Blocks/matrixDeterminantBlock.js.map +1 -1
  201. package/Materials/Node/Blocks/matrixTransposeBlock.js.map +1 -1
  202. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  203. package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
  204. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  205. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  206. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  207. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  208. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  209. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  210. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  211. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  212. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  213. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  214. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  215. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  216. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  217. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  218. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  219. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  220. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  221. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  222. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  223. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  224. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  225. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  226. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  227. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  228. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  229. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  230. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  231. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  232. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  233. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  234. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  235. package/Materials/Node/nodeMaterial.js.map +1 -1
  236. package/Materials/Node/nodeMaterialConnectionPointCustomObject.js.map +1 -1
  237. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  238. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  239. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  240. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  241. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  242. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  243. package/Materials/PBR/pbrMaterial.js.map +1 -1
  244. package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
  245. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  246. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  247. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  248. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  249. package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
  250. package/Materials/Textures/Procedurals/noiseProceduralTexture.js.map +1 -1
  251. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  252. package/Materials/Textures/baseTexture.js.map +1 -1
  253. package/Materials/Textures/colorGradingTexture.js.map +1 -1
  254. package/Materials/Textures/cubeTexture.js.map +1 -1
  255. package/Materials/Textures/dynamicTexture.js.map +1 -1
  256. package/Materials/Textures/equiRectangularCubeTexture.js +1 -1
  257. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  258. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  259. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  260. package/Materials/Textures/internalTexture.js.map +1 -1
  261. package/Materials/Textures/mirrorTexture.js.map +1 -1
  262. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  263. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  264. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  265. package/Materials/Textures/refractionTexture.js.map +1 -1
  266. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  267. package/Materials/Textures/texture.js.map +1 -1
  268. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  269. package/Materials/Textures/videoTexture.js.map +1 -1
  270. package/Materials/material.decalMapConfiguration.js.map +1 -1
  271. package/Materials/material.detailMapConfiguration.js.map +1 -1
  272. package/Materials/materialHelper.d.ts +2 -2
  273. package/Materials/materialHelper.js.map +1 -1
  274. package/Materials/meshDebugPluginMaterial.js.map +1 -1
  275. package/Materials/multiMaterial.js.map +1 -1
  276. package/Materials/pushMaterial.js.map +1 -1
  277. package/Materials/shaderMaterial.js.map +1 -1
  278. package/Materials/standardMaterial.js.map +1 -1
  279. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  280. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  281. package/Meshes/GreasedLine/greasedLineMesh.js.map +1 -1
  282. package/Meshes/GreasedLine/greasedLineRibbonMesh.js.map +1 -1
  283. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
  284. package/Meshes/Node/Blocks/Instances/instantiateBlock.js.map +1 -1
  285. package/Meshes/Node/Blocks/Instances/instantiateLinearBlock.js.map +1 -1
  286. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -1
  287. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js.map +1 -1
  288. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js.map +1 -1
  289. package/Meshes/Node/Blocks/Instances/instantiateRadialBlock.js.map +1 -1
  290. package/Meshes/Node/Blocks/Matrices/alignBlock.js.map +1 -1
  291. package/Meshes/Node/Blocks/Matrices/rotationXBlock.js.map +1 -1
  292. package/Meshes/Node/Blocks/Matrices/rotationYBlock.js.map +1 -1
  293. package/Meshes/Node/Blocks/Matrices/rotationZBlock.js.map +1 -1
  294. package/Meshes/Node/Blocks/Matrices/scalingBlock.js.map +1 -1
  295. package/Meshes/Node/Blocks/Matrices/translationBlock.js.map +1 -1
  296. package/Meshes/Node/Blocks/Set/setColorsBlock.js.map +1 -1
  297. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js.map +1 -1
  298. package/Meshes/Node/Blocks/Set/setNormalsBlock.js.map +1 -1
  299. package/Meshes/Node/Blocks/Set/setPositionsBlock.js.map +1 -1
  300. package/Meshes/Node/Blocks/Set/setTangentsBlock.js.map +1 -1
  301. package/Meshes/Node/Blocks/Set/setUVsBlock.js.map +1 -1
  302. package/Meshes/Node/Blocks/Sources/boxBlock.js.map +1 -1
  303. package/Meshes/Node/Blocks/Sources/capsuleBlock.js.map +1 -1
  304. package/Meshes/Node/Blocks/Sources/cylinderBlock.js.map +1 -1
  305. package/Meshes/Node/Blocks/Sources/discBlock.js.map +1 -1
  306. package/Meshes/Node/Blocks/Sources/gridBlock.js.map +1 -1
  307. package/Meshes/Node/Blocks/Sources/icoSphereBlock.js.map +1 -1
  308. package/Meshes/Node/Blocks/Sources/meshBlock.js.map +1 -1
  309. package/Meshes/Node/Blocks/Sources/nullBlock.js.map +1 -1
  310. package/Meshes/Node/Blocks/Sources/planeBlock.js.map +1 -1
  311. package/Meshes/Node/Blocks/Sources/sphereBlock.js.map +1 -1
  312. package/Meshes/Node/Blocks/Sources/torusBlock.js.map +1 -1
  313. package/Meshes/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
  314. package/Meshes/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
  315. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
  316. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js.map +1 -1
  317. package/Meshes/Node/Blocks/booleanGeometryBlock.js.map +1 -1
  318. package/Meshes/Node/Blocks/boundingBlock.js.map +1 -1
  319. package/Meshes/Node/Blocks/computeNormalsBlock.js.map +1 -1
  320. package/Meshes/Node/Blocks/conditionBlock.js.map +1 -1
  321. package/Meshes/Node/Blocks/debugBlock.js.map +1 -1
  322. package/Meshes/Node/Blocks/geometryArcTan2Block.js.map +1 -1
  323. package/Meshes/Node/Blocks/geometryClampBlock.js.map +1 -1
  324. package/Meshes/Node/Blocks/geometryCollectionBlock.js.map +1 -1
  325. package/Meshes/Node/Blocks/geometryCrossBlock.js.map +1 -1
  326. package/Meshes/Node/Blocks/geometryCurveBlock.js.map +1 -1
  327. package/Meshes/Node/Blocks/geometryDesaturateBlock.js.map +1 -1
  328. package/Meshes/Node/Blocks/geometryDistanceBlock.js.map +1 -1
  329. package/Meshes/Node/Blocks/geometryDotBlock.js.map +1 -1
  330. package/Meshes/Node/Blocks/geometryElbowBlock.js.map +1 -1
  331. package/Meshes/Node/Blocks/geometryInfoBlock.js.map +1 -1
  332. package/Meshes/Node/Blocks/geometryInputBlock.js.map +1 -1
  333. package/Meshes/Node/Blocks/geometryLengthBlock.js.map +1 -1
  334. package/Meshes/Node/Blocks/geometryLerpBlock.js.map +1 -1
  335. package/Meshes/Node/Blocks/geometryModBlock.js.map +1 -1
  336. package/Meshes/Node/Blocks/geometryNLerpBlock.js.map +1 -1
  337. package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
  338. package/Meshes/Node/Blocks/geometryOutputBlock.js.map +1 -1
  339. package/Meshes/Node/Blocks/geometryPosterizeBlock.js.map +1 -1
  340. package/Meshes/Node/Blocks/geometryPowBlock.js.map +1 -1
  341. package/Meshes/Node/Blocks/geometryReplaceColorBlock.js.map +1 -1
  342. package/Meshes/Node/Blocks/geometryRotate2dBlock.js.map +1 -1
  343. package/Meshes/Node/Blocks/geometrySmoothStepBlock.js.map +1 -1
  344. package/Meshes/Node/Blocks/geometryStepBlock.js.map +1 -1
  345. package/Meshes/Node/Blocks/geometryTransformBlock.js.map +1 -1
  346. package/Meshes/Node/Blocks/geometryTrigonometryBlock.js.map +1 -1
  347. package/Meshes/Node/Blocks/intFloatConverterBlock.js.map +1 -1
  348. package/Meshes/Node/Blocks/mapRangeBlock.js.map +1 -1
  349. package/Meshes/Node/Blocks/mappingBlock.js.map +1 -1
  350. package/Meshes/Node/Blocks/mathBlock.js.map +1 -1
  351. package/Meshes/Node/Blocks/matrixComposeBlock.js.map +1 -1
  352. package/Meshes/Node/Blocks/mergeGeometryBlock.js.map +1 -1
  353. package/Meshes/Node/Blocks/noiseBlock.js.map +1 -1
  354. package/Meshes/Node/Blocks/normalizeVectorBlock.js.map +1 -1
  355. package/Meshes/Node/Blocks/randomBlock.js.map +1 -1
  356. package/Meshes/Node/Blocks/vectorConverterBlock.js.map +1 -1
  357. package/Meshes/WebGL/webGLDataBuffer.js.map +1 -1
  358. package/Meshes/WebGPU/webgpuDataBuffer.js.map +1 -1
  359. package/Meshes/abstractMesh.js.map +1 -1
  360. package/Meshes/geodesicMesh.js.map +1 -1
  361. package/Meshes/goldbergMesh.js.map +1 -1
  362. package/Meshes/groundMesh.js.map +1 -1
  363. package/Meshes/instancedMesh.js.map +1 -1
  364. package/Meshes/linesMesh.js.map +1 -1
  365. package/Meshes/mesh.js.map +1 -1
  366. package/Meshes/trailMesh.js.map +1 -1
  367. package/Meshes/transformNode.js.map +1 -1
  368. package/Misc/assetsManager.js.map +1 -1
  369. package/Misc/depthReducer.js.map +1 -1
  370. package/Misc/sceneOptimizer.js.map +1 -1
  371. package/Misc/smartArray.js.map +1 -1
  372. package/Misc/workerPool.js.map +1 -1
  373. package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
  374. package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
  375. package/Particles/gpuParticleSystem.js.map +1 -1
  376. package/Particles/particleSystem.js.map +1 -1
  377. package/Particles/thinParticleSystem.js.map +1 -1
  378. package/Physics/physicsRaycastResult.js.map +1 -1
  379. package/Physics/proximityCastResult.js.map +1 -1
  380. package/Physics/v1/physicsJoint.js.map +1 -1
  381. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  382. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
  383. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  384. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  385. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  386. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  387. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.js.map +1 -1
  388. package/PostProcesses/anaglyphPostProcess.js.map +1 -1
  389. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  390. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  391. package/PostProcesses/blurPostProcess.js.map +1 -1
  392. package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
  393. package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
  394. package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
  395. package/PostProcesses/convolutionPostProcess.js.map +1 -1
  396. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  397. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  398. package/PostProcesses/displayPassPostProcess.js.map +1 -1
  399. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  400. package/PostProcesses/filterPostProcess.js.map +1 -1
  401. package/PostProcesses/fxaaPostProcess.js.map +1 -1
  402. package/PostProcesses/grainPostProcess.js.map +1 -1
  403. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  404. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  405. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  406. package/PostProcesses/passPostProcess.js.map +1 -1
  407. package/PostProcesses/refractionPostProcess.js.map +1 -1
  408. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  409. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  410. package/PostProcesses/sharpenPostProcess.js.map +1 -1
  411. package/PostProcesses/stereoscopicInterlacePostProcess.js.map +1 -1
  412. package/PostProcesses/subSurfaceScatteringPostProcess.js.map +1 -1
  413. package/PostProcesses/tonemapPostProcess.js.map +1 -1
  414. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  415. package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
  416. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
  417. package/Rendering/GlobalIllumination/giRSMManager.js.map +1 -1
  418. package/Rendering/edgesRenderer.js.map +1 -1
  419. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  420. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  421. package/Rendering/reflectiveShadowMap.js.map +1 -1
  422. package/Sprites/sprite.js.map +1 -1
  423. package/Sprites/spritePackedManager.js.map +1 -1
  424. package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
  425. package/XR/features/Layers/WebXRProjectionLayer.js.map +1 -1
  426. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  427. package/XR/features/WebXRBackgroundRemover.js.map +1 -1
  428. package/XR/features/WebXRControllerMovement.js.map +1 -1
  429. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  430. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  431. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  432. package/XR/features/WebXRDOMOverlay.js.map +1 -1
  433. package/XR/features/WebXRDepthSensing.js.map +1 -1
  434. package/XR/features/WebXREyeTracking.js.map +1 -1
  435. package/XR/features/WebXRFeaturePointSystem.js.map +1 -1
  436. package/XR/features/WebXRHandTracking.js.map +1 -1
  437. package/XR/features/WebXRHitTest.js.map +1 -1
  438. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  439. package/XR/features/WebXRImageTracking.js.map +1 -1
  440. package/XR/features/WebXRLayers.js.map +1 -1
  441. package/XR/features/WebXRLightEstimation.js.map +1 -1
  442. package/XR/features/WebXRMeshDetector.js.map +1 -1
  443. package/XR/features/WebXRNearInteraction.js.map +1 -1
  444. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  445. package/XR/features/WebXRRawCameraAccess.js.map +1 -1
  446. package/XR/features/WebXRSpaceWarp.js.map +1 -1
  447. package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
  448. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  449. package/XR/native/nativeXRRenderTarget.js.map +1 -1
  450. package/XR/webXRCamera.js.map +1 -1
  451. package/XR/webXRWebGLLayer.js.map +1 -1
  452. package/assets/Draco/draco_wasm_wrapper.js +115 -115
  453. package/package.json +1 -1
  454. package/scene.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"multiMaterial.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/multiMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport type { SubMesh } from \"../Meshes/subMesh\";\r\nimport type { BaseTexture } from \"../Materials/Textures/baseTexture\";\r\nimport { Material } from \"../Materials/material\";\r\nimport { Tags } from \"../Misc/tags\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\n/**\r\n * A multi-material is used to apply different materials to different parts of the same object without the need of\r\n * separate meshes. This can be use to improve performances.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/multiMaterials\r\n */\r\nexport class MultiMaterial extends Material {\r\n private _subMaterials: Nullable<Material>[];\r\n /** @internal */\r\n public _waitingSubMaterialsUniqueIds: string[] = [];\r\n\r\n /**\r\n * Gets or Sets the list of Materials used within the multi material.\r\n * They need to be ordered according to the submeshes order in the associated mesh\r\n */\r\n public get subMaterials(): Nullable<Material>[] {\r\n return this._subMaterials;\r\n }\r\n\r\n public set subMaterials(value: Nullable<Material>[]) {\r\n this._subMaterials = value;\r\n this._hookArray(value);\r\n }\r\n\r\n /**\r\n * Function used to align with Node.getChildren()\r\n * @returns the list of Materials used within the multi material\r\n */\r\n public getChildren(): Nullable<Material>[] {\r\n return this.subMaterials;\r\n }\r\n\r\n /**\r\n * Instantiates a new Multi Material\r\n * A multi-material is used to apply different materials to different parts of the same object without the need of\r\n * separate meshes. This can be use to improve performances.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/multiMaterials\r\n * @param name Define the name in the scene\r\n * @param scene Define the scene the material belongs to\r\n */\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene, true);\r\n\r\n this.getScene().addMultiMaterial(this);\r\n\r\n this.subMaterials = [] as Material[];\r\n\r\n this._storeEffectOnSubMeshes = true; // multimaterial is considered like a push material\r\n }\r\n\r\n private _hookArray(array: Nullable<Material>[]): void {\r\n const oldPush = array.push;\r\n array.push = (...items: Nullable<Material>[]) => {\r\n const result = oldPush.apply(array, items);\r\n\r\n this._markAllSubMeshesAsTexturesDirty();\r\n\r\n return result;\r\n };\r\n\r\n const oldSplice = array.splice;\r\n array.splice = (index: number, deleteCount?: number) => {\r\n const deleted = oldSplice.apply(array, [index, deleteCount]);\r\n\r\n this._markAllSubMeshesAsTexturesDirty();\r\n\r\n return deleted;\r\n };\r\n }\r\n\r\n /**\r\n * Get one of the submaterial by its index in the submaterials array\r\n * @param index The index to look the sub material at\r\n * @returns The Material if the index has been defined\r\n */\r\n public getSubMaterial(index: number): Nullable<Material> {\r\n if (index < 0 || index >= this.subMaterials.length) {\r\n return this.getScene().defaultMaterial;\r\n }\r\n\r\n return this.subMaterials[index];\r\n }\r\n\r\n /**\r\n * Get the list of active textures for the whole sub materials list.\r\n * @returns All the textures that will be used during the rendering\r\n */\r\n public getActiveTextures(): BaseTexture[] {\r\n return super.getActiveTextures().concat(\r\n ...this.subMaterials.map((subMaterial) => {\r\n if (subMaterial) {\r\n return subMaterial.getActiveTextures();\r\n } else {\r\n return [];\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Specifies if any sub-materials of this multi-material use a given texture.\r\n * @param texture Defines the texture to check against this multi-material's sub-materials.\r\n * @returns A boolean specifying if any sub-material of this multi-material uses the texture.\r\n */\r\n public hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n for (let i = 0; i < this.subMaterials.length; i++) {\r\n if (this.subMaterials[i]?.hasTexture(texture)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets the current class name of the material e.g. \"MultiMaterial\"\r\n * Mainly use in serialization.\r\n * @returns the class name\r\n */\r\n public getClassName(): string {\r\n return \"MultiMaterial\";\r\n }\r\n\r\n /**\r\n * Checks if the material is ready to render the requested sub mesh\r\n * @param mesh Define the mesh the submesh belongs to\r\n * @param subMesh Define the sub mesh to look readiness for\r\n * @param useInstances Define whether or not the material is used with instances\r\n * @returns true if ready, otherwise false\r\n */\r\n public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n for (let index = 0; index < this.subMaterials.length; index++) {\r\n const subMaterial = this.subMaterials[index];\r\n if (subMaterial) {\r\n if (subMaterial._storeEffectOnSubMeshes) {\r\n if (!subMaterial.isReadyForSubMesh(mesh, subMesh, useInstances)) {\r\n return false;\r\n }\r\n continue;\r\n }\r\n\r\n if (!subMaterial.isReady(mesh)) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Clones the current material and its related sub materials\r\n * @param name Define the name of the newly cloned material\r\n * @param cloneChildren Define if submaterial will be cloned or shared with the parent instance\r\n * @returns the cloned material\r\n */\r\n public clone(name: string, cloneChildren?: boolean): MultiMaterial {\r\n const newMultiMaterial = new MultiMaterial(name, this.getScene());\r\n\r\n for (let index = 0; index < this.subMaterials.length; index++) {\r\n let subMaterial: Nullable<Material> = null;\r\n const current = this.subMaterials[index];\r\n if (cloneChildren && current) {\r\n subMaterial = current.clone(name + \"-\" + current.name);\r\n } else {\r\n subMaterial = this.subMaterials[index];\r\n }\r\n newMultiMaterial.subMaterials.push(subMaterial);\r\n }\r\n\r\n return newMultiMaterial;\r\n }\r\n\r\n /**\r\n * Serializes the materials into a JSON representation.\r\n * @returns the JSON representation\r\n */\r\n public serialize(): any {\r\n const serializationObject: any = {};\r\n\r\n serializationObject.name = this.name;\r\n serializationObject.id = this.id;\r\n serializationObject.uniqueId = this.uniqueId;\r\n if (Tags) {\r\n serializationObject.tags = Tags.GetTags(this);\r\n }\r\n serializationObject.materialsUniqueIds = [];\r\n serializationObject.materials = [];\r\n\r\n for (let matIndex = 0; matIndex < this.subMaterials.length; matIndex++) {\r\n const subMat = this.subMaterials[matIndex];\r\n\r\n if (subMat) {\r\n serializationObject.materialsUniqueIds.push(subMat.uniqueId);\r\n serializationObject.materials.push(subMat.id);\r\n } else {\r\n serializationObject.materialsUniqueIds.push(null);\r\n serializationObject.materials.push(null);\r\n }\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Dispose the material and release its associated resources\r\n * @param forceDisposeEffect Define if we want to force disposing the associated effect (if false the shader is not released and could be reuse later on)\r\n * @param forceDisposeTextures Define if we want to force disposing the associated textures (if false, they will not be disposed and can still be use elsewhere in the app)\r\n * @param forceDisposeChildren Define if we want to force disposing the associated submaterials (if false, they will not be disposed and can still be use elsewhere in the app)\r\n */\r\n public dispose(forceDisposeEffect?: boolean, forceDisposeTextures?: boolean, forceDisposeChildren?: boolean): void {\r\n const scene = this.getScene();\r\n if (!scene) {\r\n return;\r\n }\r\n\r\n if (forceDisposeChildren) {\r\n for (let index = 0; index < this.subMaterials.length; index++) {\r\n const subMaterial = this.subMaterials[index];\r\n if (subMaterial) {\r\n subMaterial.dispose(forceDisposeEffect, forceDisposeTextures);\r\n }\r\n }\r\n }\r\n\r\n const index = scene.multiMaterials.indexOf(this);\r\n if (index >= 0) {\r\n scene.multiMaterials.splice(index, 1);\r\n }\r\n\r\n super.dispose(forceDisposeEffect, forceDisposeTextures);\r\n }\r\n\r\n /**\r\n * Creates a MultiMaterial from parsed MultiMaterial data.\r\n * @param parsedMultiMaterial defines parsed MultiMaterial data.\r\n * @param scene defines the hosting scene\r\n * @returns a new MultiMaterial\r\n */\r\n public static ParseMultiMaterial(parsedMultiMaterial: any, scene: Scene): MultiMaterial {\r\n const multiMaterial = new MultiMaterial(parsedMultiMaterial.name, scene);\r\n\r\n multiMaterial.id = parsedMultiMaterial.id;\r\n multiMaterial._loadedUniqueId = parsedMultiMaterial.uniqueId;\r\n\r\n if (Tags) {\r\n Tags.AddTagsTo(multiMaterial, parsedMultiMaterial.tags);\r\n }\r\n\r\n if (parsedMultiMaterial.materialsUniqueIds) {\r\n multiMaterial._waitingSubMaterialsUniqueIds = parsedMultiMaterial.materialsUniqueIds;\r\n } else {\r\n parsedMultiMaterial.materials.forEach((subMatId: string) => multiMaterial.subMaterials.push(scene.getLastMaterialById(subMatId)));\r\n }\r\n\r\n return multiMaterial;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.MultiMaterial\", MultiMaterial);\r\n"]}
1
+ {"version":3,"file":"multiMaterial.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/multiMaterial.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;GAIG;AACH,MAAM,OAAO,aAAc,SAAQ,QAAQ;IAKvC;;;OAGG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,IAAW,YAAY,CAAC,KAA2B;QAC/C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACI,WAAW;QACd,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,IAAY,EAAE,KAAa;QACnC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAjC7B,gBAAgB;QACT,kCAA6B,GAAa,EAAE,CAAC;QAkChD,IAAI,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,CAAC,YAAY,GAAG,EAAgB,CAAC;QAErC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC,mDAAmD;IAC5F,CAAC;IAEO,UAAU,CAAC,KAA2B;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3B,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,KAA2B,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAE3C,IAAI,CAAC,gCAAgC,EAAE,CAAC;YAExC,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QAC/B,KAAK,CAAC,MAAM,GAAG,CAAC,KAAa,EAAE,WAAoB,EAAE,EAAE;YACnD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;YAE7D,IAAI,CAAC,gCAAgC,EAAE,CAAC;YAExC,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC;IACN,CAAC;IAED;;;;OAIG;IACI,cAAc,CAAC,KAAa;QAC/B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC;SAC1C;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACa,iBAAiB;QAC7B,OAAO,KAAK,CAAC,iBAAiB,EAAE,CAAC,MAAM,CACnC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;YACrC,IAAI,WAAW,EAAE;gBACb,OAAO,WAAW,CAAC,iBAAiB,EAAE,CAAC;aAC1C;iBAAM;gBACH,OAAO,EAAE,CAAC;aACb;QACL,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAED;;;;OAIG;IACa,UAAU,CAAC,OAAoB;QAC3C,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAC;SACf;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE;gBAC3C,OAAO,IAAI,CAAC;aACf;SACJ;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACa,YAAY;QACxB,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACa,iBAAiB,CAAC,IAAkB,EAAE,OAAgB,EAAE,YAAsB;QAC1F,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,WAAW,EAAE;gBACb,IAAI,WAAW,CAAC,uBAAuB,EAAE;oBACrC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE;wBAC7D,OAAO,KAAK,CAAC;qBAChB;oBACD,SAAS;iBACZ;gBAED,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC5B,OAAO,KAAK,CAAC;iBAChB;aACJ;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACa,KAAK,CAAC,IAAY,EAAE,aAAuB;QACvD,MAAM,gBAAgB,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAElE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC3D,IAAI,WAAW,GAAuB,IAAI,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,aAAa,IAAI,OAAO,EAAE;gBAC1B,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;aAC1D;iBAAM;gBACH,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aAC1C;YACD,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACnD;QAED,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACa,SAAS;QACrB,MAAM,mBAAmB,GAAQ,EAAE,CAAC;QAEpC,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrC,mBAAmB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjC,mBAAmB,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7C,IAAI,IAAI,EAAE;YACN,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACjD;QACD,mBAAmB,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC5C,mBAAmB,CAAC,SAAS,GAAG,EAAE,CAAC;QAEnC,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;YACpE,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAE3C,IAAI,MAAM,EAAE;gBACR,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC7D,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aACjD;iBAAM;gBACH,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClD,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC5C;SACJ;QAED,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACa,OAAO,CAAC,kBAA4B,EAAE,oBAA8B,EAAE,oBAA8B;QAChH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;SACV;QAED,IAAI,oBAAoB,EAAE;YACtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC7C,IAAI,WAAW,EAAE;oBACb,WAAW,CAAC,OAAO,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;iBACjE;aACJ;SACJ;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,KAAK,IAAI,CAAC,EAAE;YACZ,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACzC;QAED,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,kBAAkB,CAAC,mBAAwB,EAAE,KAAY;QACnE,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEzE,aAAa,CAAC,EAAE,GAAG,mBAAmB,CAAC,EAAE,CAAC;QAC1C,aAAa,CAAC,eAAe,GAAG,mBAAmB,CAAC,QAAQ,CAAC;QAE7D,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;SAC3D;QAED,IAAI,mBAAmB,CAAC,kBAAkB,EAAE;YACxC,aAAa,CAAC,6BAA6B,GAAG,mBAAmB,CAAC,kBAAkB,CAAC;SACxF;aAAM;YACH,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAgB,EAAE,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SACrI;QAED,OAAO,aAAa,CAAC;IACzB,CAAC;CACJ;AAED,aAAa,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport type { SubMesh } from \"../Meshes/subMesh\";\r\nimport type { BaseTexture } from \"../Materials/Textures/baseTexture\";\r\nimport { Material } from \"../Materials/material\";\r\nimport { Tags } from \"../Misc/tags\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\n/**\r\n * A multi-material is used to apply different materials to different parts of the same object without the need of\r\n * separate meshes. This can be use to improve performances.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/multiMaterials\r\n */\r\nexport class MultiMaterial extends Material {\r\n private _subMaterials: Nullable<Material>[];\r\n /** @internal */\r\n public _waitingSubMaterialsUniqueIds: string[] = [];\r\n\r\n /**\r\n * Gets or Sets the list of Materials used within the multi material.\r\n * They need to be ordered according to the submeshes order in the associated mesh\r\n */\r\n public get subMaterials(): Nullable<Material>[] {\r\n return this._subMaterials;\r\n }\r\n\r\n public set subMaterials(value: Nullable<Material>[]) {\r\n this._subMaterials = value;\r\n this._hookArray(value);\r\n }\r\n\r\n /**\r\n * Function used to align with Node.getChildren()\r\n * @returns the list of Materials used within the multi material\r\n */\r\n public getChildren(): Nullable<Material>[] {\r\n return this.subMaterials;\r\n }\r\n\r\n /**\r\n * Instantiates a new Multi Material\r\n * A multi-material is used to apply different materials to different parts of the same object without the need of\r\n * separate meshes. This can be use to improve performances.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/multiMaterials\r\n * @param name Define the name in the scene\r\n * @param scene Define the scene the material belongs to\r\n */\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene, true);\r\n\r\n this.getScene().addMultiMaterial(this);\r\n\r\n this.subMaterials = [] as Material[];\r\n\r\n this._storeEffectOnSubMeshes = true; // multimaterial is considered like a push material\r\n }\r\n\r\n private _hookArray(array: Nullable<Material>[]): void {\r\n const oldPush = array.push;\r\n array.push = (...items: Nullable<Material>[]) => {\r\n const result = oldPush.apply(array, items);\r\n\r\n this._markAllSubMeshesAsTexturesDirty();\r\n\r\n return result;\r\n };\r\n\r\n const oldSplice = array.splice;\r\n array.splice = (index: number, deleteCount?: number) => {\r\n const deleted = oldSplice.apply(array, [index, deleteCount]);\r\n\r\n this._markAllSubMeshesAsTexturesDirty();\r\n\r\n return deleted;\r\n };\r\n }\r\n\r\n /**\r\n * Get one of the submaterial by its index in the submaterials array\r\n * @param index The index to look the sub material at\r\n * @returns The Material if the index has been defined\r\n */\r\n public getSubMaterial(index: number): Nullable<Material> {\r\n if (index < 0 || index >= this.subMaterials.length) {\r\n return this.getScene().defaultMaterial;\r\n }\r\n\r\n return this.subMaterials[index];\r\n }\r\n\r\n /**\r\n * Get the list of active textures for the whole sub materials list.\r\n * @returns All the textures that will be used during the rendering\r\n */\r\n public override getActiveTextures(): BaseTexture[] {\r\n return super.getActiveTextures().concat(\r\n ...this.subMaterials.map((subMaterial) => {\r\n if (subMaterial) {\r\n return subMaterial.getActiveTextures();\r\n } else {\r\n return [];\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Specifies if any sub-materials of this multi-material use a given texture.\r\n * @param texture Defines the texture to check against this multi-material's sub-materials.\r\n * @returns A boolean specifying if any sub-material of this multi-material uses the texture.\r\n */\r\n public override hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n for (let i = 0; i < this.subMaterials.length; i++) {\r\n if (this.subMaterials[i]?.hasTexture(texture)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets the current class name of the material e.g. \"MultiMaterial\"\r\n * Mainly use in serialization.\r\n * @returns the class name\r\n */\r\n public override getClassName(): string {\r\n return \"MultiMaterial\";\r\n }\r\n\r\n /**\r\n * Checks if the material is ready to render the requested sub mesh\r\n * @param mesh Define the mesh the submesh belongs to\r\n * @param subMesh Define the sub mesh to look readiness for\r\n * @param useInstances Define whether or not the material is used with instances\r\n * @returns true if ready, otherwise false\r\n */\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n for (let index = 0; index < this.subMaterials.length; index++) {\r\n const subMaterial = this.subMaterials[index];\r\n if (subMaterial) {\r\n if (subMaterial._storeEffectOnSubMeshes) {\r\n if (!subMaterial.isReadyForSubMesh(mesh, subMesh, useInstances)) {\r\n return false;\r\n }\r\n continue;\r\n }\r\n\r\n if (!subMaterial.isReady(mesh)) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Clones the current material and its related sub materials\r\n * @param name Define the name of the newly cloned material\r\n * @param cloneChildren Define if submaterial will be cloned or shared with the parent instance\r\n * @returns the cloned material\r\n */\r\n public override clone(name: string, cloneChildren?: boolean): MultiMaterial {\r\n const newMultiMaterial = new MultiMaterial(name, this.getScene());\r\n\r\n for (let index = 0; index < this.subMaterials.length; index++) {\r\n let subMaterial: Nullable<Material> = null;\r\n const current = this.subMaterials[index];\r\n if (cloneChildren && current) {\r\n subMaterial = current.clone(name + \"-\" + current.name);\r\n } else {\r\n subMaterial = this.subMaterials[index];\r\n }\r\n newMultiMaterial.subMaterials.push(subMaterial);\r\n }\r\n\r\n return newMultiMaterial;\r\n }\r\n\r\n /**\r\n * Serializes the materials into a JSON representation.\r\n * @returns the JSON representation\r\n */\r\n public override serialize(): any {\r\n const serializationObject: any = {};\r\n\r\n serializationObject.name = this.name;\r\n serializationObject.id = this.id;\r\n serializationObject.uniqueId = this.uniqueId;\r\n if (Tags) {\r\n serializationObject.tags = Tags.GetTags(this);\r\n }\r\n serializationObject.materialsUniqueIds = [];\r\n serializationObject.materials = [];\r\n\r\n for (let matIndex = 0; matIndex < this.subMaterials.length; matIndex++) {\r\n const subMat = this.subMaterials[matIndex];\r\n\r\n if (subMat) {\r\n serializationObject.materialsUniqueIds.push(subMat.uniqueId);\r\n serializationObject.materials.push(subMat.id);\r\n } else {\r\n serializationObject.materialsUniqueIds.push(null);\r\n serializationObject.materials.push(null);\r\n }\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Dispose the material and release its associated resources\r\n * @param forceDisposeEffect Define if we want to force disposing the associated effect (if false the shader is not released and could be reuse later on)\r\n * @param forceDisposeTextures Define if we want to force disposing the associated textures (if false, they will not be disposed and can still be use elsewhere in the app)\r\n * @param forceDisposeChildren Define if we want to force disposing the associated submaterials (if false, they will not be disposed and can still be use elsewhere in the app)\r\n */\r\n public override dispose(forceDisposeEffect?: boolean, forceDisposeTextures?: boolean, forceDisposeChildren?: boolean): void {\r\n const scene = this.getScene();\r\n if (!scene) {\r\n return;\r\n }\r\n\r\n if (forceDisposeChildren) {\r\n for (let index = 0; index < this.subMaterials.length; index++) {\r\n const subMaterial = this.subMaterials[index];\r\n if (subMaterial) {\r\n subMaterial.dispose(forceDisposeEffect, forceDisposeTextures);\r\n }\r\n }\r\n }\r\n\r\n const index = scene.multiMaterials.indexOf(this);\r\n if (index >= 0) {\r\n scene.multiMaterials.splice(index, 1);\r\n }\r\n\r\n super.dispose(forceDisposeEffect, forceDisposeTextures);\r\n }\r\n\r\n /**\r\n * Creates a MultiMaterial from parsed MultiMaterial data.\r\n * @param parsedMultiMaterial defines parsed MultiMaterial data.\r\n * @param scene defines the hosting scene\r\n * @returns a new MultiMaterial\r\n */\r\n public static ParseMultiMaterial(parsedMultiMaterial: any, scene: Scene): MultiMaterial {\r\n const multiMaterial = new MultiMaterial(parsedMultiMaterial.name, scene);\r\n\r\n multiMaterial.id = parsedMultiMaterial.id;\r\n multiMaterial._loadedUniqueId = parsedMultiMaterial.uniqueId;\r\n\r\n if (Tags) {\r\n Tags.AddTagsTo(multiMaterial, parsedMultiMaterial.tags);\r\n }\r\n\r\n if (parsedMultiMaterial.materialsUniqueIds) {\r\n multiMaterial._waitingSubMaterialsUniqueIds = parsedMultiMaterial.materialsUniqueIds;\r\n } else {\r\n parsedMultiMaterial.materials.forEach((subMatId: string) => multiMaterial.subMaterials.push(scene.getLastMaterialById(subMatId)));\r\n }\r\n\r\n return multiMaterial;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.MultiMaterial\", MultiMaterial);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"pushMaterial.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/pushMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Scene } from \"../scene\";\r\nimport { Matrix } from \"../Maths/math.vector\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport type { Mesh } from \"../Meshes/mesh\";\r\nimport { Material } from \"../Materials/material\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { SubMesh } from \"../Meshes/subMesh\";\r\n/**\r\n * Base class of materials working in push mode in babylon JS\r\n * @internal\r\n */\r\nexport class PushMaterial extends Material {\r\n protected _activeEffect?: Effect;\r\n\r\n protected _normalMatrix: Matrix = new Matrix();\r\n\r\n constructor(name: string, scene?: Scene, storeEffectOnSubMeshes = true) {\r\n super(name, scene);\r\n this._storeEffectOnSubMeshes = storeEffectOnSubMeshes;\r\n }\r\n\r\n public getEffect(): Effect {\r\n return this._storeEffectOnSubMeshes ? this._activeEffect! : super.getEffect()!;\r\n }\r\n\r\n public isReady(mesh?: AbstractMesh, useInstances?: boolean): boolean {\r\n if (!mesh) {\r\n return false;\r\n }\r\n\r\n if (!this._storeEffectOnSubMeshes) {\r\n return true;\r\n }\r\n\r\n if (!mesh.subMeshes || mesh.subMeshes.length === 0) {\r\n return true;\r\n }\r\n\r\n return this.isReadyForSubMesh(mesh, mesh.subMeshes[0], useInstances);\r\n }\r\n\r\n protected _isReadyForSubMesh(subMesh: SubMesh) {\r\n const defines = subMesh.materialDefines;\r\n if (!this.checkReadyOnEveryCall && subMesh.effect && defines) {\r\n if (defines._renderId === this.getScene().getRenderId()) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Binds the given world matrix to the active effect\r\n *\r\n * @param world the matrix to bind\r\n */\r\n public bindOnlyWorldMatrix(world: Matrix): void {\r\n this._activeEffect!.setMatrix(\"world\", world);\r\n }\r\n\r\n /**\r\n * Binds the given normal matrix to the active effect\r\n *\r\n * @param normalMatrix the matrix to bind\r\n */\r\n public bindOnlyNormalMatrix(normalMatrix: Matrix): void {\r\n this._activeEffect!.setMatrix(\"normalMatrix\", normalMatrix);\r\n }\r\n\r\n public bind(world: Matrix, mesh?: Mesh): void {\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n this.bindForSubMesh(world, mesh, mesh.subMeshes[0]);\r\n }\r\n\r\n protected _afterBind(mesh?: Mesh, effect: Nullable<Effect> = null, subMesh?: SubMesh): void {\r\n super._afterBind(mesh, effect, subMesh);\r\n this.getScene()._cachedEffect = effect;\r\n if (subMesh) {\r\n subMesh._drawWrapper._forceRebindOnNextCall = false;\r\n } else {\r\n this._drawWrapper._forceRebindOnNextCall = false;\r\n }\r\n }\r\n\r\n protected _mustRebind(scene: Scene, effect: Effect, subMesh: SubMesh, visibility = 1): boolean {\r\n return subMesh._drawWrapper._forceRebindOnNextCall || scene.isCachedMaterialInvalid(this, effect, visibility);\r\n }\r\n\r\n public dispose(forceDisposeEffect?: boolean, forceDisposeTextures?: boolean, notBoundToMesh?: boolean) {\r\n this._activeEffect = undefined;\r\n super.dispose(forceDisposeEffect, forceDisposeTextures, notBoundToMesh);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"pushMaterial.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/pushMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Scene } from \"../scene\";\r\nimport { Matrix } from \"../Maths/math.vector\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport type { Mesh } from \"../Meshes/mesh\";\r\nimport { Material } from \"../Materials/material\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { SubMesh } from \"../Meshes/subMesh\";\r\n/**\r\n * Base class of materials working in push mode in babylon JS\r\n * @internal\r\n */\r\nexport class PushMaterial extends Material {\r\n protected _activeEffect?: Effect;\r\n\r\n protected _normalMatrix: Matrix = new Matrix();\r\n\r\n constructor(name: string, scene?: Scene, storeEffectOnSubMeshes = true) {\r\n super(name, scene);\r\n this._storeEffectOnSubMeshes = storeEffectOnSubMeshes;\r\n }\r\n\r\n public override getEffect(): Effect {\r\n return this._storeEffectOnSubMeshes ? this._activeEffect! : super.getEffect()!;\r\n }\r\n\r\n public override isReady(mesh?: AbstractMesh, useInstances?: boolean): boolean {\r\n if (!mesh) {\r\n return false;\r\n }\r\n\r\n if (!this._storeEffectOnSubMeshes) {\r\n return true;\r\n }\r\n\r\n if (!mesh.subMeshes || mesh.subMeshes.length === 0) {\r\n return true;\r\n }\r\n\r\n return this.isReadyForSubMesh(mesh, mesh.subMeshes[0], useInstances);\r\n }\r\n\r\n protected _isReadyForSubMesh(subMesh: SubMesh) {\r\n const defines = subMesh.materialDefines;\r\n if (!this.checkReadyOnEveryCall && subMesh.effect && defines) {\r\n if (defines._renderId === this.getScene().getRenderId()) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Binds the given world matrix to the active effect\r\n *\r\n * @param world the matrix to bind\r\n */\r\n public override bindOnlyWorldMatrix(world: Matrix): void {\r\n this._activeEffect!.setMatrix(\"world\", world);\r\n }\r\n\r\n /**\r\n * Binds the given normal matrix to the active effect\r\n *\r\n * @param normalMatrix the matrix to bind\r\n */\r\n public bindOnlyNormalMatrix(normalMatrix: Matrix): void {\r\n this._activeEffect!.setMatrix(\"normalMatrix\", normalMatrix);\r\n }\r\n\r\n public override bind(world: Matrix, mesh?: Mesh): void {\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n this.bindForSubMesh(world, mesh, mesh.subMeshes[0]);\r\n }\r\n\r\n protected override _afterBind(mesh?: Mesh, effect: Nullable<Effect> = null, subMesh?: SubMesh): void {\r\n super._afterBind(mesh, effect, subMesh);\r\n this.getScene()._cachedEffect = effect;\r\n if (subMesh) {\r\n subMesh._drawWrapper._forceRebindOnNextCall = false;\r\n } else {\r\n this._drawWrapper._forceRebindOnNextCall = false;\r\n }\r\n }\r\n\r\n protected _mustRebind(scene: Scene, effect: Effect, subMesh: SubMesh, visibility = 1): boolean {\r\n return subMesh._drawWrapper._forceRebindOnNextCall || scene.isCachedMaterialInvalid(this, effect, visibility);\r\n }\r\n\r\n public override dispose(forceDisposeEffect?: boolean, forceDisposeTextures?: boolean, notBoundToMesh?: boolean) {\r\n this._activeEffect = undefined;\r\n super.dispose(forceDisposeEffect, forceDisposeTextures, notBoundToMesh);\r\n }\r\n}\r\n"]}