@onerjs/core 8.41.6 → 8.41.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 (339) hide show
  1. package/Animations/animation.d.ts +6 -2
  2. package/Animations/animation.js +28 -4
  3. package/Animations/animation.js.map +1 -1
  4. package/Animations/animationGroup.d.ts +2 -1
  5. package/Animations/animationGroup.js +3 -2
  6. package/Animations/animationGroup.js.map +1 -1
  7. package/Animations/animatorAvatar.d.ts +161 -0
  8. package/Animations/animatorAvatar.js +573 -0
  9. package/Animations/animatorAvatar.js.map +1 -0
  10. package/Animations/index.d.ts +1 -0
  11. package/Animations/index.js +1 -0
  12. package/Animations/index.js.map +1 -1
  13. package/AudioV2/webAudio/webAudioSoundSource.d.ts +2 -2
  14. package/AudioV2/webAudio/webAudioSoundSource.js +12 -2
  15. package/AudioV2/webAudio/webAudioSoundSource.js.map +1 -1
  16. package/Bones/index.d.ts +1 -0
  17. package/Bones/index.js +1 -0
  18. package/Bones/index.js.map +1 -1
  19. package/Bones/skeleton.d.ts +13 -0
  20. package/Bones/skeleton.functions.d.ts +26 -0
  21. package/Bones/skeleton.functions.js +91 -0
  22. package/Bones/skeleton.functions.js.map +1 -0
  23. package/Bones/skeleton.js +26 -0
  24. package/Bones/skeleton.js.map +1 -1
  25. package/Cameras/geospatialCamera.js +21 -20
  26. package/Cameras/geospatialCamera.js.map +1 -1
  27. package/Cameras/geospatialCameraMovement.d.ts +8 -1
  28. package/Cameras/geospatialCameraMovement.js +29 -8
  29. package/Cameras/geospatialCameraMovement.js.map +1 -1
  30. package/Collisions/gpuPicker.d.ts +11 -0
  31. package/Collisions/gpuPicker.js +148 -19
  32. package/Collisions/gpuPicker.js.map +1 -1
  33. package/Debug/skeletonViewer.d.ts +4 -8
  34. package/Debug/skeletonViewer.js +13 -22
  35. package/Debug/skeletonViewer.js.map +1 -1
  36. package/Engines/Extensions/engine.multiview.d.ts +2 -0
  37. package/Engines/Extensions/engine.multiview.js +7 -3
  38. package/Engines/Extensions/engine.multiview.js.map +1 -1
  39. package/Engines/abstractEngine.js +2 -2
  40. package/Engines/abstractEngine.js.map +1 -1
  41. package/Engines/constants.d.ts +4 -0
  42. package/Engines/constants.js +4 -0
  43. package/Engines/constants.js.map +1 -1
  44. package/Instrumentation/engineInstrumentation.js +2 -1
  45. package/Instrumentation/engineInstrumentation.js.map +1 -1
  46. package/Layers/effectLayer.js +1 -3
  47. package/Layers/effectLayer.js.map +1 -1
  48. package/Lights/Shadows/cascadedShadowGenerator.js +1 -1
  49. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  50. package/Lights/Shadows/shadowGenerator.js +2 -3
  51. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  52. package/Materials/Background/backgroundMaterial.js +37 -2
  53. package/Materials/Background/backgroundMaterial.js.map +1 -1
  54. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.d.ts +109 -0
  55. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.js +210 -0
  56. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.js.map +1 -0
  57. package/Materials/GaussianSplatting/gaussianSplattingMaterial.d.ts +1 -0
  58. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +71 -15
  59. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
  60. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.d.ts +86 -0
  61. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.js +161 -0
  62. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.js.map +1 -0
  63. package/Materials/GreasedLine/greasedLinePluginMaterial.js +0 -6
  64. package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
  65. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js +0 -1
  66. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js.map +1 -1
  67. package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js +0 -1
  68. package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js.map +1 -1
  69. package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +14 -0
  70. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +14 -0
  71. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
  72. package/Materials/Node/Blocks/Dual/currentScreenBlock.d.ts +20 -1
  73. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +20 -1
  74. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  75. package/Materials/Node/Blocks/Dual/depthSourceBlock.d.ts +13 -0
  76. package/Materials/Node/Blocks/Dual/depthSourceBlock.js +13 -0
  77. package/Materials/Node/Blocks/Dual/depthSourceBlock.js.map +1 -1
  78. package/Materials/Node/Blocks/Dual/fogBlock.d.ts +21 -0
  79. package/Materials/Node/Blocks/Dual/fogBlock.js +21 -0
  80. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  81. package/Materials/Node/Blocks/Dual/imageSourceBlock.d.ts +21 -0
  82. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +21 -0
  83. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  84. package/Materials/Node/Blocks/Dual/lightBlock.d.ts +38 -0
  85. package/Materials/Node/Blocks/Dual/lightBlock.js +38 -0
  86. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  87. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.d.ts +29 -0
  88. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +29 -0
  89. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  90. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.d.ts +5 -0
  91. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +5 -0
  92. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  93. package/Materials/Node/Blocks/Dual/sceneDepthBlock.d.ts +16 -0
  94. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +16 -0
  95. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  96. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.d.ts +16 -0
  97. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js +16 -0
  98. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js.map +1 -1
  99. package/Materials/Node/Blocks/Dual/textureBlock.d.ts +34 -0
  100. package/Materials/Node/Blocks/Dual/textureBlock.js +34 -0
  101. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  102. package/Materials/Node/Blocks/Fragment/TBNBlock.d.ts +17 -0
  103. package/Materials/Node/Blocks/Fragment/TBNBlock.js +17 -2
  104. package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
  105. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.d.ts +7 -0
  106. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.js +7 -0
  107. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.js.map +1 -1
  108. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +21 -0
  109. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +21 -0
  110. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  111. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.d.ts +10 -0
  112. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +10 -0
  113. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  114. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.d.ts +28 -0
  115. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +28 -0
  116. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  117. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.d.ts +30 -0
  118. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +30 -1
  119. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  120. package/Materials/Node/Blocks/Fragment/screenSizeBlock.d.ts +4 -0
  121. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +4 -0
  122. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  123. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.d.ts +5 -0
  124. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +5 -0
  125. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  126. package/Materials/Node/Blocks/Fragment/twirlBlock.d.ts +3 -0
  127. package/Materials/Node/Blocks/Fragment/twirlBlock.js +3 -0
  128. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  129. package/Materials/Node/Blocks/GaussianSplatting/splatReaderBlock.d.ts +6 -0
  130. package/Materials/Node/Blocks/GaussianSplatting/splatReaderBlock.js +6 -0
  131. package/Materials/Node/Blocks/GaussianSplatting/splatReaderBlock.js.map +1 -1
  132. package/Materials/Node/Blocks/Input/inputBlock.d.ts +16 -0
  133. package/Materials/Node/Blocks/Input/inputBlock.js +16 -1
  134. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  135. package/Materials/Node/Blocks/Input/prePassTextureBlock.d.ts +5 -0
  136. package/Materials/Node/Blocks/Input/prePassTextureBlock.js +5 -0
  137. package/Materials/Node/Blocks/Input/prePassTextureBlock.js.map +1 -1
  138. package/Materials/Node/Blocks/PBR/anisotropyBlock.d.ts +10 -0
  139. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +10 -1
  140. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  141. package/Materials/Node/Blocks/PBR/clearCoatBlock.d.ts +23 -0
  142. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +23 -1
  143. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  144. package/Materials/Node/Blocks/PBR/iridescenceBlock.d.ts +17 -0
  145. package/Materials/Node/Blocks/PBR/iridescenceBlock.js +17 -0
  146. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
  147. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +41 -0
  148. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +41 -0
  149. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  150. package/Materials/Node/Blocks/PBR/reflectionBlock.d.ts +21 -0
  151. package/Materials/Node/Blocks/PBR/reflectionBlock.js +21 -0
  152. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  153. package/Materials/Node/Blocks/PBR/refractionBlock.d.ts +29 -0
  154. package/Materials/Node/Blocks/PBR/refractionBlock.js +29 -0
  155. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  156. package/Materials/Node/Blocks/PBR/sheenBlock.d.ts +14 -0
  157. package/Materials/Node/Blocks/PBR/sheenBlock.js +14 -0
  158. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  159. package/Materials/Node/Blocks/PBR/subSurfaceBlock.d.ts +7 -0
  160. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +7 -0
  161. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  162. package/Materials/Node/Blocks/Particle/particleTextureBlock.d.ts +23 -0
  163. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +23 -0
  164. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  165. package/Materials/Node/Blocks/Teleport/teleportInBlock.d.ts +6 -0
  166. package/Materials/Node/Blocks/Teleport/teleportInBlock.js +6 -0
  167. package/Materials/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
  168. package/Materials/Node/Blocks/Teleport/teleportOutBlock.d.ts +17 -0
  169. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js +17 -0
  170. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
  171. package/Materials/Node/Blocks/Vertex/bonesBlock.d.ts +22 -0
  172. package/Materials/Node/Blocks/Vertex/bonesBlock.js +22 -0
  173. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  174. package/Materials/Node/Blocks/Vertex/instancesBlock.d.ts +13 -0
  175. package/Materials/Node/Blocks/Vertex/instancesBlock.js +13 -0
  176. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  177. package/Materials/Node/Blocks/Vertex/lightInformationBlock.d.ts +20 -0
  178. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +20 -0
  179. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  180. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.d.ts +27 -0
  181. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +27 -0
  182. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  183. package/Materials/Node/Blocks/clampBlock.d.ts +10 -0
  184. package/Materials/Node/Blocks/clampBlock.js +10 -0
  185. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  186. package/Materials/Node/Blocks/cloudBlock.d.ts +10 -0
  187. package/Materials/Node/Blocks/cloudBlock.js +10 -0
  188. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  189. package/Materials/Node/Blocks/colorMergerBlock.d.ts +10 -0
  190. package/Materials/Node/Blocks/colorMergerBlock.js +10 -0
  191. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  192. package/Materials/Node/Blocks/conditionalBlock.d.ts +14 -0
  193. package/Materials/Node/Blocks/conditionalBlock.js +14 -0
  194. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  195. package/Materials/Node/Blocks/curveBlock.d.ts +10 -0
  196. package/Materials/Node/Blocks/curveBlock.js +10 -0
  197. package/Materials/Node/Blocks/curveBlock.js.map +1 -1
  198. package/Materials/Node/Blocks/customBlock.d.ts +10 -0
  199. package/Materials/Node/Blocks/customBlock.js +10 -0
  200. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  201. package/Materials/Node/Blocks/debugBlock.d.ts +10 -0
  202. package/Materials/Node/Blocks/debugBlock.js +10 -0
  203. package/Materials/Node/Blocks/debugBlock.js.map +1 -1
  204. package/Materials/Node/Blocks/fresnelBlock.d.ts +4 -0
  205. package/Materials/Node/Blocks/fresnelBlock.js +4 -0
  206. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  207. package/Materials/Node/Blocks/gradientBlock.d.ts +10 -0
  208. package/Materials/Node/Blocks/gradientBlock.js +10 -0
  209. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  210. package/Materials/Node/Blocks/loopBlock.d.ts +10 -0
  211. package/Materials/Node/Blocks/loopBlock.js +10 -0
  212. package/Materials/Node/Blocks/loopBlock.js.map +1 -1
  213. package/Materials/Node/Blocks/matrixBuilderBlock.d.ts +1 -0
  214. package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -0
  215. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  216. package/Materials/Node/Blocks/meshAttributeExistsBlock.d.ts +10 -0
  217. package/Materials/Node/Blocks/meshAttributeExistsBlock.js +10 -0
  218. package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
  219. package/Materials/Node/Blocks/pannerBlock.d.ts +5 -0
  220. package/Materials/Node/Blocks/pannerBlock.js +5 -0
  221. package/Materials/Node/Blocks/pannerBlock.js.map +1 -1
  222. package/Materials/Node/Blocks/remapBlock.d.ts +10 -0
  223. package/Materials/Node/Blocks/remapBlock.js +10 -0
  224. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  225. package/Materials/Node/Blocks/rotate2dBlock.d.ts +1 -0
  226. package/Materials/Node/Blocks/rotate2dBlock.js +1 -0
  227. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  228. package/Materials/Node/Blocks/transformBlock.d.ts +10 -0
  229. package/Materials/Node/Blocks/transformBlock.js +10 -0
  230. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  231. package/Materials/Node/Blocks/triPlanarBlock.d.ts +22 -0
  232. package/Materials/Node/Blocks/triPlanarBlock.js +22 -0
  233. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  234. package/Materials/Node/Blocks/trigonometryBlock.d.ts +10 -0
  235. package/Materials/Node/Blocks/trigonometryBlock.js +10 -0
  236. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  237. package/Materials/Node/Blocks/vectorMergerBlock.d.ts +10 -0
  238. package/Materials/Node/Blocks/vectorMergerBlock.js +10 -0
  239. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  240. package/Materials/Node/Blocks/viewDirectionBlock.d.ts +5 -0
  241. package/Materials/Node/Blocks/viewDirectionBlock.js +5 -0
  242. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  243. package/Materials/Node/Blocks/waveBlock.d.ts +10 -0
  244. package/Materials/Node/Blocks/waveBlock.js +10 -0
  245. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  246. package/Materials/Node/Blocks/worleyNoise3DBlock.d.ts +1 -0
  247. package/Materials/Node/Blocks/worleyNoise3DBlock.js +1 -0
  248. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  249. package/Materials/Node/nodeMaterial.d.ts +13 -0
  250. package/Materials/Node/nodeMaterial.js +14 -2
  251. package/Materials/Node/nodeMaterial.js.map +1 -1
  252. package/Materials/Node/nodeMaterialBlock.d.ts +0 -3
  253. package/Materials/Node/nodeMaterialBlock.js +1 -6
  254. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  255. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +1 -2
  256. package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
  257. package/Materials/Textures/mirrorTexture.js +1 -1
  258. package/Materials/Textures/mirrorTexture.js.map +1 -1
  259. package/Materials/index.d.ts +2 -0
  260. package/Materials/index.js +2 -0
  261. package/Materials/index.js.map +1 -1
  262. package/Maths/math.constants.d.ts +2 -1
  263. package/Maths/math.constants.js +3 -2
  264. package/Maths/math.constants.js.map +1 -1
  265. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +17 -1
  266. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  267. package/Meshes/instancedMesh.js +1 -0
  268. package/Meshes/instancedMesh.js.map +1 -1
  269. package/Meshes/mesh.d.ts +5 -0
  270. package/Meshes/mesh.js +39 -16
  271. package/Meshes/mesh.js.map +1 -1
  272. package/Misc/dataStorage.d.ts +13 -0
  273. package/Misc/dataStorage.js +25 -0
  274. package/Misc/dataStorage.js.map +1 -1
  275. package/Morph/morphTarget.d.ts +9 -5
  276. package/Morph/morphTarget.js +15 -7
  277. package/Morph/morphTarget.js.map +1 -1
  278. package/Morph/morphTargetManager.d.ts +3 -1
  279. package/Morph/morphTargetManager.js +5 -2
  280. package/Morph/morphTargetManager.js.map +1 -1
  281. package/Particles/Node/Blocks/Emitters/boxShapeBlock.js +1 -1
  282. package/Particles/Node/Blocks/Emitters/boxShapeBlock.js.map +1 -1
  283. package/Particles/Node/Blocks/Emitters/coneShapeBlock.js +1 -1
  284. package/Particles/Node/Blocks/Emitters/coneShapeBlock.js.map +1 -1
  285. package/Particles/Node/Blocks/Emitters/customShapeBlock.js +1 -1
  286. package/Particles/Node/Blocks/Emitters/customShapeBlock.js.map +1 -1
  287. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js +1 -1
  288. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js.map +1 -1
  289. package/Particles/Node/Blocks/Emitters/emitters.functions.js +3 -3
  290. package/Particles/Node/Blocks/Emitters/emitters.functions.js.map +1 -1
  291. package/Particles/Node/Blocks/Emitters/meshShapeBlock.js +1 -1
  292. package/Particles/Node/Blocks/Emitters/meshShapeBlock.js.map +1 -1
  293. package/Particles/Node/Blocks/Emitters/pointShapeBlock.js +1 -1
  294. package/Particles/Node/Blocks/Emitters/pointShapeBlock.js.map +1 -1
  295. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js +1 -1
  296. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js.map +1 -1
  297. package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.js +2 -2
  298. package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.js.map +1 -1
  299. package/Particles/Node/Blocks/Update/updateNoiseBlock.js +7 -7
  300. package/Particles/Node/Blocks/Update/updateNoiseBlock.js.map +1 -1
  301. package/Particles/Node/Blocks/particleLocalVariableBlock.js +2 -2
  302. package/Particles/Node/Blocks/particleLocalVariableBlock.js.map +1 -1
  303. package/Particles/Node/nodeParticleBuildState.js +7 -7
  304. package/Particles/Node/nodeParticleBuildState.js.map +1 -1
  305. package/Particles/Node/nodeParticleSystemSet.helper.js +9 -4
  306. package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
  307. package/Particles/particle.d.ts +73 -61
  308. package/Particles/particle.js +106 -91
  309. package/Particles/particle.js.map +1 -1
  310. package/Particles/particleSystem.js +5 -5
  311. package/Particles/particleSystem.js.map +1 -1
  312. package/Particles/thinParticleSystem.function.js +83 -83
  313. package/Particles/thinParticleSystem.function.js.map +1 -1
  314. package/Particles/thinParticleSystem.js +8 -8
  315. package/Particles/thinParticleSystem.js.map +1 -1
  316. package/Physics/v2/Plugins/havokPlugin.d.ts +14 -1
  317. package/Physics/v2/Plugins/havokPlugin.js +154 -10
  318. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  319. package/Probes/reflectionProbe.js +9 -6
  320. package/Probes/reflectionProbe.js.map +1 -1
  321. package/Rendering/objectRenderer.d.ts +3 -1
  322. package/Rendering/objectRenderer.js +28 -8
  323. package/Rendering/objectRenderer.js.map +1 -1
  324. package/Rendering/reflectiveShadowMap.js +1 -1
  325. package/Rendering/reflectiveShadowMap.js.map +1 -1
  326. package/Rendering/thinDepthPeelingRenderer.js +8 -0
  327. package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
  328. package/Shaders/gaussianSplatting.fragment.js +8 -2
  329. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  330. package/Shaders/gaussianSplatting.vertex.js +8 -2
  331. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  332. package/ShadersWGSL/gaussianSplatting.fragment.js +7 -1
  333. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  334. package/ShadersWGSL/gaussianSplatting.vertex.js +8 -2
  335. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  336. package/package.json +1 -1
  337. package/scene.d.ts +22 -1
  338. package/scene.js +15 -15
  339. package/scene.js.map +1 -1
@@ -143,6 +143,9 @@ export declare class InputBlock extends NodeMaterialBlock {
143
143
  */
144
144
  animate(scene: Scene): void;
145
145
  private _emitDefine;
146
+ /**
147
+ * Initialize the block
148
+ */
146
149
  initialize(): void;
147
150
  /**
148
151
  * Set the input block to its default value (based on its type)
@@ -162,7 +165,20 @@ export declare class InputBlock extends NodeMaterialBlock {
162
165
  _transmit(effect: Effect, scene: Scene, material: NodeMaterial): void;
163
166
  protected _buildBlock(state: NodeMaterialBuildState): void;
164
167
  protected _dumpPropertiesCode(): string;
168
+ /**
169
+ * Releases the resources held by the block
170
+ */
165
171
  dispose(): void;
172
+ /**
173
+ * Serializes the block
174
+ * @returns the serialized object
175
+ */
166
176
  serialize(): any;
177
+ /**
178
+ * Deserializes the block
179
+ * @param serializationObject - defines the serialized object
180
+ * @param scene - defines the scene
181
+ * @param rootUrl - defines the root URL
182
+ */
167
183
  _deserialize(serializationObject: any, scene: Scene, rootUrl: string): void;
168
184
  }
@@ -229,7 +229,6 @@ export class InputBlock extends NodeMaterialBlock {
229
229
  * Please note that this value will be ignored if valueCallback is defined
230
230
  */
231
231
  get value() {
232
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
233
232
  return this._storedValue;
234
233
  }
235
234
  set value(value) {
@@ -383,6 +382,9 @@ export class InputBlock extends NodeMaterialBlock {
383
382
  _emitDefine(define, notDefine = false) {
384
383
  return `${notDefine ? "#ifndef" : "#ifdef"} ${define}\n`;
385
384
  }
385
+ /**
386
+ * Initialize the block
387
+ */
386
388
  initialize() {
387
389
  this.associatedVariableName = "";
388
390
  }
@@ -761,10 +763,17 @@ export class InputBlock extends NodeMaterialBlock {
761
763
  }
762
764
  return super._dumpPropertiesCode();
763
765
  }
766
+ /**
767
+ * Releases the resources held by the block
768
+ */
764
769
  dispose() {
765
770
  this.onValueChangedObservable.clear();
766
771
  super.dispose();
767
772
  }
773
+ /**
774
+ * Serializes the block
775
+ * @returns the serialized object
776
+ */
768
777
  serialize() {
769
778
  const serializationObject = super.serialize();
770
779
  serializationObject.type = this.type;
@@ -791,6 +800,12 @@ export class InputBlock extends NodeMaterialBlock {
791
800
  }
792
801
  return serializationObject;
793
802
  }
803
+ /**
804
+ * Deserializes the block
805
+ * @param serializationObject - defines the serialized object
806
+ * @param scene - defines the scene
807
+ * @param rootUrl - defines the root URL
808
+ */
794
809
  _deserialize(serializationObject, scene, rootUrl) {
795
810
  this._mode = serializationObject.mode;
796
811
  super._deserialize(serializationObject, scene, rootUrl);
@@ -1 +1 @@
1
- {"version":3,"file":"inputBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Input/inputBlock.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport { NodeMaterialBlockConnectionPointMode } from \"../../Enums/nodeMaterialBlockConnectionPointMode\";\r\nimport { NodeMaterialSystemValues } from \"../../Enums/nodeMaterialSystemValues\";\r\nimport type { Nullable } from \"../../../../types\";\r\nimport type { Effect } from \"../../../../Materials/effect\";\r\nimport { Matrix, Vector2, Vector3, Vector4 } from \"../../../../Maths/math.vector\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport { GetClass, RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { Color3, Color4, TmpColors, TmpVectors } from \"../../../../Maths/math\";\r\nimport { AnimatedInputBlockTypes } from \"./animatedInputBlockTypes\";\r\nimport { Observable } from \"../../../../Misc/observable\";\r\nimport type { NodeMaterial } from \"../../nodeMaterial\";\r\nimport { PrecisionDate } from \"../../../../Misc/precisionDate\";\r\nimport { ShaderLanguage } from \"../../../../Materials/shaderLanguage\";\r\n\r\nconst remapAttributeName: { [name: string]: string } = {\r\n position2d: \"position\",\r\n // From particle.vertex:\r\n particle_uv: \"vUV\",\r\n particle_color: \"vColor\",\r\n particle_texturemask: \"textureMask\",\r\n particle_positionw: \"vPositionW\",\r\n // From postprocess.vertex:\r\n postprocess_uv: \"vUV\",\r\n};\r\n\r\nconst attributeInFragmentOnly: { [name: string]: boolean } = {\r\n particle_uv: true,\r\n particle_color: true,\r\n particle_texturemask: true,\r\n particle_positionw: true,\r\n postprocess_uv: true,\r\n};\r\n\r\nconst attributeAsUniform: { [name: string]: boolean } = {\r\n particle_texturemask: true,\r\n};\r\n\r\nconst attributeDefine: { [name: string]: string } = {\r\n normal: \"NORMAL\",\r\n tangent: \"TANGENT\",\r\n uv: \"UV1\",\r\n uv2: \"UV2\",\r\n uv3: \"UV3\",\r\n uv4: \"UV4\",\r\n uv5: \"UV5\",\r\n uv6: \"UV6\",\r\n uv7: \"UV7\",\r\n uv8: \"UV8\",\r\n};\r\n\r\n/**\r\n * Block used to expose an input value\r\n */\r\nexport class InputBlock extends NodeMaterialBlock {\r\n private _mode = NodeMaterialBlockConnectionPointMode.Undefined;\r\n private _associatedVariableName: string;\r\n private _storedValue: any;\r\n private _valueCallback: () => any;\r\n private _type: NodeMaterialBlockConnectionPointTypes;\r\n private _animationType = AnimatedInputBlockTypes.None;\r\n private _prefix = \"\";\r\n\r\n /** Gets or set a value used to limit the range of float values */\r\n public min: number = 0;\r\n\r\n /** Gets or set a value used to limit the range of float values */\r\n public max: number = 0;\r\n\r\n /** Gets or set a value indicating that this input can only get 0 and 1 values */\r\n public isBoolean: boolean = false;\r\n\r\n /** Gets or sets a value used by the Node Material editor to determine how to configure the current value if it is a matrix */\r\n public matrixMode: number = 0;\r\n\r\n /** @internal */\r\n public _systemValue: Nullable<NodeMaterialSystemValues> = null;\r\n\r\n /** Gets or sets a boolean indicating that the value of this input will not change after a build */\r\n public isConstant = false;\r\n\r\n /** Gets or sets the group to use to display this block in the Inspector */\r\n public groupInInspector = \"\";\r\n\r\n /** Gets an observable raised when the value is changed */\r\n public onValueChangedObservable = new Observable<InputBlock>();\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to gamma space (for color3/4 only) */\r\n public convertToGammaSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to linear space (for color3/4 only) */\r\n public convertToLinearSpace = false;\r\n\r\n /**\r\n * Gets or sets the connection point type (default is float)\r\n */\r\n public get type(): NodeMaterialBlockConnectionPointTypes {\r\n if (this._type === NodeMaterialBlockConnectionPointTypes.AutoDetect) {\r\n if (this.isUniform && this.value != null) {\r\n if (!isNaN(this.value)) {\r\n this._type = NodeMaterialBlockConnectionPointTypes.Float;\r\n return this._type;\r\n }\r\n\r\n switch (this.value.getClassName()) {\r\n case \"Vector2\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector2;\r\n return this._type;\r\n case \"Vector3\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector3;\r\n return this._type;\r\n case \"Vector4\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector4;\r\n return this._type;\r\n case \"Color3\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Color3;\r\n return this._type;\r\n case \"Color4\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Color4;\r\n return this._type;\r\n case \"Matrix\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Matrix;\r\n return this._type;\r\n }\r\n }\r\n\r\n if (this.isAttribute) {\r\n switch (this.name) {\r\n case \"splatIndex\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Float;\r\n return this._type;\r\n case \"position\":\r\n case \"normal\":\r\n case \"particle_positionw\":\r\n case \"splatPosition\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector3;\r\n return this._type;\r\n case \"uv\":\r\n case \"uv2\":\r\n case \"uv3\":\r\n case \"uv4\":\r\n case \"uv5\":\r\n case \"uv6\":\r\n case \"position2d\":\r\n case \"particle_uv\":\r\n case \"splatScale\":\r\n case \"postprocess_uv\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector2;\r\n return this._type;\r\n case \"matricesIndices\":\r\n case \"matricesWeights\":\r\n case \"matricesIndicesExtra\":\r\n case \"matricesWeightsExtra\":\r\n case \"world0\":\r\n case \"world1\":\r\n case \"world2\":\r\n case \"world3\":\r\n case \"tangent\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector4;\r\n return this._type;\r\n case \"color\":\r\n case \"instanceColor\":\r\n case \"particle_color\":\r\n case \"particle_texturemask\":\r\n case \"splatColor\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Color4;\r\n return this._type;\r\n }\r\n }\r\n\r\n if (this.isSystemValue) {\r\n switch (this._systemValue) {\r\n case NodeMaterialSystemValues.World:\r\n case NodeMaterialSystemValues.WorldView:\r\n case NodeMaterialSystemValues.WorldViewProjection:\r\n case NodeMaterialSystemValues.View:\r\n case NodeMaterialSystemValues.ViewProjection:\r\n case NodeMaterialSystemValues.Projection:\r\n case NodeMaterialSystemValues.ProjectionInverse:\r\n this._type = NodeMaterialBlockConnectionPointTypes.Matrix;\r\n return this._type;\r\n case NodeMaterialSystemValues.CameraPosition:\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector3;\r\n return this._type;\r\n case NodeMaterialSystemValues.CameraForward:\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector3;\r\n return this._type;\r\n case NodeMaterialSystemValues.FogColor:\r\n this._type = NodeMaterialBlockConnectionPointTypes.Color3;\r\n return this._type;\r\n case NodeMaterialSystemValues.DeltaTime:\r\n case NodeMaterialSystemValues.MaterialAlpha:\r\n this._type = NodeMaterialBlockConnectionPointTypes.Float;\r\n return this._type;\r\n case NodeMaterialSystemValues.CameraParameters:\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector4;\r\n return this._type;\r\n }\r\n }\r\n }\r\n\r\n return this._type;\r\n }\r\n\r\n /**\r\n * Creates a new InputBlock\r\n * @param name defines the block name\r\n * @param target defines the target of that block (Vertex by default)\r\n * @param type defines the type of the input (can be set to NodeMaterialBlockConnectionPointTypes.AutoDetect)\r\n */\r\n public constructor(name: string, target = NodeMaterialBlockTargets.Vertex, type: NodeMaterialBlockConnectionPointTypes = NodeMaterialBlockConnectionPointTypes.AutoDetect) {\r\n super(name, target, false);\r\n\r\n this._type = type;\r\n\r\n this.setDefaultValue();\r\n\r\n this.registerOutput(\"output\", type);\r\n }\r\n\r\n /**\r\n * Validates if a name is a reserve word.\r\n * @param newName the new name to be given to the node.\r\n * @returns false if the name is a reserve word, else true.\r\n */\r\n public override validateBlockName(newName: string) {\r\n if (!this.isAttribute) {\r\n return super.validateBlockName(newName);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Set the source of this connection point to a vertex attribute\r\n * @param attributeName defines the attribute name (position, uv, normal, etc...). If not specified it will take the connection point name\r\n * @returns the current connection point\r\n */\r\n public setAsAttribute(attributeName?: string): InputBlock {\r\n this._mode = NodeMaterialBlockConnectionPointMode.Attribute;\r\n if (attributeName) {\r\n this.name = attributeName;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Set the source of this connection point to a system value\r\n * @param value define the system value to use (world, view, etc...) or null to switch to manual value\r\n * @returns the current connection point\r\n */\r\n public setAsSystemValue(value: Nullable<NodeMaterialSystemValues>): InputBlock {\r\n this.systemValue = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets or sets the value of that point.\r\n * Please note that this value will be ignored if valueCallback is defined\r\n */\r\n public get value(): any {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\r\n return this._storedValue;\r\n }\r\n\r\n public set value(value: any) {\r\n if (this.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n if (this.isBoolean) {\r\n value = value ? 1 : 0;\r\n } else if (this.min !== this.max) {\r\n value = Math.max(this.min, value);\r\n value = Math.min(this.max, value);\r\n }\r\n }\r\n\r\n this._storedValue = value;\r\n this._mode = NodeMaterialBlockConnectionPointMode.Uniform;\r\n\r\n this.onValueChangedObservable.notifyObservers(this);\r\n }\r\n\r\n /**\r\n * Gets or sets a callback used to get the value of that point.\r\n * Please note that setting this value will force the connection point to ignore the value property\r\n */\r\n public get valueCallback(): () => any {\r\n return this._valueCallback;\r\n }\r\n\r\n public set valueCallback(value: () => any) {\r\n this._valueCallback = value;\r\n this._mode = NodeMaterialBlockConnectionPointMode.Uniform;\r\n }\r\n\r\n /**\r\n * Gets the declaration variable name in the shader\r\n */\r\n public get declarationVariableName(): string {\r\n return this._associatedVariableName;\r\n }\r\n\r\n /**\r\n * Gets or sets the associated variable name in the shader\r\n */\r\n public get associatedVariableName(): string {\r\n return this._prefix + this._associatedVariableName;\r\n }\r\n\r\n public set associatedVariableName(value: string) {\r\n this._associatedVariableName = value;\r\n }\r\n\r\n /** Gets or sets the type of animation applied to the input */\r\n public get animationType() {\r\n return this._animationType;\r\n }\r\n\r\n public set animationType(value: AnimatedInputBlockTypes) {\r\n this._animationType = value;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that this connection point not defined yet\r\n */\r\n public get isUndefined(): boolean {\r\n return this._mode === NodeMaterialBlockConnectionPointMode.Undefined;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating that this connection point is coming from an uniform.\r\n * In this case the connection point name must be the name of the uniform to use.\r\n * Can only be set on inputs\r\n */\r\n public get isUniform(): boolean {\r\n return this._mode === NodeMaterialBlockConnectionPointMode.Uniform;\r\n }\r\n\r\n public set isUniform(value: boolean) {\r\n this._mode = value ? NodeMaterialBlockConnectionPointMode.Uniform : NodeMaterialBlockConnectionPointMode.Undefined;\r\n this.associatedVariableName = \"\";\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating that this connection point is coming from an attribute.\r\n * In this case the connection point name must be the name of the attribute to use\r\n * Can only be set on inputs\r\n */\r\n public get isAttribute(): boolean {\r\n return this._mode === NodeMaterialBlockConnectionPointMode.Attribute;\r\n }\r\n\r\n public set isAttribute(value: boolean) {\r\n this._mode = value ? NodeMaterialBlockConnectionPointMode.Attribute : NodeMaterialBlockConnectionPointMode.Undefined;\r\n this.associatedVariableName = \"\";\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating that this connection point is generating a varying variable.\r\n * Can only be set on exit points\r\n */\r\n public get isVarying(): boolean {\r\n return this._mode === NodeMaterialBlockConnectionPointMode.Varying;\r\n }\r\n\r\n public set isVarying(value: boolean) {\r\n this._mode = value ? NodeMaterialBlockConnectionPointMode.Varying : NodeMaterialBlockConnectionPointMode.Undefined;\r\n this.associatedVariableName = \"\";\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that the current connection point is a system value\r\n */\r\n public get isSystemValue(): boolean {\r\n return this._systemValue != null;\r\n }\r\n\r\n /**\r\n * Gets or sets the current well known value or null if not defined as a system value\r\n */\r\n public get systemValue(): Nullable<NodeMaterialSystemValues> {\r\n return this._systemValue;\r\n }\r\n\r\n public set systemValue(value: Nullable<NodeMaterialSystemValues>) {\r\n this._mode = NodeMaterialBlockConnectionPointMode.Uniform;\r\n this.associatedVariableName = \"\";\r\n this._systemValue = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"InputBlock\";\r\n }\r\n\r\n /**\r\n * Animate the input if animationType !== None\r\n * @param scene defines the rendering scene\r\n */\r\n public animate(scene: Scene) {\r\n switch (this._animationType) {\r\n case AnimatedInputBlockTypes.Time: {\r\n if (this.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n this.value += scene.getAnimationRatio() * 0.01;\r\n }\r\n break;\r\n }\r\n case AnimatedInputBlockTypes.RealTime: {\r\n if (this.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n this.value = (PrecisionDate.Now - scene.getEngine().startTime) / 1000;\r\n }\r\n break;\r\n }\r\n case AnimatedInputBlockTypes.MouseInfo: {\r\n if (this.type === NodeMaterialBlockConnectionPointTypes.Vector4) {\r\n const event = scene._inputManager._originMouseEvent;\r\n if (event) {\r\n const x = event.offsetX;\r\n const y = event.offsetY;\r\n const z = (event.buttons & 1) != 0 ? 1 : 0;\r\n const w = (event.buttons & 2) != 0 ? 1 : 0;\r\n this.value = new Vector4(x, y, z, w);\r\n } else {\r\n this.value = new Vector4(0, 0, 0, 0);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private _emitDefine(define: string, notDefine = false): string {\r\n return `${notDefine ? \"#ifndef\" : \"#ifdef\"} ${define}\\n`;\r\n }\r\n\r\n public override initialize() {\r\n this.associatedVariableName = \"\";\r\n }\r\n\r\n /**\r\n * Set the input block to its default value (based on its type)\r\n */\r\n public setDefaultValue() {\r\n switch (this.type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n this.value = 0;\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n this.value = Vector2.Zero();\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n this.value = Vector3.Zero();\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n this.value = Vector4.Zero();\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n this.value = Color3.White();\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n this.value = new Color4(1, 1, 1, 1);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n this.value = Matrix.Identity();\r\n break;\r\n }\r\n }\r\n\r\n private _emitConstant(state: NodeMaterialBuildState) {\r\n switch (this.type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n return `${state._emitFloat(this.value)}`;\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n return `vec2(${this.value.x}, ${this.value.y})`;\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n return `vec3(${this.value.x}, ${this.value.y}, ${this.value.z})`;\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n return `vec4(${this.value.x}, ${this.value.y}, ${this.value.z}, ${this.value.w})`;\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n TmpColors.Color3[0].set(this.value.r, this.value.g, this.value.b);\r\n if (this.convertToGammaSpace) {\r\n TmpColors.Color3[0].toGammaSpaceToRef(TmpColors.Color3[0], state.sharedData.scene.getEngine().useExactSrgbConversions);\r\n }\r\n if (this.convertToLinearSpace) {\r\n TmpColors.Color3[0].toLinearSpaceToRef(TmpColors.Color3[0], state.sharedData.scene.getEngine().useExactSrgbConversions);\r\n }\r\n return `vec3(${TmpColors.Color3[0].r}, ${TmpColors.Color3[0].g}, ${TmpColors.Color3[0].b})`;\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n TmpColors.Color4[0].set(this.value.r, this.value.g, this.value.b, this.value.a);\r\n if (this.convertToGammaSpace) {\r\n TmpColors.Color4[0].toGammaSpaceToRef(TmpColors.Color4[0], state.sharedData.scene.getEngine().useExactSrgbConversions);\r\n }\r\n if (this.convertToLinearSpace) {\r\n TmpColors.Color4[0].toLinearSpaceToRef(TmpColors.Color4[0], state.sharedData.scene.getEngine().useExactSrgbConversions);\r\n }\r\n return `vec4(${TmpColors.Color4[0].r}, ${TmpColors.Color4[0].g}, ${TmpColors.Color4[0].b}, ${TmpColors.Color4[0].a})`;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /** @internal */\r\n public get _noContextSwitch(): boolean {\r\n return attributeInFragmentOnly[this.name];\r\n }\r\n\r\n private _emit(state: NodeMaterialBuildState) {\r\n // Uniforms\r\n if (this.isUniform) {\r\n if (!this._associatedVariableName) {\r\n this._associatedVariableName = state._getFreeVariableName(\"u_\" + this.name);\r\n }\r\n\r\n if (this.isConstant) {\r\n if (state.constants.indexOf(this.associatedVariableName) !== -1) {\r\n return;\r\n }\r\n state.constants.push(this.associatedVariableName);\r\n state._constantDeclaration += state._declareOutput(this.output, true) + ` = ${this._emitConstant(state)};\\n`;\r\n return;\r\n }\r\n\r\n if (state.uniforms.indexOf(this.associatedVariableName) !== -1) {\r\n return;\r\n }\r\n\r\n state._emitUniformFromString(this._associatedVariableName, this.type);\r\n\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._prefix = \"uniforms.\";\r\n }\r\n\r\n // well known\r\n const hints = state.sharedData.hints;\r\n if (this._systemValue !== null && this._systemValue !== undefined) {\r\n switch (this._systemValue) {\r\n case NodeMaterialSystemValues.WorldView:\r\n hints.needWorldViewMatrix = true;\r\n break;\r\n case NodeMaterialSystemValues.WorldViewProjection:\r\n hints.needWorldViewProjectionMatrix = true;\r\n break;\r\n }\r\n } else {\r\n if (this._animationType !== AnimatedInputBlockTypes.None) {\r\n state.sharedData.animatedInputs.push(this);\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Attribute\r\n if (this.isAttribute) {\r\n this.associatedVariableName = remapAttributeName[this.name] ?? this.name;\r\n\r\n if (this.name === \"particle_positionw\") {\r\n state.sharedData.defines[\"POSITIONW_AS_VARYING\"] = \"true\";\r\n }\r\n if (this.target === NodeMaterialBlockTargets.Vertex && state._vertexState) {\r\n // Attribute for fragment need to be carried over by varyings\r\n if (attributeInFragmentOnly[this.name]) {\r\n if (attributeAsUniform[this.name]) {\r\n state._emitUniformFromString(this.declarationVariableName, this.type);\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._prefix = `vertexInputs.`;\r\n }\r\n } else {\r\n state._emitVaryingFromString(this.declarationVariableName, this.type);\r\n }\r\n } else {\r\n this._emit(state._vertexState);\r\n }\r\n return;\r\n }\r\n\r\n const alreadyDeclared = state.attributes.indexOf(this.declarationVariableName) !== -1;\r\n\r\n if (!alreadyDeclared) {\r\n state.attributes.push(this.declarationVariableName);\r\n }\r\n\r\n if (attributeInFragmentOnly[this.name]) {\r\n if (attributeAsUniform[this.name]) {\r\n if (!alreadyDeclared) {\r\n state._emitUniformFromString(this.declarationVariableName, this.type);\r\n }\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._prefix = `uniforms.`;\r\n }\r\n } else {\r\n if (!alreadyDeclared) {\r\n state._emitVaryingFromString(this.declarationVariableName, this.type);\r\n }\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._prefix = `fragmentInputs.`;\r\n }\r\n }\r\n } else {\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n if (!alreadyDeclared) {\r\n const defineName = attributeDefine[this.name];\r\n if (defineName) {\r\n state._attributeDeclaration += this._emitDefine(defineName);\r\n state._attributeDeclaration += `attribute ${this.declarationVariableName}: ${state._getShaderType(this.type)};\\n`;\r\n state._attributeDeclaration += `#else\\n`;\r\n state._attributeDeclaration += `var<private> ${this.declarationVariableName}: ${state._getShaderType(this.type)} = ${state._getShaderType(this.type)}(0.);\\n`;\r\n state._attributeDeclaration += `#endif\\n`;\r\n } else {\r\n state._attributeDeclaration += `attribute ${this.declarationVariableName}: ${state._getShaderType(this.type)};\\n`;\r\n }\r\n }\r\n this._prefix = `vertexInputs.`;\r\n } else {\r\n if (!alreadyDeclared) {\r\n const defineName = attributeDefine[this.name];\r\n if (defineName) {\r\n state._attributeDeclaration += this._emitDefine(defineName);\r\n state._attributeDeclaration += `attribute ${state._getShaderType(this.type)} ${this.declarationVariableName};\\n`;\r\n state._attributeDeclaration += `#else\\n`;\r\n state._attributeDeclaration += `${state._getShaderType(this.type)} ${this.declarationVariableName} = ${state._getShaderType(this.type)}(0.);\\n`;\r\n state._attributeDeclaration += `#endif\\n`;\r\n } else {\r\n state._attributeDeclaration += `attribute ${state._getShaderType(this.type)} ${this.declarationVariableName};\\n`;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _transmitWorld(effect: Effect, world: Matrix, worldView: Matrix, worldViewProjection: Matrix) {\r\n if (!this._systemValue) {\r\n return;\r\n }\r\n\r\n const variableName = this._associatedVariableName;\r\n switch (this._systemValue) {\r\n case NodeMaterialSystemValues.World:\r\n effect.setMatrix(variableName, world);\r\n break;\r\n case NodeMaterialSystemValues.WorldView:\r\n effect.setMatrix(variableName, worldView);\r\n break;\r\n case NodeMaterialSystemValues.WorldViewProjection:\r\n effect.setMatrix(variableName, worldViewProjection);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _transmit(effect: Effect, scene: Scene, material: NodeMaterial) {\r\n if (this.isAttribute) {\r\n return;\r\n }\r\n\r\n const variableName = this._associatedVariableName;\r\n if (this._systemValue) {\r\n switch (this._systemValue) {\r\n case NodeMaterialSystemValues.World:\r\n case NodeMaterialSystemValues.WorldView:\r\n case NodeMaterialSystemValues.WorldViewProjection:\r\n return;\r\n case NodeMaterialSystemValues.View:\r\n effect.setMatrix(variableName, scene.getViewMatrix());\r\n break;\r\n case NodeMaterialSystemValues.Projection:\r\n effect.setMatrix(variableName, scene.getProjectionMatrix());\r\n break;\r\n case NodeMaterialSystemValues.ProjectionInverse: {\r\n const projectionMatrix = scene.getProjectionMatrix();\r\n projectionMatrix.invertToRef(TmpVectors.Matrix[0]);\r\n effect.setMatrix(variableName, TmpVectors.Matrix[0]);\r\n break;\r\n }\r\n case NodeMaterialSystemValues.ViewProjection:\r\n effect.setMatrix(variableName, scene.getTransformMatrix());\r\n break;\r\n case NodeMaterialSystemValues.CameraPosition:\r\n scene.bindEyePosition(effect, variableName, true);\r\n break;\r\n case NodeMaterialSystemValues.CameraForward:\r\n if (scene.activeCamera) {\r\n const transform = scene.activeCamera.getWorldMatrix();\r\n const forward = TmpVectors.Vector3[2];\r\n forward.set(0, 0, scene.useRightHandedSystem ? -1 : 1);\r\n const worldForward = new Vector3();\r\n Vector3.TransformNormalToRef(forward, transform, worldForward);\r\n worldForward.normalize();\r\n\r\n effect.setVector3(variableName, worldForward);\r\n }\r\n break;\r\n case NodeMaterialSystemValues.FogColor:\r\n effect.setColor3(variableName, scene.fogColor);\r\n break;\r\n case NodeMaterialSystemValues.DeltaTime:\r\n effect.setFloat(variableName, scene.deltaTime / 1000.0);\r\n break;\r\n case NodeMaterialSystemValues.CameraParameters:\r\n if (scene.activeCamera) {\r\n effect.setFloat4(\r\n variableName,\r\n scene.getEngine().hasOriginBottomLeft ? -1 : 1,\r\n scene.activeCamera.minZ,\r\n scene.activeCamera.maxZ,\r\n 1 / scene.activeCamera.maxZ\r\n );\r\n }\r\n break;\r\n case NodeMaterialSystemValues.MaterialAlpha:\r\n effect.setFloat(variableName, material.alpha);\r\n break;\r\n }\r\n return;\r\n }\r\n\r\n const value = this._valueCallback ? this._valueCallback() : this._storedValue;\r\n\r\n if (value === null) {\r\n return;\r\n }\r\n\r\n switch (this.type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n effect.setFloat(variableName, value);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Int:\r\n effect.setInt(variableName, value);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n TmpColors.Color3[0].set(this.value.r, this.value.g, this.value.b);\r\n if (this.convertToGammaSpace) {\r\n TmpColors.Color3[0].toGammaSpaceToRef(TmpColors.Color3[0], scene.getEngine().useExactSrgbConversions);\r\n }\r\n if (this.convertToLinearSpace) {\r\n TmpColors.Color3[0].toLinearSpaceToRef(TmpColors.Color3[0], scene.getEngine().useExactSrgbConversions);\r\n }\r\n effect.setColor3(variableName, TmpColors.Color3[0]);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n TmpColors.Color4[0].set(this.value.r, this.value.g, this.value.b, this.value.a);\r\n if (this.convertToGammaSpace) {\r\n TmpColors.Color4[0].toGammaSpaceToRef(TmpColors.Color4[0], scene.getEngine().useExactSrgbConversions);\r\n }\r\n if (this.convertToLinearSpace) {\r\n TmpColors.Color4[0].toLinearSpaceToRef(TmpColors.Color4[0], scene.getEngine().useExactSrgbConversions);\r\n }\r\n effect.setDirectColor4(variableName, TmpColors.Color4[0]);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n effect.setVector2(variableName, value);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n effect.setVector3(variableName, value);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n effect.setVector4(variableName, value);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n effect.setMatrix(variableName, value);\r\n break;\r\n }\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (this.isUniform || this.isSystemValue) {\r\n state.sharedData.inputBlocks.push(this);\r\n }\r\n\r\n this._emit(state);\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const variableName = this._codeVariableName;\r\n\r\n if (this.isAttribute) {\r\n return super._dumpPropertiesCode() + `${variableName}.setAsAttribute(\"${this.name}\");\\n`;\r\n }\r\n if (this.isSystemValue) {\r\n return super._dumpPropertiesCode() + `${variableName}.setAsSystemValue(BABYLON.NodeMaterialSystemValues.${NodeMaterialSystemValues[this._systemValue!]});\\n`;\r\n }\r\n if (this.isUniform) {\r\n const codes: string[] = [];\r\n\r\n let valueString = \"\";\r\n\r\n switch (this.type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n valueString = `${this.value}`;\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n valueString = `new BABYLON.Vector2(${this.value.x}, ${this.value.y})`;\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n valueString = `new BABYLON.Vector3(${this.value.x}, ${this.value.y}, ${this.value.z})`;\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n valueString = `new BABYLON.Vector4(${this.value.x}, ${this.value.y}, ${this.value.z}, ${this.value.w})`;\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n valueString = `new BABYLON.Color3(${this.value.r}, ${this.value.g}, ${this.value.b})`;\r\n if (this.convertToGammaSpace) {\r\n valueString += \".toGammaSpace()\";\r\n }\r\n if (this.convertToLinearSpace) {\r\n valueString += \".toLinearSpace()\";\r\n }\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n valueString = `new BABYLON.Color4(${this.value.r}, ${this.value.g}, ${this.value.b}, ${this.value.a})`;\r\n if (this.convertToGammaSpace) {\r\n valueString += \".toGammaSpace()\";\r\n }\r\n if (this.convertToLinearSpace) {\r\n valueString += \".toLinearSpace()\";\r\n }\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n valueString = `BABYLON.Matrix.FromArray([${(this.value as Matrix).m.join(\", \")}])`;\r\n break;\r\n }\r\n\r\n // Common Property \"Value\"\r\n codes.push(`${variableName}.value = ${valueString}`);\r\n\r\n // Float-Value-Specific Properties\r\n if (this.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n codes.push(\r\n `${variableName}.min = ${this.min}`,\r\n `${variableName}.max = ${this.max}`,\r\n `${variableName}.isBoolean = ${this.isBoolean}`,\r\n `${variableName}.matrixMode = ${this.matrixMode}`,\r\n `${variableName}.animationType = BABYLON.AnimatedInputBlockTypes.${AnimatedInputBlockTypes[this.animationType]}`\r\n );\r\n }\r\n\r\n // Common Property \"Type\"\r\n codes.push(`${variableName}.isConstant = ${this.isConstant}`);\r\n\r\n codes.push(\"\");\r\n\r\n return super._dumpPropertiesCode() + codes.join(\";\\n\");\r\n }\r\n return super._dumpPropertiesCode();\r\n }\r\n\r\n public override dispose() {\r\n this.onValueChangedObservable.clear();\r\n\r\n super.dispose();\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.type = this.type;\r\n serializationObject.mode = this._mode;\r\n serializationObject.systemValue = this._systemValue;\r\n serializationObject.animationType = this._animationType;\r\n serializationObject.min = this.min;\r\n serializationObject.max = this.max;\r\n serializationObject.isBoolean = this.isBoolean;\r\n serializationObject.matrixMode = this.matrixMode;\r\n serializationObject.isConstant = this.isConstant;\r\n serializationObject.groupInInspector = this.groupInInspector;\r\n serializationObject.convertToGammaSpace = this.convertToGammaSpace;\r\n serializationObject.convertToLinearSpace = this.convertToLinearSpace;\r\n\r\n if (this._storedValue != null && this._mode === NodeMaterialBlockConnectionPointMode.Uniform) {\r\n if (this._storedValue.asArray) {\r\n serializationObject.valueType = \"BABYLON.\" + this._storedValue.getClassName();\r\n serializationObject.value = this._storedValue.asArray();\r\n } else {\r\n serializationObject.valueType = \"number\";\r\n serializationObject.value = this._storedValue;\r\n }\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n this._mode = serializationObject.mode;\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this._type = serializationObject.type;\r\n\r\n this._systemValue = serializationObject.systemValue || serializationObject.wellKnownValue;\r\n this._animationType = serializationObject.animationType;\r\n this.min = serializationObject.min || 0;\r\n this.max = serializationObject.max || 0;\r\n this.isBoolean = !!serializationObject.isBoolean;\r\n this.matrixMode = serializationObject.matrixMode || 0;\r\n this.isConstant = !!serializationObject.isConstant;\r\n this.groupInInspector = serializationObject.groupInInspector || \"\";\r\n this.convertToGammaSpace = !!serializationObject.convertToGammaSpace;\r\n this.convertToLinearSpace = !!serializationObject.convertToLinearSpace;\r\n\r\n // Tangents back compat\r\n if (\r\n serializationObject.name === \"tangent\" &&\r\n serializationObject.mode === NodeMaterialBlockConnectionPointMode.Attribute &&\r\n serializationObject.type === NodeMaterialBlockConnectionPointTypes.Vector3\r\n ) {\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector4;\r\n }\r\n\r\n if (!serializationObject.valueType) {\r\n return;\r\n }\r\n\r\n if (serializationObject.valueType === \"number\") {\r\n this._storedValue = serializationObject.value;\r\n } else {\r\n const valueType = GetClass(serializationObject.valueType);\r\n\r\n if (valueType) {\r\n this._storedValue = valueType.FromArray(serializationObject.value);\r\n }\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.InputBlock\", InputBlock);\r\n"]}
1
+ {"version":3,"file":"inputBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Input/inputBlock.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport { NodeMaterialBlockConnectionPointMode } from \"../../Enums/nodeMaterialBlockConnectionPointMode\";\r\nimport { NodeMaterialSystemValues } from \"../../Enums/nodeMaterialSystemValues\";\r\nimport type { Nullable } from \"../../../../types\";\r\nimport type { Effect } from \"../../../../Materials/effect\";\r\nimport { Matrix, Vector2, Vector3, Vector4 } from \"../../../../Maths/math.vector\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport { GetClass, RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { Color3, Color4, TmpColors, TmpVectors } from \"../../../../Maths/math\";\r\nimport { AnimatedInputBlockTypes } from \"./animatedInputBlockTypes\";\r\nimport { Observable } from \"../../../../Misc/observable\";\r\nimport type { NodeMaterial } from \"../../nodeMaterial\";\r\nimport { PrecisionDate } from \"../../../../Misc/precisionDate\";\r\nimport { ShaderLanguage } from \"../../../../Materials/shaderLanguage\";\r\n\r\nconst remapAttributeName: { [name: string]: string } = {\r\n position2d: \"position\",\r\n // From particle.vertex:\r\n particle_uv: \"vUV\",\r\n particle_color: \"vColor\",\r\n particle_texturemask: \"textureMask\",\r\n particle_positionw: \"vPositionW\",\r\n // From postprocess.vertex:\r\n postprocess_uv: \"vUV\",\r\n};\r\n\r\nconst attributeInFragmentOnly: { [name: string]: boolean } = {\r\n particle_uv: true,\r\n particle_color: true,\r\n particle_texturemask: true,\r\n particle_positionw: true,\r\n postprocess_uv: true,\r\n};\r\n\r\nconst attributeAsUniform: { [name: string]: boolean } = {\r\n particle_texturemask: true,\r\n};\r\n\r\nconst attributeDefine: { [name: string]: string } = {\r\n normal: \"NORMAL\",\r\n tangent: \"TANGENT\",\r\n uv: \"UV1\",\r\n uv2: \"UV2\",\r\n uv3: \"UV3\",\r\n uv4: \"UV4\",\r\n uv5: \"UV5\",\r\n uv6: \"UV6\",\r\n uv7: \"UV7\",\r\n uv8: \"UV8\",\r\n};\r\n\r\n/**\r\n * Block used to expose an input value\r\n */\r\nexport class InputBlock extends NodeMaterialBlock {\r\n private _mode = NodeMaterialBlockConnectionPointMode.Undefined;\r\n private _associatedVariableName: string;\r\n private _storedValue: any;\r\n private _valueCallback: () => any;\r\n private _type: NodeMaterialBlockConnectionPointTypes;\r\n private _animationType = AnimatedInputBlockTypes.None;\r\n private _prefix = \"\";\r\n\r\n /** Gets or set a value used to limit the range of float values */\r\n public min: number = 0;\r\n\r\n /** Gets or set a value used to limit the range of float values */\r\n public max: number = 0;\r\n\r\n /** Gets or set a value indicating that this input can only get 0 and 1 values */\r\n public isBoolean: boolean = false;\r\n\r\n /** Gets or sets a value used by the Node Material editor to determine how to configure the current value if it is a matrix */\r\n public matrixMode: number = 0;\r\n\r\n /** @internal */\r\n public _systemValue: Nullable<NodeMaterialSystemValues> = null;\r\n\r\n /** Gets or sets a boolean indicating that the value of this input will not change after a build */\r\n public isConstant = false;\r\n\r\n /** Gets or sets the group to use to display this block in the Inspector */\r\n public groupInInspector = \"\";\r\n\r\n /** Gets an observable raised when the value is changed */\r\n public onValueChangedObservable = new Observable<InputBlock>();\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to gamma space (for color3/4 only) */\r\n public convertToGammaSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to linear space (for color3/4 only) */\r\n public convertToLinearSpace = false;\r\n\r\n /**\r\n * Gets or sets the connection point type (default is float)\r\n */\r\n public get type(): NodeMaterialBlockConnectionPointTypes {\r\n if (this._type === NodeMaterialBlockConnectionPointTypes.AutoDetect) {\r\n if (this.isUniform && this.value != null) {\r\n if (!isNaN(this.value)) {\r\n this._type = NodeMaterialBlockConnectionPointTypes.Float;\r\n return this._type;\r\n }\r\n\r\n switch (this.value.getClassName()) {\r\n case \"Vector2\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector2;\r\n return this._type;\r\n case \"Vector3\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector3;\r\n return this._type;\r\n case \"Vector4\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector4;\r\n return this._type;\r\n case \"Color3\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Color3;\r\n return this._type;\r\n case \"Color4\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Color4;\r\n return this._type;\r\n case \"Matrix\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Matrix;\r\n return this._type;\r\n }\r\n }\r\n\r\n if (this.isAttribute) {\r\n switch (this.name) {\r\n case \"splatIndex\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Float;\r\n return this._type;\r\n case \"position\":\r\n case \"normal\":\r\n case \"particle_positionw\":\r\n case \"splatPosition\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector3;\r\n return this._type;\r\n case \"uv\":\r\n case \"uv2\":\r\n case \"uv3\":\r\n case \"uv4\":\r\n case \"uv5\":\r\n case \"uv6\":\r\n case \"position2d\":\r\n case \"particle_uv\":\r\n case \"splatScale\":\r\n case \"postprocess_uv\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector2;\r\n return this._type;\r\n case \"matricesIndices\":\r\n case \"matricesWeights\":\r\n case \"matricesIndicesExtra\":\r\n case \"matricesWeightsExtra\":\r\n case \"world0\":\r\n case \"world1\":\r\n case \"world2\":\r\n case \"world3\":\r\n case \"tangent\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector4;\r\n return this._type;\r\n case \"color\":\r\n case \"instanceColor\":\r\n case \"particle_color\":\r\n case \"particle_texturemask\":\r\n case \"splatColor\":\r\n this._type = NodeMaterialBlockConnectionPointTypes.Color4;\r\n return this._type;\r\n }\r\n }\r\n\r\n if (this.isSystemValue) {\r\n switch (this._systemValue) {\r\n case NodeMaterialSystemValues.World:\r\n case NodeMaterialSystemValues.WorldView:\r\n case NodeMaterialSystemValues.WorldViewProjection:\r\n case NodeMaterialSystemValues.View:\r\n case NodeMaterialSystemValues.ViewProjection:\r\n case NodeMaterialSystemValues.Projection:\r\n case NodeMaterialSystemValues.ProjectionInverse:\r\n this._type = NodeMaterialBlockConnectionPointTypes.Matrix;\r\n return this._type;\r\n case NodeMaterialSystemValues.CameraPosition:\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector3;\r\n return this._type;\r\n case NodeMaterialSystemValues.CameraForward:\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector3;\r\n return this._type;\r\n case NodeMaterialSystemValues.FogColor:\r\n this._type = NodeMaterialBlockConnectionPointTypes.Color3;\r\n return this._type;\r\n case NodeMaterialSystemValues.DeltaTime:\r\n case NodeMaterialSystemValues.MaterialAlpha:\r\n this._type = NodeMaterialBlockConnectionPointTypes.Float;\r\n return this._type;\r\n case NodeMaterialSystemValues.CameraParameters:\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector4;\r\n return this._type;\r\n }\r\n }\r\n }\r\n\r\n return this._type;\r\n }\r\n\r\n /**\r\n * Creates a new InputBlock\r\n * @param name defines the block name\r\n * @param target defines the target of that block (Vertex by default)\r\n * @param type defines the type of the input (can be set to NodeMaterialBlockConnectionPointTypes.AutoDetect)\r\n */\r\n public constructor(name: string, target = NodeMaterialBlockTargets.Vertex, type: NodeMaterialBlockConnectionPointTypes = NodeMaterialBlockConnectionPointTypes.AutoDetect) {\r\n super(name, target, false);\r\n\r\n this._type = type;\r\n\r\n this.setDefaultValue();\r\n\r\n this.registerOutput(\"output\", type);\r\n }\r\n\r\n /**\r\n * Validates if a name is a reserve word.\r\n * @param newName the new name to be given to the node.\r\n * @returns false if the name is a reserve word, else true.\r\n */\r\n public override validateBlockName(newName: string) {\r\n if (!this.isAttribute) {\r\n return super.validateBlockName(newName);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Set the source of this connection point to a vertex attribute\r\n * @param attributeName defines the attribute name (position, uv, normal, etc...). If not specified it will take the connection point name\r\n * @returns the current connection point\r\n */\r\n public setAsAttribute(attributeName?: string): InputBlock {\r\n this._mode = NodeMaterialBlockConnectionPointMode.Attribute;\r\n if (attributeName) {\r\n this.name = attributeName;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Set the source of this connection point to a system value\r\n * @param value define the system value to use (world, view, etc...) or null to switch to manual value\r\n * @returns the current connection point\r\n */\r\n public setAsSystemValue(value: Nullable<NodeMaterialSystemValues>): InputBlock {\r\n this.systemValue = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets or sets the value of that point.\r\n * Please note that this value will be ignored if valueCallback is defined\r\n */\r\n public get value(): any {\r\n return this._storedValue;\r\n }\r\n\r\n public set value(value: any) {\r\n if (this.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n if (this.isBoolean) {\r\n value = value ? 1 : 0;\r\n } else if (this.min !== this.max) {\r\n value = Math.max(this.min, value);\r\n value = Math.min(this.max, value);\r\n }\r\n }\r\n\r\n this._storedValue = value;\r\n this._mode = NodeMaterialBlockConnectionPointMode.Uniform;\r\n\r\n this.onValueChangedObservable.notifyObservers(this);\r\n }\r\n\r\n /**\r\n * Gets or sets a callback used to get the value of that point.\r\n * Please note that setting this value will force the connection point to ignore the value property\r\n */\r\n public get valueCallback(): () => any {\r\n return this._valueCallback;\r\n }\r\n\r\n public set valueCallback(value: () => any) {\r\n this._valueCallback = value;\r\n this._mode = NodeMaterialBlockConnectionPointMode.Uniform;\r\n }\r\n\r\n /**\r\n * Gets the declaration variable name in the shader\r\n */\r\n public get declarationVariableName(): string {\r\n return this._associatedVariableName;\r\n }\r\n\r\n /**\r\n * Gets or sets the associated variable name in the shader\r\n */\r\n public get associatedVariableName(): string {\r\n return this._prefix + this._associatedVariableName;\r\n }\r\n\r\n public set associatedVariableName(value: string) {\r\n this._associatedVariableName = value;\r\n }\r\n\r\n /** Gets or sets the type of animation applied to the input */\r\n public get animationType() {\r\n return this._animationType;\r\n }\r\n\r\n public set animationType(value: AnimatedInputBlockTypes) {\r\n this._animationType = value;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that this connection point not defined yet\r\n */\r\n public get isUndefined(): boolean {\r\n return this._mode === NodeMaterialBlockConnectionPointMode.Undefined;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating that this connection point is coming from an uniform.\r\n * In this case the connection point name must be the name of the uniform to use.\r\n * Can only be set on inputs\r\n */\r\n public get isUniform(): boolean {\r\n return this._mode === NodeMaterialBlockConnectionPointMode.Uniform;\r\n }\r\n\r\n public set isUniform(value: boolean) {\r\n this._mode = value ? NodeMaterialBlockConnectionPointMode.Uniform : NodeMaterialBlockConnectionPointMode.Undefined;\r\n this.associatedVariableName = \"\";\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating that this connection point is coming from an attribute.\r\n * In this case the connection point name must be the name of the attribute to use\r\n * Can only be set on inputs\r\n */\r\n public get isAttribute(): boolean {\r\n return this._mode === NodeMaterialBlockConnectionPointMode.Attribute;\r\n }\r\n\r\n public set isAttribute(value: boolean) {\r\n this._mode = value ? NodeMaterialBlockConnectionPointMode.Attribute : NodeMaterialBlockConnectionPointMode.Undefined;\r\n this.associatedVariableName = \"\";\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating that this connection point is generating a varying variable.\r\n * Can only be set on exit points\r\n */\r\n public get isVarying(): boolean {\r\n return this._mode === NodeMaterialBlockConnectionPointMode.Varying;\r\n }\r\n\r\n public set isVarying(value: boolean) {\r\n this._mode = value ? NodeMaterialBlockConnectionPointMode.Varying : NodeMaterialBlockConnectionPointMode.Undefined;\r\n this.associatedVariableName = \"\";\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that the current connection point is a system value\r\n */\r\n public get isSystemValue(): boolean {\r\n return this._systemValue != null;\r\n }\r\n\r\n /**\r\n * Gets or sets the current well known value or null if not defined as a system value\r\n */\r\n public get systemValue(): Nullable<NodeMaterialSystemValues> {\r\n return this._systemValue;\r\n }\r\n\r\n public set systemValue(value: Nullable<NodeMaterialSystemValues>) {\r\n this._mode = NodeMaterialBlockConnectionPointMode.Uniform;\r\n this.associatedVariableName = \"\";\r\n this._systemValue = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"InputBlock\";\r\n }\r\n\r\n /**\r\n * Animate the input if animationType !== None\r\n * @param scene defines the rendering scene\r\n */\r\n public animate(scene: Scene) {\r\n switch (this._animationType) {\r\n case AnimatedInputBlockTypes.Time: {\r\n if (this.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n this.value += scene.getAnimationRatio() * 0.01;\r\n }\r\n break;\r\n }\r\n case AnimatedInputBlockTypes.RealTime: {\r\n if (this.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n this.value = (PrecisionDate.Now - scene.getEngine().startTime) / 1000;\r\n }\r\n break;\r\n }\r\n case AnimatedInputBlockTypes.MouseInfo: {\r\n if (this.type === NodeMaterialBlockConnectionPointTypes.Vector4) {\r\n const event = scene._inputManager._originMouseEvent;\r\n if (event) {\r\n const x = event.offsetX;\r\n const y = event.offsetY;\r\n const z = (event.buttons & 1) != 0 ? 1 : 0;\r\n const w = (event.buttons & 2) != 0 ? 1 : 0;\r\n this.value = new Vector4(x, y, z, w);\r\n } else {\r\n this.value = new Vector4(0, 0, 0, 0);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private _emitDefine(define: string, notDefine = false): string {\r\n return `${notDefine ? \"#ifndef\" : \"#ifdef\"} ${define}\\n`;\r\n }\r\n\r\n /**\r\n * Initialize the block\r\n */\r\n public override initialize() {\r\n this.associatedVariableName = \"\";\r\n }\r\n\r\n /**\r\n * Set the input block to its default value (based on its type)\r\n */\r\n public setDefaultValue() {\r\n switch (this.type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n this.value = 0;\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n this.value = Vector2.Zero();\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n this.value = Vector3.Zero();\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n this.value = Vector4.Zero();\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n this.value = Color3.White();\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n this.value = new Color4(1, 1, 1, 1);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n this.value = Matrix.Identity();\r\n break;\r\n }\r\n }\r\n\r\n private _emitConstant(state: NodeMaterialBuildState) {\r\n switch (this.type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n return `${state._emitFloat(this.value)}`;\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n return `vec2(${this.value.x}, ${this.value.y})`;\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n return `vec3(${this.value.x}, ${this.value.y}, ${this.value.z})`;\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n return `vec4(${this.value.x}, ${this.value.y}, ${this.value.z}, ${this.value.w})`;\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n TmpColors.Color3[0].set(this.value.r, this.value.g, this.value.b);\r\n if (this.convertToGammaSpace) {\r\n TmpColors.Color3[0].toGammaSpaceToRef(TmpColors.Color3[0], state.sharedData.scene.getEngine().useExactSrgbConversions);\r\n }\r\n if (this.convertToLinearSpace) {\r\n TmpColors.Color3[0].toLinearSpaceToRef(TmpColors.Color3[0], state.sharedData.scene.getEngine().useExactSrgbConversions);\r\n }\r\n return `vec3(${TmpColors.Color3[0].r}, ${TmpColors.Color3[0].g}, ${TmpColors.Color3[0].b})`;\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n TmpColors.Color4[0].set(this.value.r, this.value.g, this.value.b, this.value.a);\r\n if (this.convertToGammaSpace) {\r\n TmpColors.Color4[0].toGammaSpaceToRef(TmpColors.Color4[0], state.sharedData.scene.getEngine().useExactSrgbConversions);\r\n }\r\n if (this.convertToLinearSpace) {\r\n TmpColors.Color4[0].toLinearSpaceToRef(TmpColors.Color4[0], state.sharedData.scene.getEngine().useExactSrgbConversions);\r\n }\r\n return `vec4(${TmpColors.Color4[0].r}, ${TmpColors.Color4[0].g}, ${TmpColors.Color4[0].b}, ${TmpColors.Color4[0].a})`;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /** @internal */\r\n public get _noContextSwitch(): boolean {\r\n return attributeInFragmentOnly[this.name];\r\n }\r\n\r\n private _emit(state: NodeMaterialBuildState) {\r\n // Uniforms\r\n if (this.isUniform) {\r\n if (!this._associatedVariableName) {\r\n this._associatedVariableName = state._getFreeVariableName(\"u_\" + this.name);\r\n }\r\n\r\n if (this.isConstant) {\r\n if (state.constants.indexOf(this.associatedVariableName) !== -1) {\r\n return;\r\n }\r\n state.constants.push(this.associatedVariableName);\r\n state._constantDeclaration += state._declareOutput(this.output, true) + ` = ${this._emitConstant(state)};\\n`;\r\n return;\r\n }\r\n\r\n if (state.uniforms.indexOf(this.associatedVariableName) !== -1) {\r\n return;\r\n }\r\n\r\n state._emitUniformFromString(this._associatedVariableName, this.type);\r\n\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._prefix = \"uniforms.\";\r\n }\r\n\r\n // well known\r\n const hints = state.sharedData.hints;\r\n if (this._systemValue !== null && this._systemValue !== undefined) {\r\n switch (this._systemValue) {\r\n case NodeMaterialSystemValues.WorldView:\r\n hints.needWorldViewMatrix = true;\r\n break;\r\n case NodeMaterialSystemValues.WorldViewProjection:\r\n hints.needWorldViewProjectionMatrix = true;\r\n break;\r\n }\r\n } else {\r\n if (this._animationType !== AnimatedInputBlockTypes.None) {\r\n state.sharedData.animatedInputs.push(this);\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Attribute\r\n if (this.isAttribute) {\r\n this.associatedVariableName = remapAttributeName[this.name] ?? this.name;\r\n\r\n if (this.name === \"particle_positionw\") {\r\n state.sharedData.defines[\"POSITIONW_AS_VARYING\"] = \"true\";\r\n }\r\n if (this.target === NodeMaterialBlockTargets.Vertex && state._vertexState) {\r\n // Attribute for fragment need to be carried over by varyings\r\n if (attributeInFragmentOnly[this.name]) {\r\n if (attributeAsUniform[this.name]) {\r\n state._emitUniformFromString(this.declarationVariableName, this.type);\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._prefix = `vertexInputs.`;\r\n }\r\n } else {\r\n state._emitVaryingFromString(this.declarationVariableName, this.type);\r\n }\r\n } else {\r\n this._emit(state._vertexState);\r\n }\r\n return;\r\n }\r\n\r\n const alreadyDeclared = state.attributes.indexOf(this.declarationVariableName) !== -1;\r\n\r\n if (!alreadyDeclared) {\r\n state.attributes.push(this.declarationVariableName);\r\n }\r\n\r\n if (attributeInFragmentOnly[this.name]) {\r\n if (attributeAsUniform[this.name]) {\r\n if (!alreadyDeclared) {\r\n state._emitUniformFromString(this.declarationVariableName, this.type);\r\n }\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._prefix = `uniforms.`;\r\n }\r\n } else {\r\n if (!alreadyDeclared) {\r\n state._emitVaryingFromString(this.declarationVariableName, this.type);\r\n }\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._prefix = `fragmentInputs.`;\r\n }\r\n }\r\n } else {\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n if (!alreadyDeclared) {\r\n const defineName = attributeDefine[this.name];\r\n if (defineName) {\r\n state._attributeDeclaration += this._emitDefine(defineName);\r\n state._attributeDeclaration += `attribute ${this.declarationVariableName}: ${state._getShaderType(this.type)};\\n`;\r\n state._attributeDeclaration += `#else\\n`;\r\n state._attributeDeclaration += `var<private> ${this.declarationVariableName}: ${state._getShaderType(this.type)} = ${state._getShaderType(this.type)}(0.);\\n`;\r\n state._attributeDeclaration += `#endif\\n`;\r\n } else {\r\n state._attributeDeclaration += `attribute ${this.declarationVariableName}: ${state._getShaderType(this.type)};\\n`;\r\n }\r\n }\r\n this._prefix = `vertexInputs.`;\r\n } else {\r\n if (!alreadyDeclared) {\r\n const defineName = attributeDefine[this.name];\r\n if (defineName) {\r\n state._attributeDeclaration += this._emitDefine(defineName);\r\n state._attributeDeclaration += `attribute ${state._getShaderType(this.type)} ${this.declarationVariableName};\\n`;\r\n state._attributeDeclaration += `#else\\n`;\r\n state._attributeDeclaration += `${state._getShaderType(this.type)} ${this.declarationVariableName} = ${state._getShaderType(this.type)}(0.);\\n`;\r\n state._attributeDeclaration += `#endif\\n`;\r\n } else {\r\n state._attributeDeclaration += `attribute ${state._getShaderType(this.type)} ${this.declarationVariableName};\\n`;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _transmitWorld(effect: Effect, world: Matrix, worldView: Matrix, worldViewProjection: Matrix) {\r\n if (!this._systemValue) {\r\n return;\r\n }\r\n\r\n const variableName = this._associatedVariableName;\r\n switch (this._systemValue) {\r\n case NodeMaterialSystemValues.World:\r\n effect.setMatrix(variableName, world);\r\n break;\r\n case NodeMaterialSystemValues.WorldView:\r\n effect.setMatrix(variableName, worldView);\r\n break;\r\n case NodeMaterialSystemValues.WorldViewProjection:\r\n effect.setMatrix(variableName, worldViewProjection);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _transmit(effect: Effect, scene: Scene, material: NodeMaterial) {\r\n if (this.isAttribute) {\r\n return;\r\n }\r\n\r\n const variableName = this._associatedVariableName;\r\n if (this._systemValue) {\r\n switch (this._systemValue) {\r\n case NodeMaterialSystemValues.World:\r\n case NodeMaterialSystemValues.WorldView:\r\n case NodeMaterialSystemValues.WorldViewProjection:\r\n return;\r\n case NodeMaterialSystemValues.View:\r\n effect.setMatrix(variableName, scene.getViewMatrix());\r\n break;\r\n case NodeMaterialSystemValues.Projection:\r\n effect.setMatrix(variableName, scene.getProjectionMatrix());\r\n break;\r\n case NodeMaterialSystemValues.ProjectionInverse: {\r\n const projectionMatrix = scene.getProjectionMatrix();\r\n projectionMatrix.invertToRef(TmpVectors.Matrix[0]);\r\n effect.setMatrix(variableName, TmpVectors.Matrix[0]);\r\n break;\r\n }\r\n case NodeMaterialSystemValues.ViewProjection:\r\n effect.setMatrix(variableName, scene.getTransformMatrix());\r\n break;\r\n case NodeMaterialSystemValues.CameraPosition:\r\n scene.bindEyePosition(effect, variableName, true);\r\n break;\r\n case NodeMaterialSystemValues.CameraForward:\r\n if (scene.activeCamera) {\r\n const transform = scene.activeCamera.getWorldMatrix();\r\n const forward = TmpVectors.Vector3[2];\r\n forward.set(0, 0, scene.useRightHandedSystem ? -1 : 1);\r\n const worldForward = new Vector3();\r\n Vector3.TransformNormalToRef(forward, transform, worldForward);\r\n worldForward.normalize();\r\n\r\n effect.setVector3(variableName, worldForward);\r\n }\r\n break;\r\n case NodeMaterialSystemValues.FogColor:\r\n effect.setColor3(variableName, scene.fogColor);\r\n break;\r\n case NodeMaterialSystemValues.DeltaTime:\r\n effect.setFloat(variableName, scene.deltaTime / 1000.0);\r\n break;\r\n case NodeMaterialSystemValues.CameraParameters:\r\n if (scene.activeCamera) {\r\n effect.setFloat4(\r\n variableName,\r\n scene.getEngine().hasOriginBottomLeft ? -1 : 1,\r\n scene.activeCamera.minZ,\r\n scene.activeCamera.maxZ,\r\n 1 / scene.activeCamera.maxZ\r\n );\r\n }\r\n break;\r\n case NodeMaterialSystemValues.MaterialAlpha:\r\n effect.setFloat(variableName, material.alpha);\r\n break;\r\n }\r\n return;\r\n }\r\n\r\n const value = this._valueCallback ? this._valueCallback() : this._storedValue;\r\n\r\n if (value === null) {\r\n return;\r\n }\r\n\r\n switch (this.type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n effect.setFloat(variableName, value);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Int:\r\n effect.setInt(variableName, value);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n TmpColors.Color3[0].set(this.value.r, this.value.g, this.value.b);\r\n if (this.convertToGammaSpace) {\r\n TmpColors.Color3[0].toGammaSpaceToRef(TmpColors.Color3[0], scene.getEngine().useExactSrgbConversions);\r\n }\r\n if (this.convertToLinearSpace) {\r\n TmpColors.Color3[0].toLinearSpaceToRef(TmpColors.Color3[0], scene.getEngine().useExactSrgbConversions);\r\n }\r\n effect.setColor3(variableName, TmpColors.Color3[0]);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n TmpColors.Color4[0].set(this.value.r, this.value.g, this.value.b, this.value.a);\r\n if (this.convertToGammaSpace) {\r\n TmpColors.Color4[0].toGammaSpaceToRef(TmpColors.Color4[0], scene.getEngine().useExactSrgbConversions);\r\n }\r\n if (this.convertToLinearSpace) {\r\n TmpColors.Color4[0].toLinearSpaceToRef(TmpColors.Color4[0], scene.getEngine().useExactSrgbConversions);\r\n }\r\n effect.setDirectColor4(variableName, TmpColors.Color4[0]);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n effect.setVector2(variableName, value);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n effect.setVector3(variableName, value);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n effect.setVector4(variableName, value);\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n effect.setMatrix(variableName, value);\r\n break;\r\n }\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (this.isUniform || this.isSystemValue) {\r\n state.sharedData.inputBlocks.push(this);\r\n }\r\n\r\n this._emit(state);\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const variableName = this._codeVariableName;\r\n\r\n if (this.isAttribute) {\r\n return super._dumpPropertiesCode() + `${variableName}.setAsAttribute(\"${this.name}\");\\n`;\r\n }\r\n if (this.isSystemValue) {\r\n return super._dumpPropertiesCode() + `${variableName}.setAsSystemValue(BABYLON.NodeMaterialSystemValues.${NodeMaterialSystemValues[this._systemValue!]});\\n`;\r\n }\r\n if (this.isUniform) {\r\n const codes: string[] = [];\r\n\r\n let valueString = \"\";\r\n\r\n switch (this.type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n valueString = `${this.value}`;\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n valueString = `new BABYLON.Vector2(${this.value.x}, ${this.value.y})`;\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n valueString = `new BABYLON.Vector3(${this.value.x}, ${this.value.y}, ${this.value.z})`;\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n valueString = `new BABYLON.Vector4(${this.value.x}, ${this.value.y}, ${this.value.z}, ${this.value.w})`;\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n valueString = `new BABYLON.Color3(${this.value.r}, ${this.value.g}, ${this.value.b})`;\r\n if (this.convertToGammaSpace) {\r\n valueString += \".toGammaSpace()\";\r\n }\r\n if (this.convertToLinearSpace) {\r\n valueString += \".toLinearSpace()\";\r\n }\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n valueString = `new BABYLON.Color4(${this.value.r}, ${this.value.g}, ${this.value.b}, ${this.value.a})`;\r\n if (this.convertToGammaSpace) {\r\n valueString += \".toGammaSpace()\";\r\n }\r\n if (this.convertToLinearSpace) {\r\n valueString += \".toLinearSpace()\";\r\n }\r\n break;\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n valueString = `BABYLON.Matrix.FromArray([${(this.value as Matrix).m.join(\", \")}])`;\r\n break;\r\n }\r\n\r\n // Common Property \"Value\"\r\n codes.push(`${variableName}.value = ${valueString}`);\r\n\r\n // Float-Value-Specific Properties\r\n if (this.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n codes.push(\r\n `${variableName}.min = ${this.min}`,\r\n `${variableName}.max = ${this.max}`,\r\n `${variableName}.isBoolean = ${this.isBoolean}`,\r\n `${variableName}.matrixMode = ${this.matrixMode}`,\r\n `${variableName}.animationType = BABYLON.AnimatedInputBlockTypes.${AnimatedInputBlockTypes[this.animationType]}`\r\n );\r\n }\r\n\r\n // Common Property \"Type\"\r\n codes.push(`${variableName}.isConstant = ${this.isConstant}`);\r\n\r\n codes.push(\"\");\r\n\r\n return super._dumpPropertiesCode() + codes.join(\";\\n\");\r\n }\r\n return super._dumpPropertiesCode();\r\n }\r\n\r\n /**\r\n * Releases the resources held by the block\r\n */\r\n public override dispose() {\r\n this.onValueChangedObservable.clear();\r\n\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * Serializes the block\r\n * @returns the serialized object\r\n */\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.type = this.type;\r\n serializationObject.mode = this._mode;\r\n serializationObject.systemValue = this._systemValue;\r\n serializationObject.animationType = this._animationType;\r\n serializationObject.min = this.min;\r\n serializationObject.max = this.max;\r\n serializationObject.isBoolean = this.isBoolean;\r\n serializationObject.matrixMode = this.matrixMode;\r\n serializationObject.isConstant = this.isConstant;\r\n serializationObject.groupInInspector = this.groupInInspector;\r\n serializationObject.convertToGammaSpace = this.convertToGammaSpace;\r\n serializationObject.convertToLinearSpace = this.convertToLinearSpace;\r\n\r\n if (this._storedValue != null && this._mode === NodeMaterialBlockConnectionPointMode.Uniform) {\r\n if (this._storedValue.asArray) {\r\n serializationObject.valueType = \"BABYLON.\" + this._storedValue.getClassName();\r\n serializationObject.value = this._storedValue.asArray();\r\n } else {\r\n serializationObject.valueType = \"number\";\r\n serializationObject.value = this._storedValue;\r\n }\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Deserializes the block\r\n * @param serializationObject - defines the serialized object\r\n * @param scene - defines the scene\r\n * @param rootUrl - defines the root URL\r\n */\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n this._mode = serializationObject.mode;\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this._type = serializationObject.type;\r\n\r\n this._systemValue = serializationObject.systemValue || serializationObject.wellKnownValue;\r\n this._animationType = serializationObject.animationType;\r\n this.min = serializationObject.min || 0;\r\n this.max = serializationObject.max || 0;\r\n this.isBoolean = !!serializationObject.isBoolean;\r\n this.matrixMode = serializationObject.matrixMode || 0;\r\n this.isConstant = !!serializationObject.isConstant;\r\n this.groupInInspector = serializationObject.groupInInspector || \"\";\r\n this.convertToGammaSpace = !!serializationObject.convertToGammaSpace;\r\n this.convertToLinearSpace = !!serializationObject.convertToLinearSpace;\r\n\r\n // Tangents back compat\r\n if (\r\n serializationObject.name === \"tangent\" &&\r\n serializationObject.mode === NodeMaterialBlockConnectionPointMode.Attribute &&\r\n serializationObject.type === NodeMaterialBlockConnectionPointTypes.Vector3\r\n ) {\r\n this._type = NodeMaterialBlockConnectionPointTypes.Vector4;\r\n }\r\n\r\n if (!serializationObject.valueType) {\r\n return;\r\n }\r\n\r\n if (serializationObject.valueType === \"number\") {\r\n this._storedValue = serializationObject.value;\r\n } else {\r\n const valueType = GetClass(serializationObject.valueType);\r\n\r\n if (valueType) {\r\n this._storedValue = valueType.FromArray(serializationObject.value);\r\n }\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.InputBlock\", InputBlock);\r\n"]}
@@ -85,5 +85,10 @@ export declare class PrePassTextureBlock extends NodeMaterialBlock {
85
85
  */
86
86
  getClassName(): string;
87
87
  protected _buildBlock(state: NodeMaterialBuildState): this | undefined;
88
+ /**
89
+ * Bind data to effect
90
+ * @param effect - defines the effect to bind data to
91
+ * @param nodeMaterial - defines the node material
92
+ */
88
93
  bind(effect: Effect, nodeMaterial: NodeMaterial): void;
89
94
  }
@@ -178,6 +178,11 @@ export class PrePassTextureBlock extends NodeMaterialBlock {
178
178
  }
179
179
  return this;
180
180
  }
181
+ /**
182
+ * Bind data to effect
183
+ * @param effect - defines the effect to bind data to
184
+ * @param nodeMaterial - defines the node material
185
+ */
181
186
  bind(effect, nodeMaterial) {
182
187
  const scene = nodeMaterial.getScene();
183
188
  const prePassRenderer = scene.enablePrePassRenderer();
@@ -1 +1 @@
1
- {"version":3,"file":"prePassTextureBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Input/prePassTextureBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { Effect } from \"../../../../Materials/effect\";\r\nimport { NodeMaterialConnectionPointDirection } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport type { NodeMaterial } from \"../../nodeMaterial\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../../nodeMaterialConnectionPointCustomObject\";\r\nimport { Constants } from \"../../../../Engines/constants\";\r\nimport { ImageSourceBlock } from \"../Dual/imageSourceBlock\";\r\n\r\n/**\r\n * Block used to read from prepass textures\r\n */\r\nexport class PrePassTextureBlock extends NodeMaterialBlock {\r\n private _positionSamplerName: string;\r\n private _localPositionSamplerName: string;\r\n private _depthSamplerName: string;\r\n private _screenSpaceDepthSamplerName: string;\r\n private _normalSamplerName: string;\r\n private _worldNormalSamplerName: string;\r\n\r\n /**\r\n * The texture associated with the node is the prepass texture\r\n */\r\n public get texture() {\r\n return null;\r\n }\r\n\r\n public set texture(value: any) {\r\n return;\r\n }\r\n\r\n /**\r\n * Creates a new PrePassTextureBlock\r\n * @param name defines the block name\r\n * @param target defines the target of that block (VertexAndFragment by default)\r\n */\r\n public constructor(name: string, target = NodeMaterialBlockTargets.VertexAndFragment) {\r\n super(name, target, false);\r\n\r\n this.registerOutput(\r\n \"position\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"position\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerOutput(\r\n \"localPosition\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"localPosition\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerOutput(\r\n \"depth\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"depth\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerOutput(\r\n \"screenDepth\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"screenDepth\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerOutput(\r\n \"normal\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"normal\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerOutput(\r\n \"worldNormal\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"worldNormal\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n }\r\n\r\n /**\r\n * Returns the sampler name associated with the node connection point\r\n * @param output defines the connection point to get the associated sampler name\r\n * @returns\r\n */\r\n public getSamplerName(output: NodeMaterialConnectionPoint): string {\r\n if (output === this._outputs[0]) {\r\n return this._positionSamplerName;\r\n }\r\n\r\n if (output === this._outputs[1]) {\r\n return this._localPositionSamplerName;\r\n }\r\n\r\n if (output === this._outputs[2]) {\r\n return this._depthSamplerName;\r\n }\r\n\r\n if (output === this._outputs[3]) {\r\n return this._screenSpaceDepthSamplerName;\r\n }\r\n\r\n if (output === this._outputs[4]) {\r\n return this._normalSamplerName;\r\n }\r\n\r\n if (output === this._outputs[5]) {\r\n return this._worldNormalSamplerName;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Gets the position texture\r\n */\r\n public get position(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the local position texture\r\n */\r\n public get localPosition(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the depth texture\r\n */\r\n public get depth(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the screen depth texture\r\n */\r\n public get screenDepth(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the normal texture\r\n */\r\n public get normal(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the world normal texture\r\n */\r\n public get worldNormal(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get positionSamplerName(): string {\r\n return this._positionSamplerName;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get localPositionSamplerName(): string {\r\n return this._localPositionSamplerName;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get normalSamplerName(): string {\r\n return this._normalSamplerName;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get worldNormalSamplerName(): string {\r\n return this._worldNormalSamplerName;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get depthSamplerName(): string {\r\n return this._depthSamplerName;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get linearDepthSamplerName(): string {\r\n return this._screenSpaceDepthSamplerName;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"PrePassTextureBlock\";\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (state.target === NodeMaterialBlockTargets.Vertex) {\r\n return;\r\n }\r\n\r\n this._positionSamplerName = \"prepassPositionSampler\";\r\n this._depthSamplerName = \"prepassDepthSampler\";\r\n this._normalSamplerName = \"prepassNormalSampler\";\r\n this._worldNormalSamplerName = \"prepassWorldNormalSampler\";\r\n this._localPositionSamplerName = \"prepassLocalPositionSampler\";\r\n this._screenSpaceDepthSamplerName = \"prepassScreenSpaceDepthSampler\";\r\n\r\n // Unique sampler names for every prepasstexture block\r\n state.sharedData.variableNames.prepassPositionSampler = 0;\r\n state.sharedData.variableNames.prepassDepthSampler = 0;\r\n state.sharedData.variableNames.prepassNormalSampler = 0;\r\n state.sharedData.variableNames.prepassWorldNormalSampler = 0;\r\n state.sharedData.variableNames.prepassLocalPositionSampler = 0;\r\n state.sharedData.variableNames.prepassScreenSpaceDepthSampler = 0;\r\n\r\n // Declarations\r\n state.sharedData.textureBlocks.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n if (this.position.isConnected) {\r\n state._emit2DSampler(this._positionSamplerName);\r\n }\r\n if (this.depth.isConnected) {\r\n state._emit2DSampler(this._depthSamplerName);\r\n }\r\n if (this.normal.isConnected) {\r\n state._emit2DSampler(this._normalSamplerName);\r\n }\r\n if (this.worldNormal.isConnected) {\r\n state._emit2DSampler(this._worldNormalSamplerName);\r\n }\r\n if (this.localPosition.isConnected) {\r\n state._emit2DSampler(this._localPositionSamplerName);\r\n }\r\n if (this.screenDepth.isConnected) {\r\n state._emit2DSampler(this._screenSpaceDepthSamplerName);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial) {\r\n const scene = nodeMaterial.getScene();\r\n const prePassRenderer = scene.enablePrePassRenderer();\r\n if (!prePassRenderer) {\r\n return;\r\n }\r\n\r\n const sceneRT = prePassRenderer.defaultRT;\r\n if (!sceneRT.textures) {\r\n return;\r\n }\r\n\r\n if (this.position.isConnected) {\r\n effect.setTexture(this._positionSamplerName, sceneRT.textures[prePassRenderer.getIndex(Constants.PREPASS_POSITION_TEXTURE_TYPE)]);\r\n }\r\n if (this.localPosition.isConnected) {\r\n effect.setTexture(this._localPositionSamplerName, sceneRT.textures[prePassRenderer.getIndex(Constants.PREPASS_LOCAL_POSITION_TEXTURE_TYPE)]);\r\n }\r\n if (this.depth.isConnected) {\r\n effect.setTexture(this._depthSamplerName, sceneRT.textures[prePassRenderer.getIndex(Constants.PREPASS_DEPTH_TEXTURE_TYPE)]);\r\n }\r\n if (this.screenDepth.isConnected) {\r\n effect.setTexture(this._screenSpaceDepthSamplerName, sceneRT.textures[prePassRenderer.getIndex(Constants.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE)]);\r\n }\r\n if (this.normal.isConnected) {\r\n effect.setTexture(this._normalSamplerName, sceneRT.textures[prePassRenderer.getIndex(Constants.PREPASS_NORMAL_TEXTURE_TYPE)]);\r\n }\r\n if (this.worldNormal.isConnected) {\r\n effect.setTexture(this._worldNormalSamplerName, sceneRT.textures[prePassRenderer.getIndex(Constants.PREPASS_WORLD_NORMAL_TEXTURE_TYPE)]);\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.PrePassTextureBlock\", PrePassTextureBlock);\r\n"]}
1
+ {"version":3,"file":"prePassTextureBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Input/prePassTextureBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { Effect } from \"../../../../Materials/effect\";\r\nimport { NodeMaterialConnectionPointDirection } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport type { NodeMaterial } from \"../../nodeMaterial\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../../nodeMaterialConnectionPointCustomObject\";\r\nimport { Constants } from \"../../../../Engines/constants\";\r\nimport { ImageSourceBlock } from \"../Dual/imageSourceBlock\";\r\n\r\n/**\r\n * Block used to read from prepass textures\r\n */\r\nexport class PrePassTextureBlock extends NodeMaterialBlock {\r\n private _positionSamplerName: string;\r\n private _localPositionSamplerName: string;\r\n private _depthSamplerName: string;\r\n private _screenSpaceDepthSamplerName: string;\r\n private _normalSamplerName: string;\r\n private _worldNormalSamplerName: string;\r\n\r\n /**\r\n * The texture associated with the node is the prepass texture\r\n */\r\n public get texture() {\r\n return null;\r\n }\r\n\r\n public set texture(value: any) {\r\n return;\r\n }\r\n\r\n /**\r\n * Creates a new PrePassTextureBlock\r\n * @param name defines the block name\r\n * @param target defines the target of that block (VertexAndFragment by default)\r\n */\r\n public constructor(name: string, target = NodeMaterialBlockTargets.VertexAndFragment) {\r\n super(name, target, false);\r\n\r\n this.registerOutput(\r\n \"position\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"position\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerOutput(\r\n \"localPosition\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"localPosition\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerOutput(\r\n \"depth\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"depth\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerOutput(\r\n \"screenDepth\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"screenDepth\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerOutput(\r\n \"normal\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"normal\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerOutput(\r\n \"worldNormal\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"worldNormal\", this, NodeMaterialConnectionPointDirection.Output, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n }\r\n\r\n /**\r\n * Returns the sampler name associated with the node connection point\r\n * @param output defines the connection point to get the associated sampler name\r\n * @returns\r\n */\r\n public getSamplerName(output: NodeMaterialConnectionPoint): string {\r\n if (output === this._outputs[0]) {\r\n return this._positionSamplerName;\r\n }\r\n\r\n if (output === this._outputs[1]) {\r\n return this._localPositionSamplerName;\r\n }\r\n\r\n if (output === this._outputs[2]) {\r\n return this._depthSamplerName;\r\n }\r\n\r\n if (output === this._outputs[3]) {\r\n return this._screenSpaceDepthSamplerName;\r\n }\r\n\r\n if (output === this._outputs[4]) {\r\n return this._normalSamplerName;\r\n }\r\n\r\n if (output === this._outputs[5]) {\r\n return this._worldNormalSamplerName;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Gets the position texture\r\n */\r\n public get position(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the local position texture\r\n */\r\n public get localPosition(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the depth texture\r\n */\r\n public get depth(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the screen depth texture\r\n */\r\n public get screenDepth(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the normal texture\r\n */\r\n public get normal(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the world normal texture\r\n */\r\n public get worldNormal(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get positionSamplerName(): string {\r\n return this._positionSamplerName;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get localPositionSamplerName(): string {\r\n return this._localPositionSamplerName;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get normalSamplerName(): string {\r\n return this._normalSamplerName;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get worldNormalSamplerName(): string {\r\n return this._worldNormalSamplerName;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get depthSamplerName(): string {\r\n return this._depthSamplerName;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this image source\r\n */\r\n public get linearDepthSamplerName(): string {\r\n return this._screenSpaceDepthSamplerName;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"PrePassTextureBlock\";\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (state.target === NodeMaterialBlockTargets.Vertex) {\r\n return;\r\n }\r\n\r\n this._positionSamplerName = \"prepassPositionSampler\";\r\n this._depthSamplerName = \"prepassDepthSampler\";\r\n this._normalSamplerName = \"prepassNormalSampler\";\r\n this._worldNormalSamplerName = \"prepassWorldNormalSampler\";\r\n this._localPositionSamplerName = \"prepassLocalPositionSampler\";\r\n this._screenSpaceDepthSamplerName = \"prepassScreenSpaceDepthSampler\";\r\n\r\n // Unique sampler names for every prepasstexture block\r\n state.sharedData.variableNames.prepassPositionSampler = 0;\r\n state.sharedData.variableNames.prepassDepthSampler = 0;\r\n state.sharedData.variableNames.prepassNormalSampler = 0;\r\n state.sharedData.variableNames.prepassWorldNormalSampler = 0;\r\n state.sharedData.variableNames.prepassLocalPositionSampler = 0;\r\n state.sharedData.variableNames.prepassScreenSpaceDepthSampler = 0;\r\n\r\n // Declarations\r\n state.sharedData.textureBlocks.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n if (this.position.isConnected) {\r\n state._emit2DSampler(this._positionSamplerName);\r\n }\r\n if (this.depth.isConnected) {\r\n state._emit2DSampler(this._depthSamplerName);\r\n }\r\n if (this.normal.isConnected) {\r\n state._emit2DSampler(this._normalSamplerName);\r\n }\r\n if (this.worldNormal.isConnected) {\r\n state._emit2DSampler(this._worldNormalSamplerName);\r\n }\r\n if (this.localPosition.isConnected) {\r\n state._emit2DSampler(this._localPositionSamplerName);\r\n }\r\n if (this.screenDepth.isConnected) {\r\n state._emit2DSampler(this._screenSpaceDepthSamplerName);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Bind data to effect\r\n * @param effect - defines the effect to bind data to\r\n * @param nodeMaterial - defines the node material\r\n */\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial) {\r\n const scene = nodeMaterial.getScene();\r\n const prePassRenderer = scene.enablePrePassRenderer();\r\n if (!prePassRenderer) {\r\n return;\r\n }\r\n\r\n const sceneRT = prePassRenderer.defaultRT;\r\n if (!sceneRT.textures) {\r\n return;\r\n }\r\n\r\n if (this.position.isConnected) {\r\n effect.setTexture(this._positionSamplerName, sceneRT.textures[prePassRenderer.getIndex(Constants.PREPASS_POSITION_TEXTURE_TYPE)]);\r\n }\r\n if (this.localPosition.isConnected) {\r\n effect.setTexture(this._localPositionSamplerName, sceneRT.textures[prePassRenderer.getIndex(Constants.PREPASS_LOCAL_POSITION_TEXTURE_TYPE)]);\r\n }\r\n if (this.depth.isConnected) {\r\n effect.setTexture(this._depthSamplerName, sceneRT.textures[prePassRenderer.getIndex(Constants.PREPASS_DEPTH_TEXTURE_TYPE)]);\r\n }\r\n if (this.screenDepth.isConnected) {\r\n effect.setTexture(this._screenSpaceDepthSamplerName, sceneRT.textures[prePassRenderer.getIndex(Constants.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE)]);\r\n }\r\n if (this.normal.isConnected) {\r\n effect.setTexture(this._normalSamplerName, sceneRT.textures[prePassRenderer.getIndex(Constants.PREPASS_NORMAL_TEXTURE_TYPE)]);\r\n }\r\n if (this.worldNormal.isConnected) {\r\n effect.setTexture(this._worldNormalSamplerName, sceneRT.textures[prePassRenderer.getIndex(Constants.PREPASS_WORLD_NORMAL_TEXTURE_TYPE)]);\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.PrePassTextureBlock\", PrePassTextureBlock);\r\n"]}
@@ -69,7 +69,17 @@ export declare class AnisotropyBlock extends NodeMaterialBlock {
69
69
  * @returns the shader code
70
70
  */
71
71
  getCode(state: NodeMaterialBuildState, generateTBNSpace?: boolean): string;
72
+ /**
73
+ * Prepare the list of defines
74
+ * @param defines - the list of defines to update
75
+ */
72
76
  prepareDefines(defines: NodeMaterialDefines): void;
77
+ /**
78
+ * Bind data to effect
79
+ * @param effect - the effect to bind data to
80
+ * @param nodeMaterial - the node material
81
+ * @param mesh - the mesh to bind data for
82
+ */
73
83
  bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh): void;
74
84
  protected _buildBlock(state: NodeMaterialBuildState): this;
75
85
  }
@@ -66,7 +66,6 @@ export class AnisotropyBlock extends NodeMaterialBlock {
66
66
  /**
67
67
  * Gets the TBN input component
68
68
  */
69
- // eslint-disable-next-line @typescript-eslint/naming-convention
70
69
  get TBN() {
71
70
  return this._inputs[4];
72
71
  }
@@ -151,11 +150,21 @@ export class AnisotropyBlock extends NodeMaterialBlock {
151
150
  );\n`;
152
151
  return code;
153
152
  }
153
+ /**
154
+ * Prepare the list of defines
155
+ * @param defines - the list of defines to update
156
+ */
154
157
  prepareDefines(defines) {
155
158
  defines.setValue("ANISOTROPIC", true);
156
159
  defines.setValue("ANISOTROPIC_TEXTURE", false, true);
157
160
  defines.setValue("ANISOTROPIC_LEGACY", !this.roughness.isConnected);
158
161
  }
162
+ /**
163
+ * Bind data to effect
164
+ * @param effect - the effect to bind data to
165
+ * @param nodeMaterial - the node material
166
+ * @param mesh - the mesh to bind data for
167
+ */
159
168
  bind(effect, nodeMaterial, mesh) {
160
169
  super.bind(effect, nodeMaterial, mesh);
161
170
  if (mesh) {