@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
@@ -44,6 +44,37 @@ export declare function CreateBoxVertexData(options: {
44
44
  topBaseAt?: number;
45
45
  bottomBaseAt?: number;
46
46
  }): VertexData;
47
+ /**
48
+ * Creates the VertexData for a segmented box
49
+ * @param options an object used to set the following optional parameters for the box, required but can be empty
50
+ * * size sets the width, height and depth of the box to the value of size, optional default 1
51
+ * * width sets the width (x direction) of the box, overwrites the width set by size, optional, default size
52
+ * * height sets the height (y direction) of the box, overwrites the height set by size, optional, default size
53
+ * * depth sets the depth (z direction) of the box, overwrites the depth set by size, optional, default size
54
+ * * segments sets the number of segments on the all axis (1 by default)
55
+ * * widthSegments sets the number of segments on the x axis (1 by default)
56
+ * * heightSegments sets the number of segments on the y axis (1 by default)
57
+ * * depthSegments sets the number of segments on the z axis (1 by default)
58
+ * @param options.size
59
+ * @param options.width
60
+ * @param options.height
61
+ * @param options.depth
62
+ * @param options.segments
63
+ * @param options.widthSegments
64
+ * @param options.heightSegments
65
+ * @param options.depthSegments
66
+ * @returns the VertexData of the box
67
+ */
68
+ export declare function CreateSegmentedBoxVertexData(options: {
69
+ size?: number;
70
+ width?: number;
71
+ height?: number;
72
+ depth?: number;
73
+ segments?: number;
74
+ widthSegments?: number;
75
+ heightSegments?: number;
76
+ depthSegments?: number;
77
+ }): VertexData;
47
78
  /**
48
79
  * Creates a box mesh
49
80
  * * The parameter `size` sets the size (float) of each box side (default 1)
@@ -1,8 +1,9 @@
1
- import { Vector4 } from "../../Maths/math.vector.js";
1
+ import { Matrix, Vector4 } from "../../Maths/math.vector.js";
2
2
  import { Color4 } from "../../Maths/math.color.js";
3
3
  import { Mesh } from "../mesh.js";
4
4
  import { VertexData } from "../mesh.vertexData.js";
5
5
  import { CompatibilityOptions } from "../../Compat/compatibilityOptions.js";
6
+ import { CreateGroundVertexData } from "./groundBuilder.js";
6
7
  /**
7
8
  * Creates the VertexData for a box
8
9
  * @param options an object used to set the following optional parameters for the box, required but can be empty
@@ -130,6 +131,69 @@ export function CreateBoxVertexData(options) {
130
131
  }
131
132
  return vertexData;
132
133
  }
134
+ /**
135
+ * Creates the VertexData for a segmented box
136
+ * @param options an object used to set the following optional parameters for the box, required but can be empty
137
+ * * size sets the width, height and depth of the box to the value of size, optional default 1
138
+ * * width sets the width (x direction) of the box, overwrites the width set by size, optional, default size
139
+ * * height sets the height (y direction) of the box, overwrites the height set by size, optional, default size
140
+ * * depth sets the depth (z direction) of the box, overwrites the depth set by size, optional, default size
141
+ * * segments sets the number of segments on the all axis (1 by default)
142
+ * * widthSegments sets the number of segments on the x axis (1 by default)
143
+ * * heightSegments sets the number of segments on the y axis (1 by default)
144
+ * * depthSegments sets the number of segments on the z axis (1 by default)
145
+ * @param options.size
146
+ * @param options.width
147
+ * @param options.height
148
+ * @param options.depth
149
+ * @param options.segments
150
+ * @param options.widthSegments
151
+ * @param options.heightSegments
152
+ * @param options.depthSegments
153
+ * @returns the VertexData of the box
154
+ */
155
+ export function CreateSegmentedBoxVertexData(options) {
156
+ const width = options.width || options.size || 1;
157
+ const height = options.height || options.size || 1;
158
+ const depth = options.depth || options.size || 1;
159
+ const widthSegments = (options.widthSegments || options.segments || 1) | 0;
160
+ const heightSegments = (options.heightSegments || options.segments || 1) | 0;
161
+ const depthSegments = (options.depthSegments || options.segments || 1) | 0;
162
+ const rotationMatrix = new Matrix();
163
+ const translationMatrix = new Matrix();
164
+ const transformMatrix = new Matrix();
165
+ const bottomPlane = CreateGroundVertexData({ width: width, height: depth, subdivisionsX: widthSegments, subdivisionsY: depthSegments });
166
+ Matrix.TranslationToRef(0, -height / 2, 0, translationMatrix);
167
+ Matrix.RotationZToRef(Math.PI, rotationMatrix);
168
+ rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);
169
+ bottomPlane.transform(transformMatrix);
170
+ const topPlane = CreateGroundVertexData({ width: width, height: depth, subdivisionsX: widthSegments, subdivisionsY: depthSegments });
171
+ Matrix.TranslationToRef(0, height / 2, 0, transformMatrix);
172
+ topPlane.transform(transformMatrix);
173
+ const negXPlane = CreateGroundVertexData({ width: height, height: depth, subdivisionsX: heightSegments, subdivisionsY: depthSegments });
174
+ Matrix.TranslationToRef(-width / 2, 0, 0, translationMatrix);
175
+ Matrix.RotationZToRef(Math.PI / 2, rotationMatrix);
176
+ rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);
177
+ negXPlane.transform(transformMatrix);
178
+ const posXPlane = CreateGroundVertexData({ width: height, height: depth, subdivisionsX: heightSegments, subdivisionsY: depthSegments });
179
+ Matrix.TranslationToRef(width / 2, 0, 0, translationMatrix);
180
+ Matrix.RotationZToRef(-Math.PI / 2, rotationMatrix);
181
+ rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);
182
+ posXPlane.transform(transformMatrix);
183
+ const negZPlane = CreateGroundVertexData({ width: width, height: height, subdivisionsX: widthSegments, subdivisionsY: heightSegments });
184
+ Matrix.TranslationToRef(0, 0, -depth / 2, translationMatrix);
185
+ Matrix.RotationXToRef(-Math.PI / 2, rotationMatrix);
186
+ rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);
187
+ negZPlane.transform(transformMatrix);
188
+ const posZPlane = CreateGroundVertexData({ width: width, height: height, subdivisionsX: widthSegments, subdivisionsY: heightSegments });
189
+ Matrix.TranslationToRef(0, 0, depth / 2, translationMatrix);
190
+ Matrix.RotationXToRef(Math.PI / 2, rotationMatrix);
191
+ rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);
192
+ posZPlane.transform(transformMatrix);
193
+ // Result
194
+ bottomPlane.merge([topPlane, posXPlane, negXPlane, negZPlane, posZPlane], true);
195
+ return bottomPlane;
196
+ }
133
197
  /**
134
198
  * Creates a box mesh
135
199
  * * The parameter `size` sets the size (float) of each box side (default 1)
@@ -1 +1 @@
1
- {"version":3,"file":"boxBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/boxBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Vector4 } from \"../../Maths/math.vector\";\r\nimport { Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh } from \"../mesh\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\n\r\n/**\r\n * Creates the VertexData for a box\r\n * @param options an object used to set the following optional parameters for the box, required but can be empty\r\n * * size sets the width, height and depth of the box to the value of size, optional default 1\r\n * * width sets the width (x direction) of the box, overwrites the width set by size, optional, default size\r\n * * height sets the height (y direction) of the box, overwrites the height set by size, optional, default size\r\n * * depth sets the depth (z direction) of the box, overwrites the depth set by size, optional, default size\r\n * * faceUV an array of 6 Vector4 elements used to set different images to each box side\r\n * * faceColors an array of 6 Color3 elements used to set different colors to each box side\r\n * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\n * * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)\r\n * * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)\r\n * @param options.size\r\n * @param options.width\r\n * @param options.height\r\n * @param options.depth\r\n * @param options.faceUV\r\n * @param options.faceColors\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.wrap\r\n * @param options.topBaseAt\r\n * @param options.bottomBaseAt\r\n * @returns the VertexData of the box\r\n */\r\nexport function CreateBoxVertexData(options: {\r\n size?: number;\r\n width?: number;\r\n height?: number;\r\n depth?: number;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n wrap?: boolean;\r\n topBaseAt?: number;\r\n bottomBaseAt?: number;\r\n}): VertexData {\r\n const nbFaces = 6;\r\n let indices = [0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23];\r\n const normals = [\r\n 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 1, 0, 0, 1, 0, 0,\r\n 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0,\r\n ];\r\n const uvs = [];\r\n let positions = [];\r\n const width = options.width || options.size || 1;\r\n const height = options.height || options.size || 1;\r\n const depth = options.depth || options.size || 1;\r\n const wrap = options.wrap || false;\r\n let topBaseAt = options.topBaseAt === void 0 ? 1 : options.topBaseAt;\r\n let bottomBaseAt = options.bottomBaseAt === void 0 ? 0 : options.bottomBaseAt;\r\n topBaseAt = (topBaseAt + 4) % 4; // places values as 0 to 3\r\n bottomBaseAt = (bottomBaseAt + 4) % 4; // places values as 0 to 3\r\n const topOrder = [2, 0, 3, 1];\r\n const bottomOrder = [2, 0, 1, 3];\r\n let topIndex = topOrder[topBaseAt];\r\n let bottomIndex = bottomOrder[bottomBaseAt];\r\n let basePositions = [\r\n 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1,\r\n 1, 1, -1, 1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, 1,\r\n ];\r\n if (wrap) {\r\n indices = [2, 3, 0, 2, 0, 1, 4, 5, 6, 4, 6, 7, 9, 10, 11, 9, 11, 8, 12, 14, 15, 12, 13, 14];\r\n basePositions = [\r\n -1, 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1, 1, 1, -1, -1, 1, -1, -1, -1,\r\n ];\r\n let topFaceBase: any = [\r\n [1, 1, 1],\r\n [-1, 1, 1],\r\n [-1, 1, -1],\r\n [1, 1, -1],\r\n ];\r\n let bottomFaceBase: any = [\r\n [-1, -1, 1],\r\n [1, -1, 1],\r\n [1, -1, -1],\r\n [-1, -1, -1],\r\n ];\r\n const topFaceOrder: any = [17, 18, 19, 16];\r\n const bottomFaceOrder: any = [22, 23, 20, 21];\r\n while (topIndex > 0) {\r\n topFaceBase.unshift(topFaceBase.pop());\r\n topFaceOrder.unshift(topFaceOrder.pop());\r\n topIndex--;\r\n }\r\n while (bottomIndex > 0) {\r\n bottomFaceBase.unshift(bottomFaceBase.pop());\r\n bottomFaceOrder.unshift(bottomFaceOrder.pop());\r\n bottomIndex--;\r\n }\r\n topFaceBase = topFaceBase.flat();\r\n bottomFaceBase = bottomFaceBase.flat();\r\n basePositions = basePositions.concat(topFaceBase).concat(bottomFaceBase);\r\n indices.push(topFaceOrder[0], topFaceOrder[2], topFaceOrder[3], topFaceOrder[0], topFaceOrder[1], topFaceOrder[2]);\r\n indices.push(bottomFaceOrder[0], bottomFaceOrder[2], bottomFaceOrder[3], bottomFaceOrder[0], bottomFaceOrder[1], bottomFaceOrder[2]);\r\n }\r\n const scaleArray = [width / 2, height / 2, depth / 2];\r\n positions = basePositions.reduce((accumulator: Array<number>, currentValue, currentIndex) => accumulator.concat(currentValue * scaleArray[currentIndex % 3]), []);\r\n\r\n const sideOrientation = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\r\n\r\n const faceUV: Vector4[] = options.faceUV || new Array<Vector4>(6);\r\n const faceColors = options.faceColors;\r\n const colors = [];\r\n\r\n // default face colors and UV if undefined\r\n for (let f = 0; f < 6; f++) {\r\n if (faceUV[f] === undefined) {\r\n faceUV[f] = new Vector4(0, 0, 1, 1);\r\n }\r\n if (faceColors && faceColors[f] === undefined) {\r\n faceColors[f] = new Color4(1, 1, 1, 1);\r\n }\r\n }\r\n\r\n // Create each face in turn.\r\n for (let index = 0; index < nbFaces; index++) {\r\n uvs.push(faceUV[index].z, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].w : faceUV[index].w);\r\n uvs.push(faceUV[index].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].w : faceUV[index].w);\r\n uvs.push(faceUV[index].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].y : faceUV[index].y);\r\n uvs.push(faceUV[index].z, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].y : faceUV[index].y);\r\n if (faceColors) {\r\n for (let c = 0; c < 4; c++) {\r\n colors.push(faceColors[index].r, faceColors[index].g, faceColors[index].b, faceColors[index].a);\r\n }\r\n }\r\n }\r\n\r\n // sides\r\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);\r\n\r\n // Result\r\n const vertexData = new VertexData();\r\n\r\n vertexData.indices = indices;\r\n vertexData.positions = positions;\r\n vertexData.normals = normals;\r\n vertexData.uvs = uvs;\r\n\r\n if (faceColors) {\r\n const totalColors = sideOrientation === VertexData.DOUBLESIDE ? colors.concat(colors) : colors;\r\n vertexData.colors = totalColors;\r\n }\r\n\r\n return vertexData;\r\n}\r\n\r\n/**\r\n * Creates a box mesh\r\n * * The parameter `size` sets the size (float) of each box side (default 1)\r\n * * You can set some different box dimensions by using the parameters `width`, `height` and `depth` (all by default have the same value of `size`)\r\n * * You can set different colors and different images to each box side by using the parameters `faceColors` (an array of 6 Color3 elements) and `faceUV` (an array of 6 Vector4 elements)\r\n * * Please read this tutorial : https://doc.babylonjs.com/features/featuresDeepDive/materials/using/texturePerBoxFace\r\n * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE\r\n * * If you create a double-sided mesh, you can choose what parts of the texture image to crop and stick respectively on the front and the back sides with the parameters `frontUVs` and `backUVs` (Vector4). Detail here : https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#side-orientation\r\n * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#box\r\n * @param name defines the name of the mesh\r\n * @param options defines the options used to create the mesh\r\n * @param options.size\r\n * @param options.width\r\n * @param options.height\r\n * @param options.depth\r\n * @param options.faceUV\r\n * @param options.faceColors\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.wrap\r\n * @param options.topBaseAt\r\n * @param options.bottomBaseAt\r\n * @param options.updatable\r\n * @param scene defines the hosting scene\r\n * @returns the box mesh\r\n */\r\nexport function CreateBox(\r\n name: string,\r\n options: {\r\n size?: number;\r\n width?: number;\r\n height?: number;\r\n depth?: number;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n wrap?: boolean;\r\n topBaseAt?: number;\r\n bottomBaseAt?: number;\r\n updatable?: boolean;\r\n } = {},\r\n scene: Nullable<Scene> = null\r\n): Mesh {\r\n const box = new Mesh(name, scene);\r\n\r\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\r\n box._originalBuilderSideOrientation = options.sideOrientation;\r\n\r\n const vertexData = CreateBoxVertexData(options);\r\n\r\n vertexData.applyToMesh(box, options.updatable);\r\n\r\n return box;\r\n}\r\n\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated please use CreateBox directly\r\n */\r\nexport const BoxBuilder = {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n CreateBox,\r\n};\r\n\r\n// Side effects\r\nVertexData.CreateBox = CreateBoxVertexData;\r\n\r\nMesh.CreateBox = (name: string, size: number, scene: Nullable<Scene> = null, updatable?: boolean, sideOrientation?: number): Mesh => {\r\n const options = {\r\n size,\r\n sideOrientation,\r\n updatable,\r\n };\r\n\r\n return CreateBox(name, options, scene);\r\n};\r\n"]}
1
+ {"version":3,"file":"boxBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/boxBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Matrix, Vector4 } from \"../../Maths/math.vector\";\r\nimport { Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh } from \"../mesh\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\nimport { CreateGroundVertexData } from \"./groundBuilder\";\r\n\r\n/**\r\n * Creates the VertexData for a box\r\n * @param options an object used to set the following optional parameters for the box, required but can be empty\r\n * * size sets the width, height and depth of the box to the value of size, optional default 1\r\n * * width sets the width (x direction) of the box, overwrites the width set by size, optional, default size\r\n * * height sets the height (y direction) of the box, overwrites the height set by size, optional, default size\r\n * * depth sets the depth (z direction) of the box, overwrites the depth set by size, optional, default size\r\n * * faceUV an array of 6 Vector4 elements used to set different images to each box side\r\n * * faceColors an array of 6 Color3 elements used to set different colors to each box side\r\n * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\n * * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)\r\n * * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)\r\n * @param options.size\r\n * @param options.width\r\n * @param options.height\r\n * @param options.depth\r\n * @param options.faceUV\r\n * @param options.faceColors\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.wrap\r\n * @param options.topBaseAt\r\n * @param options.bottomBaseAt\r\n * @returns the VertexData of the box\r\n */\r\nexport function CreateBoxVertexData(options: {\r\n size?: number;\r\n width?: number;\r\n height?: number;\r\n depth?: number;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n wrap?: boolean;\r\n topBaseAt?: number;\r\n bottomBaseAt?: number;\r\n}): VertexData {\r\n const nbFaces = 6;\r\n let indices = [0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23];\r\n const normals = [\r\n 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 1, 0, 0, 1, 0, 0,\r\n 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0,\r\n ];\r\n const uvs = [];\r\n let positions = [];\r\n const width = options.width || options.size || 1;\r\n const height = options.height || options.size || 1;\r\n const depth = options.depth || options.size || 1;\r\n const wrap = options.wrap || false;\r\n let topBaseAt = options.topBaseAt === void 0 ? 1 : options.topBaseAt;\r\n let bottomBaseAt = options.bottomBaseAt === void 0 ? 0 : options.bottomBaseAt;\r\n topBaseAt = (topBaseAt + 4) % 4; // places values as 0 to 3\r\n bottomBaseAt = (bottomBaseAt + 4) % 4; // places values as 0 to 3\r\n const topOrder = [2, 0, 3, 1];\r\n const bottomOrder = [2, 0, 1, 3];\r\n let topIndex = topOrder[topBaseAt];\r\n let bottomIndex = bottomOrder[bottomBaseAt];\r\n let basePositions = [\r\n 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1,\r\n 1, 1, -1, 1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, 1,\r\n ];\r\n if (wrap) {\r\n indices = [2, 3, 0, 2, 0, 1, 4, 5, 6, 4, 6, 7, 9, 10, 11, 9, 11, 8, 12, 14, 15, 12, 13, 14];\r\n basePositions = [\r\n -1, 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1, 1, 1, -1, -1, 1, -1, -1, -1,\r\n ];\r\n let topFaceBase: any = [\r\n [1, 1, 1],\r\n [-1, 1, 1],\r\n [-1, 1, -1],\r\n [1, 1, -1],\r\n ];\r\n let bottomFaceBase: any = [\r\n [-1, -1, 1],\r\n [1, -1, 1],\r\n [1, -1, -1],\r\n [-1, -1, -1],\r\n ];\r\n const topFaceOrder: any = [17, 18, 19, 16];\r\n const bottomFaceOrder: any = [22, 23, 20, 21];\r\n while (topIndex > 0) {\r\n topFaceBase.unshift(topFaceBase.pop());\r\n topFaceOrder.unshift(topFaceOrder.pop());\r\n topIndex--;\r\n }\r\n while (bottomIndex > 0) {\r\n bottomFaceBase.unshift(bottomFaceBase.pop());\r\n bottomFaceOrder.unshift(bottomFaceOrder.pop());\r\n bottomIndex--;\r\n }\r\n topFaceBase = topFaceBase.flat();\r\n bottomFaceBase = bottomFaceBase.flat();\r\n basePositions = basePositions.concat(topFaceBase).concat(bottomFaceBase);\r\n indices.push(topFaceOrder[0], topFaceOrder[2], topFaceOrder[3], topFaceOrder[0], topFaceOrder[1], topFaceOrder[2]);\r\n indices.push(bottomFaceOrder[0], bottomFaceOrder[2], bottomFaceOrder[3], bottomFaceOrder[0], bottomFaceOrder[1], bottomFaceOrder[2]);\r\n }\r\n const scaleArray = [width / 2, height / 2, depth / 2];\r\n positions = basePositions.reduce((accumulator: Array<number>, currentValue, currentIndex) => accumulator.concat(currentValue * scaleArray[currentIndex % 3]), []);\r\n\r\n const sideOrientation = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\r\n\r\n const faceUV: Vector4[] = options.faceUV || new Array<Vector4>(6);\r\n const faceColors = options.faceColors;\r\n const colors = [];\r\n\r\n // default face colors and UV if undefined\r\n for (let f = 0; f < 6; f++) {\r\n if (faceUV[f] === undefined) {\r\n faceUV[f] = new Vector4(0, 0, 1, 1);\r\n }\r\n if (faceColors && faceColors[f] === undefined) {\r\n faceColors[f] = new Color4(1, 1, 1, 1);\r\n }\r\n }\r\n\r\n // Create each face in turn.\r\n for (let index = 0; index < nbFaces; index++) {\r\n uvs.push(faceUV[index].z, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].w : faceUV[index].w);\r\n uvs.push(faceUV[index].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].w : faceUV[index].w);\r\n uvs.push(faceUV[index].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].y : faceUV[index].y);\r\n uvs.push(faceUV[index].z, CompatibilityOptions.UseOpenGLOrientationForUV ? 1.0 - faceUV[index].y : faceUV[index].y);\r\n if (faceColors) {\r\n for (let c = 0; c < 4; c++) {\r\n colors.push(faceColors[index].r, faceColors[index].g, faceColors[index].b, faceColors[index].a);\r\n }\r\n }\r\n }\r\n\r\n // sides\r\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);\r\n\r\n // Result\r\n const vertexData = new VertexData();\r\n\r\n vertexData.indices = indices;\r\n vertexData.positions = positions;\r\n vertexData.normals = normals;\r\n vertexData.uvs = uvs;\r\n\r\n if (faceColors) {\r\n const totalColors = sideOrientation === VertexData.DOUBLESIDE ? colors.concat(colors) : colors;\r\n vertexData.colors = totalColors;\r\n }\r\n\r\n return vertexData;\r\n}\r\n\r\n/**\r\n * Creates the VertexData for a segmented box\r\n * @param options an object used to set the following optional parameters for the box, required but can be empty\r\n * * size sets the width, height and depth of the box to the value of size, optional default 1\r\n * * width sets the width (x direction) of the box, overwrites the width set by size, optional, default size\r\n * * height sets the height (y direction) of the box, overwrites the height set by size, optional, default size\r\n * * depth sets the depth (z direction) of the box, overwrites the depth set by size, optional, default size\r\n * * segments sets the number of segments on the all axis (1 by default)\r\n * * widthSegments sets the number of segments on the x axis (1 by default)\r\n * * heightSegments sets the number of segments on the y axis (1 by default)\r\n * * depthSegments sets the number of segments on the z axis (1 by default)\r\n * @param options.size\r\n * @param options.width\r\n * @param options.height\r\n * @param options.depth\r\n * @param options.segments\r\n * @param options.widthSegments\r\n * @param options.heightSegments\r\n * @param options.depthSegments\r\n * @returns the VertexData of the box\r\n */\r\nexport function CreateSegmentedBoxVertexData(options: {\r\n size?: number;\r\n width?: number;\r\n height?: number;\r\n depth?: number;\r\n segments?: number;\r\n widthSegments?: number;\r\n heightSegments?: number;\r\n depthSegments?: number;\r\n}): VertexData {\r\n const width = options.width || options.size || 1;\r\n const height = options.height || options.size || 1;\r\n const depth = options.depth || options.size || 1;\r\n const widthSegments = (options.widthSegments || options.segments || 1) | 0;\r\n const heightSegments = (options.heightSegments || options.segments || 1) | 0;\r\n const depthSegments = (options.depthSegments || options.segments || 1) | 0;\r\n const rotationMatrix = new Matrix();\r\n const translationMatrix = new Matrix();\r\n const transformMatrix = new Matrix();\r\n\r\n const bottomPlane = CreateGroundVertexData({ width: width, height: depth, subdivisionsX: widthSegments, subdivisionsY: depthSegments });\r\n Matrix.TranslationToRef(0, -height / 2, 0, translationMatrix);\r\n Matrix.RotationZToRef(Math.PI, rotationMatrix);\r\n rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);\r\n bottomPlane.transform(transformMatrix);\r\n\r\n const topPlane = CreateGroundVertexData({ width: width, height: depth, subdivisionsX: widthSegments, subdivisionsY: depthSegments });\r\n Matrix.TranslationToRef(0, height / 2, 0, transformMatrix);\r\n topPlane.transform(transformMatrix);\r\n\r\n const negXPlane = CreateGroundVertexData({ width: height, height: depth, subdivisionsX: heightSegments, subdivisionsY: depthSegments });\r\n Matrix.TranslationToRef(-width / 2, 0, 0, translationMatrix);\r\n Matrix.RotationZToRef(Math.PI / 2, rotationMatrix);\r\n rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);\r\n negXPlane.transform(transformMatrix);\r\n\r\n const posXPlane = CreateGroundVertexData({ width: height, height: depth, subdivisionsX: heightSegments, subdivisionsY: depthSegments });\r\n Matrix.TranslationToRef(width / 2, 0, 0, translationMatrix);\r\n Matrix.RotationZToRef(-Math.PI / 2, rotationMatrix);\r\n rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);\r\n posXPlane.transform(transformMatrix);\r\n\r\n const negZPlane = CreateGroundVertexData({ width: width, height: height, subdivisionsX: widthSegments, subdivisionsY: heightSegments });\r\n Matrix.TranslationToRef(0, 0, -depth / 2, translationMatrix);\r\n Matrix.RotationXToRef(-Math.PI / 2, rotationMatrix);\r\n rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);\r\n negZPlane.transform(transformMatrix);\r\n\r\n const posZPlane = CreateGroundVertexData({ width: width, height: height, subdivisionsX: widthSegments, subdivisionsY: heightSegments });\r\n Matrix.TranslationToRef(0, 0, depth / 2, translationMatrix);\r\n Matrix.RotationXToRef(Math.PI / 2, rotationMatrix);\r\n rotationMatrix.multiplyToRef(translationMatrix, transformMatrix);\r\n posZPlane.transform(transformMatrix);\r\n\r\n // Result\r\n bottomPlane.merge([topPlane, posXPlane, negXPlane, negZPlane, posZPlane], true);\r\n\r\n return bottomPlane;\r\n}\r\n\r\n/**\r\n * Creates a box mesh\r\n * * The parameter `size` sets the size (float) of each box side (default 1)\r\n * * You can set some different box dimensions by using the parameters `width`, `height` and `depth` (all by default have the same value of `size`)\r\n * * You can set different colors and different images to each box side by using the parameters `faceColors` (an array of 6 Color3 elements) and `faceUV` (an array of 6 Vector4 elements)\r\n * * Please read this tutorial : https://doc.babylonjs.com/features/featuresDeepDive/materials/using/texturePerBoxFace\r\n * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE\r\n * * If you create a double-sided mesh, you can choose what parts of the texture image to crop and stick respectively on the front and the back sides with the parameters `frontUVs` and `backUVs` (Vector4). Detail here : https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#side-orientation\r\n * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#box\r\n * @param name defines the name of the mesh\r\n * @param options defines the options used to create the mesh\r\n * @param options.size\r\n * @param options.width\r\n * @param options.height\r\n * @param options.depth\r\n * @param options.faceUV\r\n * @param options.faceColors\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param options.wrap\r\n * @param options.topBaseAt\r\n * @param options.bottomBaseAt\r\n * @param options.updatable\r\n * @param scene defines the hosting scene\r\n * @returns the box mesh\r\n */\r\nexport function CreateBox(\r\n name: string,\r\n options: {\r\n size?: number;\r\n width?: number;\r\n height?: number;\r\n depth?: number;\r\n faceUV?: Vector4[];\r\n faceColors?: Color4[];\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n wrap?: boolean;\r\n topBaseAt?: number;\r\n bottomBaseAt?: number;\r\n updatable?: boolean;\r\n } = {},\r\n scene: Nullable<Scene> = null\r\n): Mesh {\r\n const box = new Mesh(name, scene);\r\n\r\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\r\n box._originalBuilderSideOrientation = options.sideOrientation;\r\n\r\n const vertexData = CreateBoxVertexData(options);\r\n\r\n vertexData.applyToMesh(box, options.updatable);\r\n\r\n return box;\r\n}\r\n\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated please use CreateBox directly\r\n */\r\nexport const BoxBuilder = {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n CreateBox,\r\n};\r\n\r\n// Side effects\r\nVertexData.CreateBox = CreateBoxVertexData;\r\n\r\nMesh.CreateBox = (name: string, size: number, scene: Nullable<Scene> = null, updatable?: boolean, sideOrientation?: number): Mesh => {\r\n const options = {\r\n size,\r\n sideOrientation,\r\n updatable,\r\n };\r\n\r\n return CreateBox(name, options, scene);\r\n};\r\n"]}
@@ -16,11 +16,11 @@ export function CreateCapsuleVertexData(options = {
16
16
  radius: 0.25,
17
17
  capSubdivisions: 6,
18
18
  }) {
19
- const subdivisions = Math.max(options.subdivisions ? options.subdivisions : 2, 1);
20
- const tessellation = Math.max(options.tessellation ? options.tessellation : 16, 3);
19
+ const subdivisions = Math.max(options.subdivisions ? options.subdivisions : 2, 1) | 0;
20
+ const tessellation = Math.max(options.tessellation ? options.tessellation : 16, 3) | 0;
21
21
  const height = Math.max(options.height ? options.height : 1, 0);
22
22
  const radius = Math.max(options.radius ? options.radius : 0.25, 0);
23
- const capDetail = Math.max(options.capSubdivisions ? options.capSubdivisions : 6, 1);
23
+ const capDetail = Math.max(options.capSubdivisions ? options.capSubdivisions : 6, 1) | 0;
24
24
  const radialSegments = tessellation;
25
25
  const heightSegments = subdivisions;
26
26
  const radiusTop = Math.max(options.radiusTop ? options.radiusTop : radius, 0);
@@ -1 +1 @@
1
- {"version":3,"file":"capsuleBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/capsuleBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { VertexData } from \"../mesh.vertexData\";\r\nimport { Vector2, Vector3, Matrix } from \"../../Maths/math.vector\";\r\nimport { Mesh } from \"../mesh\";\r\nimport type { Nullable } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\n/**\r\n * Scripts based off of https://github.com/maximeq/three-js-capsule-geometry/blob/master/src/CapsuleBufferGeometry.js\r\n * @param options the constructors options used to shape the mesh.\r\n * @returns the capsule VertexData\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set/capsule\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function CreateCapsuleVertexData(\r\n options: ICreateCapsuleOptions = {\r\n subdivisions: 2,\r\n tessellation: 16,\r\n height: 1,\r\n radius: 0.25,\r\n capSubdivisions: 6,\r\n }\r\n): VertexData {\r\n const subdivisions = Math.max(options.subdivisions ? options.subdivisions : 2, 1);\r\n const tessellation = Math.max(options.tessellation ? options.tessellation : 16, 3);\r\n const height = Math.max(options.height ? options.height : 1, 0);\r\n const radius = Math.max(options.radius ? options.radius : 0.25, 0);\r\n const capDetail = Math.max(options.capSubdivisions ? options.capSubdivisions : 6, 1);\r\n\r\n const radialSegments = tessellation;\r\n const heightSegments = subdivisions;\r\n\r\n const radiusTop = Math.max(options.radiusTop ? options.radiusTop : radius, 0);\r\n const radiusBottom = Math.max(options.radiusBottom ? options.radiusBottom : radius, 0);\r\n\r\n const heightMinusCaps = height - (radiusTop + radiusBottom);\r\n\r\n const thetaStart = 0.0;\r\n const thetaLength = 2.0 * Math.PI;\r\n\r\n const capsTopSegments = Math.max(options.topCapSubdivisions ? options.topCapSubdivisions : capDetail, 1);\r\n const capsBottomSegments = Math.max(options.bottomCapSubdivisions ? options.bottomCapSubdivisions : capDetail, 1);\r\n\r\n const alpha = Math.acos((radiusBottom - radiusTop) / height);\r\n\r\n let indices = [];\r\n const vertices = [];\r\n const normals = [];\r\n const uvs = [];\r\n\r\n let index = 0;\r\n const indexArray = [],\r\n halfHeight = heightMinusCaps * 0.5;\r\n const pi2 = Math.PI * 0.5;\r\n\r\n let x, y;\r\n const normal = Vector3.Zero();\r\n const vertex = Vector3.Zero();\r\n\r\n const cosAlpha = Math.cos(alpha);\r\n const sinAlpha = Math.sin(alpha);\r\n\r\n const coneLength = new Vector2(radiusTop * sinAlpha, halfHeight + radiusTop * cosAlpha)\r\n .subtract(new Vector2(radiusBottom * sinAlpha, -halfHeight + radiusBottom * cosAlpha))\r\n .length();\r\n\r\n // Total length for v texture coord\r\n const vl = radiusTop * alpha + coneLength + radiusBottom * (pi2 - alpha);\r\n\r\n let v = 0;\r\n for (y = 0; y <= capsTopSegments; y++) {\r\n const indexRow = [];\r\n\r\n const a = pi2 - alpha * (y / capsTopSegments);\r\n\r\n v += (radiusTop * alpha) / capsTopSegments;\r\n\r\n const cosA = Math.cos(a);\r\n const sinA = Math.sin(a);\r\n\r\n // calculate the radius of the current row\r\n const _radius = cosA * radiusTop;\r\n\r\n for (x = 0; x <= radialSegments; x++) {\r\n const u = x / radialSegments;\r\n const theta = u * thetaLength + thetaStart;\r\n const sinTheta = Math.sin(theta);\r\n const cosTheta = Math.cos(theta);\r\n // vertex\r\n vertex.x = _radius * sinTheta;\r\n vertex.y = halfHeight + sinA * radiusTop;\r\n vertex.z = _radius * cosTheta;\r\n vertices.push(vertex.x, vertex.y, vertex.z);\r\n // normal\r\n normal.set(cosA * sinTheta, sinA, cosA * cosTheta);\r\n normals.push(normal.x, normal.y, normal.z);\r\n // uv\r\n uvs.push(u, CompatibilityOptions.UseOpenGLOrientationForUV ? v / vl : 1 - v / vl);\r\n // save index of vertex in respective row\r\n indexRow.push(index);\r\n // increase index\r\n index++;\r\n }\r\n // now save vertices of the row in our index array\r\n indexArray.push(indexRow);\r\n }\r\n\r\n const coneHeight = height - radiusTop - radiusBottom + cosAlpha * radiusTop - cosAlpha * radiusBottom;\r\n const slope = (sinAlpha * (radiusBottom - radiusTop)) / coneHeight;\r\n\r\n for (y = 1; y <= heightSegments; y++) {\r\n const indexRow = [];\r\n v += coneLength / heightSegments;\r\n // calculate the radius of the current row\r\n const _radius = sinAlpha * ((y * (radiusBottom - radiusTop)) / heightSegments + radiusTop);\r\n for (x = 0; x <= radialSegments; x++) {\r\n const u = x / radialSegments;\r\n const theta = u * thetaLength + thetaStart;\r\n const sinTheta = Math.sin(theta);\r\n const cosTheta = Math.cos(theta);\r\n // vertex\r\n vertex.x = _radius * sinTheta;\r\n vertex.y = halfHeight + cosAlpha * radiusTop - (y * coneHeight) / heightSegments;\r\n vertex.z = _radius * cosTheta;\r\n vertices.push(vertex.x, vertex.y, vertex.z);\r\n // normal\r\n normal.set(sinTheta, slope, cosTheta).normalize();\r\n normals.push(normal.x, normal.y, normal.z);\r\n // uv\r\n uvs.push(u, CompatibilityOptions.UseOpenGLOrientationForUV ? v / vl : 1 - v / vl);\r\n // save index of vertex in respective row\r\n indexRow.push(index);\r\n // increase index\r\n index++;\r\n }\r\n // now save vertices of the row in our index array\r\n indexArray.push(indexRow);\r\n }\r\n\r\n for (y = 1; y <= capsBottomSegments; y++) {\r\n const indexRow = [];\r\n const a = pi2 - alpha - (Math.PI - alpha) * (y / capsBottomSegments);\r\n v += (radiusBottom * alpha) / capsBottomSegments;\r\n const cosA = Math.cos(a);\r\n const sinA = Math.sin(a);\r\n // calculate the radius of the current row\r\n const _radius = cosA * radiusBottom;\r\n for (x = 0; x <= radialSegments; x++) {\r\n const u = x / radialSegments;\r\n const theta = u * thetaLength + thetaStart;\r\n const sinTheta = Math.sin(theta);\r\n const cosTheta = Math.cos(theta);\r\n // vertex\r\n vertex.x = _radius * sinTheta;\r\n vertex.y = -halfHeight + sinA * radiusBottom;\r\n vertex.z = _radius * cosTheta;\r\n vertices.push(vertex.x, vertex.y, vertex.z);\r\n // normal\r\n normal.set(cosA * sinTheta, sinA, cosA * cosTheta);\r\n normals.push(normal.x, normal.y, normal.z);\r\n // uv\r\n uvs.push(u, CompatibilityOptions.UseOpenGLOrientationForUV ? v / vl : 1 - v / vl);\r\n // save index of vertex in respective row\r\n indexRow.push(index);\r\n // increase index\r\n index++;\r\n }\r\n // now save vertices of the row in our index array\r\n indexArray.push(indexRow);\r\n }\r\n // generate indices\r\n for (x = 0; x < radialSegments; x++) {\r\n for (y = 0; y < capsTopSegments + heightSegments + capsBottomSegments; y++) {\r\n // we use the index array to access the correct indices\r\n const i1 = indexArray[y][x];\r\n const i2 = indexArray[y + 1][x];\r\n const i3 = indexArray[y + 1][x + 1];\r\n const i4 = indexArray[y][x + 1];\r\n // face one\r\n indices.push(i1);\r\n indices.push(i2);\r\n indices.push(i4);\r\n // face two\r\n indices.push(i2);\r\n indices.push(i3);\r\n indices.push(i4);\r\n }\r\n }\r\n\r\n indices = indices.reverse();\r\n\r\n if (options.orientation && !options.orientation.equals(Vector3.Up())) {\r\n const m = new Matrix();\r\n options.orientation\r\n .clone()\r\n .scale(Math.PI * 0.5)\r\n .cross(Vector3.Up())\r\n .toQuaternion()\r\n .toRotationMatrix(m);\r\n const v = Vector3.Zero();\r\n for (let i = 0; i < vertices.length; i += 3) {\r\n v.set(vertices[i], vertices[i + 1], vertices[i + 2]);\r\n Vector3.TransformCoordinatesToRef(v.clone(), m, v);\r\n vertices[i] = v.x;\r\n vertices[i + 1] = v.y;\r\n vertices[i + 2] = v.z;\r\n }\r\n }\r\n\r\n const vDat = new VertexData();\r\n vDat.positions = vertices;\r\n vDat.normals = normals;\r\n vDat.uvs = uvs;\r\n vDat.indices = indices;\r\n\r\n return vDat;\r\n}\r\n\r\n/**\r\n * The options Interface for creating a Capsule Mesh\r\n */\r\nexport interface ICreateCapsuleOptions {\r\n /** The Orientation of the capsule. Default : Vector3.Up() */\r\n orientation?: Vector3;\r\n\r\n /** Number of sub segments on the tube section of the capsule running parallel to orientation. */\r\n subdivisions?: number;\r\n\r\n /** Number of cylindrical segments on the capsule. */\r\n tessellation?: number;\r\n\r\n /** Height or Length of the capsule. */\r\n height?: number;\r\n\r\n /** Radius of the capsule. */\r\n radius?: number;\r\n\r\n /** Number of sub segments on the cap sections of the capsule running parallel to orientation. */\r\n capSubdivisions?: number;\r\n\r\n /** Overwrite for the top radius. */\r\n radiusTop?: number;\r\n\r\n /** Overwrite for the bottom radius. */\r\n radiusBottom?: number;\r\n\r\n /** Overwrite for the top capSubdivisions. */\r\n topCapSubdivisions?: number;\r\n\r\n /** Overwrite for the bottom capSubdivisions. */\r\n bottomCapSubdivisions?: number;\r\n\r\n /** Internal geometry is supposed to change once created. */\r\n updatable?: boolean;\r\n}\r\n\r\n/**\r\n * Creates a capsule or a pill mesh\r\n * @param name defines the name of the mesh\r\n * @param options The constructors options.\r\n * @param scene The scene the mesh is scoped to.\r\n * @returns Capsule Mesh\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function CreateCapsule(\r\n name: string,\r\n options: ICreateCapsuleOptions = {\r\n orientation: Vector3.Up(),\r\n subdivisions: 2,\r\n tessellation: 16,\r\n height: 1,\r\n radius: 0.25,\r\n capSubdivisions: 6,\r\n updatable: false,\r\n },\r\n scene: Nullable<Scene> = null\r\n): Mesh {\r\n const capsule = new Mesh(name, scene);\r\n const vertexData = CreateCapsuleVertexData(options);\r\n vertexData.applyToMesh(capsule, options.updatable);\r\n return capsule;\r\n}\r\n\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated please use CreateCapsule directly\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport const CapsuleBuilder = {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n CreateCapsule,\r\n};\r\n\r\n/**\r\n * Creates a capsule or a pill mesh\r\n * @param name defines the name of the mesh.\r\n * @param options the constructors options used to shape the mesh.\r\n * @param scene defines the scene the mesh is scoped to.\r\n * @returns the capsule mesh\r\n * @see https://doc.babylonjs.com/how_to/capsule_shape\r\n */\r\nMesh.CreateCapsule = (name: string, options: ICreateCapsuleOptions, scene?: Nullable<Scene>): Mesh => {\r\n return CreateCapsule(name, options, scene);\r\n};\r\n\r\nVertexData.CreateCapsule = CreateCapsuleVertexData;\r\n"]}
1
+ {"version":3,"file":"capsuleBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/capsuleBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE;;;;;GAKG;AACH,gEAAgE;AAChE,MAAM,UAAU,uBAAuB,CACnC,UAAiC;IAC7B,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,EAAE;IAChB,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,IAAI;IACZ,eAAe,EAAE,CAAC;CACrB;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAEzF,MAAM,cAAc,GAAG,YAAY,CAAC;IACpC,MAAM,cAAc,GAAG,YAAY,CAAC;IAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAEvF,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC;IAE5D,MAAM,UAAU,GAAG,GAAG,CAAC;IACvB,MAAM,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;IAElC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACzG,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAElH,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC;IAE7D,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,EAAE,CAAC;IAEf,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,UAAU,GAAG,EAAE,EACjB,UAAU,GAAG,eAAe,GAAG,GAAG,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;IAE1B,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEjC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,SAAS,GAAG,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;SAClF,QAAQ,CAAC,IAAI,OAAO,CAAC,YAAY,GAAG,QAAQ,EAAE,CAAC,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC,CAAC;SACrF,MAAM,EAAE,CAAC;IAEd,mCAAmC;IACnC,MAAM,EAAE,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,YAAY,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;IAEzE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,QAAQ,GAAG,EAAE,CAAC;QAEpB,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;QAE9C,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,eAAe,CAAC;QAE3C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEzB,0CAA0C;QAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;QAEjC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;YAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,SAAS;YACT,MAAM,CAAC,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC;YAC9B,MAAM,CAAC,CAAC,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;YACzC,MAAM,CAAC,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5C,SAAS;YACT,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3C,KAAK;YACL,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,oBAAoB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAClF,yCAAyC;YACzC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,iBAAiB;YACjB,KAAK,EAAE,CAAC;SACX;QACD,kDAAkD;QAClD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC7B;IAED,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC;IACtG,MAAM,KAAK,GAAG,CAAC,QAAQ,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC;IAEnE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,CAAC,IAAI,UAAU,GAAG,cAAc,CAAC;QACjC,0CAA0C;QAC1C,MAAM,OAAO,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,GAAG,cAAc,GAAG,SAAS,CAAC,CAAC;QAC3F,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;YAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,SAAS;YACT,MAAM,CAAC,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC;YAC9B,MAAM,CAAC,CAAC,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,cAAc,CAAC;YACjF,MAAM,CAAC,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5C,SAAS;YACT,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3C,KAAK;YACL,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,oBAAoB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAClF,yCAAyC;YACzC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,iBAAiB;YACjB,KAAK,EAAE,CAAC;SACX;QACD,kDAAkD;QAClD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC7B;IAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,kBAAkB,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC;QACrE,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,kBAAkB,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzB,0CAA0C;QAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,YAAY,CAAC;QACpC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;YAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,SAAS;YACT,MAAM,CAAC,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC;YAC9B,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,GAAG,YAAY,CAAC;YAC7C,MAAM,CAAC,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5C,SAAS;YACT,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3C,KAAK;YACL,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,oBAAoB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAClF,yCAAyC;YACzC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,iBAAiB;YACjB,KAAK,EAAE,CAAC;SACX;QACD,kDAAkD;QAClD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC7B;IACD,mBAAmB;IACnB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;QACjC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,GAAG,cAAc,GAAG,kBAAkB,EAAE,CAAC,EAAE,EAAE;YACxE,uDAAuD;YACvD,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,WAAW;YACX,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,WAAW;YACX,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACpB;KACJ;IAED,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAE5B,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE;QAClE,MAAM,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,WAAW;aACd,KAAK,EAAE;aACP,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;aACpB,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;aACnB,YAAY,EAAE;aACd,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACzC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACnD,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtB,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;KACJ;IAED,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;IAC9B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAEvB,OAAO,IAAI,CAAC;AAChB,CAAC;AAwCD;;;;;;GAMG;AACH,gEAAgE;AAChE,MAAM,UAAU,aAAa,CACzB,IAAY,EACZ,UAAiC;IAC7B,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE;IACzB,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,EAAE;IAChB,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,IAAI;IACZ,eAAe,EAAE,CAAC;IAClB,SAAS,EAAE,KAAK;CACnB,EACD,QAAyB,IAAI;IAE7B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACpD,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,gEAAgE;AAChE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,gEAAgE;IAChE,aAAa;CAChB,CAAC;AAEF;;;;;;;GAOG;AACH,IAAI,CAAC,aAAa,GAAG,CAAC,IAAY,EAAE,OAA8B,EAAE,KAAuB,EAAQ,EAAE;IACjG,OAAO,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,UAAU,CAAC,aAAa,GAAG,uBAAuB,CAAC","sourcesContent":["import { VertexData } from \"../mesh.vertexData\";\r\nimport { Vector2, Vector3, Matrix } from \"../../Maths/math.vector\";\r\nimport { Mesh } from \"../mesh\";\r\nimport type { Nullable } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\n/**\r\n * Scripts based off of https://github.com/maximeq/three-js-capsule-geometry/blob/master/src/CapsuleBufferGeometry.js\r\n * @param options the constructors options used to shape the mesh.\r\n * @returns the capsule VertexData\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set/capsule\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function CreateCapsuleVertexData(\r\n options: ICreateCapsuleOptions = {\r\n subdivisions: 2,\r\n tessellation: 16,\r\n height: 1,\r\n radius: 0.25,\r\n capSubdivisions: 6,\r\n }\r\n): VertexData {\r\n const subdivisions = Math.max(options.subdivisions ? options.subdivisions : 2, 1) | 0;\r\n const tessellation = Math.max(options.tessellation ? options.tessellation : 16, 3) | 0;\r\n const height = Math.max(options.height ? options.height : 1, 0);\r\n const radius = Math.max(options.radius ? options.radius : 0.25, 0);\r\n const capDetail = Math.max(options.capSubdivisions ? options.capSubdivisions : 6, 1) | 0;\r\n\r\n const radialSegments = tessellation;\r\n const heightSegments = subdivisions;\r\n\r\n const radiusTop = Math.max(options.radiusTop ? options.radiusTop : radius, 0);\r\n const radiusBottom = Math.max(options.radiusBottom ? options.radiusBottom : radius, 0);\r\n\r\n const heightMinusCaps = height - (radiusTop + radiusBottom);\r\n\r\n const thetaStart = 0.0;\r\n const thetaLength = 2.0 * Math.PI;\r\n\r\n const capsTopSegments = Math.max(options.topCapSubdivisions ? options.topCapSubdivisions : capDetail, 1);\r\n const capsBottomSegments = Math.max(options.bottomCapSubdivisions ? options.bottomCapSubdivisions : capDetail, 1);\r\n\r\n const alpha = Math.acos((radiusBottom - radiusTop) / height);\r\n\r\n let indices = [];\r\n const vertices = [];\r\n const normals = [];\r\n const uvs = [];\r\n\r\n let index = 0;\r\n const indexArray = [],\r\n halfHeight = heightMinusCaps * 0.5;\r\n const pi2 = Math.PI * 0.5;\r\n\r\n let x, y;\r\n const normal = Vector3.Zero();\r\n const vertex = Vector3.Zero();\r\n\r\n const cosAlpha = Math.cos(alpha);\r\n const sinAlpha = Math.sin(alpha);\r\n\r\n const coneLength = new Vector2(radiusTop * sinAlpha, halfHeight + radiusTop * cosAlpha)\r\n .subtract(new Vector2(radiusBottom * sinAlpha, -halfHeight + radiusBottom * cosAlpha))\r\n .length();\r\n\r\n // Total length for v texture coord\r\n const vl = radiusTop * alpha + coneLength + radiusBottom * (pi2 - alpha);\r\n\r\n let v = 0;\r\n for (y = 0; y <= capsTopSegments; y++) {\r\n const indexRow = [];\r\n\r\n const a = pi2 - alpha * (y / capsTopSegments);\r\n\r\n v += (radiusTop * alpha) / capsTopSegments;\r\n\r\n const cosA = Math.cos(a);\r\n const sinA = Math.sin(a);\r\n\r\n // calculate the radius of the current row\r\n const _radius = cosA * radiusTop;\r\n\r\n for (x = 0; x <= radialSegments; x++) {\r\n const u = x / radialSegments;\r\n const theta = u * thetaLength + thetaStart;\r\n const sinTheta = Math.sin(theta);\r\n const cosTheta = Math.cos(theta);\r\n // vertex\r\n vertex.x = _radius * sinTheta;\r\n vertex.y = halfHeight + sinA * radiusTop;\r\n vertex.z = _radius * cosTheta;\r\n vertices.push(vertex.x, vertex.y, vertex.z);\r\n // normal\r\n normal.set(cosA * sinTheta, sinA, cosA * cosTheta);\r\n normals.push(normal.x, normal.y, normal.z);\r\n // uv\r\n uvs.push(u, CompatibilityOptions.UseOpenGLOrientationForUV ? v / vl : 1 - v / vl);\r\n // save index of vertex in respective row\r\n indexRow.push(index);\r\n // increase index\r\n index++;\r\n }\r\n // now save vertices of the row in our index array\r\n indexArray.push(indexRow);\r\n }\r\n\r\n const coneHeight = height - radiusTop - radiusBottom + cosAlpha * radiusTop - cosAlpha * radiusBottom;\r\n const slope = (sinAlpha * (radiusBottom - radiusTop)) / coneHeight;\r\n\r\n for (y = 1; y <= heightSegments; y++) {\r\n const indexRow = [];\r\n v += coneLength / heightSegments;\r\n // calculate the radius of the current row\r\n const _radius = sinAlpha * ((y * (radiusBottom - radiusTop)) / heightSegments + radiusTop);\r\n for (x = 0; x <= radialSegments; x++) {\r\n const u = x / radialSegments;\r\n const theta = u * thetaLength + thetaStart;\r\n const sinTheta = Math.sin(theta);\r\n const cosTheta = Math.cos(theta);\r\n // vertex\r\n vertex.x = _radius * sinTheta;\r\n vertex.y = halfHeight + cosAlpha * radiusTop - (y * coneHeight) / heightSegments;\r\n vertex.z = _radius * cosTheta;\r\n vertices.push(vertex.x, vertex.y, vertex.z);\r\n // normal\r\n normal.set(sinTheta, slope, cosTheta).normalize();\r\n normals.push(normal.x, normal.y, normal.z);\r\n // uv\r\n uvs.push(u, CompatibilityOptions.UseOpenGLOrientationForUV ? v / vl : 1 - v / vl);\r\n // save index of vertex in respective row\r\n indexRow.push(index);\r\n // increase index\r\n index++;\r\n }\r\n // now save vertices of the row in our index array\r\n indexArray.push(indexRow);\r\n }\r\n\r\n for (y = 1; y <= capsBottomSegments; y++) {\r\n const indexRow = [];\r\n const a = pi2 - alpha - (Math.PI - alpha) * (y / capsBottomSegments);\r\n v += (radiusBottom * alpha) / capsBottomSegments;\r\n const cosA = Math.cos(a);\r\n const sinA = Math.sin(a);\r\n // calculate the radius of the current row\r\n const _radius = cosA * radiusBottom;\r\n for (x = 0; x <= radialSegments; x++) {\r\n const u = x / radialSegments;\r\n const theta = u * thetaLength + thetaStart;\r\n const sinTheta = Math.sin(theta);\r\n const cosTheta = Math.cos(theta);\r\n // vertex\r\n vertex.x = _radius * sinTheta;\r\n vertex.y = -halfHeight + sinA * radiusBottom;\r\n vertex.z = _radius * cosTheta;\r\n vertices.push(vertex.x, vertex.y, vertex.z);\r\n // normal\r\n normal.set(cosA * sinTheta, sinA, cosA * cosTheta);\r\n normals.push(normal.x, normal.y, normal.z);\r\n // uv\r\n uvs.push(u, CompatibilityOptions.UseOpenGLOrientationForUV ? v / vl : 1 - v / vl);\r\n // save index of vertex in respective row\r\n indexRow.push(index);\r\n // increase index\r\n index++;\r\n }\r\n // now save vertices of the row in our index array\r\n indexArray.push(indexRow);\r\n }\r\n // generate indices\r\n for (x = 0; x < radialSegments; x++) {\r\n for (y = 0; y < capsTopSegments + heightSegments + capsBottomSegments; y++) {\r\n // we use the index array to access the correct indices\r\n const i1 = indexArray[y][x];\r\n const i2 = indexArray[y + 1][x];\r\n const i3 = indexArray[y + 1][x + 1];\r\n const i4 = indexArray[y][x + 1];\r\n // face one\r\n indices.push(i1);\r\n indices.push(i2);\r\n indices.push(i4);\r\n // face two\r\n indices.push(i2);\r\n indices.push(i3);\r\n indices.push(i4);\r\n }\r\n }\r\n\r\n indices = indices.reverse();\r\n\r\n if (options.orientation && !options.orientation.equals(Vector3.Up())) {\r\n const m = new Matrix();\r\n options.orientation\r\n .clone()\r\n .scale(Math.PI * 0.5)\r\n .cross(Vector3.Up())\r\n .toQuaternion()\r\n .toRotationMatrix(m);\r\n const v = Vector3.Zero();\r\n for (let i = 0; i < vertices.length; i += 3) {\r\n v.set(vertices[i], vertices[i + 1], vertices[i + 2]);\r\n Vector3.TransformCoordinatesToRef(v.clone(), m, v);\r\n vertices[i] = v.x;\r\n vertices[i + 1] = v.y;\r\n vertices[i + 2] = v.z;\r\n }\r\n }\r\n\r\n const vDat = new VertexData();\r\n vDat.positions = vertices;\r\n vDat.normals = normals;\r\n vDat.uvs = uvs;\r\n vDat.indices = indices;\r\n\r\n return vDat;\r\n}\r\n\r\n/**\r\n * The options Interface for creating a Capsule Mesh\r\n */\r\nexport interface ICreateCapsuleOptions {\r\n /** The Orientation of the capsule. Default : Vector3.Up() */\r\n orientation?: Vector3;\r\n\r\n /** Number of sub segments on the tube section of the capsule running parallel to orientation. */\r\n subdivisions?: number;\r\n\r\n /** Number of cylindrical segments on the capsule. */\r\n tessellation?: number;\r\n\r\n /** Height or Length of the capsule. */\r\n height?: number;\r\n\r\n /** Radius of the capsule. */\r\n radius?: number;\r\n\r\n /** Number of sub segments on the cap sections of the capsule running parallel to orientation. */\r\n capSubdivisions?: number;\r\n\r\n /** Overwrite for the top radius. */\r\n radiusTop?: number;\r\n\r\n /** Overwrite for the bottom radius. */\r\n radiusBottom?: number;\r\n\r\n /** Overwrite for the top capSubdivisions. */\r\n topCapSubdivisions?: number;\r\n\r\n /** Overwrite for the bottom capSubdivisions. */\r\n bottomCapSubdivisions?: number;\r\n\r\n /** Internal geometry is supposed to change once created. */\r\n updatable?: boolean;\r\n}\r\n\r\n/**\r\n * Creates a capsule or a pill mesh\r\n * @param name defines the name of the mesh\r\n * @param options The constructors options.\r\n * @param scene The scene the mesh is scoped to.\r\n * @returns Capsule Mesh\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function CreateCapsule(\r\n name: string,\r\n options: ICreateCapsuleOptions = {\r\n orientation: Vector3.Up(),\r\n subdivisions: 2,\r\n tessellation: 16,\r\n height: 1,\r\n radius: 0.25,\r\n capSubdivisions: 6,\r\n updatable: false,\r\n },\r\n scene: Nullable<Scene> = null\r\n): Mesh {\r\n const capsule = new Mesh(name, scene);\r\n const vertexData = CreateCapsuleVertexData(options);\r\n vertexData.applyToMesh(capsule, options.updatable);\r\n return capsule;\r\n}\r\n\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated please use CreateCapsule directly\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport const CapsuleBuilder = {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n CreateCapsule,\r\n};\r\n\r\n/**\r\n * Creates a capsule or a pill mesh\r\n * @param name defines the name of the mesh.\r\n * @param options the constructors options used to shape the mesh.\r\n * @param scene defines the scene the mesh is scoped to.\r\n * @returns the capsule mesh\r\n * @see https://doc.babylonjs.com/how_to/capsule_shape\r\n */\r\nMesh.CreateCapsule = (name: string, options: ICreateCapsuleOptions, scene?: Nullable<Scene>): Mesh => {\r\n return CreateCapsule(name, options, scene);\r\n};\r\n\r\nVertexData.CreateCapsule = CreateCapsuleVertexData;\r\n"]}
@@ -46,8 +46,8 @@ export function CreateCylinderVertexData(options) {
46
46
  let diameterBottom = options.diameterBottom === 0 ? 0 : options.diameterBottom || options.diameter || 1;
47
47
  diameterTop = diameterTop || 0.00001; // Prevent broken normals
48
48
  diameterBottom = diameterBottom || 0.00001; // Prevent broken normals
49
- const tessellation = options.tessellation || 24;
50
- const subdivisions = options.subdivisions || 1;
49
+ const tessellation = (options.tessellation || 24) | 0;
50
+ const subdivisions = (options.subdivisions || 1) | 0;
51
51
  const hasRings = options.hasRings ? true : false;
52
52
  const enclose = options.enclose ? true : false;
53
53
  const cap = options.cap === 0 ? 0 : options.cap || Mesh.CAP_ALL;
@@ -1 +1 @@
1
- {"version":3,"file":"cylinderBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/cylinderBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector4, Vector3, Vector2 } from \"../../Maths/math.vector\";\r\nimport { Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh } from \"../mesh\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport { Scene } from \"../../scene\";\r\nimport type { Nullable } from \"../../types\";\r\nimport { Axis } from \"../../Maths/math.axis\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\n\r\n/**\r\n * Creates the VertexData for a cylinder, cone or prism\r\n * @param options an object used to set the following optional parameters for the box, required but can be empty\r\n * * height sets the height (y direction) of the cylinder, optional, default 2\r\n * * diameterTop sets the diameter of the top of the cone, overwrites diameter, optional, default diameter\r\n * * diameterBottom sets the diameter of the bottom of the cone, overwrites diameter, optional, default diameter\r\n * * diameter sets the diameter of the top and bottom of the cone, optional default 1\r\n * * tessellation the number of prism sides, 3 for a triangular prism, optional, default 24\r\n * * subdivisions` the number of rings along the cylinder height, optional, default 1\r\n * * arc a number from 0 to 1, to create an unclosed cylinder based on the fraction of the circumference given by the arc value, optional, default 1\r\n * * faceColors an array of Color3 elements used to set different colors to the top, rings and bottom respectively\r\n * * faceUV an array of Vector4 elements used to set different images to the top, rings and bottom respectively\r\n * * hasRings when true makes each subdivision independently treated as a face for faceUV and faceColors, optional, default false\r\n * * enclose when true closes an open cylinder by adding extra flat faces between the height axis and vertical edges, think cut cake\r\n * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\n * * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)\r\n * * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)\r\n * @param options.height\r\n * @param options.diameterTop\r\n * @param options.diameterBottom\r\n * @param options.diameter\r\n * @param options.tessellation\r\n * @param options.subdivisions\r\n * @param options.arc\r\n * @param options.faceColors\r\n * @param options.faceUV\r\n * @param options.hasRings\r\n * @param options.enclose\r\n * @param options.cap\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @returns the VertexData of the cylinder, cone or prism\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function CreateCylinderVertexData(options: {\r\n height?: number;\r\n diameterTop?: number;\r\n diameterBottom?: number;\r\n diameter?: number;\r\n tessellation?: number;\r\n subdivisions?: number;\r\n arc?: number;\r\n faceColors?: Color4[];\r\n faceUV?: Vector4[];\r\n hasRings?: boolean;\r\n enclose?: boolean;\r\n cap?: number;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n}): VertexData {\r\n const height: number = options.height || 2;\r\n let diameterTop: number = options.diameterTop === 0 ? 0 : options.diameterTop || options.diameter || 1;\r\n let diameterBottom: number = options.diameterBottom === 0 ? 0 : options.diameterBottom || options.diameter || 1;\r\n diameterTop = diameterTop || 0.00001; // Prevent broken normals\r\n diameterBottom = diameterBottom || 0.00001; // Prevent broken normals\r\n const tessellation: number = options.tessellation || 24;\r\n const subdivisions: number = options.subdivisions || 1;\r\n const hasRings: boolean = options.hasRings ? true : false;\r\n const enclose: boolean = options.enclose ? true : false;\r\n const cap = options.cap === 0 ? 0 : options.cap || Mesh.CAP_ALL;\r\n const arc: number = options.arc && (options.arc <= 0 || options.arc > 1) ? 1.0 : options.arc || 1.0;\r\n const sideOrientation: number = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\r\n const faceUV: Vector4[] = options.faceUV || new Array<Vector4>(3);\r\n const faceColors = options.faceColors;\r\n // default face colors and UV if undefined\r\n const quadNb: number = arc !== 1 && enclose ? 2 : 0;\r\n const ringNb: number = hasRings ? subdivisions : 1;\r\n const surfaceNb: number = 2 + (1 + quadNb) * ringNb;\r\n let f: number;\r\n\r\n for (f = 0; f < surfaceNb; f++) {\r\n if (faceColors && faceColors[f] === undefined) {\r\n faceColors[f] = new Color4(1, 1, 1, 1);\r\n }\r\n }\r\n for (f = 0; f < surfaceNb; f++) {\r\n if (faceUV && faceUV[f] === undefined) {\r\n faceUV[f] = new Vector4(0, 0, 1, 1);\r\n }\r\n }\r\n\r\n const indices = new Array<number>();\r\n const positions = new Array<number>();\r\n const normals = new Array<number>();\r\n const uvs = new Array<number>();\r\n const colors = new Array<number>();\r\n\r\n const angleStep = (Math.PI * 2 * arc) / tessellation;\r\n let angle: number;\r\n let h: number;\r\n let radius: number;\r\n const tan = (diameterBottom - diameterTop) / 2 / height;\r\n const ringVertex: Vector3 = Vector3.Zero();\r\n const ringNormal: Vector3 = Vector3.Zero();\r\n const ringFirstVertex: Vector3 = Vector3.Zero();\r\n const ringFirstNormal: Vector3 = Vector3.Zero();\r\n const quadNormal: Vector3 = Vector3.Zero();\r\n const Y: Vector3 = Axis.Y;\r\n\r\n // positions, normals, uvs\r\n let i: number;\r\n let j: number;\r\n let r: number;\r\n let ringIdx: number = 1;\r\n let s: number = 1; // surface index\r\n let cs: number = 0;\r\n let v: number = 0;\r\n\r\n for (i = 0; i <= subdivisions; i++) {\r\n h = i / subdivisions;\r\n radius = (h * (diameterTop - diameterBottom) + diameterBottom) / 2;\r\n ringIdx = hasRings && i !== 0 && i !== subdivisions ? 2 : 1;\r\n for (r = 0; r < ringIdx; r++) {\r\n if (hasRings) {\r\n s += r;\r\n }\r\n if (enclose) {\r\n s += 2 * r;\r\n }\r\n for (j = 0; j <= tessellation; j++) {\r\n angle = j * angleStep;\r\n\r\n // position\r\n ringVertex.x = Math.cos(-angle) * radius;\r\n ringVertex.y = -height / 2 + h * height;\r\n ringVertex.z = Math.sin(-angle) * radius;\r\n\r\n // normal\r\n if (diameterTop === 0 && i === subdivisions) {\r\n // if no top cap, reuse former normals\r\n ringNormal.x = normals[normals.length - (tessellation + 1) * 3];\r\n ringNormal.y = normals[normals.length - (tessellation + 1) * 3 + 1];\r\n ringNormal.z = normals[normals.length - (tessellation + 1) * 3 + 2];\r\n } else {\r\n ringNormal.x = ringVertex.x;\r\n ringNormal.z = ringVertex.z;\r\n ringNormal.y = Math.sqrt(ringNormal.x * ringNormal.x + ringNormal.z * ringNormal.z) * tan;\r\n ringNormal.normalize();\r\n }\r\n\r\n // keep first ring vertex values for enclose\r\n if (j === 0) {\r\n ringFirstVertex.copyFrom(ringVertex);\r\n ringFirstNormal.copyFrom(ringNormal);\r\n }\r\n\r\n positions.push(ringVertex.x, ringVertex.y, ringVertex.z);\r\n normals.push(ringNormal.x, ringNormal.y, ringNormal.z);\r\n if (hasRings) {\r\n v = cs !== s ? faceUV[s].y : faceUV[s].w;\r\n } else {\r\n v = faceUV[s].y + (faceUV[s].w - faceUV[s].y) * h;\r\n }\r\n uvs.push(faceUV[s].x + ((faceUV[s].z - faceUV[s].x) * j) / tessellation, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n if (faceColors) {\r\n colors.push(faceColors[s].r, faceColors[s].g, faceColors[s].b, faceColors[s].a);\r\n }\r\n }\r\n\r\n // if enclose, add four vertices and their dedicated normals\r\n if (arc !== 1 && enclose) {\r\n positions.push(ringVertex.x, ringVertex.y, ringVertex.z);\r\n positions.push(0, ringVertex.y, 0);\r\n positions.push(0, ringVertex.y, 0);\r\n positions.push(ringFirstVertex.x, ringFirstVertex.y, ringFirstVertex.z);\r\n Vector3.CrossToRef(Y, ringNormal, quadNormal);\r\n quadNormal.normalize();\r\n normals.push(quadNormal.x, quadNormal.y, quadNormal.z, quadNormal.x, quadNormal.y, quadNormal.z);\r\n Vector3.CrossToRef(ringFirstNormal, Y, quadNormal);\r\n quadNormal.normalize();\r\n normals.push(quadNormal.x, quadNormal.y, quadNormal.z, quadNormal.x, quadNormal.y, quadNormal.z);\r\n if (hasRings) {\r\n v = cs !== s ? faceUV[s + 1].y : faceUV[s + 1].w;\r\n } else {\r\n v = faceUV[s + 1].y + (faceUV[s + 1].w - faceUV[s + 1].y) * h;\r\n }\r\n uvs.push(faceUV[s + 1].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n uvs.push(faceUV[s + 1].z, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n if (hasRings) {\r\n v = cs !== s ? faceUV[s + 2].y : faceUV[s + 2].w;\r\n } else {\r\n v = faceUV[s + 2].y + (faceUV[s + 2].w - faceUV[s + 2].y) * h;\r\n }\r\n uvs.push(faceUV[s + 2].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n uvs.push(faceUV[s + 2].z, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n if (faceColors) {\r\n colors.push(faceColors[s + 1].r, faceColors[s + 1].g, faceColors[s + 1].b, faceColors[s + 1].a);\r\n colors.push(faceColors[s + 1].r, faceColors[s + 1].g, faceColors[s + 1].b, faceColors[s + 1].a);\r\n colors.push(faceColors[s + 2].r, faceColors[s + 2].g, faceColors[s + 2].b, faceColors[s + 2].a);\r\n colors.push(faceColors[s + 2].r, faceColors[s + 2].g, faceColors[s + 2].b, faceColors[s + 2].a);\r\n }\r\n }\r\n if (cs !== s) {\r\n cs = s;\r\n }\r\n }\r\n }\r\n\r\n // indices\r\n const e: number = arc !== 1 && enclose ? tessellation + 4 : tessellation; // correction of number of iteration if enclose\r\n i = 0;\r\n for (s = 0; s < subdivisions; s++) {\r\n let i0: number = 0;\r\n let i1: number = 0;\r\n let i2: number = 0;\r\n let i3: number = 0;\r\n for (j = 0; j < tessellation; j++) {\r\n i0 = i * (e + 1) + j;\r\n i1 = (i + 1) * (e + 1) + j;\r\n i2 = i * (e + 1) + (j + 1);\r\n i3 = (i + 1) * (e + 1) + (j + 1);\r\n indices.push(i0, i1, i2);\r\n indices.push(i3, i2, i1);\r\n }\r\n if (arc !== 1 && enclose) {\r\n // if enclose, add two quads\r\n indices.push(i0 + 2, i1 + 2, i2 + 2);\r\n indices.push(i3 + 2, i2 + 2, i1 + 2);\r\n indices.push(i0 + 4, i1 + 4, i2 + 4);\r\n indices.push(i3 + 4, i2 + 4, i1 + 4);\r\n }\r\n i = hasRings ? i + 2 : i + 1;\r\n }\r\n\r\n // Caps\r\n const createCylinderCap = (isTop: boolean) => {\r\n const radius = isTop ? diameterTop / 2 : diameterBottom / 2;\r\n if (radius === 0) {\r\n return;\r\n }\r\n\r\n // Cap positions, normals & uvs\r\n let angle;\r\n let circleVector;\r\n let i: number;\r\n const u: Vector4 = isTop ? faceUV[surfaceNb - 1] : faceUV[0];\r\n let c: Nullable<Color4> = null;\r\n if (faceColors) {\r\n c = isTop ? faceColors[surfaceNb - 1] : faceColors[0];\r\n }\r\n // cap center\r\n const vbase = positions.length / 3;\r\n const offset = isTop ? height / 2 : -height / 2;\r\n const center = new Vector3(0, offset, 0);\r\n positions.push(center.x, center.y, center.z);\r\n normals.push(0, isTop ? 1 : -1, 0);\r\n const v = u.y + (u.w - u.y) * 0.5;\r\n uvs.push(u.x + (u.z - u.x) * 0.5, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n if (c) {\r\n colors.push(c.r, c.g, c.b, c.a);\r\n }\r\n\r\n const textureScale = new Vector2(0.5, 0.5);\r\n for (i = 0; i <= tessellation; i++) {\r\n angle = (Math.PI * 2 * i * arc) / tessellation;\r\n const cos = Math.cos(-angle);\r\n const sin = Math.sin(-angle);\r\n circleVector = new Vector3(cos * radius, offset, sin * radius);\r\n const textureCoordinate = new Vector2(cos * textureScale.x + 0.5, sin * textureScale.y + 0.5);\r\n positions.push(circleVector.x, circleVector.y, circleVector.z);\r\n normals.push(0, isTop ? 1 : -1, 0);\r\n const v = u.y + (u.w - u.y) * textureCoordinate.y;\r\n uvs.push(u.x + (u.z - u.x) * textureCoordinate.x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n if (c) {\r\n colors.push(c.r, c.g, c.b, c.a);\r\n }\r\n }\r\n // Cap indices\r\n for (i = 0; i < tessellation; i++) {\r\n if (!isTop) {\r\n indices.push(vbase);\r\n indices.push(vbase + (i + 1));\r\n indices.push(vbase + (i + 2));\r\n } else {\r\n indices.push(vbase);\r\n indices.push(vbase + (i + 2));\r\n indices.push(vbase + (i + 1));\r\n }\r\n }\r\n };\r\n\r\n // add caps to geometry based on cap parameter\r\n if (cap === Mesh.CAP_START || cap === Mesh.CAP_ALL) {\r\n createCylinderCap(false);\r\n }\r\n if (cap === Mesh.CAP_END || cap === Mesh.CAP_ALL) {\r\n createCylinderCap(true);\r\n }\r\n\r\n // Sides\r\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);\r\n\r\n const vertexData = new VertexData();\r\n\r\n vertexData.indices = indices;\r\n vertexData.positions = positions;\r\n vertexData.normals = normals;\r\n vertexData.uvs = uvs;\r\n if (faceColors) {\r\n vertexData.colors = colors;\r\n }\r\n\r\n return vertexData;\r\n}\r\n\r\n/**\r\n * Creates a cylinder or a cone mesh\r\n * * The parameter `height` sets the height size (float) of the cylinder/cone (float, default 2).\r\n * * The parameter `diameter` sets the diameter of the top and bottom cap at once (float, default 1).\r\n * * The parameters `diameterTop` and `diameterBottom` overwrite the parameter `diameter` and set respectively the top cap and bottom cap diameter (floats, default 1). The parameter \"diameterBottom\" can't be zero.\r\n * * The parameter `tessellation` sets the number of cylinder sides (positive integer, default 24). Set it to 3 to get a prism for instance.\r\n * * The parameter `subdivisions` sets the number of rings along the cylinder height (positive integer, default 1).\r\n * * The parameter `hasRings` (boolean, default false) makes the subdivisions independent from each other, so they become different faces.\r\n * * The parameter `enclose` (boolean, default false) adds two extra faces per subdivision to a sliced cylinder to close it around its height axis.\r\n * * The parameter `cap` sets the way the cylinder is capped. Possible values : BABYLON.Mesh.NO_CAP, BABYLON.Mesh.CAP_START, BABYLON.Mesh.CAP_END, BABYLON.Mesh.CAP_ALL (default).\r\n * * The parameter `arc` (float, default 1) is the ratio (max 1) to apply to the circumference to slice the cylinder.\r\n * * You can set different colors and different images to each box side by using the parameters `faceColors` (an array of n Color3 elements) and `faceUV` (an array of n Vector4 elements).\r\n * * The value of n is the number of cylinder faces. If the cylinder has only 1 subdivisions, n equals : top face + cylinder surface + bottom face = 3\r\n * * Now, if the cylinder has 5 independent subdivisions (hasRings = true), n equals : top face + 5 stripe surfaces + bottom face = 2 + 5 = 7\r\n * * Finally, if the cylinder has 5 independent subdivisions and is enclose, n equals : top face + 5 x (stripe surface + 2 closing faces) + bottom face = 2 + 5 * 3 = 17\r\n * * Each array (color or UVs) is always ordered the same way : the first element is the bottom cap, the last element is the top cap. The other elements are each a ring surface.\r\n * * If `enclose` is false, a ring surface is one element.\r\n * * If `enclose` is true, a ring surface is 3 successive elements in the array : the tubular surface, then the two closing faces.\r\n * * Example how to set colors and textures on a sliced cylinder : https://www.html5gamedevs.com/topic/17945-creating-a-closed-slice-of-a-cylinder/#comment-106379\r\n * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE\r\n * * If you create a double-sided mesh, you can choose what parts of the texture image to crop and stick respectively on the front and the back sides with the parameters `frontUVs` and `backUVs` (Vector4). Detail here : https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#side-orientation\r\n * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.\r\n * @param name defines the name of the mesh\r\n * @param options defines the options used to create the mesh\r\n * @param options.height\r\n * @param options.diameterTop\r\n * @param options.diameterBottom\r\n * @param options.diameter\r\n * @param options.tessellation\r\n * @param options.subdivisions\r\n * @param options.arc\r\n * @param options.faceColors\r\n * @param options.faceUV\r\n * @param options.updatable\r\n * @param options.hasRings\r\n * @param options.enclose\r\n * @param options.cap\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param scene defines the hosting scene\r\n * @returns the cylinder mesh\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#cylinder-or-cone\r\n */\r\nexport function CreateCylinder(\r\n name: string,\r\n options: {\r\n height?: number;\r\n diameterTop?: number;\r\n diameterBottom?: number;\r\n diameter?: number;\r\n tessellation?: number;\r\n subdivisions?: number;\r\n arc?: number;\r\n faceColors?: Color4[];\r\n faceUV?: Vector4[];\r\n updatable?: boolean;\r\n hasRings?: boolean;\r\n enclose?: boolean;\r\n cap?: number;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n } = {},\r\n scene?: Nullable<Scene>\r\n): Mesh {\r\n const cylinder = new Mesh(name, scene);\r\n\r\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\r\n cylinder._originalBuilderSideOrientation = options.sideOrientation;\r\n\r\n const vertexData = CreateCylinderVertexData(options);\r\n\r\n vertexData.applyToMesh(cylinder, options.updatable);\r\n\r\n return cylinder;\r\n}\r\n\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated Please use CreateCylinder directly\r\n */\r\nexport const CylinderBuilder = {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n CreateCylinder,\r\n};\r\n\r\nVertexData.CreateCylinder = CreateCylinderVertexData;\r\n\r\nMesh.CreateCylinder = (\r\n name: string,\r\n height: number,\r\n diameterTop: number,\r\n diameterBottom: number,\r\n tessellation: number,\r\n subdivisions: any,\r\n scene?: Scene,\r\n updatable?: any,\r\n sideOrientation?: number\r\n): Mesh => {\r\n if (scene === undefined || !(scene instanceof Scene)) {\r\n if (scene !== undefined) {\r\n sideOrientation = updatable || Mesh.DEFAULTSIDE;\r\n updatable = scene;\r\n }\r\n scene = <Scene>subdivisions;\r\n subdivisions = 1;\r\n }\r\n\r\n const options = {\r\n height,\r\n diameterTop,\r\n diameterBottom,\r\n tessellation,\r\n subdivisions,\r\n sideOrientation,\r\n updatable,\r\n };\r\n\r\n return CreateCylinder(name, options, scene);\r\n};\r\n"]}
1
+ {"version":3,"file":"cylinderBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/cylinderBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector4, Vector3, Vector2 } from \"../../Maths/math.vector\";\r\nimport { Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh } from \"../mesh\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport { Scene } from \"../../scene\";\r\nimport type { Nullable } from \"../../types\";\r\nimport { Axis } from \"../../Maths/math.axis\";\r\nimport { CompatibilityOptions } from \"../../Compat/compatibilityOptions\";\r\n\r\n/**\r\n * Creates the VertexData for a cylinder, cone or prism\r\n * @param options an object used to set the following optional parameters for the box, required but can be empty\r\n * * height sets the height (y direction) of the cylinder, optional, default 2\r\n * * diameterTop sets the diameter of the top of the cone, overwrites diameter, optional, default diameter\r\n * * diameterBottom sets the diameter of the bottom of the cone, overwrites diameter, optional, default diameter\r\n * * diameter sets the diameter of the top and bottom of the cone, optional default 1\r\n * * tessellation the number of prism sides, 3 for a triangular prism, optional, default 24\r\n * * subdivisions` the number of rings along the cylinder height, optional, default 1\r\n * * arc a number from 0 to 1, to create an unclosed cylinder based on the fraction of the circumference given by the arc value, optional, default 1\r\n * * faceColors an array of Color3 elements used to set different colors to the top, rings and bottom respectively\r\n * * faceUV an array of Vector4 elements used to set different images to the top, rings and bottom respectively\r\n * * hasRings when true makes each subdivision independently treated as a face for faceUV and faceColors, optional, default false\r\n * * enclose when true closes an open cylinder by adding extra flat faces between the height axis and vertical edges, think cut cake\r\n * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\n * * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)\r\n * * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)\r\n * @param options.height\r\n * @param options.diameterTop\r\n * @param options.diameterBottom\r\n * @param options.diameter\r\n * @param options.tessellation\r\n * @param options.subdivisions\r\n * @param options.arc\r\n * @param options.faceColors\r\n * @param options.faceUV\r\n * @param options.hasRings\r\n * @param options.enclose\r\n * @param options.cap\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @returns the VertexData of the cylinder, cone or prism\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function CreateCylinderVertexData(options: {\r\n height?: number;\r\n diameterTop?: number;\r\n diameterBottom?: number;\r\n diameter?: number;\r\n tessellation?: number;\r\n subdivisions?: number;\r\n arc?: number;\r\n faceColors?: Color4[];\r\n faceUV?: Vector4[];\r\n hasRings?: boolean;\r\n enclose?: boolean;\r\n cap?: number;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n}): VertexData {\r\n const height: number = options.height || 2;\r\n let diameterTop: number = options.diameterTop === 0 ? 0 : options.diameterTop || options.diameter || 1;\r\n let diameterBottom: number = options.diameterBottom === 0 ? 0 : options.diameterBottom || options.diameter || 1;\r\n diameterTop = diameterTop || 0.00001; // Prevent broken normals\r\n diameterBottom = diameterBottom || 0.00001; // Prevent broken normals\r\n const tessellation: number = (options.tessellation || 24) | 0;\r\n const subdivisions: number = (options.subdivisions || 1) | 0;\r\n const hasRings: boolean = options.hasRings ? true : false;\r\n const enclose: boolean = options.enclose ? true : false;\r\n const cap = options.cap === 0 ? 0 : options.cap || Mesh.CAP_ALL;\r\n const arc: number = options.arc && (options.arc <= 0 || options.arc > 1) ? 1.0 : options.arc || 1.0;\r\n const sideOrientation: number = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\r\n const faceUV: Vector4[] = options.faceUV || new Array<Vector4>(3);\r\n const faceColors = options.faceColors;\r\n // default face colors and UV if undefined\r\n const quadNb: number = arc !== 1 && enclose ? 2 : 0;\r\n const ringNb: number = hasRings ? subdivisions : 1;\r\n const surfaceNb: number = 2 + (1 + quadNb) * ringNb;\r\n let f: number;\r\n\r\n for (f = 0; f < surfaceNb; f++) {\r\n if (faceColors && faceColors[f] === undefined) {\r\n faceColors[f] = new Color4(1, 1, 1, 1);\r\n }\r\n }\r\n for (f = 0; f < surfaceNb; f++) {\r\n if (faceUV && faceUV[f] === undefined) {\r\n faceUV[f] = new Vector4(0, 0, 1, 1);\r\n }\r\n }\r\n\r\n const indices = new Array<number>();\r\n const positions = new Array<number>();\r\n const normals = new Array<number>();\r\n const uvs = new Array<number>();\r\n const colors = new Array<number>();\r\n\r\n const angleStep = (Math.PI * 2 * arc) / tessellation;\r\n let angle: number;\r\n let h: number;\r\n let radius: number;\r\n const tan = (diameterBottom - diameterTop) / 2 / height;\r\n const ringVertex: Vector3 = Vector3.Zero();\r\n const ringNormal: Vector3 = Vector3.Zero();\r\n const ringFirstVertex: Vector3 = Vector3.Zero();\r\n const ringFirstNormal: Vector3 = Vector3.Zero();\r\n const quadNormal: Vector3 = Vector3.Zero();\r\n const Y: Vector3 = Axis.Y;\r\n\r\n // positions, normals, uvs\r\n let i: number;\r\n let j: number;\r\n let r: number;\r\n let ringIdx: number = 1;\r\n let s: number = 1; // surface index\r\n let cs: number = 0;\r\n let v: number = 0;\r\n\r\n for (i = 0; i <= subdivisions; i++) {\r\n h = i / subdivisions;\r\n radius = (h * (diameterTop - diameterBottom) + diameterBottom) / 2;\r\n ringIdx = hasRings && i !== 0 && i !== subdivisions ? 2 : 1;\r\n for (r = 0; r < ringIdx; r++) {\r\n if (hasRings) {\r\n s += r;\r\n }\r\n if (enclose) {\r\n s += 2 * r;\r\n }\r\n for (j = 0; j <= tessellation; j++) {\r\n angle = j * angleStep;\r\n\r\n // position\r\n ringVertex.x = Math.cos(-angle) * radius;\r\n ringVertex.y = -height / 2 + h * height;\r\n ringVertex.z = Math.sin(-angle) * radius;\r\n\r\n // normal\r\n if (diameterTop === 0 && i === subdivisions) {\r\n // if no top cap, reuse former normals\r\n ringNormal.x = normals[normals.length - (tessellation + 1) * 3];\r\n ringNormal.y = normals[normals.length - (tessellation + 1) * 3 + 1];\r\n ringNormal.z = normals[normals.length - (tessellation + 1) * 3 + 2];\r\n } else {\r\n ringNormal.x = ringVertex.x;\r\n ringNormal.z = ringVertex.z;\r\n ringNormal.y = Math.sqrt(ringNormal.x * ringNormal.x + ringNormal.z * ringNormal.z) * tan;\r\n ringNormal.normalize();\r\n }\r\n\r\n // keep first ring vertex values for enclose\r\n if (j === 0) {\r\n ringFirstVertex.copyFrom(ringVertex);\r\n ringFirstNormal.copyFrom(ringNormal);\r\n }\r\n\r\n positions.push(ringVertex.x, ringVertex.y, ringVertex.z);\r\n normals.push(ringNormal.x, ringNormal.y, ringNormal.z);\r\n if (hasRings) {\r\n v = cs !== s ? faceUV[s].y : faceUV[s].w;\r\n } else {\r\n v = faceUV[s].y + (faceUV[s].w - faceUV[s].y) * h;\r\n }\r\n uvs.push(faceUV[s].x + ((faceUV[s].z - faceUV[s].x) * j) / tessellation, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n if (faceColors) {\r\n colors.push(faceColors[s].r, faceColors[s].g, faceColors[s].b, faceColors[s].a);\r\n }\r\n }\r\n\r\n // if enclose, add four vertices and their dedicated normals\r\n if (arc !== 1 && enclose) {\r\n positions.push(ringVertex.x, ringVertex.y, ringVertex.z);\r\n positions.push(0, ringVertex.y, 0);\r\n positions.push(0, ringVertex.y, 0);\r\n positions.push(ringFirstVertex.x, ringFirstVertex.y, ringFirstVertex.z);\r\n Vector3.CrossToRef(Y, ringNormal, quadNormal);\r\n quadNormal.normalize();\r\n normals.push(quadNormal.x, quadNormal.y, quadNormal.z, quadNormal.x, quadNormal.y, quadNormal.z);\r\n Vector3.CrossToRef(ringFirstNormal, Y, quadNormal);\r\n quadNormal.normalize();\r\n normals.push(quadNormal.x, quadNormal.y, quadNormal.z, quadNormal.x, quadNormal.y, quadNormal.z);\r\n if (hasRings) {\r\n v = cs !== s ? faceUV[s + 1].y : faceUV[s + 1].w;\r\n } else {\r\n v = faceUV[s + 1].y + (faceUV[s + 1].w - faceUV[s + 1].y) * h;\r\n }\r\n uvs.push(faceUV[s + 1].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n uvs.push(faceUV[s + 1].z, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n if (hasRings) {\r\n v = cs !== s ? faceUV[s + 2].y : faceUV[s + 2].w;\r\n } else {\r\n v = faceUV[s + 2].y + (faceUV[s + 2].w - faceUV[s + 2].y) * h;\r\n }\r\n uvs.push(faceUV[s + 2].x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n uvs.push(faceUV[s + 2].z, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n if (faceColors) {\r\n colors.push(faceColors[s + 1].r, faceColors[s + 1].g, faceColors[s + 1].b, faceColors[s + 1].a);\r\n colors.push(faceColors[s + 1].r, faceColors[s + 1].g, faceColors[s + 1].b, faceColors[s + 1].a);\r\n colors.push(faceColors[s + 2].r, faceColors[s + 2].g, faceColors[s + 2].b, faceColors[s + 2].a);\r\n colors.push(faceColors[s + 2].r, faceColors[s + 2].g, faceColors[s + 2].b, faceColors[s + 2].a);\r\n }\r\n }\r\n if (cs !== s) {\r\n cs = s;\r\n }\r\n }\r\n }\r\n\r\n // indices\r\n const e: number = arc !== 1 && enclose ? tessellation + 4 : tessellation; // correction of number of iteration if enclose\r\n i = 0;\r\n for (s = 0; s < subdivisions; s++) {\r\n let i0: number = 0;\r\n let i1: number = 0;\r\n let i2: number = 0;\r\n let i3: number = 0;\r\n for (j = 0; j < tessellation; j++) {\r\n i0 = i * (e + 1) + j;\r\n i1 = (i + 1) * (e + 1) + j;\r\n i2 = i * (e + 1) + (j + 1);\r\n i3 = (i + 1) * (e + 1) + (j + 1);\r\n indices.push(i0, i1, i2);\r\n indices.push(i3, i2, i1);\r\n }\r\n if (arc !== 1 && enclose) {\r\n // if enclose, add two quads\r\n indices.push(i0 + 2, i1 + 2, i2 + 2);\r\n indices.push(i3 + 2, i2 + 2, i1 + 2);\r\n indices.push(i0 + 4, i1 + 4, i2 + 4);\r\n indices.push(i3 + 4, i2 + 4, i1 + 4);\r\n }\r\n i = hasRings ? i + 2 : i + 1;\r\n }\r\n\r\n // Caps\r\n const createCylinderCap = (isTop: boolean) => {\r\n const radius = isTop ? diameterTop / 2 : diameterBottom / 2;\r\n if (radius === 0) {\r\n return;\r\n }\r\n\r\n // Cap positions, normals & uvs\r\n let angle;\r\n let circleVector;\r\n let i: number;\r\n const u: Vector4 = isTop ? faceUV[surfaceNb - 1] : faceUV[0];\r\n let c: Nullable<Color4> = null;\r\n if (faceColors) {\r\n c = isTop ? faceColors[surfaceNb - 1] : faceColors[0];\r\n }\r\n // cap center\r\n const vbase = positions.length / 3;\r\n const offset = isTop ? height / 2 : -height / 2;\r\n const center = new Vector3(0, offset, 0);\r\n positions.push(center.x, center.y, center.z);\r\n normals.push(0, isTop ? 1 : -1, 0);\r\n const v = u.y + (u.w - u.y) * 0.5;\r\n uvs.push(u.x + (u.z - u.x) * 0.5, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n if (c) {\r\n colors.push(c.r, c.g, c.b, c.a);\r\n }\r\n\r\n const textureScale = new Vector2(0.5, 0.5);\r\n for (i = 0; i <= tessellation; i++) {\r\n angle = (Math.PI * 2 * i * arc) / tessellation;\r\n const cos = Math.cos(-angle);\r\n const sin = Math.sin(-angle);\r\n circleVector = new Vector3(cos * radius, offset, sin * radius);\r\n const textureCoordinate = new Vector2(cos * textureScale.x + 0.5, sin * textureScale.y + 0.5);\r\n positions.push(circleVector.x, circleVector.y, circleVector.z);\r\n normals.push(0, isTop ? 1 : -1, 0);\r\n const v = u.y + (u.w - u.y) * textureCoordinate.y;\r\n uvs.push(u.x + (u.z - u.x) * textureCoordinate.x, CompatibilityOptions.UseOpenGLOrientationForUV ? 1 - v : v);\r\n if (c) {\r\n colors.push(c.r, c.g, c.b, c.a);\r\n }\r\n }\r\n // Cap indices\r\n for (i = 0; i < tessellation; i++) {\r\n if (!isTop) {\r\n indices.push(vbase);\r\n indices.push(vbase + (i + 1));\r\n indices.push(vbase + (i + 2));\r\n } else {\r\n indices.push(vbase);\r\n indices.push(vbase + (i + 2));\r\n indices.push(vbase + (i + 1));\r\n }\r\n }\r\n };\r\n\r\n // add caps to geometry based on cap parameter\r\n if (cap === Mesh.CAP_START || cap === Mesh.CAP_ALL) {\r\n createCylinderCap(false);\r\n }\r\n if (cap === Mesh.CAP_END || cap === Mesh.CAP_ALL) {\r\n createCylinderCap(true);\r\n }\r\n\r\n // Sides\r\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);\r\n\r\n const vertexData = new VertexData();\r\n\r\n vertexData.indices = indices;\r\n vertexData.positions = positions;\r\n vertexData.normals = normals;\r\n vertexData.uvs = uvs;\r\n if (faceColors) {\r\n vertexData.colors = colors;\r\n }\r\n\r\n return vertexData;\r\n}\r\n\r\n/**\r\n * Creates a cylinder or a cone mesh\r\n * * The parameter `height` sets the height size (float) of the cylinder/cone (float, default 2).\r\n * * The parameter `diameter` sets the diameter of the top and bottom cap at once (float, default 1).\r\n * * The parameters `diameterTop` and `diameterBottom` overwrite the parameter `diameter` and set respectively the top cap and bottom cap diameter (floats, default 1). The parameter \"diameterBottom\" can't be zero.\r\n * * The parameter `tessellation` sets the number of cylinder sides (positive integer, default 24). Set it to 3 to get a prism for instance.\r\n * * The parameter `subdivisions` sets the number of rings along the cylinder height (positive integer, default 1).\r\n * * The parameter `hasRings` (boolean, default false) makes the subdivisions independent from each other, so they become different faces.\r\n * * The parameter `enclose` (boolean, default false) adds two extra faces per subdivision to a sliced cylinder to close it around its height axis.\r\n * * The parameter `cap` sets the way the cylinder is capped. Possible values : BABYLON.Mesh.NO_CAP, BABYLON.Mesh.CAP_START, BABYLON.Mesh.CAP_END, BABYLON.Mesh.CAP_ALL (default).\r\n * * The parameter `arc` (float, default 1) is the ratio (max 1) to apply to the circumference to slice the cylinder.\r\n * * You can set different colors and different images to each box side by using the parameters `faceColors` (an array of n Color3 elements) and `faceUV` (an array of n Vector4 elements).\r\n * * The value of n is the number of cylinder faces. If the cylinder has only 1 subdivisions, n equals : top face + cylinder surface + bottom face = 3\r\n * * Now, if the cylinder has 5 independent subdivisions (hasRings = true), n equals : top face + 5 stripe surfaces + bottom face = 2 + 5 = 7\r\n * * Finally, if the cylinder has 5 independent subdivisions and is enclose, n equals : top face + 5 x (stripe surface + 2 closing faces) + bottom face = 2 + 5 * 3 = 17\r\n * * Each array (color or UVs) is always ordered the same way : the first element is the bottom cap, the last element is the top cap. The other elements are each a ring surface.\r\n * * If `enclose` is false, a ring surface is one element.\r\n * * If `enclose` is true, a ring surface is 3 successive elements in the array : the tubular surface, then the two closing faces.\r\n * * Example how to set colors and textures on a sliced cylinder : https://www.html5gamedevs.com/topic/17945-creating-a-closed-slice-of-a-cylinder/#comment-106379\r\n * * You can also set the mesh side orientation with the values : BABYLON.Mesh.FRONTSIDE (default), BABYLON.Mesh.BACKSIDE or BABYLON.Mesh.DOUBLESIDE\r\n * * If you create a double-sided mesh, you can choose what parts of the texture image to crop and stick respectively on the front and the back sides with the parameters `frontUVs` and `backUVs` (Vector4). Detail here : https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#side-orientation\r\n * * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created.\r\n * @param name defines the name of the mesh\r\n * @param options defines the options used to create the mesh\r\n * @param options.height\r\n * @param options.diameterTop\r\n * @param options.diameterBottom\r\n * @param options.diameter\r\n * @param options.tessellation\r\n * @param options.subdivisions\r\n * @param options.arc\r\n * @param options.faceColors\r\n * @param options.faceUV\r\n * @param options.updatable\r\n * @param options.hasRings\r\n * @param options.enclose\r\n * @param options.cap\r\n * @param options.sideOrientation\r\n * @param options.frontUVs\r\n * @param options.backUVs\r\n * @param scene defines the hosting scene\r\n * @returns the cylinder mesh\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set#cylinder-or-cone\r\n */\r\nexport function CreateCylinder(\r\n name: string,\r\n options: {\r\n height?: number;\r\n diameterTop?: number;\r\n diameterBottom?: number;\r\n diameter?: number;\r\n tessellation?: number;\r\n subdivisions?: number;\r\n arc?: number;\r\n faceColors?: Color4[];\r\n faceUV?: Vector4[];\r\n updatable?: boolean;\r\n hasRings?: boolean;\r\n enclose?: boolean;\r\n cap?: number;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n } = {},\r\n scene?: Nullable<Scene>\r\n): Mesh {\r\n const cylinder = new Mesh(name, scene);\r\n\r\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\r\n cylinder._originalBuilderSideOrientation = options.sideOrientation;\r\n\r\n const vertexData = CreateCylinderVertexData(options);\r\n\r\n vertexData.applyToMesh(cylinder, options.updatable);\r\n\r\n return cylinder;\r\n}\r\n\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated Please use CreateCylinder directly\r\n */\r\nexport const CylinderBuilder = {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n CreateCylinder,\r\n};\r\n\r\nVertexData.CreateCylinder = CreateCylinderVertexData;\r\n\r\nMesh.CreateCylinder = (\r\n name: string,\r\n height: number,\r\n diameterTop: number,\r\n diameterBottom: number,\r\n tessellation: number,\r\n subdivisions: any,\r\n scene?: Scene,\r\n updatable?: any,\r\n sideOrientation?: number\r\n): Mesh => {\r\n if (scene === undefined || !(scene instanceof Scene)) {\r\n if (scene !== undefined) {\r\n sideOrientation = updatable || Mesh.DEFAULTSIDE;\r\n updatable = scene;\r\n }\r\n scene = <Scene>subdivisions;\r\n subdivisions = 1;\r\n }\r\n\r\n const options = {\r\n height,\r\n diameterTop,\r\n diameterBottom,\r\n tessellation,\r\n subdivisions,\r\n sideOrientation,\r\n updatable,\r\n };\r\n\r\n return CreateCylinder(name, options, scene);\r\n};\r\n"]}
@@ -5,7 +5,8 @@ import type { Nullable } from "../../types";
5
5
  import type { GreasedLineMeshOptions } from "../greasedLineMesh";
6
6
  import { GreasedLineMesh } from "../greasedLineMesh";
7
7
  import type { Scene } from "../../scene";
8
- import type { Color3 } from "../../Maths/math.color.js";
8
+ import type { Color3 } from "../../Maths/math.color";
9
+ import { GreasedLineSimpleMaterial } from "../../Materials/greasedLineSimpleMaterial";
9
10
  /**
10
11
  * How are the colors distributed along the color table
11
12
  * {@link https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/greased_line#colors-and-colordistribution}
@@ -102,7 +103,7 @@ export interface GreasedLineMeshBuilderOptions extends GreasedLineMeshOptions {
102
103
  * @param scene scene or null to use the last scene
103
104
  * @returns StandardMaterial or PBRMaterial with the @see GreasedLinePluginMaterial attached to it
104
105
  */
105
- export declare function CreateGreasedLineMaterial(name: string, options: GreasedLineMaterialOptions, scene: Nullable<Scene>): StandardMaterial | PBRMaterial;
106
+ export declare function CreateGreasedLineMaterial(name: string, options: GreasedLineMaterialOptions, scene: Nullable<Scene>): StandardMaterial | PBRMaterial | GreasedLineSimpleMaterial;
106
107
  /**
107
108
  * Creates a GreasedLine mesh
108
109
  * @param name name of the mesh