@babylonjs/core 6.15.0 → 6.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1099) hide show
  1. package/Actions/actionManager.js +8 -3
  2. package/Actions/actionManager.js.map +1 -1
  3. package/Behaviors/Cameras/framingBehavior.d.ts +2 -1
  4. package/Behaviors/Cameras/framingBehavior.js +3 -1
  5. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  6. package/Bones/boneIKController.js +1 -0
  7. package/Bones/boneIKController.js.map +1 -1
  8. package/Bones/skeleton.js +1 -0
  9. package/Bones/skeleton.js.map +1 -1
  10. package/Compute/computeEffect.js +1 -1
  11. package/Compute/computeEffect.js.map +1 -1
  12. package/{Materials/Node/nodeMaterialDecorator.d.ts → Decorators/nodeDecorator.d.ts} +7 -7
  13. package/{Materials/Node/nodeMaterialDecorator.js → Decorators/nodeDecorator.js} +3 -3
  14. package/Decorators/nodeDecorator.js.map +1 -0
  15. package/Engines/Processors/shaderCodeNode.js +1 -1
  16. package/Engines/Processors/shaderCodeNode.js.map +1 -1
  17. package/Engines/WebGPU/webgpuShaderProcessor.js +3 -0
  18. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  19. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +9 -9
  20. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  21. package/Engines/WebGPU/webgpuTextureHelper.js +3 -3
  22. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  23. package/Engines/nativeEngine.js +5 -4
  24. package/Engines/nativeEngine.js.map +1 -1
  25. package/Engines/thinEngine.d.ts +2 -0
  26. package/Engines/thinEngine.js +35 -4
  27. package/Engines/thinEngine.js.map +1 -1
  28. package/Engines/webgpuEngine.js +12 -2
  29. package/Engines/webgpuEngine.js.map +1 -1
  30. package/FlowGraph/Blocks/Data/flowGraphBinaryOpBlocks.d.ts +34 -0
  31. package/FlowGraph/Blocks/Data/flowGraphBinaryOpBlocks.js +29 -0
  32. package/FlowGraph/Blocks/Data/flowGraphBinaryOpBlocks.js.map +1 -0
  33. package/FlowGraph/Blocks/Data/index.d.ts +1 -0
  34. package/FlowGraph/Blocks/Data/index.js +2 -0
  35. package/FlowGraph/Blocks/Data/index.js.map +1 -0
  36. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.d.ts +23 -0
  37. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js +51 -0
  38. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js.map +1 -0
  39. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.d.ts +20 -0
  40. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js +29 -0
  41. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js.map +1 -0
  42. package/FlowGraph/Blocks/Event/index.d.ts +2 -0
  43. package/FlowGraph/Blocks/Event/index.js +3 -0
  44. package/FlowGraph/Blocks/Event/index.js.map +1 -0
  45. package/FlowGraph/Blocks/Execution/flowGraphForLoopBlock.d.ts +43 -0
  46. package/FlowGraph/Blocks/Execution/flowGraphForLoopBlock.js +40 -0
  47. package/FlowGraph/Blocks/Execution/flowGraphForLoopBlock.js.map +1 -0
  48. package/FlowGraph/Blocks/Execution/flowGraphLogBlock.d.ts +18 -0
  49. package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js +21 -0
  50. package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js.map +1 -0
  51. package/FlowGraph/Blocks/Execution/index.d.ts +2 -0
  52. package/FlowGraph/Blocks/Execution/index.js +3 -0
  53. package/FlowGraph/Blocks/Execution/index.js.map +1 -0
  54. package/FlowGraph/Blocks/index.d.ts +3 -0
  55. package/FlowGraph/Blocks/index.js +5 -0
  56. package/FlowGraph/Blocks/index.js.map +1 -0
  57. package/FlowGraph/flowGraph.d.ts +34 -0
  58. package/FlowGraph/flowGraph.js +54 -0
  59. package/FlowGraph/flowGraph.js.map +1 -0
  60. package/FlowGraph/flowGraphBlock.d.ts +33 -0
  61. package/FlowGraph/flowGraphBlock.js +39 -0
  62. package/FlowGraph/flowGraphBlock.js.map +1 -0
  63. package/FlowGraph/flowGraphConnection.d.ts +38 -0
  64. package/FlowGraph/flowGraphConnection.js +40 -0
  65. package/FlowGraph/flowGraphConnection.js.map +1 -0
  66. package/FlowGraph/flowGraphDataConnection.d.ts +15 -0
  67. package/FlowGraph/flowGraphDataConnection.js +30 -0
  68. package/FlowGraph/flowGraphDataConnection.js.map +1 -0
  69. package/FlowGraph/flowGraphEventBlock.d.ts +20 -0
  70. package/FlowGraph/flowGraphEventBlock.js +15 -0
  71. package/FlowGraph/flowGraphEventBlock.js.map +1 -0
  72. package/FlowGraph/flowGraphExecutionBlock.d.ts +24 -0
  73. package/FlowGraph/flowGraphExecutionBlock.js +27 -0
  74. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -0
  75. package/FlowGraph/flowGraphSignalConnection.d.ts +14 -0
  76. package/FlowGraph/flowGraphSignalConnection.js +22 -0
  77. package/FlowGraph/flowGraphSignalConnection.js.map +1 -0
  78. package/FlowGraph/flowGraphWithOnDoneExecutionBlock.d.ts +7 -0
  79. package/FlowGraph/flowGraphWithOnDoneExecutionBlock.js +8 -0
  80. package/FlowGraph/flowGraphWithOnDoneExecutionBlock.js.map +1 -0
  81. package/FlowGraph/index.d.ts +6 -0
  82. package/FlowGraph/index.js +8 -0
  83. package/FlowGraph/index.js.map +1 -0
  84. package/Gizmos/lightGizmo.d.ts +5 -0
  85. package/Gizmos/lightGizmo.js +21 -7
  86. package/Gizmos/lightGizmo.js.map +1 -1
  87. package/Gizmos/planeDragGizmo.js +13 -5
  88. package/Gizmos/planeDragGizmo.js.map +1 -1
  89. package/Gizmos/planeRotationGizmo.d.ts +6 -0
  90. package/Gizmos/planeRotationGizmo.js +5 -1
  91. package/Gizmos/planeRotationGizmo.js.map +1 -1
  92. package/Gizmos/rotationGizmo.d.ts +8 -0
  93. package/Gizmos/rotationGizmo.js +15 -0
  94. package/Gizmos/rotationGizmo.js.map +1 -1
  95. package/Layers/layer.js +1 -1
  96. package/Layers/layer.js.map +1 -1
  97. package/Lights/Shadows/cascadedShadowGenerator.d.ts +2 -1
  98. package/Lights/Shadows/cascadedShadowGenerator.js +4 -3
  99. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  100. package/Lights/Shadows/shadowGenerator.d.ts +3 -1
  101. package/Lights/Shadows/shadowGenerator.js +4 -2
  102. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  103. package/Lights/directionalLight.d.ts +1 -1
  104. package/Lights/directionalLight.js.map +1 -1
  105. package/Lights/hemisphericLight.d.ts +1 -1
  106. package/Lights/hemisphericLight.js.map +1 -1
  107. package/Lights/light.d.ts +1 -1
  108. package/Lights/light.js.map +1 -1
  109. package/Lights/pointLight.d.ts +1 -1
  110. package/Lights/pointLight.js.map +1 -1
  111. package/Lights/spotLight.d.ts +1 -1
  112. package/Lights/spotLight.js.map +1 -1
  113. package/Loading/sceneLoader.js +2 -0
  114. package/Loading/sceneLoader.js.map +1 -1
  115. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +13 -13
  116. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  117. package/Materials/Node/Blocks/Dual/fogBlock.js +6 -6
  118. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  119. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +11 -11
  120. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  121. package/Materials/Node/Blocks/Dual/lightBlock.js +16 -16
  122. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  123. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +27 -27
  124. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  125. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +1 -1
  126. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  127. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +15 -11
  128. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  129. package/Materials/Node/Blocks/Dual/textureBlock.js +28 -28
  130. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  131. package/Materials/Node/Blocks/Fragment/TBNBlock.js +3 -5
  132. package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
  133. package/Materials/Node/Blocks/Fragment/derivativeBlock.js +2 -2
  134. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  135. package/Materials/Node/Blocks/Fragment/discardBlock.js +1 -1
  136. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  137. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -1
  138. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  139. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js +1 -1
  140. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
  141. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +15 -15
  142. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  143. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +1 -1
  144. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  145. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +6 -6
  146. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  147. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +13 -13
  148. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  149. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +13 -13
  150. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  151. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -1
  152. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  153. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +5 -5
  154. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  155. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js +7 -7
  156. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js.map +1 -1
  157. package/Materials/Node/Blocks/Fragment/twirlBlock.js +3 -3
  158. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  159. package/Materials/Node/Blocks/Input/inputBlock.js +11 -11
  160. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  161. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +6 -6
  162. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  163. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +9 -9
  164. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  165. package/Materials/Node/Blocks/PBR/iridescenceBlock.js +1 -1
  166. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
  167. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +47 -47
  168. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  169. package/Materials/Node/Blocks/PBR/reflectionBlock.js +9 -9
  170. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  171. package/Materials/Node/Blocks/PBR/refractionBlock.js +14 -14
  172. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  173. package/Materials/Node/Blocks/PBR/sheenBlock.js +4 -4
  174. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  175. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -1
  176. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  177. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +8 -8
  178. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  179. package/Materials/Node/Blocks/Teleport/index.d.ts +2 -0
  180. package/Materials/Node/Blocks/Teleport/index.js +3 -0
  181. package/Materials/Node/Blocks/Teleport/index.js.map +1 -0
  182. package/Materials/Node/Blocks/Teleport/teleportInBlock.d.ts +42 -0
  183. package/Materials/Node/Blocks/Teleport/teleportInBlock.js +83 -0
  184. package/Materials/Node/Blocks/Teleport/teleportInBlock.js.map +1 -0
  185. package/Materials/Node/Blocks/Teleport/teleportOutBlock.d.ts +59 -0
  186. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js +122 -0
  187. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -0
  188. package/Materials/Node/Blocks/Vertex/bonesBlock.js +5 -5
  189. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  190. package/Materials/Node/Blocks/Vertex/instancesBlock.js +11 -11
  191. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  192. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +11 -11
  193. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  194. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +39 -39
  195. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  196. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +3 -3
  197. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  198. package/Materials/Node/Blocks/addBlock.js +1 -1
  199. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  200. package/Materials/Node/Blocks/arcTan2Block.js +1 -1
  201. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  202. package/Materials/Node/Blocks/clampBlock.js +4 -4
  203. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  204. package/Materials/Node/Blocks/cloudBlock.js +7 -7
  205. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  206. package/Materials/Node/Blocks/colorMergerBlock.js +8 -8
  207. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  208. package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
  209. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  210. package/Materials/Node/Blocks/conditionalBlock.js +10 -10
  211. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  212. package/Materials/Node/Blocks/crossBlock.js +1 -1
  213. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  214. package/Materials/Node/Blocks/curveBlock.js +5 -5
  215. package/Materials/Node/Blocks/curveBlock.js.map +1 -1
  216. package/Materials/Node/Blocks/customBlock.js +4 -4
  217. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  218. package/Materials/Node/Blocks/desaturateBlock.js +4 -4
  219. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  220. package/Materials/Node/Blocks/distanceBlock.js +1 -1
  221. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  222. package/Materials/Node/Blocks/divideBlock.js +1 -1
  223. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  224. package/Materials/Node/Blocks/dotBlock.js +1 -1
  225. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  226. package/Materials/Node/Blocks/elbowBlock.js +1 -1
  227. package/Materials/Node/Blocks/elbowBlock.js.map +1 -1
  228. package/Materials/Node/Blocks/fresnelBlock.js +1 -1
  229. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  230. package/Materials/Node/Blocks/gradientBlock.js +8 -8
  231. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  232. package/Materials/Node/Blocks/index.d.ts +1 -0
  233. package/Materials/Node/Blocks/index.js +1 -0
  234. package/Materials/Node/Blocks/index.js.map +1 -1
  235. package/Materials/Node/Blocks/lengthBlock.js +1 -1
  236. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  237. package/Materials/Node/Blocks/lerpBlock.js +1 -1
  238. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  239. package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -1
  240. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  241. package/Materials/Node/Blocks/matrixDeterminantBlock.js +1 -1
  242. package/Materials/Node/Blocks/matrixDeterminantBlock.js.map +1 -1
  243. package/Materials/Node/Blocks/matrixTransposeBlock.js +1 -1
  244. package/Materials/Node/Blocks/matrixTransposeBlock.js.map +1 -1
  245. package/Materials/Node/Blocks/maxBlock.js +1 -1
  246. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  247. package/Materials/Node/Blocks/meshAttributeExistsBlock.js +7 -7
  248. package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
  249. package/Materials/Node/Blocks/minBlock.js +1 -1
  250. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  251. package/Materials/Node/Blocks/modBlock.js +1 -1
  252. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  253. package/Materials/Node/Blocks/multiplyBlock.js +1 -1
  254. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  255. package/Materials/Node/Blocks/nLerpBlock.js +1 -1
  256. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  257. package/Materials/Node/Blocks/negateBlock.js +1 -1
  258. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  259. package/Materials/Node/Blocks/normalBlendBlock.js +6 -6
  260. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  261. package/Materials/Node/Blocks/normalizeBlock.js +1 -1
  262. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  263. package/Materials/Node/Blocks/oneMinusBlock.js +1 -1
  264. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  265. package/Materials/Node/Blocks/posterizeBlock.js +1 -1
  266. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  267. package/Materials/Node/Blocks/powBlock.js +1 -1
  268. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  269. package/Materials/Node/Blocks/randomNumberBlock.js +1 -1
  270. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  271. package/Materials/Node/Blocks/reciprocalBlock.js +2 -2
  272. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  273. package/Materials/Node/Blocks/reflectBlock.js +1 -1
  274. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  275. package/Materials/Node/Blocks/refractBlock.js +1 -1
  276. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  277. package/Materials/Node/Blocks/remapBlock.js +4 -4
  278. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  279. package/Materials/Node/Blocks/replaceColorBlock.js +6 -6
  280. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  281. package/Materials/Node/Blocks/rotate2dBlock.js +1 -1
  282. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  283. package/Materials/Node/Blocks/scaleBlock.js +1 -1
  284. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  285. package/Materials/Node/Blocks/simplexPerlin3DBlock.js +41 -41
  286. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  287. package/Materials/Node/Blocks/smoothStepBlock.js +1 -1
  288. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  289. package/Materials/Node/Blocks/stepBlock.js +1 -1
  290. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  291. package/Materials/Node/Blocks/subtractBlock.js +1 -1
  292. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  293. package/Materials/Node/Blocks/transformBlock.js +13 -14
  294. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  295. package/Materials/Node/Blocks/triPlanarBlock.js +17 -17
  296. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  297. package/Materials/Node/Blocks/trigonometryBlock.js +2 -2
  298. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  299. package/Materials/Node/Blocks/vectorMergerBlock.js +22 -22
  300. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  301. package/Materials/Node/Blocks/vectorSplitterBlock.js +8 -8
  302. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  303. package/Materials/Node/Blocks/viewDirectionBlock.js +1 -1
  304. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  305. package/Materials/Node/Blocks/voronoiNoiseBlock.js +5 -5
  306. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  307. package/Materials/Node/Blocks/waveBlock.js +3 -4
  308. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  309. package/Materials/Node/Blocks/worleyNoise3DBlock.js +155 -155
  310. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  311. package/Materials/Node/index.d.ts +1 -1
  312. package/Materials/Node/index.js +1 -1
  313. package/Materials/Node/index.js.map +1 -1
  314. package/Materials/Node/nodeMaterial.d.ts +2 -1
  315. package/Materials/Node/nodeMaterial.js +56 -17
  316. package/Materials/Node/nodeMaterial.js.map +1 -1
  317. package/Materials/Node/nodeMaterialBlock.d.ts +14 -2
  318. package/Materials/Node/nodeMaterialBlock.js +34 -11
  319. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  320. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +1 -1
  321. package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
  322. package/Materials/Node/nodeMaterialBuildState.js +36 -36
  323. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  324. package/Materials/Node/nodeMaterialBuildStateSharedData.js +4 -4
  325. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  326. package/Materials/Textures/Filtering/hdrFiltering.js +1 -0
  327. package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
  328. package/Materials/effect.js +1 -1
  329. package/Materials/effect.js.map +1 -1
  330. package/Materials/effectRenderer.d.ts +4 -0
  331. package/Materials/effectRenderer.js +8 -2
  332. package/Materials/effectRenderer.js.map +1 -1
  333. package/Materials/greasedLinePluginMaterial.d.ts +100 -4
  334. package/Materials/greasedLinePluginMaterial.js +27 -7
  335. package/Materials/greasedLinePluginMaterial.js.map +1 -1
  336. package/Materials/greasedLineSimpleMaterial.d.ts +228 -0
  337. package/Materials/greasedLineSimpleMaterial.js +435 -0
  338. package/Materials/greasedLineSimpleMaterial.js.map +1 -0
  339. package/Materials/material.decalMapConfiguration.js +2 -0
  340. package/Materials/material.decalMapConfiguration.js.map +1 -1
  341. package/Materials/materialPluginManager.js +5 -5
  342. package/Materials/materialPluginManager.js.map +1 -1
  343. package/Materials/meshDebugPluginMaterial.d.ts +58 -20
  344. package/Materials/meshDebugPluginMaterial.js +56 -87
  345. package/Materials/meshDebugPluginMaterial.js.map +1 -1
  346. package/Materials/shadowDepthWrapper.js +5 -5
  347. package/Materials/shadowDepthWrapper.js.map +1 -1
  348. package/Maths/math.vector.js.map +1 -1
  349. package/Meshes/Builders/boxBuilder.d.ts +31 -0
  350. package/Meshes/Builders/boxBuilder.js +65 -1
  351. package/Meshes/Builders/boxBuilder.js.map +1 -1
  352. package/Meshes/Builders/capsuleBuilder.js +3 -3
  353. package/Meshes/Builders/capsuleBuilder.js.map +1 -1
  354. package/Meshes/Builders/cylinderBuilder.js +2 -2
  355. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  356. package/Meshes/Builders/greasedLineBuilder.d.ts +3 -2
  357. package/Meshes/Builders/greasedLineBuilder.js +26 -15
  358. package/Meshes/Builders/greasedLineBuilder.js.map +1 -1
  359. package/Meshes/Builders/groundBuilder.js +2 -2
  360. package/Meshes/Builders/groundBuilder.js.map +1 -1
  361. package/Meshes/Builders/icoSphereBuilder.js +1 -1
  362. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  363. package/Meshes/Builders/linesBuilder.d.ts +1 -1
  364. package/Meshes/Builders/linesBuilder.js +1 -1
  365. package/Meshes/Builders/linesBuilder.js.map +1 -1
  366. package/Meshes/Builders/sphereBuilder.js +1 -1
  367. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  368. package/Meshes/Builders/textBuilder.d.ts +4 -0
  369. package/Meshes/Builders/textBuilder.js +2 -0
  370. package/Meshes/Builders/textBuilder.js.map +1 -1
  371. package/Meshes/Builders/torusBuilder.js +1 -1
  372. package/Meshes/Builders/torusBuilder.js.map +1 -1
  373. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.d.ts +85 -0
  374. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js +216 -0
  375. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -0
  376. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.d.ts +68 -0
  377. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js +186 -0
  378. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js.map +1 -0
  379. package/Meshes/Node/Blocks/Matrices/alignBlock.d.ts +31 -0
  380. package/Meshes/Node/Blocks/Matrices/alignBlock.js +58 -0
  381. package/Meshes/Node/Blocks/Matrices/alignBlock.js.map +1 -0
  382. package/Meshes/Node/Blocks/Matrices/rotationXBlock.d.ts +28 -0
  383. package/Meshes/Node/Blocks/Matrices/rotationXBlock.js +53 -0
  384. package/Meshes/Node/Blocks/Matrices/rotationXBlock.js.map +1 -0
  385. package/Meshes/Node/Blocks/Matrices/rotationYBlock.d.ts +28 -0
  386. package/Meshes/Node/Blocks/Matrices/rotationYBlock.js +53 -0
  387. package/Meshes/Node/Blocks/Matrices/rotationYBlock.js.map +1 -0
  388. package/Meshes/Node/Blocks/Matrices/rotationZBlock.d.ts +28 -0
  389. package/Meshes/Node/Blocks/Matrices/rotationZBlock.js +53 -0
  390. package/Meshes/Node/Blocks/Matrices/rotationZBlock.js.map +1 -0
  391. package/Meshes/Node/Blocks/Matrices/scalingBlock.d.ts +28 -0
  392. package/Meshes/Node/Blocks/Matrices/scalingBlock.js +54 -0
  393. package/Meshes/Node/Blocks/Matrices/scalingBlock.js.map +1 -0
  394. package/Meshes/Node/Blocks/Matrices/translationBlock.d.ts +28 -0
  395. package/Meshes/Node/Blocks/Matrices/translationBlock.js +54 -0
  396. package/Meshes/Node/Blocks/Matrices/translationBlock.js.map +1 -0
  397. package/Meshes/Node/Blocks/Set/setColorsBlock.d.ts +44 -0
  398. package/Meshes/Node/Blocks/Set/setColorsBlock.js +91 -0
  399. package/Meshes/Node/Blocks/Set/setColorsBlock.js.map +1 -0
  400. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.d.ts +36 -0
  401. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js +84 -0
  402. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js.map +1 -0
  403. package/Meshes/Node/Blocks/Set/setNormalsBlock.d.ts +44 -0
  404. package/Meshes/Node/Blocks/Set/setNormalsBlock.js +91 -0
  405. package/Meshes/Node/Blocks/Set/setNormalsBlock.js.map +1 -0
  406. package/Meshes/Node/Blocks/Set/setPositionsBlock.d.ts +44 -0
  407. package/Meshes/Node/Blocks/Set/setPositionsBlock.js +82 -0
  408. package/Meshes/Node/Blocks/Set/setPositionsBlock.js.map +1 -0
  409. package/Meshes/Node/Blocks/Set/setTangentsBlock.d.ts +44 -0
  410. package/Meshes/Node/Blocks/Set/setTangentsBlock.js +91 -0
  411. package/Meshes/Node/Blocks/Set/setTangentsBlock.js.map +1 -0
  412. package/Meshes/Node/Blocks/Set/setUVsBlock.d.ts +55 -0
  413. package/Meshes/Node/Blocks/Set/setUVsBlock.js +145 -0
  414. package/Meshes/Node/Blocks/Set/setUVsBlock.js.map +1 -0
  415. package/Meshes/Node/Blocks/Sources/boxBlock.d.ts +68 -0
  416. package/Meshes/Node/Blocks/Sources/boxBlock.js +175 -0
  417. package/Meshes/Node/Blocks/Sources/boxBlock.js.map +1 -0
  418. package/Meshes/Node/Blocks/Sources/capsuleBlock.d.ts +52 -0
  419. package/Meshes/Node/Blocks/Sources/capsuleBlock.js +117 -0
  420. package/Meshes/Node/Blocks/Sources/capsuleBlock.js.map +1 -0
  421. package/Meshes/Node/Blocks/Sources/cylinderBlock.d.ts +64 -0
  422. package/Meshes/Node/Blocks/Sources/cylinderBlock.js +143 -0
  423. package/Meshes/Node/Blocks/Sources/cylinderBlock.js.map +1 -0
  424. package/Meshes/Node/Blocks/Sources/discBlock.d.ts +48 -0
  425. package/Meshes/Node/Blocks/Sources/discBlock.js +104 -0
  426. package/Meshes/Node/Blocks/Sources/discBlock.js.map +1 -0
  427. package/Meshes/Node/Blocks/Sources/gridBlock.d.ts +56 -0
  428. package/Meshes/Node/Blocks/Sources/gridBlock.js +125 -0
  429. package/Meshes/Node/Blocks/Sources/gridBlock.js.map +1 -0
  430. package/Meshes/Node/Blocks/Sources/icoSphereBlock.d.ts +56 -0
  431. package/Meshes/Node/Blocks/Sources/icoSphereBlock.js +120 -0
  432. package/Meshes/Node/Blocks/Sources/icoSphereBlock.js.map +1 -0
  433. package/Meshes/Node/Blocks/Sources/meshBlock.d.ts +38 -0
  434. package/Meshes/Node/Blocks/Sources/meshBlock.js +78 -0
  435. package/Meshes/Node/Blocks/Sources/meshBlock.js.map +1 -0
  436. package/Meshes/Node/Blocks/Sources/nullBlock.d.ts +22 -0
  437. package/Meshes/Node/Blocks/Sources/nullBlock.js +34 -0
  438. package/Meshes/Node/Blocks/Sources/nullBlock.js.map +1 -0
  439. package/Meshes/Node/Blocks/Sources/planeBlock.d.ts +48 -0
  440. package/Meshes/Node/Blocks/Sources/planeBlock.js +118 -0
  441. package/Meshes/Node/Blocks/Sources/planeBlock.js.map +1 -0
  442. package/Meshes/Node/Blocks/Sources/sphereBlock.d.ts +64 -0
  443. package/Meshes/Node/Blocks/Sources/sphereBlock.js +136 -0
  444. package/Meshes/Node/Blocks/Sources/sphereBlock.js.map +1 -0
  445. package/Meshes/Node/Blocks/Sources/torusBlock.d.ts +48 -0
  446. package/Meshes/Node/Blocks/Sources/torusBlock.js +104 -0
  447. package/Meshes/Node/Blocks/Sources/torusBlock.js.map +1 -0
  448. package/Meshes/Node/Blocks/Teleport/teleportInBlock.d.ts +37 -0
  449. package/Meshes/Node/Blocks/Teleport/teleportInBlock.js +75 -0
  450. package/Meshes/Node/Blocks/Teleport/teleportInBlock.js.map +1 -0
  451. package/Meshes/Node/Blocks/Teleport/teleportOutBlock.d.ts +50 -0
  452. package/Meshes/Node/Blocks/Teleport/teleportOutBlock.js +105 -0
  453. package/Meshes/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -0
  454. package/Meshes/Node/Blocks/computeNormalsBlock.d.ts +26 -0
  455. package/Meshes/Node/Blocks/computeNormalsBlock.js +49 -0
  456. package/Meshes/Node/Blocks/computeNormalsBlock.js.map +1 -0
  457. package/Meshes/Node/Blocks/conditionBlock.d.ts +72 -0
  458. package/Meshes/Node/Blocks/conditionBlock.js +174 -0
  459. package/Meshes/Node/Blocks/conditionBlock.js.map +1 -0
  460. package/Meshes/Node/Blocks/debugBlock.d.ts +34 -0
  461. package/Meshes/Node/Blocks/debugBlock.js +63 -0
  462. package/Meshes/Node/Blocks/debugBlock.js.map +1 -0
  463. package/Meshes/Node/Blocks/geometryElbowBlock.d.ts +31 -0
  464. package/Meshes/Node/Blocks/geometryElbowBlock.js +53 -0
  465. package/Meshes/Node/Blocks/geometryElbowBlock.js.map +1 -0
  466. package/Meshes/Node/Blocks/geometryInputBlock.d.ts +72 -0
  467. package/Meshes/Node/Blocks/geometryInputBlock.js +249 -0
  468. package/Meshes/Node/Blocks/geometryInputBlock.js.map +1 -0
  469. package/Meshes/Node/Blocks/geometryOptimizeBlock.d.ts +43 -0
  470. package/Meshes/Node/Blocks/geometryOptimizeBlock.js +118 -0
  471. package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -0
  472. package/Meshes/Node/Blocks/geometryOutputBlock.d.ts +30 -0
  473. package/Meshes/Node/Blocks/geometryOutputBlock.js +43 -0
  474. package/Meshes/Node/Blocks/geometryOutputBlock.js.map +1 -0
  475. package/Meshes/Node/Blocks/geometryTransformBlock.d.ts +60 -0
  476. package/Meshes/Node/Blocks/geometryTransformBlock.js +153 -0
  477. package/Meshes/Node/Blocks/geometryTransformBlock.js.map +1 -0
  478. package/Meshes/Node/Blocks/geometryTrigonometryBlock.d.ts +77 -0
  479. package/Meshes/Node/Blocks/geometryTrigonometryBlock.js +251 -0
  480. package/Meshes/Node/Blocks/geometryTrigonometryBlock.js.map +1 -0
  481. package/Meshes/Node/Blocks/intFloatConverterBlock.d.ts +35 -0
  482. package/Meshes/Node/Blocks/intFloatConverterBlock.js +81 -0
  483. package/Meshes/Node/Blocks/intFloatConverterBlock.js.map +1 -0
  484. package/Meshes/Node/Blocks/mapRangeBlock.d.ts +42 -0
  485. package/Meshes/Node/Blocks/mapRangeBlock.js +84 -0
  486. package/Meshes/Node/Blocks/mapRangeBlock.js.map +1 -0
  487. package/Meshes/Node/Blocks/mathBlock.d.ts +58 -0
  488. package/Meshes/Node/Blocks/mathBlock.js +237 -0
  489. package/Meshes/Node/Blocks/mathBlock.js.map +1 -0
  490. package/Meshes/Node/Blocks/mergeGeometryBlock.d.ts +55 -0
  491. package/Meshes/Node/Blocks/mergeGeometryBlock.js +123 -0
  492. package/Meshes/Node/Blocks/mergeGeometryBlock.js.map +1 -0
  493. package/Meshes/Node/Blocks/noiseBlock.d.ts +49 -0
  494. package/Meshes/Node/Blocks/noiseBlock.js +149 -0
  495. package/Meshes/Node/Blocks/noiseBlock.js.map +1 -0
  496. package/Meshes/Node/Blocks/normalizeVectorBlock.d.ts +27 -0
  497. package/Meshes/Node/Blocks/normalizeVectorBlock.js +51 -0
  498. package/Meshes/Node/Blocks/normalizeVectorBlock.js.map +1 -0
  499. package/Meshes/Node/Blocks/randomBlock.d.ts +31 -0
  500. package/Meshes/Node/Blocks/randomBlock.js +104 -0
  501. package/Meshes/Node/Blocks/randomBlock.js.map +1 -0
  502. package/Meshes/Node/Blocks/vectorConverterBlock.d.ts +85 -0
  503. package/Meshes/Node/Blocks/vectorConverterBlock.js +266 -0
  504. package/Meshes/Node/Blocks/vectorConverterBlock.js.map +1 -0
  505. package/Meshes/Node/Enums/nodeGeometryConnectionPointTypes.d.ts +27 -0
  506. package/Meshes/Node/Enums/nodeGeometryConnectionPointTypes.js +29 -0
  507. package/Meshes/Node/Enums/nodeGeometryConnectionPointTypes.js.map +1 -0
  508. package/Meshes/Node/Enums/nodeGeometryContextualSources.d.ts +31 -0
  509. package/Meshes/Node/Enums/nodeGeometryContextualSources.js +33 -0
  510. package/Meshes/Node/Enums/nodeGeometryContextualSources.js.map +1 -0
  511. package/Meshes/Node/Interfaces/nodeGeometryExecutionContext.d.ts +25 -0
  512. package/Meshes/Node/Interfaces/nodeGeometryExecutionContext.js +2 -0
  513. package/Meshes/Node/Interfaces/nodeGeometryExecutionContext.js.map +1 -0
  514. package/Meshes/Node/index.d.ts +51 -0
  515. package/Meshes/Node/index.js +52 -0
  516. package/Meshes/Node/index.js.map +1 -0
  517. package/Meshes/Node/nodeGeometry.d.ts +181 -0
  518. package/Meshes/Node/nodeGeometry.js +530 -0
  519. package/Meshes/Node/nodeGeometry.js.map +1 -0
  520. package/Meshes/Node/nodeGeometryBlock.d.ts +172 -0
  521. package/Meshes/Node/nodeGeometryBlock.js +452 -0
  522. package/Meshes/Node/nodeGeometryBlock.js.map +1 -0
  523. package/Meshes/Node/nodeGeometryBlockConnectionPoint.d.ts +176 -0
  524. package/Meshes/Node/nodeGeometryBlockConnectionPoint.js +305 -0
  525. package/Meshes/Node/nodeGeometryBlockConnectionPoint.js.map +1 -0
  526. package/Meshes/Node/nodeGeometryBuildState.d.ts +57 -0
  527. package/Meshes/Node/nodeGeometryBuildState.js +178 -0
  528. package/Meshes/Node/nodeGeometryBuildState.js.map +1 -0
  529. package/Meshes/greasedLineMesh.d.ts +4 -2
  530. package/Meshes/greasedLineMesh.js +26 -2
  531. package/Meshes/greasedLineMesh.js.map +1 -1
  532. package/Meshes/index.d.ts +1 -0
  533. package/Meshes/index.js +1 -0
  534. package/Meshes/index.js.map +1 -1
  535. package/Meshes/mesh.vertexData.d.ts +37 -2
  536. package/Meshes/mesh.vertexData.js +425 -95
  537. package/Meshes/mesh.vertexData.js.map +1 -1
  538. package/Misc/greasedLineTools.d.ts +1 -1
  539. package/Misc/greasedLineTools.js +1 -1
  540. package/Misc/greasedLineTools.js.map +1 -1
  541. package/Particles/IGPUParticleSystemPlatform.d.ts +1 -0
  542. package/Particles/IGPUParticleSystemPlatform.js.map +1 -1
  543. package/Particles/computeShaderParticleSystem.d.ts +1 -0
  544. package/Particles/computeShaderParticleSystem.js +5 -0
  545. package/Particles/computeShaderParticleSystem.js.map +1 -1
  546. package/Particles/gpuParticleSystem.js +11 -1
  547. package/Particles/gpuParticleSystem.js.map +1 -1
  548. package/Particles/webgl2ParticleSystem.d.ts +1 -0
  549. package/Particles/webgl2ParticleSystem.js +5 -0
  550. package/Particles/webgl2ParticleSystem.js.map +1 -1
  551. package/Physics/v2/IPhysicsEnginePlugin.d.ts +19 -2
  552. package/Physics/v2/IPhysicsEnginePlugin.js +8 -0
  553. package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
  554. package/Physics/v2/Plugins/havokPlugin.d.ts +19 -2
  555. package/Physics/v2/Plugins/havokPlugin.js +86 -11
  556. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  557. package/Physics/v2/physicsAggregate.d.ts +4 -0
  558. package/Physics/v2/physicsAggregate.js +3 -0
  559. package/Physics/v2/physicsAggregate.js.map +1 -1
  560. package/Physics/v2/physicsBody.js +1 -0
  561. package/Physics/v2/physicsBody.js.map +1 -1
  562. package/Physics/v2/physicsShape.d.ts +3 -0
  563. package/Physics/v2/physicsShape.js +11 -0
  564. package/Physics/v2/physicsShape.js.map +1 -1
  565. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +6 -4
  566. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
  567. package/PostProcesses/blurPostProcess.js +5 -5
  568. package/PostProcesses/blurPostProcess.js.map +1 -1
  569. package/PostProcesses/depthOfFieldBlurPostProcess.js +1 -1
  570. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  571. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  572. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  573. package/Rendering/fluidRenderer/fluidRenderer.d.ts +0 -1
  574. package/Rendering/fluidRenderer/fluidRenderer.js +0 -1
  575. package/Rendering/fluidRenderer/fluidRenderer.js.map +1 -1
  576. package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js +16 -8
  577. package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js.map +1 -1
  578. package/Shaders/ShadersInclude/backgroundUboDeclaration.js +9 -4
  579. package/Shaders/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
  580. package/Shaders/ShadersInclude/backgroundVertexDeclaration.js +8 -4
  581. package/Shaders/ShadersInclude/backgroundVertexDeclaration.js.map +1 -1
  582. package/Shaders/ShadersInclude/bakedVertexAnimation.js +20 -10
  583. package/Shaders/ShadersInclude/bakedVertexAnimation.js.map +1 -1
  584. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -3
  585. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -1
  586. package/Shaders/ShadersInclude/bayerDitherFunctions.js +9 -1
  587. package/Shaders/ShadersInclude/bayerDitherFunctions.js.map +1 -1
  588. package/Shaders/ShadersInclude/bonesDeclaration.js +13 -6
  589. package/Shaders/ShadersInclude/bonesDeclaration.js.map +1 -1
  590. package/Shaders/ShadersInclude/bonesVertex.js +36 -18
  591. package/Shaders/ShadersInclude/bonesVertex.js.map +1 -1
  592. package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js +2 -1
  593. package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js.map +1 -1
  594. package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js +6 -3
  595. package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js.map +1 -1
  596. package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js +4 -2
  597. package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js.map +1 -1
  598. package/Shaders/ShadersInclude/bumpFragment.js +40 -20
  599. package/Shaders/ShadersInclude/bumpFragment.js.map +1 -1
  600. package/Shaders/ShadersInclude/bumpFragmentFunctions.js +11 -1
  601. package/Shaders/ShadersInclude/bumpFragmentFunctions.js.map +1 -1
  602. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js +57 -7
  603. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
  604. package/Shaders/ShadersInclude/bumpVertex.js +2 -1
  605. package/Shaders/ShadersInclude/bumpVertex.js.map +1 -1
  606. package/Shaders/ShadersInclude/bumpVertexDeclaration.js +2 -1
  607. package/Shaders/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
  608. package/Shaders/ShadersInclude/clipPlaneFragment.js +20 -7
  609. package/Shaders/ShadersInclude/clipPlaneFragment.js.map +1 -1
  610. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js +12 -6
  611. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -1
  612. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js +12 -6
  613. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js.map +1 -1
  614. package/Shaders/ShadersInclude/clipPlaneVertex.js +12 -6
  615. package/Shaders/ShadersInclude/clipPlaneVertex.js.map +1 -1
  616. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js +12 -6
  617. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -1
  618. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js +12 -6
  619. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js.map +1 -1
  620. package/Shaders/ShadersInclude/decalFragment.js +6 -3
  621. package/Shaders/ShadersInclude/decalFragment.js.map +1 -1
  622. package/Shaders/ShadersInclude/decalFragmentDeclaration.js +2 -1
  623. package/Shaders/ShadersInclude/decalFragmentDeclaration.js.map +1 -1
  624. package/Shaders/ShadersInclude/decalVertexDeclaration.js +2 -1
  625. package/Shaders/ShadersInclude/decalVertexDeclaration.js.map +1 -1
  626. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +48 -24
  627. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js.map +1 -1
  628. package/Shaders/ShadersInclude/defaultUboDeclaration.js +5 -2
  629. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  630. package/Shaders/ShadersInclude/defaultVertexDeclaration.js +22 -11
  631. package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
  632. package/Shaders/ShadersInclude/depthPrePass.js +2 -1
  633. package/Shaders/ShadersInclude/depthPrePass.js.map +1 -1
  634. package/Shaders/ShadersInclude/diffusionProfile.js +1 -1
  635. package/Shaders/ShadersInclude/diffusionProfile.js.map +1 -1
  636. package/Shaders/ShadersInclude/fibonacci.js +4 -1
  637. package/Shaders/ShadersInclude/fibonacci.js.map +1 -1
  638. package/Shaders/ShadersInclude/fogFragment.js +6 -3
  639. package/Shaders/ShadersInclude/fogFragment.js.map +1 -1
  640. package/Shaders/ShadersInclude/fogFragmentDeclaration.js +9 -1
  641. package/Shaders/ShadersInclude/fogFragmentDeclaration.js.map +1 -1
  642. package/Shaders/ShadersInclude/fogVertex.js +2 -1
  643. package/Shaders/ShadersInclude/fogVertex.js.map +1 -1
  644. package/Shaders/ShadersInclude/fogVertexDeclaration.js +2 -1
  645. package/Shaders/ShadersInclude/fogVertexDeclaration.js.map +1 -1
  646. package/Shaders/ShadersInclude/fresnelFunction.js +3 -1
  647. package/Shaders/ShadersInclude/fresnelFunction.js.map +1 -1
  648. package/Shaders/ShadersInclude/geometryVertexDeclaration.js +1 -1
  649. package/Shaders/ShadersInclude/geometryVertexDeclaration.js.map +1 -1
  650. package/Shaders/ShadersInclude/harmonicsFunctions.js +20 -2
  651. package/Shaders/ShadersInclude/harmonicsFunctions.js.map +1 -1
  652. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +48 -17
  653. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  654. package/Shaders/ShadersInclude/helperFunctions.js +98 -28
  655. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  656. package/Shaders/ShadersInclude/imageProcessingCompatibility.js +2 -1
  657. package/Shaders/ShadersInclude/imageProcessingCompatibility.js.map +1 -1
  658. package/Shaders/ShadersInclude/imageProcessingDeclaration.js +18 -9
  659. package/Shaders/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
  660. package/Shaders/ShadersInclude/imageProcessingFunctions.js +71 -28
  661. package/Shaders/ShadersInclude/imageProcessingFunctions.js.map +1 -1
  662. package/Shaders/ShadersInclude/importanceSampling.js +4 -1
  663. package/Shaders/ShadersInclude/importanceSampling.js.map +1 -1
  664. package/Shaders/ShadersInclude/instancesDeclaration.js +14 -7
  665. package/Shaders/ShadersInclude/instancesDeclaration.js.map +1 -1
  666. package/Shaders/ShadersInclude/instancesVertex.js +12 -6
  667. package/Shaders/ShadersInclude/instancesVertex.js.map +1 -1
  668. package/Shaders/ShadersInclude/kernelBlurFragment.js +9 -4
  669. package/Shaders/ShadersInclude/kernelBlurFragment.js.map +1 -1
  670. package/Shaders/ShadersInclude/kernelBlurFragment2.js +8 -4
  671. package/Shaders/ShadersInclude/kernelBlurFragment2.js.map +1 -1
  672. package/Shaders/ShadersInclude/lightFragment.js +186 -93
  673. package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
  674. package/Shaders/ShadersInclude/lightFragmentDeclaration.js +54 -22
  675. package/Shaders/ShadersInclude/lightFragmentDeclaration.js.map +1 -1
  676. package/Shaders/ShadersInclude/lightUboDeclaration.js +51 -20
  677. package/Shaders/ShadersInclude/lightUboDeclaration.js.map +1 -1
  678. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js +18 -9
  679. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js.map +1 -1
  680. package/Shaders/ShadersInclude/lightVxUboDeclaration.js +15 -7
  681. package/Shaders/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  682. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +48 -20
  683. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  684. package/Shaders/ShadersInclude/logDepthDeclaration.js +2 -1
  685. package/Shaders/ShadersInclude/logDepthDeclaration.js.map +1 -1
  686. package/Shaders/ShadersInclude/logDepthFragment.js +2 -1
  687. package/Shaders/ShadersInclude/logDepthFragment.js.map +1 -1
  688. package/Shaders/ShadersInclude/logDepthVertex.js +2 -1
  689. package/Shaders/ShadersInclude/logDepthVertex.js.map +1 -1
  690. package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js +2 -1
  691. package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js.map +1 -1
  692. package/Shaders/ShadersInclude/meshFragmentDeclaration.js +2 -1
  693. package/Shaders/ShadersInclude/meshFragmentDeclaration.js.map +1 -1
  694. package/Shaders/ShadersInclude/meshUboDeclaration.js +5 -2
  695. package/Shaders/ShadersInclude/meshUboDeclaration.js.map +1 -1
  696. package/Shaders/ShadersInclude/meshVertexDeclaration.js +2 -1
  697. package/Shaders/ShadersInclude/meshVertexDeclaration.js.map +1 -1
  698. package/Shaders/ShadersInclude/morphTargetsVertex.js +16 -8
  699. package/Shaders/ShadersInclude/morphTargetsVertex.js.map +1 -1
  700. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +8 -4
  701. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  702. package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js +2 -1
  703. package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js.map +1 -1
  704. package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +7 -2
  705. package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
  706. package/Shaders/ShadersInclude/oitDeclaration.js +5 -2
  707. package/Shaders/ShadersInclude/oitDeclaration.js.map +1 -1
  708. package/Shaders/ShadersInclude/oitFragment.js +24 -12
  709. package/Shaders/ShadersInclude/oitFragment.js.map +1 -1
  710. package/Shaders/ShadersInclude/packingFunctions.js +4 -1
  711. package/Shaders/ShadersInclude/packingFunctions.js.map +1 -1
  712. package/Shaders/ShadersInclude/pbrBRDFFunctions.js +118 -42
  713. package/Shaders/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  714. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +49 -20
  715. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  716. package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js +25 -8
  717. package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js.map +1 -1
  718. package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js +26 -11
  719. package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js.map +1 -1
  720. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +32 -12
  721. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js.map +1 -1
  722. package/Shaders/ShadersInclude/pbrBlockClearcoat.js +194 -84
  723. package/Shaders/ShadersInclude/pbrBlockClearcoat.js.map +1 -1
  724. package/Shaders/ShadersInclude/pbrBlockDirectLighting.js +12 -6
  725. package/Shaders/ShadersInclude/pbrBlockDirectLighting.js.map +1 -1
  726. package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js +30 -14
  727. package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js.map +1 -1
  728. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js +56 -28
  729. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
  730. package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js +18 -9
  731. package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js.map +1 -1
  732. package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js +14 -7
  733. package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js.map +1 -1
  734. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +8 -4
  735. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
  736. package/Shaders/ShadersInclude/pbrBlockIridescence.js +36 -15
  737. package/Shaders/ShadersInclude/pbrBlockIridescence.js.map +1 -1
  738. package/Shaders/ShadersInclude/pbrBlockLightmapInit.js +8 -4
  739. package/Shaders/ShadersInclude/pbrBlockLightmapInit.js.map +1 -1
  740. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js +8 -4
  741. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
  742. package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js +10 -5
  743. package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js.map +1 -1
  744. package/Shaders/ShadersInclude/pbrBlockReflectance.js +12 -6
  745. package/Shaders/ShadersInclude/pbrBlockReflectance.js.map +1 -1
  746. package/Shaders/ShadersInclude/pbrBlockReflectance0.js +8 -4
  747. package/Shaders/ShadersInclude/pbrBlockReflectance0.js.map +1 -1
  748. package/Shaders/ShadersInclude/pbrBlockReflection.js +197 -77
  749. package/Shaders/ShadersInclude/pbrBlockReflection.js.map +1 -1
  750. package/Shaders/ShadersInclude/pbrBlockReflectivity.js +79 -36
  751. package/Shaders/ShadersInclude/pbrBlockReflectivity.js.map +1 -1
  752. package/Shaders/ShadersInclude/pbrBlockSheen.js +145 -60
  753. package/Shaders/ShadersInclude/pbrBlockSheen.js.map +1 -1
  754. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +226 -100
  755. package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  756. package/Shaders/ShadersInclude/pbrDebug.js +146 -67
  757. package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
  758. package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js +34 -8
  759. package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js.map +1 -1
  760. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +53 -22
  761. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  762. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +12 -5
  763. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
  764. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +88 -44
  765. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  766. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +10 -5
  767. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
  768. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +30 -15
  769. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  770. package/Shaders/ShadersInclude/pbrHelperFunctions.js +27 -8
  771. package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  772. package/Shaders/ShadersInclude/pbrIBLFunctions.js +9 -4
  773. package/Shaders/ShadersInclude/pbrIBLFunctions.js.map +1 -1
  774. package/Shaders/ShadersInclude/pbrUboDeclaration.js +4 -2
  775. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  776. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +64 -32
  777. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  778. package/Shaders/ShadersInclude/pointCloudVertex.js +2 -1
  779. package/Shaders/ShadersInclude/pointCloudVertex.js.map +1 -1
  780. package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js +2 -1
  781. package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js.map +1 -1
  782. package/Shaders/ShadersInclude/prePassVertex.js +24 -12
  783. package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
  784. package/Shaders/ShadersInclude/prePassVertexDeclaration.js +4 -2
  785. package/Shaders/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
  786. package/Shaders/ShadersInclude/reflectionFunction.js +52 -17
  787. package/Shaders/ShadersInclude/reflectionFunction.js.map +1 -1
  788. package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js +2 -1
  789. package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js.map +1 -1
  790. package/Shaders/ShadersInclude/samplerFragmentDeclaration.js +4 -2
  791. package/Shaders/ShadersInclude/samplerFragmentDeclaration.js.map +1 -1
  792. package/Shaders/ShadersInclude/samplerVertexDeclaration.js +2 -1
  793. package/Shaders/ShadersInclude/samplerVertexDeclaration.js.map +1 -1
  794. package/Shaders/ShadersInclude/samplerVertexImplementation.js +18 -6
  795. package/Shaders/ShadersInclude/samplerVertexImplementation.js.map +1 -1
  796. package/Shaders/ShadersInclude/sceneFragmentDeclaration.js +6 -3
  797. package/Shaders/ShadersInclude/sceneFragmentDeclaration.js.map +1 -1
  798. package/Shaders/ShadersInclude/sceneUboDeclaration.js +6 -3
  799. package/Shaders/ShadersInclude/sceneUboDeclaration.js.map +1 -1
  800. package/Shaders/ShadersInclude/sceneVertexDeclaration.js +6 -3
  801. package/Shaders/ShadersInclude/sceneVertexDeclaration.js.map +1 -1
  802. package/Shaders/ShadersInclude/screenSpaceRayTrace.js +109 -24
  803. package/Shaders/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
  804. package/Shaders/ShadersInclude/shadowMapFragment.js +20 -10
  805. package/Shaders/ShadersInclude/shadowMapFragment.js.map +1 -1
  806. package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js +10 -5
  807. package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js.map +1 -1
  808. package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +2 -1
  809. package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js.map +1 -1
  810. package/Shaders/ShadersInclude/shadowMapUboDeclaration.js +2 -1
  811. package/Shaders/ShadersInclude/shadowMapUboDeclaration.js.map +1 -1
  812. package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js +8 -4
  813. package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js.map +1 -1
  814. package/Shaders/ShadersInclude/shadowMapVertexMetric.js +12 -6
  815. package/Shaders/ShadersInclude/shadowMapVertexMetric.js.map +1 -1
  816. package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js +6 -3
  817. package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js.map +1 -1
  818. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +311 -54
  819. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
  820. package/Shaders/ShadersInclude/shadowsVertex.js +14 -7
  821. package/Shaders/ShadersInclude/shadowsVertex.js.map +1 -1
  822. package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js +2 -1
  823. package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js.map +1 -1
  824. package/Shaders/ShadersInclude/uvAttributeDeclaration.js +2 -1
  825. package/Shaders/ShadersInclude/uvAttributeDeclaration.js.map +1 -1
  826. package/Shaders/ShadersInclude/uvVariableDeclaration.js +4 -2
  827. package/Shaders/ShadersInclude/uvVariableDeclaration.js.map +1 -1
  828. package/Shaders/ShadersInclude/vertexColorMixing.js +8 -4
  829. package/Shaders/ShadersInclude/vertexColorMixing.js.map +1 -1
  830. package/Shaders/anaglyph.fragment.js +4 -2
  831. package/Shaders/anaglyph.fragment.js.map +1 -1
  832. package/Shaders/background.fragment.js +133 -62
  833. package/Shaders/background.fragment.js.map +1 -1
  834. package/Shaders/background.vertex.js +63 -30
  835. package/Shaders/background.vertex.js.map +1 -1
  836. package/Shaders/blackAndWhite.fragment.js +5 -2
  837. package/Shaders/blackAndWhite.fragment.js.map +1 -1
  838. package/Shaders/bloomMerge.fragment.js +5 -2
  839. package/Shaders/bloomMerge.fragment.js.map +1 -1
  840. package/Shaders/blur.fragment.js +6 -2
  841. package/Shaders/blur.fragment.js.map +1 -1
  842. package/Shaders/boundingBoxRenderer.fragment.js +4 -2
  843. package/Shaders/boundingBoxRenderer.fragment.js.map +1 -1
  844. package/Shaders/boundingBoxRenderer.vertex.js +12 -6
  845. package/Shaders/boundingBoxRenderer.vertex.js.map +1 -1
  846. package/Shaders/chromaticAberration.fragment.js +8 -2
  847. package/Shaders/chromaticAberration.fragment.js.map +1 -1
  848. package/Shaders/circleOfConfusion.fragment.js +9 -4
  849. package/Shaders/circleOfConfusion.fragment.js.map +1 -1
  850. package/Shaders/clearQuad.fragment.js +2 -1
  851. package/Shaders/clearQuad.fragment.js.map +1 -1
  852. package/Shaders/clearQuad.vertex.js +11 -4
  853. package/Shaders/clearQuad.vertex.js.map +1 -1
  854. package/Shaders/color.fragment.js +10 -5
  855. package/Shaders/color.fragment.js.map +1 -1
  856. package/Shaders/color.vertex.js +18 -9
  857. package/Shaders/color.vertex.js.map +1 -1
  858. package/Shaders/colorCorrection.fragment.js +10 -2
  859. package/Shaders/colorCorrection.fragment.js.map +1 -1
  860. package/Shaders/convolution.fragment.js +23 -2
  861. package/Shaders/convolution.fragment.js.map +1 -1
  862. package/Shaders/copyTextureToTexture.fragment.js +12 -5
  863. package/Shaders/copyTextureToTexture.fragment.js.map +1 -1
  864. package/Shaders/default.fragment.js +142 -71
  865. package/Shaders/default.fragment.js.map +1 -1
  866. package/Shaders/default.vertex.js +58 -29
  867. package/Shaders/default.vertex.js.map +1 -1
  868. package/Shaders/depth.fragment.js +24 -11
  869. package/Shaders/depth.fragment.js.map +1 -1
  870. package/Shaders/depth.vertex.js +35 -17
  871. package/Shaders/depth.vertex.js.map +1 -1
  872. package/Shaders/depthBoxBlur.fragment.js +6 -2
  873. package/Shaders/depthBoxBlur.fragment.js.map +1 -1
  874. package/Shaders/depthOfField.fragment.js +28 -3
  875. package/Shaders/depthOfField.fragment.js.map +1 -1
  876. package/Shaders/depthOfFieldMerge.fragment.js +17 -8
  877. package/Shaders/depthOfFieldMerge.fragment.js.map +1 -1
  878. package/Shaders/displayPass.fragment.js +4 -2
  879. package/Shaders/displayPass.fragment.js.map +1 -1
  880. package/Shaders/extractHighlights.fragment.js +4 -2
  881. package/Shaders/extractHighlights.fragment.js.map +1 -1
  882. package/Shaders/filter.fragment.js +4 -2
  883. package/Shaders/filter.fragment.js.map +1 -1
  884. package/Shaders/fluidRenderingBilateralBlur.fragment.js +4 -1
  885. package/Shaders/fluidRenderingBilateralBlur.fragment.js.map +1 -1
  886. package/Shaders/fluidRenderingParticleDepth.fragment.js +22 -11
  887. package/Shaders/fluidRenderingParticleDepth.fragment.js.map +1 -1
  888. package/Shaders/fluidRenderingParticleDepth.vertex.js +10 -5
  889. package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
  890. package/Shaders/fluidRenderingParticleDiffuse.fragment.js +2 -1
  891. package/Shaders/fluidRenderingParticleDiffuse.fragment.js.map +1 -1
  892. package/Shaders/fluidRenderingParticleDiffuse.vertex.js +0 -1
  893. package/Shaders/fluidRenderingParticleDiffuse.vertex.js.map +1 -1
  894. package/Shaders/fluidRenderingParticleThickness.fragment.js +2 -1
  895. package/Shaders/fluidRenderingParticleThickness.fragment.js.map +1 -1
  896. package/Shaders/fluidRenderingParticleThickness.vertex.js +2 -1
  897. package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
  898. package/Shaders/fluidRenderingRender.fragment.js +76 -35
  899. package/Shaders/fluidRenderingRender.fragment.js.map +1 -1
  900. package/Shaders/fluidRenderingStandardBlur.fragment.js +4 -1
  901. package/Shaders/fluidRenderingStandardBlur.fragment.js.map +1 -1
  902. package/Shaders/fxaa.fragment.js +47 -6
  903. package/Shaders/fxaa.fragment.js.map +1 -1
  904. package/Shaders/fxaa.vertex.js +6 -3
  905. package/Shaders/fxaa.vertex.js.map +1 -1
  906. package/Shaders/geometry.fragment.js +85 -42
  907. package/Shaders/geometry.fragment.js.map +1 -1
  908. package/Shaders/geometry.vertex.js +91 -45
  909. package/Shaders/geometry.vertex.js.map +1 -1
  910. package/Shaders/glowBlurPostProcess.fragment.js +7 -2
  911. package/Shaders/glowBlurPostProcess.fragment.js.map +1 -1
  912. package/Shaders/glowMapGeneration.fragment.js +46 -22
  913. package/Shaders/glowMapGeneration.fragment.js.map +1 -1
  914. package/Shaders/glowMapGeneration.vertex.js +41 -20
  915. package/Shaders/glowMapGeneration.vertex.js.map +1 -1
  916. package/Shaders/glowMapMerge.fragment.js +20 -10
  917. package/Shaders/glowMapMerge.fragment.js.map +1 -1
  918. package/Shaders/glowMapMerge.vertex.js +6 -3
  919. package/Shaders/glowMapMerge.vertex.js.map +1 -1
  920. package/Shaders/gpuRenderParticles.fragment.js +16 -8
  921. package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
  922. package/Shaders/gpuRenderParticles.vertex.js +77 -39
  923. package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
  924. package/Shaders/gpuUpdateParticles.fragment.js +2 -1
  925. package/Shaders/gpuUpdateParticles.fragment.js.map +1 -1
  926. package/Shaders/gpuUpdateParticles.vertex.js +206 -100
  927. package/Shaders/gpuUpdateParticles.vertex.js.map +1 -1
  928. package/Shaders/grain.fragment.js +5 -2
  929. package/Shaders/grain.fragment.js.map +1 -1
  930. package/Shaders/greasedLine.fragment.d.ts +5 -0
  931. package/Shaders/greasedLine.fragment.js +16 -0
  932. package/Shaders/greasedLine.fragment.js.map +1 -0
  933. package/Shaders/greasedLine.vertex.d.ts +5 -0
  934. package/Shaders/greasedLine.vertex.js +19 -0
  935. package/Shaders/greasedLine.vertex.js.map +1 -0
  936. package/Shaders/hdrFiltering.fragment.js +1 -1
  937. package/Shaders/hdrFiltering.fragment.js.map +1 -1
  938. package/Shaders/hdrFiltering.vertex.js +6 -3
  939. package/Shaders/hdrFiltering.vertex.js.map +1 -1
  940. package/Shaders/highlights.fragment.js +4 -2
  941. package/Shaders/highlights.fragment.js.map +1 -1
  942. package/Shaders/imageProcessing.fragment.js +12 -6
  943. package/Shaders/imageProcessing.fragment.js.map +1 -1
  944. package/Shaders/kernelBlur.fragment.js +24 -11
  945. package/Shaders/kernelBlur.fragment.js.map +1 -1
  946. package/Shaders/kernelBlur.vertex.js +10 -5
  947. package/Shaders/kernelBlur.vertex.js.map +1 -1
  948. package/Shaders/layer.fragment.js +13 -6
  949. package/Shaders/layer.fragment.js.map +1 -1
  950. package/Shaders/layer.vertex.js +6 -3
  951. package/Shaders/layer.vertex.js.map +1 -1
  952. package/Shaders/lensFlare.fragment.js +6 -3
  953. package/Shaders/lensFlare.fragment.js.map +1 -1
  954. package/Shaders/lensFlare.vertex.js +6 -3
  955. package/Shaders/lensFlare.vertex.js.map +1 -1
  956. package/Shaders/lensHighlights.fragment.js +14 -5
  957. package/Shaders/lensHighlights.fragment.js.map +1 -1
  958. package/Shaders/line.fragment.js +6 -3
  959. package/Shaders/line.fragment.js.map +1 -1
  960. package/Shaders/line.vertex.js +8 -4
  961. package/Shaders/line.vertex.js.map +1 -1
  962. package/Shaders/meshUVSpaceRenderer.fragment.js +3 -1
  963. package/Shaders/meshUVSpaceRenderer.fragment.js.map +1 -1
  964. package/Shaders/meshUVSpaceRenderer.vertex.js +14 -7
  965. package/Shaders/meshUVSpaceRenderer.vertex.js.map +1 -1
  966. package/Shaders/minmaxRedux.fragment.js +21 -8
  967. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  968. package/Shaders/motionBlur.fragment.js +35 -14
  969. package/Shaders/motionBlur.fragment.js.map +1 -1
  970. package/Shaders/noise.fragment.js +13 -2
  971. package/Shaders/noise.fragment.js.map +1 -1
  972. package/Shaders/oitBackBlend.fragment.js +2 -1
  973. package/Shaders/oitBackBlend.fragment.js.map +1 -1
  974. package/Shaders/oitFinal.fragment.js +4 -1
  975. package/Shaders/oitFinal.fragment.js.map +1 -1
  976. package/Shaders/outline.fragment.js +11 -5
  977. package/Shaders/outline.fragment.js.map +1 -1
  978. package/Shaders/outline.vertex.js +27 -13
  979. package/Shaders/outline.vertex.js.map +1 -1
  980. package/Shaders/particles.fragment.js +18 -9
  981. package/Shaders/particles.fragment.js.map +1 -1
  982. package/Shaders/particles.vertex.js +58 -29
  983. package/Shaders/particles.vertex.js.map +1 -1
  984. package/Shaders/pass.fragment.js +4 -2
  985. package/Shaders/pass.fragment.js.map +1 -1
  986. package/Shaders/passCube.fragment.js +17 -8
  987. package/Shaders/passCube.fragment.js.map +1 -1
  988. package/Shaders/pbr.fragment.js +389 -154
  989. package/Shaders/pbr.fragment.js.map +1 -1
  990. package/Shaders/pbr.vertex.js +70 -35
  991. package/Shaders/pbr.vertex.js.map +1 -1
  992. package/Shaders/postprocess.vertex.js +6 -3
  993. package/Shaders/postprocess.vertex.js.map +1 -1
  994. package/Shaders/procedural.vertex.js +6 -3
  995. package/Shaders/procedural.vertex.js.map +1 -1
  996. package/Shaders/refraction.fragment.js +1 -1
  997. package/Shaders/refraction.fragment.js.map +1 -1
  998. package/Shaders/rgbdDecode.fragment.js +4 -2
  999. package/Shaders/rgbdDecode.fragment.js.map +1 -1
  1000. package/Shaders/rgbdEncode.fragment.js +4 -2
  1001. package/Shaders/rgbdEncode.fragment.js.map +1 -1
  1002. package/Shaders/screenSpaceCurvature.fragment.js +11 -3
  1003. package/Shaders/screenSpaceCurvature.fragment.js.map +1 -1
  1004. package/Shaders/screenSpaceReflection.fragment.js +57 -15
  1005. package/Shaders/screenSpaceReflection.fragment.js.map +1 -1
  1006. package/Shaders/screenSpaceReflection2.fragment.js +125 -51
  1007. package/Shaders/screenSpaceReflection2.fragment.js.map +1 -1
  1008. package/Shaders/screenSpaceReflection2Blur.fragment.js +7 -1
  1009. package/Shaders/screenSpaceReflection2Blur.fragment.js.map +1 -1
  1010. package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js +28 -13
  1011. package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js.map +1 -1
  1012. package/Shaders/shadowMap.fragment.js +14 -6
  1013. package/Shaders/shadowMap.fragment.js.map +1 -1
  1014. package/Shaders/shadowMap.vertex.js +35 -17
  1015. package/Shaders/shadowMap.vertex.js.map +1 -1
  1016. package/Shaders/sharpen.fragment.js +8 -2
  1017. package/Shaders/sharpen.fragment.js.map +1 -1
  1018. package/Shaders/spriteMap.fragment.js +17 -4
  1019. package/Shaders/spriteMap.fragment.js.map +1 -1
  1020. package/Shaders/spriteMap.vertex.js +2 -1
  1021. package/Shaders/spriteMap.vertex.js.map +1 -1
  1022. package/Shaders/sprites.fragment.js +17 -7
  1023. package/Shaders/sprites.fragment.js.map +1 -1
  1024. package/Shaders/sprites.vertex.js +10 -4
  1025. package/Shaders/sprites.vertex.js.map +1 -1
  1026. package/Shaders/ssao.fragment.js +0 -2
  1027. package/Shaders/ssao.fragment.js.map +1 -1
  1028. package/Shaders/ssao2.fragment.js +0 -2
  1029. package/Shaders/ssao2.fragment.js.map +1 -1
  1030. package/Shaders/ssaoCombine.fragment.js +8 -4
  1031. package/Shaders/ssaoCombine.fragment.js.map +1 -1
  1032. package/Shaders/standard.fragment.js +101 -25
  1033. package/Shaders/standard.fragment.js.map +1 -1
  1034. package/Shaders/stereoscopicInterlace.fragment.js +14 -6
  1035. package/Shaders/stereoscopicInterlace.fragment.js.map +1 -1
  1036. package/Shaders/subSurfaceScattering.fragment.js +58 -12
  1037. package/Shaders/subSurfaceScattering.fragment.js.map +1 -1
  1038. package/Shaders/tonemap.fragment.js +21 -9
  1039. package/Shaders/tonemap.fragment.js.map +1 -1
  1040. package/Shaders/velocity.fragment.js +8 -4
  1041. package/Shaders/velocity.fragment.js.map +1 -1
  1042. package/Shaders/velocity.vertex.js +18 -9
  1043. package/Shaders/velocity.vertex.js.map +1 -1
  1044. package/Shaders/volumetricLightScattering.fragment.js +9 -4
  1045. package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
  1046. package/Shaders/volumetricLightScatteringPass.fragment.js +12 -5
  1047. package/Shaders/volumetricLightScatteringPass.fragment.js.map +1 -1
  1048. package/Shaders/volumetricLightScatteringPass.vertex.js +23 -11
  1049. package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
  1050. package/Shaders/vrDistortionCorrection.fragment.js +6 -2
  1051. package/Shaders/vrDistortionCorrection.fragment.js.map +1 -1
  1052. package/Shaders/vrMultiviewToSingleview.fragment.js +4 -2
  1053. package/Shaders/vrMultiviewToSingleview.fragment.js.map +1 -1
  1054. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js +24 -12
  1055. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js.map +1 -1
  1056. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -3
  1057. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -1
  1058. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +14 -6
  1059. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
  1060. package/ShadersWGSL/ShadersInclude/bonesVertex.js +36 -18
  1061. package/ShadersWGSL/ShadersInclude/bonesVertex.js.map +1 -1
  1062. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js +20 -7
  1063. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js.map +1 -1
  1064. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js +12 -6
  1065. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -1
  1066. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js +12 -6
  1067. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js.map +1 -1
  1068. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js +12 -6
  1069. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -1
  1070. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +14 -7
  1071. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js.map +1 -1
  1072. package/ShadersWGSL/ShadersInclude/instancesVertex.js +16 -8
  1073. package/ShadersWGSL/ShadersInclude/instancesVertex.js.map +1 -1
  1074. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js +3 -1
  1075. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js.map +1 -1
  1076. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +16 -8
  1077. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
  1078. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +8 -4
  1079. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  1080. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js +2 -1
  1081. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js.map +1 -1
  1082. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +6 -2
  1083. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
  1084. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +8 -3
  1085. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js.map +1 -1
  1086. package/ShadersWGSL/gpuUpdateParticles.compute.js +229 -90
  1087. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  1088. package/ShadersWGSL/postprocess.vertex.js +9 -4
  1089. package/ShadersWGSL/postprocess.vertex.js.map +1 -1
  1090. package/assetContainer.d.ts +7 -0
  1091. package/assetContainer.js +46 -0
  1092. package/assetContainer.js.map +1 -1
  1093. package/index.d.ts +1 -0
  1094. package/index.js +1 -0
  1095. package/index.js.map +1 -1
  1096. package/package.json +1 -1
  1097. package/scene.js +5 -0
  1098. package/scene.js.map +1 -1
  1099. package/Materials/Node/nodeMaterialDecorator.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"greasedLineSimpleMaterial.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/greasedLineSimpleMaterial.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,wBAAwB,EAAE,oCAAoC,EAAE,MAAM,6BAA6B,CAAC;AAE7G,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,OAAO,iCAAiC,CAAC;AACzC,OAAO,+BAA+B,CAAC;AAEvC;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,cAAc;IAkCzD;;;;;OAKG;IACH,YAAY,IAAY,EAAE,KAAY,EAAE,OAAmC;;QACvE,KAAK,CACD,IAAI,EACJ,KAAK,EACL;YACI,MAAM,EAAE,aAAa;YACrB,QAAQ,EAAE,aAAa;SAC1B,EACD;YACI,UAAU,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,CAAC;YAClI,QAAQ,EAAE;gBACN,qBAAqB;gBACrB,YAAY;gBACZ,gBAAgB;gBAChB,cAAc;gBACd,UAAU;gBACV,UAAU;gBACV,uCAAuC;gBACvC,eAAe;gBACf,WAAW;gBACX,oBAAoB;gBACpB,cAAc;gBACd,eAAe;gBACf,cAAc;gBACd,YAAY;gBACZ,eAAe;aAClB;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;YACvB,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,CAAC,EAAE;SAC5F,CACJ,CAAC;QA9CE,WAAM,GAAW,MAAM,CAAC,KAAK,EAAE,CAAC;QAEhC,4BAAuB,GAAyC,oCAAoC,CAAC,+BAA+B,CAAC;QA6CzI,OAAO,GAAG,OAAO,IAAI;YACjB,KAAK,EAAE,yBAAyB,CAAC,aAAa;SACjD,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,MAAA,OAAO,CAAC,UAAU,mCAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,KAAK,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,MAAA,OAAO,CAAC,SAAS,mCAAI,GAAG,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,MAAA,OAAO,CAAC,UAAU,mCAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,MAAA,OAAO,CAAC,SAAS,mCAAI,CAAC,CAAC,CAAC,kDAAkD;QAC3F,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,yBAAyB,CAAC,wBAAwB,CAAC,CAAC,CAAC,yBAAyB,CAAC,aAAa,CAAC;QACpK,IAAI,CAAC,eAAe,GAAG,MAAA,OAAO,CAAC,eAAe,mCAAI,KAAK,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,MAAA,OAAO,CAAC,KAAK,mCAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,MAAA,OAAO,CAAC,SAAS,mCAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,sBAAsB,GAAG,MAAA,OAAO,CAAC,qBAAqB,mCAAI,oCAAoC,CAAC,+BAA+B,CAAC;QACpI,IAAI,CAAC,cAAc,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,UAAU,CAAC,eAAe,CAAC;QAC3E,IAAI,CAAC,SAAS,GAAG,MAAA,OAAO,CAAC,SAAS,mCAAI,wBAAwB,CAAC,cAAc,CAAC;QAC9E,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,IAAI,CAAC;QAEtC,IAAI,CAAC,UAAU,GAAG,MAAA,OAAO,CAAC,UAAU,mCAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,mCAAmC;QAEvJ,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAChC;QAED,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE;;YACtC,MAAA,yBAAyB,CAAC,mBAAmB,0CAAE,OAAO,EAAE,CAAC;QAC7D,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,gBAAgB,CAAC,IAAc;QAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,kBAAkB,CAAC,MAAgB;QAC9C,MAAM,UAAU,GAAe,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACpC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACpC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACpC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;SACzB;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACK,oBAAoB,CAAC,IAAY,EAAE,MAAgB;QACvD,MAAM,WAAW,GAAG,yBAAyB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACzE,IAAI,CAAC,cAAc,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACnJ,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,OAAO;;QACV,MAAA,IAAI,CAAC,cAAc,0CAAE,OAAO,EAAE,CAAC;QAC/B,KAAK,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IAEO,qCAAqC;QACzC,IAAI,CAAC,UAAU,CAAC,uCAAuC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACzH,CAAC;IAED;;OAEG;IACI,UAAU;QACb,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SAC7C;IACL,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI,MAAM,CAAC,KAAyB;QAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACI,SAAS,CAAC,MAA0B,EAAE,IAAI,GAAG,KAAK,EAAE,eAAe,GAAG,KAAK;;QAC9E,MAAM,eAAe,GAAG,MAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,mCAAI,CAAC,CAAC;QAElD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACxC,MAAA,IAAI,CAAC,cAAc,0CAAE,OAAO,EAAE,CAAC;YAC/B,OAAO;SACV;QAED,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;YAC1B,OAAO;SACV;QAED,IAAI,IAAI,CAAC,cAAc,IAAI,eAAe,KAAK,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE;YAC9E,MAAM,UAAU,GAAG,yBAAyB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACxE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC1C;aAAM;YACH,MAAA,IAAI,CAAC,cAAc,0CAAE,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,IAAI,iBAAiB,EAAE,MAAM,CAAC,CAAC;SACpE;QAED,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;SACrD;IACL,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK,CAAC,KAAa;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS,CAAC,KAAc;QACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,cAAc,CAAC,KAAa;QAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU,CAAC,KAAa;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAI,OAAO,CAAC,KAAc;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACnF,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAI,UAAU,CAAC,KAAa;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI,SAAS,CAAC,KAAa;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IACD;;;OAGG;IACH,IAAI,SAAS,CAAC,KAAa;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,IAAI,eAAe,CAAC,KAAc;QAC9B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,yBAAyB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK,CAAC,KAAa;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,KAAuB;QACnC,KAAK,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,yBAAyB,CAAC,aAAa,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,IAAI,sBAAsB;QACtB,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,IAAI,sBAAsB,CAAC,KAA2C;QAClE,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,qCAAqC,EAAE,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,IAAI,SAAS,CAAC,KAA+B;QACzC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,qCAAqC,EAAE,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU,CAAC,KAAc;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACI,SAAS;QACZ,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9C,MAAM,0BAA0B,GAA+B;YAC3D,qBAAqB,EAAE,IAAI,CAAC,uBAAuB;YACnD,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,KAAK,EAAE,IAAI,CAAC,MAAM;SACrB,CAAC;QAEF,IAAI,CAAC,OAAO,IAAI,CAAC,0BAA0B,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnE,mBAAmB,CAAC,0BAA0B,GAAG,0BAA0B,CAAC;QAE5E,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAW,EAAE,KAAY,EAAE,QAAgB;;QACpD,qBAAqB;QACrB,MAAM,0BAA0B,GAA+B,MAAM,CAAC,0BAA0B,CAAC;QAEjG,MAAA,IAAI,CAAC,cAAc,0CAAE,OAAO,EAAE,CAAC;QAE/B,IAAI,0BAA0B,CAAC,MAAM,EAAE;YACnC,IAAI,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,IAAI,iBAAiB,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC;SAC/F;aAAM;YACH,yBAAyB,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;SAC/D;QAED,0BAA0B,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;QACpF,0BAA0B,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,sBAAsB,GAAG,0BAA0B,CAAC,qBAAqB,CAAC,CAAC;QACrI,0BAA0B,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,0BAA0B,CAAC,cAAc,CAAC,CAAC;QAC/G,0BAA0B,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;QAChG,0BAA0B,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;QAChG,0BAA0B,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;QACnG,0BAA0B,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC1F,0BAA0B,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;QAChG,0BAA0B,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;QAChG,0BAA0B,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;QACnG,0BAA0B,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;QACpF,0BAA0B,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,0BAA0B,CAAC,eAAe,CAAC,CAAC;QAClH,0BAA0B,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;IACvG,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,0BAA0B,CAAC,KAAY;QAClD,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACtC,yBAAyB,CAAC,mBAAmB,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;YAC9J,yBAAyB,CAAC,mBAAmB,CAAC,IAAI,GAAG,uBAAuB,CAAC;SAChF;IACL,CAAC;;AA5eD;;GAEG;AACW,uCAAa,GAAG,MAAM,CAAC,KAAK,EAAE,AAAjB,CAAkB;AAC7C;;GAEG;AACW,kDAAwB,GAAG,CAAC,AAAJ,CAAK;AAC3C;;GAEG;AACW,uCAAa,GAAG,GAAG,AAAN,CAAO","sourcesContent":["import type { Scene } from \"../scene\";\r\nimport { Engine } from \"../Engines/engine\";\r\nimport { RawTexture } from \"./Textures/rawTexture\";\r\nimport type { GreasedLineMaterialOptions, IGreasedLineMaterial } from \"./greasedLinePluginMaterial\";\r\nimport { GreasedLineMeshColorMode, GreasedLineMeshColorDistributionType } from \"./greasedLinePluginMaterial\";\r\n\r\nimport { ShaderMaterial } from \"./shaderMaterial\";\r\nimport type { Nullable } from \"../types\";\r\nimport { Color3 } from \"../Maths/math.color\";\r\nimport { Vector2 } from \"../Maths/math.vector\";\r\nimport type { BaseTexture } from \"./Textures/baseTexture\";\r\n\r\nimport \"../Shaders/greasedLine.fragment\";\r\nimport \"../Shaders/greasedLine.vertex\";\r\n\r\n/**\r\n * GreasedLineSimpleMaterial\r\n */\r\nexport class GreasedLineSimpleMaterial extends ShaderMaterial implements IGreasedLineMaterial {\r\n /**\r\n * Default line color for newly created lines\r\n */\r\n public static DEFAULT_COLOR = Color3.White();\r\n /**\r\n * Default line width when sizeAttenuation is true\r\n */\r\n public static DEFAULT_WIDTH_ATTENUATED = 1;\r\n /**\r\n * Defaule line width\r\n */\r\n public static DEFAULT_WIDTH = 0.1;\r\n\r\n private static _EmptyColorsTexture: BaseTexture;\r\n\r\n private _visibility: number;\r\n private _width: number;\r\n private _useDash: boolean;\r\n private _dashCount: number;\r\n private _dashArray: number;\r\n private _dashRatio: number;\r\n private _dashOffset: number;\r\n private _useColors: boolean;\r\n private _color: Color3 = Color3.White();\r\n private _colors: Nullable<Color3[]>;\r\n private _colorsDistributionType: GreasedLineMeshColorDistributionType = GreasedLineMeshColorDistributionType.COLOR_DISTRIBUTION_TYPE_SEGMENT;\r\n private _colorMode: GreasedLineMeshColorMode;\r\n private _colorsSampling: number;\r\n private _resolution: Vector2;\r\n private _sizeAttenuation: boolean;\r\n private _colorsTexture?: RawTexture;\r\n private _engine: Engine;\r\n\r\n /**\r\n * GreasedLineSimple material constructor\r\n * @param name material name\r\n * @param scene the scene\r\n * @param options material options\r\n */\r\n constructor(name: string, scene: Scene, options: GreasedLineMaterialOptions) {\r\n super(\r\n name,\r\n scene,\r\n {\r\n vertex: \"greasedLine\",\r\n fragment: \"greasedLine\",\r\n },\r\n {\r\n attributes: [\"position\", \"normal\", \"grl_previousAndSide\", \"grl_nextAndCounters\", \"grl_widths\", \"grl_offsets\", \"grl_colorPointers\"],\r\n uniforms: [\r\n \"worldViewProjection\",\r\n \"projection\",\r\n \"grlColorsWidth\",\r\n \"grlUseColors\",\r\n \"grlWidth\",\r\n \"grlColor\",\r\n \"grl_colorModeAndColorDistributionType\",\r\n \"grlResolution\",\r\n \"grlAspect\",\r\n \"grlAizeAttenuation\",\r\n \"grlDashArray\",\r\n \"grlDashOffset\",\r\n \"grlDashRatio\",\r\n \"grlUseDash\",\r\n \"grlVisibility\",\r\n ],\r\n samplers: [\"grlColors\"],\r\n defines: scene.useRightHandedSystem ? [\"GREASED_LNE_RIGHT_HANDED_COORDINATE_SYSTEM\"] : [],\r\n }\r\n );\r\n options = options || {\r\n color: GreasedLineSimpleMaterial.DEFAULT_COLOR,\r\n };\r\n\r\n this._engine = scene.getEngine();\r\n this.visibility = options.visibility ?? 1;\r\n this.useDash = options.useDash ?? false;\r\n this.dashRatio = options.dashRatio ?? 0.5;\r\n this.dashOffset = options.dashOffset ?? 0;\r\n this.dashCount = options.dashCount ?? 1; // calculate the _dashArray value, call the setter\r\n this.width = options.width ? options.width : options.sizeAttenuation ? GreasedLineSimpleMaterial.DEFAULT_WIDTH_ATTENUATED : GreasedLineSimpleMaterial.DEFAULT_WIDTH;\r\n this.sizeAttenuation = options.sizeAttenuation ?? false;\r\n this.color = options.color ?? Color3.White();\r\n this.useColors = options.useColors ?? false;\r\n this.colorsDistributionType = options.colorDistributionType ?? GreasedLineMeshColorDistributionType.COLOR_DISTRIBUTION_TYPE_SEGMENT;\r\n this.colorsSampling = options.colorsSampling ?? RawTexture.NEAREST_NEAREST;\r\n this.colorMode = options.colorMode ?? GreasedLineMeshColorMode.COLOR_MODE_SET;\r\n this._colors = options.colors ?? null;\r\n\r\n this.resolution = options.resolution ?? new Vector2(this._engine.getRenderWidth(), this._engine.getRenderHeight()); // calculate aspect call the setter\r\n\r\n if (this._colors) {\r\n this.setColors(this._colors);\r\n }\r\n\r\n this._engine.onDisposeObservable.add(() => {\r\n GreasedLineSimpleMaterial._EmptyColorsTexture?.dispose();\r\n });\r\n }\r\n\r\n /**\r\n * Converts boolean to number.\r\n * @param bool\r\n * @returns 1 if true, 0 if false.\r\n */\r\n private static _BooleanToNumber(bool?: boolean) {\r\n return bool ? 1 : 0;\r\n }\r\n\r\n /**\r\n * Converts an array of Color3 to Uint8Array\r\n * @param colors Arrray of Color3\r\n * @returns Uin8Array of colors [r, g, b, a, r, g, b, a, ...]\r\n */\r\n private static _Color3toRGBAUint8(colors: Color3[]) {\r\n const colorTable: Uint8Array = new Uint8Array(colors.length * 4);\r\n for (let i = 0, j = 0; i < colors.length; i++) {\r\n colorTable[j++] = colors[i].r * 255;\r\n colorTable[j++] = colors[i].g * 255;\r\n colorTable[j++] = colors[i].b * 255;\r\n colorTable[j++] = 255;\r\n }\r\n\r\n return colorTable;\r\n }\r\n\r\n /**\r\n * Creates a RawTexture from an RGBA color array and sets it on the plugin material instance.\r\n * @param name name of the texture\r\n * @param colors Uint8Array of colors\r\n */\r\n private _createColorsTexture(name: string, colors: Color3[]) {\r\n const colorsArray = GreasedLineSimpleMaterial._Color3toRGBAUint8(colors);\r\n this._colorsTexture = new RawTexture(colorsArray, colors.length, 1, Engine.TEXTUREFORMAT_RGBA, this.getScene(), false, true, this._colorsSampling);\r\n this._colorsTexture.name = name;\r\n }\r\n\r\n /**\r\n * Disposes the plugin material.\r\n */\r\n public dispose(): void {\r\n this._colorsTexture?.dispose();\r\n super.dispose();\r\n }\r\n\r\n private _setColorModeAndColorDistributionType() {\r\n this.setVector2(\"grl_colorModeAndColorDistributionType\", new Vector2(this._colorMode, this._colorsDistributionType));\r\n }\r\n\r\n /**\r\n * Updates the material. Use when material created in lazy mode.\r\n */\r\n public updateLazy() {\r\n if (this._colors) {\r\n this.setColors(this._colors, false, true);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the colors used to colorize the line\r\n */\r\n get colors() {\r\n return this._colors;\r\n }\r\n\r\n /**\r\n * Sets the colors used to colorize the line\r\n */\r\n set colors(value: Nullable<Color3[]>) {\r\n this.setColors(value);\r\n }\r\n\r\n /**\r\n * Creates or updates the colors texture\r\n * @param colors color table RGBA\r\n * @param lazy if lazy, the colors are not updated\r\n * @param forceNewTexture force creation of a new texture\r\n * @returns\r\n */\r\n public setColors(colors: Nullable<Color3[]>, lazy = false, forceNewTexture = false): void {\r\n const origColorsCount = this._colors?.length ?? 0;\r\n\r\n this._colors = colors;\r\n\r\n if (colors === null || colors.length === 0) {\r\n this._colorsTexture?.dispose();\r\n return;\r\n }\r\n\r\n if (lazy && !forceNewTexture) {\r\n return;\r\n }\r\n\r\n if (this._colorsTexture && origColorsCount === colors.length && !forceNewTexture) {\r\n const colorArray = GreasedLineSimpleMaterial._Color3toRGBAUint8(colors);\r\n this._colorsTexture.update(colorArray);\r\n } else {\r\n this._colorsTexture?.dispose();\r\n this._createColorsTexture(`${this.name}-colors-texture`, colors);\r\n }\r\n\r\n if (this._colorsTexture) {\r\n this.setFloat(\"grlColorsWidth\", this._colorsTexture.getSize().width);\r\n this.setTexture(\"grlColors\", this._colorsTexture);\r\n }\r\n }\r\n\r\n /**\r\n * Line base width. At each point the line width is calculated by widths[pointIndex] * width\r\n */\r\n get width() {\r\n return this._width;\r\n }\r\n\r\n /**\r\n * Line base width. At each point the line width is calculated by widths[pointIndex] * width\r\n */\r\n set width(value: number) {\r\n this._width = value;\r\n this.setFloat(\"grlWidth\", value);\r\n }\r\n\r\n /**\r\n * Whether to use the colors option to colorize the line\r\n */\r\n get useColors() {\r\n return this._useColors;\r\n }\r\n\r\n set useColors(value: boolean) {\r\n this._useColors = value;\r\n this.setFloat(\"grlUseColors\", GreasedLineSimpleMaterial._BooleanToNumber(value));\r\n }\r\n\r\n /**\r\n * The type of sampling of the colors texture. The values are the same when using with textures.\r\n */\r\n get colorsSampling() {\r\n return this._colorsSampling;\r\n }\r\n\r\n /**\r\n * The type of sampling of the colors texture. The values are the same when using with textures.\r\n */\r\n set colorsSampling(value: number) {\r\n this._colorsSampling = value;\r\n }\r\n\r\n /**\r\n * Normalized value of how much of the line will be visible\r\n * 0 - 0% of the line will be visible\r\n * 1 - 100% of the line will be visible\r\n */\r\n get visibility() {\r\n return this._visibility;\r\n }\r\n\r\n set visibility(value: number) {\r\n this._visibility = value;\r\n this.setFloat(\"grlVisibility\", value);\r\n }\r\n\r\n /**\r\n * Turns on/off dash mode\r\n */\r\n get useDash() {\r\n return this._useDash;\r\n }\r\n\r\n /**\r\n * Turns on/off dash mode\r\n */\r\n set useDash(value: boolean) {\r\n this._useDash = value;\r\n this.setFloat(\"grlUseDash\", GreasedLineSimpleMaterial._BooleanToNumber(value));\r\n }\r\n\r\n /**\r\n * Gets the dash offset\r\n */\r\n get dashOffset() {\r\n return this._dashOffset;\r\n }\r\n\r\n /**\r\n * Sets the dash offset\r\n */\r\n set dashOffset(value: number) {\r\n this._dashOffset = value;\r\n this.setFloat(\"grlDashOffset\", value);\r\n }\r\n\r\n /**\r\n * Length of the dash. 0 to 1. 0.5 means half empty, half drawn.\r\n */\r\n get dashRatio() {\r\n return this._dashRatio;\r\n }\r\n\r\n /**\r\n * Length of the dash. 0 to 1. 0.5 means half empty, half drawn.\r\n */\r\n set dashRatio(value: number) {\r\n this._dashRatio = value;\r\n this.setFloat(\"grlDashRatio\", value);\r\n }\r\n\r\n /**\r\n * Gets the number of dashes in the line\r\n */\r\n get dashCount() {\r\n return this._dashCount;\r\n }\r\n /**\r\n * Sets the number of dashes in the line\r\n * @param value dash\r\n */\r\n set dashCount(value: number) {\r\n this._dashCount = value;\r\n this._dashArray = 1 / value;\r\n this.setFloat(\"grlDashArray\", this._dashArray);\r\n }\r\n\r\n /**\r\n * False means 1 unit in width = 1 unit on scene, true means 1 unit in width is reduced on the screen to make better looking lines\r\n */\r\n get sizeAttenuation() {\r\n return this._sizeAttenuation;\r\n }\r\n\r\n /**\r\n * Turn on/off attenuation of the width option and widths array.\r\n * @param value false means 1 unit in width = 1 unit on scene, true means 1 unit in width is reduced on the screen to make better looking lines\r\n */\r\n set sizeAttenuation(value: boolean) {\r\n this._sizeAttenuation = value;\r\n this.setFloat(\"grlSizeAttenuation\", GreasedLineSimpleMaterial._BooleanToNumber(value));\r\n }\r\n\r\n /**\r\n * Gets the color of the line\r\n */\r\n get color() {\r\n return this.color;\r\n }\r\n\r\n /**\r\n * Sets the color of the line\r\n * @param value Color3\r\n */\r\n set color(value: Color3) {\r\n this.setColor(value);\r\n }\r\n\r\n /**\r\n * Sets the color of the line. If set the whole line will be mixed with this color according to the colorMode option.\r\n * The simple material always needs a color to be set. If you set it to null it will set the color to the default color (GreasedLineSimpleMaterial.DEFAULT_COLOR).\r\n * @param value color\r\n */\r\n public setColor(value: Nullable<Color3>) {\r\n value = value ?? GreasedLineSimpleMaterial.DEFAULT_COLOR;\r\n this._color = value;\r\n this.setColor3(\"grlColor\", value);\r\n }\r\n\r\n /**\r\n * Gets the color distributiopn type\r\n */\r\n get colorsDistributionType() {\r\n return this._colorsDistributionType;\r\n }\r\n\r\n /**\r\n * Sets the color distribution type\r\n * @see GreasedLineMeshColorDistributionType\r\n * @param value color distribution type\r\n */\r\n set colorsDistributionType(value: GreasedLineMeshColorDistributionType) {\r\n this._colorsDistributionType = value;\r\n this._setColorModeAndColorDistributionType();\r\n }\r\n\r\n /**\r\n * Gets the mixing mode of the color and colors paramaters. Default value is GreasedLineMeshColorMode.SET.\r\n * MATERIAL_TYPE_SIMPLE mixes the color and colors of the greased line material.\r\n * @see GreasedLineMeshColorMode\r\n */\r\n get colorMode() {\r\n return this._colorMode;\r\n }\r\n\r\n /**\r\n * Sets the mixing mode of the color and colors paramaters. Default value is GreasedLineMeshColorMode.SET.\r\n * MATERIAL_TYPE_SIMPLE mixes the color and colors of the greased line material.\r\n * @see GreasedLineMeshColorMode\r\n */\r\n set colorMode(value: GreasedLineMeshColorMode) {\r\n this._colorMode = value;\r\n this._setColorModeAndColorDistributionType();\r\n }\r\n\r\n /**\r\n * Gets the resolution\r\n */\r\n get resolution() {\r\n return this._resolution;\r\n }\r\n\r\n /**\r\n * Sets the resolution\r\n * @param value resolution of the screen for GreasedLine\r\n */\r\n set resolution(value: Vector2) {\r\n this._resolution = value;\r\n this.setVector2(\"grlResolution\", value);\r\n this.setFloat(\"grlAspect\", value.x / value.y);\r\n }\r\n\r\n /**\r\n * Serializes this plugin material\r\n * @returns serializationObjec\r\n */\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n const greasedLineMaterialOptions: GreasedLineMaterialOptions = {\r\n colorDistributionType: this._colorsDistributionType,\r\n colorsSampling: this._colorsSampling,\r\n colorMode: this._colorMode,\r\n color: this._color,\r\n dashCount: this._dashCount,\r\n dashOffset: this._dashOffset,\r\n dashRatio: this._dashRatio,\r\n resolution: this._resolution,\r\n sizeAttenuation: this._sizeAttenuation,\r\n useColors: this._useColors,\r\n useDash: this._useDash,\r\n visibility: this._visibility,\r\n width: this._width,\r\n };\r\n\r\n this._colors && (greasedLineMaterialOptions.colors = this._colors);\r\n\r\n serializationObject.greasedLineMaterialOptions = greasedLineMaterialOptions;\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Parses a serialized objects\r\n * @param source serialized object\r\n * @param scene scene\r\n * @param _rootUrl root url for textures\r\n */\r\n public parse(source: any, scene: Scene, _rootUrl: string): void {\r\n // TODO: super.parse?\r\n const greasedLineMaterialOptions = <GreasedLineMaterialOptions>source.greasedLineMaterialOptions;\r\n\r\n this._colorsTexture?.dispose();\r\n\r\n if (greasedLineMaterialOptions.colors) {\r\n this._createColorsTexture(`${this.name}-colors-texture`, greasedLineMaterialOptions.colors);\r\n } else {\r\n GreasedLineSimpleMaterial._PrepareEmptyColorsTexture(scene);\r\n }\r\n\r\n greasedLineMaterialOptions.color && (this.color = greasedLineMaterialOptions.color);\r\n greasedLineMaterialOptions.colorDistributionType && (this.colorsDistributionType = greasedLineMaterialOptions.colorDistributionType);\r\n greasedLineMaterialOptions.colorsSampling && (this.colorsSampling = greasedLineMaterialOptions.colorsSampling);\r\n greasedLineMaterialOptions.colorMode && (this.colorMode = greasedLineMaterialOptions.colorMode);\r\n greasedLineMaterialOptions.useColors && (this.useColors = greasedLineMaterialOptions.useColors);\r\n greasedLineMaterialOptions.visibility && (this.visibility = greasedLineMaterialOptions.visibility);\r\n greasedLineMaterialOptions.useDash && (this.useDash = greasedLineMaterialOptions.useDash);\r\n greasedLineMaterialOptions.dashCount && (this.dashCount = greasedLineMaterialOptions.dashCount);\r\n greasedLineMaterialOptions.dashRatio && (this.dashRatio = greasedLineMaterialOptions.dashRatio);\r\n greasedLineMaterialOptions.dashOffset && (this.dashOffset = greasedLineMaterialOptions.dashOffset);\r\n greasedLineMaterialOptions.width && (this.width = greasedLineMaterialOptions.width);\r\n greasedLineMaterialOptions.sizeAttenuation && (this.sizeAttenuation = greasedLineMaterialOptions.sizeAttenuation);\r\n greasedLineMaterialOptions.resolution && (this.resolution = greasedLineMaterialOptions.resolution);\r\n }\r\n\r\n /**\r\n * A minimum size texture for the colors sampler2D when there is no colors texture defined yet.\r\n * For fast switching using the useColors property without the need to use defines.\r\n * @param scene Scene\r\n */\r\n private static _PrepareEmptyColorsTexture(scene: Scene) {\r\n if (!this._EmptyColorsTexture) {\r\n const colorsArray = new Uint8Array(4);\r\n GreasedLineSimpleMaterial._EmptyColorsTexture = new RawTexture(colorsArray, 1, 1, Engine.TEXTUREFORMAT_RGBA, scene, false, false, RawTexture.NEAREST_NEAREST);\r\n GreasedLineSimpleMaterial._EmptyColorsTexture.name = \"grlEmptyColorsTexture\";\r\n }\r\n }\r\n}\r\n"]}
@@ -5,6 +5,7 @@ import { MaterialPluginBase } from "./materialPluginBase.js";
5
5
 
6
6
  import { MaterialFlags } from "./materialFlags.js";
7
7
  import { MaterialHelper } from "./materialHelper.js";
8
+ import { RegisterClass } from "../Misc/typeStore.js";
8
9
  /**
9
10
  * @internal
10
11
  */
@@ -116,4 +117,5 @@ __decorate([
116
117
  serialize(),
117
118
  expandToProperty("_markAllSubMeshesAsTexturesDirty")
118
119
  ], DecalMapConfiguration.prototype, "smoothAlpha", void 0);
120
+ RegisterClass("BABYLON.DecalMapConfiguration", DecalMapConfiguration);
119
121
  //# sourceMappingURL=material.decalMapConfiguration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"material.decalMapConfiguration.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/material.decalMapConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import { serialize, expandToProperty } from \"../Misc/decorators\";\r\nimport { MaterialDefines } from \"./materialDefines\";\r\nimport { MaterialPluginBase } from \"./materialPluginBase\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { MaterialFlags } from \"./materialFlags\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { Engine } from \"core/Engines/engine\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { MaterialHelper } from \"./materialHelper\";\r\nimport type { UniformBuffer } from \"./uniformBuffer\";\r\nimport type { PBRBaseMaterial } from \"./PBR/pbrBaseMaterial\";\r\nimport type { StandardMaterial } from \"./standardMaterial\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class DecalMapDefines extends MaterialDefines {\r\n DECAL = false;\r\n DECALDIRECTUV = 0;\r\n DECAL_SMOOTHALPHA = false;\r\n GAMMADECAL = false;\r\n}\r\n\r\n/**\r\n * Plugin that implements the decal map component of a material\r\n * @since 5.49.1\r\n */\r\nexport class DecalMapConfiguration extends MaterialPluginBase {\r\n private _isEnabled = false;\r\n /**\r\n * Enables or disables the decal map on this material\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public isEnabled = false;\r\n\r\n private _smoothAlpha = false;\r\n\r\n /**\r\n * Enables or disables the smooth alpha mode on this material. Default: false.\r\n * When enabled, the alpha value used to blend the decal map will be the squared value and will produce a smoother result.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public smoothAlpha = false;\r\n\r\n private _internalMarkAllSubMeshesAsTexturesDirty: () => void;\r\n\r\n /** @internal */\r\n public _markAllSubMeshesAsTexturesDirty(): void {\r\n this._enable(this._isEnabled);\r\n this._internalMarkAllSubMeshesAsTexturesDirty();\r\n }\r\n\r\n /**\r\n * Creates a new DecalMapConfiguration\r\n * @param material The material to attach the decal map plugin to\r\n * @param addToPluginList If the plugin should be added to the material plugin list\r\n */\r\n constructor(material: PBRBaseMaterial | StandardMaterial, addToPluginList = true) {\r\n super(material, \"DecalMap\", 150, new DecalMapDefines(), addToPluginList);\r\n\r\n this.registerForExtraEvents = true; // because we override the hardBindForSubMesh method\r\n this._internalMarkAllSubMeshesAsTexturesDirty = material._dirtyCallbacks[Constants.MATERIAL_TextureDirtyFlag];\r\n }\r\n\r\n public isReadyForSubMesh(defines: DecalMapDefines, scene: Scene, engine: Engine, subMesh: SubMesh): boolean {\r\n const decalMap = subMesh.getMesh().decalMap;\r\n\r\n if (!this._isEnabled || !decalMap?.texture || !MaterialFlags.DecalMapEnabled || !scene.texturesEnabled) {\r\n return true;\r\n }\r\n\r\n return decalMap.isReady();\r\n }\r\n\r\n public prepareDefines(defines: DecalMapDefines, scene: Scene, mesh: AbstractMesh): void {\r\n const decalMap = mesh.decalMap;\r\n\r\n if (!this._isEnabled || !decalMap?.texture || !MaterialFlags.DecalMapEnabled || !scene.texturesEnabled) {\r\n const isDirty = defines.DECAL;\r\n if (isDirty) {\r\n defines.markAsTexturesDirty();\r\n }\r\n defines.DECAL = false;\r\n } else {\r\n const isDirty = !defines.DECAL || defines.GAMMADECAL !== decalMap.texture.gammaSpace;\r\n if (isDirty) {\r\n defines.markAsTexturesDirty();\r\n }\r\n defines.DECAL = true;\r\n defines.GAMMADECAL = decalMap.texture.gammaSpace;\r\n defines.DECAL_SMOOTHALPHA = this._smoothAlpha;\r\n MaterialHelper.PrepareDefinesForMergedUV(decalMap.texture, defines, \"DECAL\");\r\n }\r\n }\r\n\r\n /**\r\n * Note that we override hardBindForSubMesh and not bindForSubMesh because the material can be shared by multiple meshes,\r\n * in which case mustRebind could return false even though the decal map is different for each mesh: that's because the decal map\r\n * is not part of the material but hosted by the decalMap of the mesh instead.\r\n */\r\n public hardBindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene, _engine: Engine, subMesh: SubMesh): void {\r\n const decalMap = subMesh.getMesh().decalMap;\r\n\r\n if (!this._isEnabled || !decalMap?.texture || !MaterialFlags.DecalMapEnabled || !scene.texturesEnabled) {\r\n return;\r\n }\r\n\r\n const isFrozen = this._material.isFrozen;\r\n const texture = decalMap.texture;\r\n\r\n if (!uniformBuffer.useUbo || !isFrozen || !uniformBuffer.isSync) {\r\n uniformBuffer.updateFloat4(\"vDecalInfos\", texture.coordinatesIndex, 0, 0, 0);\r\n MaterialHelper.BindTextureMatrix(texture, uniformBuffer, \"decal\");\r\n }\r\n\r\n uniformBuffer.setTexture(\"decalSampler\", texture);\r\n }\r\n\r\n public getClassName(): string {\r\n return \"DecalMapConfiguration\";\r\n }\r\n\r\n public getSamplers(samplers: string[]): void {\r\n samplers.push(\"decalSampler\");\r\n }\r\n\r\n public getUniforms(): { ubo?: Array<{ name: string; size: number; type: string }>; vertex?: string; fragment?: string } {\r\n return {\r\n ubo: [\r\n { name: \"vDecalInfos\", size: 4, type: \"vec4\" },\r\n { name: \"decalMatrix\", size: 16, type: \"mat4\" },\r\n ],\r\n };\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"material.decalMapConfiguration.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/material.decalMapConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import { serialize, expandToProperty } from \"../Misc/decorators\";\r\nimport { MaterialDefines } from \"./materialDefines\";\r\nimport { MaterialPluginBase } from \"./materialPluginBase\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { MaterialFlags } from \"./materialFlags\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { Engine } from \"core/Engines/engine\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { MaterialHelper } from \"./materialHelper\";\r\nimport type { UniformBuffer } from \"./uniformBuffer\";\r\nimport type { PBRBaseMaterial } from \"./PBR/pbrBaseMaterial\";\r\nimport type { StandardMaterial } from \"./standardMaterial\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class DecalMapDefines extends MaterialDefines {\r\n DECAL = false;\r\n DECALDIRECTUV = 0;\r\n DECAL_SMOOTHALPHA = false;\r\n GAMMADECAL = false;\r\n}\r\n\r\n/**\r\n * Plugin that implements the decal map component of a material\r\n * @since 5.49.1\r\n */\r\nexport class DecalMapConfiguration extends MaterialPluginBase {\r\n private _isEnabled = false;\r\n /**\r\n * Enables or disables the decal map on this material\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public isEnabled = false;\r\n\r\n private _smoothAlpha = false;\r\n\r\n /**\r\n * Enables or disables the smooth alpha mode on this material. Default: false.\r\n * When enabled, the alpha value used to blend the decal map will be the squared value and will produce a smoother result.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public smoothAlpha = false;\r\n\r\n private _internalMarkAllSubMeshesAsTexturesDirty: () => void;\r\n\r\n /** @internal */\r\n public _markAllSubMeshesAsTexturesDirty(): void {\r\n this._enable(this._isEnabled);\r\n this._internalMarkAllSubMeshesAsTexturesDirty();\r\n }\r\n\r\n /**\r\n * Creates a new DecalMapConfiguration\r\n * @param material The material to attach the decal map plugin to\r\n * @param addToPluginList If the plugin should be added to the material plugin list\r\n */\r\n constructor(material: PBRBaseMaterial | StandardMaterial, addToPluginList = true) {\r\n super(material, \"DecalMap\", 150, new DecalMapDefines(), addToPluginList);\r\n\r\n this.registerForExtraEvents = true; // because we override the hardBindForSubMesh method\r\n this._internalMarkAllSubMeshesAsTexturesDirty = material._dirtyCallbacks[Constants.MATERIAL_TextureDirtyFlag];\r\n }\r\n\r\n public isReadyForSubMesh(defines: DecalMapDefines, scene: Scene, engine: Engine, subMesh: SubMesh): boolean {\r\n const decalMap = subMesh.getMesh().decalMap;\r\n\r\n if (!this._isEnabled || !decalMap?.texture || !MaterialFlags.DecalMapEnabled || !scene.texturesEnabled) {\r\n return true;\r\n }\r\n\r\n return decalMap.isReady();\r\n }\r\n\r\n public prepareDefines(defines: DecalMapDefines, scene: Scene, mesh: AbstractMesh): void {\r\n const decalMap = mesh.decalMap;\r\n\r\n if (!this._isEnabled || !decalMap?.texture || !MaterialFlags.DecalMapEnabled || !scene.texturesEnabled) {\r\n const isDirty = defines.DECAL;\r\n if (isDirty) {\r\n defines.markAsTexturesDirty();\r\n }\r\n defines.DECAL = false;\r\n } else {\r\n const isDirty = !defines.DECAL || defines.GAMMADECAL !== decalMap.texture.gammaSpace;\r\n if (isDirty) {\r\n defines.markAsTexturesDirty();\r\n }\r\n defines.DECAL = true;\r\n defines.GAMMADECAL = decalMap.texture.gammaSpace;\r\n defines.DECAL_SMOOTHALPHA = this._smoothAlpha;\r\n MaterialHelper.PrepareDefinesForMergedUV(decalMap.texture, defines, \"DECAL\");\r\n }\r\n }\r\n\r\n /**\r\n * Note that we override hardBindForSubMesh and not bindForSubMesh because the material can be shared by multiple meshes,\r\n * in which case mustRebind could return false even though the decal map is different for each mesh: that's because the decal map\r\n * is not part of the material but hosted by the decalMap of the mesh instead.\r\n */\r\n public hardBindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene, _engine: Engine, subMesh: SubMesh): void {\r\n const decalMap = subMesh.getMesh().decalMap;\r\n\r\n if (!this._isEnabled || !decalMap?.texture || !MaterialFlags.DecalMapEnabled || !scene.texturesEnabled) {\r\n return;\r\n }\r\n\r\n const isFrozen = this._material.isFrozen;\r\n const texture = decalMap.texture;\r\n\r\n if (!uniformBuffer.useUbo || !isFrozen || !uniformBuffer.isSync) {\r\n uniformBuffer.updateFloat4(\"vDecalInfos\", texture.coordinatesIndex, 0, 0, 0);\r\n MaterialHelper.BindTextureMatrix(texture, uniformBuffer, \"decal\");\r\n }\r\n\r\n uniformBuffer.setTexture(\"decalSampler\", texture);\r\n }\r\n\r\n public getClassName(): string {\r\n return \"DecalMapConfiguration\";\r\n }\r\n\r\n public getSamplers(samplers: string[]): void {\r\n samplers.push(\"decalSampler\");\r\n }\r\n\r\n public getUniforms(): { ubo?: Array<{ name: string; size: number; type: string }>; vertex?: string; fragment?: string } {\r\n return {\r\n ubo: [\r\n { name: \"vDecalInfos\", size: 4, type: \"vec4\" },\r\n { name: \"decalMatrix\", size: 16, type: \"mat4\" },\r\n ],\r\n };\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.DecalMapConfiguration\", DecalMapConfiguration);\r\n"]}
@@ -206,16 +206,16 @@ export class MaterialPluginManager {
206
206
  if (uniform.size && uniform.type) {
207
207
  const arraySize = (_a = uniform.arraySize) !== null && _a !== void 0 ? _a : 0;
208
208
  eventData.ubo.addUniform(uniform.name, uniform.size, arraySize);
209
- this._uboDeclaration += `${uniform.type} ${uniform.name}${arraySize > 0 ? `[${arraySize}]` : ""};\r\n`;
209
+ this._uboDeclaration += `${uniform.type} ${uniform.name}${arraySize > 0 ? `[${arraySize}]` : ""};\n`;
210
210
  }
211
211
  this._uniformList.push(uniform.name);
212
212
  }
213
213
  }
214
214
  if (uniforms.vertex) {
215
- this._vertexDeclaration += uniforms.vertex + "\r\n";
215
+ this._vertexDeclaration += uniforms.vertex + "\n";
216
216
  }
217
217
  if (uniforms.fragment) {
218
- this._fragmentDeclaration += uniforms.fragment + "\r\n";
218
+ this._fragmentDeclaration += uniforms.fragment + "\n";
219
219
  }
220
220
  }
221
221
  plugin.getSamplers(this._samplerList);
@@ -286,7 +286,7 @@ export class MaterialPluginManager {
286
286
  processorOptions.isFragment = shaderType === "fragment";
287
287
  ShaderProcessor._ProcessIncludes(customCode, processorOptions, (code) => (customCode = code));
288
288
  }
289
- injectedCode += customCode + "\r\n";
289
+ injectedCode += customCode + "\n";
290
290
  }
291
291
  if (injectedCode.length > 0) {
292
292
  if (pointName.charAt(0) === "!") {
@@ -324,7 +324,7 @@ export class MaterialPluginManager {
324
324
  }
325
325
  else {
326
326
  const fullPointName = "#define " + pointName;
327
- code = code.replace(fullPointName, "\r\n" + injectedCode + "\r\n" + fullPointName);
327
+ code = code.replace(fullPointName, "\n" + injectedCode + "\n" + fullPointName);
328
328
  }
329
329
  }
330
330
  }
@@ -1 +1 @@
1
- {"version":3,"file":"materialPluginManager.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/materialPluginManager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ProcessingOptions, ShaderCustomProcessingFunction } from \"../Engines/Processors/shaderProcessingOptions\";\r\nimport type { Nullable } from \"../types\";\r\nimport { Material } from \"./material\";\r\nimport type {\r\n MaterialPluginPrepareEffect,\r\n MaterialPluginBindForSubMesh,\r\n MaterialPluginDisposed,\r\n MaterialPluginGetActiveTextures,\r\n MaterialPluginGetAnimatables,\r\n MaterialPluginGetDefineNames,\r\n MaterialPluginHasTexture,\r\n MaterialPluginIsReadyForSubMesh,\r\n MaterialPluginPrepareDefines,\r\n MaterialPluginPrepareUniformBuffer,\r\n MaterialPluginHardBindForSubMesh,\r\n MaterialPluginHasRenderTargetTextures,\r\n MaterialPluginFillRenderTargetTextures,\r\n} from \"./materialPluginEvent\";\r\nimport { MaterialPluginEvent } from \"./materialPluginEvent\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\nimport type { Scene } from \"../scene\";\r\nimport type { Engine } from \"../Engines/engine\";\r\nimport type { MaterialPluginBase } from \"./materialPluginBase\";\r\nimport { ShaderProcessor } from \"../Engines/Processors/shaderProcessor\";\r\nimport { ShaderLanguage } from \"./shaderLanguage\";\r\nimport { ShaderStore } from \"../Engines/shaderStore\";\r\n\r\ndeclare module \"./material\" {\r\n export interface Material {\r\n /**\r\n * Plugin manager for this material\r\n */\r\n pluginManager?: MaterialPluginManager;\r\n }\r\n}\r\n\r\nconst rxOption = new RegExp(\"^([gimus]+)!\");\r\n\r\n/**\r\n * Class that manages the plugins of a material\r\n * @since 5.0\r\n */\r\nexport class MaterialPluginManager {\r\n /** Map a plugin class name to a #define name (used in the vertex/fragment shaders as a marker of the plugin usage) */\r\n private static _MaterialPluginClassToMainDefine: { [name: string]: string } = {};\r\n private static _MaterialPluginCounter: number = 0;\r\n\r\n protected _material: Material;\r\n protected _scene: Scene;\r\n protected _engine: Engine;\r\n /** @internal */\r\n public _plugins: MaterialPluginBase[] = [];\r\n protected _activePlugins: MaterialPluginBase[] = [];\r\n protected _activePluginsForExtraEvents: MaterialPluginBase[] = [];\r\n protected _codeInjectionPoints: { [shaderType: string]: { [codeName: string]: boolean } };\r\n protected _defineNamesFromPlugins?: { [name: string]: { type: string; default: any } };\r\n protected _uboDeclaration: string;\r\n protected _vertexDeclaration: string;\r\n protected _fragmentDeclaration: string;\r\n protected _uniformList: string[];\r\n protected _samplerList: string[];\r\n protected _uboList: string[];\r\n\r\n static {\r\n EngineStore.OnEnginesDisposedObservable.add(() => {\r\n UnregisterAllMaterialPlugins();\r\n });\r\n }\r\n\r\n /**\r\n * Creates a new instance of the plugin manager\r\n * @param material material that this manager will manage the plugins for\r\n */\r\n constructor(material: Material) {\r\n this._material = material;\r\n this._scene = material.getScene();\r\n this._engine = this._scene.getEngine();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _addPlugin(plugin: MaterialPluginBase): boolean {\r\n for (let i = 0; i < this._plugins.length; ++i) {\r\n if (this._plugins[i].name === plugin.name) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this._material._uniformBufferLayoutBuilt) {\r\n throw `The plugin \"${plugin.name}\" can't be added to the material \"${this._material.name}\" because this material has already been used for rendering! Please add plugins to materials before any rendering with this material occurs.`;\r\n }\r\n\r\n const pluginClassName = plugin.getClassName();\r\n if (!MaterialPluginManager._MaterialPluginClassToMainDefine[pluginClassName]) {\r\n MaterialPluginManager._MaterialPluginClassToMainDefine[pluginClassName] = \"MATERIALPLUGIN_\" + ++MaterialPluginManager._MaterialPluginCounter;\r\n }\r\n\r\n this._material._callbackPluginEventGeneric = this._handlePluginEvent.bind(this);\r\n\r\n this._plugins.push(plugin);\r\n this._plugins.sort((a, b) => a.priority - b.priority);\r\n\r\n this._codeInjectionPoints = {};\r\n\r\n const defineNamesFromPlugins: { [name: string]: { type: string; default: any } } = {};\r\n defineNamesFromPlugins[MaterialPluginManager._MaterialPluginClassToMainDefine[pluginClassName]] = {\r\n type: \"boolean\",\r\n default: true,\r\n };\r\n\r\n for (const plugin of this._plugins) {\r\n plugin.collectDefines(defineNamesFromPlugins);\r\n this._collectPointNames(\"vertex\", plugin.getCustomCode(\"vertex\"));\r\n this._collectPointNames(\"fragment\", plugin.getCustomCode(\"fragment\"));\r\n }\r\n\r\n this._defineNamesFromPlugins = defineNamesFromPlugins;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _activatePlugin(plugin: MaterialPluginBase): void {\r\n if (this._activePlugins.indexOf(plugin) === -1) {\r\n this._activePlugins.push(plugin);\r\n this._activePlugins.sort((a, b) => a.priority - b.priority);\r\n\r\n this._material._callbackPluginEventIsReadyForSubMesh = this._handlePluginEventIsReadyForSubMesh.bind(this);\r\n this._material._callbackPluginEventPrepareDefinesBeforeAttributes = this._handlePluginEventPrepareDefinesBeforeAttributes.bind(this);\r\n this._material._callbackPluginEventPrepareDefines = this._handlePluginEventPrepareDefines.bind(this);\r\n this._material._callbackPluginEventBindForSubMesh = this._handlePluginEventBindForSubMesh.bind(this);\r\n\r\n if (plugin.registerForExtraEvents) {\r\n this._activePluginsForExtraEvents.push(plugin);\r\n this._activePluginsForExtraEvents.sort((a, b) => a.priority - b.priority);\r\n this._material._callbackPluginEventHasRenderTargetTextures = this._handlePluginEventHasRenderTargetTextures.bind(this);\r\n this._material._callbackPluginEventFillRenderTargetTextures = this._handlePluginEventFillRenderTargetTextures.bind(this);\r\n this._material._callbackPluginEventHardBindForSubMesh = this._handlePluginEventHardBindForSubMesh.bind(this);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets a plugin from the list of plugins managed by this manager\r\n * @param name name of the plugin\r\n * @returns the plugin if found, else null\r\n */\r\n public getPlugin(name: string): Nullable<MaterialPluginBase> {\r\n for (let i = 0; i < this._plugins.length; ++i) {\r\n if (this._plugins[i].name === name) {\r\n return this._plugins[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n protected _handlePluginEventIsReadyForSubMesh(eventData: MaterialPluginIsReadyForSubMesh): void {\r\n let isReady = true;\r\n for (const plugin of this._activePlugins) {\r\n isReady = isReady && plugin.isReadyForSubMesh(eventData.defines, this._scene, this._engine, eventData.subMesh);\r\n }\r\n eventData.isReadyForSubMesh = isReady;\r\n }\r\n\r\n protected _handlePluginEventPrepareDefinesBeforeAttributes(eventData: MaterialPluginPrepareDefines): void {\r\n for (const plugin of this._activePlugins) {\r\n plugin.prepareDefinesBeforeAttributes(eventData.defines, this._scene, eventData.mesh);\r\n }\r\n }\r\n\r\n protected _handlePluginEventPrepareDefines(eventData: MaterialPluginPrepareDefines): void {\r\n for (const plugin of this._activePlugins) {\r\n plugin.prepareDefines(eventData.defines, this._scene, eventData.mesh);\r\n }\r\n }\r\n\r\n protected _handlePluginEventHardBindForSubMesh(eventData: MaterialPluginHardBindForSubMesh): void {\r\n for (const plugin of this._activePluginsForExtraEvents) {\r\n plugin.hardBindForSubMesh(this._material._uniformBuffer, this._scene, this._engine, eventData.subMesh);\r\n }\r\n }\r\n\r\n protected _handlePluginEventBindForSubMesh(eventData: MaterialPluginBindForSubMesh): void {\r\n for (const plugin of this._activePlugins) {\r\n plugin.bindForSubMesh(this._material._uniformBuffer, this._scene, this._engine, eventData.subMesh);\r\n }\r\n }\r\n\r\n protected _handlePluginEventHasRenderTargetTextures(eventData: MaterialPluginHasRenderTargetTextures): void {\r\n let hasRenderTargetTextures = false;\r\n for (const plugin of this._activePluginsForExtraEvents) {\r\n hasRenderTargetTextures = plugin.hasRenderTargetTextures();\r\n if (hasRenderTargetTextures) {\r\n break;\r\n }\r\n }\r\n eventData.hasRenderTargetTextures = hasRenderTargetTextures;\r\n }\r\n\r\n protected _handlePluginEventFillRenderTargetTextures(eventData: MaterialPluginFillRenderTargetTextures): void {\r\n for (const plugin of this._activePluginsForExtraEvents) {\r\n plugin.fillRenderTargetTextures(eventData.renderTargets);\r\n }\r\n }\r\n\r\n protected _handlePluginEvent(\r\n id: number,\r\n info:\r\n | MaterialPluginGetActiveTextures\r\n | MaterialPluginGetAnimatables\r\n | MaterialPluginHasTexture\r\n | MaterialPluginDisposed\r\n | MaterialPluginGetDefineNames\r\n | MaterialPluginPrepareEffect\r\n | MaterialPluginPrepareUniformBuffer\r\n ): void {\r\n switch (id) {\r\n case MaterialPluginEvent.GetActiveTextures: {\r\n const eventData = info as MaterialPluginGetActiveTextures;\r\n for (const plugin of this._activePlugins) {\r\n plugin.getActiveTextures(eventData.activeTextures);\r\n }\r\n break;\r\n }\r\n\r\n case MaterialPluginEvent.GetAnimatables: {\r\n const eventData = info as MaterialPluginGetAnimatables;\r\n for (const plugin of this._activePlugins) {\r\n plugin.getAnimatables(eventData.animatables);\r\n }\r\n break;\r\n }\r\n\r\n case MaterialPluginEvent.HasTexture: {\r\n const eventData = info as MaterialPluginHasTexture;\r\n let hasTexture = false;\r\n for (const plugin of this._activePlugins) {\r\n hasTexture = plugin.hasTexture(eventData.texture);\r\n if (hasTexture) {\r\n break;\r\n }\r\n }\r\n eventData.hasTexture = hasTexture;\r\n break;\r\n }\r\n\r\n case MaterialPluginEvent.Disposed: {\r\n const eventData = info as MaterialPluginDisposed;\r\n for (const plugin of this._plugins) {\r\n plugin.dispose(eventData.forceDisposeTextures);\r\n }\r\n break;\r\n }\r\n\r\n case MaterialPluginEvent.GetDefineNames: {\r\n const eventData = info as MaterialPluginGetDefineNames;\r\n eventData.defineNames = this._defineNamesFromPlugins;\r\n break;\r\n }\r\n\r\n case MaterialPluginEvent.PrepareEffect: {\r\n const eventData = info as MaterialPluginPrepareEffect;\r\n for (const plugin of this._activePlugins) {\r\n eventData.fallbackRank = plugin.addFallbacks(eventData.defines, eventData.fallbacks, eventData.fallbackRank);\r\n plugin.getAttributes(eventData.attributes, this._scene, eventData.mesh);\r\n }\r\n if (this._uniformList.length > 0) {\r\n eventData.uniforms.push(...this._uniformList);\r\n }\r\n if (this._samplerList.length > 0) {\r\n eventData.samplers.push(...this._samplerList);\r\n }\r\n if (this._uboList.length > 0) {\r\n eventData.uniformBuffersNames.push(...this._uboList);\r\n }\r\n eventData.customCode = this._injectCustomCode(eventData, eventData.customCode);\r\n break;\r\n }\r\n\r\n case MaterialPluginEvent.PrepareUniformBuffer: {\r\n const eventData = info as MaterialPluginPrepareUniformBuffer;\r\n this._uboDeclaration = \"\";\r\n this._vertexDeclaration = \"\";\r\n this._fragmentDeclaration = \"\";\r\n this._uniformList = [];\r\n this._samplerList = [];\r\n this._uboList = [];\r\n for (const plugin of this._plugins) {\r\n const uniforms = plugin.getUniforms();\r\n if (uniforms) {\r\n if (uniforms.ubo) {\r\n for (const uniform of uniforms.ubo) {\r\n if (uniform.size && uniform.type) {\r\n const arraySize = uniform.arraySize ?? 0;\r\n eventData.ubo.addUniform(uniform.name, uniform.size, arraySize);\r\n this._uboDeclaration += `${uniform.type} ${uniform.name}${arraySize > 0 ? `[${arraySize}]` : \"\"};\\r\\n`;\r\n }\r\n this._uniformList.push(uniform.name);\r\n }\r\n }\r\n if (uniforms.vertex) {\r\n this._vertexDeclaration += uniforms.vertex + \"\\r\\n\";\r\n }\r\n if (uniforms.fragment) {\r\n this._fragmentDeclaration += uniforms.fragment + \"\\r\\n\";\r\n }\r\n }\r\n plugin.getSamplers(this._samplerList);\r\n plugin.getUniformBuffersNames(this._uboList);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n protected _collectPointNames(shaderType: string, customCode: Nullable<{ [pointName: string]: string }> | undefined): void {\r\n if (!customCode) {\r\n return;\r\n }\r\n for (const pointName in customCode) {\r\n if (!this._codeInjectionPoints[shaderType]) {\r\n this._codeInjectionPoints[shaderType] = {};\r\n }\r\n this._codeInjectionPoints[shaderType][pointName] = true;\r\n }\r\n }\r\n\r\n protected _injectCustomCode(eventData: MaterialPluginPrepareEffect, existingCallback?: (shaderType: string, code: string) => string): ShaderCustomProcessingFunction {\r\n return (shaderType: string, code: string) => {\r\n if (existingCallback) {\r\n code = existingCallback(shaderType, code);\r\n }\r\n if (this._uboDeclaration) {\r\n code = code.replace(\"#define ADDITIONAL_UBO_DECLARATION\", this._uboDeclaration);\r\n }\r\n if (this._vertexDeclaration) {\r\n code = code.replace(\"#define ADDITIONAL_VERTEX_DECLARATION\", this._vertexDeclaration);\r\n }\r\n if (this._fragmentDeclaration) {\r\n code = code.replace(\"#define ADDITIONAL_FRAGMENT_DECLARATION\", this._fragmentDeclaration);\r\n }\r\n const points = this._codeInjectionPoints?.[shaderType];\r\n if (!points) {\r\n return code;\r\n }\r\n let processorOptions: Nullable<ProcessingOptions> = null;\r\n for (let pointName in points) {\r\n let injectedCode = \"\";\r\n for (const plugin of this._activePlugins) {\r\n let customCode = plugin.getCustomCode(shaderType)?.[pointName];\r\n if (!customCode) {\r\n continue;\r\n }\r\n if (plugin.resolveIncludes) {\r\n if (processorOptions === null) {\r\n const shaderLanguage = ShaderLanguage.GLSL;\r\n processorOptions = {\r\n defines: [], // not used by _ProcessIncludes\r\n indexParameters: eventData.indexParameters,\r\n isFragment: false,\r\n shouldUseHighPrecisionShader: this._engine._shouldUseHighPrecisionShader,\r\n processor: undefined as any, // not used by _ProcessIncludes\r\n supportsUniformBuffers: this._engine.supportsUniformBuffers,\r\n shadersRepository: ShaderStore.GetShadersRepository(shaderLanguage),\r\n includesShadersStore: ShaderStore.GetIncludesShadersStore(shaderLanguage),\r\n version: undefined as any, // not used by _ProcessIncludes\r\n platformName: this._engine.shaderPlatformName,\r\n processingContext: undefined as any, // not used by _ProcessIncludes\r\n isNDCHalfZRange: this._engine.isNDCHalfZRange,\r\n useReverseDepthBuffer: this._engine.useReverseDepthBuffer,\r\n processCodeAfterIncludes: undefined as any, // not used by _ProcessIncludes\r\n };\r\n }\r\n processorOptions.isFragment = shaderType === \"fragment\";\r\n ShaderProcessor._ProcessIncludes(customCode, processorOptions, (code) => (customCode = code));\r\n }\r\n injectedCode += customCode + \"\\r\\n\";\r\n }\r\n if (injectedCode.length > 0) {\r\n if (pointName.charAt(0) === \"!\") {\r\n // pointName is a regular expression\r\n pointName = pointName.substring(1);\r\n\r\n let regexFlags = \"g\";\r\n if (pointName.charAt(0) === \"!\") {\r\n // no flags\r\n regexFlags = \"\";\r\n pointName = pointName.substring(1);\r\n } else {\r\n // get the flag(s)\r\n const matchOption = rxOption.exec(pointName);\r\n if (matchOption && matchOption.length >= 2) {\r\n regexFlags = matchOption[1];\r\n pointName = pointName.substring(regexFlags.length + 1);\r\n }\r\n }\r\n\r\n if (regexFlags.indexOf(\"g\") < 0) {\r\n // we force the \"g\" flag so that the regexp object is stateful!\r\n regexFlags += \"g\";\r\n }\r\n\r\n const sourceCode = code;\r\n const rx = new RegExp(pointName, regexFlags);\r\n let match = rx.exec(sourceCode);\r\n while (match !== null) {\r\n let newCode = injectedCode;\r\n for (let i = 0; i < match.length; ++i) {\r\n newCode = newCode.replace(\"$\" + i, match[i]);\r\n }\r\n code = code.replace(match[0], newCode);\r\n match = rx.exec(sourceCode);\r\n }\r\n } else {\r\n const fullPointName = \"#define \" + pointName;\r\n code = code.replace(fullPointName, \"\\r\\n\" + injectedCode + \"\\r\\n\" + fullPointName);\r\n }\r\n }\r\n }\r\n return code;\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Type for plugin material factories.\r\n */\r\nexport type PluginMaterialFactory = (material: Material) => Nullable<MaterialPluginBase>;\r\n\r\nconst plugins: Array<[string, PluginMaterialFactory]> = [];\r\nlet inited = false;\r\nlet observer: Nullable<Observer<Material>> = null;\r\n\r\n/**\r\n * Registers a new material plugin through a factory, or updates it. This makes the plugin available to all materials instantiated after its registration.\r\n * @param pluginName The plugin name\r\n * @param factory The factory function which allows to create the plugin\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterMaterialPlugin(pluginName: string, factory: PluginMaterialFactory): void {\r\n if (!inited) {\r\n observer = Material.OnEventObservable.add((material: Material) => {\r\n for (const [, factory] of plugins) {\r\n factory(material);\r\n }\r\n }, MaterialPluginEvent.Created);\r\n inited = true;\r\n }\r\n const existing = plugins.filter(([name, _factory]) => name === pluginName);\r\n if (existing.length > 0) {\r\n existing[0][1] = factory;\r\n } else {\r\n plugins.push([pluginName, factory]);\r\n }\r\n}\r\n\r\n/**\r\n * Removes a material plugin from the list of global plugins.\r\n * @param pluginName The plugin name\r\n * @returns true if the plugin has been removed, else false\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function UnregisterMaterialPlugin(pluginName: string): boolean {\r\n for (let i = 0; i < plugins.length; ++i) {\r\n if (plugins[i][0] === pluginName) {\r\n plugins.splice(i, 1);\r\n if (plugins.length === 0) {\r\n UnregisterAllMaterialPlugins();\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Clear the list of global material plugins\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function UnregisterAllMaterialPlugins(): void {\r\n plugins.length = 0;\r\n inited = false;\r\n Material.OnEventObservable.remove(observer);\r\n observer = null;\r\n}\r\n"]}
1
+ {"version":3,"file":"materialPluginManager.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/materialPluginManager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ProcessingOptions, ShaderCustomProcessingFunction } from \"../Engines/Processors/shaderProcessingOptions\";\r\nimport type { Nullable } from \"../types\";\r\nimport { Material } from \"./material\";\r\nimport type {\r\n MaterialPluginPrepareEffect,\r\n MaterialPluginBindForSubMesh,\r\n MaterialPluginDisposed,\r\n MaterialPluginGetActiveTextures,\r\n MaterialPluginGetAnimatables,\r\n MaterialPluginGetDefineNames,\r\n MaterialPluginHasTexture,\r\n MaterialPluginIsReadyForSubMesh,\r\n MaterialPluginPrepareDefines,\r\n MaterialPluginPrepareUniformBuffer,\r\n MaterialPluginHardBindForSubMesh,\r\n MaterialPluginHasRenderTargetTextures,\r\n MaterialPluginFillRenderTargetTextures,\r\n} from \"./materialPluginEvent\";\r\nimport { MaterialPluginEvent } from \"./materialPluginEvent\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\nimport type { Scene } from \"../scene\";\r\nimport type { Engine } from \"../Engines/engine\";\r\nimport type { MaterialPluginBase } from \"./materialPluginBase\";\r\nimport { ShaderProcessor } from \"../Engines/Processors/shaderProcessor\";\r\nimport { ShaderLanguage } from \"./shaderLanguage\";\r\nimport { ShaderStore } from \"../Engines/shaderStore\";\r\n\r\ndeclare module \"./material\" {\r\n export interface Material {\r\n /**\r\n * Plugin manager for this material\r\n */\r\n pluginManager?: MaterialPluginManager;\r\n }\r\n}\r\n\r\nconst rxOption = new RegExp(\"^([gimus]+)!\");\r\n\r\n/**\r\n * Class that manages the plugins of a material\r\n * @since 5.0\r\n */\r\nexport class MaterialPluginManager {\r\n /** Map a plugin class name to a #define name (used in the vertex/fragment shaders as a marker of the plugin usage) */\r\n private static _MaterialPluginClassToMainDefine: { [name: string]: string } = {};\r\n private static _MaterialPluginCounter: number = 0;\r\n\r\n protected _material: Material;\r\n protected _scene: Scene;\r\n protected _engine: Engine;\r\n /** @internal */\r\n public _plugins: MaterialPluginBase[] = [];\r\n protected _activePlugins: MaterialPluginBase[] = [];\r\n protected _activePluginsForExtraEvents: MaterialPluginBase[] = [];\r\n protected _codeInjectionPoints: { [shaderType: string]: { [codeName: string]: boolean } };\r\n protected _defineNamesFromPlugins?: { [name: string]: { type: string; default: any } };\r\n protected _uboDeclaration: string;\r\n protected _vertexDeclaration: string;\r\n protected _fragmentDeclaration: string;\r\n protected _uniformList: string[];\r\n protected _samplerList: string[];\r\n protected _uboList: string[];\r\n\r\n static {\r\n EngineStore.OnEnginesDisposedObservable.add(() => {\r\n UnregisterAllMaterialPlugins();\r\n });\r\n }\r\n\r\n /**\r\n * Creates a new instance of the plugin manager\r\n * @param material material that this manager will manage the plugins for\r\n */\r\n constructor(material: Material) {\r\n this._material = material;\r\n this._scene = material.getScene();\r\n this._engine = this._scene.getEngine();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _addPlugin(plugin: MaterialPluginBase): boolean {\r\n for (let i = 0; i < this._plugins.length; ++i) {\r\n if (this._plugins[i].name === plugin.name) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this._material._uniformBufferLayoutBuilt) {\r\n throw `The plugin \"${plugin.name}\" can't be added to the material \"${this._material.name}\" because this material has already been used for rendering! Please add plugins to materials before any rendering with this material occurs.`;\r\n }\r\n\r\n const pluginClassName = plugin.getClassName();\r\n if (!MaterialPluginManager._MaterialPluginClassToMainDefine[pluginClassName]) {\r\n MaterialPluginManager._MaterialPluginClassToMainDefine[pluginClassName] = \"MATERIALPLUGIN_\" + ++MaterialPluginManager._MaterialPluginCounter;\r\n }\r\n\r\n this._material._callbackPluginEventGeneric = this._handlePluginEvent.bind(this);\r\n\r\n this._plugins.push(plugin);\r\n this._plugins.sort((a, b) => a.priority - b.priority);\r\n\r\n this._codeInjectionPoints = {};\r\n\r\n const defineNamesFromPlugins: { [name: string]: { type: string; default: any } } = {};\r\n defineNamesFromPlugins[MaterialPluginManager._MaterialPluginClassToMainDefine[pluginClassName]] = {\r\n type: \"boolean\",\r\n default: true,\r\n };\r\n\r\n for (const plugin of this._plugins) {\r\n plugin.collectDefines(defineNamesFromPlugins);\r\n this._collectPointNames(\"vertex\", plugin.getCustomCode(\"vertex\"));\r\n this._collectPointNames(\"fragment\", plugin.getCustomCode(\"fragment\"));\r\n }\r\n\r\n this._defineNamesFromPlugins = defineNamesFromPlugins;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _activatePlugin(plugin: MaterialPluginBase): void {\r\n if (this._activePlugins.indexOf(plugin) === -1) {\r\n this._activePlugins.push(plugin);\r\n this._activePlugins.sort((a, b) => a.priority - b.priority);\r\n\r\n this._material._callbackPluginEventIsReadyForSubMesh = this._handlePluginEventIsReadyForSubMesh.bind(this);\r\n this._material._callbackPluginEventPrepareDefinesBeforeAttributes = this._handlePluginEventPrepareDefinesBeforeAttributes.bind(this);\r\n this._material._callbackPluginEventPrepareDefines = this._handlePluginEventPrepareDefines.bind(this);\r\n this._material._callbackPluginEventBindForSubMesh = this._handlePluginEventBindForSubMesh.bind(this);\r\n\r\n if (plugin.registerForExtraEvents) {\r\n this._activePluginsForExtraEvents.push(plugin);\r\n this._activePluginsForExtraEvents.sort((a, b) => a.priority - b.priority);\r\n this._material._callbackPluginEventHasRenderTargetTextures = this._handlePluginEventHasRenderTargetTextures.bind(this);\r\n this._material._callbackPluginEventFillRenderTargetTextures = this._handlePluginEventFillRenderTargetTextures.bind(this);\r\n this._material._callbackPluginEventHardBindForSubMesh = this._handlePluginEventHardBindForSubMesh.bind(this);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets a plugin from the list of plugins managed by this manager\r\n * @param name name of the plugin\r\n * @returns the plugin if found, else null\r\n */\r\n public getPlugin(name: string): Nullable<MaterialPluginBase> {\r\n for (let i = 0; i < this._plugins.length; ++i) {\r\n if (this._plugins[i].name === name) {\r\n return this._plugins[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n protected _handlePluginEventIsReadyForSubMesh(eventData: MaterialPluginIsReadyForSubMesh): void {\r\n let isReady = true;\r\n for (const plugin of this._activePlugins) {\r\n isReady = isReady && plugin.isReadyForSubMesh(eventData.defines, this._scene, this._engine, eventData.subMesh);\r\n }\r\n eventData.isReadyForSubMesh = isReady;\r\n }\r\n\r\n protected _handlePluginEventPrepareDefinesBeforeAttributes(eventData: MaterialPluginPrepareDefines): void {\r\n for (const plugin of this._activePlugins) {\r\n plugin.prepareDefinesBeforeAttributes(eventData.defines, this._scene, eventData.mesh);\r\n }\r\n }\r\n\r\n protected _handlePluginEventPrepareDefines(eventData: MaterialPluginPrepareDefines): void {\r\n for (const plugin of this._activePlugins) {\r\n plugin.prepareDefines(eventData.defines, this._scene, eventData.mesh);\r\n }\r\n }\r\n\r\n protected _handlePluginEventHardBindForSubMesh(eventData: MaterialPluginHardBindForSubMesh): void {\r\n for (const plugin of this._activePluginsForExtraEvents) {\r\n plugin.hardBindForSubMesh(this._material._uniformBuffer, this._scene, this._engine, eventData.subMesh);\r\n }\r\n }\r\n\r\n protected _handlePluginEventBindForSubMesh(eventData: MaterialPluginBindForSubMesh): void {\r\n for (const plugin of this._activePlugins) {\r\n plugin.bindForSubMesh(this._material._uniformBuffer, this._scene, this._engine, eventData.subMesh);\r\n }\r\n }\r\n\r\n protected _handlePluginEventHasRenderTargetTextures(eventData: MaterialPluginHasRenderTargetTextures): void {\r\n let hasRenderTargetTextures = false;\r\n for (const plugin of this._activePluginsForExtraEvents) {\r\n hasRenderTargetTextures = plugin.hasRenderTargetTextures();\r\n if (hasRenderTargetTextures) {\r\n break;\r\n }\r\n }\r\n eventData.hasRenderTargetTextures = hasRenderTargetTextures;\r\n }\r\n\r\n protected _handlePluginEventFillRenderTargetTextures(eventData: MaterialPluginFillRenderTargetTextures): void {\r\n for (const plugin of this._activePluginsForExtraEvents) {\r\n plugin.fillRenderTargetTextures(eventData.renderTargets);\r\n }\r\n }\r\n\r\n protected _handlePluginEvent(\r\n id: number,\r\n info:\r\n | MaterialPluginGetActiveTextures\r\n | MaterialPluginGetAnimatables\r\n | MaterialPluginHasTexture\r\n | MaterialPluginDisposed\r\n | MaterialPluginGetDefineNames\r\n | MaterialPluginPrepareEffect\r\n | MaterialPluginPrepareUniformBuffer\r\n ): void {\r\n switch (id) {\r\n case MaterialPluginEvent.GetActiveTextures: {\r\n const eventData = info as MaterialPluginGetActiveTextures;\r\n for (const plugin of this._activePlugins) {\r\n plugin.getActiveTextures(eventData.activeTextures);\r\n }\r\n break;\r\n }\r\n\r\n case MaterialPluginEvent.GetAnimatables: {\r\n const eventData = info as MaterialPluginGetAnimatables;\r\n for (const plugin of this._activePlugins) {\r\n plugin.getAnimatables(eventData.animatables);\r\n }\r\n break;\r\n }\r\n\r\n case MaterialPluginEvent.HasTexture: {\r\n const eventData = info as MaterialPluginHasTexture;\r\n let hasTexture = false;\r\n for (const plugin of this._activePlugins) {\r\n hasTexture = plugin.hasTexture(eventData.texture);\r\n if (hasTexture) {\r\n break;\r\n }\r\n }\r\n eventData.hasTexture = hasTexture;\r\n break;\r\n }\r\n\r\n case MaterialPluginEvent.Disposed: {\r\n const eventData = info as MaterialPluginDisposed;\r\n for (const plugin of this._plugins) {\r\n plugin.dispose(eventData.forceDisposeTextures);\r\n }\r\n break;\r\n }\r\n\r\n case MaterialPluginEvent.GetDefineNames: {\r\n const eventData = info as MaterialPluginGetDefineNames;\r\n eventData.defineNames = this._defineNamesFromPlugins;\r\n break;\r\n }\r\n\r\n case MaterialPluginEvent.PrepareEffect: {\r\n const eventData = info as MaterialPluginPrepareEffect;\r\n for (const plugin of this._activePlugins) {\r\n eventData.fallbackRank = plugin.addFallbacks(eventData.defines, eventData.fallbacks, eventData.fallbackRank);\r\n plugin.getAttributes(eventData.attributes, this._scene, eventData.mesh);\r\n }\r\n if (this._uniformList.length > 0) {\r\n eventData.uniforms.push(...this._uniformList);\r\n }\r\n if (this._samplerList.length > 0) {\r\n eventData.samplers.push(...this._samplerList);\r\n }\r\n if (this._uboList.length > 0) {\r\n eventData.uniformBuffersNames.push(...this._uboList);\r\n }\r\n eventData.customCode = this._injectCustomCode(eventData, eventData.customCode);\r\n break;\r\n }\r\n\r\n case MaterialPluginEvent.PrepareUniformBuffer: {\r\n const eventData = info as MaterialPluginPrepareUniformBuffer;\r\n this._uboDeclaration = \"\";\r\n this._vertexDeclaration = \"\";\r\n this._fragmentDeclaration = \"\";\r\n this._uniformList = [];\r\n this._samplerList = [];\r\n this._uboList = [];\r\n for (const plugin of this._plugins) {\r\n const uniforms = plugin.getUniforms();\r\n if (uniforms) {\r\n if (uniforms.ubo) {\r\n for (const uniform of uniforms.ubo) {\r\n if (uniform.size && uniform.type) {\r\n const arraySize = uniform.arraySize ?? 0;\r\n eventData.ubo.addUniform(uniform.name, uniform.size, arraySize);\r\n this._uboDeclaration += `${uniform.type} ${uniform.name}${arraySize > 0 ? `[${arraySize}]` : \"\"};\\n`;\r\n }\r\n this._uniformList.push(uniform.name);\r\n }\r\n }\r\n if (uniforms.vertex) {\r\n this._vertexDeclaration += uniforms.vertex + \"\\n\";\r\n }\r\n if (uniforms.fragment) {\r\n this._fragmentDeclaration += uniforms.fragment + \"\\n\";\r\n }\r\n }\r\n plugin.getSamplers(this._samplerList);\r\n plugin.getUniformBuffersNames(this._uboList);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n protected _collectPointNames(shaderType: string, customCode: Nullable<{ [pointName: string]: string }> | undefined): void {\r\n if (!customCode) {\r\n return;\r\n }\r\n for (const pointName in customCode) {\r\n if (!this._codeInjectionPoints[shaderType]) {\r\n this._codeInjectionPoints[shaderType] = {};\r\n }\r\n this._codeInjectionPoints[shaderType][pointName] = true;\r\n }\r\n }\r\n\r\n protected _injectCustomCode(eventData: MaterialPluginPrepareEffect, existingCallback?: (shaderType: string, code: string) => string): ShaderCustomProcessingFunction {\r\n return (shaderType: string, code: string) => {\r\n if (existingCallback) {\r\n code = existingCallback(shaderType, code);\r\n }\r\n if (this._uboDeclaration) {\r\n code = code.replace(\"#define ADDITIONAL_UBO_DECLARATION\", this._uboDeclaration);\r\n }\r\n if (this._vertexDeclaration) {\r\n code = code.replace(\"#define ADDITIONAL_VERTEX_DECLARATION\", this._vertexDeclaration);\r\n }\r\n if (this._fragmentDeclaration) {\r\n code = code.replace(\"#define ADDITIONAL_FRAGMENT_DECLARATION\", this._fragmentDeclaration);\r\n }\r\n const points = this._codeInjectionPoints?.[shaderType];\r\n if (!points) {\r\n return code;\r\n }\r\n let processorOptions: Nullable<ProcessingOptions> = null;\r\n for (let pointName in points) {\r\n let injectedCode = \"\";\r\n for (const plugin of this._activePlugins) {\r\n let customCode = plugin.getCustomCode(shaderType)?.[pointName];\r\n if (!customCode) {\r\n continue;\r\n }\r\n if (plugin.resolveIncludes) {\r\n if (processorOptions === null) {\r\n const shaderLanguage = ShaderLanguage.GLSL;\r\n processorOptions = {\r\n defines: [], // not used by _ProcessIncludes\r\n indexParameters: eventData.indexParameters,\r\n isFragment: false,\r\n shouldUseHighPrecisionShader: this._engine._shouldUseHighPrecisionShader,\r\n processor: undefined as any, // not used by _ProcessIncludes\r\n supportsUniformBuffers: this._engine.supportsUniformBuffers,\r\n shadersRepository: ShaderStore.GetShadersRepository(shaderLanguage),\r\n includesShadersStore: ShaderStore.GetIncludesShadersStore(shaderLanguage),\r\n version: undefined as any, // not used by _ProcessIncludes\r\n platformName: this._engine.shaderPlatformName,\r\n processingContext: undefined as any, // not used by _ProcessIncludes\r\n isNDCHalfZRange: this._engine.isNDCHalfZRange,\r\n useReverseDepthBuffer: this._engine.useReverseDepthBuffer,\r\n processCodeAfterIncludes: undefined as any, // not used by _ProcessIncludes\r\n };\r\n }\r\n processorOptions.isFragment = shaderType === \"fragment\";\r\n ShaderProcessor._ProcessIncludes(customCode, processorOptions, (code) => (customCode = code));\r\n }\r\n injectedCode += customCode + \"\\n\";\r\n }\r\n if (injectedCode.length > 0) {\r\n if (pointName.charAt(0) === \"!\") {\r\n // pointName is a regular expression\r\n pointName = pointName.substring(1);\r\n\r\n let regexFlags = \"g\";\r\n if (pointName.charAt(0) === \"!\") {\r\n // no flags\r\n regexFlags = \"\";\r\n pointName = pointName.substring(1);\r\n } else {\r\n // get the flag(s)\r\n const matchOption = rxOption.exec(pointName);\r\n if (matchOption && matchOption.length >= 2) {\r\n regexFlags = matchOption[1];\r\n pointName = pointName.substring(regexFlags.length + 1);\r\n }\r\n }\r\n\r\n if (regexFlags.indexOf(\"g\") < 0) {\r\n // we force the \"g\" flag so that the regexp object is stateful!\r\n regexFlags += \"g\";\r\n }\r\n\r\n const sourceCode = code;\r\n const rx = new RegExp(pointName, regexFlags);\r\n let match = rx.exec(sourceCode);\r\n while (match !== null) {\r\n let newCode = injectedCode;\r\n for (let i = 0; i < match.length; ++i) {\r\n newCode = newCode.replace(\"$\" + i, match[i]);\r\n }\r\n code = code.replace(match[0], newCode);\r\n match = rx.exec(sourceCode);\r\n }\r\n } else {\r\n const fullPointName = \"#define \" + pointName;\r\n code = code.replace(fullPointName, \"\\n\" + injectedCode + \"\\n\" + fullPointName);\r\n }\r\n }\r\n }\r\n return code;\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Type for plugin material factories.\r\n */\r\nexport type PluginMaterialFactory = (material: Material) => Nullable<MaterialPluginBase>;\r\n\r\nconst plugins: Array<[string, PluginMaterialFactory]> = [];\r\nlet inited = false;\r\nlet observer: Nullable<Observer<Material>> = null;\r\n\r\n/**\r\n * Registers a new material plugin through a factory, or updates it. This makes the plugin available to all materials instantiated after its registration.\r\n * @param pluginName The plugin name\r\n * @param factory The factory function which allows to create the plugin\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterMaterialPlugin(pluginName: string, factory: PluginMaterialFactory): void {\r\n if (!inited) {\r\n observer = Material.OnEventObservable.add((material: Material) => {\r\n for (const [, factory] of plugins) {\r\n factory(material);\r\n }\r\n }, MaterialPluginEvent.Created);\r\n inited = true;\r\n }\r\n const existing = plugins.filter(([name, _factory]) => name === pluginName);\r\n if (existing.length > 0) {\r\n existing[0][1] = factory;\r\n } else {\r\n plugins.push([pluginName, factory]);\r\n }\r\n}\r\n\r\n/**\r\n * Removes a material plugin from the list of global plugins.\r\n * @param pluginName The plugin name\r\n * @returns true if the plugin has been removed, else false\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function UnregisterMaterialPlugin(pluginName: string): boolean {\r\n for (let i = 0; i < plugins.length; ++i) {\r\n if (plugins[i][0] === pluginName) {\r\n plugins.splice(i, 1);\r\n if (plugins.length === 0) {\r\n UnregisterAllMaterialPlugins();\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Clear the list of global material plugins\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function UnregisterAllMaterialPlugins(): void {\r\n plugins.length = 0;\r\n inited = false;\r\n Material.OnEventObservable.remove(observer);\r\n observer = null;\r\n}\r\n"]}
@@ -49,7 +49,7 @@ export declare enum MeshDebugMode {
49
49
  MATERIALIDS = 7
50
50
  }
51
51
  /**
52
- * Options for MeshDebugPluginMaterial that are given at initialization
52
+ * Options for MeshDebugPluginMaterial visualizations
53
53
  */
54
54
  export interface MeshDebugOptions {
55
55
  /**
@@ -151,11 +151,6 @@ export declare class MeshDebugPluginMaterial extends MaterialPluginBase {
151
151
  * Defaults to `defaultMaterialColors`
152
152
  */
153
153
  static MaterialColors: Color3[];
154
- /**
155
- * Options for the plugin.
156
- * See MeshDebugOptions interface for defaults.
157
- */
158
- private _options;
159
154
  /**
160
155
  * Material ID color of this plugin instance.
161
156
  * Taken from index `_PluginCount` of `MaterialColors` at time of instantiation.
@@ -168,16 +163,71 @@ export declare class MeshDebugPluginMaterial extends MaterialPluginBase {
168
163
  private _isEnabled;
169
164
  private _mode;
170
165
  /**
171
- * Current mesh debug visualization.
166
+ * The mesh debug visualization.
172
167
  * Defaults to NONE.
173
168
  */
174
169
  mode: MeshDebugMode;
175
170
  private _multiply;
176
171
  /**
177
- * Whether the mesh debug visualization multiplies with colors underneath.
172
+ * Whether the mesh debug visualization should multiply with color underneath.
178
173
  * Defaults to true.
179
174
  */
180
175
  multiply: boolean;
176
+ /**
177
+ * Diffuse color used to shade the mesh.
178
+ * Defaults to (1.0, 1.0, 1.0).
179
+ */
180
+ shadedDiffuseColor: Color3;
181
+ /**
182
+ * Specular color used to shade the mesh.
183
+ * Defaults to (0.8, 0.8, 0.8).
184
+ */
185
+ shadedSpecularColor: Color3;
186
+ /**
187
+ * Specular power used to shade the mesh.
188
+ * Defaults to 10.
189
+ */
190
+ shadedSpecularPower: number;
191
+ /**
192
+ * Width of edge lines in TRIANGLES and TRIANGLE_VERTICES modes.
193
+ * Defaults to 0.7.
194
+ */
195
+ wireframeThickness: number;
196
+ /**
197
+ * Color of edge lines in TRIANGLES mode.
198
+ * Defaults to (0.0, 0.0, 0.0).
199
+ */
200
+ wireframeTrianglesColor: Color3;
201
+ /**
202
+ * Color of edge lines in TRIANGLES_VERTICES modes.
203
+ * Defaults to (0.8, 0.8, 0.8).
204
+ */
205
+ wireframeVerticesColor: Color3;
206
+ /**
207
+ * Color of vertices in TRIANGLES_VERTICES and VERTICES mode.
208
+ * Defaults to (0.0, 0.0, 0.0).
209
+ */
210
+ vertexColor: Color3;
211
+ /**
212
+ * Radius of dots drawn over vertices in TRIANGLE_VERTICES and VERTICES mode.
213
+ * Defaults to 1.2.
214
+ */
215
+ vertexRadius: number;
216
+ /**
217
+ * Size of tiles in UV1 or UV2 modes.
218
+ * Defaults to 20.
219
+ */
220
+ uvScale: number;
221
+ /**
222
+ * 1st color of checkerboard grid in UV1 or UV2 modes.
223
+ * Defaults to (1.0, 1.0, 1.0).
224
+ */
225
+ uvPrimaryColor: Color3;
226
+ /**
227
+ * 2nd color of checkerboard grid in UV1 or UV2 modes.
228
+ * Defaults to (0.5, 0.5, 0.5).
229
+ */
230
+ uvSecondaryColor: Color3;
181
231
  /** @internal */
182
232
  protected _markAllDefinesAsDirty(): void;
183
233
  /**
@@ -237,18 +287,6 @@ export declare class MeshDebugPluginMaterial extends MaterialPluginBase {
237
287
  getCustomCode(shaderType: string): Nullable<{
238
288
  [pointName: string]: string;
239
289
  }>;
240
- /**
241
- * Serializes this plugin material
242
- * @returns serialized object
243
- */
244
- serialize(): any;
245
- /**
246
- * Parses a serialized object
247
- * @param serializationObject serialized object
248
- * @param scene scene
249
- * @param rootUrl root url for textures
250
- */
251
- parse(serializationObject: any, scene: Scene, rootUrl: string): void;
252
290
  /**
253
291
  * Resets static variables of the plugin to their original state
254
292
  */