@babylonjs/core 5.0.0-beta.4 → 5.0.0-beta.5

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 (431) hide show
  1. package/Audio/sound.js +3 -1
  2. package/Audio/sound.js.map +1 -1
  3. package/Behaviors/Meshes/baseSixDofDragBehavior.js +29 -26
  4. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  5. package/Behaviors/Meshes/pointerDragBehavior.js +2 -0
  6. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  7. package/Bones/bone.d.ts +2 -1
  8. package/Bones/bone.js +28 -18
  9. package/Bones/bone.js.map +1 -1
  10. package/Bones/skeleton.js +3 -3
  11. package/Bones/skeleton.js.map +1 -1
  12. package/Buffers/buffer.js +2 -2
  13. package/Buffers/buffer.js.map +1 -1
  14. package/Cameras/Inputs/freeCameraTouchInput.js +2 -4
  15. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  16. package/Cameras/camera.js +1 -1
  17. package/Cameras/camera.js.map +1 -1
  18. package/Compute/computeEffect.js +2 -2
  19. package/Compute/computeEffect.js.map +1 -1
  20. package/Debug/debugLayer.js +1 -1
  21. package/Debug/debugLayer.js.map +1 -1
  22. package/DeviceInput/Helpers/eventFactory.js +1 -1
  23. package/DeviceInput/Helpers/eventFactory.js.map +1 -1
  24. package/DeviceInput/InputDevices/deviceEnums.d.ts +52 -1
  25. package/DeviceInput/InputDevices/deviceEnums.js +52 -0
  26. package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
  27. package/DeviceInput/InputDevices/deviceTypes.d.ts +2 -2
  28. package/DeviceInput/InputDevices/deviceTypes.js.map +1 -1
  29. package/DeviceInput/InputDevices/internalDeviceSourceManager.js +1 -0
  30. package/DeviceInput/InputDevices/internalDeviceSourceManager.js.map +1 -1
  31. package/DeviceInput/InputDevices/webDeviceInputSystem.js +22 -18
  32. package/DeviceInput/InputDevices/webDeviceInputSystem.js.map +1 -1
  33. package/Engines/Extensions/engine.cubeTexture.js +1 -1
  34. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  35. package/Engines/Extensions/engine.multiview.d.ts +5 -0
  36. package/Engines/Extensions/engine.multiview.js +4 -1
  37. package/Engines/Extensions/engine.multiview.js.map +1 -1
  38. package/Engines/Native/nativeInterfaces.d.ts +1 -0
  39. package/Engines/Native/nativeInterfaces.js.map +1 -1
  40. package/Engines/Processors/Expressions/shaderDefineExpression.js +1 -1
  41. package/Engines/Processors/Expressions/shaderDefineExpression.js.map +1 -1
  42. package/Engines/Processors/shaderCodeInliner.js +13 -13
  43. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  44. package/Engines/WebGPU/webgpuCacheBindGroups.js +9 -9
  45. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  46. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +1 -1
  47. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  48. package/Engines/WebGPU/webgpuComputeContext.js +1 -1
  49. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  50. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +13 -13
  51. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  52. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +30 -30
  53. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  54. package/Engines/WebGPU/webgpuTextureHelper.js +4 -4
  55. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  56. package/Engines/engine.d.ts +1 -1
  57. package/Engines/engine.js +1 -1
  58. package/Engines/engine.js.map +1 -1
  59. package/Engines/nativeEngine.d.ts +1 -0
  60. package/Engines/nativeEngine.js +36 -11
  61. package/Engines/nativeEngine.js.map +1 -1
  62. package/Engines/nullEngine.js +1 -1
  63. package/Engines/nullEngine.js.map +1 -1
  64. package/Engines/thinEngine.js +8 -8
  65. package/Engines/thinEngine.js.map +1 -1
  66. package/Engines/webgpuEngine.js +4 -4
  67. package/Engines/webgpuEngine.js.map +1 -1
  68. package/Gamepads/Controllers/daydreamController.js +1 -1
  69. package/Gamepads/Controllers/daydreamController.js.map +1 -1
  70. package/Gamepads/gamepadManager.js +1 -1
  71. package/Gamepads/gamepadManager.js.map +1 -1
  72. package/Gizmos/gizmoManager.d.ts +2 -0
  73. package/Gizmos/gizmoManager.js +28 -24
  74. package/Gizmos/gizmoManager.js.map +1 -1
  75. package/Instrumentation/sceneInstrumentation.js +2 -2
  76. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  77. package/Layers/layer.d.ts +2 -2
  78. package/Layers/layer.js.map +1 -1
  79. package/Lights/Shadows/cascadedShadowGenerator.js +2 -2
  80. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  81. package/Lights/Shadows/shadowGenerator.js +2 -2
  82. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  83. package/Loading/Plugins/babylonFileLoader.js +78 -27
  84. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  85. package/Loading/loadingScreen.js +8 -8
  86. package/Loading/loadingScreen.js.map +1 -1
  87. package/Loading/sceneLoader.js +3 -3
  88. package/Loading/sceneLoader.js.map +1 -1
  89. package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +37 -0
  90. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +117 -0
  91. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -0
  92. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +12 -12
  93. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  94. package/Materials/Node/Blocks/Dual/fogBlock.js +5 -5
  95. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  96. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +11 -11
  97. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  98. package/Materials/Node/Blocks/Dual/index.d.ts +1 -0
  99. package/Materials/Node/Blocks/Dual/index.js +1 -0
  100. package/Materials/Node/Blocks/Dual/index.js.map +1 -1
  101. package/Materials/Node/Blocks/Dual/lightBlock.js +10 -10
  102. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  103. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +26 -26
  104. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  105. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +1 -1
  106. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  107. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +7 -7
  108. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  109. package/Materials/Node/Blocks/Dual/textureBlock.js +30 -30
  110. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  111. package/Materials/Node/Blocks/Fragment/derivativeBlock.js +2 -2
  112. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  113. package/Materials/Node/Blocks/Fragment/discardBlock.js +1 -1
  114. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  115. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -1
  116. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  117. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +10 -10
  118. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  119. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +7 -7
  120. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  121. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +12 -12
  122. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  123. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -1
  124. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  125. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +7 -7
  126. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  127. package/Materials/Node/Blocks/Fragment/twirlBlock.js +4 -4
  128. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  129. package/Materials/Node/Blocks/Input/inputBlock.d.ts +2 -1
  130. package/Materials/Node/Blocks/Input/inputBlock.js +29 -24
  131. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  132. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +5 -5
  133. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  134. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +5 -5
  135. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  136. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +33 -33
  137. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  138. package/Materials/Node/Blocks/PBR/reflectionBlock.js +11 -11
  139. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  140. package/Materials/Node/Blocks/PBR/refractionBlock.js +11 -11
  141. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  142. package/Materials/Node/Blocks/PBR/sheenBlock.js +3 -3
  143. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  144. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -1
  145. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  146. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js +1 -1
  147. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
  148. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js +1 -1
  149. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
  150. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +7 -7
  151. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  152. package/Materials/Node/Blocks/Vertex/bonesBlock.js +3 -3
  153. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  154. package/Materials/Node/Blocks/Vertex/instancesBlock.js +3 -3
  155. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  156. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +5 -5
  157. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  158. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +16 -16
  159. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  160. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +1 -1
  161. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  162. package/Materials/Node/Blocks/addBlock.js +1 -1
  163. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  164. package/Materials/Node/Blocks/arcTan2Block.js +1 -1
  165. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  166. package/Materials/Node/Blocks/clampBlock.js +3 -3
  167. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  168. package/Materials/Node/Blocks/cloudBlock.js +7 -7
  169. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  170. package/Materials/Node/Blocks/colorMergerBlock.js +8 -8
  171. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  172. package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
  173. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  174. package/Materials/Node/Blocks/conditionalBlock.js +10 -10
  175. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  176. package/Materials/Node/Blocks/crossBlock.js +1 -1
  177. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  178. package/Materials/Node/Blocks/customBlock.js +1 -1
  179. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  180. package/Materials/Node/Blocks/desaturateBlock.js +4 -4
  181. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  182. package/Materials/Node/Blocks/distanceBlock.js +1 -1
  183. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  184. package/Materials/Node/Blocks/divideBlock.js +1 -1
  185. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  186. package/Materials/Node/Blocks/dotBlock.js +1 -1
  187. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  188. package/Materials/Node/Blocks/elbowBlock.d.ts +27 -0
  189. package/Materials/Node/Blocks/elbowBlock.js +60 -0
  190. package/Materials/Node/Blocks/elbowBlock.js.map +1 -0
  191. package/Materials/Node/Blocks/fresnelBlock.js +2 -2
  192. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  193. package/Materials/Node/Blocks/gradientBlock.js +8 -8
  194. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  195. package/Materials/Node/Blocks/index.d.ts +1 -0
  196. package/Materials/Node/Blocks/index.js +1 -0
  197. package/Materials/Node/Blocks/index.js.map +1 -1
  198. package/Materials/Node/Blocks/lengthBlock.js +1 -1
  199. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  200. package/Materials/Node/Blocks/lerpBlock.js +1 -1
  201. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  202. package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -1
  203. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  204. package/Materials/Node/Blocks/maxBlock.js +1 -1
  205. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  206. package/Materials/Node/Blocks/minBlock.js +1 -1
  207. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  208. package/Materials/Node/Blocks/modBlock.js +1 -1
  209. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  210. package/Materials/Node/Blocks/multiplyBlock.js +1 -1
  211. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  212. package/Materials/Node/Blocks/nLerpBlock.js +1 -1
  213. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  214. package/Materials/Node/Blocks/negateBlock.js +1 -1
  215. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  216. package/Materials/Node/Blocks/normalBlendBlock.js +5 -5
  217. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  218. package/Materials/Node/Blocks/normalizeBlock.js +1 -1
  219. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  220. package/Materials/Node/Blocks/oneMinusBlock.js +1 -1
  221. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  222. package/Materials/Node/Blocks/posterizeBlock.js +1 -1
  223. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  224. package/Materials/Node/Blocks/powBlock.js +1 -1
  225. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  226. package/Materials/Node/Blocks/randomNumberBlock.js +2 -2
  227. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  228. package/Materials/Node/Blocks/reciprocalBlock.js +1 -1
  229. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  230. package/Materials/Node/Blocks/reflectBlock.js +1 -1
  231. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  232. package/Materials/Node/Blocks/refractBlock.js +1 -1
  233. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  234. package/Materials/Node/Blocks/remapBlock.js +3 -3
  235. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  236. package/Materials/Node/Blocks/replaceColorBlock.js +3 -3
  237. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  238. package/Materials/Node/Blocks/rotate2dBlock.js +1 -1
  239. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  240. package/Materials/Node/Blocks/scaleBlock.js +1 -1
  241. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  242. package/Materials/Node/Blocks/simplexPerlin3DBlock.js +1 -1
  243. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  244. package/Materials/Node/Blocks/smoothStepBlock.js +1 -1
  245. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  246. package/Materials/Node/Blocks/stepBlock.js +1 -1
  247. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  248. package/Materials/Node/Blocks/subtractBlock.js +1 -1
  249. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  250. package/Materials/Node/Blocks/transformBlock.js +13 -13
  251. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  252. package/Materials/Node/Blocks/trigonometryBlock.js +2 -2
  253. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  254. package/Materials/Node/Blocks/vectorMergerBlock.js +22 -22
  255. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  256. package/Materials/Node/Blocks/vectorSplitterBlock.js +8 -8
  257. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  258. package/Materials/Node/Blocks/viewDirectionBlock.js +1 -1
  259. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  260. package/Materials/Node/Blocks/voronoiNoiseBlock.js +5 -5
  261. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  262. package/Materials/Node/Blocks/waveBlock.js +3 -3
  263. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  264. package/Materials/Node/Blocks/worleyNoise3DBlock.js +5 -5
  265. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  266. package/Materials/Node/Enums/nodeMaterialSystemValues.d.ts +3 -1
  267. package/Materials/Node/Enums/nodeMaterialSystemValues.js +2 -0
  268. package/Materials/Node/Enums/nodeMaterialSystemValues.js.map +1 -1
  269. package/Materials/Node/nodeMaterial.d.ts +4 -0
  270. package/Materials/Node/nodeMaterial.js +20 -10
  271. package/Materials/Node/nodeMaterial.js.map +1 -1
  272. package/Materials/Node/nodeMaterialBlock.js +12 -12
  273. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  274. package/Materials/Node/nodeMaterialBuildState.js +24 -24
  275. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  276. package/Materials/Node/nodeMaterialBuildStateSharedData.js +1 -1
  277. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  278. package/Materials/PBR/pbrBaseMaterial.js +2 -2
  279. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  280. package/Materials/PBR/pbrMaterial.js +1 -2
  281. package/Materials/PBR/pbrMaterial.js.map +1 -1
  282. package/Materials/Textures/Loaders/ktxTextureLoader.js +1 -1
  283. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  284. package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -0
  285. package/Materials/Textures/MultiviewRenderTarget.js +10 -2
  286. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  287. package/Materials/Textures/Procedurals/proceduralTexture.js +1 -1
  288. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  289. package/Materials/Textures/equiRectangularCubeTexture.js +1 -1
  290. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  291. package/Materials/Textures/mirrorTexture.js +2 -2
  292. package/Materials/Textures/mirrorTexture.js.map +1 -1
  293. package/Materials/Textures/renderTargetTexture.js +2 -2
  294. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  295. package/Materials/Textures/videoTexture.js +1 -0
  296. package/Materials/Textures/videoTexture.js.map +1 -1
  297. package/Materials/effect.js +3 -3
  298. package/Materials/effect.js.map +1 -1
  299. package/Materials/material.d.ts +2 -0
  300. package/Materials/material.js +4 -1
  301. package/Materials/material.js.map +1 -1
  302. package/Materials/materialHelper.js +1 -1
  303. package/Materials/materialHelper.js.map +1 -1
  304. package/Materials/materialPluginManager.js +3 -3
  305. package/Materials/materialPluginManager.js.map +1 -1
  306. package/Materials/multiMaterial.d.ts +2 -0
  307. package/Materials/multiMaterial.js +12 -10
  308. package/Materials/multiMaterial.js.map +1 -1
  309. package/Materials/shaderMaterial.js +1 -1
  310. package/Materials/shaderMaterial.js.map +1 -1
  311. package/Materials/shadowDepthWrapper.js +1 -1
  312. package/Materials/shadowDepthWrapper.js.map +1 -1
  313. package/Materials/standardMaterial.d.ts +0 -5
  314. package/Materials/standardMaterial.js +1 -10
  315. package/Materials/standardMaterial.js.map +1 -1
  316. package/Maths/math.size.js +1 -1
  317. package/Maths/math.size.js.map +1 -1
  318. package/Maths/math.vector.js +4 -4
  319. package/Maths/math.vector.js.map +1 -1
  320. package/Meshes/Builders/cylinderBuilder.d.ts +1 -1
  321. package/Meshes/Builders/cylinderBuilder.js +1 -1
  322. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  323. package/Meshes/Builders/linesBuilder.js.map +1 -1
  324. package/Meshes/Compression/dracoCompression.d.ts +3 -0
  325. package/Meshes/Compression/dracoCompression.js +23 -7
  326. package/Meshes/Compression/dracoCompression.js.map +1 -1
  327. package/Meshes/abstractMesh.d.ts +2 -0
  328. package/Meshes/abstractMesh.js +2 -0
  329. package/Meshes/abstractMesh.js.map +1 -1
  330. package/Meshes/mesh.js +8 -6
  331. package/Meshes/mesh.js.map +1 -1
  332. package/Meshes/mesh.lts.d.ts +1 -1
  333. package/Meshes/mesh.lts.js.map +1 -1
  334. package/Meshes/mesh.vertexData.d.ts +1 -1
  335. package/Meshes/mesh.vertexData.js +2 -2
  336. package/Meshes/mesh.vertexData.js.map +1 -1
  337. package/Misc/PerformanceViewer/performanceViewerCollector.js +6 -6
  338. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  339. package/Misc/assetsManager.d.ts +1 -0
  340. package/Misc/assetsManager.js +13 -0
  341. package/Misc/assetsManager.js.map +1 -1
  342. package/Misc/basis.js +1 -1
  343. package/Misc/basis.js.map +1 -1
  344. package/Misc/devTools.js +1 -1
  345. package/Misc/devTools.js.map +1 -1
  346. package/Misc/environmentTextureTools.js +2 -2
  347. package/Misc/environmentTextureTools.js.map +1 -1
  348. package/Misc/fileTools.js +3 -3
  349. package/Misc/fileTools.js.map +1 -1
  350. package/Misc/khronosTextureContainer2.js +4 -3
  351. package/Misc/khronosTextureContainer2.js.map +1 -1
  352. package/Misc/reflector.js +6 -6
  353. package/Misc/reflector.js.map +1 -1
  354. package/Misc/tools.js +15 -13
  355. package/Misc/tools.js.map +1 -1
  356. package/Misc/uniqueIdGenerator.js +1 -1
  357. package/Misc/uniqueIdGenerator.js.map +1 -1
  358. package/Offline/database.js +1 -1
  359. package/Offline/database.js.map +1 -1
  360. package/Particles/baseParticleSystem.d.ts +4 -1
  361. package/Particles/baseParticleSystem.js +20 -5
  362. package/Particles/baseParticleSystem.js.map +1 -1
  363. package/Particles/particleHelper.js +2 -2
  364. package/Particles/particleHelper.js.map +1 -1
  365. package/Physics/Plugins/ammoJSPlugin.js +4 -4
  366. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  367. package/Physics/physicsImpostor.d.ts +2 -2
  368. package/Physics/physicsImpostor.js.map +1 -1
  369. package/PostProcesses/blurPostProcess.js +5 -5
  370. package/PostProcesses/blurPostProcess.js.map +1 -1
  371. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  372. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  373. package/PostProcesses/postProcess.js +1 -1
  374. package/PostProcesses/postProcess.js.map +1 -1
  375. package/PostProcesses/postProcessManager.js +2 -2
  376. package/PostProcesses/postProcessManager.js.map +1 -1
  377. package/Probes/reflectionProbe.js +2 -2
  378. package/Probes/reflectionProbe.js.map +1 -1
  379. package/Rendering/depthPeelingRenderer.js +3 -3
  380. package/Rendering/depthPeelingRenderer.js.map +1 -1
  381. package/Rendering/geometryBufferRenderer.js +8 -8
  382. package/Rendering/geometryBufferRenderer.js.map +1 -1
  383. package/Rendering/outlineRenderer.js +1 -1
  384. package/Rendering/outlineRenderer.js.map +1 -1
  385. package/Rendering/utilityLayerRenderer.js +4 -0
  386. package/Rendering/utilityLayerRenderer.js.map +1 -1
  387. package/Shaders/ShadersInclude/prePassVertex.js +1 -1
  388. package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
  389. package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
  390. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  391. package/Sprites/spriteManager.js +5 -6
  392. package/Sprites/spriteManager.js.map +1 -1
  393. package/Sprites/spriteMap.js +2 -2
  394. package/Sprites/spriteMap.js.map +1 -1
  395. package/Sprites/spriteRenderer.js +1 -1
  396. package/Sprites/spriteRenderer.js.map +1 -1
  397. package/XR/features/WebXRDOMOverlay.js +1 -1
  398. package/XR/features/WebXRDOMOverlay.js.map +1 -1
  399. package/XR/features/WebXRHandTracking.js +27 -27
  400. package/XR/features/WebXRHandTracking.js.map +1 -1
  401. package/XR/features/WebXRImageTracking.js +2 -2
  402. package/XR/features/WebXRImageTracking.js.map +1 -1
  403. package/XR/features/WebXRLayers.d.ts +28 -5
  404. package/XR/features/WebXRLayers.js +54 -20
  405. package/XR/features/WebXRLayers.js.map +1 -1
  406. package/XR/features/WebXRNearInteraction.d.ts +35 -3
  407. package/XR/features/WebXRNearInteraction.js +201 -40
  408. package/XR/features/WebXRNearInteraction.js.map +1 -1
  409. package/XR/motionController/webXRAbstractMotionController.js +1 -1
  410. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  411. package/XR/motionController/webXRMotionControllerManager.js +2 -2
  412. package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
  413. package/XR/motionController/webXRProfiledMotionController.js +1 -1
  414. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  415. package/XR/webXRCamera.js +17 -4
  416. package/XR/webXRCamera.js.map +1 -1
  417. package/XR/webXREnterExitUI.js +2 -2
  418. package/XR/webXREnterExitUI.js.map +1 -1
  419. package/XR/webXRFeaturesManager.js +6 -6
  420. package/XR/webXRFeaturesManager.js.map +1 -1
  421. package/XR/webXRInputSource.js +3 -3
  422. package/XR/webXRInputSource.js.map +1 -1
  423. package/XR/webXRRenderTargetTextureProvider.d.ts +3 -2
  424. package/XR/webXRRenderTargetTextureProvider.js +37 -18
  425. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  426. package/node.d.ts +1 -1
  427. package/node.js.map +1 -1
  428. package/package.json +7 -1
  429. package/scene.d.ts +3 -1
  430. package/scene.js +28 -4
  431. package/scene.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fragmentOutputBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Fragment/fragmentOutputBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { Scene } from '../../../../scene';\r\nimport { AbstractMesh } from '../../../../Meshes/abstractMesh';\r\nimport { NodeMaterialDefines } from '../../nodeMaterial';\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../nodeMaterialDecorator\";\r\nimport { MaterialHelper } from \"../../../materialHelper\";\r\n\r\ndeclare type NodeMaterial = import(\"../../nodeMaterial\").NodeMaterial;\r\ndeclare type Effect = import(\"../../../effect\").Effect;\r\ndeclare type Mesh = import(\"../../../../Meshes/mesh\").Mesh;\r\n\r\n/**\r\n * Block used to output the final color\r\n */\r\nexport class FragmentOutputBlock extends NodeMaterialBlock {\r\n\r\n private _linearDefineName: string;\r\n private _gammaDefineName: string;\r\n\r\n /**\r\n * Create a new FragmentOutputBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment, true);\r\n\r\n this.registerInput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4, true);\r\n this.registerInput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n\r\n this.rgb.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n }\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to gamma space */\r\n @editableInPropertyPage(\"Convert to gamma space\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { \"notifiers\": { \"update\": true } })\r\n public convertToGammaSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to linear space */\r\n @editableInPropertyPage(\"Convert to linear space\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { \"notifiers\": { \"update\": true } })\r\n public convertToLinearSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if logarithmic depth should be used */\r\n @editableInPropertyPage(\"Use logarithmic depth\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public useLogarithmicDepth = false;\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 \"FragmentOutputBlock\";\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"logarithmicDepthConstant\");\r\n state._excludeVariableName(\"vFragmentDepth\");\r\n }\r\n\r\n /**\r\n * Gets the rgba input component\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb input component\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the a input component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n defines.setValue(this._linearDefineName, this.convertToLinearSpace, true);\r\n defines.setValue(this._gammaDefineName, this.convertToGammaSpace, true);\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (this.useLogarithmicDepth && mesh) {\r\n MaterialHelper.BindLogDepth(undefined, effect, mesh.getScene());\r\n }\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let rgba = this.rgba;\r\n let rgb = this.rgb;\r\n let a = this.a;\r\n\r\n state.sharedData.hints.needAlphaBlending = rgba.isConnected || a.isConnected;\r\n state.sharedData.blocksWithDefines.push(this);\r\n if (this.useLogarithmicDepth) {\r\n state._emitUniformFromString(\"logarithmicDepthConstant\", \"float\");\r\n state._emitVaryingFromString(\"vFragmentDepth\", \"float\");\r\n state.sharedData.bindableBlocks.push(this);\r\n }\r\n this._linearDefineName = state._getFreeDefineName(\"CONVERTTOLINEAR\");\r\n this._gammaDefineName = state._getFreeDefineName(\"CONVERTTOGAMMA\");\r\n\r\n let comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n if (rgba.connectedPoint) {\r\n if (a.isConnected) {\r\n state.compilationString += `gl_FragColor = vec4(${rgba.associatedVariableName}.rgb, ${a.associatedVariableName});\\r\\n`;\r\n } else {\r\n state.compilationString += `gl_FragColor = ${rgba.associatedVariableName};\\r\\n`;\r\n }\r\n } else if (rgb.connectedPoint) {\r\n let aValue = \"1.0\";\r\n\r\n if (a.connectedPoint) {\r\n aValue = a.associatedVariableName;\r\n }\r\n\r\n if (rgb.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n state.compilationString += `gl_FragColor = vec4(${rgb.associatedVariableName}, ${rgb.associatedVariableName}, ${rgb.associatedVariableName}, ${aValue});\\r\\n`;\r\n } else {\r\n state.compilationString += `gl_FragColor = vec4(${rgb.associatedVariableName}, ${aValue});\\r\\n`;\r\n }\r\n } else {\r\n state.sharedData.checks.notConnectedNonOptionalInputs.push(rgba);\r\n }\r\n\r\n state.compilationString += `#ifdef ${this._linearDefineName}\\r\\n`;\r\n state.compilationString += `gl_FragColor = toLinearSpace(gl_FragColor);\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n\r\n state.compilationString += `#ifdef ${this._gammaDefineName}\\r\\n`;\r\n state.compilationString += `gl_FragColor = toGammaSpace(gl_FragColor);\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n\r\n if (this.useLogarithmicDepth) {\r\n state.compilationString += `gl_FragDepthEXT = log2(vFragmentDepth) * logarithmicDepthConstant * 0.5;\\r\\n`;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n var codeString = super._dumpPropertiesCode();\r\n codeString += `${this._codeVariableName}.convertToGammaSpace = ${this.convertToGammaSpace};\\r\\n`;\r\n codeString += `${this._codeVariableName}.convertToLinearSpace = ${this.convertToLinearSpace};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useLogarithmicDepth = ${this.useLogarithmicDepth};\\r\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n serializationObject.convertToGammaSpace = this.convertToGammaSpace;\r\n serializationObject.convertToLinearSpace = this.convertToLinearSpace;\r\n serializationObject.useLogarithmicDepth = this.useLogarithmicDepth;\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.convertToGammaSpace = serializationObject.convertToGammaSpace;\r\n this.convertToLinearSpace = serializationObject.convertToLinearSpace;\r\n this.useLogarithmicDepth = serializationObject.useLogarithmicDepth ?? false;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FragmentOutputBlock\", FragmentOutputBlock);"]}
1
+ {"version":3,"file":"fragmentOutputBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Fragment/fragmentOutputBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { Scene } from '../../../../scene';\r\nimport { AbstractMesh } from '../../../../Meshes/abstractMesh';\r\nimport { NodeMaterialDefines } from '../../nodeMaterial';\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../nodeMaterialDecorator\";\r\nimport { MaterialHelper } from \"../../../materialHelper\";\r\n\r\ndeclare type NodeMaterial = import(\"../../nodeMaterial\").NodeMaterial;\r\ndeclare type Effect = import(\"../../../effect\").Effect;\r\ndeclare type Mesh = import(\"../../../../Meshes/mesh\").Mesh;\r\n\r\n/**\r\n * Block used to output the final color\r\n */\r\nexport class FragmentOutputBlock extends NodeMaterialBlock {\r\n\r\n private _linearDefineName: string;\r\n private _gammaDefineName: string;\r\n\r\n /**\r\n * Create a new FragmentOutputBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment, true);\r\n\r\n this.registerInput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4, true);\r\n this.registerInput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n\r\n this.rgb.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n }\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to gamma space */\r\n @editableInPropertyPage(\"Convert to gamma space\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { \"notifiers\": { \"update\": true } })\r\n public convertToGammaSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to linear space */\r\n @editableInPropertyPage(\"Convert to linear space\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { \"notifiers\": { \"update\": true } })\r\n public convertToLinearSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if logarithmic depth should be used */\r\n @editableInPropertyPage(\"Use logarithmic depth\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public useLogarithmicDepth = false;\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 \"FragmentOutputBlock\";\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"logarithmicDepthConstant\");\r\n state._excludeVariableName(\"vFragmentDepth\");\r\n }\r\n\r\n /**\r\n * Gets the rgba input component\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb input component\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the a input component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n defines.setValue(this._linearDefineName, this.convertToLinearSpace, true);\r\n defines.setValue(this._gammaDefineName, this.convertToGammaSpace, true);\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (this.useLogarithmicDepth && mesh) {\r\n MaterialHelper.BindLogDepth(undefined, effect, mesh.getScene());\r\n }\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let rgba = this.rgba;\r\n let rgb = this.rgb;\r\n let a = this.a;\r\n\r\n state.sharedData.hints.needAlphaBlending = rgba.isConnected || a.isConnected;\r\n state.sharedData.blocksWithDefines.push(this);\r\n if (this.useLogarithmicDepth) {\r\n state._emitUniformFromString(\"logarithmicDepthConstant\", \"float\");\r\n state._emitVaryingFromString(\"vFragmentDepth\", \"float\");\r\n state.sharedData.bindableBlocks.push(this);\r\n }\r\n this._linearDefineName = state._getFreeDefineName(\"CONVERTTOLINEAR\");\r\n this._gammaDefineName = state._getFreeDefineName(\"CONVERTTOGAMMA\");\r\n\r\n let comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n if (rgba.connectedPoint) {\r\n if (a.isConnected) {\r\n state.compilationString += `gl_FragColor = vec4(${rgba.associatedVariableName}.rgb, ${a.associatedVariableName});\\r\\n`;\r\n } else {\r\n state.compilationString += `gl_FragColor = ${rgba.associatedVariableName};\\r\\n`;\r\n }\r\n } else if (rgb.connectedPoint) {\r\n let aValue = \"1.0\";\r\n\r\n if (a.connectedPoint) {\r\n aValue = a.associatedVariableName;\r\n }\r\n\r\n if (rgb.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n state.compilationString += `gl_FragColor = vec4(${rgb.associatedVariableName}, ${rgb.associatedVariableName}, ${rgb.associatedVariableName}, ${aValue});\\r\\n`;\r\n } else {\r\n state.compilationString += `gl_FragColor = vec4(${rgb.associatedVariableName}, ${aValue});\\r\\n`;\r\n }\r\n } else {\r\n state.sharedData.checks.notConnectedNonOptionalInputs.push(rgba);\r\n }\r\n\r\n state.compilationString += `#ifdef ${this._linearDefineName}\\r\\n`;\r\n state.compilationString += `gl_FragColor = toLinearSpace(gl_FragColor);\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n\r\n state.compilationString += `#ifdef ${this._gammaDefineName}\\r\\n`;\r\n state.compilationString += `gl_FragColor = toGammaSpace(gl_FragColor);\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n\r\n if (this.useLogarithmicDepth) {\r\n state.compilationString += `gl_FragDepthEXT = log2(vFragmentDepth) * logarithmicDepthConstant * 0.5;\\r\\n`;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n var codeString = super._dumpPropertiesCode();\r\n codeString += `${this._codeVariableName}.convertToGammaSpace = ${this.convertToGammaSpace};\\r\\n`;\r\n codeString += `${this._codeVariableName}.convertToLinearSpace = ${this.convertToLinearSpace};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useLogarithmicDepth = ${this.useLogarithmicDepth};\\r\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n serializationObject.convertToGammaSpace = this.convertToGammaSpace;\r\n serializationObject.convertToLinearSpace = this.convertToLinearSpace;\r\n serializationObject.useLogarithmicDepth = this.useLogarithmicDepth;\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.convertToGammaSpace = serializationObject.convertToGammaSpace;\r\n this.convertToLinearSpace = serializationObject.convertToLinearSpace;\r\n this.useLogarithmicDepth = serializationObject.useLogarithmicDepth ?? false;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FragmentOutputBlock\", FragmentOutputBlock);"]}
@@ -114,33 +114,33 @@ var ImageProcessingBlock = /** @class */ (function (_super) {
114
114
  // Emit code
115
115
  var color = this.color;
116
116
  var output = this._outputs[0];
117
- var comments = "//" + this.name;
117
+ var comments = "//".concat(this.name);
118
118
  state._emitFunctionFromInclude("helperFunctions", comments);
119
119
  state._emitFunctionFromInclude("imageProcessingDeclaration", comments);
120
120
  state._emitFunctionFromInclude("imageProcessingFunctions", comments);
121
121
  if (color.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Color4 || (color.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Vector4)) {
122
- state.compilationString += this._declareOutput(output, state) + " = " + color.associatedVariableName + ";\r\n";
122
+ state.compilationString += "".concat(this._declareOutput(output, state), " = ").concat(color.associatedVariableName, ";\r\n");
123
123
  }
124
124
  else {
125
- state.compilationString += this._declareOutput(output, state) + " = vec4(" + color.associatedVariableName + ", 1.0);\r\n";
125
+ state.compilationString += "".concat(this._declareOutput(output, state), " = vec4(").concat(color.associatedVariableName, ", 1.0);\r\n");
126
126
  }
127
127
  state.compilationString += "#ifdef IMAGEPROCESSINGPOSTPROCESS\r\n";
128
128
  if (this.convertInputToLinearSpace) {
129
- state.compilationString += output.associatedVariableName + ".rgb = toLinearSpace(" + color.associatedVariableName + ".rgb);\r\n";
129
+ state.compilationString += "".concat(output.associatedVariableName, ".rgb = toLinearSpace(").concat(color.associatedVariableName, ".rgb);\r\n");
130
130
  }
131
131
  state.compilationString += "#else\r\n";
132
132
  state.compilationString += "#ifdef IMAGEPROCESSING\r\n";
133
133
  if (this.convertInputToLinearSpace) {
134
- state.compilationString += output.associatedVariableName + ".rgb = toLinearSpace(" + color.associatedVariableName + ".rgb);\r\n";
134
+ state.compilationString += "".concat(output.associatedVariableName, ".rgb = toLinearSpace(").concat(color.associatedVariableName, ".rgb);\r\n");
135
135
  }
136
- state.compilationString += output.associatedVariableName + " = applyImageProcessing(" + output.associatedVariableName + ");\r\n";
136
+ state.compilationString += "".concat(output.associatedVariableName, " = applyImageProcessing(").concat(output.associatedVariableName, ");\r\n");
137
137
  state.compilationString += "#endif\r\n";
138
138
  state.compilationString += "#endif\r\n";
139
139
  return this;
140
140
  };
141
141
  ImageProcessingBlock.prototype._dumpPropertiesCode = function () {
142
142
  var codeString = _super.prototype._dumpPropertiesCode.call(this);
143
- codeString += this._codeVariableName + ".convertInputToLinearSpace = " + this.convertInputToLinearSpace + ";\r\n";
143
+ codeString += "".concat(this._codeVariableName, ".convertInputToLinearSpace = ").concat(this.convertInputToLinearSpace, ";\r\n");
144
144
  return codeString;
145
145
  };
146
146
  ImageProcessingBlock.prototype.serialize = function () {
@@ -1 +1 @@
1
- {"version":3,"file":"imageProcessingBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Fragment/imageProcessingBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { AbstractMesh } from '../../../../Meshes/abstractMesh';\r\nimport { NodeMaterial, NodeMaterialDefines } from '../../nodeMaterial';\r\nimport { Effect } from '../../../effect';\r\nimport { Mesh } from '../../../../Meshes/mesh';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { Scene } from '../../../../scene';\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../nodeMaterialDecorator\";\r\n\r\nimport \"../../../../Shaders/ShadersInclude/helperFunctions\";\r\nimport \"../../../../Shaders/ShadersInclude/imageProcessingDeclaration\";\r\nimport \"../../../../Shaders/ShadersInclude/imageProcessingFunctions\";\r\n\r\n/**\r\n * Block used to add image processing support to fragment shader\r\n */\r\nexport class ImageProcessingBlock extends NodeMaterialBlock {\r\n /**\r\n * Create a new ImageProcessingBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.registerInput(\"color\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Color3);\r\n }\r\n\r\n /**\r\n * Defines if the input should be converted to linear space (default: true)\r\n */\r\n @editableInPropertyPage(\"Convert input to linear space\", PropertyTypeForEdition.Boolean, \"ADVANCED\")\r\n public convertInputToLinearSpace: boolean = true;\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 \"ImageProcessingBlock\";\r\n }\r\n\r\n /**\r\n * Gets the color input component\r\n */\r\n public get color(): NodeMaterialConnectionPoint {\r\n return this._inputs[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 /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"exposureLinear\");\r\n state._excludeVariableName(\"contrast\");\r\n state._excludeVariableName(\"vInverseScreenSize\");\r\n state._excludeVariableName(\"vignetteSettings1\");\r\n state._excludeVariableName(\"vignetteSettings2\");\r\n state._excludeVariableName(\"vCameraColorCurveNegative\");\r\n state._excludeVariableName(\"vCameraColorCurveNeutral\");\r\n state._excludeVariableName(\"vCameraColorCurvePositive\");\r\n state._excludeVariableName(\"txColorTransform\");\r\n state._excludeVariableName(\"colorTransformSettings\");\r\n }\r\n\r\n public isReady(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (defines._areImageProcessingDirty && nodeMaterial.imageProcessingConfiguration) {\r\n if (!nodeMaterial.imageProcessingConfiguration.isReady()) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (defines._areImageProcessingDirty && nodeMaterial.imageProcessingConfiguration) {\r\n nodeMaterial.imageProcessingConfiguration.prepareDefines(defines);\r\n }\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n if (!nodeMaterial.imageProcessingConfiguration) {\r\n return;\r\n }\r\n\r\n nodeMaterial.imageProcessingConfiguration.bind(effect);\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n // Register for defines\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n // Register for blocking\r\n state.sharedData.blockingBlocks.push(this);\r\n\r\n // Register for binding\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n // Uniforms\r\n state.uniforms.push(\"exposureLinear\");\r\n state.uniforms.push(\"contrast\");\r\n state.uniforms.push(\"vInverseScreenSize\");\r\n state.uniforms.push(\"vignetteSettings1\");\r\n state.uniforms.push(\"vignetteSettings2\");\r\n state.uniforms.push(\"vCameraColorCurveNegative\");\r\n state.uniforms.push(\"vCameraColorCurveNeutral\");\r\n state.uniforms.push(\"vCameraColorCurvePositive\");\r\n state.uniforms.push(\"txColorTransform\");\r\n state.uniforms.push(\"colorTransformSettings\");\r\n\r\n // Emit code\r\n let color = this.color;\r\n let output = this._outputs[0];\r\n let comments = `//${this.name}`;\r\n\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n state._emitFunctionFromInclude(\"imageProcessingDeclaration\", comments);\r\n state._emitFunctionFromInclude(\"imageProcessingFunctions\", comments);\r\n\r\n if (color.connectedPoint!.type === NodeMaterialBlockConnectionPointTypes.Color4 || (color.connectedPoint!.type === NodeMaterialBlockConnectionPointTypes.Vector4)) {\r\n state.compilationString += `${this._declareOutput(output, state)} = ${color.associatedVariableName};\\r\\n`;\r\n } else {\r\n state.compilationString += `${this._declareOutput(output, state)} = vec4(${color.associatedVariableName}, 1.0);\\r\\n`;\r\n }\r\n state.compilationString += `#ifdef IMAGEPROCESSINGPOSTPROCESS\\r\\n`;\r\n if (this.convertInputToLinearSpace) {\r\n state.compilationString += `${output.associatedVariableName}.rgb = toLinearSpace(${color.associatedVariableName}.rgb);\\r\\n`;\r\n }\r\n state.compilationString += `#else\\r\\n`;\r\n state.compilationString += `#ifdef IMAGEPROCESSING\\r\\n`;\r\n if (this.convertInputToLinearSpace) {\r\n state.compilationString += `${output.associatedVariableName}.rgb = toLinearSpace(${color.associatedVariableName}.rgb);\\r\\n`;\r\n }\r\n state.compilationString += `${output.associatedVariableName} = applyImageProcessing(${output.associatedVariableName});\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n state.compilationString += `#endif\\r\\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}.convertInputToLinearSpace = ${this.convertInputToLinearSpace};\\r\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n serializationObject.convertInputToLinearSpace = this.convertInputToLinearSpace;\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.convertInputToLinearSpace = serializationObject.convertInputToLinearSpace ?? true;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ImageProcessingBlock\", ImageProcessingBlock);"]}
1
+ {"version":3,"file":"imageProcessingBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Fragment/imageProcessingBlock.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qCAAqC,EAAE,MAAM,mDAAmD,CAAC;AAE1G,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAMhF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE7F,OAAO,oDAAoD,CAAC;AAC5D,OAAO,+DAA+D,CAAC;AACvE,OAAO,6DAA6D,CAAC;AAErE;;GAEG;AACH;IAA0C,wCAAiB;IACvD;;;OAGG;IACH,8BAAmB,IAAY;QAA/B,YACI,kBAAM,IAAI,EAAE,wBAAwB,CAAC,QAAQ,CAAC,SAMjD;QAED;;WAEG;QAEI,+BAAyB,GAAY,IAAI,CAAC;QAV7C,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,qCAAqC,CAAC,MAAM,CAAC,CAAC;QAC1E,KAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,MAAM,CAAC,CAAC;QAE5E,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,MAAM,CAAC,CAAC;;IACpG,CAAC;IAQD;;;MAGE;IACK,2CAAY,GAAnB;QACI,OAAO,sBAAsB,CAAC;IAClC,CAAC;IAKD,sBAAW,uCAAK;QAHhB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,wCAAM;QAHjB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAED;;;OAGG;IACI,yCAAU,GAAjB,UAAkB,KAA6B;QAC3C,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAC7C,KAAK,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACvC,KAAK,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;QACjD,KAAK,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;QAChD,KAAK,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;QAChD,KAAK,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;QACxD,KAAK,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;QACvD,KAAK,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;QACxD,KAAK,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;QAC/C,KAAK,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;IACzD,CAAC;IAEM,sCAAO,GAAd,UAAe,IAAkB,EAAE,YAA0B,EAAE,OAA4B;QACvF,IAAI,OAAO,CAAC,wBAAwB,IAAI,YAAY,CAAC,4BAA4B,EAAE;YAC/E,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,OAAO,EAAE,EAAE;gBACtD,OAAO,KAAK,CAAC;aAChB;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,6CAAc,GAArB,UAAsB,IAAkB,EAAE,YAA0B,EAAE,OAA4B;QAC9F,IAAI,OAAO,CAAC,wBAAwB,IAAI,YAAY,CAAC,4BAA4B,EAAE;YAC/E,YAAY,CAAC,4BAA4B,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;SACrE;IACL,CAAC;IAEM,mCAAI,GAAX,UAAY,MAAc,EAAE,YAA0B,EAAE,IAAW;QAC/D,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;SACV;QAED,IAAI,CAAC,YAAY,CAAC,4BAA4B,EAAE;YAC5C,OAAO;SACV;QAED,YAAY,CAAC,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IAES,0CAAW,GAArB,UAAsB,KAA6B;QAC/C,iBAAM,WAAW,YAAC,KAAK,CAAC,CAAC;QAEzB,uBAAuB;QACvB,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9C,wBAAwB;QACxB,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,uBAAuB;QACvB,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,WAAW;QACX,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC1C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACzC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACzC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACjD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAChD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACjD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAE9C,YAAY;QACZ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,QAAQ,GAAG,YAAK,IAAI,CAAC,IAAI,CAAE,CAAC;QAEhC,KAAK,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAC5D,KAAK,CAAC,wBAAwB,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAC;QACvE,KAAK,CAAC,wBAAwB,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;QAErE,IAAI,KAAK,CAAC,cAAe,CAAC,IAAI,KAAK,qCAAqC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,cAAe,CAAC,IAAI,KAAK,qCAAqC,CAAC,OAAO,CAAC,EAAE;YAC/J,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,gBAAM,KAAK,CAAC,sBAAsB,UAAO,CAAC;SAC7G;aAAM;YACH,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,qBAAW,KAAK,CAAC,sBAAsB,gBAAa,CAAC;SACxH;QACD,KAAK,CAAC,iBAAiB,IAAI,uCAAuC,CAAC;QACnE,IAAI,IAAI,CAAC,yBAAyB,EAAE;YAChC,KAAK,CAAC,iBAAiB,IAAI,UAAG,MAAM,CAAC,sBAAsB,kCAAwB,KAAK,CAAC,sBAAsB,eAAY,CAAC;SAC/H;QACD,KAAK,CAAC,iBAAiB,IAAI,WAAW,CAAC;QACvC,KAAK,CAAC,iBAAiB,IAAI,4BAA4B,CAAC;QACxD,IAAI,IAAI,CAAC,yBAAyB,EAAE;YAChC,KAAK,CAAC,iBAAiB,IAAI,UAAG,MAAM,CAAC,sBAAsB,kCAAwB,KAAK,CAAC,sBAAsB,eAAY,CAAC;SAC/H;QACD,KAAK,CAAC,iBAAiB,IAAI,UAAG,MAAM,CAAC,sBAAsB,qCAA2B,MAAM,CAAC,sBAAsB,WAAQ,CAAC;QAC5H,KAAK,CAAC,iBAAiB,IAAI,YAAY,CAAC;QACxC,KAAK,CAAC,iBAAiB,IAAI,YAAY,CAAC;QAExC,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,kDAAmB,GAA7B;QACI,IAAI,UAAU,GAAG,iBAAM,mBAAmB,WAAE,CAAC;QAE7C,UAAU,IAAI,UAAG,IAAI,CAAC,iBAAiB,0CAAgC,IAAI,CAAC,yBAAyB,UAAO,CAAC;QAE7G,OAAO,UAAU,CAAC;IACtB,CAAC;IAEM,wCAAS,GAAhB;QACI,IAAI,mBAAmB,GAAG,iBAAM,SAAS,WAAE,CAAC;QAE5C,mBAAmB,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;QAE/E,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEM,2CAAY,GAAnB,UAAoB,mBAAwB,EAAE,KAAY,EAAE,OAAe;;QACvE,iBAAM,YAAY,YAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,yBAAyB,GAAG,MAAA,mBAAmB,CAAC,yBAAyB,mCAAI,IAAI,CAAC;IAC3F,CAAC;IA9ID;QADC,sBAAsB,CAAC,+BAA+B,EAAE,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;2EACnD;IA+IrD,2BAAC;CAAA,AAjKD,CAA0C,iBAAiB,GAiK1D;SAjKY,oBAAoB;AAmKjC,aAAa,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,CAAC","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { AbstractMesh } from '../../../../Meshes/abstractMesh';\r\nimport { NodeMaterial, NodeMaterialDefines } from '../../nodeMaterial';\r\nimport { Effect } from '../../../effect';\r\nimport { Mesh } from '../../../../Meshes/mesh';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { Scene } from '../../../../scene';\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../nodeMaterialDecorator\";\r\n\r\nimport \"../../../../Shaders/ShadersInclude/helperFunctions\";\r\nimport \"../../../../Shaders/ShadersInclude/imageProcessingDeclaration\";\r\nimport \"../../../../Shaders/ShadersInclude/imageProcessingFunctions\";\r\n\r\n/**\r\n * Block used to add image processing support to fragment shader\r\n */\r\nexport class ImageProcessingBlock extends NodeMaterialBlock {\r\n /**\r\n * Create a new ImageProcessingBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.registerInput(\"color\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Color3);\r\n }\r\n\r\n /**\r\n * Defines if the input should be converted to linear space (default: true)\r\n */\r\n @editableInPropertyPage(\"Convert input to linear space\", PropertyTypeForEdition.Boolean, \"ADVANCED\")\r\n public convertInputToLinearSpace: boolean = true;\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 \"ImageProcessingBlock\";\r\n }\r\n\r\n /**\r\n * Gets the color input component\r\n */\r\n public get color(): NodeMaterialConnectionPoint {\r\n return this._inputs[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 /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"exposureLinear\");\r\n state._excludeVariableName(\"contrast\");\r\n state._excludeVariableName(\"vInverseScreenSize\");\r\n state._excludeVariableName(\"vignetteSettings1\");\r\n state._excludeVariableName(\"vignetteSettings2\");\r\n state._excludeVariableName(\"vCameraColorCurveNegative\");\r\n state._excludeVariableName(\"vCameraColorCurveNeutral\");\r\n state._excludeVariableName(\"vCameraColorCurvePositive\");\r\n state._excludeVariableName(\"txColorTransform\");\r\n state._excludeVariableName(\"colorTransformSettings\");\r\n }\r\n\r\n public isReady(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (defines._areImageProcessingDirty && nodeMaterial.imageProcessingConfiguration) {\r\n if (!nodeMaterial.imageProcessingConfiguration.isReady()) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (defines._areImageProcessingDirty && nodeMaterial.imageProcessingConfiguration) {\r\n nodeMaterial.imageProcessingConfiguration.prepareDefines(defines);\r\n }\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n if (!nodeMaterial.imageProcessingConfiguration) {\r\n return;\r\n }\r\n\r\n nodeMaterial.imageProcessingConfiguration.bind(effect);\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n // Register for defines\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n // Register for blocking\r\n state.sharedData.blockingBlocks.push(this);\r\n\r\n // Register for binding\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n // Uniforms\r\n state.uniforms.push(\"exposureLinear\");\r\n state.uniforms.push(\"contrast\");\r\n state.uniforms.push(\"vInverseScreenSize\");\r\n state.uniforms.push(\"vignetteSettings1\");\r\n state.uniforms.push(\"vignetteSettings2\");\r\n state.uniforms.push(\"vCameraColorCurveNegative\");\r\n state.uniforms.push(\"vCameraColorCurveNeutral\");\r\n state.uniforms.push(\"vCameraColorCurvePositive\");\r\n state.uniforms.push(\"txColorTransform\");\r\n state.uniforms.push(\"colorTransformSettings\");\r\n\r\n // Emit code\r\n let color = this.color;\r\n let output = this._outputs[0];\r\n let comments = `//${this.name}`;\r\n\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n state._emitFunctionFromInclude(\"imageProcessingDeclaration\", comments);\r\n state._emitFunctionFromInclude(\"imageProcessingFunctions\", comments);\r\n\r\n if (color.connectedPoint!.type === NodeMaterialBlockConnectionPointTypes.Color4 || (color.connectedPoint!.type === NodeMaterialBlockConnectionPointTypes.Vector4)) {\r\n state.compilationString += `${this._declareOutput(output, state)} = ${color.associatedVariableName};\\r\\n`;\r\n } else {\r\n state.compilationString += `${this._declareOutput(output, state)} = vec4(${color.associatedVariableName}, 1.0);\\r\\n`;\r\n }\r\n state.compilationString += `#ifdef IMAGEPROCESSINGPOSTPROCESS\\r\\n`;\r\n if (this.convertInputToLinearSpace) {\r\n state.compilationString += `${output.associatedVariableName}.rgb = toLinearSpace(${color.associatedVariableName}.rgb);\\r\\n`;\r\n }\r\n state.compilationString += `#else\\r\\n`;\r\n state.compilationString += `#ifdef IMAGEPROCESSING\\r\\n`;\r\n if (this.convertInputToLinearSpace) {\r\n state.compilationString += `${output.associatedVariableName}.rgb = toLinearSpace(${color.associatedVariableName}.rgb);\\r\\n`;\r\n }\r\n state.compilationString += `${output.associatedVariableName} = applyImageProcessing(${output.associatedVariableName});\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n state.compilationString += `#endif\\r\\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}.convertInputToLinearSpace = ${this.convertInputToLinearSpace};\\r\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n serializationObject.convertInputToLinearSpace = this.convertInputToLinearSpace;\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.convertInputToLinearSpace = serializationObject.convertInputToLinearSpace ?? true;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ImageProcessingBlock\", ImageProcessingBlock);"]}
@@ -191,7 +191,7 @@ var PerturbNormalBlock = /** @class */ (function (_super) {
191
191
  };
192
192
  PerturbNormalBlock.prototype._buildBlock = function (state) {
193
193
  _super.prototype._buildBlock.call(this, state);
194
- var comments = "//" + this.name;
194
+ var comments = "//".concat(this.name);
195
195
  var uv = this.uv;
196
196
  var worldPosition = this.worldPosition;
197
197
  var worldNormal = this.worldNormal;
@@ -205,13 +205,13 @@ var PerturbNormalBlock = /** @class */ (function (_super) {
205
205
  var replaceForParallaxInfos = !this.parallaxScale.isConnectedToInputBlock ? "0.05" :
206
206
  this.parallaxScale.connectInputBlock.isConstant ? state._emitFloat(this.parallaxScale.connectInputBlock.value) : this.parallaxScale.associatedVariableName;
207
207
  var replaceForBumpInfos = this.strength.isConnectedToInputBlock && this.strength.connectInputBlock.isConstant ?
208
- "\r\n#if !defined(NORMALXYSCALE)\r\n1.0/\r\n#endif\r\n" + state._emitFloat(this.strength.connectInputBlock.value) :
209
- "\r\n#if !defined(NORMALXYSCALE)\r\n1.0/\r\n#endif\r\n" + this.strength.associatedVariableName;
208
+ "\r\n#if !defined(NORMALXYSCALE)\r\n1.0/\r\n#endif\r\n".concat(state._emitFloat(this.strength.connectInputBlock.value)) :
209
+ "\r\n#if !defined(NORMALXYSCALE)\r\n1.0/\r\n#endif\r\n".concat(this.strength.associatedVariableName);
210
210
  state._emitExtension("derivatives", "#extension GL_OES_standard_derivatives : enable");
211
211
  var tangentReplaceString = { search: /defined\(TANGENT\)/g, replace: worldTangent.isConnected ? "defined(TANGENT)" : "defined(IGNORE)" };
212
212
  if (worldTangent.isConnected) {
213
- state.compilationString += "vec3 tbnNormal = normalize(" + worldNormal.associatedVariableName + ".xyz);\r\n";
214
- state.compilationString += "vec3 tbnTangent = normalize(" + worldTangent.associatedVariableName + ".xyz);\r\n";
213
+ state.compilationString += "vec3 tbnNormal = normalize(".concat(worldNormal.associatedVariableName, ".xyz);\r\n");
214
+ state.compilationString += "vec3 tbnTangent = normalize(".concat(worldTangent.associatedVariableName, ".xyz);\r\n");
215
215
  state.compilationString += "vec3 tbnBitangent = cross(tbnNormal, tbnTangent);\r\n";
216
216
  state.compilationString += "mat3 vTBN = mat3(tbnTangent, tbnBitangent, tbnNormal);\r\n";
217
217
  }
@@ -229,16 +229,16 @@ var PerturbNormalBlock = /** @class */ (function (_super) {
229
229
  { search: /texture2D\(bumpSampler,vBumpUV\)\.w/g, replace: "height_" },
230
230
  ]
231
231
  });
232
- var uvForPerturbNormal = !useParallax || !normalSamplerName ? this.normalMapColor.associatedVariableName : "texture2D(" + normalSamplerName + ", " + uv.associatedVariableName + " + uvOffset).xyz";
232
+ var uvForPerturbNormal = !useParallax || !normalSamplerName ? this.normalMapColor.associatedVariableName : "texture2D(".concat(normalSamplerName, ", ").concat(uv.associatedVariableName, " + uvOffset).xyz");
233
233
  state.compilationString += this._declareOutput(this.output, state) + " = vec4(0.);\r\n";
234
234
  state.compilationString += state._emitCodeFromInclude("bumpFragment", comments, {
235
235
  replaceStrings: [
236
- { search: /perturbNormal\(TBN,texture2D\(bumpSampler,vBumpUV\+uvOffset\).xyz,vBumpInfos.y\)/g, replace: "perturbNormal(TBN, " + uvForPerturbNormal + ", vBumpInfos.y)" },
236
+ { search: /perturbNormal\(TBN,texture2D\(bumpSampler,vBumpUV\+uvOffset\).xyz,vBumpInfos.y\)/g, replace: "perturbNormal(TBN, ".concat(uvForPerturbNormal, ", vBumpInfos.y)") },
237
237
  {
238
238
  search: /parallaxOcclusion\(invTBN\*-viewDirectionW,invTBN\*normalW,vBumpUV,vBumpInfos.z\)/g,
239
- replace: "parallaxOcclusion((invTBN * -viewDirectionW), (invTBN * normalW), vBumpUV, vBumpInfos.z, " + (useParallax && this.useParallaxOcclusion ? normalSamplerName : "bumpSampler") + ")"
239
+ replace: "parallaxOcclusion((invTBN * -viewDirectionW), (invTBN * normalW), vBumpUV, vBumpInfos.z, ".concat(useParallax && this.useParallaxOcclusion ? normalSamplerName : "bumpSampler", ")")
240
240
  },
241
- { search: /parallaxOffset\(invTBN\*viewDirectionW,vBumpInfos\.z\)/g, replace: "parallaxOffset(invTBN * viewDirectionW, vBumpInfos.z, " + (useParallax ? this.parallaxHeight.associatedVariableName : "0.") + ")" },
241
+ { search: /parallaxOffset\(invTBN\*viewDirectionW,vBumpInfos\.z\)/g, replace: "parallaxOffset(invTBN * viewDirectionW, vBumpInfos.z, ".concat(useParallax ? this.parallaxHeight.associatedVariableName : "0.", ")") },
242
242
  { search: /vTangentSpaceParams/g, replace: this._tangentSpaceParameterName },
243
243
  { search: /vBumpInfos.y/g, replace: replaceForBumpInfos },
244
244
  { search: /vBumpInfos.z/g, replace: replaceForParallaxInfos },
@@ -254,9 +254,9 @@ var PerturbNormalBlock = /** @class */ (function (_super) {
254
254
  return this;
255
255
  };
256
256
  PerturbNormalBlock.prototype._dumpPropertiesCode = function () {
257
- var codeString = _super.prototype._dumpPropertiesCode.call(this) + (this._codeVariableName + ".invertX = " + this.invertX + ";\r\n");
258
- codeString += this._codeVariableName + ".invertY = " + this.invertY + ";\r\n";
259
- codeString += this._codeVariableName + ".useParallaxOcclusion = " + this.useParallaxOcclusion + ";\r\n";
257
+ var codeString = _super.prototype._dumpPropertiesCode.call(this) + "".concat(this._codeVariableName, ".invertX = ").concat(this.invertX, ";\r\n");
258
+ codeString += "".concat(this._codeVariableName, ".invertY = ").concat(this.invertY, ";\r\n");
259
+ codeString += "".concat(this._codeVariableName, ".useParallaxOcclusion = ").concat(this.useParallaxOcclusion, ";\r\n");
260
260
  return codeString;
261
261
  };
262
262
  PerturbNormalBlock.prototype.serialize = function () {
@@ -1 +1 @@
1
- {"version":3,"file":"perturbNormalBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Fragment/perturbNormalBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { NodeMaterial, NodeMaterialDefines } from '../../nodeMaterial';\r\nimport { AbstractMesh } from '../../../../Meshes/abstractMesh';\r\nimport { InputBlock } from '../Input/inputBlock';\r\nimport { Effect } from '../../../effect';\r\nimport { Mesh } from '../../../../Meshes/mesh';\r\nimport { Scene } from '../../../../scene';\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../nodeMaterialDecorator\";\r\nimport { TextureBlock } from \"../Dual/textureBlock\";\r\n\r\nimport \"../../../../Shaders/ShadersInclude/bumpFragmentMainFunctions\";\r\nimport \"../../../../Shaders/ShadersInclude/bumpFragmentFunctions\";\r\nimport \"../../../../Shaders/ShadersInclude/bumpFragment\";\r\n\r\n/**\r\n * Block used to perturb normals based on a normal map\r\n */\r\nexport class PerturbNormalBlock extends NodeMaterialBlock {\r\n private _tangentSpaceParameterName = \"\";\r\n\r\n /** Gets or sets a boolean indicating that normal should be inverted on X axis */\r\n @editableInPropertyPage(\"Invert X axis\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { \"notifiers\": { \"update\": false } })\r\n public invertX = false;\r\n /** Gets or sets a boolean indicating that normal should be inverted on Y axis */\r\n @editableInPropertyPage(\"Invert Y axis\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { \"notifiers\": { \"update\": false } })\r\n public invertY = false;\r\n /** Gets or sets a boolean indicating that parallax occlusion should be enabled */\r\n @editableInPropertyPage(\"Use parallax occlusion\", PropertyTypeForEdition.Boolean)\r\n public useParallaxOcclusion = false;\r\n\r\n /**\r\n * Create a new PerturbNormalBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this._isUnique = true;\r\n\r\n // Vertex\r\n this.registerInput(\"worldPosition\", NodeMaterialBlockConnectionPointTypes.Vector4, false);\r\n this.registerInput(\"worldNormal\", NodeMaterialBlockConnectionPointTypes.Vector4, false);\r\n this.registerInput(\"worldTangent\", NodeMaterialBlockConnectionPointTypes.Vector4, true);\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2, false);\r\n this.registerInput(\"normalMapColor\", NodeMaterialBlockConnectionPointTypes.Color3, false);\r\n this.registerInput(\"strength\", NodeMaterialBlockConnectionPointTypes.Float, false);\r\n this.registerInput(\"viewDirection\", NodeMaterialBlockConnectionPointTypes.Vector3, true);\r\n this.registerInput(\"parallaxScale\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"parallaxHeight\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n\r\n // Fragment\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this.registerOutput(\"uvOffset\", 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 \"PerturbNormalBlock\";\r\n }\r\n\r\n /**\r\n * Gets the world position input component\r\n */\r\n public get worldPosition(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the world normal input component\r\n */\r\n public get worldNormal(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the world tangent input component\r\n */\r\n public get worldTangent(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the uv input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the normal map color input component\r\n */\r\n public get normalMapColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the strength input component\r\n */\r\n public get strength(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the view direction input component\r\n */\r\n public get viewDirection(): NodeMaterialConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n /**\r\n * Gets the parallax scale input component\r\n */\r\n public get parallaxScale(): NodeMaterialConnectionPoint {\r\n return this._inputs[7];\r\n }\r\n\r\n /**\r\n * Gets the parallax height input component\r\n */\r\n public get parallaxHeight(): NodeMaterialConnectionPoint {\r\n return this._inputs[8];\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 /**\r\n * Gets the uv offset output component\r\n */\r\n public get uvOffset(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n const normalSamplerName = (this.normalMapColor.connectedPoint!._ownerBlock as TextureBlock).samplerName;\r\n const useParallax = this.viewDirection.isConnected && (this.useParallaxOcclusion && normalSamplerName || !this.useParallaxOcclusion && this.parallaxHeight.isConnected);\r\n\r\n defines.setValue(\"BUMP\", true);\r\n defines.setValue(\"PARALLAX\", useParallax, true);\r\n defines.setValue(\"PARALLAXOCCLUSION\", this.useParallaxOcclusion, true);\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (nodeMaterial.getScene()._mirroredCameraPosition) {\r\n effect.setFloat2(this._tangentSpaceParameterName, this.invertX ? 1.0 : -1.0, this.invertY ? 1.0 : -1.0);\r\n } else {\r\n effect.setFloat2(this._tangentSpaceParameterName, this.invertX ? -1.0 : 1.0, this.invertY ? -1.0 : 1.0);\r\n }\r\n }\r\n\r\n public autoConfigure(material: NodeMaterial) {\r\n if (!this.uv.isConnected) {\r\n let uvInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"uv\");\r\n\r\n if (!uvInput) {\r\n uvInput = new InputBlock(\"uv\");\r\n uvInput.setAsAttribute();\r\n }\r\n uvInput.output.connectTo(this.uv);\r\n }\r\n\r\n if (!this.strength.isConnected) {\r\n let strengthInput = new InputBlock(\"strength\");\r\n strengthInput.value = 1.0;\r\n strengthInput.output.connectTo(this.strength);\r\n }\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let comments = `//${this.name}`;\r\n let uv = this.uv;\r\n let worldPosition = this.worldPosition;\r\n let worldNormal = this.worldNormal;\r\n let worldTangent = this.worldTangent;\r\n\r\n state.sharedData.blocksWithDefines.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n this._tangentSpaceParameterName = state._getFreeDefineName(\"tangentSpaceParameter\");\r\n\r\n state._emitUniformFromString(this._tangentSpaceParameterName, \"vec2\");\r\n\r\n const normalSamplerName = (this.normalMapColor.connectedPoint!._ownerBlock as TextureBlock).samplerName;\r\n const useParallax = this.viewDirection.isConnected && (this.useParallaxOcclusion && normalSamplerName || !this.useParallaxOcclusion && this.parallaxHeight.isConnected);\r\n\r\n const replaceForParallaxInfos = !this.parallaxScale.isConnectedToInputBlock ? \"0.05\" :\r\n this.parallaxScale.connectInputBlock!.isConstant ? state._emitFloat(this.parallaxScale.connectInputBlock!.value) : this.parallaxScale.associatedVariableName;\r\n\r\n let replaceForBumpInfos = this.strength.isConnectedToInputBlock && this.strength.connectInputBlock!.isConstant ?\r\n `\\r\\n#if !defined(NORMALXYSCALE)\\r\\n1.0/\\r\\n#endif\\r\\n${state._emitFloat(this.strength.connectInputBlock!.value)}` :\r\n `\\r\\n#if !defined(NORMALXYSCALE)\\r\\n1.0/\\r\\n#endif\\r\\n${this.strength.associatedVariableName}`;\r\n\r\n state._emitExtension(\"derivatives\", \"#extension GL_OES_standard_derivatives : enable\");\r\n\r\n let tangentReplaceString = { search: /defined\\(TANGENT\\)/g, replace: worldTangent.isConnected ? \"defined(TANGENT)\" : \"defined(IGNORE)\" };\r\n\r\n if (worldTangent.isConnected) {\r\n state.compilationString += `vec3 tbnNormal = normalize(${worldNormal.associatedVariableName}.xyz);\\r\\n`;\r\n state.compilationString += `vec3 tbnTangent = normalize(${worldTangent.associatedVariableName}.xyz);\\r\\n`;\r\n state.compilationString += `vec3 tbnBitangent = cross(tbnNormal, tbnTangent);\\r\\n`;\r\n state.compilationString += `mat3 vTBN = mat3(tbnTangent, tbnBitangent, tbnNormal);\\r\\n`;\r\n }\r\n\r\n state._emitFunctionFromInclude(\"bumpFragmentMainFunctions\", comments, {\r\n replaceStrings: [\r\n tangentReplaceString,\r\n ]\r\n });\r\n\r\n state._emitFunctionFromInclude(\"bumpFragmentFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /#include<samplerFragmentDeclaration>\\(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_SAMPLERNAME_,bump\\)/g, replace: \"\" },\r\n { search: /uniform sampler2D bumpSampler;/g, replace: \"\" },\r\n { search: /vec2 parallaxOcclusion\\(vec3 vViewDirCoT,vec3 vNormalCoT,vec2 texCoord,float parallaxScale\\)/g, replace: \"#define inline\\r\\nvec2 parallaxOcclusion(vec3 vViewDirCoT, vec3 vNormalCoT, vec2 texCoord, float parallaxScale, sampler2D bumpSampler)\" },\r\n { search: /vec2 parallaxOffset\\(vec3 viewDir,float heightScale\\)/g, replace: \"vec2 parallaxOffset(vec3 viewDir, float heightScale, float height_)\" },\r\n { search: /texture2D\\(bumpSampler,vBumpUV\\)\\.w/g, replace: \"height_\" },\r\n ]\r\n });\r\n\r\n const uvForPerturbNormal = !useParallax || !normalSamplerName ? this.normalMapColor.associatedVariableName : `texture2D(${normalSamplerName}, ${uv.associatedVariableName} + uvOffset).xyz`;\r\n\r\n state.compilationString += this._declareOutput(this.output, state) + \" = vec4(0.);\\r\\n\";\r\n state.compilationString += state._emitCodeFromInclude(\"bumpFragment\", comments, {\r\n replaceStrings: [\r\n { search: /perturbNormal\\(TBN,texture2D\\(bumpSampler,vBumpUV\\+uvOffset\\).xyz,vBumpInfos.y\\)/g, replace: `perturbNormal(TBN, ${uvForPerturbNormal}, vBumpInfos.y)` },\r\n {\r\n search: /parallaxOcclusion\\(invTBN\\*-viewDirectionW,invTBN\\*normalW,vBumpUV,vBumpInfos.z\\)/g,\r\n replace: `parallaxOcclusion((invTBN * -viewDirectionW), (invTBN * normalW), vBumpUV, vBumpInfos.z, ${useParallax && this.useParallaxOcclusion ? normalSamplerName : \"bumpSampler\"})`\r\n },\r\n { search: /parallaxOffset\\(invTBN\\*viewDirectionW,vBumpInfos\\.z\\)/g, replace: `parallaxOffset(invTBN * viewDirectionW, vBumpInfos.z, ${useParallax ? this.parallaxHeight.associatedVariableName : \"0.\"})` },\r\n { search: /vTangentSpaceParams/g, replace: this._tangentSpaceParameterName },\r\n { search: /vBumpInfos.y/g, replace: replaceForBumpInfos },\r\n { search: /vBumpInfos.z/g, replace: replaceForParallaxInfos },\r\n { search: /vBumpUV/g, replace: uv.associatedVariableName },\r\n { search: /vPositionW/g, replace: worldPosition.associatedVariableName + \".xyz\" },\r\n { search: /normalW=/g, replace: this.output.associatedVariableName + \".xyz = \" },\r\n { search: /mat3\\(normalMatrix\\)\\*normalW/g, replace: \"mat3(normalMatrix) * \" + this.output.associatedVariableName + \".xyz\" },\r\n { search: /normalW/g, replace: worldNormal.associatedVariableName + \".xyz\" },\r\n { search: /viewDirectionW/g, replace: useParallax ? this.viewDirection.associatedVariableName : \"vec3(0.)\" },\r\n tangentReplaceString\r\n ]\r\n });\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n var codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.invertX = ${this.invertX};\\r\\n`;\r\n\r\n codeString += `${this._codeVariableName}.invertY = ${this.invertY};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useParallaxOcclusion = ${this.useParallaxOcclusion};\\r\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n serializationObject.invertX = this.invertX;\r\n serializationObject.invertY = this.invertY;\r\n serializationObject.useParallaxOcclusion = this.useParallaxOcclusion;\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.invertX = serializationObject.invertX;\r\n this.invertY = serializationObject.invertY;\r\n this.useParallaxOcclusion = !!serializationObject.useParallaxOcclusion;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.PerturbNormalBlock\", PerturbNormalBlock);\r\n"]}
1
+ {"version":3,"file":"perturbNormalBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Fragment/perturbNormalBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { NodeMaterial, NodeMaterialDefines } from '../../nodeMaterial';\r\nimport { AbstractMesh } from '../../../../Meshes/abstractMesh';\r\nimport { InputBlock } from '../Input/inputBlock';\r\nimport { Effect } from '../../../effect';\r\nimport { Mesh } from '../../../../Meshes/mesh';\r\nimport { Scene } from '../../../../scene';\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../nodeMaterialDecorator\";\r\nimport { TextureBlock } from \"../Dual/textureBlock\";\r\n\r\nimport \"../../../../Shaders/ShadersInclude/bumpFragmentMainFunctions\";\r\nimport \"../../../../Shaders/ShadersInclude/bumpFragmentFunctions\";\r\nimport \"../../../../Shaders/ShadersInclude/bumpFragment\";\r\n\r\n/**\r\n * Block used to perturb normals based on a normal map\r\n */\r\nexport class PerturbNormalBlock extends NodeMaterialBlock {\r\n private _tangentSpaceParameterName = \"\";\r\n\r\n /** Gets or sets a boolean indicating that normal should be inverted on X axis */\r\n @editableInPropertyPage(\"Invert X axis\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { \"notifiers\": { \"update\": false } })\r\n public invertX = false;\r\n /** Gets or sets a boolean indicating that normal should be inverted on Y axis */\r\n @editableInPropertyPage(\"Invert Y axis\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { \"notifiers\": { \"update\": false } })\r\n public invertY = false;\r\n /** Gets or sets a boolean indicating that parallax occlusion should be enabled */\r\n @editableInPropertyPage(\"Use parallax occlusion\", PropertyTypeForEdition.Boolean)\r\n public useParallaxOcclusion = false;\r\n\r\n /**\r\n * Create a new PerturbNormalBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this._isUnique = true;\r\n\r\n // Vertex\r\n this.registerInput(\"worldPosition\", NodeMaterialBlockConnectionPointTypes.Vector4, false);\r\n this.registerInput(\"worldNormal\", NodeMaterialBlockConnectionPointTypes.Vector4, false);\r\n this.registerInput(\"worldTangent\", NodeMaterialBlockConnectionPointTypes.Vector4, true);\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2, false);\r\n this.registerInput(\"normalMapColor\", NodeMaterialBlockConnectionPointTypes.Color3, false);\r\n this.registerInput(\"strength\", NodeMaterialBlockConnectionPointTypes.Float, false);\r\n this.registerInput(\"viewDirection\", NodeMaterialBlockConnectionPointTypes.Vector3, true);\r\n this.registerInput(\"parallaxScale\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"parallaxHeight\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n\r\n // Fragment\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this.registerOutput(\"uvOffset\", 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 \"PerturbNormalBlock\";\r\n }\r\n\r\n /**\r\n * Gets the world position input component\r\n */\r\n public get worldPosition(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the world normal input component\r\n */\r\n public get worldNormal(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the world tangent input component\r\n */\r\n public get worldTangent(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the uv input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the normal map color input component\r\n */\r\n public get normalMapColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the strength input component\r\n */\r\n public get strength(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the view direction input component\r\n */\r\n public get viewDirection(): NodeMaterialConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n /**\r\n * Gets the parallax scale input component\r\n */\r\n public get parallaxScale(): NodeMaterialConnectionPoint {\r\n return this._inputs[7];\r\n }\r\n\r\n /**\r\n * Gets the parallax height input component\r\n */\r\n public get parallaxHeight(): NodeMaterialConnectionPoint {\r\n return this._inputs[8];\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 /**\r\n * Gets the uv offset output component\r\n */\r\n public get uvOffset(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n const normalSamplerName = (this.normalMapColor.connectedPoint!._ownerBlock as TextureBlock).samplerName;\r\n const useParallax = this.viewDirection.isConnected && (this.useParallaxOcclusion && normalSamplerName || !this.useParallaxOcclusion && this.parallaxHeight.isConnected);\r\n\r\n defines.setValue(\"BUMP\", true);\r\n defines.setValue(\"PARALLAX\", useParallax, true);\r\n defines.setValue(\"PARALLAXOCCLUSION\", this.useParallaxOcclusion, true);\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (nodeMaterial.getScene()._mirroredCameraPosition) {\r\n effect.setFloat2(this._tangentSpaceParameterName, this.invertX ? 1.0 : -1.0, this.invertY ? 1.0 : -1.0);\r\n } else {\r\n effect.setFloat2(this._tangentSpaceParameterName, this.invertX ? -1.0 : 1.0, this.invertY ? -1.0 : 1.0);\r\n }\r\n }\r\n\r\n public autoConfigure(material: NodeMaterial) {\r\n if (!this.uv.isConnected) {\r\n let uvInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"uv\");\r\n\r\n if (!uvInput) {\r\n uvInput = new InputBlock(\"uv\");\r\n uvInput.setAsAttribute();\r\n }\r\n uvInput.output.connectTo(this.uv);\r\n }\r\n\r\n if (!this.strength.isConnected) {\r\n let strengthInput = new InputBlock(\"strength\");\r\n strengthInput.value = 1.0;\r\n strengthInput.output.connectTo(this.strength);\r\n }\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let comments = `//${this.name}`;\r\n let uv = this.uv;\r\n let worldPosition = this.worldPosition;\r\n let worldNormal = this.worldNormal;\r\n let worldTangent = this.worldTangent;\r\n\r\n state.sharedData.blocksWithDefines.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n this._tangentSpaceParameterName = state._getFreeDefineName(\"tangentSpaceParameter\");\r\n\r\n state._emitUniformFromString(this._tangentSpaceParameterName, \"vec2\");\r\n\r\n const normalSamplerName = (this.normalMapColor.connectedPoint!._ownerBlock as TextureBlock).samplerName;\r\n const useParallax = this.viewDirection.isConnected && (this.useParallaxOcclusion && normalSamplerName || !this.useParallaxOcclusion && this.parallaxHeight.isConnected);\r\n\r\n const replaceForParallaxInfos = !this.parallaxScale.isConnectedToInputBlock ? \"0.05\" :\r\n this.parallaxScale.connectInputBlock!.isConstant ? state._emitFloat(this.parallaxScale.connectInputBlock!.value) : this.parallaxScale.associatedVariableName;\r\n\r\n let replaceForBumpInfos = this.strength.isConnectedToInputBlock && this.strength.connectInputBlock!.isConstant ?\r\n `\\r\\n#if !defined(NORMALXYSCALE)\\r\\n1.0/\\r\\n#endif\\r\\n${state._emitFloat(this.strength.connectInputBlock!.value)}` :\r\n `\\r\\n#if !defined(NORMALXYSCALE)\\r\\n1.0/\\r\\n#endif\\r\\n${this.strength.associatedVariableName}`;\r\n\r\n state._emitExtension(\"derivatives\", \"#extension GL_OES_standard_derivatives : enable\");\r\n\r\n let tangentReplaceString = { search: /defined\\(TANGENT\\)/g, replace: worldTangent.isConnected ? \"defined(TANGENT)\" : \"defined(IGNORE)\" };\r\n\r\n if (worldTangent.isConnected) {\r\n state.compilationString += `vec3 tbnNormal = normalize(${worldNormal.associatedVariableName}.xyz);\\r\\n`;\r\n state.compilationString += `vec3 tbnTangent = normalize(${worldTangent.associatedVariableName}.xyz);\\r\\n`;\r\n state.compilationString += `vec3 tbnBitangent = cross(tbnNormal, tbnTangent);\\r\\n`;\r\n state.compilationString += `mat3 vTBN = mat3(tbnTangent, tbnBitangent, tbnNormal);\\r\\n`;\r\n }\r\n\r\n state._emitFunctionFromInclude(\"bumpFragmentMainFunctions\", comments, {\r\n replaceStrings: [\r\n tangentReplaceString,\r\n ]\r\n });\r\n\r\n state._emitFunctionFromInclude(\"bumpFragmentFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /#include<samplerFragmentDeclaration>\\(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_SAMPLERNAME_,bump\\)/g, replace: \"\" },\r\n { search: /uniform sampler2D bumpSampler;/g, replace: \"\" },\r\n { search: /vec2 parallaxOcclusion\\(vec3 vViewDirCoT,vec3 vNormalCoT,vec2 texCoord,float parallaxScale\\)/g, replace: \"#define inline\\r\\nvec2 parallaxOcclusion(vec3 vViewDirCoT, vec3 vNormalCoT, vec2 texCoord, float parallaxScale, sampler2D bumpSampler)\" },\r\n { search: /vec2 parallaxOffset\\(vec3 viewDir,float heightScale\\)/g, replace: \"vec2 parallaxOffset(vec3 viewDir, float heightScale, float height_)\" },\r\n { search: /texture2D\\(bumpSampler,vBumpUV\\)\\.w/g, replace: \"height_\" },\r\n ]\r\n });\r\n\r\n const uvForPerturbNormal = !useParallax || !normalSamplerName ? this.normalMapColor.associatedVariableName : `texture2D(${normalSamplerName}, ${uv.associatedVariableName} + uvOffset).xyz`;\r\n\r\n state.compilationString += this._declareOutput(this.output, state) + \" = vec4(0.);\\r\\n\";\r\n state.compilationString += state._emitCodeFromInclude(\"bumpFragment\", comments, {\r\n replaceStrings: [\r\n { search: /perturbNormal\\(TBN,texture2D\\(bumpSampler,vBumpUV\\+uvOffset\\).xyz,vBumpInfos.y\\)/g, replace: `perturbNormal(TBN, ${uvForPerturbNormal}, vBumpInfos.y)` },\r\n {\r\n search: /parallaxOcclusion\\(invTBN\\*-viewDirectionW,invTBN\\*normalW,vBumpUV,vBumpInfos.z\\)/g,\r\n replace: `parallaxOcclusion((invTBN * -viewDirectionW), (invTBN * normalW), vBumpUV, vBumpInfos.z, ${useParallax && this.useParallaxOcclusion ? normalSamplerName : \"bumpSampler\"})`\r\n },\r\n { search: /parallaxOffset\\(invTBN\\*viewDirectionW,vBumpInfos\\.z\\)/g, replace: `parallaxOffset(invTBN * viewDirectionW, vBumpInfos.z, ${useParallax ? this.parallaxHeight.associatedVariableName : \"0.\"})` },\r\n { search: /vTangentSpaceParams/g, replace: this._tangentSpaceParameterName },\r\n { search: /vBumpInfos.y/g, replace: replaceForBumpInfos },\r\n { search: /vBumpInfos.z/g, replace: replaceForParallaxInfos },\r\n { search: /vBumpUV/g, replace: uv.associatedVariableName },\r\n { search: /vPositionW/g, replace: worldPosition.associatedVariableName + \".xyz\" },\r\n { search: /normalW=/g, replace: this.output.associatedVariableName + \".xyz = \" },\r\n { search: /mat3\\(normalMatrix\\)\\*normalW/g, replace: \"mat3(normalMatrix) * \" + this.output.associatedVariableName + \".xyz\" },\r\n { search: /normalW/g, replace: worldNormal.associatedVariableName + \".xyz\" },\r\n { search: /viewDirectionW/g, replace: useParallax ? this.viewDirection.associatedVariableName : \"vec3(0.)\" },\r\n tangentReplaceString\r\n ]\r\n });\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n var codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.invertX = ${this.invertX};\\r\\n`;\r\n\r\n codeString += `${this._codeVariableName}.invertY = ${this.invertY};\\r\\n`;\r\n codeString += `${this._codeVariableName}.useParallaxOcclusion = ${this.useParallaxOcclusion};\\r\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n serializationObject.invertX = this.invertX;\r\n serializationObject.invertY = this.invertY;\r\n serializationObject.useParallaxOcclusion = this.useParallaxOcclusion;\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.invertX = serializationObject.invertX;\r\n this.invertY = serializationObject.invertY;\r\n this.useParallaxOcclusion = !!serializationObject.useParallaxOcclusion;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.PerturbNormalBlock\", PerturbNormalBlock);\r\n"]}
@@ -65,7 +65,7 @@ var ScreenSizeBlock = /** @class */ (function (_super) {
65
65
  for (var _i = 0, _a = this._outputs; _i < _a.length; _i++) {
66
66
  var output = _a[_i];
67
67
  if (output.hasEndpoints) {
68
- code += this._declareOutput(output, state) + " = " + varName + "." + output.name + ";\r\n";
68
+ code += "".concat(this._declareOutput(output, state), " = ").concat(varName, ".").concat(output.name, ";\r\n");
69
69
  }
70
70
  }
71
71
  return code;
@@ -1 +1 @@
1
- {"version":3,"file":"screenSizeBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Fragment/screenSizeBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { Effect } from '../../../effect';\r\nimport { NodeMaterial } from '../../nodeMaterial';\r\nimport { Mesh } from '../../../../Meshes/mesh';\r\nimport { Scene } from '../../../../scene';\r\n\r\n/**\r\n * Block used to get the screen sizes\r\n */\r\nexport class ScreenSizeBlock extends NodeMaterialBlock {\r\n private _varName: string;\r\n private _scene: Scene;\r\n\r\n /**\r\n * Creates a new ScreenSizeBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.registerOutput(\"xy\", NodeMaterialBlockConnectionPointTypes.Vector2, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"x\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"y\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Fragment);\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 \"ScreenSizeBlock\";\r\n }\r\n\r\n /**\r\n * Gets the xy component\r\n */\r\n public get xy(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the x component\r\n */\r\n public get x(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the y component\r\n */\r\n public get y(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n const engine = this._scene.getEngine();\r\n\r\n effect.setFloat2(this._varName, engine.getRenderWidth(), engine.getRenderHeight());\r\n }\r\n\r\n protected writeOutputs(state: NodeMaterialBuildState, varName: string): string {\r\n let code = \"\";\r\n\r\n for (var output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n code += `${this._declareOutput(output, state)} = ${varName}.${output.name};\\r\\n`;\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._scene = state.sharedData.scene;\r\n\r\n if (state.target === NodeMaterialBlockTargets.Vertex) {\r\n throw \"ScreenSizeBlock must only be used in a fragment shader\";\r\n }\r\n\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n this._varName = state._getFreeVariableName(\"screenSize\");\r\n state._emitUniformFromString(this._varName, \"vec2\");\r\n\r\n state.compilationString += this.writeOutputs(state, this._varName);\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ScreenSizeBlock\", ScreenSizeBlock);"]}
1
+ {"version":3,"file":"screenSizeBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Fragment/screenSizeBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { Effect } from '../../../effect';\r\nimport { NodeMaterial } from '../../nodeMaterial';\r\nimport { Mesh } from '../../../../Meshes/mesh';\r\nimport { Scene } from '../../../../scene';\r\n\r\n/**\r\n * Block used to get the screen sizes\r\n */\r\nexport class ScreenSizeBlock extends NodeMaterialBlock {\r\n private _varName: string;\r\n private _scene: Scene;\r\n\r\n /**\r\n * Creates a new ScreenSizeBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.registerOutput(\"xy\", NodeMaterialBlockConnectionPointTypes.Vector2, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"x\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"y\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Fragment);\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 \"ScreenSizeBlock\";\r\n }\r\n\r\n /**\r\n * Gets the xy component\r\n */\r\n public get xy(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the x component\r\n */\r\n public get x(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the y component\r\n */\r\n public get y(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n const engine = this._scene.getEngine();\r\n\r\n effect.setFloat2(this._varName, engine.getRenderWidth(), engine.getRenderHeight());\r\n }\r\n\r\n protected writeOutputs(state: NodeMaterialBuildState, varName: string): string {\r\n let code = \"\";\r\n\r\n for (var output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n code += `${this._declareOutput(output, state)} = ${varName}.${output.name};\\r\\n`;\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._scene = state.sharedData.scene;\r\n\r\n if (state.target === NodeMaterialBlockTargets.Vertex) {\r\n throw \"ScreenSizeBlock must only be used in a fragment shader\";\r\n }\r\n\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n this._varName = state._getFreeVariableName(\"screenSize\");\r\n state._emitUniformFromString(this._varName, \"vec2\");\r\n\r\n state.compilationString += this.writeOutputs(state, this._varName);\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ScreenSizeBlock\", ScreenSizeBlock);"]}
@@ -102,22 +102,22 @@ var ScreenSpaceBlock = /** @class */ (function (_super) {
102
102
  var tempVariableName = state._getFreeVariableName("screenSpaceTemp");
103
103
  switch (vector.connectedPoint.type) {
104
104
  case NodeMaterialBlockConnectionPointTypes.Vector3:
105
- state.compilationString += "vec4 " + tempVariableName + " = " + worldViewProjectionName + " * vec4(" + vector.associatedVariableName + ", 1.0);\r\n";
105
+ state.compilationString += "vec4 ".concat(tempVariableName, " = ").concat(worldViewProjectionName, " * vec4(").concat(vector.associatedVariableName, ", 1.0);\r\n");
106
106
  break;
107
107
  case NodeMaterialBlockConnectionPointTypes.Vector4:
108
- state.compilationString += "vec4 " + tempVariableName + " = " + worldViewProjectionName + " * " + vector.associatedVariableName + ";\r\n";
108
+ state.compilationString += "vec4 ".concat(tempVariableName, " = ").concat(worldViewProjectionName, " * ").concat(vector.associatedVariableName, ";\r\n");
109
109
  break;
110
110
  }
111
- state.compilationString += tempVariableName + ".xy /= " + tempVariableName + ".w;";
112
- state.compilationString += tempVariableName + ".xy = " + tempVariableName + ".xy * 0.5 + vec2(0.5, 0.5);";
111
+ state.compilationString += "".concat(tempVariableName, ".xy /= ").concat(tempVariableName, ".w;");
112
+ state.compilationString += "".concat(tempVariableName, ".xy = ").concat(tempVariableName, ".xy * 0.5 + vec2(0.5, 0.5);");
113
113
  if (this.output.hasEndpoints) {
114
- state.compilationString += this._declareOutput(this.output, state) + (" = " + tempVariableName + ".xy;\r\n");
114
+ state.compilationString += this._declareOutput(this.output, state) + " = ".concat(tempVariableName, ".xy;\r\n");
115
115
  }
116
116
  if (this.x.hasEndpoints) {
117
- state.compilationString += this._declareOutput(this.x, state) + (" = " + tempVariableName + ".x;\r\n");
117
+ state.compilationString += this._declareOutput(this.x, state) + " = ".concat(tempVariableName, ".x;\r\n");
118
118
  }
119
119
  if (this.y.hasEndpoints) {
120
- state.compilationString += this._declareOutput(this.y, state) + (" = " + tempVariableName + ".y;\r\n");
120
+ state.compilationString += this._declareOutput(this.y, state) + " = ".concat(tempVariableName, ".y;\r\n");
121
121
  }
122
122
  return this;
123
123
  };
@@ -1 +1 @@
1
- {"version":3,"file":"screenSpaceBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Fragment/screenSpaceBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { NodeMaterial } from '../../nodeMaterial';\r\nimport { NodeMaterialSystemValues } from '../../Enums/nodeMaterialSystemValues';\r\nimport { InputBlock } from '../Input/inputBlock';\r\n\r\n/**\r\n * Block used to transform a vector3 or a vector4 into screen space\r\n */\r\nexport class ScreenSpaceBlock extends NodeMaterialBlock {\r\n /**\r\n * Creates a new ScreenSpaceBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.registerInput(\"vector\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"worldViewProjection\", NodeMaterialBlockConnectionPointTypes.Matrix);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"x\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerOutput(\"y\", NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this.inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector4);\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 \"ScreenSpaceBlock\";\r\n }\r\n\r\n /**\r\n * Gets the vector input\r\n */\r\n public get vector(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the worldViewProjection transform input\r\n */\r\n public get worldViewProjection(): 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 /**\r\n * Gets the x output component\r\n */\r\n public get x(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the y output component\r\n */\r\n public get y(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n public autoConfigure(material: NodeMaterial) {\r\n if (!this.worldViewProjection.isConnected) {\r\n let worldViewProjectionInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.WorldViewProjection);\r\n\r\n if (!worldViewProjectionInput) {\r\n worldViewProjectionInput = new InputBlock(\"worldViewProjection\");\r\n worldViewProjectionInput.setAsSystemValue(NodeMaterialSystemValues.WorldViewProjection);\r\n }\r\n worldViewProjectionInput.output.connectTo(this.worldViewProjection);\r\n }\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let vector = this.vector;\r\n let worldViewProjection = this.worldViewProjection;\r\n\r\n if (!vector.connectedPoint) {\r\n return;\r\n }\r\n\r\n const worldViewProjectionName = worldViewProjection.associatedVariableName;\r\n\r\n const tempVariableName = state._getFreeVariableName(\"screenSpaceTemp\");\r\n\r\n switch (vector.connectedPoint.type) {\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n state.compilationString += `vec4 ${tempVariableName} = ${worldViewProjectionName} * vec4(${vector.associatedVariableName}, 1.0);\\r\\n`;\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n state.compilationString += `vec4 ${tempVariableName} = ${worldViewProjectionName} * ${vector.associatedVariableName};\\r\\n`;\r\n break;\r\n }\r\n\r\n state.compilationString += `${tempVariableName}.xy /= ${tempVariableName}.w;`;\r\n state.compilationString += `${tempVariableName}.xy = ${tempVariableName}.xy * 0.5 + vec2(0.5, 0.5);`;\r\n\r\n if (this.output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.output, state) + ` = ${tempVariableName}.xy;\\r\\n`;\r\n }\r\n if (this.x.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.x, state) + ` = ${tempVariableName}.x;\\r\\n`;\r\n }\r\n if (this.y.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.y, state) + ` = ${tempVariableName}.y;\\r\\n`;\r\n }\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ScreenSpaceBlock\", ScreenSpaceBlock);"]}
1
+ {"version":3,"file":"screenSpaceBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Fragment/screenSpaceBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { NodeMaterial } from '../../nodeMaterial';\r\nimport { NodeMaterialSystemValues } from '../../Enums/nodeMaterialSystemValues';\r\nimport { InputBlock } from '../Input/inputBlock';\r\n\r\n/**\r\n * Block used to transform a vector3 or a vector4 into screen space\r\n */\r\nexport class ScreenSpaceBlock extends NodeMaterialBlock {\r\n /**\r\n * Creates a new ScreenSpaceBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.registerInput(\"vector\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"worldViewProjection\", NodeMaterialBlockConnectionPointTypes.Matrix);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"x\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerOutput(\"y\", NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this.inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector4);\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 \"ScreenSpaceBlock\";\r\n }\r\n\r\n /**\r\n * Gets the vector input\r\n */\r\n public get vector(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the worldViewProjection transform input\r\n */\r\n public get worldViewProjection(): 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 /**\r\n * Gets the x output component\r\n */\r\n public get x(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the y output component\r\n */\r\n public get y(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n public autoConfigure(material: NodeMaterial) {\r\n if (!this.worldViewProjection.isConnected) {\r\n let worldViewProjectionInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.WorldViewProjection);\r\n\r\n if (!worldViewProjectionInput) {\r\n worldViewProjectionInput = new InputBlock(\"worldViewProjection\");\r\n worldViewProjectionInput.setAsSystemValue(NodeMaterialSystemValues.WorldViewProjection);\r\n }\r\n worldViewProjectionInput.output.connectTo(this.worldViewProjection);\r\n }\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let vector = this.vector;\r\n let worldViewProjection = this.worldViewProjection;\r\n\r\n if (!vector.connectedPoint) {\r\n return;\r\n }\r\n\r\n const worldViewProjectionName = worldViewProjection.associatedVariableName;\r\n\r\n const tempVariableName = state._getFreeVariableName(\"screenSpaceTemp\");\r\n\r\n switch (vector.connectedPoint.type) {\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n state.compilationString += `vec4 ${tempVariableName} = ${worldViewProjectionName} * vec4(${vector.associatedVariableName}, 1.0);\\r\\n`;\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n state.compilationString += `vec4 ${tempVariableName} = ${worldViewProjectionName} * ${vector.associatedVariableName};\\r\\n`;\r\n break;\r\n }\r\n\r\n state.compilationString += `${tempVariableName}.xy /= ${tempVariableName}.w;`;\r\n state.compilationString += `${tempVariableName}.xy = ${tempVariableName}.xy * 0.5 + vec2(0.5, 0.5);`;\r\n\r\n if (this.output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.output, state) + ` = ${tempVariableName}.xy;\\r\\n`;\r\n }\r\n if (this.x.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.x, state) + ` = ${tempVariableName}.x;\\r\\n`;\r\n }\r\n if (this.y.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.y, state) + ` = ${tempVariableName}.y;\\r\\n`;\r\n }\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ScreenSpaceBlock\", ScreenSpaceBlock);"]}
@@ -126,15 +126,15 @@ var TwirlBlock = /** @class */ (function (_super) {
126
126
  var tempX = state._getFreeVariableName("x");
127
127
  var tempY = state._getFreeVariableName("y");
128
128
  var tempResult = state._getFreeVariableName("result");
129
- state.compilationString += "\n vec2 " + tempDelta + " = " + this.input.associatedVariableName + " - " + this.center.associatedVariableName + ";\n float " + tempAngle + " = " + this.strength.associatedVariableName + " * length(" + tempDelta + ");\n float " + tempX + " = cos(" + tempAngle + ") * " + tempDelta + ".x - sin(" + tempAngle + ") * " + tempDelta + ".y;\n float " + tempY + " = sin(" + tempAngle + ") * " + tempDelta + ".x + cos(" + tempAngle + ") * " + tempDelta + ".y;\n vec2 " + tempResult + " = vec2(" + tempX + " + " + this.center.associatedVariableName + ".x + " + this.offset.associatedVariableName + ".x, " + tempY + " + " + this.center.associatedVariableName + ".y + " + this.offset.associatedVariableName + ".y);\n ";
129
+ state.compilationString += "\n vec2 ".concat(tempDelta, " = ").concat(this.input.associatedVariableName, " - ").concat(this.center.associatedVariableName, ";\n float ").concat(tempAngle, " = ").concat(this.strength.associatedVariableName, " * length(").concat(tempDelta, ");\n float ").concat(tempX, " = cos(").concat(tempAngle, ") * ").concat(tempDelta, ".x - sin(").concat(tempAngle, ") * ").concat(tempDelta, ".y;\n float ").concat(tempY, " = sin(").concat(tempAngle, ") * ").concat(tempDelta, ".x + cos(").concat(tempAngle, ") * ").concat(tempDelta, ".y;\n vec2 ").concat(tempResult, " = vec2(").concat(tempX, " + ").concat(this.center.associatedVariableName, ".x + ").concat(this.offset.associatedVariableName, ".x, ").concat(tempY, " + ").concat(this.center.associatedVariableName, ".y + ").concat(this.offset.associatedVariableName, ".y);\n ");
130
130
  if (this.output.hasEndpoints) {
131
- state.compilationString += this._declareOutput(this.output, state) + (" = " + tempResult + ";\r\n");
131
+ state.compilationString += this._declareOutput(this.output, state) + " = ".concat(tempResult, ";\r\n");
132
132
  }
133
133
  if (this.x.hasEndpoints) {
134
- state.compilationString += this._declareOutput(this.x, state) + (" = " + tempResult + ".x;\r\n");
134
+ state.compilationString += this._declareOutput(this.x, state) + " = ".concat(tempResult, ".x;\r\n");
135
135
  }
136
136
  if (this.y.hasEndpoints) {
137
- state.compilationString += this._declareOutput(this.y, state) + (" = " + tempResult + ".y;\r\n");
137
+ state.compilationString += this._declareOutput(this.y, state) + " = ".concat(tempResult, ".y;\r\n");
138
138
  }
139
139
  return this;
140
140
  };
@@ -1 +1 @@
1
- {"version":3,"file":"twirlBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Fragment/twirlBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { NodeMaterial } from '../../nodeMaterial';\r\nimport { InputBlock } from '../Input/inputBlock';\r\nimport { Vector2 } from '../../../../Maths/math.vector';\r\n\r\n/**\r\n * Block used to generate a twirl\r\n */\r\nexport class TwirlBlock extends NodeMaterialBlock {\r\n /**\r\n * Creates a new TwirlBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.registerInput(\"input\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerInput(\"strength\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerInput(\"center\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerInput(\"offset\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"x\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerOutput(\"y\", 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 \"TwirlBlock\";\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 strength component\r\n */\r\n public get strength(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the center component\r\n */\r\n public get center(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the offset component\r\n */\r\n public get offset(): 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 /**\r\n * Gets the x output component\r\n */\r\n public get x(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the y output component\r\n */\r\n public get y(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n public autoConfigure(material: NodeMaterial) {\r\n if (!this.center.isConnected) {\r\n let centerInput = new InputBlock(\"center\");\r\n centerInput.value = new Vector2(0.5, 0.5);\r\n\r\n centerInput.output.connectTo(this.center);\r\n }\r\n\r\n if (!this.strength.isConnected) {\r\n let strengthInput = new InputBlock(\"strength\");\r\n strengthInput.value = 1.0;\r\n\r\n strengthInput.output.connectTo(this.strength);\r\n }\r\n\r\n if (!this.offset.isConnected) {\r\n let offsetInput = new InputBlock(\"offset\");\r\n offsetInput.value = new Vector2(0, 0);\r\n\r\n offsetInput.output.connectTo(this.offset);\r\n }\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const tempDelta = state._getFreeVariableName(\"delta\");\r\n const tempAngle = state._getFreeVariableName(\"angle\");\r\n const tempX = state._getFreeVariableName(\"x\");\r\n const tempY = state._getFreeVariableName(\"y\");\r\n const tempResult = state._getFreeVariableName(\"result\");\r\n\r\n state.compilationString += `\r\n vec2 ${tempDelta} = ${this.input.associatedVariableName} - ${this.center.associatedVariableName};\r\n float ${tempAngle} = ${this.strength.associatedVariableName} * length(${tempDelta});\r\n float ${tempX} = cos(${tempAngle}) * ${tempDelta}.x - sin(${tempAngle}) * ${tempDelta}.y;\r\n float ${tempY} = sin(${tempAngle}) * ${tempDelta}.x + cos(${tempAngle}) * ${tempDelta}.y;\r\n vec2 ${tempResult} = vec2(${tempX} + ${this.center.associatedVariableName}.x + ${this.offset.associatedVariableName}.x, ${tempY} + ${this.center.associatedVariableName}.y + ${this.offset.associatedVariableName}.y);\r\n `;\r\n\r\n if (this.output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.output, state) + ` = ${tempResult};\\r\\n`;\r\n }\r\n\r\n if (this.x.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.x, state) + ` = ${tempResult}.x;\\r\\n`;\r\n }\r\n\r\n if (this.y.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.y, state) + ` = ${tempResult}.y;\\r\\n`;\r\n }\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.TwirlBlock\", TwirlBlock);"]}
1
+ {"version":3,"file":"twirlBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Fragment/twirlBlock.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qCAAqC,EAAE,MAAM,mDAAmD,CAAC;AAG1G,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD;;GAEG;AACH;IAAgC,8BAAiB;IAC7C;;;OAGG;IACH,oBAAmB,IAAY;QAA/B,YACI,kBAAM,IAAI,EAAE,wBAAwB,CAAC,QAAQ,CAAC,SASjD;QAPG,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC3E,KAAI,CAAC,aAAa,CAAC,UAAU,EAAE,qCAAqC,CAAC,KAAK,CAAC,CAAC;QAC5E,KAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC5E,KAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC5E,KAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC7E,KAAI,CAAC,cAAc,CAAC,GAAG,EAAE,qCAAqC,CAAC,KAAK,CAAC,CAAC;QACtE,KAAI,CAAC,cAAc,CAAC,GAAG,EAAE,qCAAqC,CAAC,KAAK,CAAC,CAAC;;IAC1E,CAAC;IAED;;;OAGG;IACI,iCAAY,GAAnB;QACI,OAAO,YAAY,CAAC;IACxB,CAAC;IAKD,sBAAW,6BAAK;QAHhB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKA,sBAAW,gCAAQ;QAHpB;;WAEG;aACF;YACG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,8BAAM;QAHjB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKA,sBAAW,8BAAM;QAHlB;;WAEG;aACF;YACG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,8BAAM;QAHjB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAKD,sBAAW,yBAAC;QAHZ;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAKA,sBAAW,yBAAC;QAHb;;WAEG;aACF;YACG,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAEM,kCAAa,GAApB,UAAqB,QAAsB;QACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC1B,IAAI,WAAW,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3C,WAAW,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAE1C,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7C;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAC5B,IAAI,aAAa,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;YAC/C,aAAa,CAAC,KAAK,GAAG,GAAG,CAAC;YAE1B,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjD;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC1B,IAAI,WAAW,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3C,WAAW,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEtC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7C;IACL,CAAC;IAES,gCAAW,GAArB,UAAsB,KAA6B;QAC/C,iBAAM,WAAW,YAAC,KAAK,CAAC,CAAC;QAEzB,IAAM,SAAS,GAAG,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACtD,IAAM,SAAS,GAAG,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACtD,IAAM,KAAK,GAAG,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAM,KAAK,GAAG,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAM,UAAU,GAAG,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAExD,KAAK,CAAC,iBAAiB,IAAI,6BAChB,SAAS,gBAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,gBAAM,IAAI,CAAC,MAAM,CAAC,sBAAsB,kCACvF,SAAS,gBAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,uBAAa,SAAS,mCACzE,KAAK,oBAAU,SAAS,iBAAO,SAAS,sBAAY,SAAS,iBAAO,SAAS,oCAC7E,KAAK,oBAAU,SAAS,iBAAO,SAAS,sBAAY,SAAS,iBAAO,SAAS,mCAC9E,UAAU,qBAAW,KAAK,gBAAM,IAAI,CAAC,MAAM,CAAC,sBAAsB,kBAAQ,IAAI,CAAC,MAAM,CAAC,sBAAsB,iBAAO,KAAK,gBAAM,IAAI,CAAC,MAAM,CAAC,sBAAsB,kBAAQ,IAAI,CAAC,MAAM,CAAC,sBAAsB,mBACpN,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;YAC1B,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,aAAM,UAAU,UAAO,CAAC;SAChG;QAED,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE;YACrB,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,aAAM,UAAU,YAAS,CAAC;SAC7F;QAED,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE;YACrB,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,aAAM,UAAU,YAAS,CAAC;SAC7F;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,iBAAC;AAAD,CAAC,AAhID,CAAgC,iBAAiB,GAgIhD;;AAED,aAAa,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { NodeMaterial } from '../../nodeMaterial';\r\nimport { InputBlock } from '../Input/inputBlock';\r\nimport { Vector2 } from '../../../../Maths/math.vector';\r\n\r\n/**\r\n * Block used to generate a twirl\r\n */\r\nexport class TwirlBlock extends NodeMaterialBlock {\r\n /**\r\n * Creates a new TwirlBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.registerInput(\"input\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerInput(\"strength\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerInput(\"center\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerInput(\"offset\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"x\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerOutput(\"y\", 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 \"TwirlBlock\";\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 strength component\r\n */\r\n public get strength(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the center component\r\n */\r\n public get center(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the offset component\r\n */\r\n public get offset(): 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 /**\r\n * Gets the x output component\r\n */\r\n public get x(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the y output component\r\n */\r\n public get y(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n public autoConfigure(material: NodeMaterial) {\r\n if (!this.center.isConnected) {\r\n let centerInput = new InputBlock(\"center\");\r\n centerInput.value = new Vector2(0.5, 0.5);\r\n\r\n centerInput.output.connectTo(this.center);\r\n }\r\n\r\n if (!this.strength.isConnected) {\r\n let strengthInput = new InputBlock(\"strength\");\r\n strengthInput.value = 1.0;\r\n\r\n strengthInput.output.connectTo(this.strength);\r\n }\r\n\r\n if (!this.offset.isConnected) {\r\n let offsetInput = new InputBlock(\"offset\");\r\n offsetInput.value = new Vector2(0, 0);\r\n\r\n offsetInput.output.connectTo(this.offset);\r\n }\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const tempDelta = state._getFreeVariableName(\"delta\");\r\n const tempAngle = state._getFreeVariableName(\"angle\");\r\n const tempX = state._getFreeVariableName(\"x\");\r\n const tempY = state._getFreeVariableName(\"y\");\r\n const tempResult = state._getFreeVariableName(\"result\");\r\n\r\n state.compilationString += `\r\n vec2 ${tempDelta} = ${this.input.associatedVariableName} - ${this.center.associatedVariableName};\r\n float ${tempAngle} = ${this.strength.associatedVariableName} * length(${tempDelta});\r\n float ${tempX} = cos(${tempAngle}) * ${tempDelta}.x - sin(${tempAngle}) * ${tempDelta}.y;\r\n float ${tempY} = sin(${tempAngle}) * ${tempDelta}.x + cos(${tempAngle}) * ${tempDelta}.y;\r\n vec2 ${tempResult} = vec2(${tempX} + ${this.center.associatedVariableName}.x + ${this.offset.associatedVariableName}.x, ${tempY} + ${this.center.associatedVariableName}.y + ${this.offset.associatedVariableName}.y);\r\n `;\r\n\r\n if (this.output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.output, state) + ` = ${tempResult};\\r\\n`;\r\n }\r\n\r\n if (this.x.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.x, state) + ` = ${tempResult}.x;\\r\\n`;\r\n }\r\n\r\n if (this.y.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.y, state) + ` = ${tempResult}.y;\\r\\n`;\r\n }\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.TwirlBlock\", TwirlBlock);"]}
@@ -10,6 +10,7 @@ import { NodeMaterialBuildState } from '../../nodeMaterialBuildState';
10
10
  import { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';
11
11
  import { AnimatedInputBlockTypes } from './animatedInputBlockTypes';
12
12
  import { Observable } from '../../../../Misc/observable';
13
+ import { NodeMaterial } from '../../nodeMaterial';
13
14
  /**
14
15
  * Block used to expose an input value
15
16
  */
@@ -149,7 +150,7 @@ export declare class InputBlock extends NodeMaterialBlock {
149
150
  /** @hidden */
150
151
  _transmitWorld(effect: Effect, world: Matrix, worldView: Matrix, worldViewProjection: Matrix): void;
151
152
  /** @hidden */
152
- _transmit(effect: Effect, scene: Scene): void;
153
+ _transmit(effect: Effect, scene: Scene, material: NodeMaterial): void;
153
154
  protected _buildBlock(state: NodeMaterialBuildState): void;
154
155
  protected _dumpPropertiesCode(): string;
155
156
  dispose(): void;