@babylonjs/core 7.12.0 → 7.13.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 (526) hide show
  1. package/Animations/animation.js +1 -2
  2. package/Animations/animation.js.map +1 -1
  3. package/Animations/animationGroupMask.d.ts +1 -1
  4. package/Animations/animationGroupMask.js +2 -2
  5. package/Animations/animationGroupMask.js.map +1 -1
  6. package/Animations/animationKey.d.ts +1 -1
  7. package/Animations/animationKey.js.map +1 -1
  8. package/Behaviors/Meshes/handConstraintBehavior.d.ts +3 -3
  9. package/Behaviors/Meshes/handConstraintBehavior.js +16 -17
  10. package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
  11. package/Behaviors/Meshes/sixDofDragBehavior.js +2 -3
  12. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  13. package/Bones/bone.js +31 -32
  14. package/Bones/bone.js.map +1 -1
  15. package/Bones/boneIKController.js +5 -6
  16. package/Bones/boneIKController.js.map +1 -1
  17. package/Bones/boneLookController.js +13 -13
  18. package/Bones/boneLookController.js.map +1 -1
  19. package/Buffers/bufferUtils.d.ts +13 -0
  20. package/Buffers/bufferUtils.js +42 -0
  21. package/Buffers/bufferUtils.js.map +1 -0
  22. package/Buffers/index.d.ts +1 -0
  23. package/Buffers/index.js +1 -0
  24. package/Buffers/index.js.map +1 -1
  25. package/Cameras/Inputs/freeCameraMouseWheelInput.js +5 -6
  26. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  27. package/Cameras/Inputs/freeCameraVirtualJoystickInput.js +5 -5
  28. package/Cameras/Inputs/freeCameraVirtualJoystickInput.js.map +1 -1
  29. package/Cameras/VR/vrExperienceHelper.js +8 -10
  30. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  31. package/Compute/computeEffect.js +2 -3
  32. package/Compute/computeEffect.js.map +1 -1
  33. package/Compute/computeShader.js +19 -20
  34. package/Compute/computeShader.js.map +1 -1
  35. package/Culling/Helper/IBoundingInfoHelperPlatform.d.ts +4 -0
  36. package/Culling/Helper/IBoundingInfoHelperPlatform.js.map +1 -1
  37. package/Culling/Helper/boundingInfoHelper.d.ts +26 -4
  38. package/Culling/Helper/boundingInfoHelper.js +41 -10
  39. package/Culling/Helper/boundingInfoHelper.js.map +1 -1
  40. package/Culling/Helper/computeShaderBoundingHelper.d.ts +12 -3
  41. package/Culling/Helper/computeShaderBoundingHelper.js +164 -76
  42. package/Culling/Helper/computeShaderBoundingHelper.js.map +1 -1
  43. package/Culling/Helper/transformFeedbackBoundingHelper.d.ts +11 -0
  44. package/Culling/Helper/transformFeedbackBoundingHelper.js +46 -14
  45. package/Culling/Helper/transformFeedbackBoundingHelper.js.map +1 -1
  46. package/Debug/debugLayer.d.ts +1 -1
  47. package/Debug/debugLayer.js.map +1 -1
  48. package/Decorators/nodeDecorator.d.ts +1 -1
  49. package/Decorators/nodeDecorator.js +1 -1
  50. package/Decorators/nodeDecorator.js.map +1 -1
  51. package/DeviceInput/InputDevices/deviceEnums.d.ts +5 -5
  52. package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
  53. package/DeviceInput/eventFactory.js +3 -3
  54. package/DeviceInput/eventFactory.js.map +1 -1
  55. package/Engines/AbstractEngine/abstractEngine.cubeTexture.js +2 -2
  56. package/Engines/AbstractEngine/abstractEngine.cubeTexture.js.map +1 -1
  57. package/Engines/Extensions/engine.computeShader.d.ts +1 -1
  58. package/Engines/Extensions/engine.computeShader.js.map +1 -1
  59. package/Engines/Extensions/engine.cubeTexture.js +2 -2
  60. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  61. package/Engines/Extensions/engine.dynamicTexture.js +2 -2
  62. package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
  63. package/Engines/Extensions/engine.multiRender.js +3 -3
  64. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  65. package/Engines/Extensions/engine.multiview.js +2 -2
  66. package/Engines/Extensions/engine.multiview.js.map +1 -1
  67. package/Engines/Extensions/engine.prefilteredCubeTexture.js +3 -3
  68. package/Engines/Extensions/engine.prefilteredCubeTexture.js.map +1 -1
  69. package/Engines/Extensions/engine.rawTexture.js +4 -4
  70. package/Engines/Extensions/engine.rawTexture.js.map +1 -1
  71. package/Engines/Extensions/engine.renderTarget.js +3 -3
  72. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  73. package/Engines/Extensions/engine.renderTargetCube.js +2 -2
  74. package/Engines/Extensions/engine.renderTargetCube.js.map +1 -1
  75. package/Engines/Native/nativeShaderProcessors.js +1 -2
  76. package/Engines/Native/nativeShaderProcessors.js.map +1 -1
  77. package/Engines/Processors/shaderProcessor.js +2 -3
  78. package/Engines/Processors/shaderProcessor.js.map +1 -1
  79. package/Engines/WebGL/webGL2ShaderProcessors.js +1 -2
  80. package/Engines/WebGL/webGL2ShaderProcessors.js.map +1 -1
  81. package/Engines/WebGL/webGLShaderProcessors.js +1 -2
  82. package/Engines/WebGL/webGLShaderProcessors.js.map +1 -1
  83. package/Engines/WebGPU/Extensions/engine.computeShader.js +1 -2
  84. package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
  85. package/Engines/WebGPU/Extensions/engine.cubeTexture.js +2 -2
  86. package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
  87. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +2 -2
  88. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js.map +1 -1
  89. package/Engines/WebGPU/Extensions/engine.multiRender.js +2 -2
  90. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  91. package/Engines/WebGPU/Extensions/engine.rawTexture.js +5 -5
  92. package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
  93. package/Engines/WebGPU/Extensions/engine.renderTarget.js +3 -3
  94. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  95. package/Engines/WebGPU/Extensions/engine.renderTargetCube.js +2 -2
  96. package/Engines/WebGPU/Extensions/engine.renderTargetCube.js.map +1 -1
  97. package/Engines/WebGPU/webgpuBufferManager.js +1 -1
  98. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  99. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +81 -82
  100. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  101. package/Engines/WebGPU/webgpuCacheSampler.js +60 -64
  102. package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
  103. package/Engines/WebGPU/webgpuClearQuad.js +1 -2
  104. package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
  105. package/Engines/WebGPU/webgpuComputeContext.js +13 -15
  106. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  107. package/Engines/WebGPU/webgpuConstants.d.ts +39 -39
  108. package/Engines/WebGPU/webgpuConstants.js.map +1 -1
  109. package/Engines/WebGPU/webgpuHardwareTexture.js +6 -8
  110. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  111. package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -2
  112. package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
  113. package/Engines/WebGPU/webgpuQuerySet.js +3 -3
  114. package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
  115. package/Engines/WebGPU/webgpuShaderProcessor.js +15 -19
  116. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  117. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +8 -10
  118. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  119. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +26 -28
  120. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  121. package/Engines/WebGPU/webgpuTextureHelper.js +413 -416
  122. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  123. package/Engines/WebGPU/webgpuTextureManager.js +50 -51
  124. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  125. package/Engines/WebGPU/webgpuTimestampQuery.js +1 -2
  126. package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
  127. package/Engines/abstractEngine.js +4 -4
  128. package/Engines/abstractEngine.js.map +1 -1
  129. package/Engines/engine.js +2 -2
  130. package/Engines/engine.js.map +1 -1
  131. package/Engines/nativeEngine.js +9 -9
  132. package/Engines/nativeEngine.js.map +1 -1
  133. package/Engines/nullEngine.js +5 -5
  134. package/Engines/nullEngine.js.map +1 -1
  135. package/Engines/renderTargetWrapper.js +1 -2
  136. package/Engines/renderTargetWrapper.js.map +1 -1
  137. package/Engines/shaderStore.js +6 -7
  138. package/Engines/shaderStore.js.map +1 -1
  139. package/Engines/thinEngine.js +4 -5
  140. package/Engines/thinEngine.js.map +1 -1
  141. package/Engines/webgpuEngine.d.ts +11 -0
  142. package/Engines/webgpuEngine.js +91 -72
  143. package/Engines/webgpuEngine.js.map +1 -1
  144. package/Events/deviceInputEvents.d.ts +1 -1
  145. package/Events/deviceInputEvents.js.map +1 -1
  146. package/FlowGraph/flowGraph.d.ts +1 -1
  147. package/FlowGraph/flowGraph.js +5 -5
  148. package/FlowGraph/flowGraph.js.map +1 -1
  149. package/FlowGraph/flowGraphBlock.js +2 -3
  150. package/FlowGraph/flowGraphBlock.js.map +1 -1
  151. package/FlowGraph/flowGraphConnection.d.ts +1 -1
  152. package/FlowGraph/flowGraphConnection.js.map +1 -1
  153. package/FlowGraph/flowGraphDataConnection.js +3 -3
  154. package/FlowGraph/flowGraphDataConnection.js.map +1 -1
  155. package/FlowGraph/flowGraphExecutionBlock.js +2 -3
  156. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  157. package/FlowGraph/flowGraphSignalConnection.js +3 -3
  158. package/FlowGraph/flowGraphSignalConnection.js.map +1 -1
  159. package/Gamepads/dualShockGamepad.d.ts +2 -2
  160. package/Gamepads/dualShockGamepad.js +14 -14
  161. package/Gamepads/dualShockGamepad.js.map +1 -1
  162. package/Gamepads/xboxGamepad.d.ts +2 -2
  163. package/Gamepads/xboxGamepad.js +14 -14
  164. package/Gamepads/xboxGamepad.js.map +1 -1
  165. package/Gizmos/gizmo.d.ts +2 -2
  166. package/Gizmos/gizmo.js +4 -4
  167. package/Gizmos/gizmo.js.map +1 -1
  168. package/Gizmos/gizmoManager.js +2 -2
  169. package/Gizmos/gizmoManager.js.map +1 -1
  170. package/Gizmos/scaleGizmo.js +3 -3
  171. package/Gizmos/scaleGizmo.js.map +1 -1
  172. package/Loading/sceneLoader.d.ts +1 -1
  173. package/Loading/sceneLoader.js +6 -6
  174. package/Loading/sceneLoader.js.map +1 -1
  175. package/Materials/GreasedLine/greasedLineMaterialInterfaces.d.ts +3 -3
  176. package/Materials/GreasedLine/greasedLineMaterialInterfaces.js.map +1 -1
  177. package/Materials/GreasedLine/greasedLinePluginMaterial.js +10 -11
  178. package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
  179. package/Materials/GreasedLine/greasedLineSimpleMaterial.js +8 -9
  180. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  181. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +3 -4
  182. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  183. package/Materials/Node/Blocks/Dual/fogBlock.js +2 -3
  184. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  185. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +1 -2
  186. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  187. package/Materials/Node/Blocks/Dual/lightBlock.js +5 -6
  188. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  189. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +4 -5
  190. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  191. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +7 -8
  192. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  193. package/Materials/Node/Blocks/Dual/textureBlock.js +4 -6
  194. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  195. package/Materials/Node/Blocks/Fragment/TBNBlock.js +2 -4
  196. package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
  197. package/Materials/Node/Blocks/Fragment/derivativeBlock.js +1 -2
  198. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  199. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -2
  200. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  201. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js +1 -2
  202. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
  203. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +5 -6
  204. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  205. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +1 -2
  206. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  207. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +5 -6
  208. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  209. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +3 -4
  210. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  211. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +7 -9
  212. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  213. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -2
  214. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  215. package/Materials/Node/Blocks/Input/inputBlock.js +19 -21
  216. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  217. package/Materials/Node/Blocks/Input/prePassTextureBlock.js +3 -4
  218. package/Materials/Node/Blocks/Input/prePassTextureBlock.js.map +1 -1
  219. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +2 -3
  220. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  221. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +4 -5
  222. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  223. package/Materials/Node/Blocks/PBR/iridescenceBlock.js +1 -2
  224. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
  225. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +28 -29
  226. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  227. package/Materials/Node/Blocks/PBR/reflectionBlock.js +4 -5
  228. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  229. package/Materials/Node/Blocks/PBR/refractionBlock.js +5 -6
  230. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  231. package/Materials/Node/Blocks/PBR/sheenBlock.js +4 -5
  232. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  233. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +2 -3
  234. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  235. package/Materials/Node/Blocks/Vertex/instancesBlock.js +1 -2
  236. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  237. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +1 -2
  238. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  239. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +1 -2
  240. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  241. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +1 -2
  242. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  243. package/Materials/Node/Blocks/arcTan2Block.js +1 -2
  244. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  245. package/Materials/Node/Blocks/biPlanarBlock.js +3 -4
  246. package/Materials/Node/Blocks/biPlanarBlock.js.map +1 -1
  247. package/Materials/Node/Blocks/clampBlock.js +4 -5
  248. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  249. package/Materials/Node/Blocks/cloudBlock.js +3 -4
  250. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  251. package/Materials/Node/Blocks/curveBlock.js +1 -2
  252. package/Materials/Node/Blocks/curveBlock.js.map +1 -1
  253. package/Materials/Node/Blocks/customBlock.js +1 -2
  254. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  255. package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -2
  256. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  257. package/Materials/Node/Blocks/meshAttributeExistsBlock.d.ts +1 -1
  258. package/Materials/Node/Blocks/meshAttributeExistsBlock.js +35 -35
  259. package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
  260. package/Materials/Node/Blocks/modBlock.js +1 -2
  261. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  262. package/Materials/Node/Blocks/remapBlock.js +3 -3
  263. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  264. package/Materials/Node/Blocks/simplexPerlin3DBlock.js +1 -2
  265. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  266. package/Materials/Node/Blocks/transformBlock.js +1 -2
  267. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  268. package/Materials/Node/Blocks/triPlanarBlock.js +10 -12
  269. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  270. package/Materials/Node/Blocks/voronoiNoiseBlock.js +3 -4
  271. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  272. package/Materials/Node/Blocks/waveBlock.d.ts +1 -1
  273. package/Materials/Node/Blocks/waveBlock.js +4 -4
  274. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  275. package/Materials/Node/Blocks/worleyNoise3DBlock.js +3 -4
  276. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  277. package/Materials/Node/Enums/nodeMaterialBlockConnectionPointMode.d.ts +1 -1
  278. package/Materials/Node/Enums/nodeMaterialBlockConnectionPointMode.js.map +1 -1
  279. package/Materials/Node/nodeMaterial.js +3 -4
  280. package/Materials/Node/nodeMaterial.js.map +1 -1
  281. package/Materials/Node/nodeMaterialBlock.js +5 -6
  282. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  283. package/Materials/Node/nodeMaterialBlockConnectionPoint.d.ts +2 -2
  284. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +10 -10
  285. package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
  286. package/Materials/Node/nodeMaterialBuildState.js +18 -19
  287. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  288. package/Materials/Node/nodeMaterialConnectionPointCustomObject.js +3 -3
  289. package/Materials/Node/nodeMaterialConnectionPointCustomObject.js.map +1 -1
  290. package/Materials/PBR/pbrBaseMaterial.js +3 -4
  291. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  292. package/Materials/Textures/internalTexture.d.ts +1 -1
  293. package/Materials/Textures/internalTexture.js +13 -13
  294. package/Materials/Textures/internalTexture.js.map +1 -1
  295. package/Materials/Textures/ktx2decoderTypes.d.ts +1 -1
  296. package/Materials/Textures/ktx2decoderTypes.js.map +1 -1
  297. package/Materials/Textures/rawCubeTexture.js +1 -2
  298. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  299. package/Materials/effect.functions.js +2 -3
  300. package/Materials/effect.functions.js.map +1 -1
  301. package/Materials/effect.js +3 -4
  302. package/Materials/effect.js.map +1 -1
  303. package/Materials/effect.webgl.functions.js +1 -2
  304. package/Materials/effect.webgl.functions.js.map +1 -1
  305. package/Materials/material.js +7 -9
  306. package/Materials/material.js.map +1 -1
  307. package/Materials/materialPluginEvent.d.ts +1 -1
  308. package/Materials/materialPluginEvent.js.map +1 -1
  309. package/Materials/materialPluginManager.js +9 -11
  310. package/Materials/materialPluginManager.js.map +1 -1
  311. package/Materials/meshDebugPluginMaterial.d.ts +1 -1
  312. package/Materials/meshDebugPluginMaterial.js +2 -2
  313. package/Materials/meshDebugPluginMaterial.js.map +1 -1
  314. package/Materials/shaderLanguage.d.ts +1 -1
  315. package/Materials/shaderLanguage.js.map +1 -1
  316. package/Materials/shadowDepthWrapper.js +1 -2
  317. package/Materials/shadowDepthWrapper.js.map +1 -1
  318. package/Materials/standardMaterial.js +2 -3
  319. package/Materials/standardMaterial.js.map +1 -1
  320. package/Maths/math.axis.d.ts +2 -2
  321. package/Maths/math.axis.js.map +1 -1
  322. package/Maths/math.path.d.ts +1 -1
  323. package/Maths/math.path.js +3 -3
  324. package/Maths/math.path.js.map +1 -1
  325. package/Maths/math.vector.js +32 -6
  326. package/Maths/math.vector.js.map +1 -1
  327. package/Meshes/Builders/greasedLineBuilder.d.ts +2 -2
  328. package/Meshes/Builders/greasedLineBuilder.js +21 -23
  329. package/Meshes/Builders/greasedLineBuilder.js.map +1 -1
  330. package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +3 -3
  331. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  332. package/Meshes/GreasedLine/greasedLineRibbonMesh.js +14 -14
  333. package/Meshes/GreasedLine/greasedLineRibbonMesh.js.map +1 -1
  334. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +2 -2
  335. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
  336. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js +2 -2
  337. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -1
  338. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js +3 -3
  339. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js.map +1 -1
  340. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js +3 -3
  341. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js.map +1 -1
  342. package/Meshes/Node/Blocks/Set/setColorsBlock.js +2 -2
  343. package/Meshes/Node/Blocks/Set/setColorsBlock.js.map +1 -1
  344. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js +2 -2
  345. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js.map +1 -1
  346. package/Meshes/Node/Blocks/Set/setNormalsBlock.js +2 -2
  347. package/Meshes/Node/Blocks/Set/setNormalsBlock.js.map +1 -1
  348. package/Meshes/Node/Blocks/Set/setPositionsBlock.js +2 -2
  349. package/Meshes/Node/Blocks/Set/setPositionsBlock.js.map +1 -1
  350. package/Meshes/Node/Blocks/Set/setTangentsBlock.js +2 -2
  351. package/Meshes/Node/Blocks/Set/setTangentsBlock.js.map +1 -1
  352. package/Meshes/Node/Blocks/Set/setUVsBlock.js +3 -3
  353. package/Meshes/Node/Blocks/Set/setUVsBlock.js.map +1 -1
  354. package/Meshes/Node/Blocks/Sources/boxBlock.js +2 -2
  355. package/Meshes/Node/Blocks/Sources/boxBlock.js.map +1 -1
  356. package/Meshes/Node/Blocks/Sources/capsuleBlock.js +2 -2
  357. package/Meshes/Node/Blocks/Sources/capsuleBlock.js.map +1 -1
  358. package/Meshes/Node/Blocks/Sources/cylinderBlock.js +2 -2
  359. package/Meshes/Node/Blocks/Sources/cylinderBlock.js.map +1 -1
  360. package/Meshes/Node/Blocks/Sources/discBlock.js +2 -2
  361. package/Meshes/Node/Blocks/Sources/discBlock.js.map +1 -1
  362. package/Meshes/Node/Blocks/Sources/gridBlock.js +2 -2
  363. package/Meshes/Node/Blocks/Sources/gridBlock.js.map +1 -1
  364. package/Meshes/Node/Blocks/Sources/icoSphereBlock.js +2 -2
  365. package/Meshes/Node/Blocks/Sources/icoSphereBlock.js.map +1 -1
  366. package/Meshes/Node/Blocks/Sources/meshBlock.js +2 -2
  367. package/Meshes/Node/Blocks/Sources/meshBlock.js.map +1 -1
  368. package/Meshes/Node/Blocks/Sources/planeBlock.js +2 -2
  369. package/Meshes/Node/Blocks/Sources/planeBlock.js.map +1 -1
  370. package/Meshes/Node/Blocks/Sources/sphereBlock.js +2 -2
  371. package/Meshes/Node/Blocks/Sources/sphereBlock.js.map +1 -1
  372. package/Meshes/Node/Blocks/Sources/torusBlock.js +2 -2
  373. package/Meshes/Node/Blocks/Sources/torusBlock.js.map +1 -1
  374. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js +2 -2
  375. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
  376. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js +2 -2
  377. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js.map +1 -1
  378. package/Meshes/Node/Blocks/booleanGeometryBlock.js +3 -3
  379. package/Meshes/Node/Blocks/booleanGeometryBlock.js.map +1 -1
  380. package/Meshes/Node/Blocks/conditionBlock.js +2 -2
  381. package/Meshes/Node/Blocks/conditionBlock.js.map +1 -1
  382. package/Meshes/Node/Blocks/geometryClampBlock.js +3 -3
  383. package/Meshes/Node/Blocks/geometryClampBlock.js.map +1 -1
  384. package/Meshes/Node/Blocks/geometryCollectionBlock.js +2 -2
  385. package/Meshes/Node/Blocks/geometryCollectionBlock.js.map +1 -1
  386. package/Meshes/Node/Blocks/geometryCurveBlock.js +2 -2
  387. package/Meshes/Node/Blocks/geometryCurveBlock.js.map +1 -1
  388. package/Meshes/Node/Blocks/geometryOptimizeBlock.js +3 -3
  389. package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
  390. package/Meshes/Node/Blocks/geometryTransformBlock.js +2 -2
  391. package/Meshes/Node/Blocks/geometryTransformBlock.js.map +1 -1
  392. package/Meshes/Node/Blocks/geometryTrigonometryBlock.js +2 -2
  393. package/Meshes/Node/Blocks/geometryTrigonometryBlock.js.map +1 -1
  394. package/Meshes/Node/Blocks/mappingBlock.js +2 -2
  395. package/Meshes/Node/Blocks/mappingBlock.js.map +1 -1
  396. package/Meshes/Node/Blocks/mathBlock.js +2 -2
  397. package/Meshes/Node/Blocks/mathBlock.js.map +1 -1
  398. package/Meshes/Node/Blocks/mergeGeometryBlock.js +2 -2
  399. package/Meshes/Node/Blocks/mergeGeometryBlock.js.map +1 -1
  400. package/Meshes/Node/Blocks/randomBlock.js +2 -2
  401. package/Meshes/Node/Blocks/randomBlock.js.map +1 -1
  402. package/Meshes/Node/nodeGeometryBlock.js +3 -3
  403. package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
  404. package/Meshes/Node/nodeGeometryBlockConnectionPoint.d.ts +2 -2
  405. package/Meshes/Node/nodeGeometryBlockConnectionPoint.js +7 -7
  406. package/Meshes/Node/nodeGeometryBlockConnectionPoint.js.map +1 -1
  407. package/Meshes/abstractMesh.d.ts +49 -17
  408. package/Meshes/abstractMesh.js +128 -133
  409. package/Meshes/abstractMesh.js.map +1 -1
  410. package/Meshes/geometry.d.ts +8 -0
  411. package/Meshes/geometry.js +17 -0
  412. package/Meshes/geometry.js.map +1 -1
  413. package/Meshes/instancedMesh.d.ts +5 -8
  414. package/Meshes/instancedMesh.js +15 -9
  415. package/Meshes/instancedMesh.js.map +1 -1
  416. package/Meshes/mesh.d.ts +7 -3
  417. package/Meshes/mesh.js +21 -13
  418. package/Meshes/mesh.js.map +1 -1
  419. package/Meshes/meshSimplification.d.ts +1 -1
  420. package/Meshes/meshSimplification.js +1 -1
  421. package/Meshes/meshSimplification.js.map +1 -1
  422. package/Meshes/meshSimplificationSceneComponent.js +2 -2
  423. package/Meshes/meshSimplificationSceneComponent.js.map +1 -1
  424. package/Meshes/transformNode.js +7 -8
  425. package/Meshes/transformNode.js.map +1 -1
  426. package/Misc/assetsManager.d.ts +1 -1
  427. package/Misc/assetsManager.js +9 -9
  428. package/Misc/assetsManager.js.map +1 -1
  429. package/Misc/basis.js +2 -2
  430. package/Misc/basis.js.map +1 -1
  431. package/Misc/copyTextureToTexture.d.ts +1 -1
  432. package/Misc/copyTextureToTexture.js +1 -1
  433. package/Misc/copyTextureToTexture.js.map +1 -1
  434. package/Misc/environmentTextureTools.js +3 -3
  435. package/Misc/environmentTextureTools.js.map +1 -1
  436. package/Misc/iInspectable.d.ts +1 -1
  437. package/Misc/iInspectable.js.map +1 -1
  438. package/Misc/khronosTextureContainer2.js +2 -2
  439. package/Misc/khronosTextureContainer2.js.map +1 -1
  440. package/Misc/timer.d.ts +1 -1
  441. package/Misc/timer.js +5 -5
  442. package/Misc/timer.js.map +1 -1
  443. package/Misc/virtualJoystick.d.ts +1 -1
  444. package/Misc/virtualJoystick.js +16 -16
  445. package/Misc/virtualJoystick.js.map +1 -1
  446. package/Particles/particleSystem.js +3 -3
  447. package/Particles/particleSystem.js.map +1 -1
  448. package/Particles/particleSystemComponent.js +1 -2
  449. package/Particles/particleSystemComponent.js.map +1 -1
  450. package/Particles/pointsCloudSystem.d.ts +1 -1
  451. package/Particles/pointsCloudSystem.js +14 -14
  452. package/Particles/pointsCloudSystem.js.map +1 -1
  453. package/Particles/subEmitter.d.ts +1 -1
  454. package/Particles/subEmitter.js +1 -1
  455. package/Particles/subEmitter.js.map +1 -1
  456. package/Physics/physicsHelper.d.ts +2 -2
  457. package/Physics/physicsHelper.js +6 -7
  458. package/Physics/physicsHelper.js.map +1 -1
  459. package/Physics/v1/physicsImpostor.js +4 -5
  460. package/Physics/v1/physicsImpostor.js.map +1 -1
  461. package/Physics/v2/IPhysicsEnginePlugin.d.ts +16 -8
  462. package/Physics/v2/IPhysicsEnginePlugin.js +9 -0
  463. package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
  464. package/Physics/v2/Plugins/havokPlugin.js +96 -79
  465. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  466. package/Physics/v2/physicsAggregate.js +8 -9
  467. package/Physics/v2/physicsAggregate.js.map +1 -1
  468. package/Physics/v2/physicsBody.d.ts +14 -2
  469. package/Physics/v2/physicsBody.js +30 -11
  470. package/Physics/v2/physicsBody.js.map +1 -1
  471. package/Physics/v2/physicsConstraint.js +8 -9
  472. package/Physics/v2/physicsConstraint.js.map +1 -1
  473. package/Physics/v2/physicsMaterial.d.ts +1 -1
  474. package/Physics/v2/physicsMaterial.js.map +1 -1
  475. package/Physics/v2/physicsShape.js +9 -10
  476. package/Physics/v2/physicsShape.js.map +1 -1
  477. package/Physics/v2/ragdoll.js +11 -12
  478. package/Physics/v2/ragdoll.js.map +1 -1
  479. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +2 -2
  480. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  481. package/PostProcesses/depthOfFieldEffect.d.ts +1 -1
  482. package/PostProcesses/depthOfFieldEffect.js +3 -3
  483. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  484. package/PostProcesses/postProcess.js +2 -3
  485. package/PostProcesses/postProcess.js.map +1 -1
  486. package/PostProcesses/tonemapPostProcess.d.ts +1 -1
  487. package/PostProcesses/tonemapPostProcess.js +4 -4
  488. package/PostProcesses/tonemapPostProcess.js.map +1 -1
  489. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +1 -1
  490. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +10 -10
  491. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  492. package/Shaders/spriteMap.fragment.js +3 -2
  493. package/Shaders/spriteMap.fragment.js.map +1 -1
  494. package/ShadersWGSL/boundingInfo.compute.js +8 -8
  495. package/ShadersWGSL/boundingInfo.compute.js.map +1 -1
  496. package/XR/features/WebXRDepthSensing.js +2 -2
  497. package/XR/features/WebXRDepthSensing.js.map +1 -1
  498. package/XR/features/WebXRHandTracking.d.ts +2 -2
  499. package/XR/features/WebXRHandTracking.js +76 -76
  500. package/XR/features/WebXRHandTracking.js.map +1 -1
  501. package/XR/features/WebXRLightEstimation.js +2 -2
  502. package/XR/features/WebXRLightEstimation.js.map +1 -1
  503. package/XR/features/WebXRNearInteraction.d.ts +1 -1
  504. package/XR/features/WebXRNearInteraction.js +5 -5
  505. package/XR/features/WebXRNearInteraction.js.map +1 -1
  506. package/XR/features/WebXRRawCameraAccess.js +2 -2
  507. package/XR/features/WebXRRawCameraAccess.js.map +1 -1
  508. package/XR/motionController/webXRProfiledMotionController.js +2 -2
  509. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  510. package/XR/webXRCamera.js +3 -4
  511. package/XR/webXRCamera.js.map +1 -1
  512. package/XR/webXREnterExitUI.js +3 -4
  513. package/XR/webXREnterExitUI.js.map +1 -1
  514. package/XR/webXRExperienceHelper.js +12 -13
  515. package/XR/webXRExperienceHelper.js.map +1 -1
  516. package/XR/webXRManagedOutputCanvas.d.ts +1 -1
  517. package/XR/webXRManagedOutputCanvas.js +15 -6
  518. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  519. package/XR/webXRRenderTargetTextureProvider.js +2 -2
  520. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  521. package/XR/webXRTypes.d.ts +2 -2
  522. package/XR/webXRTypes.js.map +1 -1
  523. package/package.json +1 -1
  524. package/scene.d.ts +1 -1
  525. package/scene.js +4 -4
  526. package/scene.js.map +1 -1
@@ -1,6 +1,5 @@
1
1
  import { NodeMaterialBlockConnectionPointTypes } from "./Enums/nodeMaterialBlockConnectionPointTypes.js";
2
2
  import { NodeMaterialBlockTargets } from "./Enums/nodeMaterialBlockTargets.js";
3
- import { ShaderLanguage } from "../shaderLanguage.js";
4
3
  import { ShaderStore as EngineShaderStore } from "../../Engines/shaderStore.js";
5
4
 
6
5
  /**
@@ -70,7 +69,7 @@ export class NodeMaterialBuildState {
70
69
  }
71
70
  /** Gets suffix to add behind type casting */
72
71
  get fSuffix() {
73
- return this.shaderLanguage === ShaderLanguage.WGSL ? "f" : "";
72
+ return this.shaderLanguage === 1 /* ShaderLanguage.WGSL */ ? "f" : "";
74
73
  }
75
74
  /**
76
75
  * Finalize the compilation strings
@@ -79,7 +78,7 @@ export class NodeMaterialBuildState {
79
78
  finalize(state) {
80
79
  const emitComments = state.sharedData.emitComments;
81
80
  const isFragmentMode = this.target === NodeMaterialBlockTargets.Fragment;
82
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
81
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
83
82
  if (isFragmentMode) {
84
83
  this.compilationString = `\n${emitComments ? "//Entry point\n" : ""}@fragment\nfn main(input: FragmentInputs) -> FragmentOutputs {\n${this.compilationString}`;
85
84
  }
@@ -117,7 +116,7 @@ export class NodeMaterialBuildState {
117
116
  if (this._attributeDeclaration && !isFragmentMode) {
118
117
  this.compilationString = `\n${emitComments ? "//Attributes\n" : ""}${this._attributeDeclaration}\n${this.compilationString}`;
119
118
  }
120
- if (this.shaderLanguage !== ShaderLanguage.WGSL) {
119
+ if (this.shaderLanguage !== 1 /* ShaderLanguage.WGSL */) {
121
120
  this.compilationString = "precision highp float;\n" + this.compilationString;
122
121
  this.compilationString = "#if defined(WEBGL2) || defines(WEBGPU)\nprecision highp sampler2DArray;\n#endif\n" + this.compilationString;
123
122
  if (isFragmentMode) {
@@ -180,7 +179,7 @@ export class NodeMaterialBuildState {
180
179
  if (define) {
181
180
  this._samplerDeclaration += `#if ${define}\n`;
182
181
  }
183
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
182
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
184
183
  this._samplerDeclaration += `var ${name + `Sampler`}: sampler;\n`;
185
184
  this._samplerDeclaration += `var ${name}: texture_2d<f32>;\n`;
186
185
  }
@@ -203,7 +202,7 @@ export class NodeMaterialBuildState {
203
202
  if (define) {
204
203
  this._samplerDeclaration += `#if ${define}\n`;
205
204
  }
206
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
205
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
207
206
  this._samplerDeclaration += `var ${name + `Sampler`}: sampler;\n`;
208
207
  this._samplerDeclaration += `var ${name}: texture_cube<f32>;\n`;
209
208
  }
@@ -253,7 +252,7 @@ export class NodeMaterialBuildState {
253
252
  * @internal
254
253
  */
255
254
  _getShaderType(type) {
256
- const isWGSL = this.shaderLanguage === ShaderLanguage.WGSL;
255
+ const isWGSL = this.shaderLanguage === 1 /* ShaderLanguage.WGSL */;
257
256
  switch (type) {
258
257
  case NodeMaterialBlockConnectionPointTypes.Float:
259
258
  return isWGSL ? "f32" : "float";
@@ -393,7 +392,7 @@ export class NodeMaterialBuildState {
393
392
  }
394
393
  }
395
394
  const shaderType = this._getShaderType(type);
396
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
395
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
397
396
  this.sharedData.varyingDeclaration += `varying ${name}: ${shaderType};\n`;
398
397
  }
399
398
  else {
@@ -408,7 +407,7 @@ export class NodeMaterialBuildState {
408
407
  * @internal
409
408
  */
410
409
  _getVaryingName(name) {
411
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
410
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
412
411
  return (this.target !== NodeMaterialBlockTargets.Fragment ? "vertexOutputs." : "fragmentInputs.") + name;
413
412
  }
414
413
  return name;
@@ -430,7 +429,7 @@ export class NodeMaterialBuildState {
430
429
  }
431
430
  }
432
431
  const shaderType = this._getShaderType(type);
433
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
432
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
434
433
  this._uniformDeclaration += `uniform ${name}: ${shaderType};\n`;
435
434
  }
436
435
  else {
@@ -444,7 +443,7 @@ export class NodeMaterialBuildState {
444
443
  * @internal
445
444
  */
446
445
  _generateTernary(trueStatement, falseStatement, condition) {
447
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
446
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
448
447
  return `select(${falseStatement}, ${trueStatement}, ${condition})`;
449
448
  }
450
449
  return `${condition} ? ${trueStatement} : ${falseStatement}`;
@@ -468,7 +467,7 @@ export class NodeMaterialBuildState {
468
467
  * @internal
469
468
  */
470
469
  _declareLocalVar(name, type, isConst) {
471
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
470
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
472
471
  return `${isConst ? "const" : "var"} ${name}: ${this._getShaderType(type)}`;
473
472
  }
474
473
  else {
@@ -479,7 +478,7 @@ export class NodeMaterialBuildState {
479
478
  * @internal
480
479
  */
481
480
  _samplerCubeFunc() {
482
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
481
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
483
482
  return "textureSample";
484
483
  }
485
484
  return "textureCube";
@@ -488,7 +487,7 @@ export class NodeMaterialBuildState {
488
487
  * @internal
489
488
  */
490
489
  _samplerFunc() {
491
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
490
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
492
491
  return "textureSample";
493
492
  }
494
493
  return "texture2D";
@@ -497,7 +496,7 @@ export class NodeMaterialBuildState {
497
496
  * @internal
498
497
  */
499
498
  _samplerLODFunc() {
500
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
499
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
501
500
  return "textureSampleLevel";
502
501
  }
503
502
  return "texture2DLodEXT";
@@ -506,7 +505,7 @@ export class NodeMaterialBuildState {
506
505
  * @internal
507
506
  */
508
507
  _generateTextureSample(uv, samplerName) {
509
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
508
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
510
509
  return `${this._samplerFunc()}(${samplerName},${samplerName + `Sampler`}, ${uv})`;
511
510
  }
512
511
  return `${this._samplerFunc()}(${samplerName}, ${uv})`;
@@ -515,7 +514,7 @@ export class NodeMaterialBuildState {
515
514
  * @internal
516
515
  */
517
516
  _generateTextureSampleLOD(uv, samplerName, lod) {
518
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
517
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
519
518
  return `${this._samplerLODFunc()}(${samplerName},${samplerName + `Sampler`}, ${uv}, ${lod})`;
520
519
  }
521
520
  return `${this._samplerLODFunc()}(${samplerName}, ${uv}, ${lod})`;
@@ -524,7 +523,7 @@ export class NodeMaterialBuildState {
524
523
  * @internal
525
524
  */
526
525
  _generateTextureSampleCube(uv, samplerName) {
527
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
526
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
528
527
  return `${this._samplerCubeFunc()}(${samplerName},${samplerName + `Sampler`}, ${uv})`;
529
528
  }
530
529
  return `${this._samplerCubeFunc()}(${samplerName}, ${uv})`;
@@ -533,7 +532,7 @@ export class NodeMaterialBuildState {
533
532
  * @internal
534
533
  */
535
534
  _generateTextureSampleCubeLOD(uv, samplerName, lod) {
536
- if (this.shaderLanguage === ShaderLanguage.WGSL) {
535
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
537
536
  return `${this._samplerCubeFunc()}(${samplerName},${samplerName + `Sampler`}, ${uv}, ${lod})`;
538
537
  }
539
538
  return `${this._samplerCubeFunc()}(${samplerName}, ${uv}, ${lod})`;
@@ -1 +1 @@
1
- {"version":3,"file":"nodeMaterialBuildState.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Node/nodeMaterialBuildState.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlockConnectionPointTypes } from \"./Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport { NodeMaterialBlockTargets } from \"./Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialBuildStateSharedData } from \"./nodeMaterialBuildStateSharedData\";\r\nimport { ShaderLanguage } from \"../shaderLanguage\";\r\nimport type { NodeMaterialConnectionPoint } from \"./nodeMaterialBlockConnectionPoint\";\r\nimport { ShaderStore as EngineShaderStore } from \"../../Engines/shaderStore\";\r\nimport { Constants } from \"../../Engines/constants\";\r\n\r\n/**\r\n * Class used to store node based material build state\r\n */\r\nexport class NodeMaterialBuildState {\r\n /** Gets or sets a boolean indicating if the current state can emit uniform buffers */\r\n public supportUniformBuffers = false;\r\n /**\r\n * Gets the list of emitted attributes\r\n */\r\n public attributes: string[] = [];\r\n /**\r\n * Gets the list of emitted uniforms\r\n */\r\n public uniforms: string[] = [];\r\n /**\r\n * Gets the list of emitted constants\r\n */\r\n public constants: string[] = [];\r\n /**\r\n * Gets the list of emitted samplers\r\n */\r\n public samplers: string[] = [];\r\n /**\r\n * Gets the list of emitted functions\r\n */\r\n public functions: { [key: string]: string } = {};\r\n /**\r\n * Gets the list of emitted extensions\r\n */\r\n public extensions: { [key: string]: string } = {};\r\n /**\r\n * Gets the list of emitted prePass outputs - if using the prepass\r\n */\r\n public prePassOutput: { [key: string]: string } = {};\r\n\r\n /**\r\n * Gets the target of the compilation state\r\n */\r\n public target: NodeMaterialBlockTargets;\r\n /**\r\n * Gets the list of emitted counters\r\n */\r\n public counters: { [key: string]: number } = {};\r\n\r\n /**\r\n * Shared data between multiple NodeMaterialBuildState instances\r\n */\r\n public sharedData: NodeMaterialBuildStateSharedData;\r\n\r\n /** @internal */\r\n public _vertexState: NodeMaterialBuildState;\r\n\r\n /** @internal */\r\n public _attributeDeclaration = \"\";\r\n /** @internal */\r\n public _uniformDeclaration = \"\";\r\n /** @internal */\r\n public _constantDeclaration = \"\";\r\n /** @internal */\r\n public _samplerDeclaration = \"\";\r\n /** @internal */\r\n public _varyingTransfer = \"\";\r\n /** @internal */\r\n public _injectAtEnd = \"\";\r\n\r\n private _repeatableContentAnchorIndex = 0;\r\n /** @internal */\r\n public _builtCompilationString = \"\";\r\n\r\n /**\r\n * Gets the emitted compilation strings\r\n */\r\n public compilationString = \"\";\r\n\r\n /**\r\n * Gets the current shader language to use\r\n */\r\n public get shaderLanguage() {\r\n return this.sharedData.nodeMaterial.shaderLanguage;\r\n }\r\n\r\n /** Gets suffix to add behind type casting */\r\n public get fSuffix() {\r\n return this.shaderLanguage === ShaderLanguage.WGSL ? \"f\" : \"\";\r\n }\r\n\r\n /**\r\n * Finalize the compilation strings\r\n * @param state defines the current compilation state\r\n */\r\n public finalize(state: NodeMaterialBuildState) {\r\n const emitComments = state.sharedData.emitComments;\r\n const isFragmentMode = this.target === NodeMaterialBlockTargets.Fragment;\r\n\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n if (isFragmentMode) {\r\n this.compilationString = `\\n${emitComments ? \"//Entry point\\n\" : \"\"}@fragment\\nfn main(input: FragmentInputs) -> FragmentOutputs {\\n${this.compilationString}`;\r\n } else {\r\n this.compilationString = `\\n${emitComments ? \"//Entry point\\n\" : \"\"}@vertex\\nfn main(input: VertexInputs) -> FragmentInputs{\\n${this.compilationString}`;\r\n }\r\n } else {\r\n this.compilationString = `\\n${emitComments ? \"//Entry point\\n\" : \"\"}void main(void) {\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._constantDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Constants\\n\" : \"\"}${this._constantDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n let functionCode = \"\";\r\n for (const functionName in this.functions) {\r\n functionCode += this.functions[functionName] + `\\n`;\r\n }\r\n this.compilationString = `\\n${functionCode}\\n${this.compilationString}`;\r\n\r\n if (!isFragmentMode && this._varyingTransfer) {\r\n this.compilationString = `${this.compilationString}\\n${this._varyingTransfer}`;\r\n }\r\n\r\n if (this._injectAtEnd) {\r\n this.compilationString = `${this.compilationString}\\n${this._injectAtEnd}`;\r\n }\r\n\r\n this.compilationString = `${this.compilationString}\\n}`;\r\n\r\n if (this.sharedData.varyingDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Varyings\\n\" : \"\"}${this.sharedData.varyingDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._samplerDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Samplers\\n\" : \"\"}${this._samplerDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._uniformDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Uniforms\\n\" : \"\"}${this._uniformDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._attributeDeclaration && !isFragmentMode) {\r\n this.compilationString = `\\n${emitComments ? \"//Attributes\\n\" : \"\"}${this._attributeDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this.shaderLanguage !== ShaderLanguage.WGSL) {\r\n this.compilationString = \"precision highp float;\\n\" + this.compilationString;\r\n this.compilationString = \"#if defined(WEBGL2) || defines(WEBGPU)\\nprecision highp sampler2DArray;\\n#endif\\n\" + this.compilationString;\r\n\r\n if (isFragmentMode) {\r\n this.compilationString =\r\n \"#if defined(PREPASS)\\r\\n#extension GL_EXT_draw_buffers : require\\r\\nlayout(location = 0) out highp vec4 glFragData[SCENE_MRT_COUNT];\\r\\nhighp vec4 gl_FragColor;\\r\\n#endif\\r\\n\" +\r\n this.compilationString;\r\n }\r\n\r\n for (const extensionName in this.extensions) {\r\n const extension = this.extensions[extensionName];\r\n this.compilationString = `\\n${extension}\\n${this.compilationString}`;\r\n }\r\n }\r\n\r\n this._builtCompilationString = this.compilationString;\r\n }\r\n\r\n /** @internal */\r\n public get _repeatableContentAnchor(): string {\r\n return `###___ANCHOR${this._repeatableContentAnchorIndex++}___###`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getFreeVariableName(prefix: string): string {\r\n prefix = prefix.replace(/[^a-zA-Z_]+/g, \"\");\r\n\r\n if (this.sharedData.variableNames[prefix] === undefined) {\r\n this.sharedData.variableNames[prefix] = 0;\r\n\r\n // Check reserved words\r\n if (prefix === \"output\" || prefix === \"texture\") {\r\n return prefix + this.sharedData.variableNames[prefix];\r\n }\r\n\r\n return prefix;\r\n } else {\r\n this.sharedData.variableNames[prefix]++;\r\n }\r\n\r\n return prefix + this.sharedData.variableNames[prefix];\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getFreeDefineName(prefix: string): string {\r\n if (this.sharedData.defineNames[prefix] === undefined) {\r\n this.sharedData.defineNames[prefix] = 0;\r\n } else {\r\n this.sharedData.defineNames[prefix]++;\r\n }\r\n\r\n return prefix + this.sharedData.defineNames[prefix];\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _excludeVariableName(name: string) {\r\n this.sharedData.variableNames[name] = 0;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emit2DSampler(name: string, define = \"\", force = false) {\r\n if (this.samplers.indexOf(name) < 0 || force) {\r\n if (define) {\r\n this._samplerDeclaration += `#if ${define}\\n`;\r\n }\r\n\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._samplerDeclaration += `var ${name + Constants.AUTOSAMPLERSUFFIX}: sampler;\\n`;\r\n this._samplerDeclaration += `var ${name}: texture_2d<f32>;\\n`;\r\n } else {\r\n this._samplerDeclaration += `uniform sampler2D ${name};\\n`;\r\n }\r\n\r\n if (define) {\r\n this._samplerDeclaration += `#endif\\n`;\r\n }\r\n\r\n if (!force) {\r\n this.samplers.push(name);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitCubeSampler(name: string, define = \"\", force = false) {\r\n if (this.samplers.indexOf(name) < 0 || force) {\r\n if (define) {\r\n this._samplerDeclaration += `#if ${define}\\n`;\r\n }\r\n\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._samplerDeclaration += `var ${name + Constants.AUTOSAMPLERSUFFIX}: sampler;\\n`;\r\n this._samplerDeclaration += `var ${name}: texture_cube<f32>;\\n`;\r\n } else {\r\n this._samplerDeclaration += `uniform samplerCube ${name};\\n`;\r\n }\r\n\r\n if (define) {\r\n this._samplerDeclaration += `#endif\\n`;\r\n }\r\n\r\n if (!force) {\r\n this.samplers.push(name);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emit2DArraySampler(name: string) {\r\n if (this.samplers.indexOf(name) < 0) {\r\n this._samplerDeclaration += `uniform sampler2DArray ${name};\\n`;\r\n this.samplers.push(name);\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getGLType(type: NodeMaterialBlockConnectionPointTypes): string {\r\n switch (type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n return \"float\";\r\n case NodeMaterialBlockConnectionPointTypes.Int:\r\n return \"int\";\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n return \"vec2\";\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n return \"vec3\";\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n return \"vec4\";\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n return \"mat4\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getShaderType(type: NodeMaterialBlockConnectionPointTypes) {\r\n const isWGSL = this.shaderLanguage === ShaderLanguage.WGSL;\r\n\r\n switch (type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n return isWGSL ? \"f32\" : \"float\";\r\n case NodeMaterialBlockConnectionPointTypes.Int:\r\n return isWGSL ? \"i32\" : \"int\";\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n return isWGSL ? \"vec2f\" : \"vec2\";\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n return isWGSL ? \"vec3f\" : \"vec3\";\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n return isWGSL ? \"vec4f\" : \"vec4\";\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n return isWGSL ? \"mat4x4f\" : \"mat4\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitExtension(name: string, extension: string, define: string = \"\") {\r\n if (this.extensions[name]) {\r\n return;\r\n }\r\n\r\n if (define) {\r\n extension = `#if ${define}\\n${extension}\\n#endif`;\r\n }\r\n this.extensions[name] = extension;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitFunction(name: string, code: string, comments: string) {\r\n if (this.functions[name]) {\r\n return;\r\n }\r\n\r\n if (this.sharedData.emitComments) {\r\n code = comments + `\\n` + code;\r\n }\r\n\r\n this.functions[name] = code;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitCodeFromInclude(\r\n includeName: string,\r\n comments: string,\r\n options?: {\r\n replaceStrings?: { search: RegExp; replace: string }[];\r\n repeatKey?: string;\r\n substitutionVars?: string;\r\n }\r\n ) {\r\n if (options && options.repeatKey) {\r\n return `#include<${includeName}>${options.substitutionVars ? \"(\" + options.substitutionVars + \")\" : \"\"}[0..${options.repeatKey}]\\n`;\r\n }\r\n\r\n const store = EngineShaderStore.GetIncludesShadersStore(this.shaderLanguage);\r\n let code = store[includeName] + \"\\n\";\r\n\r\n if (this.sharedData.emitComments) {\r\n code = comments + `\\n` + code;\r\n }\r\n\r\n if (!options) {\r\n return code;\r\n }\r\n\r\n if (options.replaceStrings) {\r\n for (let index = 0; index < options.replaceStrings.length; index++) {\r\n const replaceString = options.replaceStrings[index];\r\n code = code.replace(replaceString.search, replaceString.replace);\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitFunctionFromInclude(\r\n includeName: string,\r\n comments: string,\r\n options?: {\r\n repeatKey?: string;\r\n substitutionVars?: string;\r\n removeAttributes?: boolean;\r\n removeUniforms?: boolean;\r\n removeVaryings?: boolean;\r\n removeIfDef?: boolean;\r\n replaceStrings?: { search: RegExp; replace: string }[];\r\n },\r\n storeKey: string = \"\"\r\n ) {\r\n const key = includeName + storeKey;\r\n if (this.functions[key]) {\r\n return;\r\n }\r\n\r\n if (!options || (!options.removeAttributes && !options.removeUniforms && !options.removeVaryings && !options.removeIfDef && !options.replaceStrings)) {\r\n if (options && options.repeatKey) {\r\n this.functions[key] = `#include<${includeName}>${options.substitutionVars ? \"(\" + options.substitutionVars + \")\" : \"\"}[0..${options.repeatKey}]\\n`;\r\n } else {\r\n this.functions[key] = `#include<${includeName}>${options?.substitutionVars ? \"(\" + options?.substitutionVars + \")\" : \"\"}\\n`;\r\n }\r\n\r\n if (this.sharedData.emitComments) {\r\n this.functions[key] = comments + `\\n` + this.functions[key];\r\n }\r\n\r\n return;\r\n }\r\n\r\n const store = EngineShaderStore.GetIncludesShadersStore(this.shaderLanguage);\r\n\r\n this.functions[key] = store[includeName];\r\n\r\n if (this.sharedData.emitComments) {\r\n this.functions[key] = comments + `\\n` + this.functions[key];\r\n }\r\n\r\n if (options.removeIfDef) {\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#ifdef.+$/gm, \"\");\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#endif.*$/gm, \"\");\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#else.*$/gm, \"\");\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#elif.*$/gm, \"\");\r\n }\r\n\r\n if (options.removeAttributes) {\r\n this.functions[key] = this.functions[key].replace(/\\s*?attribute .+?;/g, \"\\n\");\r\n }\r\n\r\n if (options.removeUniforms) {\r\n this.functions[key] = this.functions[key].replace(/\\s*?uniform .*?;/g, \"\\n\");\r\n }\r\n\r\n if (options.removeVaryings) {\r\n this.functions[key] = this.functions[key].replace(/\\s*?(varying|in) .+?;/g, \"\\n\");\r\n }\r\n\r\n if (options.replaceStrings) {\r\n for (let index = 0; index < options.replaceStrings.length; index++) {\r\n const replaceString = options.replaceStrings[index];\r\n this.functions[key] = this.functions[key].replace(replaceString.search, replaceString.replace);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _registerTempVariable(name: string) {\r\n if (this.sharedData.temps.indexOf(name) !== -1) {\r\n return false;\r\n }\r\n\r\n this.sharedData.temps.push(name);\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitVaryingFromString(name: string, type: NodeMaterialBlockConnectionPointTypes, define: string = \"\", notDefine = false) {\r\n if (this.sharedData.varyings.indexOf(name) !== -1) {\r\n return false;\r\n }\r\n\r\n this.sharedData.varyings.push(name);\r\n\r\n if (define) {\r\n if (define.startsWith(\"defined(\")) {\r\n this.sharedData.varyingDeclaration += `#if ${define}\\n`;\r\n } else {\r\n this.sharedData.varyingDeclaration += `${notDefine ? \"#ifndef\" : \"#ifdef\"} ${define}\\n`;\r\n }\r\n }\r\n const shaderType = this._getShaderType(type);\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this.sharedData.varyingDeclaration += `varying ${name}: ${shaderType};\\n`;\r\n } else {\r\n this.sharedData.varyingDeclaration += `varying ${shaderType} ${name};\\n`;\r\n }\r\n if (define) {\r\n this.sharedData.varyingDeclaration += `#endif\\n`;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getVaryingName(name: string): string {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return (this.target !== NodeMaterialBlockTargets.Fragment ? \"vertexOutputs.\" : \"fragmentInputs.\") + name;\r\n }\r\n\r\n return name;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitUniformFromString(name: string, type: NodeMaterialBlockConnectionPointTypes, define: string = \"\", notDefine = false) {\r\n if (this.uniforms.indexOf(name) !== -1) {\r\n return;\r\n }\r\n\r\n this.uniforms.push(name);\r\n\r\n if (define) {\r\n if (define.startsWith(\"defined(\")) {\r\n this._uniformDeclaration += `#if ${define}\\n`;\r\n } else {\r\n this._uniformDeclaration += `${notDefine ? \"#ifndef\" : \"#ifdef\"} ${define}\\n`;\r\n }\r\n }\r\n const shaderType = this._getShaderType(type);\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._uniformDeclaration += `uniform ${name}: ${shaderType};\\n`;\r\n } else {\r\n this._uniformDeclaration += `uniform ${shaderType} ${name};\\n`;\r\n }\r\n if (define) {\r\n this._uniformDeclaration += `#endif\\n`;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTernary(trueStatement: string, falseStatement: string, condition: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `select(${falseStatement}, ${trueStatement}, ${condition})`;\r\n }\r\n\r\n return `${condition} ? ${trueStatement} : ${falseStatement}`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitFloat(value: number) {\r\n if (value.toString() === value.toFixed(0)) {\r\n return `${value}.0`;\r\n }\r\n\r\n return value.toString();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _declareOutput(output: NodeMaterialConnectionPoint, isConst?: boolean): string {\r\n return this._declareLocalVar(output.associatedVariableName, output.type, isConst);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _declareLocalVar(name: string, type: NodeMaterialBlockConnectionPointTypes, isConst?: boolean): string {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${isConst ? \"const\" : \"var\"} ${name}: ${this._getShaderType(type)}`;\r\n } else {\r\n return `${this._getShaderType(type)} ${name}`;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _samplerCubeFunc() {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSample\";\r\n }\r\n return \"textureCube\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _samplerFunc() {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSample\";\r\n }\r\n return \"texture2D\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _samplerLODFunc() {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSampleLevel\";\r\n }\r\n return \"texture2DLodEXT\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSample(uv: string, samplerName: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv})`;\r\n }\r\n return `${this._samplerFunc()}(${samplerName}, ${uv})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSampleLOD(uv: string, samplerName: string, lod: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerLODFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv}, ${lod})`;\r\n }\r\n return `${this._samplerLODFunc()}(${samplerName}, ${uv}, ${lod})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSampleCube(uv: string, samplerName: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerCubeFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv})`;\r\n }\r\n return `${this._samplerCubeFunc()}(${samplerName}, ${uv})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSampleCubeLOD(uv: string, samplerName: string, lod: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerCubeFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv}, ${lod})`;\r\n }\r\n return `${this._samplerCubeFunc()}(${samplerName}, ${uv}, ${lod})`;\r\n }\r\n\r\n private _convertVariableDeclarationToWGSL(type: string, dest: string, source: string): string {\r\n return source.replace(new RegExp(`(${type})\\\\s+(\\\\w+)`, \"g\"), `var $2: ${dest}`);\r\n }\r\n\r\n private _convertVariableConstructorsToWGSL(type: string, dest: string, source: string): string {\r\n return source.replace(new RegExp(`(${type})\\\\(`, \"g\"), ` ${dest}(`);\r\n }\r\n\r\n private _convertOutParametersToWGSL(source: string): string {\r\n return source.replace(new RegExp(`out\\\\s+var\\\\s+(\\\\w+)\\\\s*:\\\\s*(\\\\w+)`, \"g\"), `$1: ptr<function, $2>`);\r\n }\r\n\r\n private _convertTernaryOperandsToWGSL(source: string): string {\r\n return source.replace(new RegExp(`\\\\[(.*?)\\\\?(.*?):(.*)\\\\]`, \"g\"), (match, condition, trueCase, falseCase) => `select(${falseCase}, ${trueCase}, ${condition})`);\r\n }\r\n\r\n private _convertModOperatorsToWGSL(source: string): string {\r\n return source.replace(new RegExp(`mod\\\\((.+?),\\\\s*(.+?)\\\\)`, \"g\"), (match, left, right) => `((${left})%(${right}))`);\r\n }\r\n\r\n private _convertConstToWGSL(source: string): string {\r\n return source.replace(new RegExp(`const var`, \"g\"), `const`);\r\n }\r\n\r\n private _convertInnerFunctionsToWGSL(source: string): string {\r\n return source.replace(new RegExp(`inversesqrt`, \"g\"), `inverseSqrt`);\r\n }\r\n\r\n private _convertFunctionsToWGSL(source: string): string {\r\n const regex = /var\\s+(\\w+)\\s*:\\s*(\\w+)\\((.*)\\)/g;\r\n\r\n let match: RegExpMatchArray | null;\r\n while ((match = regex.exec(source)) !== null) {\r\n const funcName = match[1];\r\n const funcType = match[2];\r\n const params = match[3]; // All parameters as a single string\r\n\r\n // Processing the parameters to match 'name: type' format\r\n const formattedParams = params.replace(/var\\s/g, \"\");\r\n\r\n // Constructing the final output string\r\n source = source.replace(match[0], `fn ${funcName}(${formattedParams}) -> ${funcType}`);\r\n }\r\n return source;\r\n }\r\n\r\n public _babylonSLtoWGSL(code: string) {\r\n // variable declarations\r\n code = this._convertVariableDeclarationToWGSL(\"void\", \"voidnull\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"bool\", \"bool\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"int\", \"i32\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"uint\", \"u32\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"float\", \"f32\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"vec2\", \"vec2f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"vec3\", \"vec3f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"vec4\", \"vec4f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"mat2\", \"mat2x2f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"mat3\", \"mat3x3f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"mat4\", \"mat4x4f\", code);\r\n\r\n // Type constructors\r\n code = this._convertVariableConstructorsToWGSL(\"float\", \"f32\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"vec2\", \"vec2f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"vec3\", \"vec3f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"vec4\", \"vec4f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"mat2\", \"mat2x2f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"mat3\", \"mat3x3f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"mat4\", \"mat4x4f\", code);\r\n\r\n // Ternary operands\r\n code = this._convertTernaryOperandsToWGSL(code);\r\n\r\n // Mod operators\r\n code = this._convertModOperatorsToWGSL(code);\r\n\r\n // Const\r\n code = this._convertConstToWGSL(code);\r\n\r\n // Inner functions\r\n code = this._convertInnerFunctionsToWGSL(code);\r\n\r\n // Out paramters\r\n code = this._convertOutParametersToWGSL(code);\r\n code = code.replace(/\\[\\*\\]/g, \"*\");\r\n\r\n // Functions\r\n code = this._convertFunctionsToWGSL(code);\r\n\r\n // Remove voidnull\r\n code = code.replace(/\\s->\\svoidnull/g, \"\");\r\n\r\n // Derivatives\r\n code = code.replace(/dFdx/g, \"dpdx\");\r\n code = code.replace(/dFdy/g, \"dpdy\");\r\n\r\n return code;\r\n }\r\n\r\n private _convertTernaryOperandsToGLSL(source: string): string {\r\n return source.replace(new RegExp(`\\\\[(.+?)\\\\?(.+?):(.+)\\\\]`, \"g\"), (match, condition, trueCase, falseCase) => `${condition} ? ${trueCase} : ${falseCase}`);\r\n }\r\n\r\n public _babylonSLtoGLSL(code: string) {\r\n /** Remove BSL specifics */\r\n code = code.replace(/\\[\\*\\]/g, \"\");\r\n code = this._convertTernaryOperandsToGLSL(code);\r\n\r\n return code;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"nodeMaterialBuildState.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Node/nodeMaterialBuildState.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlockConnectionPointTypes } from \"./Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport { NodeMaterialBlockTargets } from \"./Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialBuildStateSharedData } from \"./nodeMaterialBuildStateSharedData\";\r\nimport { ShaderLanguage } from \"../shaderLanguage\";\r\nimport type { NodeMaterialConnectionPoint } from \"./nodeMaterialBlockConnectionPoint\";\r\nimport { ShaderStore as EngineShaderStore } from \"../../Engines/shaderStore\";\r\nimport { Constants } from \"../../Engines/constants\";\r\n\r\n/**\r\n * Class used to store node based material build state\r\n */\r\nexport class NodeMaterialBuildState {\r\n /** Gets or sets a boolean indicating if the current state can emit uniform buffers */\r\n public supportUniformBuffers = false;\r\n /**\r\n * Gets the list of emitted attributes\r\n */\r\n public attributes: string[] = [];\r\n /**\r\n * Gets the list of emitted uniforms\r\n */\r\n public uniforms: string[] = [];\r\n /**\r\n * Gets the list of emitted constants\r\n */\r\n public constants: string[] = [];\r\n /**\r\n * Gets the list of emitted samplers\r\n */\r\n public samplers: string[] = [];\r\n /**\r\n * Gets the list of emitted functions\r\n */\r\n public functions: { [key: string]: string } = {};\r\n /**\r\n * Gets the list of emitted extensions\r\n */\r\n public extensions: { [key: string]: string } = {};\r\n /**\r\n * Gets the list of emitted prePass outputs - if using the prepass\r\n */\r\n public prePassOutput: { [key: string]: string } = {};\r\n\r\n /**\r\n * Gets the target of the compilation state\r\n */\r\n public target: NodeMaterialBlockTargets;\r\n /**\r\n * Gets the list of emitted counters\r\n */\r\n public counters: { [key: string]: number } = {};\r\n\r\n /**\r\n * Shared data between multiple NodeMaterialBuildState instances\r\n */\r\n public sharedData: NodeMaterialBuildStateSharedData;\r\n\r\n /** @internal */\r\n public _vertexState: NodeMaterialBuildState;\r\n\r\n /** @internal */\r\n public _attributeDeclaration = \"\";\r\n /** @internal */\r\n public _uniformDeclaration = \"\";\r\n /** @internal */\r\n public _constantDeclaration = \"\";\r\n /** @internal */\r\n public _samplerDeclaration = \"\";\r\n /** @internal */\r\n public _varyingTransfer = \"\";\r\n /** @internal */\r\n public _injectAtEnd = \"\";\r\n\r\n private _repeatableContentAnchorIndex = 0;\r\n /** @internal */\r\n public _builtCompilationString = \"\";\r\n\r\n /**\r\n * Gets the emitted compilation strings\r\n */\r\n public compilationString = \"\";\r\n\r\n /**\r\n * Gets the current shader language to use\r\n */\r\n public get shaderLanguage() {\r\n return this.sharedData.nodeMaterial.shaderLanguage;\r\n }\r\n\r\n /** Gets suffix to add behind type casting */\r\n public get fSuffix() {\r\n return this.shaderLanguage === ShaderLanguage.WGSL ? \"f\" : \"\";\r\n }\r\n\r\n /**\r\n * Finalize the compilation strings\r\n * @param state defines the current compilation state\r\n */\r\n public finalize(state: NodeMaterialBuildState) {\r\n const emitComments = state.sharedData.emitComments;\r\n const isFragmentMode = this.target === NodeMaterialBlockTargets.Fragment;\r\n\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n if (isFragmentMode) {\r\n this.compilationString = `\\n${emitComments ? \"//Entry point\\n\" : \"\"}@fragment\\nfn main(input: FragmentInputs) -> FragmentOutputs {\\n${this.compilationString}`;\r\n } else {\r\n this.compilationString = `\\n${emitComments ? \"//Entry point\\n\" : \"\"}@vertex\\nfn main(input: VertexInputs) -> FragmentInputs{\\n${this.compilationString}`;\r\n }\r\n } else {\r\n this.compilationString = `\\n${emitComments ? \"//Entry point\\n\" : \"\"}void main(void) {\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._constantDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Constants\\n\" : \"\"}${this._constantDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n let functionCode = \"\";\r\n for (const functionName in this.functions) {\r\n functionCode += this.functions[functionName] + `\\n`;\r\n }\r\n this.compilationString = `\\n${functionCode}\\n${this.compilationString}`;\r\n\r\n if (!isFragmentMode && this._varyingTransfer) {\r\n this.compilationString = `${this.compilationString}\\n${this._varyingTransfer}`;\r\n }\r\n\r\n if (this._injectAtEnd) {\r\n this.compilationString = `${this.compilationString}\\n${this._injectAtEnd}`;\r\n }\r\n\r\n this.compilationString = `${this.compilationString}\\n}`;\r\n\r\n if (this.sharedData.varyingDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Varyings\\n\" : \"\"}${this.sharedData.varyingDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._samplerDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Samplers\\n\" : \"\"}${this._samplerDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._uniformDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Uniforms\\n\" : \"\"}${this._uniformDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._attributeDeclaration && !isFragmentMode) {\r\n this.compilationString = `\\n${emitComments ? \"//Attributes\\n\" : \"\"}${this._attributeDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this.shaderLanguage !== ShaderLanguage.WGSL) {\r\n this.compilationString = \"precision highp float;\\n\" + this.compilationString;\r\n this.compilationString = \"#if defined(WEBGL2) || defines(WEBGPU)\\nprecision highp sampler2DArray;\\n#endif\\n\" + this.compilationString;\r\n\r\n if (isFragmentMode) {\r\n this.compilationString =\r\n \"#if defined(PREPASS)\\r\\n#extension GL_EXT_draw_buffers : require\\r\\nlayout(location = 0) out highp vec4 glFragData[SCENE_MRT_COUNT];\\r\\nhighp vec4 gl_FragColor;\\r\\n#endif\\r\\n\" +\r\n this.compilationString;\r\n }\r\n\r\n for (const extensionName in this.extensions) {\r\n const extension = this.extensions[extensionName];\r\n this.compilationString = `\\n${extension}\\n${this.compilationString}`;\r\n }\r\n }\r\n\r\n this._builtCompilationString = this.compilationString;\r\n }\r\n\r\n /** @internal */\r\n public get _repeatableContentAnchor(): string {\r\n return `###___ANCHOR${this._repeatableContentAnchorIndex++}___###`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getFreeVariableName(prefix: string): string {\r\n prefix = prefix.replace(/[^a-zA-Z_]+/g, \"\");\r\n\r\n if (this.sharedData.variableNames[prefix] === undefined) {\r\n this.sharedData.variableNames[prefix] = 0;\r\n\r\n // Check reserved words\r\n if (prefix === \"output\" || prefix === \"texture\") {\r\n return prefix + this.sharedData.variableNames[prefix];\r\n }\r\n\r\n return prefix;\r\n } else {\r\n this.sharedData.variableNames[prefix]++;\r\n }\r\n\r\n return prefix + this.sharedData.variableNames[prefix];\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getFreeDefineName(prefix: string): string {\r\n if (this.sharedData.defineNames[prefix] === undefined) {\r\n this.sharedData.defineNames[prefix] = 0;\r\n } else {\r\n this.sharedData.defineNames[prefix]++;\r\n }\r\n\r\n return prefix + this.sharedData.defineNames[prefix];\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _excludeVariableName(name: string) {\r\n this.sharedData.variableNames[name] = 0;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emit2DSampler(name: string, define = \"\", force = false) {\r\n if (this.samplers.indexOf(name) < 0 || force) {\r\n if (define) {\r\n this._samplerDeclaration += `#if ${define}\\n`;\r\n }\r\n\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._samplerDeclaration += `var ${name + Constants.AUTOSAMPLERSUFFIX}: sampler;\\n`;\r\n this._samplerDeclaration += `var ${name}: texture_2d<f32>;\\n`;\r\n } else {\r\n this._samplerDeclaration += `uniform sampler2D ${name};\\n`;\r\n }\r\n\r\n if (define) {\r\n this._samplerDeclaration += `#endif\\n`;\r\n }\r\n\r\n if (!force) {\r\n this.samplers.push(name);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitCubeSampler(name: string, define = \"\", force = false) {\r\n if (this.samplers.indexOf(name) < 0 || force) {\r\n if (define) {\r\n this._samplerDeclaration += `#if ${define}\\n`;\r\n }\r\n\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._samplerDeclaration += `var ${name + Constants.AUTOSAMPLERSUFFIX}: sampler;\\n`;\r\n this._samplerDeclaration += `var ${name}: texture_cube<f32>;\\n`;\r\n } else {\r\n this._samplerDeclaration += `uniform samplerCube ${name};\\n`;\r\n }\r\n\r\n if (define) {\r\n this._samplerDeclaration += `#endif\\n`;\r\n }\r\n\r\n if (!force) {\r\n this.samplers.push(name);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emit2DArraySampler(name: string) {\r\n if (this.samplers.indexOf(name) < 0) {\r\n this._samplerDeclaration += `uniform sampler2DArray ${name};\\n`;\r\n this.samplers.push(name);\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getGLType(type: NodeMaterialBlockConnectionPointTypes): string {\r\n switch (type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n return \"float\";\r\n case NodeMaterialBlockConnectionPointTypes.Int:\r\n return \"int\";\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n return \"vec2\";\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n return \"vec3\";\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n return \"vec4\";\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n return \"mat4\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getShaderType(type: NodeMaterialBlockConnectionPointTypes) {\r\n const isWGSL = this.shaderLanguage === ShaderLanguage.WGSL;\r\n\r\n switch (type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n return isWGSL ? \"f32\" : \"float\";\r\n case NodeMaterialBlockConnectionPointTypes.Int:\r\n return isWGSL ? \"i32\" : \"int\";\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n return isWGSL ? \"vec2f\" : \"vec2\";\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n return isWGSL ? \"vec3f\" : \"vec3\";\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n return isWGSL ? \"vec4f\" : \"vec4\";\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n return isWGSL ? \"mat4x4f\" : \"mat4\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitExtension(name: string, extension: string, define: string = \"\") {\r\n if (this.extensions[name]) {\r\n return;\r\n }\r\n\r\n if (define) {\r\n extension = `#if ${define}\\n${extension}\\n#endif`;\r\n }\r\n this.extensions[name] = extension;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitFunction(name: string, code: string, comments: string) {\r\n if (this.functions[name]) {\r\n return;\r\n }\r\n\r\n if (this.sharedData.emitComments) {\r\n code = comments + `\\n` + code;\r\n }\r\n\r\n this.functions[name] = code;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitCodeFromInclude(\r\n includeName: string,\r\n comments: string,\r\n options?: {\r\n replaceStrings?: { search: RegExp; replace: string }[];\r\n repeatKey?: string;\r\n substitutionVars?: string;\r\n }\r\n ) {\r\n if (options && options.repeatKey) {\r\n return `#include<${includeName}>${options.substitutionVars ? \"(\" + options.substitutionVars + \")\" : \"\"}[0..${options.repeatKey}]\\n`;\r\n }\r\n\r\n const store = EngineShaderStore.GetIncludesShadersStore(this.shaderLanguage);\r\n let code = store[includeName] + \"\\n\";\r\n\r\n if (this.sharedData.emitComments) {\r\n code = comments + `\\n` + code;\r\n }\r\n\r\n if (!options) {\r\n return code;\r\n }\r\n\r\n if (options.replaceStrings) {\r\n for (let index = 0; index < options.replaceStrings.length; index++) {\r\n const replaceString = options.replaceStrings[index];\r\n code = code.replace(replaceString.search, replaceString.replace);\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitFunctionFromInclude(\r\n includeName: string,\r\n comments: string,\r\n options?: {\r\n repeatKey?: string;\r\n substitutionVars?: string;\r\n removeAttributes?: boolean;\r\n removeUniforms?: boolean;\r\n removeVaryings?: boolean;\r\n removeIfDef?: boolean;\r\n replaceStrings?: { search: RegExp; replace: string }[];\r\n },\r\n storeKey: string = \"\"\r\n ) {\r\n const key = includeName + storeKey;\r\n if (this.functions[key]) {\r\n return;\r\n }\r\n\r\n if (!options || (!options.removeAttributes && !options.removeUniforms && !options.removeVaryings && !options.removeIfDef && !options.replaceStrings)) {\r\n if (options && options.repeatKey) {\r\n this.functions[key] = `#include<${includeName}>${options.substitutionVars ? \"(\" + options.substitutionVars + \")\" : \"\"}[0..${options.repeatKey}]\\n`;\r\n } else {\r\n this.functions[key] = `#include<${includeName}>${options?.substitutionVars ? \"(\" + options?.substitutionVars + \")\" : \"\"}\\n`;\r\n }\r\n\r\n if (this.sharedData.emitComments) {\r\n this.functions[key] = comments + `\\n` + this.functions[key];\r\n }\r\n\r\n return;\r\n }\r\n\r\n const store = EngineShaderStore.GetIncludesShadersStore(this.shaderLanguage);\r\n\r\n this.functions[key] = store[includeName];\r\n\r\n if (this.sharedData.emitComments) {\r\n this.functions[key] = comments + `\\n` + this.functions[key];\r\n }\r\n\r\n if (options.removeIfDef) {\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#ifdef.+$/gm, \"\");\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#endif.*$/gm, \"\");\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#else.*$/gm, \"\");\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#elif.*$/gm, \"\");\r\n }\r\n\r\n if (options.removeAttributes) {\r\n this.functions[key] = this.functions[key].replace(/\\s*?attribute .+?;/g, \"\\n\");\r\n }\r\n\r\n if (options.removeUniforms) {\r\n this.functions[key] = this.functions[key].replace(/\\s*?uniform .*?;/g, \"\\n\");\r\n }\r\n\r\n if (options.removeVaryings) {\r\n this.functions[key] = this.functions[key].replace(/\\s*?(varying|in) .+?;/g, \"\\n\");\r\n }\r\n\r\n if (options.replaceStrings) {\r\n for (let index = 0; index < options.replaceStrings.length; index++) {\r\n const replaceString = options.replaceStrings[index];\r\n this.functions[key] = this.functions[key].replace(replaceString.search, replaceString.replace);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _registerTempVariable(name: string) {\r\n if (this.sharedData.temps.indexOf(name) !== -1) {\r\n return false;\r\n }\r\n\r\n this.sharedData.temps.push(name);\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitVaryingFromString(name: string, type: NodeMaterialBlockConnectionPointTypes, define: string = \"\", notDefine = false) {\r\n if (this.sharedData.varyings.indexOf(name) !== -1) {\r\n return false;\r\n }\r\n\r\n this.sharedData.varyings.push(name);\r\n\r\n if (define) {\r\n if (define.startsWith(\"defined(\")) {\r\n this.sharedData.varyingDeclaration += `#if ${define}\\n`;\r\n } else {\r\n this.sharedData.varyingDeclaration += `${notDefine ? \"#ifndef\" : \"#ifdef\"} ${define}\\n`;\r\n }\r\n }\r\n const shaderType = this._getShaderType(type);\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this.sharedData.varyingDeclaration += `varying ${name}: ${shaderType};\\n`;\r\n } else {\r\n this.sharedData.varyingDeclaration += `varying ${shaderType} ${name};\\n`;\r\n }\r\n if (define) {\r\n this.sharedData.varyingDeclaration += `#endif\\n`;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getVaryingName(name: string): string {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return (this.target !== NodeMaterialBlockTargets.Fragment ? \"vertexOutputs.\" : \"fragmentInputs.\") + name;\r\n }\r\n\r\n return name;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitUniformFromString(name: string, type: NodeMaterialBlockConnectionPointTypes, define: string = \"\", notDefine = false) {\r\n if (this.uniforms.indexOf(name) !== -1) {\r\n return;\r\n }\r\n\r\n this.uniforms.push(name);\r\n\r\n if (define) {\r\n if (define.startsWith(\"defined(\")) {\r\n this._uniformDeclaration += `#if ${define}\\n`;\r\n } else {\r\n this._uniformDeclaration += `${notDefine ? \"#ifndef\" : \"#ifdef\"} ${define}\\n`;\r\n }\r\n }\r\n const shaderType = this._getShaderType(type);\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._uniformDeclaration += `uniform ${name}: ${shaderType};\\n`;\r\n } else {\r\n this._uniformDeclaration += `uniform ${shaderType} ${name};\\n`;\r\n }\r\n if (define) {\r\n this._uniformDeclaration += `#endif\\n`;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTernary(trueStatement: string, falseStatement: string, condition: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `select(${falseStatement}, ${trueStatement}, ${condition})`;\r\n }\r\n\r\n return `${condition} ? ${trueStatement} : ${falseStatement}`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitFloat(value: number) {\r\n if (value.toString() === value.toFixed(0)) {\r\n return `${value}.0`;\r\n }\r\n\r\n return value.toString();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _declareOutput(output: NodeMaterialConnectionPoint, isConst?: boolean): string {\r\n return this._declareLocalVar(output.associatedVariableName, output.type, isConst);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _declareLocalVar(name: string, type: NodeMaterialBlockConnectionPointTypes, isConst?: boolean): string {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${isConst ? \"const\" : \"var\"} ${name}: ${this._getShaderType(type)}`;\r\n } else {\r\n return `${this._getShaderType(type)} ${name}`;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _samplerCubeFunc() {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSample\";\r\n }\r\n return \"textureCube\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _samplerFunc() {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSample\";\r\n }\r\n return \"texture2D\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _samplerLODFunc() {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSampleLevel\";\r\n }\r\n return \"texture2DLodEXT\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSample(uv: string, samplerName: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv})`;\r\n }\r\n return `${this._samplerFunc()}(${samplerName}, ${uv})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSampleLOD(uv: string, samplerName: string, lod: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerLODFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv}, ${lod})`;\r\n }\r\n return `${this._samplerLODFunc()}(${samplerName}, ${uv}, ${lod})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSampleCube(uv: string, samplerName: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerCubeFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv})`;\r\n }\r\n return `${this._samplerCubeFunc()}(${samplerName}, ${uv})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSampleCubeLOD(uv: string, samplerName: string, lod: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerCubeFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv}, ${lod})`;\r\n }\r\n return `${this._samplerCubeFunc()}(${samplerName}, ${uv}, ${lod})`;\r\n }\r\n\r\n private _convertVariableDeclarationToWGSL(type: string, dest: string, source: string): string {\r\n return source.replace(new RegExp(`(${type})\\\\s+(\\\\w+)`, \"g\"), `var $2: ${dest}`);\r\n }\r\n\r\n private _convertVariableConstructorsToWGSL(type: string, dest: string, source: string): string {\r\n return source.replace(new RegExp(`(${type})\\\\(`, \"g\"), ` ${dest}(`);\r\n }\r\n\r\n private _convertOutParametersToWGSL(source: string): string {\r\n return source.replace(new RegExp(`out\\\\s+var\\\\s+(\\\\w+)\\\\s*:\\\\s*(\\\\w+)`, \"g\"), `$1: ptr<function, $2>`);\r\n }\r\n\r\n private _convertTernaryOperandsToWGSL(source: string): string {\r\n return source.replace(new RegExp(`\\\\[(.*?)\\\\?(.*?):(.*)\\\\]`, \"g\"), (match, condition, trueCase, falseCase) => `select(${falseCase}, ${trueCase}, ${condition})`);\r\n }\r\n\r\n private _convertModOperatorsToWGSL(source: string): string {\r\n return source.replace(new RegExp(`mod\\\\((.+?),\\\\s*(.+?)\\\\)`, \"g\"), (match, left, right) => `((${left})%(${right}))`);\r\n }\r\n\r\n private _convertConstToWGSL(source: string): string {\r\n return source.replace(new RegExp(`const var`, \"g\"), `const`);\r\n }\r\n\r\n private _convertInnerFunctionsToWGSL(source: string): string {\r\n return source.replace(new RegExp(`inversesqrt`, \"g\"), `inverseSqrt`);\r\n }\r\n\r\n private _convertFunctionsToWGSL(source: string): string {\r\n const regex = /var\\s+(\\w+)\\s*:\\s*(\\w+)\\((.*)\\)/g;\r\n\r\n let match: RegExpMatchArray | null;\r\n while ((match = regex.exec(source)) !== null) {\r\n const funcName = match[1];\r\n const funcType = match[2];\r\n const params = match[3]; // All parameters as a single string\r\n\r\n // Processing the parameters to match 'name: type' format\r\n const formattedParams = params.replace(/var\\s/g, \"\");\r\n\r\n // Constructing the final output string\r\n source = source.replace(match[0], `fn ${funcName}(${formattedParams}) -> ${funcType}`);\r\n }\r\n return source;\r\n }\r\n\r\n public _babylonSLtoWGSL(code: string) {\r\n // variable declarations\r\n code = this._convertVariableDeclarationToWGSL(\"void\", \"voidnull\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"bool\", \"bool\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"int\", \"i32\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"uint\", \"u32\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"float\", \"f32\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"vec2\", \"vec2f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"vec3\", \"vec3f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"vec4\", \"vec4f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"mat2\", \"mat2x2f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"mat3\", \"mat3x3f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"mat4\", \"mat4x4f\", code);\r\n\r\n // Type constructors\r\n code = this._convertVariableConstructorsToWGSL(\"float\", \"f32\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"vec2\", \"vec2f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"vec3\", \"vec3f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"vec4\", \"vec4f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"mat2\", \"mat2x2f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"mat3\", \"mat3x3f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"mat4\", \"mat4x4f\", code);\r\n\r\n // Ternary operands\r\n code = this._convertTernaryOperandsToWGSL(code);\r\n\r\n // Mod operators\r\n code = this._convertModOperatorsToWGSL(code);\r\n\r\n // Const\r\n code = this._convertConstToWGSL(code);\r\n\r\n // Inner functions\r\n code = this._convertInnerFunctionsToWGSL(code);\r\n\r\n // Out paramters\r\n code = this._convertOutParametersToWGSL(code);\r\n code = code.replace(/\\[\\*\\]/g, \"*\");\r\n\r\n // Functions\r\n code = this._convertFunctionsToWGSL(code);\r\n\r\n // Remove voidnull\r\n code = code.replace(/\\s->\\svoidnull/g, \"\");\r\n\r\n // Derivatives\r\n code = code.replace(/dFdx/g, \"dpdx\");\r\n code = code.replace(/dFdy/g, \"dpdy\");\r\n\r\n return code;\r\n }\r\n\r\n private _convertTernaryOperandsToGLSL(source: string): string {\r\n return source.replace(new RegExp(`\\\\[(.+?)\\\\?(.+?):(.+)\\\\]`, \"g\"), (match, condition, trueCase, falseCase) => `${condition} ? ${trueCase} : ${falseCase}`);\r\n }\r\n\r\n public _babylonSLtoGLSL(code: string) {\r\n /** Remove BSL specifics */\r\n code = code.replace(/\\[\\*\\]/g, \"\");\r\n code = this._convertTernaryOperandsToGLSL(code);\r\n\r\n return code;\r\n }\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { NodeMaterialConnectionPoint, NodeMaterialConnectionPointCompatibilityStates } from "./nodeMaterialBlockConnectionPoint.js";
1
+ import { NodeMaterialConnectionPoint } from "./nodeMaterialBlockConnectionPoint.js";
2
2
  /**
3
3
  * Defines a connection point to be used for points with a custom object type
4
4
  */
@@ -26,8 +26,8 @@ export class NodeMaterialConnectionPointCustomObject extends NodeMaterialConnect
26
26
  */
27
27
  checkCompatibilityState(connectionPoint) {
28
28
  return connectionPoint instanceof NodeMaterialConnectionPointCustomObject && connectionPoint._blockName === this._blockName
29
- ? NodeMaterialConnectionPointCompatibilityStates.Compatible
30
- : NodeMaterialConnectionPointCompatibilityStates.TypeIncompatible;
29
+ ? 0 /* NodeMaterialConnectionPointCompatibilityStates.Compatible */
30
+ : 1 /* NodeMaterialConnectionPointCompatibilityStates.TypeIncompatible */;
31
31
  }
32
32
  /**
33
33
  * Creates a block suitable to be used as an input for this input point.
@@ -1 +1 @@
1
- {"version":3,"file":"nodeMaterialConnectionPointCustomObject.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Node/nodeMaterialConnectionPointCustomObject.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,8CAA8C,EAAE,MAAM,oCAAoC,CAAC;AAGjI;;GAEG;AACH,MAAM,OAAO,uCAAqE,SAAQ,2BAA2B;IACjH;;;;;;;OAOG;IACH,YACI,IAAY,EACZ,UAA6B,EAC7B,SAA+C;IAC/C,YAAY;IACL,UAAqC,EACpC,UAAkB;QAE1B,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAH5B,eAAU,GAAV,UAAU,CAA2B;QACpC,eAAU,GAAV,UAAU,CAAQ;QAI1B,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACa,uBAAuB,CAAC,eAA4C;QAChF,OAAO,eAAe,YAAY,uCAAuC,IAAI,eAAe,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU;YACvH,CAAC,CAAC,8CAA8C,CAAC,UAAU;YAC3D,CAAC,CAAC,8CAA8C,CAAC,gBAAgB,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACa,sBAAsB;QAClC,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;CACJ","sourcesContent":["import type { NodeMaterialBlock } from \"./nodeMaterialBlock\";\r\nimport type { NodeMaterialConnectionPointDirection } from \"./nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialConnectionPoint, NodeMaterialConnectionPointCompatibilityStates } from \"./nodeMaterialBlockConnectionPoint\";\r\nimport type { Nullable } from \"../../types\";\r\n\r\n/**\r\n * Defines a connection point to be used for points with a custom object type\r\n */\r\nexport class NodeMaterialConnectionPointCustomObject<T extends NodeMaterialBlock> extends NodeMaterialConnectionPoint {\r\n /**\r\n * Creates a new connection point\r\n * @param name defines the connection point name\r\n * @param ownerBlock defines the block hosting this connection point\r\n * @param direction defines the direction of the connection point\r\n * @param _blockType\r\n * @param _blockName\r\n */\r\n public constructor(\r\n name: string,\r\n ownerBlock: NodeMaterialBlock,\r\n direction: NodeMaterialConnectionPointDirection,\r\n // @internal\r\n public _blockType: new (...args: any[]) => T,\r\n private _blockName: string\r\n ) {\r\n super(name, ownerBlock, direction);\r\n\r\n this.needDualDirectionValidation = true;\r\n }\r\n\r\n /**\r\n * Gets a number indicating if the current point can be connected to another point\r\n * @param connectionPoint defines the other connection point\r\n * @returns a number defining the compatibility state\r\n */\r\n public override checkCompatibilityState(connectionPoint: NodeMaterialConnectionPoint): NodeMaterialConnectionPointCompatibilityStates {\r\n return connectionPoint instanceof NodeMaterialConnectionPointCustomObject && connectionPoint._blockName === this._blockName\r\n ? NodeMaterialConnectionPointCompatibilityStates.Compatible\r\n : NodeMaterialConnectionPointCompatibilityStates.TypeIncompatible;\r\n }\r\n\r\n /**\r\n * Creates a block suitable to be used as an input for this input point.\r\n * If null is returned, a block based on the point type will be created.\r\n * @returns The returned string parameter is the name of the output point of NodeMaterialBlock (first parameter of the returned array) that can be connected to the input\r\n */\r\n public override createCustomInputBlock(): Nullable<[NodeMaterialBlock, string]> {\r\n return [new this._blockType(this._blockName), this.name];\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"nodeMaterialConnectionPointCustomObject.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Node/nodeMaterialConnectionPointCustomObject.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAkD,MAAM,oCAAoC,CAAC;AAGjI;;GAEG;AACH,MAAM,OAAO,uCAAqE,SAAQ,2BAA2B;IACjH;;;;;;;OAOG;IACH,YACI,IAAY,EACZ,UAA6B,EAC7B,SAA+C;IAC/C,YAAY;IACL,UAAqC,EACpC,UAAkB;QAE1B,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAH5B,eAAU,GAAV,UAAU,CAA2B;QACpC,eAAU,GAAV,UAAU,CAAQ;QAI1B,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACa,uBAAuB,CAAC,eAA4C;QAChF,OAAO,eAAe,YAAY,uCAAuC,IAAI,eAAe,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU;YACvH,CAAC;YACD,CAAC,wEAAgE,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACa,sBAAsB;QAClC,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;CACJ","sourcesContent":["import type { NodeMaterialBlock } from \"./nodeMaterialBlock\";\r\nimport type { NodeMaterialConnectionPointDirection } from \"./nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialConnectionPoint, NodeMaterialConnectionPointCompatibilityStates } from \"./nodeMaterialBlockConnectionPoint\";\r\nimport type { Nullable } from \"../../types\";\r\n\r\n/**\r\n * Defines a connection point to be used for points with a custom object type\r\n */\r\nexport class NodeMaterialConnectionPointCustomObject<T extends NodeMaterialBlock> extends NodeMaterialConnectionPoint {\r\n /**\r\n * Creates a new connection point\r\n * @param name defines the connection point name\r\n * @param ownerBlock defines the block hosting this connection point\r\n * @param direction defines the direction of the connection point\r\n * @param _blockType\r\n * @param _blockName\r\n */\r\n public constructor(\r\n name: string,\r\n ownerBlock: NodeMaterialBlock,\r\n direction: NodeMaterialConnectionPointDirection,\r\n // @internal\r\n public _blockType: new (...args: any[]) => T,\r\n private _blockName: string\r\n ) {\r\n super(name, ownerBlock, direction);\r\n\r\n this.needDualDirectionValidation = true;\r\n }\r\n\r\n /**\r\n * Gets a number indicating if the current point can be connected to another point\r\n * @param connectionPoint defines the other connection point\r\n * @returns a number defining the compatibility state\r\n */\r\n public override checkCompatibilityState(connectionPoint: NodeMaterialConnectionPoint): NodeMaterialConnectionPointCompatibilityStates {\r\n return connectionPoint instanceof NodeMaterialConnectionPointCustomObject && connectionPoint._blockName === this._blockName\r\n ? NodeMaterialConnectionPointCompatibilityStates.Compatible\r\n : NodeMaterialConnectionPointCompatibilityStates.TypeIncompatible;\r\n }\r\n\r\n /**\r\n * Creates a block suitable to be used as an input for this input point.\r\n * If null is returned, a block based on the point type will be created.\r\n * @returns The returned string parameter is the name of the output point of NodeMaterialBlock (first parameter of the returned array) that can be connected to the input\r\n */\r\n public override createCustomInputBlock(): Nullable<[NodeMaterialBlock, string]> {\r\n return [new this._blockType(this._blockName), this.name];\r\n }\r\n}\r\n"]}
@@ -13,7 +13,6 @@ import { Color3, TmpColors } from "../../Maths/math.color.js";
13
13
  import { Scalar } from "../../Maths/math.scalar.js";
14
14
  import { ImageProcessingConfiguration } from "../../Materials/imageProcessingConfiguration.js";
15
15
  import { Material } from "../../Materials/material.js";
16
- import { MaterialPluginEvent } from "../materialPluginEvent.js";
17
16
  import { MaterialDefines } from "../../Materials/materialDefines.js";
18
17
  import { PushMaterial } from "../../Materials/pushMaterial.js";
19
18
  import { Texture } from "../../Materials/Textures/texture.js";
@@ -793,7 +792,7 @@ export class PBRBaseMaterial extends PushMaterial {
793
792
  }
794
793
  }
795
794
  if (!subMesh.materialDefines) {
796
- this._callbackPluginEventGeneric(MaterialPluginEvent.GetDefineNames, this._eventInfo);
795
+ this._callbackPluginEventGeneric(4 /* MaterialPluginEvent.GetDefineNames */, this._eventInfo);
797
796
  subMesh.materialDefines = new PBRMaterialDefines(this._eventInfo.defineNames);
798
797
  }
799
798
  const defines = subMesh.materialDefines;
@@ -1150,7 +1149,7 @@ export class PBRBaseMaterial extends PushMaterial {
1150
1149
  this._eventInfo.customCode = undefined;
1151
1150
  this._eventInfo.mesh = mesh;
1152
1151
  this._eventInfo.indexParameters = indexParameters;
1153
- this._callbackPluginEventGeneric(MaterialPluginEvent.PrepareEffect, this._eventInfo);
1152
+ this._callbackPluginEventGeneric(128 /* MaterialPluginEvent.PrepareEffect */, this._eventInfo);
1154
1153
  PrePassConfiguration.AddUniforms(uniforms);
1155
1154
  PrePassConfiguration.AddSamplers(samplers);
1156
1155
  addClipPlaneUniforms(uniforms);
@@ -1512,7 +1511,7 @@ export class PBRBaseMaterial extends PushMaterial {
1512
1511
  if (!this._uniformBufferLayoutBuilt) {
1513
1512
  this.buildUniformLayout();
1514
1513
  }
1515
- this._callbackPluginEventGeneric(MaterialPluginEvent.GetDefineNames, this._eventInfo);
1514
+ this._callbackPluginEventGeneric(4 /* MaterialPluginEvent.GetDefineNames */, this._eventInfo);
1516
1515
  const defines = new PBRMaterialDefines(this._eventInfo.defineNames);
1517
1516
  const effect = this._prepareEffect(mesh, defines, undefined, undefined, localOptions.useInstances, localOptions.clipPlane, mesh.hasThinInstances);
1518
1517
  if (this._onEffectCreatedObservable) {