@babylonjs/core 8.8.0 → 8.8.1

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 (342) hide show
  1. package/Actions/actionManager.js +2 -0
  2. package/Actions/actionManager.js.map +1 -1
  3. package/Animations/animatable.core.js +1 -1
  4. package/Animations/animatable.core.js.map +1 -1
  5. package/Animations/animation.js +4 -2
  6. package/Animations/animation.js.map +1 -1
  7. package/Audio/audioEngine.d.ts +1 -1
  8. package/Audio/audioEngine.js +20 -10
  9. package/Audio/audioEngine.js.map +1 -1
  10. package/Audio/audioSceneComponent.js +2 -0
  11. package/Audio/audioSceneComponent.js.map +1 -1
  12. package/Audio/sound.js +2 -0
  13. package/Audio/sound.js.map +1 -1
  14. package/AudioV2/abstractAudio/audioEngineV2.js +8 -1
  15. package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
  16. package/AudioV2/abstractAudio/streamingSound.js +3 -1
  17. package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
  18. package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.js +6 -2
  19. package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.js.map +1 -1
  20. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js +3 -0
  21. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js.map +1 -1
  22. package/AudioV2/abstractAudio/subProperties/spatialAudio.js +1 -0
  23. package/AudioV2/abstractAudio/subProperties/spatialAudio.js.map +1 -1
  24. package/AudioV2/webAudio/webAudioEngine.js +5 -1
  25. package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
  26. package/AudioV2/webAudio/webAudioStaticSound.js +2 -0
  27. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  28. package/AudioV2/webAudio/webAudioStreamingSound.js +3 -0
  29. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  30. package/AudioV2/webAudio/webAudioUnmuteUI.js +1 -0
  31. package/AudioV2/webAudio/webAudioUnmuteUI.js.map +1 -1
  32. package/BakedVertexAnimation/vertexAnimationBaker.d.ts +1 -0
  33. package/BakedVertexAnimation/vertexAnimationBaker.js +3 -1
  34. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -1
  35. package/Buffers/buffer.nonFloatVertexBuffers.js +1 -0
  36. package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
  37. package/Buffers/storageBuffer.js +1 -1
  38. package/Buffers/storageBuffer.js.map +1 -1
  39. package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js +2 -0
  40. package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js.map +1 -1
  41. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +6 -1
  42. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js.map +1 -1
  43. package/Cameras/VR/vrExperienceHelper.js +2 -0
  44. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  45. package/Collisions/gpuPicker.js +9 -6
  46. package/Collisions/gpuPicker.js.map +1 -1
  47. package/Compute/computeShader.js +1 -1
  48. package/Compute/computeShader.js.map +1 -1
  49. package/Culling/Helper/boundingInfoHelper.js +3 -3
  50. package/Culling/Helper/boundingInfoHelper.js.map +1 -1
  51. package/Culling/Helper/computeShaderBoundingHelper.js +3 -1
  52. package/Culling/Helper/computeShaderBoundingHelper.js.map +1 -1
  53. package/Culling/Helper/transformFeedbackBoundingHelper.js +3 -0
  54. package/Culling/Helper/transformFeedbackBoundingHelper.js.map +1 -1
  55. package/Debug/debugLayer.js +1 -1
  56. package/Debug/debugLayer.js.map +1 -1
  57. package/Engines/AbstractEngine/abstractEngine.cubeTexture.js +1 -0
  58. package/Engines/AbstractEngine/abstractEngine.cubeTexture.js.map +1 -1
  59. package/Engines/Extensions/engine.prefilteredCubeTexture.js +1 -0
  60. package/Engines/Extensions/engine.prefilteredCubeTexture.js.map +1 -1
  61. package/Engines/Extensions/engine.readTexture.js +1 -0
  62. package/Engines/Extensions/engine.readTexture.js.map +1 -1
  63. package/Engines/WebGPU/Extensions/engine.computeShader.js +1 -0
  64. package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
  65. package/Engines/WebGPU/Extensions/engine.readTexture.js +1 -0
  66. package/Engines/WebGPU/Extensions/engine.readTexture.js.map +1 -1
  67. package/Engines/WebGPU/Extensions/engine.videoTexture.js +2 -0
  68. package/Engines/WebGPU/Extensions/engine.videoTexture.js.map +1 -1
  69. package/Engines/WebGPU/webgpuBufferManager.js +3 -1
  70. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  71. package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -0
  72. package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
  73. package/Engines/WebGPU/webgpuQuerySet.js +15 -9
  74. package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
  75. package/Engines/WebGPU/webgpuTextureManager.js +1 -0
  76. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  77. package/Engines/WebGPU/webgpuTimestampQuery.js +4 -2
  78. package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
  79. package/Engines/WebGPU/webgpuTintWASM.js +1 -0
  80. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  81. package/Engines/abstractEngine.js +5 -2
  82. package/Engines/abstractEngine.js.map +1 -1
  83. package/Engines/engine.common.js +7 -1
  84. package/Engines/engine.common.js.map +1 -1
  85. package/Engines/engine.js +5 -3
  86. package/Engines/engine.js.map +1 -1
  87. package/Engines/engineFactory.js +1 -1
  88. package/Engines/engineFactory.js.map +1 -1
  89. package/Engines/nativeEngine.js +19 -11
  90. package/Engines/nativeEngine.js.map +1 -1
  91. package/Engines/webgpuEngine.js +30 -11
  92. package/Engines/webgpuEngine.js.map +1 -1
  93. package/FlowGraph/flowGraphParser.js +2 -2
  94. package/FlowGraph/flowGraphParser.js.map +1 -1
  95. package/FrameGraph/Node/nodeRenderGraph.js +5 -1
  96. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  97. package/FrameGraph/Node/nodeRenderGraphBlock.js +1 -1
  98. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  99. package/FrameGraph/frameGraph.js +1 -1
  100. package/FrameGraph/frameGraph.js.map +1 -1
  101. package/Helpers/sceneHelpers.js +1 -3
  102. package/Helpers/sceneHelpers.js.map +1 -1
  103. package/Helpers/videoDome.js +1 -0
  104. package/Helpers/videoDome.js.map +1 -1
  105. package/Layers/thinEffectLayer.js +1 -0
  106. package/Layers/thinEffectLayer.js.map +1 -1
  107. package/LensFlares/lensFlareSystem.js +1 -0
  108. package/LensFlares/lensFlareSystem.js.map +1 -1
  109. package/Lights/Shadows/shadowGenerator.js +3 -2
  110. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  111. package/Lights/areaLight.js +2 -0
  112. package/Lights/areaLight.js.map +1 -1
  113. package/Loading/sceneLoader.js +56 -22
  114. package/Loading/sceneLoader.js.map +1 -1
  115. package/Materials/GaussianSplatting/gaussianSplattingMaterial.d.ts +15 -1
  116. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +34 -7
  117. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
  118. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +1 -0
  119. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
  120. package/Materials/Node/Blocks/Dual/fogBlock.js +1 -0
  121. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  122. package/Materials/Node/Blocks/Dual/lightBlock.js +1 -0
  123. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  124. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +1 -0
  125. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  126. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +1 -0
  127. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  128. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +1 -0
  129. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  130. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js +1 -0
  131. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js.map +1 -1
  132. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +1 -0
  133. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  134. package/Materials/Node/Blocks/Vertex/bonesBlock.js +1 -0
  135. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  136. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +1 -0
  137. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  138. package/Materials/Node/nodeMaterial.js +11 -3
  139. package/Materials/Node/nodeMaterial.js.map +1 -1
  140. package/Materials/Node/nodeMaterialBuildState.js +1 -0
  141. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  142. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +1 -0
  143. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
  144. package/Materials/Textures/Loaders/basisTextureLoader.js +4 -0
  145. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  146. package/Materials/Textures/Loaders/envTextureLoader.js +1 -0
  147. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  148. package/Materials/Textures/Loaders/exrTextureLoader.js +2 -0
  149. package/Materials/Textures/Loaders/exrTextureLoader.js.map +1 -1
  150. package/Materials/Textures/Loaders/ktxTextureLoader.js +1 -0
  151. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  152. package/Materials/Textures/Loaders/textureLoaderManager.js +9 -9
  153. package/Materials/Textures/Loaders/textureLoaderManager.js.map +1 -1
  154. package/Materials/Textures/Packer/packer.js +3 -1
  155. package/Materials/Textures/Packer/packer.js.map +1 -1
  156. package/Materials/Textures/Procedurals/proceduralTexture.js +1 -0
  157. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  158. package/Materials/Textures/baseTexture.polynomial.js +1 -0
  159. package/Materials/Textures/baseTexture.polynomial.js.map +1 -1
  160. package/Materials/Textures/hdrCubeTexture.js +1 -0
  161. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  162. package/Materials/Textures/internalTexture.js +1 -0
  163. package/Materials/Textures/internalTexture.js.map +1 -1
  164. package/Materials/Textures/rawCubeTexture.js +3 -0
  165. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  166. package/Materials/Textures/renderTargetTexture.js +2 -0
  167. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  168. package/Materials/Textures/videoTexture.js +6 -0
  169. package/Materials/Textures/videoTexture.js.map +1 -1
  170. package/Materials/effect.js +2 -1
  171. package/Materials/effect.js.map +1 -1
  172. package/Materials/effect.webgl.functions.js +3 -1
  173. package/Materials/effect.webgl.functions.js.map +1 -1
  174. package/Materials/effectRenderer.js +1 -0
  175. package/Materials/effectRenderer.js.map +1 -1
  176. package/Materials/material.js +2 -1
  177. package/Materials/material.js.map +1 -1
  178. package/Materials/shaderMaterial.js +4 -2
  179. package/Materials/shaderMaterial.js.map +1 -1
  180. package/Meshes/Compression/dracoCodec.js +5 -1
  181. package/Meshes/Compression/dracoCodec.js.map +1 -1
  182. package/Meshes/Compression/dracoCompression.js +4 -3
  183. package/Meshes/Compression/dracoCompression.js.map +1 -1
  184. package/Meshes/Compression/dracoCompressionWorker.js +5 -2
  185. package/Meshes/Compression/dracoCompressionWorker.js.map +1 -1
  186. package/Meshes/Compression/dracoDecoder.js +5 -1
  187. package/Meshes/Compression/dracoDecoder.js.map +1 -1
  188. package/Meshes/Compression/dracoEncoder.js +3 -2
  189. package/Meshes/Compression/dracoEncoder.js.map +1 -1
  190. package/Meshes/Compression/meshoptCompression.js +18 -18
  191. package/Meshes/Compression/meshoptCompression.js.map +1 -1
  192. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +14 -15
  193. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  194. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js +20 -10
  195. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
  196. package/Meshes/Node/Blocks/booleanGeometryBlock.js +1 -0
  197. package/Meshes/Node/Blocks/booleanGeometryBlock.js.map +1 -1
  198. package/Meshes/Node/nodeGeometry.js +5 -1
  199. package/Meshes/Node/nodeGeometry.js.map +1 -1
  200. package/Meshes/mesh.js +2 -2
  201. package/Meshes/mesh.js.map +1 -1
  202. package/Meshes/meshUVSpaceRenderer.js +1 -0
  203. package/Meshes/meshUVSpaceRenderer.js.map +1 -1
  204. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +1 -0
  205. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  206. package/Misc/assetsManager.js +2 -1
  207. package/Misc/assetsManager.js.map +1 -1
  208. package/Misc/asyncLock.js +5 -2
  209. package/Misc/asyncLock.js.map +1 -1
  210. package/Misc/basis.js +9 -2
  211. package/Misc/basis.js.map +1 -1
  212. package/Misc/basisWorker.js +3 -1
  213. package/Misc/basisWorker.js.map +1 -1
  214. package/Misc/copyTextureToTexture.js +1 -0
  215. package/Misc/copyTextureToTexture.js.map +1 -1
  216. package/Misc/coroutine.js +2 -1
  217. package/Misc/coroutine.js.map +1 -1
  218. package/Misc/dataReader.js +3 -4
  219. package/Misc/dataReader.js.map +1 -1
  220. package/Misc/dumpTools.js +7 -1
  221. package/Misc/dumpTools.js.map +1 -1
  222. package/Misc/environmentTextureTools.d.ts +0 -2
  223. package/Misc/environmentTextureTools.js +20 -7
  224. package/Misc/environmentTextureTools.js.map +1 -1
  225. package/Misc/equirectangularCapture.js +2 -1
  226. package/Misc/equirectangularCapture.js.map +1 -1
  227. package/Misc/fileTools.js +2 -0
  228. package/Misc/fileTools.js.map +1 -1
  229. package/Misc/filesInput.js +5 -1
  230. package/Misc/filesInput.js.map +1 -1
  231. package/Misc/khronosTextureContainer2.js +10 -3
  232. package/Misc/khronosTextureContainer2.js.map +1 -1
  233. package/Misc/khronosTextureContainer2Worker.js +4 -1
  234. package/Misc/khronosTextureContainer2Worker.js.map +1 -1
  235. package/Misc/minMaxReducer.js +1 -0
  236. package/Misc/minMaxReducer.js.map +1 -1
  237. package/Misc/observable.extensions.js +3 -1
  238. package/Misc/observable.extensions.js.map +1 -1
  239. package/Misc/observable.js +2 -0
  240. package/Misc/observable.js.map +1 -1
  241. package/Misc/observableCoroutine.js +1 -0
  242. package/Misc/observableCoroutine.js.map +1 -1
  243. package/Misc/reflector.js +1 -0
  244. package/Misc/reflector.js.map +1 -1
  245. package/Misc/rgbdTextureTools.js +2 -1
  246. package/Misc/rgbdTextureTools.js.map +1 -1
  247. package/Misc/sceneSerializer.js +2 -2
  248. package/Misc/sceneSerializer.js.map +1 -1
  249. package/Misc/screenshotTools.js +9 -4
  250. package/Misc/screenshotTools.js.map +1 -1
  251. package/Misc/textureTools.js +2 -0
  252. package/Misc/textureTools.js.map +1 -1
  253. package/Misc/tools.internals.js +2 -1
  254. package/Misc/tools.internals.js.map +1 -1
  255. package/Misc/tools.js +9 -3
  256. package/Misc/tools.js.map +1 -1
  257. package/Misc/videoRecorder.js +1 -0
  258. package/Misc/videoRecorder.js.map +1 -1
  259. package/Misc/webRequest.fetch.js +2 -1
  260. package/Misc/webRequest.fetch.js.map +1 -1
  261. package/Misc/workerPool.js +3 -0
  262. package/Misc/workerPool.js.map +1 -1
  263. package/Particles/flowMap.js +1 -1
  264. package/Particles/flowMap.js.map +1 -1
  265. package/Particles/particleHelper.js +7 -0
  266. package/Particles/particleHelper.js.map +1 -1
  267. package/Particles/pointsCloudSystem.js +7 -7
  268. package/Particles/pointsCloudSystem.js.map +1 -1
  269. package/Particles/thinParticleSystem.js +2 -0
  270. package/Particles/thinParticleSystem.js.map +1 -1
  271. package/Physics/physicsHelper.js +2 -2
  272. package/Physics/physicsHelper.js.map +1 -1
  273. package/Physics/v1/Plugins/oimoJSPlugin.js +1 -1
  274. package/Physics/v1/Plugins/oimoJSPlugin.js.map +1 -1
  275. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +1 -0
  276. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  277. package/Rendering/GlobalIllumination/giRSMManager.js +1 -0
  278. package/Rendering/GlobalIllumination/giRSMManager.js.map +1 -1
  279. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +1 -0
  280. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  281. package/Rendering/depthRenderer.js +1 -0
  282. package/Rendering/depthRenderer.js.map +1 -1
  283. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -1
  284. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  285. package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
  286. package/Rendering/geometryBufferRenderer.js +1 -0
  287. package/Rendering/geometryBufferRenderer.js.map +1 -1
  288. package/Rendering/iblCdfGenerator.js +4 -1
  289. package/Rendering/iblCdfGenerator.js.map +1 -1
  290. package/Sprites/spriteManager.js +5 -1
  291. package/Sprites/spriteManager.js.map +1 -1
  292. package/Sprites/spriteRenderer.js +1 -0
  293. package/Sprites/spriteRenderer.js.map +1 -1
  294. package/XR/features/WebXRAnchorSystem.js +4 -3
  295. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  296. package/XR/features/WebXRDepthSensing.js +1 -1
  297. package/XR/features/WebXRDepthSensing.js.map +1 -1
  298. package/XR/features/WebXRHandTracking.js +4 -1
  299. package/XR/features/WebXRHandTracking.js.map +1 -1
  300. package/XR/features/WebXRHitTest.js +4 -1
  301. package/XR/features/WebXRHitTest.js.map +1 -1
  302. package/XR/features/WebXRHitTestLegacy.js +6 -5
  303. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  304. package/XR/features/WebXRImageTracking.js +2 -1
  305. package/XR/features/WebXRImageTracking.js.map +1 -1
  306. package/XR/features/WebXRLightEstimation.js +3 -0
  307. package/XR/features/WebXRLightEstimation.js.map +1 -1
  308. package/XR/features/WebXRNearInteraction.js +2 -0
  309. package/XR/features/WebXRNearInteraction.js.map +1 -1
  310. package/XR/features/WebXRPlaneDetector.js +2 -2
  311. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  312. package/XR/motionController/webXRAbstractMotionController.js +3 -2
  313. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  314. package/XR/motionController/webXRMicrosoftMixedRealityController.js +6 -6
  315. package/XR/motionController/webXRMicrosoftMixedRealityController.js.map +1 -1
  316. package/XR/motionController/webXRMotionControllerManager.js +15 -9
  317. package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
  318. package/XR/motionController/webXRProfiledMotionController.js +1 -1
  319. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  320. package/XR/native/nativeXRFrame.js +1 -0
  321. package/XR/native/nativeXRFrame.js.map +1 -1
  322. package/XR/webXRDefaultExperience.js +10 -12
  323. package/XR/webXRDefaultExperience.js.map +1 -1
  324. package/XR/webXREnterExitUI.js +2 -1
  325. package/XR/webXREnterExitUI.js.map +1 -1
  326. package/XR/webXRExperienceHelper.js +5 -2
  327. package/XR/webXRExperienceHelper.js.map +1 -1
  328. package/XR/webXRFeaturesManager.js +1 -0
  329. package/XR/webXRFeaturesManager.js.map +1 -1
  330. package/XR/webXRInput.js +1 -0
  331. package/XR/webXRInput.js.map +1 -1
  332. package/XR/webXRInputSource.js +2 -0
  333. package/XR/webXRInputSource.js.map +1 -1
  334. package/XR/webXRManagedOutputCanvas.js +5 -1
  335. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  336. package/XR/webXRSessionManager.js +56 -60
  337. package/XR/webXRSessionManager.js.map +1 -1
  338. package/assetContainer.js +28 -28
  339. package/assetContainer.js.map +1 -1
  340. package/package.json +1 -1
  341. package/scene.js +5 -4
  342. package/scene.js.map +1 -1
@@ -31,6 +31,7 @@ export class BonesBlock extends NodeMaterialBlock {
31
31
  state._excludeVariableName("boneTextureWidth");
32
32
  state._excludeVariableName("mBones");
33
33
  state._excludeVariableName("BonesPerMesh");
34
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
34
35
  this._initShaderSourceAsync(state.shaderLanguage);
35
36
  }
36
37
  async _initShaderSourceAsync(shaderLanguage) {
@@ -1 +1 @@
1
- {"version":3,"file":"bonesBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Vertex/bonesBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialSystemValues } from \"../../Enums/nodeMaterialSystemValues\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { NodeMaterial, NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\n\r\nimport type { EffectFallbacks } from \"../../../effectFallbacks\";\r\nimport { BindBonesParameters, PrepareDefinesForBones } from \"../../../materialHelper.functions\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to add support for vertex skinning (bones)\r\n */\r\nexport class BonesBlock extends NodeMaterialBlock {\r\n /**\r\n * Creates a new BonesBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Vertex);\r\n\r\n this.registerInput(\"matricesIndices\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this.registerInput(\"matricesWeights\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this.registerInput(\"matricesIndicesExtra\", NodeMaterialBlockConnectionPointTypes.Vector4, true);\r\n this.registerInput(\"matricesWeightsExtra\", NodeMaterialBlockConnectionPointTypes.Vector4, true);\r\n this.registerInput(\"world\", NodeMaterialBlockConnectionPointTypes.Matrix);\r\n\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Matrix);\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public override initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"boneSampler\");\r\n state._excludeVariableName(\"boneTextureWidth\");\r\n state._excludeVariableName(\"mBones\");\r\n state._excludeVariableName(\"BonesPerMesh\");\r\n\r\n this._initShaderSourceAsync(state.shaderLanguage);\r\n }\r\n\r\n private async _initShaderSourceAsync(shaderLanguage: ShaderLanguage) {\r\n this._codeIsReady = false;\r\n if (shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"../../../../ShadersWGSL/ShadersInclude/bonesDeclaration\"), import(\"../../../../ShadersWGSL/ShadersInclude/bonesVertex\")]);\r\n } else {\r\n await Promise.all([import(\"../../../../Shaders/ShadersInclude/bonesDeclaration\"), import(\"../../../../Shaders/ShadersInclude/bonesVertex\")]);\r\n }\r\n\r\n this._codeIsReady = true;\r\n this.onCodeIsReadyObservable.notifyObservers(this);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"BonesBlock\";\r\n }\r\n\r\n /**\r\n * Gets the matrix indices input component\r\n */\r\n public get matricesIndices(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the matrix weights input component\r\n */\r\n public get matricesWeights(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the extra matrix indices input component\r\n */\r\n public get matricesIndicesExtra(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the extra matrix weights input component\r\n */\r\n public get matricesWeightsExtra(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the world input component\r\n */\r\n public get world(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n public override autoConfigure(material: NodeMaterial, additionalFilteringInfo: (node: NodeMaterialBlock) => boolean = () => true) {\r\n if (!this.matricesIndices.isConnected) {\r\n let matricesIndicesInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"matricesIndices\" && additionalFilteringInfo(b));\r\n\r\n if (!matricesIndicesInput) {\r\n matricesIndicesInput = new InputBlock(\"matricesIndices\");\r\n matricesIndicesInput.setAsAttribute(\"matricesIndices\");\r\n }\r\n matricesIndicesInput.output.connectTo(this.matricesIndices);\r\n }\r\n if (!this.matricesWeights.isConnected) {\r\n let matricesWeightsInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"matricesWeights\" && additionalFilteringInfo(b));\r\n\r\n if (!matricesWeightsInput) {\r\n matricesWeightsInput = new InputBlock(\"matricesWeights\");\r\n matricesWeightsInput.setAsAttribute(\"matricesWeights\");\r\n }\r\n matricesWeightsInput.output.connectTo(this.matricesWeights);\r\n }\r\n if (!this.world.isConnected) {\r\n let worldInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.World && additionalFilteringInfo(b));\r\n\r\n if (!worldInput) {\r\n worldInput = new InputBlock(\"world\");\r\n worldInput.setAsSystemValue(NodeMaterialSystemValues.World);\r\n }\r\n worldInput.output.connectTo(this.world);\r\n }\r\n }\r\n\r\n public override provideFallbacks(mesh: AbstractMesh, fallbacks: EffectFallbacks) {\r\n if (mesh && mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton) {\r\n fallbacks.addCPUSkinningFallback(0, mesh);\r\n }\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n BindBonesParameters(mesh, effect);\r\n }\r\n\r\n public override prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (!defines._areAttributesDirty) {\r\n return;\r\n }\r\n PrepareDefinesForBones(mesh, defines);\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n // Register for compilation fallbacks\r\n state.sharedData.blocksWithFallbacks.push(this);\r\n\r\n // Register for binding\r\n state.sharedData.forcedBindableBlocks.push(this);\r\n\r\n // Register for defines\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n // Register internal uniforms and samplers\r\n state.uniforms.push(\"boneTextureWidth\");\r\n state.uniforms.push(\"mBones\");\r\n\r\n state.samplers.push(\"boneSampler\");\r\n\r\n // Emit code\r\n const comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"bonesDeclaration\", comments, {\r\n removeAttributes: true,\r\n removeUniforms: false,\r\n removeVaryings: true,\r\n removeIfDef: false,\r\n });\r\n\r\n const influenceVariablename = state._getFreeVariableName(\"influence\");\r\n\r\n state.compilationString += state._emitCodeFromInclude(\"bonesVertex\", comments, {\r\n replaceStrings: [\r\n {\r\n search: /finalWorld=finalWorld\\*influence;/,\r\n replace: \"\",\r\n },\r\n {\r\n search: /influence/gm,\r\n replace: influenceVariablename,\r\n },\r\n ],\r\n });\r\n\r\n const output = this._outputs[0];\r\n const worldInput = this.world;\r\n\r\n state.compilationString += `#if NUM_BONE_INFLUENCERS>0\\n`;\r\n state.compilationString += state._declareOutput(output) + ` = ${worldInput.associatedVariableName} * ${influenceVariablename};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += state._declareOutput(output) + ` = ${worldInput.associatedVariableName};\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.BonesBlock\", BonesBlock);\r\n"]}
1
+ {"version":3,"file":"bonesBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Vertex/bonesBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialSystemValues } from \"../../Enums/nodeMaterialSystemValues\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { NodeMaterial, NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\n\r\nimport type { EffectFallbacks } from \"../../../effectFallbacks\";\r\nimport { BindBonesParameters, PrepareDefinesForBones } from \"../../../materialHelper.functions\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to add support for vertex skinning (bones)\r\n */\r\nexport class BonesBlock extends NodeMaterialBlock {\r\n /**\r\n * Creates a new BonesBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Vertex);\r\n\r\n this.registerInput(\"matricesIndices\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this.registerInput(\"matricesWeights\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this.registerInput(\"matricesIndicesExtra\", NodeMaterialBlockConnectionPointTypes.Vector4, true);\r\n this.registerInput(\"matricesWeightsExtra\", NodeMaterialBlockConnectionPointTypes.Vector4, true);\r\n this.registerInput(\"world\", NodeMaterialBlockConnectionPointTypes.Matrix);\r\n\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Matrix);\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public override initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"boneSampler\");\r\n state._excludeVariableName(\"boneTextureWidth\");\r\n state._excludeVariableName(\"mBones\");\r\n state._excludeVariableName(\"BonesPerMesh\");\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._initShaderSourceAsync(state.shaderLanguage);\r\n }\r\n\r\n private async _initShaderSourceAsync(shaderLanguage: ShaderLanguage) {\r\n this._codeIsReady = false;\r\n if (shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"../../../../ShadersWGSL/ShadersInclude/bonesDeclaration\"), import(\"../../../../ShadersWGSL/ShadersInclude/bonesVertex\")]);\r\n } else {\r\n await Promise.all([import(\"../../../../Shaders/ShadersInclude/bonesDeclaration\"), import(\"../../../../Shaders/ShadersInclude/bonesVertex\")]);\r\n }\r\n\r\n this._codeIsReady = true;\r\n this.onCodeIsReadyObservable.notifyObservers(this);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"BonesBlock\";\r\n }\r\n\r\n /**\r\n * Gets the matrix indices input component\r\n */\r\n public get matricesIndices(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the matrix weights input component\r\n */\r\n public get matricesWeights(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the extra matrix indices input component\r\n */\r\n public get matricesIndicesExtra(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the extra matrix weights input component\r\n */\r\n public get matricesWeightsExtra(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the world input component\r\n */\r\n public get world(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n public override autoConfigure(material: NodeMaterial, additionalFilteringInfo: (node: NodeMaterialBlock) => boolean = () => true) {\r\n if (!this.matricesIndices.isConnected) {\r\n let matricesIndicesInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"matricesIndices\" && additionalFilteringInfo(b));\r\n\r\n if (!matricesIndicesInput) {\r\n matricesIndicesInput = new InputBlock(\"matricesIndices\");\r\n matricesIndicesInput.setAsAttribute(\"matricesIndices\");\r\n }\r\n matricesIndicesInput.output.connectTo(this.matricesIndices);\r\n }\r\n if (!this.matricesWeights.isConnected) {\r\n let matricesWeightsInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"matricesWeights\" && additionalFilteringInfo(b));\r\n\r\n if (!matricesWeightsInput) {\r\n matricesWeightsInput = new InputBlock(\"matricesWeights\");\r\n matricesWeightsInput.setAsAttribute(\"matricesWeights\");\r\n }\r\n matricesWeightsInput.output.connectTo(this.matricesWeights);\r\n }\r\n if (!this.world.isConnected) {\r\n let worldInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.World && additionalFilteringInfo(b));\r\n\r\n if (!worldInput) {\r\n worldInput = new InputBlock(\"world\");\r\n worldInput.setAsSystemValue(NodeMaterialSystemValues.World);\r\n }\r\n worldInput.output.connectTo(this.world);\r\n }\r\n }\r\n\r\n public override provideFallbacks(mesh: AbstractMesh, fallbacks: EffectFallbacks) {\r\n if (mesh && mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton) {\r\n fallbacks.addCPUSkinningFallback(0, mesh);\r\n }\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n BindBonesParameters(mesh, effect);\r\n }\r\n\r\n public override prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (!defines._areAttributesDirty) {\r\n return;\r\n }\r\n PrepareDefinesForBones(mesh, defines);\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n // Register for compilation fallbacks\r\n state.sharedData.blocksWithFallbacks.push(this);\r\n\r\n // Register for binding\r\n state.sharedData.forcedBindableBlocks.push(this);\r\n\r\n // Register for defines\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n // Register internal uniforms and samplers\r\n state.uniforms.push(\"boneTextureWidth\");\r\n state.uniforms.push(\"mBones\");\r\n\r\n state.samplers.push(\"boneSampler\");\r\n\r\n // Emit code\r\n const comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"bonesDeclaration\", comments, {\r\n removeAttributes: true,\r\n removeUniforms: false,\r\n removeVaryings: true,\r\n removeIfDef: false,\r\n });\r\n\r\n const influenceVariablename = state._getFreeVariableName(\"influence\");\r\n\r\n state.compilationString += state._emitCodeFromInclude(\"bonesVertex\", comments, {\r\n replaceStrings: [\r\n {\r\n search: /finalWorld=finalWorld\\*influence;/,\r\n replace: \"\",\r\n },\r\n {\r\n search: /influence/gm,\r\n replace: influenceVariablename,\r\n },\r\n ],\r\n });\r\n\r\n const output = this._outputs[0];\r\n const worldInput = this.world;\r\n\r\n state.compilationString += `#if NUM_BONE_INFLUENCERS>0\\n`;\r\n state.compilationString += state._declareOutput(output) + ` = ${worldInput.associatedVariableName} * ${influenceVariablename};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += state._declareOutput(output) + ` = ${worldInput.associatedVariableName};\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.BonesBlock\", BonesBlock);\r\n"]}
@@ -110,6 +110,7 @@ export class MorphTargetsBlock extends NodeMaterialBlock {
110
110
  }
111
111
  initialize(state) {
112
112
  state._excludeVariableName("morphTargetInfluences");
113
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
113
114
  this._initShaderSourceAsync(state.shaderLanguage);
114
115
  }
115
116
  async _initShaderSourceAsync(shaderLanguage) {
@@ -1 +1 @@
1
- {"version":3,"file":"morphTargetsBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Vertex/morphTargetsBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { NodeMaterial, NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport { VertexBuffer } from \"../../../../Buffers/buffer\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\n\r\nimport { BindMorphTargetParameters, PrepareDefinesForMorphTargets } from \"../../../materialHelper.functions\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to add morph targets support to vertex shader\r\n */\r\nexport class MorphTargetsBlock extends NodeMaterialBlock {\r\n private _repeatableContentAnchor: string;\r\n\r\n /**\r\n * Create a new MorphTargetsBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Vertex);\r\n\r\n this.registerInput(\"position\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"normal\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"tangent\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.tangent.addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color4 | NodeMaterialBlockConnectionPointTypes.Vector4 | NodeMaterialBlockConnectionPointTypes.Vector3\r\n );\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerInput(\"uv2\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerInput(\"color\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.registerOutput(\"positionOutput\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerOutput(\"normalOutput\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerOutput(\"tangentOutput\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this.registerOutput(\"uvOutput\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"uv2Output\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"colorOutput\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"MorphTargetsBlock\";\r\n }\r\n\r\n /**\r\n * Gets the position input component\r\n */\r\n public get position(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal input component\r\n */\r\n public get normal(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the tangent input component\r\n */\r\n public get tangent(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the uv input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the uv2 input component\r\n */\r\n public get uv2(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the color input component\r\n */\r\n public get color(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the position output component\r\n */\r\n public get positionOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal output component\r\n */\r\n public get normalOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the tangent output component\r\n */\r\n public get tangentOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the uv output component\r\n */\r\n public get uvOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the uv2 output component\r\n */\r\n public get uv2Output(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the color output component\r\n */\r\n public get colorOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n public override initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"morphTargetInfluences\");\r\n\r\n this._initShaderSourceAsync(state.shaderLanguage);\r\n }\r\n\r\n private async _initShaderSourceAsync(shaderLanguage: ShaderLanguage) {\r\n this._codeIsReady = false;\r\n\r\n if (shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertex\"),\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration\"),\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal\"),\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration\"),\r\n ]);\r\n } else {\r\n await Promise.all([\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertex\"),\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertexDeclaration\"),\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertexGlobal\"),\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration\"),\r\n ]);\r\n }\r\n\r\n this._codeIsReady = true;\r\n this.onCodeIsReadyObservable.notifyObservers(this);\r\n }\r\n\r\n public override autoConfigure(material: NodeMaterial, additionalFilteringInfo: (node: NodeMaterialBlock) => boolean = () => true) {\r\n if (!this.position.isConnected) {\r\n let positionInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"position\" && additionalFilteringInfo(b));\r\n\r\n if (!positionInput) {\r\n positionInput = new InputBlock(\"position\");\r\n positionInput.setAsAttribute();\r\n }\r\n positionInput.output.connectTo(this.position);\r\n }\r\n if (!this.normal.isConnected) {\r\n let normalInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"normal\" && additionalFilteringInfo(b));\r\n\r\n if (!normalInput) {\r\n normalInput = new InputBlock(\"normal\");\r\n normalInput.setAsAttribute(\"normal\");\r\n }\r\n normalInput.output.connectTo(this.normal);\r\n }\r\n if (!this.tangent.isConnected) {\r\n let tangentInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"tangent\" && additionalFilteringInfo(b));\r\n\r\n if (!tangentInput) {\r\n tangentInput = new InputBlock(\"tangent\");\r\n tangentInput.setAsAttribute(\"tangent\");\r\n }\r\n tangentInput.output.connectTo(this.tangent);\r\n }\r\n if (!this.uv.isConnected) {\r\n let uvInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"uv\" && additionalFilteringInfo(b));\r\n\r\n if (!uvInput) {\r\n uvInput = new InputBlock(\"uv\");\r\n uvInput.setAsAttribute(\"uv\");\r\n }\r\n uvInput.output.connectTo(this.uv);\r\n }\r\n if (!this.uv2.isConnected) {\r\n let uv2Input = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"uv2\" && additionalFilteringInfo(b));\r\n\r\n if (!uv2Input) {\r\n uv2Input = new InputBlock(\"uv2\");\r\n uv2Input.setAsAttribute(\"uv2\");\r\n }\r\n uv2Input.output.connectTo(this.uv2);\r\n }\r\n if (!this.color.isConnected) {\r\n let colorInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"color\" && additionalFilteringInfo(b));\r\n\r\n if (!colorInput) {\r\n colorInput = new InputBlock(\"color\");\r\n colorInput.setAsAttribute(\"color\");\r\n }\r\n colorInput.output.connectTo(this.color);\r\n }\r\n }\r\n\r\n public override prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if ((<Mesh>mesh).morphTargetManager) {\r\n const morphTargetManager = (<Mesh>mesh).morphTargetManager;\r\n\r\n if (morphTargetManager?.isUsingTextureForTargets && (morphTargetManager.numMaxInfluencers || morphTargetManager.numInfluencers) !== defines[\"NUM_MORPH_INFLUENCERS\"]) {\r\n defines.markAsAttributesDirty();\r\n }\r\n }\r\n\r\n if (!defines._areAttributesDirty) {\r\n return;\r\n }\r\n\r\n PrepareDefinesForMorphTargets(mesh, defines);\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (mesh && mesh.morphTargetManager && mesh.morphTargetManager.numInfluencers > 0) {\r\n BindMorphTargetParameters(mesh, effect);\r\n\r\n if (mesh.morphTargetManager.isUsingTextureForTargets) {\r\n mesh.morphTargetManager._bind(effect);\r\n }\r\n }\r\n }\r\n\r\n public override replaceRepeatableContent(\r\n vertexShaderState: NodeMaterialBuildState,\r\n fragmentShaderState: NodeMaterialBuildState,\r\n mesh: AbstractMesh,\r\n defines: NodeMaterialDefines\r\n ) {\r\n const position = this.position;\r\n const normal = this.normal;\r\n const tangent = this.tangent;\r\n const uv = this.uv;\r\n const uv2 = this.uv2;\r\n const color = this.color;\r\n const positionOutput = this.positionOutput;\r\n const normalOutput = this.normalOutput;\r\n const tangentOutput = this.tangentOutput;\r\n const uvOutput = this.uvOutput;\r\n const uv2Output = this.uv2Output;\r\n const colorOutput = this.colorOutput;\r\n const state = vertexShaderState;\r\n const repeatCount = defines.NUM_MORPH_INFLUENCERS;\r\n\r\n const manager = (<Mesh>mesh).morphTargetManager;\r\n const supportPositions = manager && manager.supportsPositions;\r\n const supportNormals = manager && manager.supportsNormals;\r\n const supportTangents = manager && manager.supportsTangents;\r\n const supportUVs = manager && manager.supportsUVs;\r\n const supportUV2s = manager && manager.supportsUV2s;\r\n const supportColors = manager && manager.supportsColors;\r\n\r\n let injectionCode = \"\";\r\n\r\n if (manager?.isUsingTextureForTargets && repeatCount > 0) {\r\n injectionCode += `${state._declareLocalVar(\"vertexID\", NodeMaterialBlockConnectionPointTypes.Float)};\\n`;\r\n }\r\n\r\n injectionCode += `#ifdef MORPHTARGETS\\n`;\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n const uniformsPrefix = isWebGPU ? \"uniforms.\" : \"\";\r\n if (manager?.isUsingTextureForTargets) {\r\n injectionCode += `for (${isWebGPU ? \"var\" : \"int\"} i = 0; i < NUM_MORPH_INFLUENCERS; i++) {\\n`;\r\n injectionCode += `if (i >= ${uniformsPrefix}morphTargetCount) { break; }\\n`;\r\n\r\n injectionCode += `vertexID = ${isWebGPU ? \"f32(vertexInputs.vertexIndex\" : \"float(gl_VertexID\"}) * ${uniformsPrefix}morphTargetTextureInfo.x;\\n`;\r\n if (supportPositions) {\r\n injectionCode += `#ifdef MORPHTARGETS_POSITION\\n`;\r\n injectionCode += `${positionOutput.associatedVariableName} += (readVector3FromRawSampler(i, vertexID) - ${position.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASPOSITIONS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportNormals) {\r\n injectionCode += `#ifdef MORPHTARGETS_NORMAL\\n`;\r\n injectionCode += `${normalOutput.associatedVariableName} += (readVector3FromRawSampler(i, vertexID) - ${normal.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASNORMALS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportUVs) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV\\n`;\r\n injectionCode += `${uvOutput.associatedVariableName} += (readVector3FromRawSampler(i, vertexID).xy - ${uv.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASUVS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportTangents) {\r\n injectionCode += `#ifdef MORPHTARGETS_TANGENT\\n`;\r\n injectionCode += `${tangentOutput.associatedVariableName}.xyz += (readVector3FromRawSampler(i, vertexID) - ${tangent.associatedVariableName}.xyz) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n\r\n if (tangent.type === NodeMaterialBlockConnectionPointTypes.Vector4) {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = ${tangent.associatedVariableName}.w;\\n`;\r\n } else {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = 1.;\\n`;\r\n }\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASTANGENTS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportUV2s) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV2\\n`;\r\n injectionCode += `${uv2Output.associatedVariableName} += (readVector3FromRawSampler(i, vertexID).xy - ${uv2.associatedVariableName}) * morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASUV2S\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportColors) {\r\n injectionCode += `#ifdef MORPHTARGETS_COLOR\\n`;\r\n injectionCode += `${colorOutput.associatedVariableName} += (readVector4FromRawSampler(i, vertexID) - ${color.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n injectionCode += \"}\\n\";\r\n } else {\r\n for (let index = 0; index < repeatCount; index++) {\r\n if (supportPositions) {\r\n injectionCode += `#ifdef MORPHTARGETS_POSITION\\n`;\r\n injectionCode += `${positionOutput.associatedVariableName} += (position${index} - ${position.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportNormals && defines[\"NORMAL\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_NORMAL\\n`;\r\n injectionCode += `${normalOutput.associatedVariableName} += (normal${index} - ${normal.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportUVs && defines[\"UV1\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV\\n`;\r\n injectionCode += `${uvOutput.associatedVariableName}.xy += (uv_${index} - ${uv.associatedVariableName}.xy) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportTangents && defines[\"TANGENT\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_TANGENT\\n`;\r\n injectionCode += `${tangentOutput.associatedVariableName}.xyz += (tangent${index} - ${tangent.associatedVariableName}.xyz) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n\r\n if (tangent.type === NodeMaterialBlockConnectionPointTypes.Vector4) {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = ${tangent.associatedVariableName}.w;\\n`;\r\n } else {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = 1.;\\n`;\r\n }\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportUV2s && defines[\"UV2\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV2\\n`;\r\n injectionCode += `${uv2Output.associatedVariableName}.xy += (uv2_${index} - ${uv2.associatedVariableName}.xy) * morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportColors && defines[\"VERTEXCOLOR_NME\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_COLOR\\n`;\r\n injectionCode += `${colorOutput.associatedVariableName} += (color${index} - ${color.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n }\r\n }\r\n injectionCode += `#endif\\n`;\r\n\r\n state.compilationString = state.compilationString.replace(this._repeatableContentAnchor, injectionCode);\r\n\r\n if (repeatCount > 0) {\r\n for (let index = 0; index < repeatCount; index++) {\r\n if (supportPositions) {\r\n state.attributes.push(VertexBuffer.PositionKind + index);\r\n }\r\n\r\n if (supportNormals && defines[\"NORMAL\"]) {\r\n state.attributes.push(VertexBuffer.NormalKind + index);\r\n }\r\n\r\n if (supportTangents && defines[\"TANGENT\"]) {\r\n state.attributes.push(VertexBuffer.TangentKind + index);\r\n }\r\n\r\n if (supportUVs && defines[\"UV1\"]) {\r\n state.attributes.push(VertexBuffer.UVKind + \"_\" + index);\r\n }\r\n\r\n if (supportUV2s && defines[\"UV2\"]) {\r\n state.attributes.push(VertexBuffer.UV2Kind + \"_\" + index);\r\n }\r\n\r\n if (supportColors && defines[\"VERTEXCOLOR_NME\"]) {\r\n state.attributes.push(VertexBuffer.ColorKind + index);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n // Register for defines\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n // Register for binding\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n // Register for repeatable content generation\r\n state.sharedData.repeatableContentBlocks.push(this);\r\n\r\n // Emit code\r\n const position = this.position;\r\n const normal = this.normal;\r\n const tangent = this.tangent;\r\n const uv = this.uv;\r\n const uv2 = this.uv2;\r\n const color = this.color;\r\n const positionOutput = this.positionOutput;\r\n const normalOutput = this.normalOutput;\r\n const tangentOutput = this.tangentOutput;\r\n const uvOutput = this.uvOutput;\r\n const uv2Output = this.uv2Output;\r\n const colorOutput = this.colorOutput;\r\n const comments = `//${this.name}`;\r\n\r\n state.uniforms.push(\"morphTargetInfluences\");\r\n state.uniforms.push(\"morphTargetCount\");\r\n state.uniforms.push(\"morphTargetTextureInfo\");\r\n state.uniforms.push(\"morphTargetTextureIndices\");\r\n state.samplers.push(\"morphTargets\");\r\n\r\n state._emitFunctionFromInclude(\"morphTargetsVertexGlobalDeclaration\", comments);\r\n state._emitFunctionFromInclude(\"morphTargetsVertexDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousMorphTargets\",\r\n });\r\n\r\n state.compilationString += `${state._declareOutput(positionOutput)} = ${position.associatedVariableName};\\n`;\r\n state.compilationString += `#ifdef NORMAL\\n`;\r\n state.compilationString += `${state._declareOutput(normalOutput)} = ${normal.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(normalOutput)} = vec3(0., 0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef TANGENT\\n`;\r\n state.compilationString += `${state._declareOutput(tangentOutput)} = ${tangent.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(tangentOutput)} = vec4(0., 0., 0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef UV1\\n`;\r\n state.compilationString += `${state._declareOutput(uvOutput)} = ${uv.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(uvOutput)} = vec2(0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef UV2\\n`;\r\n state.compilationString += `${state._declareOutput(uv2Output)} = ${uv2.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(uv2Output)} = vec2(0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef VERTEXCOLOR_NME\\n`;\r\n state.compilationString += `${state._declareOutput(colorOutput)} = ${color.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(colorOutput)} = vec4(0., 0., 0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n // Repeatable content\r\n this._repeatableContentAnchor = state._repeatableContentAnchor;\r\n state.compilationString += this._repeatableContentAnchor;\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.MorphTargetsBlock\", MorphTargetsBlock);\r\n"]}
1
+ {"version":3,"file":"morphTargetsBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Vertex/morphTargetsBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qCAAqC,EAAE,MAAM,mDAAmD,CAAC;AAE1G,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAMhF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAG7G;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IAGpD;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAE7C,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC5E,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,qCAAqC,CAAC,UAAU,CAAC,CAAC;QAChF,IAAI,CAAC,OAAO,CAAC,0CAA0C,CACnD,qCAAqC,CAAC,MAAM,GAAG,qCAAqC,CAAC,OAAO,GAAG,qCAAqC,CAAC,OAAO,CAC/I,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACzE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,qCAAqC,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACrF,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACnF,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACpF,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC/E,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAChF,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,qCAAqC,CAAC,MAAM,CAAC,CAAC;IACrF,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,EAAE;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,GAAG;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAEe,UAAU,CAAC,KAA6B;QACpD,KAAK,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,CAAC;QAEpD,mEAAmE;QACnE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,cAA8B;QAC/D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,IAAI,cAAc,gCAAwB,EAAE,CAAC;YACzC,MAAM,OAAO,CAAC,GAAG,CAAC;gBACd,MAAM,CAAC,2DAA2D,CAAC;gBACnE,MAAM,CAAC,sEAAsE,CAAC;gBAC9E,MAAM,CAAC,iEAAiE,CAAC;gBACzE,MAAM,CAAC,4EAA4E,CAAC;aACvF,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,MAAM,OAAO,CAAC,GAAG,CAAC;gBACd,MAAM,CAAC,uDAAuD,CAAC;gBAC/D,MAAM,CAAC,kEAAkE,CAAC;gBAC1E,MAAM,CAAC,6DAA6D,CAAC;gBACrE,MAAM,CAAC,wEAAwE,CAAC;aACnF,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAEe,aAAa,CAAC,QAAsB,EAAE,0BAAgE,GAAG,EAAE,CAAC,IAAI;QAC5H,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC7B,IAAI,aAAa,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,aAAa,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC3C,aAAa,CAAC,cAAc,EAAE,CAAC;YACnC,CAAC;YACD,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3B,IAAI,WAAW,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;YAE/H,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,WAAW,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACvC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;YACD,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC5B,IAAI,YAAY,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;YAEjI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,YAAY,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;gBACzC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC;YACD,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;YACvB,IAAI,OAAO,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;YAEvH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC/B,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,QAAQ,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;YAEzH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,QAAQ,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;gBACjC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1B,IAAI,UAAU,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7H,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;gBACrC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;YACD,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAEe,cAAc,CAAC,IAAkB,EAAE,YAA0B,EAAE,OAA4B;QACvG,IAAW,IAAK,CAAC,kBAAkB,EAAE,CAAC;YAClC,MAAM,kBAAkB,GAAU,IAAK,CAAC,kBAAkB,CAAC;YAE3D,IAAI,kBAAkB,EAAE,wBAAwB,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,IAAI,kBAAkB,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACnK,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACpC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAC/B,OAAO;QACX,CAAC;QAED,6BAA6B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAEe,IAAI,CAAC,MAAc,EAAE,YAA0B,EAAE,IAAW;QACxE,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;YAChF,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAExC,IAAI,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,CAAC;gBACnD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;IACL,CAAC;IAEe,wBAAwB,CACpC,iBAAyC,EACzC,mBAA2C,EAC3C,IAAkB,EAClB,OAA4B;QAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,MAAM,KAAK,GAAG,iBAAiB,CAAC;QAChC,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;QAElD,MAAM,OAAO,GAAU,IAAK,CAAC,kBAAkB,CAAC;QAChD,MAAM,gBAAgB,GAAG,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC;QAC9D,MAAM,cAAc,GAAG,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;QAC1D,MAAM,eAAe,GAAG,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;QAC5D,MAAM,UAAU,GAAG,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;QAClD,MAAM,WAAW,GAAG,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;QACpD,MAAM,aAAa,GAAG,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC;QAExD,IAAI,aAAa,GAAG,EAAE,CAAC;QAEvB,IAAI,OAAO,EAAE,wBAAwB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACvD,aAAa,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,UAAU,EAAE,qCAAqC,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7G,CAAC;QAED,aAAa,IAAI,uBAAuB,CAAC;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,gCAAwB,CAAC;QAC9D,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,IAAI,OAAO,EAAE,wBAAwB,EAAE,CAAC;YACpC,aAAa,IAAI,QAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,6CAA6C,CAAC;YAC/F,aAAa,IAAI,YAAY,cAAc,gCAAgC,CAAC;YAE5E,aAAa,IAAI,cAAc,QAAQ,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,mBAAmB,OAAO,cAAc,6BAA6B,CAAC;YACjJ,IAAI,gBAAgB,EAAE,CAAC;gBACnB,aAAa,IAAI,gCAAgC,CAAC;gBAClD,aAAa,IAAI,GAAG,cAAc,CAAC,sBAAsB,iDAAiD,QAAQ,CAAC,sBAAsB,OAAO,cAAc,6BAA6B,CAAC;gBAC5L,aAAa,IAAI,UAAU,CAAC;YAChC,CAAC;YACD,aAAa,IAAI,0CAA0C,CAAC;YAC5D,aAAa,IAAI,oBAAoB,CAAC;YACtC,aAAa,IAAI,UAAU,CAAC;YAE5B,IAAI,cAAc,EAAE,CAAC;gBACjB,aAAa,IAAI,8BAA8B,CAAC;gBAChD,aAAa,IAAI,GAAG,YAAY,CAAC,sBAAsB,iDAAiD,MAAM,CAAC,sBAAsB,OAAO,cAAc,6BAA6B,CAAC;gBACxL,aAAa,IAAI,UAAU,CAAC;YAChC,CAAC;YACD,aAAa,IAAI,wCAAwC,CAAC;YAC1D,aAAa,IAAI,oBAAoB,CAAC;YACtC,aAAa,IAAI,UAAU,CAAC;YAE5B,IAAI,UAAU,EAAE,CAAC;gBACb,aAAa,IAAI,0BAA0B,CAAC;gBAC5C,aAAa,IAAI,GAAG,QAAQ,CAAC,sBAAsB,oDAAoD,EAAE,CAAC,sBAAsB,OAAO,cAAc,6BAA6B,CAAC;gBACnL,aAAa,IAAI,UAAU,CAAC;YAChC,CAAC;YACD,aAAa,IAAI,oCAAoC,CAAC;YACtD,aAAa,IAAI,oBAAoB,CAAC;YACtC,aAAa,IAAI,UAAU,CAAC;YAE5B,IAAI,eAAe,EAAE,CAAC;gBAClB,aAAa,IAAI,+BAA+B,CAAC;gBACjD,aAAa,IAAI,GAAG,aAAa,CAAC,sBAAsB,qDAAqD,OAAO,CAAC,sBAAsB,WAAW,cAAc,6BAA6B,CAAC;gBAElM,IAAI,OAAO,CAAC,IAAI,KAAK,qCAAqC,CAAC,OAAO,EAAE,CAAC;oBACjE,aAAa,IAAI,GAAG,aAAa,CAAC,sBAAsB,QAAQ,OAAO,CAAC,sBAAsB,OAAO,CAAC;gBAC1G,CAAC;qBAAM,CAAC;oBACJ,aAAa,IAAI,GAAG,aAAa,CAAC,sBAAsB,YAAY,CAAC;gBACzE,CAAC;gBACD,aAAa,IAAI,UAAU,CAAC;YAChC,CAAC;YACD,aAAa,IAAI,yCAAyC,CAAC;YAC3D,aAAa,IAAI,oBAAoB,CAAC;YACtC,aAAa,IAAI,UAAU,CAAC;YAE5B,IAAI,WAAW,EAAE,CAAC;gBACd,aAAa,IAAI,2BAA2B,CAAC;gBAC7C,aAAa,IAAI,GAAG,SAAS,CAAC,sBAAsB,oDAAoD,GAAG,CAAC,sBAAsB,iCAAiC,CAAC;gBACpK,aAAa,IAAI,UAAU,CAAC;YAChC,CAAC;YACD,aAAa,IAAI,qCAAqC,CAAC;YACvD,aAAa,IAAI,oBAAoB,CAAC;YACtC,aAAa,IAAI,UAAU,CAAC;YAE5B,IAAI,aAAa,EAAE,CAAC;gBAChB,aAAa,IAAI,6BAA6B,CAAC;gBAC/C,aAAa,IAAI,GAAG,WAAW,CAAC,sBAAsB,iDAAiD,KAAK,CAAC,sBAAsB,OAAO,cAAc,6BAA6B,CAAC;gBACtL,aAAa,IAAI,UAAU,CAAC;YAChC,CAAC;YAED,aAAa,IAAI,KAAK,CAAC;QAC3B,CAAC;aAAM,CAAC;YACJ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC/C,IAAI,gBAAgB,EAAE,CAAC;oBACnB,aAAa,IAAI,gCAAgC,CAAC;oBAClD,aAAa,IAAI,GAAG,cAAc,CAAC,sBAAsB,gBAAgB,KAAK,MAAM,QAAQ,CAAC,sBAAsB,OAAO,cAAc,yBAAyB,KAAK,MAAM,CAAC;oBAC7K,aAAa,IAAI,UAAU,CAAC;gBAChC,CAAC;gBAED,IAAI,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACtC,aAAa,IAAI,8BAA8B,CAAC;oBAChD,aAAa,IAAI,GAAG,YAAY,CAAC,sBAAsB,cAAc,KAAK,MAAM,MAAM,CAAC,sBAAsB,OAAO,cAAc,yBAAyB,KAAK,MAAM,CAAC;oBACvK,aAAa,IAAI,UAAU,CAAC;gBAChC,CAAC;gBAED,IAAI,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC/B,aAAa,IAAI,0BAA0B,CAAC;oBAC5C,aAAa,IAAI,GAAG,QAAQ,CAAC,sBAAsB,cAAc,KAAK,MAAM,EAAE,CAAC,sBAAsB,UAAU,cAAc,yBAAyB,KAAK,MAAM,CAAC;oBAClK,aAAa,IAAI,UAAU,CAAC;gBAChC,CAAC;gBAED,IAAI,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;oBACxC,aAAa,IAAI,+BAA+B,CAAC;oBACjD,aAAa,IAAI,GAAG,aAAa,CAAC,sBAAsB,mBAAmB,KAAK,MAAM,OAAO,CAAC,sBAAsB,WAAW,cAAc,yBAAyB,KAAK,MAAM,CAAC;oBAElL,IAAI,OAAO,CAAC,IAAI,KAAK,qCAAqC,CAAC,OAAO,EAAE,CAAC;wBACjE,aAAa,IAAI,GAAG,aAAa,CAAC,sBAAsB,QAAQ,OAAO,CAAC,sBAAsB,OAAO,CAAC;oBAC1G,CAAC;yBAAM,CAAC;wBACJ,aAAa,IAAI,GAAG,aAAa,CAAC,sBAAsB,YAAY,CAAC;oBACzE,CAAC;oBACD,aAAa,IAAI,UAAU,CAAC;gBAChC,CAAC;gBAED,IAAI,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,aAAa,IAAI,2BAA2B,CAAC;oBAC7C,aAAa,IAAI,GAAG,SAAS,CAAC,sBAAsB,eAAe,KAAK,MAAM,GAAG,CAAC,sBAAsB,gCAAgC,KAAK,MAAM,CAAC;oBACpJ,aAAa,IAAI,UAAU,CAAC;gBAChC,CAAC;gBAED,IAAI,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC9C,aAAa,IAAI,6BAA6B,CAAC;oBAC/C,aAAa,IAAI,GAAG,WAAW,CAAC,sBAAsB,aAAa,KAAK,MAAM,KAAK,CAAC,sBAAsB,OAAO,cAAc,yBAAyB,KAAK,MAAM,CAAC;oBACpK,aAAa,IAAI,UAAU,CAAC;gBAChC,CAAC;YACL,CAAC;QACL,CAAC;QACD,aAAa,IAAI,UAAU,CAAC;QAE5B,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC;QAExG,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAClB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC/C,IAAI,gBAAgB,EAAE,CAAC;oBACnB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;gBAC7D,CAAC;gBAED,IAAI,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACtC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;gBAC3D,CAAC;gBAED,IAAI,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;oBACxC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;gBAC5D,CAAC;gBAED,IAAI,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC/B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;gBAC7D,CAAC;gBAED,IAAI,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;gBAC9D,CAAC;gBAED,IAAI,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC9C,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;gBAC1D,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAEkB,WAAW,CAAC,KAA6B;QACxD,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEzB,uBAAuB;QACvB,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9C,uBAAuB;QACvB,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,6CAA6C;QAC7C,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpD,YAAY;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAElC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC7C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC9C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACjD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEpC,KAAK,CAAC,wBAAwB,CAAC,qCAAqC,EAAE,QAAQ,CAAC,CAAC;QAChF,KAAK,CAAC,wBAAwB,CAAC,+BAA+B,EAAE,QAAQ,EAAE;YACtE,SAAS,EAAE,6BAA6B;SAC3C,CAAC,CAAC;QAEH,KAAK,CAAC,iBAAiB,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,QAAQ,CAAC,sBAAsB,KAAK,CAAC;QAC7G,KAAK,CAAC,iBAAiB,IAAI,iBAAiB,CAAC;QAC7C,KAAK,CAAC,iBAAiB,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,MAAM,CAAC,sBAAsB,KAAK,CAAC;QACzG,KAAK,CAAC,iBAAiB,IAAI,SAAS,CAAC;QACrC,KAAK,CAAC,iBAAiB,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,wBAAwB,CAAC;QACzF,KAAK,CAAC,iBAAiB,IAAI,UAAU,CAAC;QACtC,KAAK,CAAC,iBAAiB,IAAI,kBAAkB,CAAC;QAC9C,KAAK,CAAC,iBAAiB,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,OAAO,CAAC,sBAAsB,KAAK,CAAC;QAC3G,KAAK,CAAC,iBAAiB,IAAI,SAAS,CAAC;QACrC,KAAK,CAAC,iBAAiB,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,4BAA4B,CAAC;QAC9F,KAAK,CAAC,iBAAiB,IAAI,UAAU,CAAC;QACtC,KAAK,CAAC,iBAAiB,IAAI,cAAc,CAAC;QAC1C,KAAK,CAAC,iBAAiB,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,sBAAsB,KAAK,CAAC;QACjG,KAAK,CAAC,iBAAiB,IAAI,SAAS,CAAC;QACrC,KAAK,CAAC,iBAAiB,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACjF,KAAK,CAAC,iBAAiB,IAAI,UAAU,CAAC;QACtC,KAAK,CAAC,iBAAiB,IAAI,cAAc,CAAC;QAC1C,KAAK,CAAC,iBAAiB,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,sBAAsB,KAAK,CAAC;QACnG,KAAK,CAAC,iBAAiB,IAAI,SAAS,CAAC;QACrC,KAAK,CAAC,iBAAiB,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,oBAAoB,CAAC;QAClF,KAAK,CAAC,iBAAiB,IAAI,UAAU,CAAC;QACtC,KAAK,CAAC,iBAAiB,IAAI,0BAA0B,CAAC;QACtD,KAAK,CAAC,iBAAiB,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,sBAAsB,KAAK,CAAC;QACvG,KAAK,CAAC,iBAAiB,IAAI,SAAS,CAAC;QACrC,KAAK,CAAC,iBAAiB,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,4BAA4B,CAAC;QAC5F,KAAK,CAAC,iBAAiB,IAAI,UAAU,CAAC;QAEtC,qBAAqB;QACrB,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC,wBAAwB,CAAC;QAC/D,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,wBAAwB,CAAC;QAEzD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,aAAa,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,CAAC","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { NodeMaterial, NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport { VertexBuffer } from \"../../../../Buffers/buffer\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\n\r\nimport { BindMorphTargetParameters, PrepareDefinesForMorphTargets } from \"../../../materialHelper.functions\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to add morph targets support to vertex shader\r\n */\r\nexport class MorphTargetsBlock extends NodeMaterialBlock {\r\n private _repeatableContentAnchor: string;\r\n\r\n /**\r\n * Create a new MorphTargetsBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Vertex);\r\n\r\n this.registerInput(\"position\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"normal\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"tangent\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.tangent.addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color4 | NodeMaterialBlockConnectionPointTypes.Vector4 | NodeMaterialBlockConnectionPointTypes.Vector3\r\n );\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerInput(\"uv2\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerInput(\"color\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.registerOutput(\"positionOutput\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerOutput(\"normalOutput\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerOutput(\"tangentOutput\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this.registerOutput(\"uvOutput\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"uv2Output\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"colorOutput\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"MorphTargetsBlock\";\r\n }\r\n\r\n /**\r\n * Gets the position input component\r\n */\r\n public get position(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal input component\r\n */\r\n public get normal(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the tangent input component\r\n */\r\n public get tangent(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the uv input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the uv2 input component\r\n */\r\n public get uv2(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the color input component\r\n */\r\n public get color(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the position output component\r\n */\r\n public get positionOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal output component\r\n */\r\n public get normalOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the tangent output component\r\n */\r\n public get tangentOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the uv output component\r\n */\r\n public get uvOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the uv2 output component\r\n */\r\n public get uv2Output(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the color output component\r\n */\r\n public get colorOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n public override initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"morphTargetInfluences\");\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._initShaderSourceAsync(state.shaderLanguage);\r\n }\r\n\r\n private async _initShaderSourceAsync(shaderLanguage: ShaderLanguage) {\r\n this._codeIsReady = false;\r\n\r\n if (shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertex\"),\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration\"),\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal\"),\r\n import(\"../../../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration\"),\r\n ]);\r\n } else {\r\n await Promise.all([\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertex\"),\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertexDeclaration\"),\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertexGlobal\"),\r\n import(\"../../../../Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration\"),\r\n ]);\r\n }\r\n\r\n this._codeIsReady = true;\r\n this.onCodeIsReadyObservable.notifyObservers(this);\r\n }\r\n\r\n public override autoConfigure(material: NodeMaterial, additionalFilteringInfo: (node: NodeMaterialBlock) => boolean = () => true) {\r\n if (!this.position.isConnected) {\r\n let positionInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"position\" && additionalFilteringInfo(b));\r\n\r\n if (!positionInput) {\r\n positionInput = new InputBlock(\"position\");\r\n positionInput.setAsAttribute();\r\n }\r\n positionInput.output.connectTo(this.position);\r\n }\r\n if (!this.normal.isConnected) {\r\n let normalInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"normal\" && additionalFilteringInfo(b));\r\n\r\n if (!normalInput) {\r\n normalInput = new InputBlock(\"normal\");\r\n normalInput.setAsAttribute(\"normal\");\r\n }\r\n normalInput.output.connectTo(this.normal);\r\n }\r\n if (!this.tangent.isConnected) {\r\n let tangentInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"tangent\" && additionalFilteringInfo(b));\r\n\r\n if (!tangentInput) {\r\n tangentInput = new InputBlock(\"tangent\");\r\n tangentInput.setAsAttribute(\"tangent\");\r\n }\r\n tangentInput.output.connectTo(this.tangent);\r\n }\r\n if (!this.uv.isConnected) {\r\n let uvInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"uv\" && additionalFilteringInfo(b));\r\n\r\n if (!uvInput) {\r\n uvInput = new InputBlock(\"uv\");\r\n uvInput.setAsAttribute(\"uv\");\r\n }\r\n uvInput.output.connectTo(this.uv);\r\n }\r\n if (!this.uv2.isConnected) {\r\n let uv2Input = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"uv2\" && additionalFilteringInfo(b));\r\n\r\n if (!uv2Input) {\r\n uv2Input = new InputBlock(\"uv2\");\r\n uv2Input.setAsAttribute(\"uv2\");\r\n }\r\n uv2Input.output.connectTo(this.uv2);\r\n }\r\n if (!this.color.isConnected) {\r\n let colorInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"color\" && additionalFilteringInfo(b));\r\n\r\n if (!colorInput) {\r\n colorInput = new InputBlock(\"color\");\r\n colorInput.setAsAttribute(\"color\");\r\n }\r\n colorInput.output.connectTo(this.color);\r\n }\r\n }\r\n\r\n public override prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if ((<Mesh>mesh).morphTargetManager) {\r\n const morphTargetManager = (<Mesh>mesh).morphTargetManager;\r\n\r\n if (morphTargetManager?.isUsingTextureForTargets && (morphTargetManager.numMaxInfluencers || morphTargetManager.numInfluencers) !== defines[\"NUM_MORPH_INFLUENCERS\"]) {\r\n defines.markAsAttributesDirty();\r\n }\r\n }\r\n\r\n if (!defines._areAttributesDirty) {\r\n return;\r\n }\r\n\r\n PrepareDefinesForMorphTargets(mesh, defines);\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (mesh && mesh.morphTargetManager && mesh.morphTargetManager.numInfluencers > 0) {\r\n BindMorphTargetParameters(mesh, effect);\r\n\r\n if (mesh.morphTargetManager.isUsingTextureForTargets) {\r\n mesh.morphTargetManager._bind(effect);\r\n }\r\n }\r\n }\r\n\r\n public override replaceRepeatableContent(\r\n vertexShaderState: NodeMaterialBuildState,\r\n fragmentShaderState: NodeMaterialBuildState,\r\n mesh: AbstractMesh,\r\n defines: NodeMaterialDefines\r\n ) {\r\n const position = this.position;\r\n const normal = this.normal;\r\n const tangent = this.tangent;\r\n const uv = this.uv;\r\n const uv2 = this.uv2;\r\n const color = this.color;\r\n const positionOutput = this.positionOutput;\r\n const normalOutput = this.normalOutput;\r\n const tangentOutput = this.tangentOutput;\r\n const uvOutput = this.uvOutput;\r\n const uv2Output = this.uv2Output;\r\n const colorOutput = this.colorOutput;\r\n const state = vertexShaderState;\r\n const repeatCount = defines.NUM_MORPH_INFLUENCERS;\r\n\r\n const manager = (<Mesh>mesh).morphTargetManager;\r\n const supportPositions = manager && manager.supportsPositions;\r\n const supportNormals = manager && manager.supportsNormals;\r\n const supportTangents = manager && manager.supportsTangents;\r\n const supportUVs = manager && manager.supportsUVs;\r\n const supportUV2s = manager && manager.supportsUV2s;\r\n const supportColors = manager && manager.supportsColors;\r\n\r\n let injectionCode = \"\";\r\n\r\n if (manager?.isUsingTextureForTargets && repeatCount > 0) {\r\n injectionCode += `${state._declareLocalVar(\"vertexID\", NodeMaterialBlockConnectionPointTypes.Float)};\\n`;\r\n }\r\n\r\n injectionCode += `#ifdef MORPHTARGETS\\n`;\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n const uniformsPrefix = isWebGPU ? \"uniforms.\" : \"\";\r\n if (manager?.isUsingTextureForTargets) {\r\n injectionCode += `for (${isWebGPU ? \"var\" : \"int\"} i = 0; i < NUM_MORPH_INFLUENCERS; i++) {\\n`;\r\n injectionCode += `if (i >= ${uniformsPrefix}morphTargetCount) { break; }\\n`;\r\n\r\n injectionCode += `vertexID = ${isWebGPU ? \"f32(vertexInputs.vertexIndex\" : \"float(gl_VertexID\"}) * ${uniformsPrefix}morphTargetTextureInfo.x;\\n`;\r\n if (supportPositions) {\r\n injectionCode += `#ifdef MORPHTARGETS_POSITION\\n`;\r\n injectionCode += `${positionOutput.associatedVariableName} += (readVector3FromRawSampler(i, vertexID) - ${position.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASPOSITIONS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportNormals) {\r\n injectionCode += `#ifdef MORPHTARGETS_NORMAL\\n`;\r\n injectionCode += `${normalOutput.associatedVariableName} += (readVector3FromRawSampler(i, vertexID) - ${normal.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASNORMALS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportUVs) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV\\n`;\r\n injectionCode += `${uvOutput.associatedVariableName} += (readVector3FromRawSampler(i, vertexID).xy - ${uv.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASUVS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportTangents) {\r\n injectionCode += `#ifdef MORPHTARGETS_TANGENT\\n`;\r\n injectionCode += `${tangentOutput.associatedVariableName}.xyz += (readVector3FromRawSampler(i, vertexID) - ${tangent.associatedVariableName}.xyz) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n\r\n if (tangent.type === NodeMaterialBlockConnectionPointTypes.Vector4) {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = ${tangent.associatedVariableName}.w;\\n`;\r\n } else {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = 1.;\\n`;\r\n }\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASTANGENTS\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportUV2s) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV2\\n`;\r\n injectionCode += `${uv2Output.associatedVariableName} += (readVector3FromRawSampler(i, vertexID).xy - ${uv2.associatedVariableName}) * morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n injectionCode += `#ifdef MORPHTARGETTEXTURE_HASUV2S\\n`;\r\n injectionCode += `vertexID += 1.0;\\n`;\r\n injectionCode += `#endif\\n`;\r\n\r\n if (supportColors) {\r\n injectionCode += `#ifdef MORPHTARGETS_COLOR\\n`;\r\n injectionCode += `${colorOutput.associatedVariableName} += (readVector4FromRawSampler(i, vertexID) - ${color.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[i];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n injectionCode += \"}\\n\";\r\n } else {\r\n for (let index = 0; index < repeatCount; index++) {\r\n if (supportPositions) {\r\n injectionCode += `#ifdef MORPHTARGETS_POSITION\\n`;\r\n injectionCode += `${positionOutput.associatedVariableName} += (position${index} - ${position.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportNormals && defines[\"NORMAL\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_NORMAL\\n`;\r\n injectionCode += `${normalOutput.associatedVariableName} += (normal${index} - ${normal.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportUVs && defines[\"UV1\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV\\n`;\r\n injectionCode += `${uvOutput.associatedVariableName}.xy += (uv_${index} - ${uv.associatedVariableName}.xy) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportTangents && defines[\"TANGENT\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_TANGENT\\n`;\r\n injectionCode += `${tangentOutput.associatedVariableName}.xyz += (tangent${index} - ${tangent.associatedVariableName}.xyz) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n\r\n if (tangent.type === NodeMaterialBlockConnectionPointTypes.Vector4) {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = ${tangent.associatedVariableName}.w;\\n`;\r\n } else {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = 1.;\\n`;\r\n }\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportUV2s && defines[\"UV2\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV2\\n`;\r\n injectionCode += `${uv2Output.associatedVariableName}.xy += (uv2_${index} - ${uv2.associatedVariableName}.xy) * morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n\r\n if (supportColors && defines[\"VERTEXCOLOR_NME\"]) {\r\n injectionCode += `#ifdef MORPHTARGETS_COLOR\\n`;\r\n injectionCode += `${colorOutput.associatedVariableName} += (color${index} - ${color.associatedVariableName}) * ${uniformsPrefix}morphTargetInfluences[${index}];\\n`;\r\n injectionCode += `#endif\\n`;\r\n }\r\n }\r\n }\r\n injectionCode += `#endif\\n`;\r\n\r\n state.compilationString = state.compilationString.replace(this._repeatableContentAnchor, injectionCode);\r\n\r\n if (repeatCount > 0) {\r\n for (let index = 0; index < repeatCount; index++) {\r\n if (supportPositions) {\r\n state.attributes.push(VertexBuffer.PositionKind + index);\r\n }\r\n\r\n if (supportNormals && defines[\"NORMAL\"]) {\r\n state.attributes.push(VertexBuffer.NormalKind + index);\r\n }\r\n\r\n if (supportTangents && defines[\"TANGENT\"]) {\r\n state.attributes.push(VertexBuffer.TangentKind + index);\r\n }\r\n\r\n if (supportUVs && defines[\"UV1\"]) {\r\n state.attributes.push(VertexBuffer.UVKind + \"_\" + index);\r\n }\r\n\r\n if (supportUV2s && defines[\"UV2\"]) {\r\n state.attributes.push(VertexBuffer.UV2Kind + \"_\" + index);\r\n }\r\n\r\n if (supportColors && defines[\"VERTEXCOLOR_NME\"]) {\r\n state.attributes.push(VertexBuffer.ColorKind + index);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n // Register for defines\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n // Register for binding\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n // Register for repeatable content generation\r\n state.sharedData.repeatableContentBlocks.push(this);\r\n\r\n // Emit code\r\n const position = this.position;\r\n const normal = this.normal;\r\n const tangent = this.tangent;\r\n const uv = this.uv;\r\n const uv2 = this.uv2;\r\n const color = this.color;\r\n const positionOutput = this.positionOutput;\r\n const normalOutput = this.normalOutput;\r\n const tangentOutput = this.tangentOutput;\r\n const uvOutput = this.uvOutput;\r\n const uv2Output = this.uv2Output;\r\n const colorOutput = this.colorOutput;\r\n const comments = `//${this.name}`;\r\n\r\n state.uniforms.push(\"morphTargetInfluences\");\r\n state.uniforms.push(\"morphTargetCount\");\r\n state.uniforms.push(\"morphTargetTextureInfo\");\r\n state.uniforms.push(\"morphTargetTextureIndices\");\r\n state.samplers.push(\"morphTargets\");\r\n\r\n state._emitFunctionFromInclude(\"morphTargetsVertexGlobalDeclaration\", comments);\r\n state._emitFunctionFromInclude(\"morphTargetsVertexDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousMorphTargets\",\r\n });\r\n\r\n state.compilationString += `${state._declareOutput(positionOutput)} = ${position.associatedVariableName};\\n`;\r\n state.compilationString += `#ifdef NORMAL\\n`;\r\n state.compilationString += `${state._declareOutput(normalOutput)} = ${normal.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(normalOutput)} = vec3(0., 0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef TANGENT\\n`;\r\n state.compilationString += `${state._declareOutput(tangentOutput)} = ${tangent.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(tangentOutput)} = vec4(0., 0., 0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef UV1\\n`;\r\n state.compilationString += `${state._declareOutput(uvOutput)} = ${uv.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(uvOutput)} = vec2(0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef UV2\\n`;\r\n state.compilationString += `${state._declareOutput(uv2Output)} = ${uv2.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(uv2Output)} = vec2(0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n state.compilationString += `#ifdef VERTEXCOLOR_NME\\n`;\r\n state.compilationString += `${state._declareOutput(colorOutput)} = ${color.associatedVariableName};\\n`;\r\n state.compilationString += `#else\\n`;\r\n state.compilationString += `${state._declareOutput(colorOutput)} = vec4(0., 0., 0., 0.);\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n // Repeatable content\r\n this._repeatableContentAnchor = state._repeatableContentAnchor;\r\n state.compilationString += this._repeatableContentAnchor;\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.MorphTargetsBlock\", MorphTargetsBlock);\r\n"]}
@@ -1345,7 +1345,7 @@ export class NodeMaterial extends PushMaterial {
1345
1345
  if (!this._buildWasSuccessful) {
1346
1346
  this.build();
1347
1347
  }
1348
- return this._fragmentCompilationState.getProcessedShaderAsync();
1348
+ return await this._fragmentCompilationState.getProcessedShaderAsync();
1349
1349
  }
1350
1350
  /**
1351
1351
  * Binds the world matrix to the material
@@ -1505,7 +1505,7 @@ export class NodeMaterial extends PushMaterial {
1505
1505
  * @returns a promise fulfilled when the node editor is visible
1506
1506
  */
1507
1507
  async edit(config) {
1508
- return new Promise((resolve) => {
1508
+ return await new Promise((resolve) => {
1509
1509
  this.BJSNODEMATERIALEDITOR = this.BJSNODEMATERIALEDITOR || this._getGlobalNodeMaterialEditor();
1510
1510
  if (typeof this.BJSNODEMATERIALEDITOR == "undefined") {
1511
1511
  const editorUrl = config && config.editorURL ? config.editorURL : NodeMaterial.EditorURL;
@@ -1678,7 +1678,7 @@ export class NodeMaterial extends PushMaterial {
1678
1678
  * @returns a promise that will fulfil when the material is fully loaded
1679
1679
  */
1680
1680
  async loadAsync(url, rootUrl = "") {
1681
- return NodeMaterial.ParseFromFileAsync("", url, this.getScene(), rootUrl, true, this);
1681
+ return await NodeMaterial.ParseFromFileAsync("", url, this.getScene(), rootUrl, true, this);
1682
1682
  }
1683
1683
  _gatherBlocks(rootNode, list) {
1684
1684
  if (list.indexOf(rootNode) !== -1) {
@@ -1934,6 +1934,7 @@ export class NodeMaterial extends PushMaterial {
1934
1934
  * Awaits for all the material textures to be ready before resolving the returned promise.
1935
1935
  * @returns A promise that resolves when the textures are ready.
1936
1936
  */
1937
+ // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax
1937
1938
  whenTexturesReadyAsync() {
1938
1939
  // Ensures all textures are ready to render.
1939
1940
  const textureReadyPromises = [];
@@ -1946,6 +1947,7 @@ export class NodeMaterial extends PushMaterial {
1946
1947
  textureResolve();
1947
1948
  });
1948
1949
  internalTexture.onErrorObservable.addOnce((e) => {
1950
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
1949
1951
  textureReject(e);
1950
1952
  });
1951
1953
  }));
@@ -2001,6 +2003,7 @@ export class NodeMaterial extends PushMaterial {
2001
2003
  * @param options defines options to be used with the node material
2002
2004
  * @returns a promise that will resolve to the new node material
2003
2005
  */
2006
+ // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax
2004
2007
  static ParseFromSnippetAsync(snippetId, scene = EngineStore.LastCreatedScene, rootUrl = "", nodeMaterial, skipBuild = false, waitForTextureReadyness = false, urlRewriter, options) {
2005
2008
  if (snippetId === "_BLANK") {
2006
2009
  return Promise.resolve(NodeMaterial.CreateDefault("blank", scene));
@@ -2026,15 +2029,19 @@ export class NodeMaterial extends PushMaterial {
2026
2029
  }
2027
2030
  }
2028
2031
  catch (err) {
2032
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
2029
2033
  reject(err);
2030
2034
  }
2031
2035
  if (waitForTextureReadyness) {
2032
2036
  nodeMaterial
2033
2037
  .whenTexturesReadyAsync()
2038
+ // eslint-disable-next-line github/no-then
2034
2039
  .then(() => {
2035
2040
  resolve(nodeMaterial);
2036
2041
  })
2042
+ // eslint-disable-next-line github/no-then
2037
2043
  .catch((err) => {
2044
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
2038
2045
  reject(err);
2039
2046
  });
2040
2047
  }
@@ -2043,6 +2050,7 @@ export class NodeMaterial extends PushMaterial {
2043
2050
  }
2044
2051
  }
2045
2052
  else {
2053
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
2046
2054
  reject("Unable to load the snippet " + snippetId);
2047
2055
  }
2048
2056
  }