@babylonjs/core 7.2.2 → 7.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (620) hide show
  1. package/Animations/runtimeAnimation.d.ts +1 -0
  2. package/Animations/runtimeAnimation.js +12 -3
  3. package/Animations/runtimeAnimation.js.map +1 -1
  4. package/Audio/audioEngine.js +2 -2
  5. package/Audio/audioEngine.js.map +1 -1
  6. package/Bones/boneLookController.js +3 -0
  7. package/Bones/boneLookController.js.map +1 -1
  8. package/Buffers/buffer.d.ts +5 -5
  9. package/Buffers/buffer.js.map +1 -1
  10. package/Buffers/storageBuffer.d.ts +2 -2
  11. package/Buffers/storageBuffer.js.map +1 -1
  12. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  13. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  14. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  15. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  16. package/Compute/computeEffect.d.ts +3 -3
  17. package/Compute/computeEffect.js.map +1 -1
  18. package/Compute/computeShader.d.ts +10 -2
  19. package/Compute/computeShader.js +53 -35
  20. package/Compute/computeShader.js.map +1 -1
  21. package/DeviceInput/InputDevices/deviceSourceManager.d.ts +2 -2
  22. package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
  23. package/DeviceInput/internalDeviceSourceManager.d.ts +4 -4
  24. package/DeviceInput/internalDeviceSourceManager.js.map +1 -1
  25. package/DeviceInput/webDeviceInputSystem.d.ts +2 -2
  26. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  27. package/Engines/AbstractEngine/abstractEngine.alpha.d.ts +10 -0
  28. package/Engines/AbstractEngine/abstractEngine.alpha.js +29 -0
  29. package/Engines/AbstractEngine/abstractEngine.alpha.js.map +1 -0
  30. package/Engines/AbstractEngine/abstractEngine.cubeTexture.d.ts +17 -0
  31. package/Engines/AbstractEngine/abstractEngine.cubeTexture.js +138 -0
  32. package/Engines/AbstractEngine/abstractEngine.cubeTexture.js.map +1 -0
  33. package/Engines/AbstractEngine/abstractEngine.dom.d.ts +61 -0
  34. package/Engines/AbstractEngine/abstractEngine.dom.js +27 -0
  35. package/Engines/AbstractEngine/abstractEngine.dom.js.map +1 -0
  36. package/Engines/AbstractEngine/abstractEngine.loadingScreen.d.ts +30 -0
  37. package/Engines/AbstractEngine/abstractEngine.loadingScreen.js +48 -0
  38. package/Engines/AbstractEngine/abstractEngine.loadingScreen.js.map +1 -0
  39. package/Engines/AbstractEngine/abstractEngine.query.d.ts +122 -0
  40. package/Engines/AbstractEngine/abstractEngine.query.js +175 -0
  41. package/Engines/AbstractEngine/abstractEngine.query.js.map +1 -0
  42. package/Engines/AbstractEngine/abstractEngine.renderPass.d.ts +26 -0
  43. package/Engines/AbstractEngine/abstractEngine.renderPass.js +29 -0
  44. package/Engines/AbstractEngine/abstractEngine.renderPass.js.map +1 -0
  45. package/Engines/AbstractEngine/abstractEngine.states.d.ts +162 -0
  46. package/Engines/AbstractEngine/abstractEngine.states.js +105 -0
  47. package/Engines/AbstractEngine/abstractEngine.states.js.map +1 -0
  48. package/Engines/AbstractEngine/abstractEngine.texture.d.ts +16 -0
  49. package/Engines/AbstractEngine/abstractEngine.texture.js +11 -0
  50. package/Engines/AbstractEngine/abstractEngine.texture.js.map +1 -0
  51. package/Engines/AbstractEngine/index.d.ts +8 -0
  52. package/Engines/AbstractEngine/index.js +10 -0
  53. package/Engines/AbstractEngine/index.js.map +1 -0
  54. package/Engines/Extensions/engine.alpha.d.ts +0 -24
  55. package/Engines/Extensions/engine.alpha.js +0 -35
  56. package/Engines/Extensions/engine.alpha.js.map +1 -1
  57. package/Engines/Extensions/engine.computeShader.d.ts +15 -2
  58. package/Engines/Extensions/engine.computeShader.js +5 -1
  59. package/Engines/Extensions/engine.computeShader.js.map +1 -1
  60. package/Engines/Extensions/engine.cubeTexture.d.ts +0 -8
  61. package/Engines/Extensions/engine.cubeTexture.js +2 -135
  62. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  63. package/Engines/Extensions/engine.debugging.d.ts +2 -2
  64. package/Engines/Extensions/engine.debugging.js +5 -5
  65. package/Engines/Extensions/engine.debugging.js.map +1 -1
  66. package/Engines/Extensions/engine.dynamicTexture.js +3 -2
  67. package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
  68. package/Engines/Extensions/engine.multiview.js.map +1 -1
  69. package/Engines/Extensions/engine.query.d.ts +5 -120
  70. package/Engines/Extensions/engine.query.js +14 -150
  71. package/Engines/Extensions/engine.query.js.map +1 -1
  72. package/Engines/Extensions/engine.renderTarget.js +0 -9
  73. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  74. package/Engines/Extensions/engine.views.d.ts +3 -2
  75. package/Engines/Extensions/engine.views.js.map +1 -1
  76. package/Engines/Processors/iShaderProcessor.d.ts +2 -2
  77. package/Engines/Processors/iShaderProcessor.js.map +1 -1
  78. package/Engines/Processors/shaderProcessor.d.ts +3 -3
  79. package/Engines/Processors/shaderProcessor.js.map +1 -1
  80. package/Engines/WebGL/webGLRenderTargetWrapper.js +12 -9
  81. package/Engines/WebGL/webGLRenderTargetWrapper.js.map +1 -1
  82. package/Engines/WebGL/webGLShaderProcessors.d.ts +2 -2
  83. package/Engines/WebGL/webGLShaderProcessors.js.map +1 -1
  84. package/Engines/WebGPU/Extensions/engine.alpha.d.ts +35 -0
  85. package/Engines/WebGPU/Extensions/engine.alpha.js +4 -4
  86. package/Engines/WebGPU/Extensions/engine.alpha.js.map +1 -1
  87. package/Engines/WebGPU/Extensions/engine.computeShader.d.ts +9 -0
  88. package/Engines/WebGPU/Extensions/engine.computeShader.js +13 -2
  89. package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
  90. package/Engines/WebGPU/Extensions/engine.cubeTexture.d.ts +78 -1
  91. package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
  92. package/Engines/WebGPU/Extensions/engine.dynamicTexture.d.ts +27 -1
  93. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +3 -3
  94. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js.map +1 -1
  95. package/Engines/WebGPU/Extensions/engine.externalTexture.d.ts +16 -0
  96. package/Engines/WebGPU/Extensions/engine.externalTexture.js.map +1 -1
  97. package/Engines/WebGPU/Extensions/engine.multiRender.d.ts +55 -1
  98. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  99. package/Engines/WebGPU/Extensions/engine.query.d.ts +1 -1
  100. package/Engines/WebGPU/Extensions/engine.query.js +1 -0
  101. package/Engines/WebGPU/Extensions/engine.query.js.map +1 -1
  102. package/Engines/WebGPU/Extensions/engine.rawTexture.d.ts +185 -1
  103. package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
  104. package/Engines/WebGPU/Extensions/engine.readTexture.d.ts +10 -1
  105. package/Engines/WebGPU/Extensions/engine.readTexture.js.map +1 -1
  106. package/Engines/WebGPU/Extensions/engine.renderTarget.d.ts +38 -1
  107. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  108. package/Engines/WebGPU/Extensions/engine.renderTargetCube.d.ts +13 -1
  109. package/Engines/WebGPU/Extensions/engine.renderTargetCube.js.map +1 -1
  110. package/Engines/WebGPU/Extensions/engine.storageBuffer.d.ts +38 -1
  111. package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
  112. package/Engines/WebGPU/Extensions/engine.textureSampler.d.ts +10 -0
  113. package/Engines/WebGPU/Extensions/engine.textureSampler.js.map +1 -1
  114. package/Engines/WebGPU/Extensions/engine.videoTexture.d.ts +14 -1
  115. package/Engines/WebGPU/Extensions/engine.videoTexture.js.map +1 -1
  116. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +2 -2
  117. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  118. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +2 -0
  119. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +2 -0
  120. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  121. package/Engines/abstractEngine.d.ts +1695 -0
  122. package/Engines/abstractEngine.js +1362 -0
  123. package/Engines/abstractEngine.js.map +1 -0
  124. package/Engines/engine.common.d.ts +39 -0
  125. package/Engines/engine.common.js +226 -0
  126. package/Engines/engine.common.js.map +1 -0
  127. package/Engines/engine.d.ts +40 -447
  128. package/Engines/engine.js +64 -810
  129. package/Engines/engine.js.map +1 -1
  130. package/Engines/engineFactory.d.ts +2 -2
  131. package/Engines/engineFactory.js.map +1 -1
  132. package/Engines/engineStore.d.ts +4 -4
  133. package/Engines/engineStore.js.map +1 -1
  134. package/Engines/index.d.ts +3 -0
  135. package/Engines/index.js +3 -0
  136. package/Engines/index.js.map +1 -1
  137. package/Engines/nativeEngine.d.ts +1 -1
  138. package/Engines/nativeEngine.js +2 -1
  139. package/Engines/nativeEngine.js.map +1 -1
  140. package/Engines/nullEngine.d.ts +2 -2
  141. package/Engines/nullEngine.js +2 -3
  142. package/Engines/nullEngine.js.map +1 -1
  143. package/Engines/renderTargetWrapper.d.ts +3 -3
  144. package/Engines/renderTargetWrapper.js.map +1 -1
  145. package/Engines/thinEngine.d.ts +34 -597
  146. package/Engines/thinEngine.js +85 -1143
  147. package/Engines/thinEngine.js.map +1 -1
  148. package/Engines/webgpuEngine.d.ts +147 -109
  149. package/Engines/webgpuEngine.js +249 -162
  150. package/Engines/webgpuEngine.js.map +1 -1
  151. package/Instrumentation/engineInstrumentation.d.ts +5 -4
  152. package/Instrumentation/engineInstrumentation.js.map +1 -1
  153. package/Layers/effectLayer.d.ts +2 -2
  154. package/Layers/effectLayer.js +3 -3
  155. package/Layers/effectLayer.js.map +1 -1
  156. package/Layers/effectLayerSceneComponent.js.map +1 -1
  157. package/Layers/glowLayer.js +3 -3
  158. package/Layers/glowLayer.js.map +1 -1
  159. package/Layers/highlightLayer.js +3 -3
  160. package/Layers/highlightLayer.js.map +1 -1
  161. package/Layers/layerSceneComponent.js.map +1 -1
  162. package/Loading/loadingScreen.js +2 -2
  163. package/Loading/loadingScreen.js.map +1 -1
  164. package/Loading/sceneLoader.d.ts +3 -3
  165. package/Loading/sceneLoader.js +1 -1
  166. package/Loading/sceneLoader.js.map +1 -1
  167. package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
  168. package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +1 -1
  169. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +6 -6
  170. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
  171. package/Materials/Node/Blocks/Dual/currentScreenBlock.d.ts +2 -3
  172. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +5 -5
  173. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  174. package/Materials/Node/Blocks/Dual/fogBlock.d.ts +1 -1
  175. package/Materials/Node/Blocks/Dual/fogBlock.js +4 -4
  176. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  177. package/Materials/Node/Blocks/Dual/lightBlock.js +4 -4
  178. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  179. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.d.ts +1 -1
  180. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +8 -7
  181. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  182. package/Materials/Node/Blocks/Dual/sceneDepthBlock.d.ts +1 -1
  183. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +9 -5
  184. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  185. package/Materials/Node/Blocks/Dual/textureBlock.d.ts +4 -2
  186. package/Materials/Node/Blocks/Dual/textureBlock.js +43 -21
  187. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  188. package/Materials/Node/Blocks/Fragment/TBNBlock.js +3 -3
  189. package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
  190. package/Materials/Node/Blocks/Fragment/derivativeBlock.js +9 -2
  191. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  192. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -1
  193. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  194. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +1 -1
  195. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +16 -8
  196. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  197. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +1 -1
  198. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  199. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +2 -2
  200. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  201. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +3 -3
  202. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  203. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.d.ts +1 -1
  204. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +4 -4
  205. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  206. package/Materials/Node/Blocks/Fragment/screenSizeBlock.d.ts +1 -1
  207. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +2 -2
  208. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  209. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +3 -3
  210. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  211. package/Materials/Node/Blocks/Fragment/shadowMapBlock.d.ts +1 -1
  212. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js +4 -4
  213. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js.map +1 -1
  214. package/Materials/Node/Blocks/Fragment/twirlBlock.js +9 -9
  215. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  216. package/Materials/Node/Blocks/Input/inputBlock.d.ts +6 -1
  217. package/Materials/Node/Blocks/Input/inputBlock.js +36 -12
  218. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  219. package/Materials/Node/Blocks/PBR/anisotropyBlock.d.ts +1 -1
  220. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +1 -1
  221. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  222. package/Materials/Node/Blocks/PBR/clearCoatBlock.d.ts +1 -1
  223. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +3 -3
  224. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  225. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +1 -1
  226. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +9 -9
  227. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  228. package/Materials/Node/Blocks/PBR/reflectionBlock.d.ts +1 -1
  229. package/Materials/Node/Blocks/PBR/reflectionBlock.js +21 -21
  230. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  231. package/Materials/Node/Blocks/PBR/refractionBlock.d.ts +1 -1
  232. package/Materials/Node/Blocks/PBR/refractionBlock.js +6 -6
  233. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  234. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +5 -0
  235. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  236. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js +2 -2
  237. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
  238. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js +3 -3
  239. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
  240. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +1 -1
  241. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  242. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js +1 -1
  243. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
  244. package/Materials/Node/Blocks/Vertex/bonesBlock.js +2 -2
  245. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  246. package/Materials/Node/Blocks/Vertex/instancesBlock.js +5 -5
  247. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  248. package/Materials/Node/Blocks/Vertex/lightInformationBlock.d.ts +1 -1
  249. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +12 -12
  250. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  251. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +7 -7
  252. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  253. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.d.ts +1 -1
  254. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +10 -3
  255. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  256. package/Materials/Node/Blocks/addBlock.js +2 -1
  257. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  258. package/Materials/Node/Blocks/arcTan2Block.js +3 -1
  259. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  260. package/Materials/Node/Blocks/clampBlock.js +1 -1
  261. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  262. package/Materials/Node/Blocks/cloudBlock.js +1 -1
  263. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  264. package/Materials/Node/Blocks/colorMergerBlock.js +9 -7
  265. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  266. package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
  267. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  268. package/Materials/Node/Blocks/conditionalBlock.js +18 -12
  269. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  270. package/Materials/Node/Blocks/crossBlock.js +1 -1
  271. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  272. package/Materials/Node/Blocks/curveBlock.js +48 -53
  273. package/Materials/Node/Blocks/curveBlock.js.map +1 -1
  274. package/Materials/Node/Blocks/customBlock.js +1 -1
  275. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  276. package/Materials/Node/Blocks/desaturateBlock.js +5 -4
  277. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  278. package/Materials/Node/Blocks/distanceBlock.js +1 -1
  279. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  280. package/Materials/Node/Blocks/divideBlock.js +2 -1
  281. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  282. package/Materials/Node/Blocks/dotBlock.js +1 -1
  283. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  284. package/Materials/Node/Blocks/elbowBlock.js +1 -1
  285. package/Materials/Node/Blocks/elbowBlock.js.map +1 -1
  286. package/Materials/Node/Blocks/fresnelBlock.js +1 -1
  287. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  288. package/Materials/Node/Blocks/gradientBlock.js +8 -7
  289. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  290. package/Materials/Node/Blocks/lengthBlock.js +1 -1
  291. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  292. package/Materials/Node/Blocks/lerpBlock.js +1 -1
  293. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  294. package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -1
  295. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  296. package/Materials/Node/Blocks/matrixDeterminantBlock.js +1 -1
  297. package/Materials/Node/Blocks/matrixDeterminantBlock.js.map +1 -1
  298. package/Materials/Node/Blocks/matrixTransposeBlock.js +1 -1
  299. package/Materials/Node/Blocks/matrixTransposeBlock.js.map +1 -1
  300. package/Materials/Node/Blocks/maxBlock.js +1 -1
  301. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  302. package/Materials/Node/Blocks/meshAttributeExistsBlock.js +1 -1
  303. package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
  304. package/Materials/Node/Blocks/minBlock.js +1 -1
  305. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  306. package/Materials/Node/Blocks/modBlock.js +1 -1
  307. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  308. package/Materials/Node/Blocks/multiplyBlock.js +2 -1
  309. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  310. package/Materials/Node/Blocks/nLerpBlock.js +1 -1
  311. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  312. package/Materials/Node/Blocks/negateBlock.js +1 -1
  313. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  314. package/Materials/Node/Blocks/normalBlendBlock.js +1 -1
  315. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  316. package/Materials/Node/Blocks/normalizeBlock.js +1 -1
  317. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  318. package/Materials/Node/Blocks/oneMinusBlock.js +1 -1
  319. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  320. package/Materials/Node/Blocks/posterizeBlock.js +1 -1
  321. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  322. package/Materials/Node/Blocks/powBlock.js +1 -1
  323. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  324. package/Materials/Node/Blocks/randomNumberBlock.js +1 -1
  325. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  326. package/Materials/Node/Blocks/reciprocalBlock.js +2 -2
  327. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  328. package/Materials/Node/Blocks/reflectBlock.js +1 -1
  329. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  330. package/Materials/Node/Blocks/refractBlock.js +1 -1
  331. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  332. package/Materials/Node/Blocks/remapBlock.js +1 -1
  333. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  334. package/Materials/Node/Blocks/replaceColorBlock.js +1 -1
  335. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  336. package/Materials/Node/Blocks/rotate2dBlock.js +1 -1
  337. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  338. package/Materials/Node/Blocks/scaleBlock.js +1 -1
  339. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  340. package/Materials/Node/Blocks/simplexPerlin3DBlock.js +1 -1
  341. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  342. package/Materials/Node/Blocks/smoothStepBlock.js +3 -2
  343. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  344. package/Materials/Node/Blocks/stepBlock.js +1 -1
  345. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  346. package/Materials/Node/Blocks/subtractBlock.js +2 -1
  347. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  348. package/Materials/Node/Blocks/transformBlock.js +18 -10
  349. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  350. package/Materials/Node/Blocks/triPlanarBlock.d.ts +1 -1
  351. package/Materials/Node/Blocks/triPlanarBlock.js +2 -2
  352. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  353. package/Materials/Node/Blocks/trigonometryBlock.js +1 -1
  354. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  355. package/Materials/Node/Blocks/vectorMergerBlock.js +30 -27
  356. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  357. package/Materials/Node/Blocks/vectorSplitterBlock.js +9 -8
  358. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  359. package/Materials/Node/Blocks/viewDirectionBlock.js +1 -1
  360. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  361. package/Materials/Node/Blocks/voronoiNoiseBlock.js +19 -8
  362. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  363. package/Materials/Node/Blocks/waveBlock.js +3 -3
  364. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  365. package/Materials/Node/Blocks/worleyNoise3DBlock.js +3 -3
  366. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  367. package/Materials/Node/nodeMaterial.d.ts +9 -3
  368. package/Materials/Node/nodeMaterial.js +29 -4
  369. package/Materials/Node/nodeMaterial.js.map +1 -1
  370. package/Materials/Node/nodeMaterialBlock.d.ts +0 -1
  371. package/Materials/Node/nodeMaterialBlock.js +6 -6
  372. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  373. package/Materials/Node/nodeMaterialBlockConnectionPoint.d.ts +4 -0
  374. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +12 -0
  375. package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
  376. package/Materials/Node/nodeMaterialBuildState.d.ts +35 -3
  377. package/Materials/Node/nodeMaterialBuildState.js +169 -16
  378. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  379. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +18 -4
  380. package/Materials/PBR/pbrSubSurfaceConfiguration.js +60 -9
  381. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  382. package/Materials/Textures/Filtering/hdrFiltering.d.ts +2 -2
  383. package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
  384. package/Materials/Textures/Loaders/basisTextureLoader.js +2 -2
  385. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  386. package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -0
  387. package/Materials/Textures/MultiviewRenderTarget.js +1 -0
  388. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  389. package/Materials/Textures/Procedurals/proceduralTexture.js +1 -1
  390. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  391. package/Materials/Textures/baseTexture.d.ts +3 -3
  392. package/Materials/Textures/baseTexture.js.map +1 -1
  393. package/Materials/Textures/colorGradingTexture.d.ts +2 -2
  394. package/Materials/Textures/colorGradingTexture.js.map +1 -1
  395. package/Materials/Textures/cubeTexture.d.ts +3 -2
  396. package/Materials/Textures/cubeTexture.js +1 -0
  397. package/Materials/Textures/cubeTexture.js.map +1 -1
  398. package/Materials/Textures/hdrCubeTexture.d.ts +2 -2
  399. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  400. package/Materials/Textures/htmlElementTexture.d.ts +2 -2
  401. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  402. package/Materials/Textures/internalTexture.d.ts +3 -3
  403. package/Materials/Textures/internalTexture.js.map +1 -1
  404. package/Materials/Textures/rawTexture.d.ts +10 -10
  405. package/Materials/Textures/rawTexture.js.map +1 -1
  406. package/Materials/Textures/renderTargetTexture.d.ts +4 -4
  407. package/Materials/Textures/renderTargetTexture.js +4 -4
  408. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  409. package/Materials/Textures/texture.d.ts +2 -2
  410. package/Materials/Textures/texture.js.map +1 -1
  411. package/Materials/Textures/thinTexture.d.ts +3 -3
  412. package/Materials/Textures/thinTexture.js +1 -1
  413. package/Materials/Textures/thinTexture.js.map +1 -1
  414. package/Materials/drawWrapper.d.ts +2 -3
  415. package/Materials/drawWrapper.functions.d.ts +8 -0
  416. package/Materials/drawWrapper.functions.js +9 -0
  417. package/Materials/drawWrapper.functions.js.map +1 -0
  418. package/Materials/drawWrapper.js +0 -3
  419. package/Materials/drawWrapper.js.map +1 -1
  420. package/Materials/effect.d.ts +4 -5
  421. package/Materials/effect.js.map +1 -1
  422. package/Materials/effectRenderer.d.ts +4 -4
  423. package/Materials/effectRenderer.js.map +1 -1
  424. package/Materials/index.d.ts +1 -0
  425. package/Materials/index.js +1 -0
  426. package/Materials/index.js.map +1 -1
  427. package/Materials/materialFlags.d.ts +6 -0
  428. package/Materials/materialFlags.js +15 -1
  429. package/Materials/materialFlags.js.map +1 -1
  430. package/Materials/materialHelper.functions.d.ts +2 -2
  431. package/Materials/materialHelper.functions.js.map +1 -1
  432. package/Materials/materialPluginBase.d.ts +4 -4
  433. package/Materials/materialPluginBase.js.map +1 -1
  434. package/Materials/materialPluginManager.d.ts +2 -2
  435. package/Materials/materialPluginManager.js.map +1 -1
  436. package/Materials/meshDebugPluginMaterial.js +1 -1
  437. package/Materials/meshDebugPluginMaterial.js.map +1 -1
  438. package/Materials/uniformBuffer.d.ts +2 -2
  439. package/Materials/uniformBuffer.js.map +1 -1
  440. package/Meshes/Builders/greasedLineBuilder.d.ts +6 -0
  441. package/Meshes/Builders/greasedLineBuilder.js +15 -8
  442. package/Meshes/Builders/greasedLineBuilder.js.map +1 -1
  443. package/Meshes/Compression/meshoptCompression.js +4 -3
  444. package/Meshes/Compression/meshoptCompression.js.map +1 -1
  445. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +1 -1
  446. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  447. package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +2 -2
  448. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  449. package/Meshes/GreasedLine/greasedLineMesh.js +1 -1
  450. package/Meshes/GreasedLine/greasedLineMesh.js.map +1 -1
  451. package/Meshes/geometry.d.ts +2 -2
  452. package/Meshes/geometry.js +3 -2
  453. package/Meshes/geometry.js.map +1 -1
  454. package/Meshes/instancedMesh.js.map +1 -1
  455. package/Meshes/mesh.d.ts +3 -3
  456. package/Meshes/mesh.js.map +1 -1
  457. package/Meshes/subMesh.d.ts +2 -2
  458. package/Meshes/subMesh.js.map +1 -1
  459. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
  460. package/Misc/copyTextureToTexture.d.ts +2 -2
  461. package/Misc/copyTextureToTexture.js.map +1 -1
  462. package/Misc/dds.d.ts +3 -2
  463. package/Misc/dds.js +2 -1
  464. package/Misc/dds.js.map +1 -1
  465. package/Misc/dumpTools.d.ts +2 -2
  466. package/Misc/dumpTools.js.map +1 -1
  467. package/Misc/fileTools.js +3 -3
  468. package/Misc/fileTools.js.map +1 -1
  469. package/Misc/filesInput.d.ts +2 -2
  470. package/Misc/filesInput.js.map +1 -1
  471. package/Misc/khronosTextureContainer2.d.ts +8 -2
  472. package/Misc/khronosTextureContainer2.js +3 -2
  473. package/Misc/khronosTextureContainer2.js.map +1 -1
  474. package/Misc/minMaxReducer.d.ts +2 -2
  475. package/Misc/minMaxReducer.js.map +1 -1
  476. package/Misc/screenshotTools.d.ts +6 -6
  477. package/Misc/screenshotTools.js.map +1 -1
  478. package/Misc/textureTools.js.map +1 -1
  479. package/Misc/tools.d.ts +7 -7
  480. package/Misc/tools.functions.d.ts +26 -0
  481. package/Misc/tools.functions.js +62 -0
  482. package/Misc/tools.functions.js.map +1 -1
  483. package/Misc/tools.js.map +1 -1
  484. package/Misc/videoRecorder.d.ts +3 -3
  485. package/Misc/videoRecorder.js.map +1 -1
  486. package/Particles/baseParticleSystem.d.ts +2 -2
  487. package/Particles/baseParticleSystem.js.map +1 -1
  488. package/Particles/computeShaderParticleSystem.d.ts +2 -2
  489. package/Particles/computeShaderParticleSystem.js.map +1 -1
  490. package/Particles/gpuParticleSystem.d.ts +3 -3
  491. package/Particles/gpuParticleSystem.js +2 -2
  492. package/Particles/gpuParticleSystem.js.map +1 -1
  493. package/Particles/particle.js +1 -1
  494. package/Particles/particle.js.map +1 -1
  495. package/Particles/particleSystem.d.ts +3 -3
  496. package/Particles/particleSystem.js +3 -3
  497. package/Particles/particleSystem.js.map +1 -1
  498. package/Particles/particleSystemComponent.d.ts +2 -2
  499. package/Particles/particleSystemComponent.js +2 -2
  500. package/Particles/particleSystemComponent.js.map +1 -1
  501. package/Particles/subEmitter.d.ts +3 -3
  502. package/Particles/subEmitter.js.map +1 -1
  503. package/Particles/thinParticleSystem.d.ts +2 -2
  504. package/Particles/thinParticleSystem.js.map +1 -1
  505. package/Physics/v2/physicsBody.js +3 -3
  506. package/Physics/v2/physicsBody.js.map +1 -1
  507. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  508. package/PostProcesses/RenderPipeline/postProcessRenderEffect.d.ts +2 -2
  509. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
  510. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.d.ts +2 -2
  511. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  512. package/PostProcesses/blackAndWhitePostProcess.d.ts +2 -2
  513. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  514. package/PostProcesses/bloomMergePostProcess.d.ts +2 -2
  515. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  516. package/PostProcesses/blurPostProcess.d.ts +2 -2
  517. package/PostProcesses/blurPostProcess.js.map +1 -1
  518. package/PostProcesses/chromaticAberrationPostProcess.d.ts +2 -2
  519. package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
  520. package/PostProcesses/circleOfConfusionPostProcess.d.ts +2 -2
  521. package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
  522. package/PostProcesses/colorCorrectionPostProcess.d.ts +2 -2
  523. package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
  524. package/PostProcesses/convolutionPostProcess.d.ts +2 -2
  525. package/PostProcesses/convolutionPostProcess.js.map +1 -1
  526. package/PostProcesses/depthOfFieldBlurPostProcess.d.ts +2 -2
  527. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  528. package/PostProcesses/depthOfFieldEffect.js +1 -1
  529. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  530. package/PostProcesses/depthOfFieldMergePostProcess.d.ts +2 -2
  531. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  532. package/PostProcesses/displayPassPostProcess.d.ts +2 -2
  533. package/PostProcesses/displayPassPostProcess.js.map +1 -1
  534. package/PostProcesses/extractHighlightsPostProcess.d.ts +2 -2
  535. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  536. package/PostProcesses/filterPostProcess.d.ts +2 -2
  537. package/PostProcesses/filterPostProcess.js.map +1 -1
  538. package/PostProcesses/fxaaPostProcess.d.ts +2 -2
  539. package/PostProcesses/fxaaPostProcess.js +2 -2
  540. package/PostProcesses/fxaaPostProcess.js.map +1 -1
  541. package/PostProcesses/grainPostProcess.d.ts +2 -2
  542. package/PostProcesses/grainPostProcess.js.map +1 -1
  543. package/PostProcesses/imageProcessingPostProcess.d.ts +2 -2
  544. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  545. package/PostProcesses/motionBlurPostProcess.d.ts +2 -2
  546. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  547. package/PostProcesses/passPostProcess.d.ts +3 -3
  548. package/PostProcesses/passPostProcess.js +2 -2
  549. package/PostProcesses/passPostProcess.js.map +1 -1
  550. package/PostProcesses/postProcess.d.ts +4 -5
  551. package/PostProcesses/postProcess.js +3 -3
  552. package/PostProcesses/postProcess.js.map +1 -1
  553. package/PostProcesses/refractionPostProcess.d.ts +2 -2
  554. package/PostProcesses/refractionPostProcess.js.map +1 -1
  555. package/PostProcesses/screenSpaceCurvaturePostProcess.d.ts +2 -2
  556. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  557. package/PostProcesses/screenSpaceReflectionPostProcess.d.ts +2 -2
  558. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  559. package/PostProcesses/sharpenPostProcess.d.ts +2 -2
  560. package/PostProcesses/sharpenPostProcess.js.map +1 -1
  561. package/PostProcesses/subSurfaceScatteringPostProcess.d.ts +2 -2
  562. package/PostProcesses/subSurfaceScatteringPostProcess.js.map +1 -1
  563. package/PostProcesses/volumetricLightScatteringPostProcess.d.ts +2 -2
  564. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  565. package/Rendering/GlobalIllumination/giRSMManager.js.map +1 -1
  566. package/Rendering/depthPeelingRenderer.js.map +1 -1
  567. package/Rendering/fluidRenderer/fluidRenderer.js.map +1 -1
  568. package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.d.ts +2 -2
  569. package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.js.map +1 -1
  570. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +2 -2
  571. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  572. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +2 -2
  573. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  574. package/Rendering/fluidRenderer/fluidRenderingTextures.d.ts +2 -2
  575. package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
  576. package/Rendering/geometryBufferRenderer.js +24 -18
  577. package/Rendering/geometryBufferRenderer.js.map +1 -1
  578. package/Rendering/outlineRenderer.js.map +1 -1
  579. package/Rendering/prePassRenderer.js.map +1 -1
  580. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +19 -3
  581. package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  582. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +4 -1
  583. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  584. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +1 -0
  585. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  586. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +3 -0
  587. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  588. package/Shaders/pbr.fragment.js +7 -0
  589. package/Shaders/pbr.fragment.js.map +1 -1
  590. package/Shaders/pbr.vertex.js +2 -0
  591. package/Shaders/pbr.vertex.js.map +1 -1
  592. package/ShadersWGSL/ShadersInclude/fresnelFunction.d.ts +5 -0
  593. package/ShadersWGSL/ShadersInclude/fresnelFunction.js +13 -0
  594. package/ShadersWGSL/ShadersInclude/fresnelFunction.js.map +1 -0
  595. package/ShadersWGSL/ShadersInclude/helperFunctions.d.ts +5 -0
  596. package/ShadersWGSL/ShadersInclude/helperFunctions.js +68 -0
  597. package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -0
  598. package/Sprites/spriteRenderer.d.ts +2 -2
  599. package/Sprites/spriteRenderer.js.map +1 -1
  600. package/XR/features/WebXRDepthSensing.js.map +1 -1
  601. package/XR/features/WebXRImageTracking.js.map +1 -1
  602. package/XR/features/WebXRLayers.d.ts +2 -2
  603. package/XR/features/WebXRLayers.js.map +1 -1
  604. package/XR/features/WebXRLightEstimation.js.map +1 -1
  605. package/XR/features/WebXRRawCameraAccess.d.ts +1 -1
  606. package/XR/features/WebXRRawCameraAccess.js.map +1 -1
  607. package/XR/features/WebXRSpaceWarp.js +1 -3
  608. package/XR/features/WebXRSpaceWarp.js.map +1 -1
  609. package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
  610. package/XR/webXRExperienceHelper.js.map +1 -1
  611. package/XR/webXRManagedOutputCanvas.d.ts +2 -2
  612. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  613. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  614. package/XR/webXRSessionManager.js.map +1 -1
  615. package/assetContainer.js.map +1 -1
  616. package/node.d.ts +2 -2
  617. package/node.js.map +1 -1
  618. package/package.json +1 -1
  619. package/scene.d.ts +3 -3
  620. package/scene.js.map +1 -1
@@ -95,50 +95,56 @@ export class ConditionalBlock extends NodeMaterialBlock {
95
95
  switch (this.condition) {
96
96
  case ConditionalBlockConditions.Equal: {
97
97
  state.compilationString +=
98
- this._declareOutput(output, state) + ` = ${this.a.associatedVariableName} == ${this.b.associatedVariableName} ? ${trueStatement} : ${falseStatement};\n`;
98
+ state._declareOutput(output) +
99
+ ` = ${state._generateTertiary(trueStatement, falseStatement, `${this.a.associatedVariableName} == ${this.b.associatedVariableName}`)};\n`;
99
100
  break;
100
101
  }
101
102
  case ConditionalBlockConditions.NotEqual: {
102
103
  state.compilationString +=
103
- this._declareOutput(output, state) + ` = ${this.a.associatedVariableName} != ${this.b.associatedVariableName} ? ${trueStatement} : ${falseStatement};\n`;
104
+ state._declareOutput(output) +
105
+ ` = ${state._generateTertiary(trueStatement, falseStatement, `${this.a.associatedVariableName} != ${this.b.associatedVariableName}`)};\n`;
104
106
  break;
105
107
  }
106
108
  case ConditionalBlockConditions.LessThan: {
107
109
  state.compilationString +=
108
- this._declareOutput(output, state) + ` = ${this.a.associatedVariableName} < ${this.b.associatedVariableName} ? ${trueStatement} : ${falseStatement};\n`;
110
+ state._declareOutput(output) +
111
+ ` = ${state._generateTertiary(trueStatement, falseStatement, `${this.a.associatedVariableName} < ${this.b.associatedVariableName}`)};\n`;
109
112
  break;
110
113
  }
111
114
  case ConditionalBlockConditions.LessOrEqual: {
112
115
  state.compilationString +=
113
- this._declareOutput(output, state) + ` = ${this.a.associatedVariableName} <= ${this.b.associatedVariableName} ? ${trueStatement} : ${falseStatement};\n`;
116
+ state._declareOutput(output) +
117
+ ` = ${state._generateTertiary(trueStatement, falseStatement, `${this.a.associatedVariableName} <= ${this.b.associatedVariableName}`)};\n`;
114
118
  break;
115
119
  }
116
120
  case ConditionalBlockConditions.GreaterThan: {
117
121
  state.compilationString +=
118
- this._declareOutput(output, state) + ` = ${this.a.associatedVariableName} > ${this.b.associatedVariableName} ? ${trueStatement} : ${falseStatement};\n`;
122
+ state._declareOutput(output) +
123
+ ` = ${state._generateTertiary(trueStatement, falseStatement, `${this.a.associatedVariableName} > ${this.b.associatedVariableName}`)};\n`;
119
124
  break;
120
125
  }
121
126
  case ConditionalBlockConditions.GreaterOrEqual: {
122
127
  state.compilationString +=
123
- this._declareOutput(output, state) + ` = ${this.a.associatedVariableName} >= ${this.b.associatedVariableName} ? ${trueStatement} : ${falseStatement};\n`;
128
+ state._declareOutput(output) +
129
+ ` = ${state._generateTertiary(trueStatement, falseStatement, `${this.a.associatedVariableName} >= ${this.b.associatedVariableName}`)};\n`;
124
130
  break;
125
131
  }
126
132
  case ConditionalBlockConditions.Xor: {
127
133
  state.compilationString +=
128
- this._declareOutput(output, state) +
129
- ` = (mod(${this.a.associatedVariableName} + ${this.b.associatedVariableName}, 2.0) > 0.0) ? ${trueStatement} : ${falseStatement};\n`;
134
+ state._declareOutput(output) +
135
+ ` = ${state._generateTertiary(trueStatement, falseStatement, `(((${this.a.associatedVariableName} + ${this.b.associatedVariableName}) % 2.0) > 0.0)`)};\n`;
130
136
  break;
131
137
  }
132
138
  case ConditionalBlockConditions.Or: {
133
139
  state.compilationString +=
134
- this._declareOutput(output, state) +
135
- ` = (min(${this.a.associatedVariableName} + ${this.b.associatedVariableName}, 1.0) > 0.0) ? ${trueStatement} : ${falseStatement};\n`;
140
+ state._declareOutput(output) +
141
+ ` = ${state._generateTertiary(trueStatement, falseStatement, `(min(${this.a.associatedVariableName} + ${this.b.associatedVariableName}, 1.0) > 0.0)`)};\n`;
136
142
  break;
137
143
  }
138
144
  case ConditionalBlockConditions.And: {
139
145
  state.compilationString +=
140
- this._declareOutput(output, state) +
141
- ` = (${this.a.associatedVariableName} * ${this.b.associatedVariableName} > 0.0) ? ${trueStatement} : ${falseStatement};\n`;
146
+ state._declareOutput(output) +
147
+ ` = ${state._generateTertiary(trueStatement, falseStatement, `(${this.a.associatedVariableName} * ${this.b.associatedVariableName} > 0.0)`)};\n`;
142
148
  break;
143
149
  }
144
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"conditionalBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/conditionalBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../scene\";\r\n\r\n/**\r\n * Operations supported by the ConditionalBlock block\r\n */\r\nexport enum ConditionalBlockConditions {\r\n /** Equal */\r\n Equal,\r\n /** NotEqual */\r\n NotEqual,\r\n /** LessThan */\r\n LessThan,\r\n /** GreaterThan */\r\n GreaterThan,\r\n /** LessOrEqual */\r\n LessOrEqual,\r\n /** GreaterOrEqual */\r\n GreaterOrEqual,\r\n /** Logical Exclusive OR */\r\n Xor,\r\n /** Logical Or */\r\n Or,\r\n /** Logical And */\r\n And,\r\n}\r\n\r\n/**\r\n * Block used to apply conditional operation between floats\r\n * @since 5.0.0\r\n */\r\nexport class ConditionalBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the condition applied by the block\r\n */\r\n public condition = ConditionalBlockConditions.LessThan;\r\n\r\n /**\r\n * Creates a new ConditionalBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerInput(\"b\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerInput(\"true\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerInput(\"false\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._linkConnectionTypes(2, 3);\r\n this._outputs[0]._typeConnectionSource = this._inputs[2];\r\n this._outputs[0]._defaultConnectionPointType = NodeMaterialBlockConnectionPointTypes.Float;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"ConditionalBlock\";\r\n }\r\n\r\n /**\r\n * Gets the first operand component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the second operand component\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the value to return if condition is true\r\n */\r\n public get true(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the value to return if condition is false\r\n */\r\n public get false(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const output = this._outputs[0];\r\n\r\n const trueStatement = this.true.isConnected ? this.true.associatedVariableName : \"1.0\";\r\n const falseStatement = this.false.isConnected ? this.false.associatedVariableName : \"0.0\";\r\n\r\n switch (this.condition) {\r\n case ConditionalBlockConditions.Equal: {\r\n state.compilationString +=\r\n this._declareOutput(output, state) + ` = ${this.a.associatedVariableName} == ${this.b.associatedVariableName} ? ${trueStatement} : ${falseStatement};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.NotEqual: {\r\n state.compilationString +=\r\n this._declareOutput(output, state) + ` = ${this.a.associatedVariableName} != ${this.b.associatedVariableName} ? ${trueStatement} : ${falseStatement};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.LessThan: {\r\n state.compilationString +=\r\n this._declareOutput(output, state) + ` = ${this.a.associatedVariableName} < ${this.b.associatedVariableName} ? ${trueStatement} : ${falseStatement};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.LessOrEqual: {\r\n state.compilationString +=\r\n this._declareOutput(output, state) + ` = ${this.a.associatedVariableName} <= ${this.b.associatedVariableName} ? ${trueStatement} : ${falseStatement};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.GreaterThan: {\r\n state.compilationString +=\r\n this._declareOutput(output, state) + ` = ${this.a.associatedVariableName} > ${this.b.associatedVariableName} ? ${trueStatement} : ${falseStatement};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.GreaterOrEqual: {\r\n state.compilationString +=\r\n this._declareOutput(output, state) + ` = ${this.a.associatedVariableName} >= ${this.b.associatedVariableName} ? ${trueStatement} : ${falseStatement};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.Xor: {\r\n state.compilationString +=\r\n this._declareOutput(output, state) +\r\n ` = (mod(${this.a.associatedVariableName} + ${this.b.associatedVariableName}, 2.0) > 0.0) ? ${trueStatement} : ${falseStatement};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.Or: {\r\n state.compilationString +=\r\n this._declareOutput(output, state) +\r\n ` = (min(${this.a.associatedVariableName} + ${this.b.associatedVariableName}, 1.0) > 0.0) ? ${trueStatement} : ${falseStatement};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.And: {\r\n state.compilationString +=\r\n this._declareOutput(output, state) +\r\n ` = (${this.a.associatedVariableName} * ${this.b.associatedVariableName} > 0.0) ? ${trueStatement} : ${falseStatement};\\n`;\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.condition = this.condition;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.condition = serializationObject.condition;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n const codeString =\r\n super._dumpPropertiesCode() + `${this._codeVariableName}.condition = BABYLON.ConditionalBlockConditions.${ConditionalBlockConditions[this.condition]};\\n`;\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ConditionalBlock\", ConditionalBlock);\r\n"]}
1
+ {"version":3,"file":"conditionalBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/conditionalBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../scene\";\r\n\r\n/**\r\n * Operations supported by the ConditionalBlock block\r\n */\r\nexport enum ConditionalBlockConditions {\r\n /** Equal */\r\n Equal,\r\n /** NotEqual */\r\n NotEqual,\r\n /** LessThan */\r\n LessThan,\r\n /** GreaterThan */\r\n GreaterThan,\r\n /** LessOrEqual */\r\n LessOrEqual,\r\n /** GreaterOrEqual */\r\n GreaterOrEqual,\r\n /** Logical Exclusive OR */\r\n Xor,\r\n /** Logical Or */\r\n Or,\r\n /** Logical And */\r\n And,\r\n}\r\n\r\n/**\r\n * Block used to apply conditional operation between floats\r\n * @since 5.0.0\r\n */\r\nexport class ConditionalBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the condition applied by the block\r\n */\r\n public condition = ConditionalBlockConditions.LessThan;\r\n\r\n /**\r\n * Creates a new ConditionalBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerInput(\"b\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerInput(\"true\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerInput(\"false\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._linkConnectionTypes(2, 3);\r\n this._outputs[0]._typeConnectionSource = this._inputs[2];\r\n this._outputs[0]._defaultConnectionPointType = NodeMaterialBlockConnectionPointTypes.Float;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"ConditionalBlock\";\r\n }\r\n\r\n /**\r\n * Gets the first operand component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the second operand component\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the value to return if condition is true\r\n */\r\n public get true(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the value to return if condition is false\r\n */\r\n public get false(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const output = this._outputs[0];\r\n\r\n const trueStatement = this.true.isConnected ? this.true.associatedVariableName : \"1.0\";\r\n const falseStatement = this.false.isConnected ? this.false.associatedVariableName : \"0.0\";\r\n\r\n switch (this.condition) {\r\n case ConditionalBlockConditions.Equal: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTertiary(trueStatement, falseStatement, `${this.a.associatedVariableName} == ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.NotEqual: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTertiary(trueStatement, falseStatement, `${this.a.associatedVariableName} != ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.LessThan: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTertiary(trueStatement, falseStatement, `${this.a.associatedVariableName} < ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.LessOrEqual: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTertiary(trueStatement, falseStatement, `${this.a.associatedVariableName} <= ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.GreaterThan: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTertiary(trueStatement, falseStatement, `${this.a.associatedVariableName} > ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.GreaterOrEqual: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTertiary(trueStatement, falseStatement, `${this.a.associatedVariableName} >= ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.Xor: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTertiary(trueStatement, falseStatement, `(((${this.a.associatedVariableName} + ${this.b.associatedVariableName}) % 2.0) > 0.0)`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.Or: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTertiary(trueStatement, falseStatement, `(min(${this.a.associatedVariableName} + ${this.b.associatedVariableName}, 1.0) > 0.0)`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.And: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTertiary(trueStatement, falseStatement, `(${this.a.associatedVariableName} * ${this.b.associatedVariableName} > 0.0)`)};\\n`;\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.condition = this.condition;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.condition = serializationObject.condition;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n const codeString =\r\n super._dumpPropertiesCode() + `${this._codeVariableName}.condition = BABYLON.ConditionalBlockConditions.${ConditionalBlockConditions[this.condition]};\\n`;\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ConditionalBlock\", ConditionalBlock);\r\n"]}
@@ -51,7 +51,7 @@ export class CrossBlock extends NodeMaterialBlock {
51
51
  _buildBlock(state) {
52
52
  super._buildBlock(state);
53
53
  const output = this._outputs[0];
54
- state.compilationString += this._declareOutput(output, state) + ` = cross(${this.left.associatedVariableName}.xyz, ${this.right.associatedVariableName}.xyz);\n`;
54
+ state.compilationString += state._declareOutput(output) + ` = cross(${this.left.associatedVariableName}.xyz, ${this.right.associatedVariableName}.xyz);\n`;
55
55
  return this;
56
56
  }
57
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"crossBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/crossBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,gDAAgD,CAAC;AAGvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,iBAAiB;IAC7C;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAE9C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,qCAAqC,CAAC,UAAU,CAAC,CAAC;QAC7E,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,qCAAqC,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAE7E,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC;QAC/F,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,MAAM,CAAC,CAAC;QAChG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACjG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC;QAC/F,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,MAAM,CAAC,CAAC;QAChG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;IACrG,CAAC;IAED;;;OAGG;IACI,YAAY;QACf,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAES,WAAW,CAAC,KAA6B;QAC/C,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEhC,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,YAAY,IAAI,CAAC,IAAI,CAAC,sBAAsB,SAAS,IAAI,CAAC,KAAK,CAAC,sBAAsB,UAAU,CAAC;QAEjK,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,aAAa,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\n/**\r\n * Block used to apply a cross product between 2 vectors\r\n */\r\nexport class CrossBlock extends NodeMaterialBlock {\r\n /**\r\n * Creates a new CrossBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"left\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"right\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n\r\n this._linkConnectionTypes(0, 1);\r\n\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Matrix);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this._inputs[1].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n this._inputs[1].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Matrix);\r\n this._inputs[1].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"CrossBlock\";\r\n }\r\n\r\n /**\r\n * Gets the left operand input component\r\n */\r\n public get left(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the right operand input component\r\n */\r\n public get right(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const output = this._outputs[0];\r\n\r\n state.compilationString += this._declareOutput(output, state) + ` = cross(${this.left.associatedVariableName}.xyz, ${this.right.associatedVariableName}.xyz);\\n`;\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CrossBlock\", CrossBlock);\r\n"]}
1
+ {"version":3,"file":"crossBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/crossBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,gDAAgD,CAAC;AAGvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,iBAAiB;IAC7C;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAE9C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,qCAAqC,CAAC,UAAU,CAAC,CAAC;QAC7E,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,qCAAqC,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAE7E,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC;QAC/F,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,MAAM,CAAC,CAAC;QAChG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACjG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC;QAC/F,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,MAAM,CAAC,CAAC;QAChG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;IACrG,CAAC;IAED;;;OAGG;IACI,YAAY;QACf,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAES,WAAW,CAAC,KAA6B;QAC/C,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEhC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,YAAY,IAAI,CAAC,IAAI,CAAC,sBAAsB,SAAS,IAAI,CAAC,KAAK,CAAC,sBAAsB,UAAU,CAAC;QAE3J,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,aAAa,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\n/**\r\n * Block used to apply a cross product between 2 vectors\r\n */\r\nexport class CrossBlock extends NodeMaterialBlock {\r\n /**\r\n * Creates a new CrossBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"left\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"right\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n\r\n this._linkConnectionTypes(0, 1);\r\n\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Matrix);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this._inputs[1].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n this._inputs[1].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Matrix);\r\n this._inputs[1].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"CrossBlock\";\r\n }\r\n\r\n /**\r\n * Gets the left operand input component\r\n */\r\n public get left(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the right operand input component\r\n */\r\n public get right(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const output = this._outputs[0];\r\n\r\n state.compilationString += state._declareOutput(output) + ` = cross(${this.left.associatedVariableName}.xyz, ${this.right.associatedVariableName}.xyz);\\n`;\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CrossBlock\", CrossBlock);\r\n"]}
@@ -2,6 +2,7 @@ import { NodeMaterialBlock } from "../nodeMaterialBlock.js";
2
2
  import { NodeMaterialBlockConnectionPointTypes } from "../Enums/nodeMaterialBlockConnectionPointTypes.js";
3
3
  import { NodeMaterialBlockTargets } from "../Enums/nodeMaterialBlockTargets.js";
4
4
  import { RegisterClass } from "../../../Misc/typeStore.js";
5
+ import { ShaderLanguage } from "../../shaderLanguage.js";
5
6
  /**
6
7
  * Types of curves supported by the Curve block
7
8
  */
@@ -108,12 +109,16 @@ export class CurveBlock extends NodeMaterialBlock {
108
109
  _duplicateEntryDirect(entry) {
109
110
  return `return ${entry.replace(/VAL/g, "v")}`;
110
111
  }
111
- _duplicateVector(entry, inputType) {
112
- if (inputType === "float") {
112
+ _duplicateVector(entry, inputType, isWGSL) {
113
+ if (inputType === "float" || inputType === "f32") {
113
114
  return this._duplicateEntryDirect(entry);
114
115
  }
115
116
  const size = parseInt(inputType.replace("vec", ""));
116
- let code = `
117
+ let code = isWGSL
118
+ ? `
119
+ var ret: vec${size}f = vec${size}f(0.0);
120
+ `
121
+ : `
117
122
  vec${size} ret = vec${size}(0.0);
118
123
  `;
119
124
  for (let i = 1; i <= size; i++) {
@@ -127,24 +132,9 @@ export class CurveBlock extends NodeMaterialBlock {
127
132
  const output = this._outputs[0];
128
133
  let registeredFunction = "";
129
134
  let registeredFunctionName = "";
130
- let inputType = "";
131
- switch (this.input.type) {
132
- case NodeMaterialBlockConnectionPointTypes.Float:
133
- inputType = "float";
134
- break;
135
- case NodeMaterialBlockConnectionPointTypes.Vector2:
136
- inputType = "vec2";
137
- break;
138
- case NodeMaterialBlockConnectionPointTypes.Vector3:
139
- case NodeMaterialBlockConnectionPointTypes.Color3:
140
- inputType = "vec3";
141
- break;
142
- case NodeMaterialBlockConnectionPointTypes.Vector4:
143
- case NodeMaterialBlockConnectionPointTypes.Color4:
144
- inputType = "vec4";
145
- break;
146
- }
147
- registeredFunctionName = CurveBlockTypes[this.type] + "_" + inputType;
135
+ const inputType = state._getShaderType(this.input.type);
136
+ const isWGSL = state.shaderLanguage === ShaderLanguage.WGSL;
137
+ registeredFunctionName = CurveBlockTypes[this.type] + "_" + inputType.replace("<", "").replace(">", "");
148
138
  switch (this.type) {
149
139
  case CurveBlockTypes.EaseInSine:
150
140
  registeredFunction = `return 1.0 - cos((v * 3.1415) / 2.0)`;
@@ -162,8 +152,8 @@ export class CurveBlock extends NodeMaterialBlock {
162
152
  registeredFunction = `return (1.0 - v) * (1.0 - v)`;
163
153
  break;
164
154
  case CurveBlockTypes.EaseInOutQuad: {
165
- const entry = "VAL < 0.5 ? 2.0 * VAL * VAL : 1.0 - pow(-2.0 * VAL + 2.0, 2.0) / 2.0";
166
- registeredFunction = this._duplicateVector(entry, inputType);
155
+ const entry = state._generateTertiary("2.0 * VAL * VAL", "1.0 - pow(-2.0 * VAL + 2.0, 2.0) / 2.0", "VAL < 0.5");
156
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
167
157
  break;
168
158
  }
169
159
  case CurveBlockTypes.EaseInCubic:
@@ -171,12 +161,12 @@ export class CurveBlock extends NodeMaterialBlock {
171
161
  break;
172
162
  case CurveBlockTypes.EaseOutCubic: {
173
163
  const entry = "1.0 - pow(1.0 - VAL, 3.0)";
174
- registeredFunction = this._duplicateVector(entry, inputType);
164
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
175
165
  break;
176
166
  }
177
167
  case CurveBlockTypes.EaseInOutCubic: {
178
- const entry = "VAL < 0.5 ? 4.0 * VAL * VAL * VAL : 1.0 - pow(-2.0 * VAL + 2.0, 3.0) / 2.0";
179
- registeredFunction = this._duplicateVector(entry, inputType);
168
+ const entry = state._generateTertiary("4.0 * VAL * VAL * VAL", "1.0 - pow(-2.0 * VAL + 2.0, 3.0) / 2.0", "VAL < 0.5");
169
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
180
170
  break;
181
171
  }
182
172
  case CurveBlockTypes.EaseInQuart:
@@ -184,12 +174,12 @@ export class CurveBlock extends NodeMaterialBlock {
184
174
  break;
185
175
  case CurveBlockTypes.EaseOutQuart: {
186
176
  const entry = "1.0 - pow(1.0 - VAL, 4.0)";
187
- registeredFunction = this._duplicateVector(entry, inputType);
177
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
188
178
  break;
189
179
  }
190
180
  case CurveBlockTypes.EaseInOutQuart: {
191
- const entry = "VAL < 0.5 ? 8.0 * VAL * VAL * VAL * VAL : 1.0 - pow(-2.0 * VAL + 2.0, 4.0) / 2.0";
192
- registeredFunction = this._duplicateVector(entry, inputType);
181
+ const entry = state._generateTertiary("8.0 * VAL * VAL * VAL * VAL", "1.0 - pow(-2.0 * VAL + 2.0, 4.0) / 2.0", "VAL < 0.5");
182
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
193
183
  break;
194
184
  }
195
185
  case CurveBlockTypes.EaseInQuint:
@@ -197,42 +187,42 @@ export class CurveBlock extends NodeMaterialBlock {
197
187
  break;
198
188
  case CurveBlockTypes.EaseOutQuint: {
199
189
  const entry = "1.0 - pow(1.0 - VAL, 5.0)";
200
- registeredFunction = this._duplicateVector(entry, inputType);
190
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
201
191
  break;
202
192
  }
203
193
  case CurveBlockTypes.EaseInOutQuint: {
204
- const entry = "VAL < 0.5 ? 16.0 * VAL * VAL * VAL * VAL * VAL : 1.0 - pow(-2.0 * VAL + 2.0, 5.0) / 2.0";
205
- registeredFunction = this._duplicateVector(entry, inputType);
194
+ const entry = state._generateTertiary("16.0 * VAL * VAL * VAL * VAL * VAL", "1.0 - pow(-2.0 * VAL + 2.0, 5.0) / 2.0", "VAL < 0.5");
195
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
206
196
  break;
207
197
  }
208
198
  case CurveBlockTypes.EaseInExpo: {
209
- const entry = "VAL == 0.0 ? 0.0 : pow(2.0, 10.0 * VAL - 10.0)";
210
- registeredFunction = this._duplicateVector(entry, inputType);
199
+ const entry = state._generateTertiary("0.0", "pow(2.0, 10.0 * VAL - 10.0)", "VAL == 0.0");
200
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
211
201
  break;
212
202
  }
213
203
  case CurveBlockTypes.EaseOutExpo: {
214
- const entry = "VAL == 1.0 ? 1.0 : 1.0 - pow(2.0, -10.0 * VAL)";
215
- registeredFunction = this._duplicateVector(entry, inputType);
204
+ const entry = state._generateTertiary("1.0", "1.0 - pow(2.0, -10.0 * VAL)", "VAL == 1.0");
205
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
216
206
  break;
217
207
  }
218
208
  case CurveBlockTypes.EaseInOutExpo: {
219
- const entry = "VAL == 0.0 ? 0.0 : VAL == 1.0 ? 1.0 : VAL < 0.5 ? pow(2.0, 20.0 * VAL - 10.0) / 2.0 : (2.0 - pow(2.0, -20.0 * VAL + 10.0)) / 2.0";
220
- registeredFunction = this._duplicateVector(entry, inputType);
209
+ const entry = state._generateTertiary("0.0", state._generateTertiary("1.0", state._generateTertiary("pow(2.0, 20.0 * VAL - 10.0) / 2.0", "(2.0 - pow(2.0, -20.0 * VAL + 10.0)) / 2.0", "VAL < 0.5"), "VAL == 1.0"), "VAL == 0.0");
210
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
221
211
  break;
222
212
  }
223
213
  case CurveBlockTypes.EaseInCirc: {
224
214
  const entry = "1.0 - sqrt(1.0 - pow(VAL, 2.0))";
225
- registeredFunction = this._duplicateVector(entry, inputType);
215
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
226
216
  break;
227
217
  }
228
218
  case CurveBlockTypes.EaseOutCirc: {
229
219
  const entry = "sqrt(1.0 - pow(VAL - 1.0, 2.0))";
230
- registeredFunction = this._duplicateVector(entry, inputType);
220
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
231
221
  break;
232
222
  }
233
223
  case CurveBlockTypes.EaseInOutCirc: {
234
- const entry = "VAL < 0.5 ? (1.0 - sqrt(1.0 - pow(2.0 * VAL, 2.0))) / 2.0 : (sqrt(1.0 - pow(-2.0 * VAL + 2.0, 2.0)) + 1.0) / 2.0";
235
- registeredFunction = this._duplicateVector(entry, inputType);
224
+ const entry = state._generateTertiary("(1.0 - sqrt(1.0 - pow(2.0 * VAL, 2.0))) / 2.0", "(sqrt(1.0 - pow(-2.0 * VAL + 2.0, 2.0)) + 1.0) / 2.0", "VAL < 0.5");
225
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
236
226
  break;
237
227
  }
238
228
  case CurveBlockTypes.EaseInBack: {
@@ -241,32 +231,37 @@ export class CurveBlock extends NodeMaterialBlock {
241
231
  }
242
232
  case CurveBlockTypes.EaseOutBack: {
243
233
  const entry = "2.70158 * pow(VAL - 1.0, 3.0) + 1.70158 * pow(VAL - 1.0, 2.0)";
244
- registeredFunction = this._duplicateVector(entry, inputType);
234
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
245
235
  break;
246
236
  }
247
237
  case CurveBlockTypes.EaseInOutBack: {
248
- const entry = "VAL < 0.5 ? (pow(2.0 * VAL, 2.0) * ((3.5949095) * 2.0 * VAL - 2.5949095)) / 2.0 : (pow(2.0 * VAL - 2.0, 2.0) * (3.5949095 * (VAL * 2.0 - 2.0) + 3.5949095) + 2.0) / 2.0";
249
- registeredFunction = this._duplicateVector(entry, inputType);
238
+ const entry = state._generateTertiary("(pow(2.0 * VAL, 2.0) * ((3.5949095) * 2.0 * VAL - 2.5949095)) / 2.0", "(pow(2.0 * VAL - 2.0, 2.0) * (3.5949095 * (VAL * 2.0 - 2.0) + 3.5949095) + 2.0) / 2.0", "VAL < 0.5");
239
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
250
240
  break;
251
241
  }
252
242
  case CurveBlockTypes.EaseInElastic: {
253
- const entry = "VAL == 0.0 ? 0.0 : VAL == 1.0 ? 1.0 : -pow(2.0, 10.0 * VAL - 10.0) * sin((VAL * 10.0 - 10.75) * ((2.0 * 3.1415) / 3.0))";
254
- registeredFunction = this._duplicateVector(entry, inputType);
243
+ const entry = state._generateTertiary("0.0", state._generateTertiary("1.0", "-pow(2.0, 10.0 * VAL - 10.0) * sin((VAL * 10.0 - 10.75) * ((2.0 * 3.1415) / 3.0))", "VAL == 1.0"), "VAL == 0.0");
244
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
255
245
  break;
256
246
  }
257
247
  case CurveBlockTypes.EaseOutElastic: {
258
- const entry = "VAL == 0.0 ? 0.0 : VAL == 1.0 ? 1.0 : pow(2.0, -10.0 * VAL) * sin((VAL * 10.0 - 0.75) * ((2.0 * 3.1415) / 3.0)) + 1.0";
259
- registeredFunction = this._duplicateVector(entry, inputType);
248
+ const entry = state._generateTertiary("0.0", state._generateTertiary("1.0", "pow(2.0, -10.0 * VAL) * sin((VAL * 10.0 - 0.75) * ((2.0 * 3.1415) / 3.0)) + 1.0", "VAL == 1.0"), "VAL == 0.0");
249
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
260
250
  break;
261
251
  }
262
252
  case CurveBlockTypes.EaseInOutElastic: {
263
- const entry = "VAL == 0.0 ? 0.0 : VAL == 1.0 ? 1.0 : VAL < 0.5 ? -(pow(2.0, 20.0 * VAL - 10.0) * sin((20.0 * VAL - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0 : (pow(2.0, -20.0 * VAL + 10.0) * sin((20.0 * VAL - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0 + 1.0";
264
- registeredFunction = this._duplicateVector(entry, inputType);
253
+ const entry = state._generateTertiary("0.0", state._generateTertiary("1.0", state._generateTertiary("-(pow(2.0, 20.0 * VAL - 10.0) * sin((20.0 * VAL - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0", "(pow(2.0, -20.0 * VAL + 10.0) * sin((20.0 * VAL - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0 + 1.0", "VAL < 0.5"), "VAL == 1.0"), "VAL == 0.0");
254
+ registeredFunction = this._duplicateVector(entry, inputType, isWGSL);
265
255
  break;
266
256
  }
267
257
  }
268
- state._emitFunction(registeredFunctionName, `${inputType} ${registeredFunctionName}(${inputType} v) {${registeredFunction};}\n`, "");
269
- state.compilationString += this._declareOutput(output, state) + ` = ${registeredFunctionName}(${this.input.associatedVariableName});\n`;
258
+ if (isWGSL) {
259
+ state._emitFunction(registeredFunctionName, `fn ${registeredFunctionName}(v: ${inputType}) -> ${inputType} {${registeredFunction};}\n`, "");
260
+ }
261
+ else {
262
+ state._emitFunction(registeredFunctionName, `${inputType} ${registeredFunctionName}(${inputType} v) {${registeredFunction};}\n`, "");
263
+ }
264
+ state.compilationString += state._declareOutput(output) + ` = ${registeredFunctionName}(${this.input.associatedVariableName});\n`;
270
265
  return this;
271
266
  }
272
267
  serialize() {
@@ -1 +1 @@
1
- {"version":3,"file":"curveBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/curveBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../scene\";\r\n\r\n/**\r\n * Types of curves supported by the Curve block\r\n */\r\nexport enum CurveBlockTypes {\r\n /** EaseInSine */\r\n EaseInSine,\r\n /** EaseOutSine */\r\n EaseOutSine,\r\n /** EaseInOutSine */\r\n EaseInOutSine,\r\n /** EaseInQuad */\r\n EaseInQuad,\r\n /** EaseOutQuad */\r\n EaseOutQuad,\r\n /** EaseInOutQuad */\r\n EaseInOutQuad,\r\n /** EaseInCubic */\r\n EaseInCubic,\r\n /** EaseOutCubic */\r\n EaseOutCubic,\r\n /** EaseInOutCubic */\r\n EaseInOutCubic,\r\n /** EaseInQuart */\r\n EaseInQuart,\r\n /** EaseOutQuart */\r\n EaseOutQuart,\r\n /** EaseInOutQuart */\r\n EaseInOutQuart,\r\n /** EaseInQuint */\r\n EaseInQuint,\r\n /** EaseOutQuint */\r\n EaseOutQuint,\r\n /** EaseInOutQuint */\r\n EaseInOutQuint,\r\n /** EaseInExpo */\r\n EaseInExpo,\r\n /** EaseOutExpo */\r\n EaseOutExpo,\r\n /** EaseInOutExpo */\r\n EaseInOutExpo,\r\n /** EaseInCirc */\r\n EaseInCirc,\r\n /** EaseOutCirc */\r\n EaseOutCirc,\r\n /** EaseInOutCirc */\r\n EaseInOutCirc,\r\n /** EaseInBack */\r\n EaseInBack,\r\n /** EaseOutBack */\r\n EaseOutBack,\r\n /** EaseInOutBack */\r\n EaseInOutBack,\r\n /** EaseInElastic */\r\n EaseInElastic,\r\n /** EaseOutElastic */\r\n EaseOutElastic,\r\n /** EaseInOutElastic */\r\n EaseInOutElastic,\r\n}\r\n\r\n/**\r\n * Block used to apply curve operation\r\n */\r\nexport class CurveBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the type of the curve applied by the block\r\n */\r\n public type = CurveBlockTypes.EaseInOutSine;\r\n\r\n /**\r\n * Creates a new CurveBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"input\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[0];\r\n\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Matrix);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Object);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Int);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"CurveBlock\";\r\n }\r\n\r\n /**\r\n * Gets the input component\r\n */\r\n public get input(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n private _duplicateEntry(entry: string, component: string) {\r\n return `ret.${component} = ${entry.replace(/VAL/g, \"v.\" + component)}`;\r\n }\r\n\r\n private _duplicateEntryDirect(entry: string) {\r\n return `return ${entry.replace(/VAL/g, \"v\")}`;\r\n }\r\n\r\n private _duplicateVector(entry: string, inputType: string) {\r\n if (inputType === \"float\") {\r\n return this._duplicateEntryDirect(entry);\r\n }\r\n\r\n const size = parseInt(inputType.replace(\"vec\", \"\"));\r\n let code = `\r\n vec${size} ret = vec${size}(0.0);\r\n `;\r\n\r\n for (let i = 1; i <= size; i++) {\r\n code += this._duplicateEntry(entry, i === 1 ? \"x\" : i === 2 ? \"y\" : i === 3 ? \"z\" : \"w\") + \";\\n\";\r\n }\r\n\r\n code += \"return ret;\\n\";\r\n return code;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const output = this._outputs[0];\r\n let registeredFunction = \"\";\r\n let registeredFunctionName = \"\";\r\n\r\n let inputType = \"\";\r\n\r\n switch (this.input.type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n inputType = \"float\";\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n inputType = \"vec2\";\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n inputType = \"vec3\";\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n inputType = \"vec4\";\r\n break;\r\n }\r\n\r\n registeredFunctionName = CurveBlockTypes[this.type] + \"_\" + inputType;\r\n\r\n switch (this.type) {\r\n case CurveBlockTypes.EaseInSine:\r\n registeredFunction = `return 1.0 - cos((v * 3.1415) / 2.0)`;\r\n break;\r\n case CurveBlockTypes.EaseOutSine:\r\n registeredFunction = `return sin((v * 3.1415) / 2.0)`;\r\n break;\r\n case CurveBlockTypes.EaseInOutSine:\r\n registeredFunction = `return -(cos(v * 3.1415) - 1.0) / 2.0`;\r\n break;\r\n case CurveBlockTypes.EaseInQuad:\r\n registeredFunction = `return v * v`;\r\n break;\r\n case CurveBlockTypes.EaseOutQuad:\r\n registeredFunction = `return (1.0 - v) * (1.0 - v)`;\r\n break;\r\n case CurveBlockTypes.EaseInOutQuad: {\r\n const entry = \"VAL < 0.5 ? 2.0 * VAL * VAL : 1.0 - pow(-2.0 * VAL + 2.0, 2.0) / 2.0\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInCubic:\r\n registeredFunction = `return v * v * v`;\r\n break;\r\n case CurveBlockTypes.EaseOutCubic: {\r\n const entry = \"1.0 - pow(1.0 - VAL, 3.0)\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutCubic: {\r\n const entry = \"VAL < 0.5 ? 4.0 * VAL * VAL * VAL : 1.0 - pow(-2.0 * VAL + 2.0, 3.0) / 2.0\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInQuart:\r\n registeredFunction = `return v * v * v * v`;\r\n break;\r\n case CurveBlockTypes.EaseOutQuart: {\r\n const entry = \"1.0 - pow(1.0 - VAL, 4.0)\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutQuart: {\r\n const entry = \"VAL < 0.5 ? 8.0 * VAL * VAL * VAL * VAL : 1.0 - pow(-2.0 * VAL + 2.0, 4.0) / 2.0\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInQuint:\r\n registeredFunction = `return v * v * v * v * v`;\r\n break;\r\n case CurveBlockTypes.EaseOutQuint: {\r\n const entry = \"1.0 - pow(1.0 - VAL, 5.0)\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutQuint: {\r\n const entry = \"VAL < 0.5 ? 16.0 * VAL * VAL * VAL * VAL * VAL : 1.0 - pow(-2.0 * VAL + 2.0, 5.0) / 2.0\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInExpo: {\r\n const entry = \"VAL == 0.0 ? 0.0 : pow(2.0, 10.0 * VAL - 10.0)\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseOutExpo: {\r\n const entry = \"VAL == 1.0 ? 1.0 : 1.0 - pow(2.0, -10.0 * VAL)\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutExpo: {\r\n const entry = \"VAL == 0.0 ? 0.0 : VAL == 1.0 ? 1.0 : VAL < 0.5 ? pow(2.0, 20.0 * VAL - 10.0) / 2.0 : (2.0 - pow(2.0, -20.0 * VAL + 10.0)) / 2.0\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInCirc: {\r\n const entry = \"1.0 - sqrt(1.0 - pow(VAL, 2.0))\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseOutCirc: {\r\n const entry = \"sqrt(1.0 - pow(VAL - 1.0, 2.0))\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutCirc: {\r\n const entry = \"VAL < 0.5 ? (1.0 - sqrt(1.0 - pow(2.0 * VAL, 2.0))) / 2.0 : (sqrt(1.0 - pow(-2.0 * VAL + 2.0, 2.0)) + 1.0) / 2.0\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInBack: {\r\n registeredFunction = \"return 2.70158 * v * v * v - 1.70158 * v * v\";\r\n break;\r\n }\r\n case CurveBlockTypes.EaseOutBack: {\r\n const entry = \"2.70158 * pow(VAL - 1.0, 3.0) + 1.70158 * pow(VAL - 1.0, 2.0)\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutBack: {\r\n const entry =\r\n \"VAL < 0.5 ? (pow(2.0 * VAL, 2.0) * ((3.5949095) * 2.0 * VAL - 2.5949095)) / 2.0 : (pow(2.0 * VAL - 2.0, 2.0) * (3.5949095 * (VAL * 2.0 - 2.0) + 3.5949095) + 2.0) / 2.0\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInElastic: {\r\n const entry = \"VAL == 0.0 ? 0.0 : VAL == 1.0 ? 1.0 : -pow(2.0, 10.0 * VAL - 10.0) * sin((VAL * 10.0 - 10.75) * ((2.0 * 3.1415) / 3.0))\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseOutElastic: {\r\n const entry = \"VAL == 0.0 ? 0.0 : VAL == 1.0 ? 1.0 : pow(2.0, -10.0 * VAL) * sin((VAL * 10.0 - 0.75) * ((2.0 * 3.1415) / 3.0)) + 1.0\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutElastic: {\r\n const entry =\r\n \"VAL == 0.0 ? 0.0 : VAL == 1.0 ? 1.0 : VAL < 0.5 ? -(pow(2.0, 20.0 * VAL - 10.0) * sin((20.0 * VAL - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0 : (pow(2.0, -20.0 * VAL + 10.0) * sin((20.0 * VAL - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0 + 1.0\";\r\n registeredFunction = this._duplicateVector(entry, inputType);\r\n break;\r\n }\r\n }\r\n\r\n state._emitFunction(registeredFunctionName, `${inputType} ${registeredFunctionName}(${inputType} v) {${registeredFunction};}\\n`, \"\");\r\n\r\n state.compilationString += this._declareOutput(output, state) + ` = ${registeredFunctionName}(${this.input.associatedVariableName});\\n`;\r\n\r\n return this;\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.curveType = this.type;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.type = serializationObject.curveType;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n const codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.type = BABYLON.CurveBlockTypes.${CurveBlockTypes[this.type]};\\n`;\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CurveBlock\", CurveBlock);\r\n"]}
1
+ {"version":3,"file":"curveBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/curveBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Types of curves supported by the Curve block\r\n */\r\nexport enum CurveBlockTypes {\r\n /** EaseInSine */\r\n EaseInSine,\r\n /** EaseOutSine */\r\n EaseOutSine,\r\n /** EaseInOutSine */\r\n EaseInOutSine,\r\n /** EaseInQuad */\r\n EaseInQuad,\r\n /** EaseOutQuad */\r\n EaseOutQuad,\r\n /** EaseInOutQuad */\r\n EaseInOutQuad,\r\n /** EaseInCubic */\r\n EaseInCubic,\r\n /** EaseOutCubic */\r\n EaseOutCubic,\r\n /** EaseInOutCubic */\r\n EaseInOutCubic,\r\n /** EaseInQuart */\r\n EaseInQuart,\r\n /** EaseOutQuart */\r\n EaseOutQuart,\r\n /** EaseInOutQuart */\r\n EaseInOutQuart,\r\n /** EaseInQuint */\r\n EaseInQuint,\r\n /** EaseOutQuint */\r\n EaseOutQuint,\r\n /** EaseInOutQuint */\r\n EaseInOutQuint,\r\n /** EaseInExpo */\r\n EaseInExpo,\r\n /** EaseOutExpo */\r\n EaseOutExpo,\r\n /** EaseInOutExpo */\r\n EaseInOutExpo,\r\n /** EaseInCirc */\r\n EaseInCirc,\r\n /** EaseOutCirc */\r\n EaseOutCirc,\r\n /** EaseInOutCirc */\r\n EaseInOutCirc,\r\n /** EaseInBack */\r\n EaseInBack,\r\n /** EaseOutBack */\r\n EaseOutBack,\r\n /** EaseInOutBack */\r\n EaseInOutBack,\r\n /** EaseInElastic */\r\n EaseInElastic,\r\n /** EaseOutElastic */\r\n EaseOutElastic,\r\n /** EaseInOutElastic */\r\n EaseInOutElastic,\r\n}\r\n\r\n/**\r\n * Block used to apply curve operation\r\n */\r\nexport class CurveBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the type of the curve applied by the block\r\n */\r\n public type = CurveBlockTypes.EaseInOutSine;\r\n\r\n /**\r\n * Creates a new CurveBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"input\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[0];\r\n\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Matrix);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Object);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Int);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"CurveBlock\";\r\n }\r\n\r\n /**\r\n * Gets the input component\r\n */\r\n public get input(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n private _duplicateEntry(entry: string, component: string) {\r\n return `ret.${component} = ${entry.replace(/VAL/g, \"v.\" + component)}`;\r\n }\r\n\r\n private _duplicateEntryDirect(entry: string) {\r\n return `return ${entry.replace(/VAL/g, \"v\")}`;\r\n }\r\n\r\n private _duplicateVector(entry: string, inputType: string, isWGSL: boolean) {\r\n if (inputType === \"float\" || inputType === \"f32\") {\r\n return this._duplicateEntryDirect(entry);\r\n }\r\n\r\n const size = parseInt(inputType.replace(\"vec\", \"\"));\r\n let code = isWGSL\r\n ? `\r\n var ret: vec${size}f = vec${size}f(0.0);\r\n `\r\n : `\r\n vec${size} ret = vec${size}(0.0);\r\n `;\r\n\r\n for (let i = 1; i <= size; i++) {\r\n code += this._duplicateEntry(entry, i === 1 ? \"x\" : i === 2 ? \"y\" : i === 3 ? \"z\" : \"w\") + \";\\n\";\r\n }\r\n\r\n code += \"return ret;\\n\";\r\n return code;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const output = this._outputs[0];\r\n let registeredFunction = \"\";\r\n let registeredFunctionName = \"\";\r\n\r\n const inputType = state._getShaderType(this.input.type);\r\n const isWGSL = state.shaderLanguage === ShaderLanguage.WGSL;\r\n\r\n registeredFunctionName = CurveBlockTypes[this.type] + \"_\" + inputType.replace(\"<\", \"\").replace(\">\", \"\");\r\n\r\n switch (this.type) {\r\n case CurveBlockTypes.EaseInSine:\r\n registeredFunction = `return 1.0 - cos((v * 3.1415) / 2.0)`;\r\n break;\r\n case CurveBlockTypes.EaseOutSine:\r\n registeredFunction = `return sin((v * 3.1415) / 2.0)`;\r\n break;\r\n case CurveBlockTypes.EaseInOutSine:\r\n registeredFunction = `return -(cos(v * 3.1415) - 1.0) / 2.0`;\r\n break;\r\n case CurveBlockTypes.EaseInQuad:\r\n registeredFunction = `return v * v`;\r\n break;\r\n case CurveBlockTypes.EaseOutQuad:\r\n registeredFunction = `return (1.0 - v) * (1.0 - v)`;\r\n break;\r\n case CurveBlockTypes.EaseInOutQuad: {\r\n const entry = state._generateTertiary(\"2.0 * VAL * VAL\", \"1.0 - pow(-2.0 * VAL + 2.0, 2.0) / 2.0\", \"VAL < 0.5\");\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInCubic:\r\n registeredFunction = `return v * v * v`;\r\n break;\r\n case CurveBlockTypes.EaseOutCubic: {\r\n const entry = \"1.0 - pow(1.0 - VAL, 3.0)\";\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutCubic: {\r\n const entry = state._generateTertiary(\"4.0 * VAL * VAL * VAL\", \"1.0 - pow(-2.0 * VAL + 2.0, 3.0) / 2.0\", \"VAL < 0.5\");\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInQuart:\r\n registeredFunction = `return v * v * v * v`;\r\n break;\r\n case CurveBlockTypes.EaseOutQuart: {\r\n const entry = \"1.0 - pow(1.0 - VAL, 4.0)\";\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutQuart: {\r\n const entry = state._generateTertiary(\"8.0 * VAL * VAL * VAL * VAL\", \"1.0 - pow(-2.0 * VAL + 2.0, 4.0) / 2.0\", \"VAL < 0.5\");\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInQuint:\r\n registeredFunction = `return v * v * v * v * v`;\r\n break;\r\n case CurveBlockTypes.EaseOutQuint: {\r\n const entry = \"1.0 - pow(1.0 - VAL, 5.0)\";\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutQuint: {\r\n const entry = state._generateTertiary(\"16.0 * VAL * VAL * VAL * VAL * VAL\", \"1.0 - pow(-2.0 * VAL + 2.0, 5.0) / 2.0\", \"VAL < 0.5\");\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInExpo: {\r\n const entry = state._generateTertiary(\"0.0\", \"pow(2.0, 10.0 * VAL - 10.0)\", \"VAL == 0.0\");\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseOutExpo: {\r\n const entry = state._generateTertiary(\"1.0\", \"1.0 - pow(2.0, -10.0 * VAL)\", \"VAL == 1.0\");\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutExpo: {\r\n const entry = state._generateTertiary(\r\n \"0.0\",\r\n state._generateTertiary(\r\n \"1.0\",\r\n state._generateTertiary(\"pow(2.0, 20.0 * VAL - 10.0) / 2.0\", \"(2.0 - pow(2.0, -20.0 * VAL + 10.0)) / 2.0\", \"VAL < 0.5\"),\r\n \"VAL == 1.0\"\r\n ),\r\n \"VAL == 0.0\"\r\n );\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInCirc: {\r\n const entry = \"1.0 - sqrt(1.0 - pow(VAL, 2.0))\";\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseOutCirc: {\r\n const entry = \"sqrt(1.0 - pow(VAL - 1.0, 2.0))\";\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutCirc: {\r\n const entry = state._generateTertiary(\"(1.0 - sqrt(1.0 - pow(2.0 * VAL, 2.0))) / 2.0\", \"(sqrt(1.0 - pow(-2.0 * VAL + 2.0, 2.0)) + 1.0) / 2.0\", \"VAL < 0.5\");\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInBack: {\r\n registeredFunction = \"return 2.70158 * v * v * v - 1.70158 * v * v\";\r\n break;\r\n }\r\n case CurveBlockTypes.EaseOutBack: {\r\n const entry = \"2.70158 * pow(VAL - 1.0, 3.0) + 1.70158 * pow(VAL - 1.0, 2.0)\";\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutBack: {\r\n const entry = state._generateTertiary(\r\n \"(pow(2.0 * VAL, 2.0) * ((3.5949095) * 2.0 * VAL - 2.5949095)) / 2.0\",\r\n \"(pow(2.0 * VAL - 2.0, 2.0) * (3.5949095 * (VAL * 2.0 - 2.0) + 3.5949095) + 2.0) / 2.0\",\r\n \"VAL < 0.5\"\r\n );\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInElastic: {\r\n const entry = state._generateTertiary(\r\n \"0.0\",\r\n state._generateTertiary(\"1.0\", \"-pow(2.0, 10.0 * VAL - 10.0) * sin((VAL * 10.0 - 10.75) * ((2.0 * 3.1415) / 3.0))\", \"VAL == 1.0\"),\r\n \"VAL == 0.0\"\r\n );\r\n\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseOutElastic: {\r\n const entry = state._generateTertiary(\r\n \"0.0\",\r\n state._generateTertiary(\"1.0\", \"pow(2.0, -10.0 * VAL) * sin((VAL * 10.0 - 0.75) * ((2.0 * 3.1415) / 3.0)) + 1.0\", \"VAL == 1.0\"),\r\n \"VAL == 0.0\"\r\n );\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n case CurveBlockTypes.EaseInOutElastic: {\r\n const entry = state._generateTertiary(\r\n \"0.0\",\r\n state._generateTertiary(\r\n \"1.0\",\r\n state._generateTertiary(\r\n \"-(pow(2.0, 20.0 * VAL - 10.0) * sin((20.0 * VAL - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0\",\r\n \"(pow(2.0, -20.0 * VAL + 10.0) * sin((20.0 * VAL - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0 + 1.0\",\r\n \"VAL < 0.5\"\r\n ),\r\n \"VAL == 1.0\"\r\n ),\r\n \"VAL == 0.0\"\r\n );\r\n\r\n registeredFunction = this._duplicateVector(entry, inputType, isWGSL);\r\n break;\r\n }\r\n }\r\n\r\n if (isWGSL) {\r\n state._emitFunction(registeredFunctionName, `fn ${registeredFunctionName}(v: ${inputType}) -> ${inputType} {${registeredFunction};}\\n`, \"\");\r\n } else {\r\n state._emitFunction(registeredFunctionName, `${inputType} ${registeredFunctionName}(${inputType} v) {${registeredFunction};}\\n`, \"\");\r\n }\r\n\r\n state.compilationString += state._declareOutput(output) + ` = ${registeredFunctionName}(${this.input.associatedVariableName});\\n`;\r\n\r\n return this;\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.curveType = this.type;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.type = serializationObject.curveType;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n const codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.type = BABYLON.CurveBlockTypes.${CurveBlockTypes[this.type]};\\n`;\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CurveBlock\", CurveBlock);\r\n"]}
@@ -52,7 +52,7 @@ export class CustomBlock extends NodeMaterialBlock {
52
52
  state._emitFunction(functionName, code, "");
53
53
  // Declare the output variables
54
54
  this._outputs.forEach((output) => {
55
- state.compilationString += this._declareOutput(output, state) + ";\n";
55
+ state.compilationString += state._declareOutput(output) + ";\n";
56
56
  });
57
57
  // Generate the function call
58
58
  state.compilationString += functionName + "(";
@@ -1 +1 @@
1
- {"version":3,"file":"customBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/customBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialConnectionPointDirection } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { ImageSourceBlock } from \"./Dual/imageSourceBlock\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../nodeMaterialConnectionPointCustomObject\";\r\n\r\n/**\r\n * Custom block created from user-defined json\r\n */\r\nexport class CustomBlock extends NodeMaterialBlock {\r\n private _options: any;\r\n private _code: string;\r\n private _inputSamplers: string[];\r\n\r\n /**\r\n * Gets or sets the options for this custom block\r\n */\r\n public get options() {\r\n return this._options;\r\n }\r\n\r\n public set options(options: any) {\r\n this._deserializeOptions(options);\r\n }\r\n\r\n /**\r\n * Creates a new CustomBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"CustomBlock\";\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let code = this._code;\r\n\r\n let functionName = this._options.functionName;\r\n\r\n // Replace the TYPE_XXX placeholders (if any)\r\n this._inputs.forEach((input) => {\r\n const rexp = new RegExp(\"\\\\{TYPE_\" + input.name + \"\\\\}\", \"gm\");\r\n const type = state._getGLType(input.type);\r\n code = code.replace(rexp, type);\r\n functionName = functionName.replace(rexp, type);\r\n });\r\n this._outputs.forEach((output) => {\r\n const rexp = new RegExp(\"\\\\{TYPE_\" + output.name + \"\\\\}\", \"gm\");\r\n const type = state._getGLType(output.type);\r\n code = code.replace(rexp, type);\r\n functionName = functionName.replace(rexp, type);\r\n });\r\n\r\n state._emitFunction(functionName, code, \"\");\r\n\r\n // Declare the output variables\r\n this._outputs.forEach((output) => {\r\n state.compilationString += this._declareOutput(output, state) + \";\\n\";\r\n });\r\n\r\n // Generate the function call\r\n state.compilationString += functionName + \"(\";\r\n\r\n let hasInput = false;\r\n this._inputs.forEach((input, index) => {\r\n if (index > 0) {\r\n state.compilationString += \", \";\r\n }\r\n if (this._inputSamplers && this._inputSamplers.indexOf(input.name) !== -1) {\r\n state.compilationString += (input.connectedPoint?.ownerBlock as ImageSourceBlock)?.samplerName ?? input.associatedVariableName;\r\n } else {\r\n state.compilationString += input.associatedVariableName;\r\n }\r\n hasInput = true;\r\n });\r\n\r\n this._outputs.forEach((output, index) => {\r\n if (index > 0 || hasInput) {\r\n state.compilationString += \", \";\r\n }\r\n state.compilationString += output.associatedVariableName;\r\n });\r\n\r\n state.compilationString += \");\\n\";\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.options = ${JSON.stringify(this._options)};\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.options = this._options;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n this._deserializeOptions(serializationObject.options);\r\n\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n }\r\n\r\n private _deserializeOptions(options: any) {\r\n this._options = options;\r\n this._code = options.code.join(\"\\n\") + \"\\n\";\r\n this.name = this.name || options.name;\r\n this.target = (<any>NodeMaterialBlockTargets)[options.target];\r\n\r\n options.inParameters?.forEach((input: any, index: number) => {\r\n const type = (<any>NodeMaterialBlockConnectionPointTypes)[input.type];\r\n if (input.type === \"sampler2D\" || input.type === \"samplerCube\") {\r\n this._inputSamplers = this._inputSamplers || [];\r\n this._inputSamplers.push(input.name);\r\n this.registerInput(\r\n input.name,\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(input.name, this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n } else {\r\n this.registerInput(input.name, type);\r\n }\r\n\r\n Object.defineProperty(this, input.name, {\r\n get: function () {\r\n return this._inputs[index];\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n });\r\n\r\n options.outParameters?.forEach((output: any, index: number) => {\r\n this.registerOutput(output.name, (<any>NodeMaterialBlockConnectionPointTypes)[output.type]);\r\n\r\n Object.defineProperty(this, output.name, {\r\n get: function () {\r\n return this._outputs[index];\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n\r\n if (output.type === \"BasedOnInput\") {\r\n this._outputs[index]._typeConnectionSource = this._findInputByName(output.typeFromInput)![0];\r\n }\r\n });\r\n\r\n options.inLinkedConnectionTypes?.forEach((connection: any) => {\r\n this._linkConnectionTypes(this._findInputByName(connection.input1)![1], this._findInputByName(connection.input2)![1]);\r\n });\r\n }\r\n\r\n private _findInputByName(name: string): Nullable<[NodeMaterialConnectionPoint, number]> {\r\n if (!name) {\r\n return null;\r\n }\r\n\r\n for (let i = 0; i < this._inputs.length; i++) {\r\n if (this._inputs[i].name === name) {\r\n return [this._inputs[i], i];\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CustomBlock\", CustomBlock);\r\n"]}
1
+ {"version":3,"file":"customBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/customBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialConnectionPointDirection } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { ImageSourceBlock } from \"./Dual/imageSourceBlock\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../nodeMaterialConnectionPointCustomObject\";\r\n\r\n/**\r\n * Custom block created from user-defined json\r\n */\r\nexport class CustomBlock extends NodeMaterialBlock {\r\n private _options: any;\r\n private _code: string;\r\n private _inputSamplers: string[];\r\n\r\n /**\r\n * Gets or sets the options for this custom block\r\n */\r\n public get options() {\r\n return this._options;\r\n }\r\n\r\n public set options(options: any) {\r\n this._deserializeOptions(options);\r\n }\r\n\r\n /**\r\n * Creates a new CustomBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"CustomBlock\";\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let code = this._code;\r\n\r\n let functionName = this._options.functionName;\r\n\r\n // Replace the TYPE_XXX placeholders (if any)\r\n this._inputs.forEach((input) => {\r\n const rexp = new RegExp(\"\\\\{TYPE_\" + input.name + \"\\\\}\", \"gm\");\r\n const type = state._getGLType(input.type);\r\n code = code.replace(rexp, type);\r\n functionName = functionName.replace(rexp, type);\r\n });\r\n this._outputs.forEach((output) => {\r\n const rexp = new RegExp(\"\\\\{TYPE_\" + output.name + \"\\\\}\", \"gm\");\r\n const type = state._getGLType(output.type);\r\n code = code.replace(rexp, type);\r\n functionName = functionName.replace(rexp, type);\r\n });\r\n\r\n state._emitFunction(functionName, code, \"\");\r\n\r\n // Declare the output variables\r\n this._outputs.forEach((output) => {\r\n state.compilationString += state._declareOutput(output) + \";\\n\";\r\n });\r\n\r\n // Generate the function call\r\n state.compilationString += functionName + \"(\";\r\n\r\n let hasInput = false;\r\n this._inputs.forEach((input, index) => {\r\n if (index > 0) {\r\n state.compilationString += \", \";\r\n }\r\n if (this._inputSamplers && this._inputSamplers.indexOf(input.name) !== -1) {\r\n state.compilationString += (input.connectedPoint?.ownerBlock as ImageSourceBlock)?.samplerName ?? input.associatedVariableName;\r\n } else {\r\n state.compilationString += input.associatedVariableName;\r\n }\r\n hasInput = true;\r\n });\r\n\r\n this._outputs.forEach((output, index) => {\r\n if (index > 0 || hasInput) {\r\n state.compilationString += \", \";\r\n }\r\n state.compilationString += output.associatedVariableName;\r\n });\r\n\r\n state.compilationString += \");\\n\";\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.options = ${JSON.stringify(this._options)};\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.options = this._options;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n this._deserializeOptions(serializationObject.options);\r\n\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n }\r\n\r\n private _deserializeOptions(options: any) {\r\n this._options = options;\r\n this._code = options.code.join(\"\\n\") + \"\\n\";\r\n this.name = this.name || options.name;\r\n this.target = (<any>NodeMaterialBlockTargets)[options.target];\r\n\r\n options.inParameters?.forEach((input: any, index: number) => {\r\n const type = (<any>NodeMaterialBlockConnectionPointTypes)[input.type];\r\n if (input.type === \"sampler2D\" || input.type === \"samplerCube\") {\r\n this._inputSamplers = this._inputSamplers || [];\r\n this._inputSamplers.push(input.name);\r\n this.registerInput(\r\n input.name,\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(input.name, this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n } else {\r\n this.registerInput(input.name, type);\r\n }\r\n\r\n Object.defineProperty(this, input.name, {\r\n get: function () {\r\n return this._inputs[index];\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n });\r\n\r\n options.outParameters?.forEach((output: any, index: number) => {\r\n this.registerOutput(output.name, (<any>NodeMaterialBlockConnectionPointTypes)[output.type]);\r\n\r\n Object.defineProperty(this, output.name, {\r\n get: function () {\r\n return this._outputs[index];\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n\r\n if (output.type === \"BasedOnInput\") {\r\n this._outputs[index]._typeConnectionSource = this._findInputByName(output.typeFromInput)![0];\r\n }\r\n });\r\n\r\n options.inLinkedConnectionTypes?.forEach((connection: any) => {\r\n this._linkConnectionTypes(this._findInputByName(connection.input1)![1], this._findInputByName(connection.input2)![1]);\r\n });\r\n }\r\n\r\n private _findInputByName(name: string): Nullable<[NodeMaterialConnectionPoint, number]> {\r\n if (!name) {\r\n return null;\r\n }\r\n\r\n for (let i = 0; i < this._inputs.length; i++) {\r\n if (this._inputs[i].name === name) {\r\n return [this._inputs[i], i];\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CustomBlock\", CustomBlock);\r\n"]}
@@ -49,11 +49,12 @@ export class DesaturateBlock extends NodeMaterialBlock {
49
49
  const tempMin = state._getFreeVariableName("colorMin");
50
50
  const tempMax = state._getFreeVariableName("colorMax");
51
51
  const tempMerge = state._getFreeVariableName("colorMerge");
52
- state.compilationString += `float ${tempMin} = min(min(${colorName}.x, ${colorName}.y), ${colorName}.z);\n`;
53
- state.compilationString += `float ${tempMax} = max(max(${colorName}.x, ${colorName}.y), ${colorName}.z);\n`;
54
- state.compilationString += `float ${tempMerge} = 0.5 * (${tempMin} + ${tempMax});\n`;
52
+ state.compilationString += `${state._declareLocalVar(tempMin, NodeMaterialBlockConnectionPointTypes.Float)} = min(min(${colorName}.x, ${colorName}.y), ${colorName}.z);\n`;
53
+ state.compilationString += `${state._declareLocalVar(tempMax, NodeMaterialBlockConnectionPointTypes.Float)} = max(max(${colorName}.x, ${colorName}.y), ${colorName}.z);\n`;
54
+ state.compilationString += `${state._declareLocalVar(tempMerge, NodeMaterialBlockConnectionPointTypes.Float)} = 0.5 * (${tempMin} + ${tempMax});\n`;
55
55
  state.compilationString +=
56
- this._declareOutput(output, state) + ` = mix(${colorName}, vec3(${tempMerge}, ${tempMerge}, ${tempMerge}), ${this.level.associatedVariableName});\n`;
56
+ state._declareOutput(output) +
57
+ ` = mix(${colorName}, ${state._getShaderType(NodeMaterialBlockConnectionPointTypes.Vector3)}(${tempMerge}, ${tempMerge}, ${tempMerge}), ${this.level.associatedVariableName});\n`;
57
58
  return this;
58
59
  }
59
60
  }