@babylonjs/core 5.0.0-beta.3 → 5.0.0-beta.7

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 (675) hide show
  1. package/Actions/actionManager.d.ts +1 -1
  2. package/Actions/actionManager.js +5 -1
  3. package/Actions/actionManager.js.map +1 -1
  4. package/Audio/analyser.d.ts +2 -1
  5. package/Audio/analyser.js +5 -0
  6. package/Audio/analyser.js.map +1 -1
  7. package/Audio/audioSceneComponent.d.ts +1 -1
  8. package/Audio/audioSceneComponent.js +5 -0
  9. package/Audio/audioSceneComponent.js.map +1 -1
  10. package/Audio/sound.d.ts +1 -1
  11. package/Audio/sound.js +8 -1
  12. package/Audio/sound.js.map +1 -1
  13. package/Audio/soundTrack.d.ts +2 -1
  14. package/Audio/soundTrack.js +5 -0
  15. package/Audio/soundTrack.js.map +1 -1
  16. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
  17. package/BakedVertexAnimation/bakedVertexAnimationManager.js +5 -0
  18. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  19. package/Behaviors/Meshes/baseSixDofDragBehavior.js +29 -26
  20. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  21. package/Behaviors/Meshes/pointerDragBehavior.js +2 -0
  22. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  23. package/Bones/bone.d.ts +2 -1
  24. package/Bones/bone.js +28 -18
  25. package/Bones/bone.js.map +1 -1
  26. package/Bones/skeleton.js +3 -3
  27. package/Bones/skeleton.js.map +1 -1
  28. package/Buffers/buffer.d.ts +4 -0
  29. package/Buffers/buffer.js +13 -3
  30. package/Buffers/buffer.js.map +1 -1
  31. package/Cameras/Inputs/freeCameraMouseInput.d.ts +1 -0
  32. package/Cameras/Inputs/freeCameraMouseInput.js +6 -3
  33. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  34. package/Cameras/Inputs/freeCameraTouchInput.js +2 -4
  35. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  36. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.d.ts +1 -1
  37. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js.map +1 -1
  38. package/Cameras/Stereoscopic/anaglyphFreeCamera.d.ts +1 -1
  39. package/Cameras/Stereoscopic/anaglyphFreeCamera.js.map +1 -1
  40. package/Cameras/Stereoscopic/anaglyphGamepadCamera.d.ts +1 -1
  41. package/Cameras/Stereoscopic/anaglyphGamepadCamera.js.map +1 -1
  42. package/Cameras/Stereoscopic/anaglyphUniversalCamera.d.ts +1 -1
  43. package/Cameras/Stereoscopic/anaglyphUniversalCamera.js.map +1 -1
  44. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.d.ts +1 -1
  45. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js.map +1 -1
  46. package/Cameras/Stereoscopic/stereoscopicFreeCamera.d.ts +1 -1
  47. package/Cameras/Stereoscopic/stereoscopicFreeCamera.js.map +1 -1
  48. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.d.ts +1 -1
  49. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js.map +1 -1
  50. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +1 -1
  51. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  52. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.d.ts +1 -1
  53. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js.map +1 -1
  54. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.d.ts +1 -1
  55. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  56. package/Cameras/VR/vrDeviceOrientationFreeCamera.d.ts +1 -1
  57. package/Cameras/VR/vrDeviceOrientationFreeCamera.js.map +1 -1
  58. package/Cameras/VR/vrDeviceOrientationGamepadCamera.d.ts +1 -1
  59. package/Cameras/VR/vrDeviceOrientationGamepadCamera.js.map +1 -1
  60. package/Cameras/VR/vrExperienceHelper.d.ts +1 -0
  61. package/Cameras/VR/vrExperienceHelper.js +1 -0
  62. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  63. package/Cameras/VR/webVRCamera.d.ts +2 -1
  64. package/Cameras/VR/webVRCamera.js +3 -2
  65. package/Cameras/VR/webVRCamera.js.map +1 -1
  66. package/Cameras/arcRotateCamera.d.ts +1 -1
  67. package/Cameras/arcRotateCamera.js.map +1 -1
  68. package/Cameras/camera.d.ts +1 -1
  69. package/Cameras/camera.js +1 -1
  70. package/Cameras/camera.js.map +1 -1
  71. package/Cameras/deviceOrientationCamera.d.ts +1 -1
  72. package/Cameras/deviceOrientationCamera.js.map +1 -1
  73. package/Cameras/flyCamera.d.ts +1 -1
  74. package/Cameras/flyCamera.js.map +1 -1
  75. package/Cameras/followCamera.d.ts +1 -1
  76. package/Cameras/followCamera.js.map +1 -1
  77. package/Cameras/freeCamera.d.ts +1 -1
  78. package/Cameras/freeCamera.js.map +1 -1
  79. package/Cameras/gamepadCamera.d.ts +1 -1
  80. package/Cameras/gamepadCamera.js.map +1 -1
  81. package/Cameras/targetCamera.d.ts +1 -1
  82. package/Cameras/targetCamera.js.map +1 -1
  83. package/Cameras/touchCamera.d.ts +1 -1
  84. package/Cameras/touchCamera.js.map +1 -1
  85. package/Cameras/universalCamera.d.ts +1 -1
  86. package/Cameras/universalCamera.js.map +1 -1
  87. package/Cameras/virtualJoysticksCamera.d.ts +1 -1
  88. package/Cameras/virtualJoysticksCamera.js.map +1 -1
  89. package/Collisions/collider.d.ts +1 -1
  90. package/Collisions/collider.js +48 -2
  91. package/Collisions/collider.js.map +1 -1
  92. package/Compute/computeEffect.js +2 -2
  93. package/Compute/computeEffect.js.map +1 -1
  94. package/Culling/Octrees/octreeSceneComponent.d.ts +1 -1
  95. package/Culling/Octrees/octreeSceneComponent.js +5 -0
  96. package/Culling/Octrees/octreeSceneComponent.js.map +1 -1
  97. package/Culling/ray.d.ts +6 -4
  98. package/Culling/ray.js +31 -10
  99. package/Culling/ray.js.map +1 -1
  100. package/Debug/axesViewer.d.ts +1 -1
  101. package/Debug/axesViewer.js +5 -0
  102. package/Debug/axesViewer.js.map +1 -1
  103. package/Debug/debugLayer.d.ts +1 -1
  104. package/Debug/debugLayer.js +6 -2
  105. package/Debug/debugLayer.js.map +1 -1
  106. package/Debug/physicsViewer.d.ts +1 -1
  107. package/Debug/physicsViewer.js +3 -0
  108. package/Debug/physicsViewer.js.map +1 -1
  109. package/DeviceInput/Helpers/eventFactory.d.ts +1 -1
  110. package/DeviceInput/Helpers/eventFactory.js +2 -5
  111. package/DeviceInput/Helpers/eventFactory.js.map +1 -1
  112. package/DeviceInput/InputDevices/deviceEnums.d.ts +55 -2
  113. package/DeviceInput/InputDevices/deviceEnums.js +54 -0
  114. package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
  115. package/DeviceInput/InputDevices/deviceSource.d.ts +35 -0
  116. package/DeviceInput/InputDevices/deviceSource.js +38 -0
  117. package/DeviceInput/InputDevices/deviceSource.js.map +1 -0
  118. package/DeviceInput/InputDevices/deviceSourceManager.d.ts +14 -72
  119. package/DeviceInput/InputDevices/deviceSourceManager.js +10 -180
  120. package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
  121. package/DeviceInput/InputDevices/deviceTypes.d.ts +2 -2
  122. package/DeviceInput/InputDevices/deviceTypes.js.map +1 -1
  123. package/DeviceInput/{Interfaces → InputDevices}/inputInterfaces.d.ts +1 -5
  124. package/DeviceInput/{Interfaces → InputDevices}/inputInterfaces.js +0 -0
  125. package/DeviceInput/InputDevices/inputInterfaces.js.map +1 -0
  126. package/DeviceInput/InputDevices/internalDeviceSourceManager.d.ts +46 -0
  127. package/DeviceInput/InputDevices/internalDeviceSourceManager.js +144 -0
  128. package/DeviceInput/InputDevices/internalDeviceSourceManager.js.map +1 -0
  129. package/DeviceInput/{Implementations → InputDevices}/nativeDeviceInputSystem.d.ts +3 -7
  130. package/DeviceInput/{Implementations → InputDevices}/nativeDeviceInputSystem.js +11 -16
  131. package/DeviceInput/InputDevices/nativeDeviceInputSystem.js.map +1 -0
  132. package/DeviceInput/{Implementations → InputDevices}/webDeviceInputSystem.d.ts +11 -15
  133. package/DeviceInput/{Implementations → InputDevices}/webDeviceInputSystem.js +121 -146
  134. package/DeviceInput/InputDevices/webDeviceInputSystem.js.map +1 -0
  135. package/DeviceInput/index.d.ts +1 -5
  136. package/DeviceInput/index.js +1 -5
  137. package/DeviceInput/index.js.map +1 -1
  138. package/Engines/Extensions/engine.cubeTexture.d.ts +1 -1
  139. package/Engines/Extensions/engine.cubeTexture.js +6 -2
  140. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  141. package/Engines/Extensions/engine.multiview.d.ts +5 -0
  142. package/Engines/Extensions/engine.multiview.js +4 -1
  143. package/Engines/Extensions/engine.multiview.js.map +1 -1
  144. package/Engines/Native/nativeInterfaces.d.ts +3 -2
  145. package/Engines/Native/nativeInterfaces.js.map +1 -1
  146. package/Engines/Processors/Expressions/shaderDefineExpression.js +1 -1
  147. package/Engines/Processors/Expressions/shaderDefineExpression.js.map +1 -1
  148. package/Engines/Processors/shaderCodeInliner.js +13 -13
  149. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  150. package/Engines/WebGPU/Extensions/engine.cubeTexture.js +4 -1
  151. package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
  152. package/Engines/WebGPU/webgpuCacheBindGroups.js +9 -9
  153. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  154. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +1 -1
  155. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  156. package/Engines/WebGPU/webgpuComputeContext.js +1 -1
  157. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  158. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +13 -13
  159. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  160. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +30 -30
  161. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  162. package/Engines/WebGPU/webgpuTextureHelper.js +13 -6
  163. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  164. package/Engines/engine.d.ts +2 -6
  165. package/Engines/engine.js +1 -5
  166. package/Engines/engine.js.map +1 -1
  167. package/Engines/engineCapabilities.d.ts +4 -0
  168. package/Engines/engineCapabilities.js.map +1 -1
  169. package/Engines/nativeEngine.d.ts +1 -0
  170. package/Engines/nativeEngine.js +39 -12
  171. package/Engines/nativeEngine.js.map +1 -1
  172. package/Engines/nullEngine.js +3 -1
  173. package/Engines/nullEngine.js.map +1 -1
  174. package/Engines/renderTargetWrapper.d.ts +8 -0
  175. package/Engines/renderTargetWrapper.js +20 -0
  176. package/Engines/renderTargetWrapper.js.map +1 -1
  177. package/Engines/thinEngine.d.ts +17 -1
  178. package/Engines/thinEngine.js +50 -20
  179. package/Engines/thinEngine.js.map +1 -1
  180. package/Engines/webgpuEngine.d.ts +0 -4
  181. package/Engines/webgpuEngine.js +7 -14
  182. package/Engines/webgpuEngine.js.map +1 -1
  183. package/Gamepads/Controllers/daydreamController.js +1 -1
  184. package/Gamepads/Controllers/daydreamController.js.map +1 -1
  185. package/Gamepads/Controllers/oculusTouchController.js +2 -2
  186. package/Gamepads/Controllers/oculusTouchController.js.map +1 -1
  187. package/Gamepads/Controllers/webVRController.d.ts +1 -0
  188. package/Gamepads/Controllers/webVRController.js +1 -0
  189. package/Gamepads/Controllers/webVRController.js.map +1 -1
  190. package/Gamepads/gamepadManager.js +1 -1
  191. package/Gamepads/gamepadManager.js.map +1 -1
  192. package/Gizmos/gizmoManager.d.ts +2 -0
  193. package/Gizmos/gizmoManager.js +28 -24
  194. package/Gizmos/gizmoManager.js.map +1 -1
  195. package/Helpers/sceneHelpers.d.ts +1 -0
  196. package/Helpers/sceneHelpers.js.map +1 -1
  197. package/Inputs/scene.inputManager.d.ts +2 -2
  198. package/Inputs/scene.inputManager.js +11 -13
  199. package/Inputs/scene.inputManager.js.map +1 -1
  200. package/Instrumentation/sceneInstrumentation.js +2 -2
  201. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  202. package/Layers/effectLayer.d.ts +1 -1
  203. package/Layers/effectLayer.js +1 -1
  204. package/Layers/effectLayer.js.map +1 -1
  205. package/Layers/effectLayerSceneComponent.d.ts +1 -1
  206. package/Layers/effectLayerSceneComponent.js +7 -3
  207. package/Layers/effectLayerSceneComponent.js.map +1 -1
  208. package/Layers/glowLayer.d.ts +1 -1
  209. package/Layers/glowLayer.js.map +1 -1
  210. package/Layers/highlightLayer.d.ts +1 -1
  211. package/Layers/highlightLayer.js +2 -1
  212. package/Layers/highlightLayer.js.map +1 -1
  213. package/Layers/layer.d.ts +2 -2
  214. package/Layers/layer.js.map +1 -1
  215. package/Layers/layerSceneComponent.d.ts +1 -1
  216. package/Layers/layerSceneComponent.js +7 -3
  217. package/Layers/layerSceneComponent.js.map +1 -1
  218. package/Lights/Shadows/cascadedShadowGenerator.js +2 -2
  219. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  220. package/Lights/Shadows/shadowGenerator.js +2 -2
  221. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  222. package/Loading/Plugins/babylonFileLoader.js +115 -29
  223. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  224. package/Loading/loadingScreen.js +8 -8
  225. package/Loading/loadingScreen.js.map +1 -1
  226. package/Loading/sceneLoader.js +3 -3
  227. package/Loading/sceneLoader.js.map +1 -1
  228. package/Materials/Background/backgroundMaterial.d.ts +1 -1
  229. package/Materials/Background/backgroundMaterial.js.map +1 -1
  230. package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +37 -0
  231. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +117 -0
  232. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -0
  233. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +12 -12
  234. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  235. package/Materials/Node/Blocks/Dual/fogBlock.js +5 -5
  236. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  237. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +13 -13
  238. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  239. package/Materials/Node/Blocks/Dual/index.d.ts +1 -0
  240. package/Materials/Node/Blocks/Dual/index.js +1 -0
  241. package/Materials/Node/Blocks/Dual/index.js.map +1 -1
  242. package/Materials/Node/Blocks/Dual/lightBlock.js +10 -10
  243. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  244. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +28 -28
  245. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  246. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +1 -1
  247. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  248. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +7 -7
  249. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  250. package/Materials/Node/Blocks/Dual/textureBlock.js +32 -32
  251. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  252. package/Materials/Node/Blocks/Fragment/derivativeBlock.js +2 -2
  253. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  254. package/Materials/Node/Blocks/Fragment/discardBlock.js +1 -1
  255. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  256. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -1
  257. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  258. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +10 -10
  259. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  260. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +7 -7
  261. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  262. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +12 -12
  263. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  264. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -1
  265. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  266. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +7 -7
  267. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  268. package/Materials/Node/Blocks/Fragment/twirlBlock.js +4 -4
  269. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  270. package/Materials/Node/Blocks/Input/inputBlock.d.ts +2 -1
  271. package/Materials/Node/Blocks/Input/inputBlock.js +29 -24
  272. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  273. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +5 -5
  274. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  275. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +5 -5
  276. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  277. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +33 -33
  278. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  279. package/Materials/Node/Blocks/PBR/reflectionBlock.js +11 -11
  280. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  281. package/Materials/Node/Blocks/PBR/refractionBlock.js +11 -11
  282. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  283. package/Materials/Node/Blocks/PBR/sheenBlock.js +3 -3
  284. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  285. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -1
  286. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  287. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js +1 -1
  288. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
  289. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js +1 -1
  290. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
  291. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +7 -7
  292. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  293. package/Materials/Node/Blocks/Vertex/bonesBlock.js +3 -3
  294. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  295. package/Materials/Node/Blocks/Vertex/instancesBlock.js +3 -3
  296. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  297. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +5 -5
  298. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  299. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +16 -16
  300. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  301. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +1 -1
  302. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  303. package/Materials/Node/Blocks/addBlock.js +1 -1
  304. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  305. package/Materials/Node/Blocks/arcTan2Block.js +1 -1
  306. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  307. package/Materials/Node/Blocks/clampBlock.js +3 -3
  308. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  309. package/Materials/Node/Blocks/cloudBlock.js +7 -7
  310. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  311. package/Materials/Node/Blocks/colorMergerBlock.js +8 -8
  312. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  313. package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
  314. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  315. package/Materials/Node/Blocks/conditionalBlock.js +10 -10
  316. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  317. package/Materials/Node/Blocks/crossBlock.js +1 -1
  318. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  319. package/Materials/Node/Blocks/customBlock.js +1 -1
  320. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  321. package/Materials/Node/Blocks/desaturateBlock.js +4 -4
  322. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  323. package/Materials/Node/Blocks/distanceBlock.js +1 -1
  324. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  325. package/Materials/Node/Blocks/divideBlock.js +1 -1
  326. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  327. package/Materials/Node/Blocks/dotBlock.js +1 -1
  328. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  329. package/Materials/Node/Blocks/elbowBlock.d.ts +27 -0
  330. package/Materials/Node/Blocks/elbowBlock.js +60 -0
  331. package/Materials/Node/Blocks/elbowBlock.js.map +1 -0
  332. package/Materials/Node/Blocks/fresnelBlock.js +2 -2
  333. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  334. package/Materials/Node/Blocks/gradientBlock.js +8 -8
  335. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  336. package/Materials/Node/Blocks/index.d.ts +1 -0
  337. package/Materials/Node/Blocks/index.js +1 -0
  338. package/Materials/Node/Blocks/index.js.map +1 -1
  339. package/Materials/Node/Blocks/lengthBlock.js +1 -1
  340. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  341. package/Materials/Node/Blocks/lerpBlock.js +1 -1
  342. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  343. package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -1
  344. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  345. package/Materials/Node/Blocks/maxBlock.js +1 -1
  346. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  347. package/Materials/Node/Blocks/minBlock.js +1 -1
  348. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  349. package/Materials/Node/Blocks/modBlock.js +1 -1
  350. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  351. package/Materials/Node/Blocks/multiplyBlock.js +1 -1
  352. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  353. package/Materials/Node/Blocks/nLerpBlock.js +1 -1
  354. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  355. package/Materials/Node/Blocks/negateBlock.js +1 -1
  356. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  357. package/Materials/Node/Blocks/normalBlendBlock.js +5 -5
  358. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  359. package/Materials/Node/Blocks/normalizeBlock.js +1 -1
  360. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  361. package/Materials/Node/Blocks/oneMinusBlock.js +1 -1
  362. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  363. package/Materials/Node/Blocks/posterizeBlock.js +1 -1
  364. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  365. package/Materials/Node/Blocks/powBlock.js +1 -1
  366. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  367. package/Materials/Node/Blocks/randomNumberBlock.js +2 -2
  368. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  369. package/Materials/Node/Blocks/reciprocalBlock.js +1 -1
  370. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  371. package/Materials/Node/Blocks/reflectBlock.js +1 -1
  372. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  373. package/Materials/Node/Blocks/refractBlock.js +1 -1
  374. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  375. package/Materials/Node/Blocks/remapBlock.js +3 -3
  376. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  377. package/Materials/Node/Blocks/replaceColorBlock.js +3 -3
  378. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  379. package/Materials/Node/Blocks/rotate2dBlock.js +1 -1
  380. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  381. package/Materials/Node/Blocks/scaleBlock.js +1 -1
  382. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  383. package/Materials/Node/Blocks/simplexPerlin3DBlock.js +1 -1
  384. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  385. package/Materials/Node/Blocks/smoothStepBlock.js +1 -1
  386. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  387. package/Materials/Node/Blocks/stepBlock.js +1 -1
  388. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  389. package/Materials/Node/Blocks/subtractBlock.js +1 -1
  390. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  391. package/Materials/Node/Blocks/transformBlock.js +13 -13
  392. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  393. package/Materials/Node/Blocks/trigonometryBlock.js +2 -2
  394. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  395. package/Materials/Node/Blocks/vectorMergerBlock.js +22 -22
  396. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  397. package/Materials/Node/Blocks/vectorSplitterBlock.js +8 -8
  398. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  399. package/Materials/Node/Blocks/viewDirectionBlock.js +1 -1
  400. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  401. package/Materials/Node/Blocks/voronoiNoiseBlock.js +5 -5
  402. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  403. package/Materials/Node/Blocks/waveBlock.js +3 -3
  404. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  405. package/Materials/Node/Blocks/worleyNoise3DBlock.js +5 -5
  406. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  407. package/Materials/Node/Enums/nodeMaterialSystemValues.d.ts +3 -1
  408. package/Materials/Node/Enums/nodeMaterialSystemValues.js +2 -0
  409. package/Materials/Node/Enums/nodeMaterialSystemValues.js.map +1 -1
  410. package/Materials/Node/nodeMaterial.d.ts +4 -0
  411. package/Materials/Node/nodeMaterial.js +22 -11
  412. package/Materials/Node/nodeMaterial.js.map +1 -1
  413. package/Materials/Node/nodeMaterialBlock.js +12 -12
  414. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  415. package/Materials/Node/nodeMaterialBuildState.js +24 -24
  416. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  417. package/Materials/Node/nodeMaterialBuildStateSharedData.js +1 -1
  418. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  419. package/Materials/PBR/pbrBaseMaterial.d.ts +2 -1
  420. package/Materials/PBR/pbrBaseMaterial.js +4 -3
  421. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  422. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +1 -1
  423. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  424. package/Materials/PBR/pbrMaterial.d.ts +1 -1
  425. package/Materials/PBR/pbrMaterial.js +2 -3
  426. package/Materials/PBR/pbrMaterial.js.map +1 -1
  427. package/Materials/PBR/pbrMetallicRoughnessMaterial.d.ts +1 -1
  428. package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
  429. package/Materials/PBR/pbrSpecularGlossinessMaterial.d.ts +1 -1
  430. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  431. package/Materials/Textures/Loaders/ddsTextureLoader.js +8 -1
  432. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  433. package/Materials/Textures/Loaders/ktxTextureLoader.js +2 -2
  434. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  435. package/Materials/Textures/MultiviewRenderTarget.d.ts +2 -1
  436. package/Materials/Textures/MultiviewRenderTarget.js +10 -2
  437. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  438. package/Materials/Textures/Procedurals/proceduralTexture.js +1 -1
  439. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  440. package/Materials/Textures/baseTexture.d.ts +1 -1
  441. package/Materials/Textures/baseTexture.js.map +1 -1
  442. package/Materials/Textures/equiRectangularCubeTexture.js +1 -1
  443. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  444. package/Materials/Textures/internalTexture.d.ts +2 -0
  445. package/Materials/Textures/internalTexture.js +2 -0
  446. package/Materials/Textures/internalTexture.js.map +1 -1
  447. package/Materials/Textures/mirrorTexture.d.ts +2 -2
  448. package/Materials/Textures/mirrorTexture.js +7 -3
  449. package/Materials/Textures/mirrorTexture.js.map +1 -1
  450. package/Materials/Textures/multiRenderTarget.d.ts +1 -1
  451. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  452. package/Materials/Textures/prePassRenderTarget.d.ts +1 -1
  453. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  454. package/Materials/Textures/refractionTexture.d.ts +1 -1
  455. package/Materials/Textures/refractionTexture.js +2 -2
  456. package/Materials/Textures/refractionTexture.js.map +1 -1
  457. package/Materials/Textures/renderTargetTexture.d.ts +1 -1
  458. package/Materials/Textures/renderTargetTexture.js +2 -2
  459. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  460. package/Materials/Textures/texture.d.ts +1 -1
  461. package/Materials/Textures/texture.js.map +1 -1
  462. package/Materials/Textures/videoTexture.js +1 -0
  463. package/Materials/Textures/videoTexture.js.map +1 -1
  464. package/Materials/effect.js +3 -3
  465. package/Materials/effect.js.map +1 -1
  466. package/Materials/material.d.ts +3 -1
  467. package/Materials/material.js +11 -3
  468. package/Materials/material.js.map +1 -1
  469. package/Materials/materialHelper.js +9 -1
  470. package/Materials/materialHelper.js.map +1 -1
  471. package/Materials/materialPluginManager.js +3 -3
  472. package/Materials/materialPluginManager.js.map +1 -1
  473. package/Materials/multiMaterial.d.ts +3 -1
  474. package/Materials/multiMaterial.js +13 -11
  475. package/Materials/multiMaterial.js.map +1 -1
  476. package/Materials/pushMaterial.d.ts +1 -1
  477. package/Materials/pushMaterial.js.map +1 -1
  478. package/Materials/shaderMaterial.js +8 -4
  479. package/Materials/shaderMaterial.js.map +1 -1
  480. package/Materials/shadowDepthWrapper.d.ts +1 -1
  481. package/Materials/shadowDepthWrapper.js +3 -3
  482. package/Materials/shadowDepthWrapper.js.map +1 -1
  483. package/Materials/standardMaterial.d.ts +2 -6
  484. package/Materials/standardMaterial.js +5 -10
  485. package/Materials/standardMaterial.js.map +1 -1
  486. package/Maths/math.size.js +1 -1
  487. package/Maths/math.size.js.map +1 -1
  488. package/Maths/math.vector.d.ts +4 -2
  489. package/Maths/math.vector.js +34 -32
  490. package/Maths/math.vector.js.map +1 -1
  491. package/Meshes/Builders/cylinderBuilder.d.ts +1 -1
  492. package/Meshes/Builders/cylinderBuilder.js +1 -1
  493. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  494. package/Meshes/Builders/linesBuilder.js.map +1 -1
  495. package/Meshes/Compression/dracoCompression.d.ts +3 -0
  496. package/Meshes/Compression/dracoCompression.js +23 -7
  497. package/Meshes/Compression/dracoCompression.js.map +1 -1
  498. package/Meshes/abstractMesh.d.ts +6 -0
  499. package/Meshes/abstractMesh.js +18 -2
  500. package/Meshes/abstractMesh.js.map +1 -1
  501. package/Meshes/geometry.d.ts +1 -1
  502. package/Meshes/geometry.js +7 -3
  503. package/Meshes/geometry.js.map +1 -1
  504. package/Meshes/groundMesh.d.ts +1 -1
  505. package/Meshes/groundMesh.js.map +1 -1
  506. package/Meshes/mesh.js +21 -6
  507. package/Meshes/mesh.js.map +1 -1
  508. package/Meshes/mesh.lts.d.ts +1 -1
  509. package/Meshes/mesh.lts.js.map +1 -1
  510. package/Meshes/mesh.vertexData.d.ts +1 -1
  511. package/Meshes/mesh.vertexData.js +2 -2
  512. package/Meshes/mesh.vertexData.js.map +1 -1
  513. package/Meshes/polygonMesh.js +2 -2
  514. package/Meshes/polygonMesh.js.map +1 -1
  515. package/Meshes/subMesh.js +1 -2
  516. package/Meshes/subMesh.js.map +1 -1
  517. package/Meshes/subMesh.project.js +1 -2
  518. package/Meshes/subMesh.project.js.map +1 -1
  519. package/Meshes/thinInstanceMesh.js +5 -0
  520. package/Meshes/thinInstanceMesh.js.map +1 -1
  521. package/Meshes/trailMesh.d.ts +1 -1
  522. package/Meshes/trailMesh.js.map +1 -1
  523. package/Meshes/transformNode.js +40 -13
  524. package/Meshes/transformNode.js.map +1 -1
  525. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.d.ts +5 -0
  526. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +13 -2
  527. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  528. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +6 -12
  529. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
  530. package/Misc/PerformanceViewer/performanceViewerCollector.js +6 -6
  531. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  532. package/Misc/assetsManager.d.ts +2 -1
  533. package/Misc/assetsManager.js +15 -1
  534. package/Misc/assetsManager.js.map +1 -1
  535. package/Misc/basis.js +1 -1
  536. package/Misc/basis.js.map +1 -1
  537. package/Misc/brdfTextureTools.js +4 -1
  538. package/Misc/brdfTextureTools.js.map +1 -1
  539. package/Misc/dds.js +7 -0
  540. package/Misc/dds.js.map +1 -1
  541. package/Misc/devTools.js +1 -1
  542. package/Misc/devTools.js.map +1 -1
  543. package/Misc/environmentTextureTools.js +2 -2
  544. package/Misc/environmentTextureTools.js.map +1 -1
  545. package/Misc/fileTools.js +4 -4
  546. package/Misc/fileTools.js.map +1 -1
  547. package/Misc/index.d.ts +1 -0
  548. package/Misc/index.js +1 -0
  549. package/Misc/index.js.map +1 -1
  550. package/Misc/khronosTextureContainer2.js +4 -3
  551. package/Misc/khronosTextureContainer2.js.map +1 -1
  552. package/Misc/reflector.js +6 -6
  553. package/Misc/reflector.js.map +1 -1
  554. package/Misc/tools.js +15 -13
  555. package/Misc/tools.js.map +1 -1
  556. package/Misc/uniqueIdGenerator.js +1 -1
  557. package/Misc/uniqueIdGenerator.js.map +1 -1
  558. package/Offline/database.js +1 -1
  559. package/Offline/database.js.map +1 -1
  560. package/Particles/baseParticleSystem.d.ts +4 -1
  561. package/Particles/baseParticleSystem.js +20 -5
  562. package/Particles/baseParticleSystem.js.map +1 -1
  563. package/Particles/gpuParticleSystem.js +2 -1
  564. package/Particles/gpuParticleSystem.js.map +1 -1
  565. package/Particles/particleHelper.js +2 -2
  566. package/Particles/particleHelper.js.map +1 -1
  567. package/Physics/Plugins/ammoJSPlugin.d.ts +5 -1
  568. package/Physics/Plugins/ammoJSPlugin.js +16 -11
  569. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  570. package/Physics/physicsEngine.d.ts +1 -0
  571. package/Physics/physicsEngine.js +3 -1
  572. package/Physics/physicsEngine.js.map +1 -1
  573. package/Physics/physicsImpostor.d.ts +2 -2
  574. package/Physics/physicsImpostor.js.map +1 -1
  575. package/PostProcesses/blurPostProcess.js +5 -5
  576. package/PostProcesses/blurPostProcess.js.map +1 -1
  577. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  578. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  579. package/PostProcesses/postProcess.js +1 -1
  580. package/PostProcesses/postProcess.js.map +1 -1
  581. package/PostProcesses/postProcessManager.js +2 -2
  582. package/PostProcesses/postProcessManager.js.map +1 -1
  583. package/Probes/reflectionProbe.js +2 -2
  584. package/Probes/reflectionProbe.js.map +1 -1
  585. package/Rendering/depthPeelingRenderer.js +3 -3
  586. package/Rendering/depthPeelingRenderer.js.map +1 -1
  587. package/Rendering/geometryBufferRenderer.js +8 -8
  588. package/Rendering/geometryBufferRenderer.js.map +1 -1
  589. package/Rendering/outlineRenderer.js +1 -1
  590. package/Rendering/outlineRenderer.js.map +1 -1
  591. package/Rendering/utilityLayerRenderer.js +4 -0
  592. package/Rendering/utilityLayerRenderer.js.map +1 -1
  593. package/Shaders/ShadersInclude/instancesDeclaration.js +1 -1
  594. package/Shaders/ShadersInclude/instancesDeclaration.js.map +1 -1
  595. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +1 -1
  596. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  597. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +1 -1
  598. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
  599. package/Shaders/ShadersInclude/prePassVertex.js +1 -1
  600. package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
  601. package/Shaders/color.fragment.js +1 -1
  602. package/Shaders/color.fragment.js.map +1 -1
  603. package/Shaders/color.vertex.js +1 -1
  604. package/Shaders/color.vertex.js.map +1 -1
  605. package/Shaders/default.fragment.js +1 -1
  606. package/Shaders/default.fragment.js.map +1 -1
  607. package/Shaders/default.vertex.js +1 -1
  608. package/Shaders/default.vertex.js.map +1 -1
  609. package/Shaders/geometry.vertex.js +1 -1
  610. package/Shaders/geometry.vertex.js.map +1 -1
  611. package/Shaders/pbr.vertex.js +1 -1
  612. package/Shaders/pbr.vertex.js.map +1 -1
  613. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +1 -1
  614. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js.map +1 -1
  615. package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
  616. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  617. package/Sprites/spriteManager.js +9 -10
  618. package/Sprites/spriteManager.js.map +1 -1
  619. package/Sprites/spriteMap.js +2 -2
  620. package/Sprites/spriteMap.js.map +1 -1
  621. package/Sprites/spriteRenderer.js +1 -1
  622. package/Sprites/spriteRenderer.js.map +1 -1
  623. package/XR/features/WebXRControllerPointerSelection.js +15 -9
  624. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  625. package/XR/features/WebXRDOMOverlay.js +1 -1
  626. package/XR/features/WebXRDOMOverlay.js.map +1 -1
  627. package/XR/features/WebXRHandTracking.js +30 -30
  628. package/XR/features/WebXRHandTracking.js.map +1 -1
  629. package/XR/features/WebXRImageTracking.js +2 -2
  630. package/XR/features/WebXRImageTracking.js.map +1 -1
  631. package/XR/features/WebXRLayers.d.ts +28 -5
  632. package/XR/features/WebXRLayers.js +54 -20
  633. package/XR/features/WebXRLayers.js.map +1 -1
  634. package/XR/features/WebXRNearInteraction.d.ts +35 -3
  635. package/XR/features/WebXRNearInteraction.js +201 -40
  636. package/XR/features/WebXRNearInteraction.js.map +1 -1
  637. package/XR/motionController/webXRAbstractMotionController.js +1 -1
  638. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  639. package/XR/motionController/webXRMotionControllerManager.js +2 -2
  640. package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
  641. package/XR/motionController/webXRProfiledMotionController.js +1 -1
  642. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  643. package/XR/webXRCamera.js +17 -4
  644. package/XR/webXRCamera.js.map +1 -1
  645. package/XR/webXRDefaultExperience.js +3 -0
  646. package/XR/webXRDefaultExperience.js.map +1 -1
  647. package/XR/webXREnterExitUI.js +2 -2
  648. package/XR/webXREnterExitUI.js.map +1 -1
  649. package/XR/webXRExperienceHelper.js +3 -2
  650. package/XR/webXRExperienceHelper.js.map +1 -1
  651. package/XR/webXRFeaturesManager.js +6 -6
  652. package/XR/webXRFeaturesManager.js.map +1 -1
  653. package/XR/webXRInputSource.js +3 -3
  654. package/XR/webXRInputSource.js.map +1 -1
  655. package/XR/webXRRenderTargetTextureProvider.d.ts +3 -2
  656. package/XR/webXRRenderTargetTextureProvider.js +37 -18
  657. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  658. package/XR/webXRSessionManager.d.ts +1 -0
  659. package/XR/webXRSessionManager.js +6 -1
  660. package/XR/webXRSessionManager.js.map +1 -1
  661. package/assetContainer.d.ts +1 -1
  662. package/assetContainer.js +4 -0
  663. package/assetContainer.js.map +1 -1
  664. package/node.d.ts +1 -1
  665. package/node.js.map +1 -1
  666. package/package.json +22 -13
  667. package/scene.d.ts +5 -2
  668. package/scene.js +31 -5
  669. package/scene.js.map +1 -1
  670. package/DeviceInput/Implementations/nativeDeviceInputSystem.js.map +0 -1
  671. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +0 -1
  672. package/DeviceInput/Interfaces/inputInterfaces.js.map +0 -1
  673. package/DeviceInput/deviceInputSystem.d.ts +0 -60
  674. package/DeviceInput/deviceInputSystem.js +0 -84
  675. package/DeviceInput/deviceInputSystem.js.map +0 -1
@@ -154,7 +154,7 @@ var CurrentScreenBlock = /** @class */ (function (_super) {
154
154
  }
155
155
  this._mainUVName = "vMain" + uvInput.associatedVariableName;
156
156
  state._emitVaryingFromString(this._mainUVName, "vec2");
157
- state.compilationString += this._mainUVName + " = " + uvInput.associatedVariableName + ".xy;\r\n";
157
+ state.compilationString += "".concat(this._mainUVName, " = ").concat(uvInput.associatedVariableName, ".xy;\r\n");
158
158
  if (!this._outputs.some(function (o) { return o.isConnectedInVertexShader; })) {
159
159
  return;
160
160
  }
@@ -173,14 +173,14 @@ var CurrentScreenBlock = /** @class */ (function (_super) {
173
173
  if (state.target === NodeMaterialBlockTargets.Fragment) {
174
174
  return;
175
175
  }
176
- state.compilationString += "vec4 " + this._tempTextureRead + " = texture2D(" + this._samplerName + ", " + uvInput.associatedVariableName + ");\r\n";
176
+ state.compilationString += "vec4 ".concat(this._tempTextureRead, " = texture2D(").concat(this._samplerName, ", ").concat(uvInput.associatedVariableName, ");\r\n");
177
177
  return;
178
178
  }
179
179
  if (this.uv.ownerBlock.target === NodeMaterialBlockTargets.Fragment) {
180
- state.compilationString += "vec4 " + this._tempTextureRead + " = texture2D(" + this._samplerName + ", " + uvInput.associatedVariableName + ");\r\n";
180
+ state.compilationString += "vec4 ".concat(this._tempTextureRead, " = texture2D(").concat(this._samplerName, ", ").concat(uvInput.associatedVariableName, ");\r\n");
181
181
  return;
182
182
  }
183
- state.compilationString += "vec4 " + this._tempTextureRead + " = texture2D(" + this._samplerName + ", " + this._mainUVName + ");\r\n";
183
+ state.compilationString += "vec4 ".concat(this._tempTextureRead, " = texture2D(").concat(this._samplerName, ", ").concat(this._mainUVName, ");\r\n");
184
184
  };
185
185
  CurrentScreenBlock.prototype._writeOutput = function (state, output, swizzle, vertexMode) {
186
186
  if (vertexMode === void 0) { vertexMode = false; }
@@ -188,19 +188,19 @@ var CurrentScreenBlock = /** @class */ (function (_super) {
188
188
  if (state.target === NodeMaterialBlockTargets.Fragment) {
189
189
  return;
190
190
  }
191
- state.compilationString += this._declareOutput(output, state) + " = " + this._tempTextureRead + "." + swizzle + ";\r\n";
191
+ state.compilationString += "".concat(this._declareOutput(output, state), " = ").concat(this._tempTextureRead, ".").concat(swizzle, ";\r\n");
192
192
  return;
193
193
  }
194
194
  if (this.uv.ownerBlock.target === NodeMaterialBlockTargets.Fragment) {
195
- state.compilationString += this._declareOutput(output, state) + " = " + this._tempTextureRead + "." + swizzle + ";\r\n";
195
+ state.compilationString += "".concat(this._declareOutput(output, state), " = ").concat(this._tempTextureRead, ".").concat(swizzle, ";\r\n");
196
196
  return;
197
197
  }
198
- state.compilationString += this._declareOutput(output, state) + " = " + this._tempTextureRead + "." + swizzle + ";\r\n";
199
- state.compilationString += "#ifdef " + this._linearDefineName + "\r\n";
200
- state.compilationString += output.associatedVariableName + " = toGammaSpace(" + output.associatedVariableName + ");\r\n";
198
+ state.compilationString += "".concat(this._declareOutput(output, state), " = ").concat(this._tempTextureRead, ".").concat(swizzle, ";\r\n");
199
+ state.compilationString += "#ifdef ".concat(this._linearDefineName, "\r\n");
200
+ state.compilationString += "".concat(output.associatedVariableName, " = toGammaSpace(").concat(output.associatedVariableName, ");\r\n");
201
201
  state.compilationString += "#endif\r\n";
202
- state.compilationString += "#ifdef " + this._gammaDefineName + "\r\n";
203
- state.compilationString += output.associatedVariableName + " = toLinearSpace(" + output.associatedVariableName + ");\r\n";
202
+ state.compilationString += "#ifdef ".concat(this._gammaDefineName, "\r\n");
203
+ state.compilationString += "".concat(output.associatedVariableName, " = toLinearSpace(").concat(output.associatedVariableName, ");\r\n");
204
204
  state.compilationString += "#endif\r\n";
205
205
  };
206
206
  CurrentScreenBlock.prototype._buildBlock = function (state) {
@@ -228,7 +228,7 @@ var CurrentScreenBlock = /** @class */ (function (_super) {
228
228
  state._emit2DSampler(this._samplerName);
229
229
  this._linearDefineName = state._getFreeDefineName("ISLINEAR");
230
230
  this._gammaDefineName = state._getFreeDefineName("ISGAMMA");
231
- var comments = "//" + this.name;
231
+ var comments = "//".concat(this.name);
232
232
  state._emitFunctionFromInclude("helperFunctions", comments);
233
233
  this._writeTextureRead(state);
234
234
  for (var _i = 0, _a = this._outputs; _i < _a.length; _i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"currentScreenBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Dual/currentScreenBlock.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 { NodeMaterialDefines } from '../../nodeMaterial';\r\nimport { BaseTexture } from '../../../Textures/baseTexture';\r\nimport { Nullable } from '../../../../types';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { Texture } from '../../../Textures/texture';\r\nimport { Scene } from '../../../../scene';\r\nimport { InputBlock } from '../Input/inputBlock';\r\n\r\ndeclare type NodeMaterial = import(\"../../nodeMaterial\").NodeMaterial;\r\n\r\n/**\r\n * Base block used as input for post process\r\n */\r\nexport class CurrentScreenBlock extends NodeMaterialBlock {\r\n\r\n private _samplerName = \"textureSampler\";\r\n private _linearDefineName: string;\r\n private _gammaDefineName: string;\r\n private _mainUVName: string;\r\n private _tempTextureRead: string;\r\n\r\n /**\r\n * Gets or sets the texture associated with the node\r\n */\r\n public texture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if content needs to be converted to gamma space\r\n */\r\n public convertToGammaSpace = false;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if content needs to be converted to linear space\r\n */\r\n public convertToLinearSpace = false;\r\n\r\n /**\r\n * Create a new CurrentScreenBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.VertexAndFragment);\r\n\r\n this._isUnique = false;\r\n\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2, false, NodeMaterialBlockTargets.VertexAndFragment);\r\n\r\n this.registerOutput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"r\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"g\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"b\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector4);\r\n\r\n this._inputs[0]._prioritizeVertex = false;\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 \"CurrentScreenBlock\";\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[0];\r\n }\r\n\r\n /**\r\n * Gets the rgba output component\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb output component\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the r output component\r\n */\r\n public get r(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the g output component\r\n */\r\n public get g(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the b output component\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the a output component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\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(\"textureSampler\");\r\n }\r\n\r\n public get target() {\r\n if (!this.uv.isConnected) {\r\n return NodeMaterialBlockTargets.VertexAndFragment;\r\n }\r\n\r\n if (this.uv.sourceBlock!.isInput) {\r\n return NodeMaterialBlockTargets.VertexAndFragment;\r\n }\r\n\r\n return NodeMaterialBlockTargets.Fragment;\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n defines.setValue(this._linearDefineName, this.convertToGammaSpace, true);\r\n defines.setValue(this._gammaDefineName, this.convertToLinearSpace, true);\r\n }\r\n\r\n public isReady() {\r\n if (this.texture && !this.texture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private _injectVertexCode(state: NodeMaterialBuildState) {\r\n let uvInput = this.uv;\r\n\r\n if (uvInput.connectedPoint!.ownerBlock.isInput) {\r\n let uvInputOwnerBlock = uvInput.connectedPoint!.ownerBlock as InputBlock;\r\n\r\n if (!uvInputOwnerBlock.isAttribute) {\r\n state._emitUniformFromString(uvInput.associatedVariableName, \"vec2\");\r\n }\r\n }\r\n\r\n this._mainUVName = \"vMain\" + uvInput.associatedVariableName;\r\n\r\n state._emitVaryingFromString(this._mainUVName, \"vec2\");\r\n\r\n state.compilationString += `${this._mainUVName} = ${uvInput.associatedVariableName}.xy;\\r\\n`;\r\n\r\n if (!this._outputs.some((o) => o.isConnectedInVertexShader)) {\r\n return;\r\n }\r\n\r\n this._writeTextureRead(state, true);\r\n\r\n for (var output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n this._writeOutput(state, output, output.name, true);\r\n }\r\n }\r\n }\r\n\r\n private _writeTextureRead(state: NodeMaterialBuildState, vertexMode = false) {\r\n let uvInput = this.uv;\r\n\r\n if (vertexMode) {\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n return;\r\n }\r\n\r\n state.compilationString += `vec4 ${this._tempTextureRead} = texture2D(${this._samplerName}, ${uvInput.associatedVariableName});\\r\\n`;\r\n return;\r\n }\r\n\r\n if (this.uv.ownerBlock.target === NodeMaterialBlockTargets.Fragment) {\r\n state.compilationString += `vec4 ${this._tempTextureRead} = texture2D(${this._samplerName}, ${uvInput.associatedVariableName});\\r\\n`;\r\n return;\r\n }\r\n\r\n state.compilationString += `vec4 ${this._tempTextureRead} = texture2D(${this._samplerName}, ${this._mainUVName});\\r\\n`;\r\n }\r\n\r\n private _writeOutput(state: NodeMaterialBuildState, output: NodeMaterialConnectionPoint, swizzle: string, vertexMode = false) {\r\n if (vertexMode) {\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n return;\r\n }\r\n\r\n state.compilationString += `${this._declareOutput(output, state)} = ${this._tempTextureRead}.${swizzle};\\r\\n`;\r\n\r\n return;\r\n }\r\n\r\n if (this.uv.ownerBlock.target === NodeMaterialBlockTargets.Fragment) {\r\n state.compilationString += `${this._declareOutput(output, state)} = ${this._tempTextureRead}.${swizzle};\\r\\n`;\r\n return;\r\n }\r\n\r\n state.compilationString += `${this._declareOutput(output, state)} = ${this._tempTextureRead}.${swizzle};\\r\\n`;\r\n\r\n state.compilationString += `#ifdef ${this._linearDefineName}\\r\\n`;\r\n state.compilationString += `${output.associatedVariableName} = toGammaSpace(${output.associatedVariableName});\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n\r\n state.compilationString += `#ifdef ${this._gammaDefineName}\\r\\n`;\r\n state.compilationString += `${output.associatedVariableName} = toLinearSpace(${output.associatedVariableName});\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._tempTextureRead = state._getFreeVariableName(\"tempTextureRead\");\r\n\r\n if (state.sharedData.blockingBlocks.indexOf(this) < 0) {\r\n state.sharedData.blockingBlocks.push(this);\r\n }\r\n if (state.sharedData.textureBlocks.indexOf(this) < 0) {\r\n state.sharedData.textureBlocks.push(this);\r\n }\r\n if (state.sharedData.blocksWithDefines.indexOf(this) < 0) {\r\n state.sharedData.blocksWithDefines.push(this);\r\n }\r\n\r\n if (state.target !== NodeMaterialBlockTargets.Fragment) {\r\n // Vertex\r\n state._emit2DSampler(this._samplerName);\r\n this._injectVertexCode(state);\r\n return;\r\n }\r\n\r\n // Fragment\r\n if (!this._outputs.some((o) => o.isConnectedInFragmentShader)) {\r\n return;\r\n }\r\n\r\n state._emit2DSampler(this._samplerName);\r\n\r\n this._linearDefineName = state._getFreeDefineName(\"ISLINEAR\");\r\n this._gammaDefineName = state._getFreeDefineName(\"ISGAMMA\");\r\n\r\n let comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n this._writeTextureRead(state);\r\n\r\n for (var output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n this._writeOutput(state, output, output.name);\r\n }\r\n }\r\n\r\n return this;\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 if (this.texture && !this.texture.isRenderTarget) {\r\n serializationObject.texture = this.texture.serialize();\r\n }\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\r\n if (serializationObject.texture) {\r\n rootUrl = serializationObject.texture.url.indexOf(\"data:\") === 0 ? \"\" : rootUrl;\r\n this.texture = Texture.Parse(serializationObject.texture, scene, rootUrl) as Texture;\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CurrentScreenBlock\", CurrentScreenBlock);"]}
1
+ {"version":3,"file":"currentScreenBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Dual/currentScreenBlock.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 { NodeMaterialDefines } from '../../nodeMaterial';\r\nimport { BaseTexture } from '../../../Textures/baseTexture';\r\nimport { Nullable } from '../../../../types';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { Texture } from '../../../Textures/texture';\r\nimport { Scene } from '../../../../scene';\r\nimport { InputBlock } from '../Input/inputBlock';\r\n\r\ndeclare type NodeMaterial = import(\"../../nodeMaterial\").NodeMaterial;\r\n\r\n/**\r\n * Base block used as input for post process\r\n */\r\nexport class CurrentScreenBlock extends NodeMaterialBlock {\r\n\r\n private _samplerName = \"textureSampler\";\r\n private _linearDefineName: string;\r\n private _gammaDefineName: string;\r\n private _mainUVName: string;\r\n private _tempTextureRead: string;\r\n\r\n /**\r\n * Gets or sets the texture associated with the node\r\n */\r\n public texture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if content needs to be converted to gamma space\r\n */\r\n public convertToGammaSpace = false;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if content needs to be converted to linear space\r\n */\r\n public convertToLinearSpace = false;\r\n\r\n /**\r\n * Create a new CurrentScreenBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.VertexAndFragment);\r\n\r\n this._isUnique = false;\r\n\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2, false, NodeMaterialBlockTargets.VertexAndFragment);\r\n\r\n this.registerOutput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"r\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"g\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"b\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector4);\r\n\r\n this._inputs[0]._prioritizeVertex = false;\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 \"CurrentScreenBlock\";\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[0];\r\n }\r\n\r\n /**\r\n * Gets the rgba output component\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb output component\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the r output component\r\n */\r\n public get r(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the g output component\r\n */\r\n public get g(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the b output component\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the a output component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\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(\"textureSampler\");\r\n }\r\n\r\n public get target() {\r\n if (!this.uv.isConnected) {\r\n return NodeMaterialBlockTargets.VertexAndFragment;\r\n }\r\n\r\n if (this.uv.sourceBlock!.isInput) {\r\n return NodeMaterialBlockTargets.VertexAndFragment;\r\n }\r\n\r\n return NodeMaterialBlockTargets.Fragment;\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n defines.setValue(this._linearDefineName, this.convertToGammaSpace, true);\r\n defines.setValue(this._gammaDefineName, this.convertToLinearSpace, true);\r\n }\r\n\r\n public isReady() {\r\n if (this.texture && !this.texture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private _injectVertexCode(state: NodeMaterialBuildState) {\r\n let uvInput = this.uv;\r\n\r\n if (uvInput.connectedPoint!.ownerBlock.isInput) {\r\n let uvInputOwnerBlock = uvInput.connectedPoint!.ownerBlock as InputBlock;\r\n\r\n if (!uvInputOwnerBlock.isAttribute) {\r\n state._emitUniformFromString(uvInput.associatedVariableName, \"vec2\");\r\n }\r\n }\r\n\r\n this._mainUVName = \"vMain\" + uvInput.associatedVariableName;\r\n\r\n state._emitVaryingFromString(this._mainUVName, \"vec2\");\r\n\r\n state.compilationString += `${this._mainUVName} = ${uvInput.associatedVariableName}.xy;\\r\\n`;\r\n\r\n if (!this._outputs.some((o) => o.isConnectedInVertexShader)) {\r\n return;\r\n }\r\n\r\n this._writeTextureRead(state, true);\r\n\r\n for (var output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n this._writeOutput(state, output, output.name, true);\r\n }\r\n }\r\n }\r\n\r\n private _writeTextureRead(state: NodeMaterialBuildState, vertexMode = false) {\r\n let uvInput = this.uv;\r\n\r\n if (vertexMode) {\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n return;\r\n }\r\n\r\n state.compilationString += `vec4 ${this._tempTextureRead} = texture2D(${this._samplerName}, ${uvInput.associatedVariableName});\\r\\n`;\r\n return;\r\n }\r\n\r\n if (this.uv.ownerBlock.target === NodeMaterialBlockTargets.Fragment) {\r\n state.compilationString += `vec4 ${this._tempTextureRead} = texture2D(${this._samplerName}, ${uvInput.associatedVariableName});\\r\\n`;\r\n return;\r\n }\r\n\r\n state.compilationString += `vec4 ${this._tempTextureRead} = texture2D(${this._samplerName}, ${this._mainUVName});\\r\\n`;\r\n }\r\n\r\n private _writeOutput(state: NodeMaterialBuildState, output: NodeMaterialConnectionPoint, swizzle: string, vertexMode = false) {\r\n if (vertexMode) {\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n return;\r\n }\r\n\r\n state.compilationString += `${this._declareOutput(output, state)} = ${this._tempTextureRead}.${swizzle};\\r\\n`;\r\n\r\n return;\r\n }\r\n\r\n if (this.uv.ownerBlock.target === NodeMaterialBlockTargets.Fragment) {\r\n state.compilationString += `${this._declareOutput(output, state)} = ${this._tempTextureRead}.${swizzle};\\r\\n`;\r\n return;\r\n }\r\n\r\n state.compilationString += `${this._declareOutput(output, state)} = ${this._tempTextureRead}.${swizzle};\\r\\n`;\r\n\r\n state.compilationString += `#ifdef ${this._linearDefineName}\\r\\n`;\r\n state.compilationString += `${output.associatedVariableName} = toGammaSpace(${output.associatedVariableName});\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n\r\n state.compilationString += `#ifdef ${this._gammaDefineName}\\r\\n`;\r\n state.compilationString += `${output.associatedVariableName} = toLinearSpace(${output.associatedVariableName});\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._tempTextureRead = state._getFreeVariableName(\"tempTextureRead\");\r\n\r\n if (state.sharedData.blockingBlocks.indexOf(this) < 0) {\r\n state.sharedData.blockingBlocks.push(this);\r\n }\r\n if (state.sharedData.textureBlocks.indexOf(this) < 0) {\r\n state.sharedData.textureBlocks.push(this);\r\n }\r\n if (state.sharedData.blocksWithDefines.indexOf(this) < 0) {\r\n state.sharedData.blocksWithDefines.push(this);\r\n }\r\n\r\n if (state.target !== NodeMaterialBlockTargets.Fragment) {\r\n // Vertex\r\n state._emit2DSampler(this._samplerName);\r\n this._injectVertexCode(state);\r\n return;\r\n }\r\n\r\n // Fragment\r\n if (!this._outputs.some((o) => o.isConnectedInFragmentShader)) {\r\n return;\r\n }\r\n\r\n state._emit2DSampler(this._samplerName);\r\n\r\n this._linearDefineName = state._getFreeDefineName(\"ISLINEAR\");\r\n this._gammaDefineName = state._getFreeDefineName(\"ISGAMMA\");\r\n\r\n let comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n this._writeTextureRead(state);\r\n\r\n for (var output of this._outputs) {\r\n if (output.hasEndpoints) {\r\n this._writeOutput(state, output, output.name);\r\n }\r\n }\r\n\r\n return this;\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 if (this.texture && !this.texture.isRenderTarget) {\r\n serializationObject.texture = this.texture.serialize();\r\n }\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\r\n if (serializationObject.texture) {\r\n rootUrl = serializationObject.texture.url.indexOf(\"data:\") === 0 ? \"\" : rootUrl;\r\n this.texture = Texture.Parse(serializationObject.texture, scene, rootUrl) as Texture;\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CurrentScreenBlock\", CurrentScreenBlock);"]}
@@ -120,7 +120,7 @@ var FogBlock = /** @class */ (function (_super) {
120
120
  if (state.target === NodeMaterialBlockTargets.Fragment) {
121
121
  state.sharedData.blocksWithDefines.push(this);
122
122
  state.sharedData.bindableBlocks.push(this);
123
- state._emitFunctionFromInclude("fogFragmentDeclaration", "//" + this.name, {
123
+ state._emitFunctionFromInclude("fogFragmentDeclaration", "//".concat(this.name), {
124
124
  removeUniforms: true,
125
125
  removeVaryings: true,
126
126
  removeIfDef: false,
@@ -133,9 +133,9 @@ var FogBlock = /** @class */ (function (_super) {
133
133
  var output = this._outputs[0];
134
134
  state._emitUniformFromString(this._fogParameters, "vec4");
135
135
  state.compilationString += "#ifdef FOG\r\n";
136
- state.compilationString += "float " + tempFogVariablename + " = CalcFogFactor(" + this._fogDistanceName + ", " + this._fogParameters + ");\r\n";
137
- state.compilationString += this._declareOutput(output, state) + (" = " + tempFogVariablename + " * " + color.associatedVariableName + ".rgb + (1.0 - " + tempFogVariablename + ") * " + fogColor.associatedVariableName + ".rgb;\r\n");
138
- state.compilationString += "#else\r\n" + this._declareOutput(output, state) + " = " + color.associatedVariableName + ".rgb;\r\n";
136
+ state.compilationString += "float ".concat(tempFogVariablename, " = CalcFogFactor(").concat(this._fogDistanceName, ", ").concat(this._fogParameters, ");\r\n");
137
+ state.compilationString += this._declareOutput(output, state) + " = ".concat(tempFogVariablename, " * ").concat(color.associatedVariableName, ".rgb + (1.0 - ").concat(tempFogVariablename, ") * ").concat(fogColor.associatedVariableName, ".rgb;\r\n");
138
+ state.compilationString += "#else\r\n".concat(this._declareOutput(output, state), " = ").concat(color.associatedVariableName, ".rgb;\r\n");
139
139
  state.compilationString += "#endif\r\n";
140
140
  }
141
141
  else {
@@ -143,7 +143,7 @@ var FogBlock = /** @class */ (function (_super) {
143
143
  var view = this.view;
144
144
  this._fogDistanceName = state._getFreeVariableName("vFogDistance");
145
145
  state._emitVaryingFromString(this._fogDistanceName, "vec3");
146
- state.compilationString += this._fogDistanceName + " = (" + view.associatedVariableName + " * " + worldPos.associatedVariableName + ").xyz;\r\n";
146
+ state.compilationString += "".concat(this._fogDistanceName, " = (").concat(view.associatedVariableName, " * ").concat(worldPos.associatedVariableName, ").xyz;\r\n");
147
147
  }
148
148
  return this;
149
149
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fogBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Dual/fogBlock.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 { NodeMaterialSystemValues } from '../../Enums/nodeMaterialSystemValues';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { Mesh } from '../../../../Meshes/mesh';\r\nimport { Effect } from '../../../effect';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { AbstractMesh } from '../../../../Meshes/abstractMesh';\r\nimport { MaterialHelper } from '../../../materialHelper';\r\nimport { NodeMaterial, NodeMaterialDefines } from '../../nodeMaterial';\r\nimport { InputBlock } from '../Input/inputBlock';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\n\r\nimport \"../../../../Shaders/ShadersInclude/fogFragmentDeclaration\";\r\n\r\n/**\r\n * Block used to add support for scene fog\r\n */\r\nexport class FogBlock extends NodeMaterialBlock {\r\n private _fogDistanceName: string;\r\n private _fogParameters: string;\r\n\r\n /**\r\n * Create a new FogBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.VertexAndFragment, false);\r\n\r\n // Vertex\r\n this.registerInput(\"worldPosition\", NodeMaterialBlockConnectionPointTypes.Vector4, false, NodeMaterialBlockTargets.Vertex);\r\n this.registerInput(\"view\", NodeMaterialBlockConnectionPointTypes.Matrix, false, NodeMaterialBlockTargets.Vertex);\r\n\r\n // Fragment\r\n this.registerInput(\"input\", NodeMaterialBlockConnectionPointTypes.Color3, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"fogColor\", NodeMaterialBlockConnectionPointTypes.Color3, false, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.input.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.fogColor.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Color4);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"FogBlock\";\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 view input component\r\n */\r\n public get view(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the color input component\r\n */\r\n public get input(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the fog color input component\r\n */\r\n public get fogColor(): 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 public autoConfigure(material: NodeMaterial) {\r\n if (!this.view.isConnected) {\r\n let viewInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.View);\r\n\r\n if (!viewInput) {\r\n viewInput = new InputBlock(\"view\");\r\n viewInput.setAsSystemValue(NodeMaterialSystemValues.View);\r\n }\r\n viewInput.output.connectTo(this.view);\r\n }\r\n if (!this.fogColor.isConnected) {\r\n let fogColorInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.FogColor);\r\n\r\n if (!fogColorInput) {\r\n fogColorInput = new InputBlock(\"fogColor\", undefined, NodeMaterialBlockConnectionPointTypes.Color3);\r\n fogColorInput.setAsSystemValue(NodeMaterialSystemValues.FogColor);\r\n }\r\n fogColorInput.output.connectTo(this.fogColor);\r\n }\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n let scene = mesh.getScene();\r\n defines.setValue(\"FOG\", nodeMaterial.fogEnabled && MaterialHelper.GetFogState(mesh, scene));\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 const scene = mesh.getScene();\r\n effect.setFloat4(this._fogParameters, scene.fogMode, scene.fogStart, scene.fogEnd, scene.fogDensity);\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n state.sharedData.blocksWithDefines.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n state._emitFunctionFromInclude(\"fogFragmentDeclaration\", `//${this.name}`, {\r\n removeUniforms: true,\r\n removeVaryings: true,\r\n removeIfDef: false,\r\n replaceStrings: [{ search: /float CalcFogFactor\\(\\)/, replace: \"float CalcFogFactor(vec3 vFogDistance, vec4 vFogInfos)\" }]\r\n });\r\n\r\n let tempFogVariablename = state._getFreeVariableName(\"fog\");\r\n let color = this.input;\r\n let fogColor = this.fogColor;\r\n this._fogParameters = state._getFreeVariableName(\"fogParameters\");\r\n let output = this._outputs[0];\r\n\r\n state._emitUniformFromString(this._fogParameters, \"vec4\");\r\n\r\n state.compilationString += `#ifdef FOG\\r\\n`;\r\n state.compilationString += `float ${tempFogVariablename} = CalcFogFactor(${this._fogDistanceName}, ${this._fogParameters});\\r\\n`;\r\n state.compilationString += this._declareOutput(output, state) + ` = ${tempFogVariablename} * ${color.associatedVariableName}.rgb + (1.0 - ${tempFogVariablename}) * ${fogColor.associatedVariableName}.rgb;\\r\\n`;\r\n state.compilationString += `#else\\r\\n${this._declareOutput(output, state)} = ${color.associatedVariableName}.rgb;\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n } else {\r\n let worldPos = this.worldPosition;\r\n let view = this.view;\r\n this._fogDistanceName = state._getFreeVariableName(\"vFogDistance\");\r\n state._emitVaryingFromString(this._fogDistanceName, \"vec3\");\r\n state.compilationString += `${this._fogDistanceName} = (${view.associatedVariableName} * ${worldPos.associatedVariableName}).xyz;\\r\\n`;\r\n }\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FogBlock\", FogBlock);"]}
1
+ {"version":3,"file":"fogBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Dual/fogBlock.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 { NodeMaterialSystemValues } from '../../Enums/nodeMaterialSystemValues';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { Mesh } from '../../../../Meshes/mesh';\r\nimport { Effect } from '../../../effect';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { AbstractMesh } from '../../../../Meshes/abstractMesh';\r\nimport { MaterialHelper } from '../../../materialHelper';\r\nimport { NodeMaterial, NodeMaterialDefines } from '../../nodeMaterial';\r\nimport { InputBlock } from '../Input/inputBlock';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\n\r\nimport \"../../../../Shaders/ShadersInclude/fogFragmentDeclaration\";\r\n\r\n/**\r\n * Block used to add support for scene fog\r\n */\r\nexport class FogBlock extends NodeMaterialBlock {\r\n private _fogDistanceName: string;\r\n private _fogParameters: string;\r\n\r\n /**\r\n * Create a new FogBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.VertexAndFragment, false);\r\n\r\n // Vertex\r\n this.registerInput(\"worldPosition\", NodeMaterialBlockConnectionPointTypes.Vector4, false, NodeMaterialBlockTargets.Vertex);\r\n this.registerInput(\"view\", NodeMaterialBlockConnectionPointTypes.Matrix, false, NodeMaterialBlockTargets.Vertex);\r\n\r\n // Fragment\r\n this.registerInput(\"input\", NodeMaterialBlockConnectionPointTypes.Color3, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"fogColor\", NodeMaterialBlockConnectionPointTypes.Color3, false, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.input.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.fogColor.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Color4);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"FogBlock\";\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 view input component\r\n */\r\n public get view(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the color input component\r\n */\r\n public get input(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the fog color input component\r\n */\r\n public get fogColor(): 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 public autoConfigure(material: NodeMaterial) {\r\n if (!this.view.isConnected) {\r\n let viewInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.View);\r\n\r\n if (!viewInput) {\r\n viewInput = new InputBlock(\"view\");\r\n viewInput.setAsSystemValue(NodeMaterialSystemValues.View);\r\n }\r\n viewInput.output.connectTo(this.view);\r\n }\r\n if (!this.fogColor.isConnected) {\r\n let fogColorInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.FogColor);\r\n\r\n if (!fogColorInput) {\r\n fogColorInput = new InputBlock(\"fogColor\", undefined, NodeMaterialBlockConnectionPointTypes.Color3);\r\n fogColorInput.setAsSystemValue(NodeMaterialSystemValues.FogColor);\r\n }\r\n fogColorInput.output.connectTo(this.fogColor);\r\n }\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n let scene = mesh.getScene();\r\n defines.setValue(\"FOG\", nodeMaterial.fogEnabled && MaterialHelper.GetFogState(mesh, scene));\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 const scene = mesh.getScene();\r\n effect.setFloat4(this._fogParameters, scene.fogMode, scene.fogStart, scene.fogEnd, scene.fogDensity);\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n state.sharedData.blocksWithDefines.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n state._emitFunctionFromInclude(\"fogFragmentDeclaration\", `//${this.name}`, {\r\n removeUniforms: true,\r\n removeVaryings: true,\r\n removeIfDef: false,\r\n replaceStrings: [{ search: /float CalcFogFactor\\(\\)/, replace: \"float CalcFogFactor(vec3 vFogDistance, vec4 vFogInfos)\" }]\r\n });\r\n\r\n let tempFogVariablename = state._getFreeVariableName(\"fog\");\r\n let color = this.input;\r\n let fogColor = this.fogColor;\r\n this._fogParameters = state._getFreeVariableName(\"fogParameters\");\r\n let output = this._outputs[0];\r\n\r\n state._emitUniformFromString(this._fogParameters, \"vec4\");\r\n\r\n state.compilationString += `#ifdef FOG\\r\\n`;\r\n state.compilationString += `float ${tempFogVariablename} = CalcFogFactor(${this._fogDistanceName}, ${this._fogParameters});\\r\\n`;\r\n state.compilationString += this._declareOutput(output, state) + ` = ${tempFogVariablename} * ${color.associatedVariableName}.rgb + (1.0 - ${tempFogVariablename}) * ${fogColor.associatedVariableName}.rgb;\\r\\n`;\r\n state.compilationString += `#else\\r\\n${this._declareOutput(output, state)} = ${color.associatedVariableName}.rgb;\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n } else {\r\n let worldPos = this.worldPosition;\r\n let view = this.view;\r\n this._fogDistanceName = state._getFreeVariableName(\"vFogDistance\");\r\n state._emitVaryingFromString(this._fogDistanceName, \"vec3\");\r\n state.compilationString += `${this._fogDistanceName} = (${view.associatedVariableName} * ${worldPos.associatedVariableName}).xyz;\\r\\n`;\r\n }\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FogBlock\", FogBlock);"]}
@@ -5,9 +5,9 @@ import { NodeMaterialConnectionPointDirection } from '../../nodeMaterialBlockCon
5
5
  import { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets.js';
6
6
  import { RegisterClass } from '../../../../Misc/typeStore.js';
7
7
  import { Texture } from '../../../Textures/texture.js';
8
- import { Engine } from '../../../../Engines/engine.js';
9
8
  import { NodeMaterial } from '../../nodeMaterial.js';
10
9
  import { NodeMaterialConnectionPointCustomObject } from '../../nodeMaterialConnectionPointCustomObject.js';
10
+ import { EngineStore } from '../../../../Engines/engineStore.js';
11
11
  /**
12
12
  * Block used to provide an image for a TextureBlock
13
13
  */
@@ -35,7 +35,7 @@ var ImageSourceBlock = /** @class */ (function (_super) {
35
35
  if (this._texture === texture) {
36
36
  return;
37
37
  }
38
- var scene = (_a = texture === null || texture === void 0 ? void 0 : texture.getScene()) !== null && _a !== void 0 ? _a : Engine.LastCreatedScene;
38
+ var scene = (_a = texture === null || texture === void 0 ? void 0 : texture.getScene()) !== null && _a !== void 0 ? _a : EngineStore.LastCreatedScene;
39
39
  if (!texture && scene) {
40
40
  scene.markAllMaterialsAsDirty(1, function (mat) {
41
41
  return mat.hasTexture(_this._texture);
@@ -107,17 +107,17 @@ var ImageSourceBlock = /** @class */ (function (_super) {
107
107
  if (!this.texture) {
108
108
  return codeString;
109
109
  }
110
- codeString += this._codeVariableName + ".texture = new BABYLON.Texture(\"" + this.texture.name + "\", null, " + this.texture.noMipmap + ", " + this.texture.invertY + ", " + this.texture.samplingMode + ");\r\n";
111
- codeString += this._codeVariableName + ".texture.wrapU = " + this.texture.wrapU + ";\r\n";
112
- codeString += this._codeVariableName + ".texture.wrapV = " + this.texture.wrapV + ";\r\n";
113
- codeString += this._codeVariableName + ".texture.uAng = " + this.texture.uAng + ";\r\n";
114
- codeString += this._codeVariableName + ".texture.vAng = " + this.texture.vAng + ";\r\n";
115
- codeString += this._codeVariableName + ".texture.wAng = " + this.texture.wAng + ";\r\n";
116
- codeString += this._codeVariableName + ".texture.uOffset = " + this.texture.uOffset + ";\r\n";
117
- codeString += this._codeVariableName + ".texture.vOffset = " + this.texture.vOffset + ";\r\n";
118
- codeString += this._codeVariableName + ".texture.uScale = " + this.texture.uScale + ";\r\n";
119
- codeString += this._codeVariableName + ".texture.vScale = " + this.texture.vScale + ";\r\n";
120
- codeString += this._codeVariableName + ".texture.coordinatesMode = " + this.texture.coordinatesMode + ";\r\n";
110
+ codeString += "".concat(this._codeVariableName, ".texture = new BABYLON.Texture(\"").concat(this.texture.name, "\", null, ").concat(this.texture.noMipmap, ", ").concat(this.texture.invertY, ", ").concat(this.texture.samplingMode, ");\r\n");
111
+ codeString += "".concat(this._codeVariableName, ".texture.wrapU = ").concat(this.texture.wrapU, ";\r\n");
112
+ codeString += "".concat(this._codeVariableName, ".texture.wrapV = ").concat(this.texture.wrapV, ";\r\n");
113
+ codeString += "".concat(this._codeVariableName, ".texture.uAng = ").concat(this.texture.uAng, ";\r\n");
114
+ codeString += "".concat(this._codeVariableName, ".texture.vAng = ").concat(this.texture.vAng, ";\r\n");
115
+ codeString += "".concat(this._codeVariableName, ".texture.wAng = ").concat(this.texture.wAng, ";\r\n");
116
+ codeString += "".concat(this._codeVariableName, ".texture.uOffset = ").concat(this.texture.uOffset, ";\r\n");
117
+ codeString += "".concat(this._codeVariableName, ".texture.vOffset = ").concat(this.texture.vOffset, ";\r\n");
118
+ codeString += "".concat(this._codeVariableName, ".texture.uScale = ").concat(this.texture.uScale, ";\r\n");
119
+ codeString += "".concat(this._codeVariableName, ".texture.vScale = ").concat(this.texture.vScale, ";\r\n");
120
+ codeString += "".concat(this._codeVariableName, ".texture.coordinatesMode = ").concat(this.texture.coordinatesMode, ";\r\n");
121
121
  return codeString;
122
122
  };
123
123
  ImageSourceBlock.prototype.serialize = function () {
@@ -1 +1 @@
1
- {"version":3,"file":"imageSourceBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Dual/imageSourceBlock.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, NodeMaterialConnectionPointDirection } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { Nullable } from '../../../../types';\r\nimport { Texture } from '../../../Textures/texture';\r\nimport { Engine } from '../../../../Engines/engine';\r\n\r\nimport { Effect } from '../../../effect';\r\nimport { NodeMaterial } from '../../nodeMaterial';\r\nimport { Mesh } from '../../../../Meshes/mesh';\r\nimport { Scene } from '../../../../scene';\r\nimport { NodeMaterialConnectionPointCustomObject } from '../../nodeMaterialConnectionPointCustomObject';\r\n/**\r\n * Block used to provide an image for a TextureBlock\r\n */\r\nexport class ImageSourceBlock extends NodeMaterialBlock {\r\n private _samplerName: string;\r\n protected _texture: Nullable<Texture>;\r\n /**\r\n * Gets or sets the texture associated with the node\r\n */\r\n public get texture(): Nullable<Texture> {\r\n return this._texture;\r\n }\r\n\r\n public set texture(texture: Nullable<Texture>) {\r\n if (this._texture === texture) {\r\n return;\r\n }\r\n\r\n const scene = texture?.getScene() ?? Engine.LastCreatedScene;\r\n\r\n if (!texture && scene) {\r\n scene.markAllMaterialsAsDirty(1, (mat) => {\r\n return mat.hasTexture(this._texture!);\r\n });\r\n }\r\n\r\n this._texture = texture;\r\n\r\n if (texture && scene) {\r\n scene.markAllMaterialsAsDirty(1, (mat) => {\r\n return mat.hasTexture(texture);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get samplerName(): string {\r\n return this._samplerName;\r\n }\r\n\r\n /**\r\n * Creates a new ImageSourceBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.VertexAndFragment);\r\n\r\n this.registerOutput(\"source\", NodeMaterialBlockConnectionPointTypes.Object, NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"source\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\"));\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (!this.texture) {\r\n return;\r\n }\r\n\r\n effect.setTexture(this._samplerName, this.texture);\r\n }\r\n\r\n public isReady() {\r\n if (this.texture && !this.texture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n return true;\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 \"ImageSourceBlock\";\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get source(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (state.target === NodeMaterialBlockTargets.Vertex) {\r\n this._samplerName = state._getFreeVariableName(this.name + \"Sampler\");\r\n\r\n // Declarations\r\n state.sharedData.blockingBlocks.push(this);\r\n state.sharedData.textureBlocks.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n }\r\n\r\n state._emit2DSampler(this._samplerName);\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n if (!this.texture) {\r\n return codeString;\r\n }\r\n\r\n codeString += `${this._codeVariableName}.texture = new BABYLON.Texture(\"${this.texture.name}\", null, ${this.texture.noMipmap}, ${this.texture.invertY}, ${this.texture.samplingMode});\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.wrapU = ${this.texture.wrapU};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.wrapV = ${this.texture.wrapV};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.uAng = ${this.texture.uAng};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.vAng = ${this.texture.vAng};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.wAng = ${this.texture.wAng};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.uOffset = ${this.texture.uOffset};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.vOffset = ${this.texture.vOffset};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.uScale = ${this.texture.uScale};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.vScale = ${this.texture.vScale};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.coordinatesMode = ${this.texture.coordinatesMode};\\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 if (this.texture && !this.texture.isRenderTarget && this.texture.getClassName() !== \"VideoTexture\") {\r\n serializationObject.texture = this.texture.serialize();\r\n }\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 if (serializationObject.texture && !NodeMaterial.IgnoreTexturesAtLoadTime && serializationObject.texture.url !== undefined) {\r\n rootUrl = serializationObject.texture.url.indexOf(\"data:\") === 0 ? \"\" : rootUrl;\r\n this.texture = Texture.Parse(serializationObject.texture, scene, rootUrl) as Texture;\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ImageSourceBlock\", ImageSourceBlock);"]}
1
+ {"version":3,"file":"imageSourceBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Dual/imageSourceBlock.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, NodeMaterialConnectionPointDirection } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { Nullable } from '../../../../types';\r\nimport { Texture } from '../../../Textures/texture';\r\n\r\nimport { Effect } from '../../../effect';\r\nimport { NodeMaterial } from '../../nodeMaterial';\r\nimport { Mesh } from '../../../../Meshes/mesh';\r\nimport { Scene } from '../../../../scene';\r\nimport { NodeMaterialConnectionPointCustomObject } from '../../nodeMaterialConnectionPointCustomObject';\r\nimport { EngineStore } from '../../../../Engines/engineStore';\r\n/**\r\n * Block used to provide an image for a TextureBlock\r\n */\r\nexport class ImageSourceBlock extends NodeMaterialBlock {\r\n private _samplerName: string;\r\n protected _texture: Nullable<Texture>;\r\n /**\r\n * Gets or sets the texture associated with the node\r\n */\r\n public get texture(): Nullable<Texture> {\r\n return this._texture;\r\n }\r\n\r\n public set texture(texture: Nullable<Texture>) {\r\n if (this._texture === texture) {\r\n return;\r\n }\r\n\r\n const scene = texture?.getScene() ?? EngineStore.LastCreatedScene;\r\n\r\n if (!texture && scene) {\r\n scene.markAllMaterialsAsDirty(1, (mat) => {\r\n return mat.hasTexture(this._texture!);\r\n });\r\n }\r\n\r\n this._texture = texture;\r\n\r\n if (texture && scene) {\r\n scene.markAllMaterialsAsDirty(1, (mat) => {\r\n return mat.hasTexture(texture);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get samplerName(): string {\r\n return this._samplerName;\r\n }\r\n\r\n /**\r\n * Creates a new ImageSourceBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.VertexAndFragment);\r\n\r\n this.registerOutput(\"source\", NodeMaterialBlockConnectionPointTypes.Object, NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"source\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\"));\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (!this.texture) {\r\n return;\r\n }\r\n\r\n effect.setTexture(this._samplerName, this.texture);\r\n }\r\n\r\n public isReady() {\r\n if (this.texture && !this.texture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n return true;\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 \"ImageSourceBlock\";\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get source(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (state.target === NodeMaterialBlockTargets.Vertex) {\r\n this._samplerName = state._getFreeVariableName(this.name + \"Sampler\");\r\n\r\n // Declarations\r\n state.sharedData.blockingBlocks.push(this);\r\n state.sharedData.textureBlocks.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n }\r\n\r\n state._emit2DSampler(this._samplerName);\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n if (!this.texture) {\r\n return codeString;\r\n }\r\n\r\n codeString += `${this._codeVariableName}.texture = new BABYLON.Texture(\"${this.texture.name}\", null, ${this.texture.noMipmap}, ${this.texture.invertY}, ${this.texture.samplingMode});\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.wrapU = ${this.texture.wrapU};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.wrapV = ${this.texture.wrapV};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.uAng = ${this.texture.uAng};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.vAng = ${this.texture.vAng};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.wAng = ${this.texture.wAng};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.uOffset = ${this.texture.uOffset};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.vOffset = ${this.texture.vOffset};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.uScale = ${this.texture.uScale};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.vScale = ${this.texture.vScale};\\r\\n`;\r\n codeString += `${this._codeVariableName}.texture.coordinatesMode = ${this.texture.coordinatesMode};\\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 if (this.texture && !this.texture.isRenderTarget && this.texture.getClassName() !== \"VideoTexture\") {\r\n serializationObject.texture = this.texture.serialize();\r\n }\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 if (serializationObject.texture && !NodeMaterial.IgnoreTexturesAtLoadTime && serializationObject.texture.url !== undefined) {\r\n rootUrl = serializationObject.texture.url.indexOf(\"data:\") === 0 ? \"\" : rootUrl;\r\n this.texture = Texture.Parse(serializationObject.texture, scene, rootUrl) as Texture;\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ImageSourceBlock\", ImageSourceBlock);"]}
@@ -5,3 +5,4 @@ export * from "./reflectionTextureBlock";
5
5
  export * from "./currentScreenBlock";
6
6
  export * from "./sceneDepthBlock";
7
7
  export * from "./imageSourceBlock";
8
+ export * from "./clipPlanesBlock";
@@ -5,4 +5,5 @@ export * from "./reflectionTextureBlock.js";
5
5
  export * from "./currentScreenBlock.js";
6
6
  export * from "./sceneDepthBlock.js";
7
7
  export * from "./imageSourceBlock.js";
8
+ export * from "./clipPlanesBlock.js";
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Dual/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC","sourcesContent":["\r\nexport * from \"./fogBlock\";\r\nexport * from \"./lightBlock\";\r\nexport * from \"./textureBlock\";\r\nexport * from \"./reflectionTextureBlock\";\r\nexport * from \"./currentScreenBlock\";\r\nexport * from \"./sceneDepthBlock\";\r\nexport * from \"./imageSourceBlock\";"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Dual/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC","sourcesContent":["\r\nexport * from \"./fogBlock\";\r\nexport * from \"./lightBlock\";\r\nexport * from \"./textureBlock\";\r\nexport * from \"./reflectionTextureBlock\";\r\nexport * from \"./currentScreenBlock\";\r\nexport * from \"./sceneDepthBlock\";\r\nexport * from \"./imageSourceBlock\";\r\nexport * from \"./clipPlanesBlock\";"]}
@@ -212,7 +212,7 @@ var LightBlock = /** @class */ (function (_super) {
212
212
  };
213
213
  LightBlock.prototype._injectVertexCode = function (state) {
214
214
  var worldPos = this.worldPosition;
215
- var comments = "//" + this.name;
215
+ var comments = "//".concat(this.name);
216
216
  // Declaration
217
217
  if (!this.light) { // Emit for all lights
218
218
  state._emitFunctionFromInclude(state.supportUniformBuffers ? "lightVxUboDeclaration" : "lightVxFragmentDeclaration", comments, {
@@ -231,7 +231,7 @@ var LightBlock = /** @class */ (function (_super) {
231
231
  // Inject code in vertex
232
232
  var worldPosVaryingName = "v_" + worldPos.associatedVariableName;
233
233
  if (state._emitVaryingFromString(worldPosVaryingName, "vec4")) {
234
- state.compilationString += worldPosVaryingName + " = " + worldPos.associatedVariableName + ";\r\n";
234
+ state.compilationString += "".concat(worldPosVaryingName, " = ").concat(worldPos.associatedVariableName, ";\r\n");
235
235
  }
236
236
  if (this.light) {
237
237
  state.compilationString += state._emitCodeFromInclude("shadowsVertex", comments, {
@@ -242,9 +242,9 @@ var LightBlock = /** @class */ (function (_super) {
242
242
  });
243
243
  }
244
244
  else {
245
- state.compilationString += "vec4 worldPos = " + worldPos.associatedVariableName + ";\r\n";
245
+ state.compilationString += "vec4 worldPos = ".concat(worldPos.associatedVariableName, ";\r\n");
246
246
  if (this.view.isConnected) {
247
- state.compilationString += "mat4 view = " + this.view.associatedVariableName + ";\r\n";
247
+ state.compilationString += "mat4 view = ".concat(this.view.associatedVariableName, ";\r\n");
248
248
  }
249
249
  state.compilationString += state._emitCodeFromInclude("shadowsVertex", comments, {
250
250
  repeatKey: "maxSimultaneousLights"
@@ -261,7 +261,7 @@ var LightBlock = /** @class */ (function (_super) {
261
261
  // Fragment
262
262
  state.sharedData.forcedBindableBlocks.push(this);
263
263
  state.sharedData.blocksWithDefines.push(this);
264
- var comments = "//" + this.name;
264
+ var comments = "//".concat(this.name);
265
265
  var worldPos = this.worldPosition;
266
266
  state._emitFunctionFromInclude("helperFunctions", comments);
267
267
  state._emitFunctionFromInclude("lightsFragmentFunctions", comments, {
@@ -287,14 +287,14 @@ var LightBlock = /** @class */ (function (_super) {
287
287
  // Code
288
288
  if (this._lightId === 0) {
289
289
  if (state._registerTempVariable("viewDirectionW")) {
290
- state.compilationString += "vec3 viewDirectionW = normalize(" + this.cameraPosition.associatedVariableName + " - " + ("v_" + worldPos.associatedVariableName) + ".xyz);\r\n";
290
+ state.compilationString += "vec3 viewDirectionW = normalize(".concat(this.cameraPosition.associatedVariableName, " - ").concat("v_" + worldPos.associatedVariableName, ".xyz);\r\n");
291
291
  }
292
292
  state.compilationString += "lightingInfo info;\r\n";
293
293
  state.compilationString += "float shadow = 1.;\r\n";
294
- state.compilationString += "float glossiness = " + (this.glossiness.isConnected ? this.glossiness.associatedVariableName : "1.0") + " * " + (this.glossPower.isConnected ? this.glossPower.associatedVariableName : "1024.0") + ";\r\n";
294
+ state.compilationString += "float glossiness = ".concat(this.glossiness.isConnected ? this.glossiness.associatedVariableName : "1.0", " * ").concat(this.glossPower.isConnected ? this.glossPower.associatedVariableName : "1024.0", ";\r\n");
295
295
  state.compilationString += "vec3 diffuseBase = vec3(0., 0., 0.);\r\n";
296
296
  state.compilationString += "vec3 specularBase = vec3(0., 0., 0.);\r\n";
297
- state.compilationString += "vec3 normalW = " + this.worldNormal.associatedVariableName + ".xyz;\r\n";
297
+ state.compilationString += "vec3 normalW = ".concat(this.worldNormal.associatedVariableName, ".xyz;\r\n");
298
298
  }
299
299
  if (this.light) {
300
300
  state.compilationString += state._emitCodeFromInclude("lightFragment", comments, {
@@ -310,9 +310,9 @@ var LightBlock = /** @class */ (function (_super) {
310
310
  }
311
311
  var diffuseOutput = this.diffuseOutput;
312
312
  var specularOutput = this.specularOutput;
313
- state.compilationString += this._declareOutput(diffuseOutput, state) + (" = diffuseBase" + (this.diffuseColor.isConnected ? " * " + this.diffuseColor.associatedVariableName : "") + ";\r\n");
313
+ state.compilationString += this._declareOutput(diffuseOutput, state) + " = diffuseBase".concat(this.diffuseColor.isConnected ? " * " + this.diffuseColor.associatedVariableName : "", ";\r\n");
314
314
  if (specularOutput.hasEndpoints) {
315
- state.compilationString += this._declareOutput(specularOutput, state) + (" = specularBase" + (this.specularColor.isConnected ? " * " + this.specularColor.associatedVariableName : "") + ";\r\n");
315
+ state.compilationString += this._declareOutput(specularOutput, state) + " = specularBase".concat(this.specularColor.isConnected ? " * " + this.specularColor.associatedVariableName : "", ";\r\n");
316
316
  }
317
317
  if (this.shadow.hasEndpoints) {
318
318
  state.compilationString += this._declareOutput(this.shadow, state) + " = shadow;\r\n";
@@ -1 +1 @@
1
- {"version":3,"file":"lightBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Dual/lightBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { MaterialHelper } from '../../../materialHelper';\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 { NodeMaterialSystemValues } from '../../Enums/nodeMaterialSystemValues';\r\nimport { InputBlock } from '../Input/inputBlock';\r\nimport { Light } from '../../../../Lights/light';\r\nimport { Nullable } from '../../../../types';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { Scene } from '../../../../scene';\r\n\r\nimport \"../../../../Shaders/ShadersInclude/lightFragmentDeclaration\";\r\nimport \"../../../../Shaders/ShadersInclude/lightVxFragmentDeclaration\";\r\nimport \"../../../../Shaders/ShadersInclude/lightUboDeclaration\";\r\nimport \"../../../../Shaders/ShadersInclude/lightVxUboDeclaration\";\r\nimport \"../../../../Shaders/ShadersInclude/lightFragment\";\r\nimport \"../../../../Shaders/ShadersInclude/helperFunctions\";\r\nimport \"../../../../Shaders/ShadersInclude/lightsFragmentFunctions\";\r\nimport \"../../../../Shaders/ShadersInclude/shadowsFragmentFunctions\";\r\nimport \"../../../../Shaders/ShadersInclude/shadowsVertex\";\r\n\r\n/**\r\n * Block used to add light in the fragment shader\r\n */\r\nexport class LightBlock extends NodeMaterialBlock {\r\n private _lightId: number;\r\n\r\n /**\r\n * Gets or sets the light associated with this block\r\n */\r\n public light: Nullable<Light>;\r\n\r\n /**\r\n * Create a new LightBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.VertexAndFragment);\r\n\r\n this._isUnique = true;\r\n\r\n this.registerInput(\"worldPosition\", NodeMaterialBlockConnectionPointTypes.Vector4, false, NodeMaterialBlockTargets.Vertex);\r\n this.registerInput(\"worldNormal\", NodeMaterialBlockConnectionPointTypes.Vector4, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"cameraPosition\", NodeMaterialBlockConnectionPointTypes.Vector3, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"glossiness\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"glossPower\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"diffuseColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"specularColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"view\", NodeMaterialBlockConnectionPointTypes.Matrix, true);\r\n\r\n this.registerOutput(\"diffuseOutput\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"specularOutput\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"shadow\", 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 \"LightBlock\";\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 camera (or eye) position component\r\n */\r\n public get cameraPosition(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the glossiness component\r\n */\r\n public get glossiness(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the glossiness power component\r\n */\r\n public get glossPower(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the diffuse color component\r\n */\r\n public get diffuseColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the specular color component\r\n */\r\n public get specularColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n /**\r\n * Gets the view matrix component\r\n */\r\n public get view(): NodeMaterialConnectionPoint {\r\n return this._inputs[7];\r\n }\r\n\r\n /**\r\n * Gets the diffuse output component\r\n */\r\n public get diffuseOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the specular output component\r\n */\r\n public get specularOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the shadow output component\r\n */\r\n public get shadow(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n public autoConfigure(material: NodeMaterial) {\r\n if (!this.cameraPosition.isConnected) {\r\n let cameraPositionInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.CameraPosition);\r\n\r\n if (!cameraPositionInput) {\r\n cameraPositionInput = new InputBlock(\"cameraPosition\");\r\n cameraPositionInput.setAsSystemValue(NodeMaterialSystemValues.CameraPosition);\r\n }\r\n cameraPositionInput.output.connectTo(this.cameraPosition);\r\n }\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (!defines._areLightsDirty) {\r\n return;\r\n }\r\n\r\n const scene = mesh.getScene();\r\n\r\n if (!this.light) {\r\n MaterialHelper.PrepareDefinesForLights(scene, mesh, defines, true, nodeMaterial.maxSimultaneousLights);\r\n } else {\r\n let state = {\r\n needNormals: false,\r\n needRebuild: false,\r\n lightmapMode: false,\r\n shadowEnabled: false,\r\n specularEnabled: false\r\n };\r\n\r\n MaterialHelper.PrepareDefinesForLight(scene, mesh, this.light, this._lightId, defines, true, state);\r\n\r\n if (state.needRebuild) {\r\n defines.rebuild();\r\n }\r\n }\r\n }\r\n\r\n public updateUniformsAndSamples(state: NodeMaterialBuildState, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines, uniformBuffers: string[]) {\r\n for (var lightIndex = 0; lightIndex < nodeMaterial.maxSimultaneousLights; lightIndex++) {\r\n if (!defines[\"LIGHT\" + lightIndex]) {\r\n break;\r\n }\r\n const onlyUpdateBuffersList = state.uniforms.indexOf(\"vLightData\" + lightIndex) >= 0;\r\n MaterialHelper.PrepareUniformsAndSamplersForLight(lightIndex, state.uniforms, state.samplers, defines[\"PROJECTEDLIGHTTEXTURE\" + lightIndex], uniformBuffers, onlyUpdateBuffersList);\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 const scene = mesh.getScene();\r\n\r\n if (!this.light) {\r\n MaterialHelper.BindLights(scene, mesh, effect, true, nodeMaterial.maxSimultaneousLights);\r\n } else {\r\n MaterialHelper.BindLight(this.light, this._lightId, scene, effect, true);\r\n }\r\n }\r\n\r\n private _injectVertexCode(state: NodeMaterialBuildState) {\r\n let worldPos = this.worldPosition;\r\n let comments = `//${this.name}`;\r\n\r\n // Declaration\r\n if (!this.light) { // Emit for all lights\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightVxUboDeclaration\" : \"lightVxFragmentDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n this._lightId = 0;\r\n\r\n state.sharedData.dynamicUniformBlocks.push(this);\r\n } else {\r\n\r\n this._lightId = (state.counters[\"lightCounter\"] !== undefined ? state.counters[\"lightCounter\"] : -1) + 1;\r\n state.counters[\"lightCounter\"] = this._lightId;\r\n\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightVxUboDeclaration\" : \"lightVxFragmentDeclaration\", comments, {\r\n replaceStrings: [{ search: /{X}/g, replace: this._lightId.toString() }]\r\n }, this._lightId.toString());\r\n }\r\n\r\n // Inject code in vertex\r\n let worldPosVaryingName = \"v_\" + worldPos.associatedVariableName;\r\n if (state._emitVaryingFromString(worldPosVaryingName, \"vec4\")) {\r\n state.compilationString += `${worldPosVaryingName} = ${worldPos.associatedVariableName};\\r\\n`;\r\n }\r\n\r\n if (this.light) {\r\n state.compilationString += state._emitCodeFromInclude(\"shadowsVertex\", comments, {\r\n replaceStrings: [\r\n { search: /{X}/g, replace: this._lightId.toString() },\r\n { search: /worldPos/g, replace: worldPos.associatedVariableName }\r\n ]\r\n });\r\n } else {\r\n state.compilationString += `vec4 worldPos = ${worldPos.associatedVariableName};\\r\\n`;\r\n if (this.view.isConnected) {\r\n state.compilationString += `mat4 view = ${this.view.associatedVariableName};\\r\\n`;\r\n }\r\n state.compilationString += state._emitCodeFromInclude(\"shadowsVertex\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n }\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (state.target !== NodeMaterialBlockTargets.Fragment) {\r\n // Vertex\r\n this._injectVertexCode(state);\r\n\r\n return;\r\n }\r\n\r\n // Fragment\r\n state.sharedData.forcedBindableBlocks.push(this);\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n let comments = `//${this.name}`;\r\n let worldPos = this.worldPosition;\r\n\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n state._emitFunctionFromInclude(\"lightsFragmentFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /vPositionW/g, replace: \"v_\" + worldPos.associatedVariableName + \".xyz\" }\r\n ]\r\n });\r\n\r\n state._emitFunctionFromInclude(\"shadowsFragmentFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /vPositionW/g, replace: \"v_\" + worldPos.associatedVariableName + \".xyz\" }\r\n ]\r\n });\r\n\r\n if (!this.light) { // Emit for all lights\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightUboDeclaration\" : \"lightFragmentDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n } else {\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightUboDeclaration\" : \"lightFragmentDeclaration\", comments, {\r\n replaceStrings: [{ search: /{X}/g, replace: this._lightId.toString() }]\r\n }, this._lightId.toString());\r\n }\r\n\r\n // Code\r\n if (this._lightId === 0) {\r\n if (state._registerTempVariable(\"viewDirectionW\")) {\r\n state.compilationString += `vec3 viewDirectionW = normalize(${this.cameraPosition.associatedVariableName} - ${\"v_\" + worldPos.associatedVariableName}.xyz);\\r\\n`;\r\n }\r\n state.compilationString += `lightingInfo info;\\r\\n`;\r\n state.compilationString += `float shadow = 1.;\\r\\n`;\r\n state.compilationString += `float glossiness = ${this.glossiness.isConnected ? this.glossiness.associatedVariableName : \"1.0\"} * ${this.glossPower.isConnected ? this.glossPower.associatedVariableName : \"1024.0\"};\\r\\n`;\r\n state.compilationString += `vec3 diffuseBase = vec3(0., 0., 0.);\\r\\n`;\r\n state.compilationString += `vec3 specularBase = vec3(0., 0., 0.);\\r\\n`;\r\n state.compilationString += `vec3 normalW = ${this.worldNormal.associatedVariableName}.xyz;\\r\\n`;\r\n }\r\n\r\n if (this.light) {\r\n state.compilationString += state._emitCodeFromInclude(\"lightFragment\", comments, {\r\n replaceStrings: [\r\n { search: /{X}/g, replace: this._lightId.toString() }\r\n ]\r\n });\r\n } else {\r\n state.compilationString += state._emitCodeFromInclude(\"lightFragment\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n }\r\n\r\n let diffuseOutput = this.diffuseOutput;\r\n let specularOutput = this.specularOutput;\r\n\r\n state.compilationString += this._declareOutput(diffuseOutput, state) + ` = diffuseBase${this.diffuseColor.isConnected ? \" * \" + this.diffuseColor.associatedVariableName : \"\"};\\r\\n`;\r\n if (specularOutput.hasEndpoints) {\r\n state.compilationString += this._declareOutput(specularOutput, state) + ` = specularBase${this.specularColor.isConnected ? \" * \" + this.specularColor.associatedVariableName : \"\"};\\r\\n`;\r\n }\r\n\r\n if (this.shadow.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.shadow, state) + ` = shadow;\\r\\n`;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n if (this.light) {\r\n serializationObject.lightId = this.light.id;\r\n }\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 if (serializationObject.lightId) {\r\n this.light = scene.getLightById(serializationObject.lightId);\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.LightBlock\", LightBlock);"]}
1
+ {"version":3,"file":"lightBlock.js","sourceRoot":"","sources":["../../../../../../sourceES6/core/Materials/Node/Blocks/Dual/lightBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../../nodeMaterialBlock';\r\nimport { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../../nodeMaterialBuildState';\r\nimport { NodeMaterialConnectionPoint } from '../../nodeMaterialBlockConnectionPoint';\r\nimport { MaterialHelper } from '../../../materialHelper';\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 { NodeMaterialSystemValues } from '../../Enums/nodeMaterialSystemValues';\r\nimport { InputBlock } from '../Input/inputBlock';\r\nimport { Light } from '../../../../Lights/light';\r\nimport { Nullable } from '../../../../types';\r\nimport { RegisterClass } from '../../../../Misc/typeStore';\r\nimport { Scene } from '../../../../scene';\r\n\r\nimport \"../../../../Shaders/ShadersInclude/lightFragmentDeclaration\";\r\nimport \"../../../../Shaders/ShadersInclude/lightVxFragmentDeclaration\";\r\nimport \"../../../../Shaders/ShadersInclude/lightUboDeclaration\";\r\nimport \"../../../../Shaders/ShadersInclude/lightVxUboDeclaration\";\r\nimport \"../../../../Shaders/ShadersInclude/lightFragment\";\r\nimport \"../../../../Shaders/ShadersInclude/helperFunctions\";\r\nimport \"../../../../Shaders/ShadersInclude/lightsFragmentFunctions\";\r\nimport \"../../../../Shaders/ShadersInclude/shadowsFragmentFunctions\";\r\nimport \"../../../../Shaders/ShadersInclude/shadowsVertex\";\r\n\r\n/**\r\n * Block used to add light in the fragment shader\r\n */\r\nexport class LightBlock extends NodeMaterialBlock {\r\n private _lightId: number;\r\n\r\n /**\r\n * Gets or sets the light associated with this block\r\n */\r\n public light: Nullable<Light>;\r\n\r\n /**\r\n * Create a new LightBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.VertexAndFragment);\r\n\r\n this._isUnique = true;\r\n\r\n this.registerInput(\"worldPosition\", NodeMaterialBlockConnectionPointTypes.Vector4, false, NodeMaterialBlockTargets.Vertex);\r\n this.registerInput(\"worldNormal\", NodeMaterialBlockConnectionPointTypes.Vector4, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"cameraPosition\", NodeMaterialBlockConnectionPointTypes.Vector3, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"glossiness\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"glossPower\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"diffuseColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"specularColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"view\", NodeMaterialBlockConnectionPointTypes.Matrix, true);\r\n\r\n this.registerOutput(\"diffuseOutput\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"specularOutput\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);\r\n this.registerOutput(\"shadow\", 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 \"LightBlock\";\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 camera (or eye) position component\r\n */\r\n public get cameraPosition(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the glossiness component\r\n */\r\n public get glossiness(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the glossiness power component\r\n */\r\n public get glossPower(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the diffuse color component\r\n */\r\n public get diffuseColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the specular color component\r\n */\r\n public get specularColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n /**\r\n * Gets the view matrix component\r\n */\r\n public get view(): NodeMaterialConnectionPoint {\r\n return this._inputs[7];\r\n }\r\n\r\n /**\r\n * Gets the diffuse output component\r\n */\r\n public get diffuseOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the specular output component\r\n */\r\n public get specularOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the shadow output component\r\n */\r\n public get shadow(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n public autoConfigure(material: NodeMaterial) {\r\n if (!this.cameraPosition.isConnected) {\r\n let cameraPositionInput = material.getInputBlockByPredicate((b) => b.systemValue === NodeMaterialSystemValues.CameraPosition);\r\n\r\n if (!cameraPositionInput) {\r\n cameraPositionInput = new InputBlock(\"cameraPosition\");\r\n cameraPositionInput.setAsSystemValue(NodeMaterialSystemValues.CameraPosition);\r\n }\r\n cameraPositionInput.output.connectTo(this.cameraPosition);\r\n }\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (!defines._areLightsDirty) {\r\n return;\r\n }\r\n\r\n const scene = mesh.getScene();\r\n\r\n if (!this.light) {\r\n MaterialHelper.PrepareDefinesForLights(scene, mesh, defines, true, nodeMaterial.maxSimultaneousLights);\r\n } else {\r\n let state = {\r\n needNormals: false,\r\n needRebuild: false,\r\n lightmapMode: false,\r\n shadowEnabled: false,\r\n specularEnabled: false\r\n };\r\n\r\n MaterialHelper.PrepareDefinesForLight(scene, mesh, this.light, this._lightId, defines, true, state);\r\n\r\n if (state.needRebuild) {\r\n defines.rebuild();\r\n }\r\n }\r\n }\r\n\r\n public updateUniformsAndSamples(state: NodeMaterialBuildState, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines, uniformBuffers: string[]) {\r\n for (var lightIndex = 0; lightIndex < nodeMaterial.maxSimultaneousLights; lightIndex++) {\r\n if (!defines[\"LIGHT\" + lightIndex]) {\r\n break;\r\n }\r\n const onlyUpdateBuffersList = state.uniforms.indexOf(\"vLightData\" + lightIndex) >= 0;\r\n MaterialHelper.PrepareUniformsAndSamplersForLight(lightIndex, state.uniforms, state.samplers, defines[\"PROJECTEDLIGHTTEXTURE\" + lightIndex], uniformBuffers, onlyUpdateBuffersList);\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 const scene = mesh.getScene();\r\n\r\n if (!this.light) {\r\n MaterialHelper.BindLights(scene, mesh, effect, true, nodeMaterial.maxSimultaneousLights);\r\n } else {\r\n MaterialHelper.BindLight(this.light, this._lightId, scene, effect, true);\r\n }\r\n }\r\n\r\n private _injectVertexCode(state: NodeMaterialBuildState) {\r\n let worldPos = this.worldPosition;\r\n let comments = `//${this.name}`;\r\n\r\n // Declaration\r\n if (!this.light) { // Emit for all lights\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightVxUboDeclaration\" : \"lightVxFragmentDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n this._lightId = 0;\r\n\r\n state.sharedData.dynamicUniformBlocks.push(this);\r\n } else {\r\n\r\n this._lightId = (state.counters[\"lightCounter\"] !== undefined ? state.counters[\"lightCounter\"] : -1) + 1;\r\n state.counters[\"lightCounter\"] = this._lightId;\r\n\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightVxUboDeclaration\" : \"lightVxFragmentDeclaration\", comments, {\r\n replaceStrings: [{ search: /{X}/g, replace: this._lightId.toString() }]\r\n }, this._lightId.toString());\r\n }\r\n\r\n // Inject code in vertex\r\n let worldPosVaryingName = \"v_\" + worldPos.associatedVariableName;\r\n if (state._emitVaryingFromString(worldPosVaryingName, \"vec4\")) {\r\n state.compilationString += `${worldPosVaryingName} = ${worldPos.associatedVariableName};\\r\\n`;\r\n }\r\n\r\n if (this.light) {\r\n state.compilationString += state._emitCodeFromInclude(\"shadowsVertex\", comments, {\r\n replaceStrings: [\r\n { search: /{X}/g, replace: this._lightId.toString() },\r\n { search: /worldPos/g, replace: worldPos.associatedVariableName }\r\n ]\r\n });\r\n } else {\r\n state.compilationString += `vec4 worldPos = ${worldPos.associatedVariableName};\\r\\n`;\r\n if (this.view.isConnected) {\r\n state.compilationString += `mat4 view = ${this.view.associatedVariableName};\\r\\n`;\r\n }\r\n state.compilationString += state._emitCodeFromInclude(\"shadowsVertex\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n }\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (state.target !== NodeMaterialBlockTargets.Fragment) {\r\n // Vertex\r\n this._injectVertexCode(state);\r\n\r\n return;\r\n }\r\n\r\n // Fragment\r\n state.sharedData.forcedBindableBlocks.push(this);\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n let comments = `//${this.name}`;\r\n let worldPos = this.worldPosition;\r\n\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n state._emitFunctionFromInclude(\"lightsFragmentFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /vPositionW/g, replace: \"v_\" + worldPos.associatedVariableName + \".xyz\" }\r\n ]\r\n });\r\n\r\n state._emitFunctionFromInclude(\"shadowsFragmentFunctions\", comments, {\r\n replaceStrings: [\r\n { search: /vPositionW/g, replace: \"v_\" + worldPos.associatedVariableName + \".xyz\" }\r\n ]\r\n });\r\n\r\n if (!this.light) { // Emit for all lights\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightUboDeclaration\" : \"lightFragmentDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n } else {\r\n state._emitFunctionFromInclude(state.supportUniformBuffers ? \"lightUboDeclaration\" : \"lightFragmentDeclaration\", comments, {\r\n replaceStrings: [{ search: /{X}/g, replace: this._lightId.toString() }]\r\n }, this._lightId.toString());\r\n }\r\n\r\n // Code\r\n if (this._lightId === 0) {\r\n if (state._registerTempVariable(\"viewDirectionW\")) {\r\n state.compilationString += `vec3 viewDirectionW = normalize(${this.cameraPosition.associatedVariableName} - ${\"v_\" + worldPos.associatedVariableName}.xyz);\\r\\n`;\r\n }\r\n state.compilationString += `lightingInfo info;\\r\\n`;\r\n state.compilationString += `float shadow = 1.;\\r\\n`;\r\n state.compilationString += `float glossiness = ${this.glossiness.isConnected ? this.glossiness.associatedVariableName : \"1.0\"} * ${this.glossPower.isConnected ? this.glossPower.associatedVariableName : \"1024.0\"};\\r\\n`;\r\n state.compilationString += `vec3 diffuseBase = vec3(0., 0., 0.);\\r\\n`;\r\n state.compilationString += `vec3 specularBase = vec3(0., 0., 0.);\\r\\n`;\r\n state.compilationString += `vec3 normalW = ${this.worldNormal.associatedVariableName}.xyz;\\r\\n`;\r\n }\r\n\r\n if (this.light) {\r\n state.compilationString += state._emitCodeFromInclude(\"lightFragment\", comments, {\r\n replaceStrings: [\r\n { search: /{X}/g, replace: this._lightId.toString() }\r\n ]\r\n });\r\n } else {\r\n state.compilationString += state._emitCodeFromInclude(\"lightFragment\", comments, {\r\n repeatKey: \"maxSimultaneousLights\"\r\n });\r\n }\r\n\r\n let diffuseOutput = this.diffuseOutput;\r\n let specularOutput = this.specularOutput;\r\n\r\n state.compilationString += this._declareOutput(diffuseOutput, state) + ` = diffuseBase${this.diffuseColor.isConnected ? \" * \" + this.diffuseColor.associatedVariableName : \"\"};\\r\\n`;\r\n if (specularOutput.hasEndpoints) {\r\n state.compilationString += this._declareOutput(specularOutput, state) + ` = specularBase${this.specularColor.isConnected ? \" * \" + this.specularColor.associatedVariableName : \"\"};\\r\\n`;\r\n }\r\n\r\n if (this.shadow.hasEndpoints) {\r\n state.compilationString += this._declareOutput(this.shadow, state) + ` = shadow;\\r\\n`;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n if (this.light) {\r\n serializationObject.lightId = this.light.id;\r\n }\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 if (serializationObject.lightId) {\r\n this.light = scene.getLightById(serializationObject.lightId);\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.LightBlock\", LightBlock);"]}