@babylonjs/core 7.24.0 → 7.25.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 (303) hide show
  1. package/Animations/animation.js +3 -3
  2. package/Animations/animation.js.map +1 -1
  3. package/Audio/sound.js +13 -6
  4. package/Audio/sound.js.map +1 -1
  5. package/Audio/weightedsound.js +6 -4
  6. package/Audio/weightedsound.js.map +1 -1
  7. package/Behaviors/Meshes/followBehavior.js +3 -3
  8. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  9. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +2 -2
  10. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  11. package/Compute/computeEffect.js +4 -4
  12. package/Compute/computeEffect.js.map +1 -1
  13. package/Engines/Extensions/engine.prefilteredCubeTexture.js +2 -3
  14. package/Engines/Extensions/engine.prefilteredCubeTexture.js.map +1 -1
  15. package/Engines/Processors/Expressions/shaderDefineExpression.js +1 -1
  16. package/Engines/Processors/Expressions/shaderDefineExpression.js.map +1 -1
  17. package/Engines/WebGPU/webgpuHardwareTexture.js +2 -2
  18. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  19. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +2 -2
  20. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  21. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +12 -10
  22. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  23. package/Engines/WebGPU/webgpuTextureHelper.js +2 -2
  24. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  25. package/Engines/abstractEngine.js +2 -2
  26. package/Engines/abstractEngine.js.map +1 -1
  27. package/Engines/engineCapabilities.d.ts +2 -0
  28. package/Engines/engineCapabilities.js.map +1 -1
  29. package/Engines/nativeEngine.js +3 -2
  30. package/Engines/nativeEngine.js.map +1 -1
  31. package/Engines/nullEngine.js +1 -0
  32. package/Engines/nullEngine.js.map +1 -1
  33. package/Engines/thinEngine.js +2 -0
  34. package/Engines/thinEngine.js.map +1 -1
  35. package/Engines/webgpuEngine.js +1 -0
  36. package/Engines/webgpuEngine.js.map +1 -1
  37. package/LensFlares/lensFlareSystem.js +2 -2
  38. package/LensFlares/lensFlareSystem.js.map +1 -1
  39. package/Loading/sceneLoader.js +3 -3
  40. package/Loading/sceneLoader.js.map +1 -1
  41. package/Materials/Node/Blocks/Dual/lightBlock.js +17 -8
  42. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  43. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +2 -2
  44. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  45. package/Materials/Node/Blocks/PBR/reflectionBlock.js +1 -2
  46. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  47. package/Materials/Node/Blocks/PBR/refractionBlock.js +1 -2
  48. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  49. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +2 -1
  50. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  51. package/Materials/Node/Blocks/colorMergerBlock.js +1 -1
  52. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  53. package/Materials/Node/Blocks/powBlock.js +1 -1
  54. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  55. package/Materials/Node/Blocks/vectorMergerBlock.js +1 -1
  56. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  57. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +3 -1
  58. package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
  59. package/Materials/PBR/pbrBaseMaterial.js +1 -2
  60. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  61. package/Materials/PBR/pbrSubSurfaceConfiguration.js +1 -2
  62. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  63. package/Materials/Textures/Filtering/hdrFiltering.d.ts +0 -2
  64. package/Materials/Textures/Filtering/hdrFiltering.js +12 -4
  65. package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
  66. package/Materials/Textures/Loaders/textureLoaderManager.d.ts +14 -1
  67. package/Materials/Textures/Loaders/textureLoaderManager.js +50 -21
  68. package/Materials/Textures/Loaders/textureLoaderManager.js.map +1 -1
  69. package/Materials/Textures/Procedurals/proceduralTexture.d.ts +15 -1
  70. package/Materials/Textures/Procedurals/proceduralTexture.js +24 -1
  71. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  72. package/Materials/Textures/index.d.ts +6 -0
  73. package/Materials/Textures/index.js +8 -0
  74. package/Materials/Textures/index.js.map +1 -1
  75. package/Materials/Textures/texture.js +2 -2
  76. package/Materials/Textures/texture.js.map +1 -1
  77. package/Materials/effect.functions.js +4 -4
  78. package/Materials/effect.functions.js.map +1 -1
  79. package/Maths/math.color.js +6 -7
  80. package/Maths/math.color.js.map +1 -1
  81. package/Maths/math.path.js +5 -5
  82. package/Maths/math.path.js.map +1 -1
  83. package/Maths/math.scalar.d.ts +33 -191
  84. package/Maths/math.scalar.functions.d.ts +147 -0
  85. package/Maths/math.scalar.functions.js +247 -0
  86. package/Maths/math.scalar.functions.js.map +1 -1
  87. package/Maths/math.scalar.js +15 -303
  88. package/Maths/math.scalar.js.map +1 -1
  89. package/Meshes/Builders/decalBuilder.js +3 -3
  90. package/Meshes/Builders/decalBuilder.js.map +1 -1
  91. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +8 -1
  92. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +30 -13
  93. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  94. package/Meshes/Node/Blocks/conditionBlock.js +2 -2
  95. package/Meshes/Node/Blocks/conditionBlock.js.map +1 -1
  96. package/Meshes/Node/Blocks/geometryOptimizeBlock.js +4 -4
  97. package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
  98. package/Meshes/Node/Blocks/noiseBlock.js +3 -3
  99. package/Meshes/Node/Blocks/noiseBlock.js.map +1 -1
  100. package/Meshes/geodesicMesh.js +3 -3
  101. package/Meshes/geodesicMesh.js.map +1 -1
  102. package/Meshes/trailMesh.js +4 -4
  103. package/Meshes/trailMesh.js.map +1 -1
  104. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +7 -7
  105. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  106. package/Misc/PerformanceViewer/performanceViewerCollector.js +2 -1
  107. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  108. package/Misc/basis.js +2 -3
  109. package/Misc/basis.js.map +1 -1
  110. package/Misc/dds.js +9 -9
  111. package/Misc/dds.js.map +1 -1
  112. package/Misc/dumpTools.js +2 -2
  113. package/Misc/dumpTools.js.map +1 -1
  114. package/Misc/environmentTextureTools.js +4 -4
  115. package/Misc/environmentTextureTools.js.map +1 -1
  116. package/Misc/reflector.js +3 -3
  117. package/Misc/reflector.js.map +1 -1
  118. package/Misc/screenshotTools.d.ts +2 -1
  119. package/Misc/screenshotTools.js +3 -2
  120. package/Misc/screenshotTools.js.map +1 -1
  121. package/Misc/tools.d.ts +6 -3
  122. package/Misc/tools.js +5 -3
  123. package/Misc/tools.js.map +1 -1
  124. package/Particles/EmitterTypes/coneParticleEmitter.js +10 -10
  125. package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
  126. package/Particles/EmitterTypes/cylinderParticleEmitter.js +9 -9
  127. package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
  128. package/Particles/EmitterTypes/hemisphericParticleEmitter.js +7 -7
  129. package/Particles/EmitterTypes/hemisphericParticleEmitter.js.map +1 -1
  130. package/Particles/EmitterTypes/meshParticleEmitter.js +4 -4
  131. package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
  132. package/Particles/EmitterTypes/pointParticleEmitter.js +4 -4
  133. package/Particles/EmitterTypes/pointParticleEmitter.js.map +1 -1
  134. package/Particles/EmitterTypes/sphereParticleEmitter.js +10 -10
  135. package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
  136. package/Particles/gpuParticleSystem.js +2 -2
  137. package/Particles/gpuParticleSystem.js.map +1 -1
  138. package/Particles/pointsCloudSystem.js +8 -8
  139. package/Particles/pointsCloudSystem.js.map +1 -1
  140. package/Physics/v1/Plugins/ammoJSPlugin.js +2 -2
  141. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  142. package/Physics/v2/physicsAggregate.js +2 -2
  143. package/Physics/v2/physicsAggregate.js.map +1 -1
  144. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +2 -2
  145. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
  146. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +2 -2
  147. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  148. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +4 -4
  149. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  150. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +2 -2
  151. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  152. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.d.ts +4 -0
  153. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +6 -0
  154. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  155. package/PostProcesses/postProcess.d.ts +4 -0
  156. package/PostProcesses/postProcess.js +1 -0
  157. package/PostProcesses/postProcess.js.map +1 -1
  158. package/Rendering/IBLShadows/iblShadowsAccumulationPass.d.ts +0 -2
  159. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js +46 -3
  160. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js.map +1 -1
  161. package/Rendering/IBLShadows/iblShadowsImportanceSamplingRenderer.d.ts +0 -5
  162. package/Rendering/IBLShadows/iblShadowsImportanceSamplingRenderer.js +33 -5
  163. package/Rendering/IBLShadows/iblShadowsImportanceSamplingRenderer.js.map +1 -1
  164. package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +8 -3
  165. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +56 -18
  166. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  167. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.d.ts +0 -2
  168. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js +20 -2
  169. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js.map +1 -1
  170. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +2 -14
  171. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +108 -36
  172. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  173. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +0 -2
  174. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +23 -11
  175. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  176. package/Rendering/depthPeelingRenderer.d.ts +7 -3
  177. package/Rendering/depthPeelingRenderer.js +38 -3
  178. package/Rendering/depthPeelingRenderer.js.map +1 -1
  179. package/Rendering/index.d.ts +44 -0
  180. package/Rendering/index.js +46 -0
  181. package/Rendering/index.js.map +1 -1
  182. package/Shaders/iblCombineVoxelGrids.fragment.d.ts +5 -0
  183. package/Shaders/{combineVoxelGrids.fragment.js → iblCombineVoxelGrids.fragment.js} +3 -3
  184. package/Shaders/iblCombineVoxelGrids.fragment.js.map +1 -0
  185. package/Shaders/iblGenerateVoxelMip.fragment.d.ts +5 -0
  186. package/Shaders/{generateVoxelMip.fragment.js → iblGenerateVoxelMip.fragment.js} +3 -3
  187. package/Shaders/iblGenerateVoxelMip.fragment.js.map +1 -0
  188. package/Shaders/iblShadowVoxelTracing.fragment.js +18 -10
  189. package/Shaders/iblShadowVoxelTracing.fragment.js.map +1 -1
  190. package/Shaders/iblShadowsImportanceSamplingDebug.fragment.js +2 -1
  191. package/Shaders/iblShadowsImportanceSamplingDebug.fragment.js.map +1 -1
  192. package/Shaders/{voxelGrid.fragment.d.ts → iblVoxelGrid.fragment.d.ts} +1 -1
  193. package/Shaders/{voxelGrid.fragment.js → iblVoxelGrid.fragment.js} +3 -3
  194. package/Shaders/iblVoxelGrid.fragment.js.map +1 -0
  195. package/Shaders/{voxelSlabDebug.fragment.d.ts → iblVoxelGrid.vertex.d.ts} +1 -1
  196. package/Shaders/{voxelGrid.vertex.js → iblVoxelGrid.vertex.js} +8 -4
  197. package/Shaders/iblVoxelGrid.vertex.js.map +1 -0
  198. package/Shaders/iblVoxelGrid2dArrayDebug.fragment.d.ts +5 -0
  199. package/Shaders/{voxelGrid2dArrayDebug.fragment.js → iblVoxelGrid2dArrayDebug.fragment.js} +3 -3
  200. package/Shaders/iblVoxelGrid2dArrayDebug.fragment.js.map +1 -0
  201. package/Shaders/iblVoxelGrid3dDebug.fragment.d.ts +5 -0
  202. package/Shaders/{voxelGrid3dDebug.fragment.js → iblVoxelGrid3dDebug.fragment.js} +3 -3
  203. package/Shaders/iblVoxelGrid3dDebug.fragment.js.map +1 -0
  204. package/Shaders/{combineVoxelGrids.fragment.d.ts → iblVoxelSlabDebug.fragment.d.ts} +1 -1
  205. package/Shaders/{voxelSlabDebug.fragment.js → iblVoxelSlabDebug.fragment.js} +3 -3
  206. package/Shaders/iblVoxelSlabDebug.fragment.js.map +1 -0
  207. package/Shaders/iblVoxelSlabDebug.vertex.d.ts +5 -0
  208. package/Shaders/{voxelSlabDebug.vertex.js → iblVoxelSlabDebug.vertex.js} +3 -3
  209. package/Shaders/iblVoxelSlabDebug.vertex.js.map +1 -0
  210. package/ShadersWGSL/ShadersInclude/lightFragment.js +7 -7
  211. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  212. package/ShadersWGSL/copyTexture3DLayerToTexture.fragment.d.ts +5 -0
  213. package/ShadersWGSL/copyTexture3DLayerToTexture.fragment.js +10 -0
  214. package/ShadersWGSL/copyTexture3DLayerToTexture.fragment.js.map +1 -0
  215. package/ShadersWGSL/default.fragment.js +4 -0
  216. package/ShadersWGSL/default.fragment.js.map +1 -1
  217. package/ShadersWGSL/hdrFiltering.fragment.d.ts +9 -0
  218. package/ShadersWGSL/hdrFiltering.fragment.js +18 -0
  219. package/ShadersWGSL/hdrFiltering.fragment.js.map +1 -0
  220. package/ShadersWGSL/hdrFiltering.vertex.d.ts +5 -0
  221. package/ShadersWGSL/hdrFiltering.vertex.js +16 -0
  222. package/ShadersWGSL/hdrFiltering.vertex.js.map +1 -0
  223. package/ShadersWGSL/iblCombineVoxelGrids.fragment.d.ts +5 -0
  224. package/ShadersWGSL/iblCombineVoxelGrids.fragment.js +10 -0
  225. package/ShadersWGSL/iblCombineVoxelGrids.fragment.js.map +1 -0
  226. package/ShadersWGSL/iblGenerateVoxelMip.fragment.d.ts +5 -0
  227. package/ShadersWGSL/iblGenerateVoxelMip.fragment.js +26 -0
  228. package/ShadersWGSL/iblGenerateVoxelMip.fragment.js.map +1 -0
  229. package/ShadersWGSL/iblShadowAccumulation.fragment.d.ts +5 -0
  230. package/ShadersWGSL/iblShadowAccumulation.fragment.js +24 -0
  231. package/ShadersWGSL/iblShadowAccumulation.fragment.js.map +1 -0
  232. package/ShadersWGSL/iblShadowDebug.fragment.d.ts +5 -0
  233. package/ShadersWGSL/iblShadowDebug.fragment.js +16 -0
  234. package/ShadersWGSL/iblShadowDebug.fragment.js.map +1 -0
  235. package/ShadersWGSL/iblShadowGBufferDebug.fragment.d.ts +5 -0
  236. package/ShadersWGSL/iblShadowGBufferDebug.fragment.js +17 -0
  237. package/ShadersWGSL/iblShadowGBufferDebug.fragment.js.map +1 -0
  238. package/ShadersWGSL/iblShadowSpatialBlur.fragment.d.ts +5 -0
  239. package/ShadersWGSL/iblShadowSpatialBlur.fragment.js +20 -0
  240. package/ShadersWGSL/iblShadowSpatialBlur.fragment.js.map +1 -0
  241. package/ShadersWGSL/iblShadowVoxelTracing.fragment.d.ts +5 -0
  242. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js +163 -0
  243. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js.map +1 -0
  244. package/ShadersWGSL/iblShadowsCdfx.fragment.d.ts +5 -0
  245. package/ShadersWGSL/iblShadowsCdfx.fragment.js +12 -0
  246. package/ShadersWGSL/iblShadowsCdfx.fragment.js.map +1 -0
  247. package/ShadersWGSL/iblShadowsCdfy.fragment.d.ts +5 -0
  248. package/ShadersWGSL/iblShadowsCdfy.fragment.js +33 -0
  249. package/ShadersWGSL/iblShadowsCdfy.fragment.js.map +1 -0
  250. package/ShadersWGSL/iblShadowsCombine.fragment.d.ts +5 -0
  251. package/ShadersWGSL/iblShadowsCombine.fragment.js +10 -0
  252. package/ShadersWGSL/iblShadowsCombine.fragment.js.map +1 -0
  253. package/ShadersWGSL/iblShadowsIcdfx.fragment.d.ts +5 -0
  254. package/ShadersWGSL/iblShadowsIcdfx.fragment.js +18 -0
  255. package/ShadersWGSL/iblShadowsIcdfx.fragment.js.map +1 -0
  256. package/ShadersWGSL/iblShadowsIcdfy.fragment.d.ts +5 -0
  257. package/ShadersWGSL/iblShadowsIcdfy.fragment.js +17 -0
  258. package/ShadersWGSL/iblShadowsIcdfy.fragment.js.map +1 -0
  259. package/ShadersWGSL/iblShadowsImportanceSamplingDebug.fragment.d.ts +5 -0
  260. package/ShadersWGSL/iblShadowsImportanceSamplingDebug.fragment.js +41 -0
  261. package/ShadersWGSL/iblShadowsImportanceSamplingDebug.fragment.js.map +1 -0
  262. package/{Shaders/voxelGrid3dDebug.fragment.d.ts → ShadersWGSL/iblVoxelGrid.fragment.d.ts} +1 -1
  263. package/ShadersWGSL/iblVoxelGrid.fragment.js +15 -0
  264. package/ShadersWGSL/iblVoxelGrid.fragment.js.map +1 -0
  265. package/ShadersWGSL/iblVoxelGrid.vertex.d.ts +5 -0
  266. package/ShadersWGSL/iblVoxelGrid.vertex.js +14 -0
  267. package/ShadersWGSL/iblVoxelGrid.vertex.js.map +1 -0
  268. package/ShadersWGSL/iblVoxelGrid2dArrayDebug.fragment.d.ts +5 -0
  269. package/ShadersWGSL/iblVoxelGrid2dArrayDebug.fragment.js +10 -0
  270. package/ShadersWGSL/iblVoxelGrid2dArrayDebug.fragment.js.map +1 -0
  271. package/ShadersWGSL/iblVoxelGrid3dDebug.fragment.d.ts +5 -0
  272. package/ShadersWGSL/iblVoxelGrid3dDebug.fragment.js +22 -0
  273. package/ShadersWGSL/iblVoxelGrid3dDebug.fragment.js.map +1 -0
  274. package/ShadersWGSL/iblVoxelSlabDebug.fragment.d.ts +5 -0
  275. package/ShadersWGSL/iblVoxelSlabDebug.fragment.js +12 -0
  276. package/ShadersWGSL/iblVoxelSlabDebug.fragment.js.map +1 -0
  277. package/ShadersWGSL/iblVoxelSlabDebug.vertex.d.ts +5 -0
  278. package/ShadersWGSL/iblVoxelSlabDebug.vertex.js +10 -0
  279. package/ShadersWGSL/iblVoxelSlabDebug.vertex.js.map +1 -0
  280. package/{Shaders/generateVoxelMip.fragment.d.ts → ShadersWGSL/oitBackBlend.fragment.d.ts} +1 -1
  281. package/ShadersWGSL/oitBackBlend.fragment.js +11 -0
  282. package/ShadersWGSL/oitBackBlend.fragment.js.map +1 -0
  283. package/{Shaders/voxelGrid.vertex.d.ts → ShadersWGSL/oitFinal.fragment.d.ts} +1 -1
  284. package/ShadersWGSL/oitFinal.fragment.js +14 -0
  285. package/ShadersWGSL/oitFinal.fragment.js.map +1 -0
  286. package/ShadersWGSL/pbr.fragment.js +17 -8
  287. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  288. package/{Shaders/voxelSlabDebug.vertex.d.ts → ShadersWGSL/procedural.vertex.d.ts} +1 -1
  289. package/ShadersWGSL/procedural.vertex.js +16 -0
  290. package/ShadersWGSL/procedural.vertex.js.map +1 -0
  291. package/XR/features/WebXRHandTracking.d.ts +5 -0
  292. package/XR/features/WebXRHandTracking.js +34 -12
  293. package/XR/features/WebXRHandTracking.js.map +1 -1
  294. package/package.json +2 -2
  295. package/Shaders/combineVoxelGrids.fragment.js.map +0 -1
  296. package/Shaders/generateVoxelMip.fragment.js.map +0 -1
  297. package/Shaders/voxelGrid.fragment.js.map +0 -1
  298. package/Shaders/voxelGrid.vertex.js.map +0 -1
  299. package/Shaders/voxelGrid2dArrayDebug.fragment.d.ts +0 -5
  300. package/Shaders/voxelGrid2dArrayDebug.fragment.js.map +0 -1
  301. package/Shaders/voxelGrid3dDebug.fragment.js.map +0 -1
  302. package/Shaders/voxelSlabDebug.fragment.js.map +0 -1
  303. package/Shaders/voxelSlabDebug.vertex.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"math.scalar.functions.js","sourceRoot":"","sources":["../../../../dev/core/src/Maths/math.scalar.functions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,CAAS,EAAE,UAAkB,YAAY;IAC9E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,GAAW;IAChD,IAAI,GAAG,KAAK,GAAG,EAAE;QACb,OAAO,GAAG,CAAC;KACd;IACD,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,IAAI,CAAC,KAAa,EAAE,GAAW,EAAE,MAAc;IAC3D,OAAO,KAAK,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;AAC1C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;IACjD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC1C,sDAAsD;IACtD,+BAA+B;IAC/B,+CAA+C;IAE/C,wBAAwB;IACxB,wBAAwB;IACxB,GAAG;IAEH,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAErE,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,CAAS;IAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE3B,IAAI,CAAC,IAAI,EAAE,EAAE;QACT,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;KACpC;IAED,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC7B,CAAC","sourcesContent":["/**\r\n * Extract int value\r\n * @param value number value\r\n * @returns int value\r\n */\r\nexport function ExtractAsInt(value: number) {\r\n return parseInt(value.toString().replace(/\\W/g, \"\"));\r\n}\r\n\r\n/**\r\n * Boolean : true if the absolute difference between a and b is lower than epsilon (default = 1.401298E-45)\r\n * @param a number\r\n * @param b number\r\n * @param epsilon (default = 1.401298E-45)\r\n * @returns true if the absolute difference between a and b is lower than epsilon (default = 1.401298E-45)\r\n */\r\nexport function WithinEpsilon(a: number, b: number, epsilon: number = 1.401298e-45): boolean {\r\n return Math.abs(a - b) <= epsilon;\r\n}\r\n\r\n/**\r\n * Returns a random float number between and min and max values\r\n * @param min min value of random\r\n * @param max max value of random\r\n * @returns random value\r\n */\r\nexport function RandomRange(min: number, max: number): number {\r\n if (min === max) {\r\n return min;\r\n }\r\n return Math.random() * (max - min) + min;\r\n}\r\n\r\n/**\r\n * Creates a new scalar with values linearly interpolated of \"amount\" between the start scalar and the end scalar.\r\n * @param start start value\r\n * @param end target value\r\n * @param amount amount to lerp between\r\n * @returns the lerped value\r\n */\r\nexport function Lerp(start: number, end: number, amount: number): number {\r\n return start + (end - start) * amount;\r\n}\r\n\r\n/**\r\n * Returns the value itself if it's between min and max.\r\n * Returns min if the value is lower than min.\r\n * Returns max if the value is greater than max.\r\n * @param value the value to clmap\r\n * @param min the min value to clamp to (default: 0)\r\n * @param max the max value to clamp to (default: 1)\r\n * @returns the clamped value\r\n */\r\nexport function Clamp(value: number, min = 0, max = 1): number {\r\n return Math.min(max, Math.max(min, value));\r\n}\r\n\r\n/**\r\n * Returns the angle converted to equivalent value between -Math.PI and Math.PI radians.\r\n * @param angle The angle to normalize in radian.\r\n * @returns The converted angle.\r\n */\r\nexport function NormalizeRadians(angle: number): number {\r\n // More precise but slower version kept for reference.\r\n // angle = angle % Tools.TwoPi;\r\n // angle = (angle + Tools.TwoPi) % Tools.TwoPi;\r\n\r\n //if (angle > Math.PI) {\r\n //\tangle -= Tools.TwoPi;\r\n //}\r\n\r\n angle -= Math.PI * 2 * Math.floor((angle + Math.PI) / (Math.PI * 2));\r\n\r\n return angle;\r\n}\r\n\r\n/**\r\n * Returns a string : the upper case translation of the number i to hexadecimal.\r\n * @param i number\r\n * @returns the upper case translation of the number i to hexadecimal.\r\n */\r\nexport function ToHex(i: number): string {\r\n const str = i.toString(16);\r\n\r\n if (i <= 15) {\r\n return (\"0\" + str).toUpperCase();\r\n }\r\n\r\n return str.toUpperCase();\r\n}\r\n"]}
1
+ {"version":3,"file":"math.scalar.functions.js","sourceRoot":"","sources":["../../../../dev/core/src/Maths/math.scalar.functions.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Extract int value\r\n * @param value number value\r\n * @returns int value\r\n */\r\nexport function ExtractAsInt(value: number) {\r\n return parseInt(value.toString().replace(/\\W/g, \"\"));\r\n}\r\n\r\n/**\r\n * Boolean : true if the absolute difference between a and b is lower than epsilon (default = 1.401298E-45)\r\n * @param a number\r\n * @param b number\r\n * @param epsilon (default = 1.401298E-45)\r\n * @returns true if the absolute difference between a and b is lower than epsilon (default = 1.401298E-45)\r\n */\r\nexport function WithinEpsilon(a: number, b: number, epsilon: number = 1.401298e-45): boolean {\r\n return Math.abs(a - b) <= epsilon;\r\n}\r\n\r\n/**\r\n * Returns a random float number between and min and max values\r\n * @param min min value of random\r\n * @param max max value of random\r\n * @returns random value\r\n */\r\nexport function RandomRange(min: number, max: number): number {\r\n if (min === max) {\r\n return min;\r\n }\r\n return Math.random() * (max - min) + min;\r\n}\r\n\r\n/**\r\n * Creates a new scalar with values linearly interpolated of \"amount\" between the start scalar and the end scalar.\r\n * @param start start value\r\n * @param end target value\r\n * @param amount amount to lerp between\r\n * @returns the lerped value\r\n */\r\nexport function Lerp(start: number, end: number, amount: number): number {\r\n return start + (end - start) * amount;\r\n}\r\n\r\n/**\r\n * Same as Lerp but makes sure the values interpolate correctly when they wrap around 360 degrees.\r\n * The parameter t is clamped to the range [0, 1]. Variables a and b are assumed to be in degrees.\r\n * @param start start value\r\n * @param end target value\r\n * @param amount amount to lerp between\r\n * @returns the lerped value\r\n */\r\nexport function LerpAngle(start: number, end: number, amount: number): number {\r\n let num: number = Repeat(end - start, 360.0);\r\n if (num > 180.0) {\r\n num -= 360.0;\r\n }\r\n return start + num * Clamp(amount);\r\n}\r\n\r\n/**\r\n * Calculates the linear parameter t that produces the interpolant value within the range [a, b].\r\n * @param a start value\r\n * @param b target value\r\n * @param value value between a and b\r\n * @returns the inverseLerp value\r\n */\r\nexport function InverseLerp(a: number, b: number, value: number): number {\r\n let result: number = 0;\r\n if (a != b) {\r\n result = Clamp((value - a) / (b - a));\r\n } else {\r\n result = 0.0;\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * Returns a new scalar located for \"amount\" (float) on the Hermite spline defined by the scalars \"value1\", \"value3\", \"tangent1\", \"tangent2\".\r\n * @see http://mathworld.wolfram.com/HermitePolynomial.html\r\n * @param value1 defines the first control point\r\n * @param tangent1 defines the first tangent\r\n * @param value2 defines the second control point\r\n * @param tangent2 defines the second tangent\r\n * @param amount defines the amount on the interpolation spline (between 0 and 1)\r\n * @returns hermite result\r\n */\r\nexport function Hermite(value1: number, tangent1: number, value2: number, tangent2: number, amount: number): number {\r\n const squared = amount * amount;\r\n const cubed = amount * squared;\r\n const part1 = 2.0 * cubed - 3.0 * squared + 1.0;\r\n const part2 = -2.0 * cubed + 3.0 * squared;\r\n const part3 = cubed - 2.0 * squared + amount;\r\n const part4 = cubed - squared;\r\n\r\n return value1 * part1 + value2 * part2 + tangent1 * part3 + tangent2 * part4;\r\n}\r\n\r\n/**\r\n * Returns a new scalar which is the 1st derivative of the Hermite spline defined by the scalars \"value1\", \"value2\", \"tangent1\", \"tangent2\".\r\n * @param value1 defines the first control point\r\n * @param tangent1 defines the first tangent\r\n * @param value2 defines the second control point\r\n * @param tangent2 defines the second tangent\r\n * @param time define where the derivative must be done\r\n * @returns 1st derivative\r\n */\r\nexport function Hermite1stDerivative(value1: number, tangent1: number, value2: number, tangent2: number, time: number): number {\r\n const t2 = time * time;\r\n return (t2 - time) * 6 * value1 + (3 * t2 - 4 * time + 1) * tangent1 + (-t2 + time) * 6 * value2 + (3 * t2 - 2 * time) * tangent2;\r\n}\r\n\r\n/**\r\n * Returns the value itself if it's between min and max.\r\n * Returns min if the value is lower than min.\r\n * Returns max if the value is greater than max.\r\n * @param value the value to clmap\r\n * @param min the min value to clamp to (default: 0)\r\n * @param max the max value to clamp to (default: 1)\r\n * @returns the clamped value\r\n */\r\nexport function Clamp(value: number, min = 0, max = 1): number {\r\n return Math.min(max, Math.max(min, value));\r\n}\r\n\r\n/**\r\n * Returns the angle converted to equivalent value between -Math.PI and Math.PI radians.\r\n * @param angle The angle to normalize in radian.\r\n * @returns The converted angle.\r\n */\r\nexport function NormalizeRadians(angle: number): number {\r\n // More precise but slower version kept for reference.\r\n // angle = angle % Tools.TwoPi;\r\n // angle = (angle + Tools.TwoPi) % Tools.TwoPi;\r\n\r\n //if (angle > Math.PI) {\r\n //\tangle -= Tools.TwoPi;\r\n //}\r\n\r\n angle -= Math.PI * 2 * Math.floor((angle + Math.PI) / (Math.PI * 2));\r\n\r\n return angle;\r\n}\r\n\r\n/**\r\n * Returns a string : the upper case translation of the number i to hexadecimal.\r\n * @param i number\r\n * @returns the upper case translation of the number i to hexadecimal.\r\n */\r\nexport function ToHex(i: number): string {\r\n const str = i.toString(16);\r\n\r\n if (i <= 15) {\r\n return (\"0\" + str).toUpperCase();\r\n }\r\n\r\n return str.toUpperCase();\r\n}\r\n\r\n/**\r\n * the floor part of a log2 value.\r\n * @param value the value to compute log2 of\r\n * @returns the log2 of value.\r\n */\r\nexport function ILog2(value: number): number {\r\n if (Math.log2) {\r\n return Math.floor(Math.log2(value));\r\n }\r\n\r\n if (value < 0) {\r\n return NaN;\r\n } else if (value === 0) {\r\n return -Infinity;\r\n }\r\n\r\n let n = 0;\r\n if (value < 1) {\r\n while (value < 1) {\r\n n++;\r\n value = value * 2;\r\n }\r\n n = -n;\r\n } else if (value > 1) {\r\n while (value > 1) {\r\n n++;\r\n value = Math.floor(value / 2);\r\n }\r\n }\r\n\r\n return n;\r\n}\r\n\r\n/**\r\n * Loops the value, so that it is never larger than length and never smaller than 0.\r\n *\r\n * This is similar to the modulo operator but it works with floating point numbers.\r\n * For example, using 3.0 for t and 2.5 for length, the result would be 0.5.\r\n * With t = 5 and length = 2.5, the result would be 0.0.\r\n * Note, however, that the behaviour is not defined for negative numbers as it is for the modulo operator\r\n * @param value the value\r\n * @param length the length\r\n * @returns the looped value\r\n */\r\nexport function Repeat(value: number, length: number): number {\r\n return value - Math.floor(value / length) * length;\r\n}\r\n\r\n/**\r\n * Normalize the value between 0.0 and 1.0 using min and max values\r\n * @param value value to normalize\r\n * @param min max to normalize between\r\n * @param max min to normalize between\r\n * @returns the normalized value\r\n */\r\nexport function Normalize(value: number, min: number, max: number): number {\r\n return (value - min) / (max - min);\r\n}\r\n\r\n/**\r\n * Denormalize the value from 0.0 and 1.0 using min and max values\r\n * @param normalized value to denormalize\r\n * @param min max to denormalize between\r\n * @param max min to denormalize between\r\n * @returns the denormalized value\r\n */\r\nexport function Denormalize(normalized: number, min: number, max: number): number {\r\n return normalized * (max - min) + min;\r\n}\r\n\r\n/**\r\n * Calculates the shortest difference between two given angles given in degrees.\r\n * @param current current angle in degrees\r\n * @param target target angle in degrees\r\n * @returns the delta\r\n */\r\nexport function DeltaAngle(current: number, target: number): number {\r\n let num: number = Repeat(target - current, 360.0);\r\n if (num > 180.0) {\r\n num -= 360.0;\r\n }\r\n return num;\r\n}\r\n\r\n/**\r\n * PingPongs the value t, so that it is never larger than length and never smaller than 0.\r\n * @param tx value\r\n * @param length length\r\n * @returns The returned value will move back and forth between 0 and length\r\n */\r\nexport function PingPong(tx: number, length: number): number {\r\n const t: number = Repeat(tx, length * 2.0);\r\n return length - Math.abs(t - length);\r\n}\r\n\r\n/**\r\n * Interpolates between min and max with smoothing at the limits.\r\n *\r\n * This function interpolates between min and max in a similar way to Lerp. However, the interpolation will gradually speed up\r\n * from the start and slow down toward the end. This is useful for creating natural-looking animation, fading and other transitions.\r\n * @param from from\r\n * @param to to\r\n * @param tx value\r\n * @returns the smooth stepped value\r\n */\r\nexport function SmoothStep(from: number, to: number, tx: number): number {\r\n let t: number = Clamp(tx);\r\n t = -2.0 * t * t * t + 3.0 * t * t;\r\n return to * t + from * (1.0 - t);\r\n}\r\n\r\n/**\r\n * Moves a value current towards target.\r\n *\r\n * This is essentially the same as Mathf.Lerp but instead the function will ensure that the speed never exceeds maxDelta.\r\n * Negative values of maxDelta pushes the value away from target.\r\n * @param current current value\r\n * @param target target value\r\n * @param maxDelta max distance to move\r\n * @returns resulting value\r\n */\r\nexport function MoveTowards(current: number, target: number, maxDelta: number): number {\r\n let result: number = 0;\r\n if (Math.abs(target - current) <= maxDelta) {\r\n result = target;\r\n } else {\r\n result = current + Math.sign(target - current) * maxDelta;\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * Same as MoveTowards but makes sure the values interpolate correctly when they wrap around 360 degrees.\r\n *\r\n * Variables current and target are assumed to be in degrees. For optimization reasons, negative values of maxDelta\r\n * are not supported and may cause oscillation. To push current away from a target angle, add 180 to that angle instead.\r\n * @param current current value\r\n * @param target target value\r\n * @param maxDelta max distance to move\r\n * @returns resulting angle\r\n */\r\nexport function MoveTowardsAngle(current: number, target: number, maxDelta: number): number {\r\n const num: number = DeltaAngle(current, target);\r\n let result: number = 0;\r\n if (-maxDelta < num && num < maxDelta) {\r\n result = target;\r\n } else {\r\n target = current + num;\r\n result = MoveTowards(current, target, maxDelta);\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * This function returns percentage of a number in a given range.\r\n *\r\n * RangeToPercent(40,20,60) will return 0.5 (50%)\r\n * RangeToPercent(34,0,100) will return 0.34 (34%)\r\n * @param number to convert to percentage\r\n * @param min min range\r\n * @param max max range\r\n * @returns the percentage\r\n */\r\nexport function RangeToPercent(number: number, min: number, max: number): number {\r\n return (number - min) / (max - min);\r\n}\r\n\r\n/**\r\n * This function returns number that corresponds to the percentage in a given range.\r\n *\r\n * PercentToRange(0.34,0,100) will return 34.\r\n * @param percent to convert to number\r\n * @param min min range\r\n * @param max max range\r\n * @returns the number\r\n */\r\nexport function PercentToRange(percent: number, min: number, max: number): number {\r\n return (max - min) * percent + min;\r\n}\r\n\r\n/**\r\n * Returns the highest common factor of two integers.\r\n * @param a first parameter\r\n * @param b second parameter\r\n * @returns HCF of a and b\r\n */\r\nexport function HighestCommonFactor(a: number, b: number): number {\r\n const r: number = a % b;\r\n if (r === 0) {\r\n return b;\r\n }\r\n return HighestCommonFactor(b, r);\r\n}\r\n"]}
@@ -1,323 +1,35 @@
1
- import { Clamp, Lerp, NormalizeRadians, RandomRange, ToHex, WithinEpsilon } from "./math.scalar.functions.js";
1
+ import * as functions from "./math.scalar.functions.js";
2
+ const HCF = functions.HighestCommonFactor;
2
3
  /**
3
4
  * Scalar computation library
5
+ * @deprecated Please use the scalar functions
4
6
  */
5
- export class Scalar {
7
+ /* eslint-disable @typescript-eslint/naming-convention */
8
+ export const Scalar = {
9
+ ...functions,
10
+ /**
11
+ * Two pi constants convenient for computation.
12
+ */
13
+ TwoPi: Math.PI * 2,
6
14
  /**
7
15
  * Returns -1 if value is negative and +1 is value is positive.
8
16
  * @param value the value
9
17
  * @returns the value itself if it's equal to zero.
10
18
  */
11
- static Sign(value) {
12
- value = +value; // convert to a number
13
- if (value === 0 || isNaN(value)) {
14
- return value;
15
- }
16
- return value > 0 ? 1 : -1;
17
- }
19
+ Sign: Math.sign,
18
20
  /**
19
21
  * the log2 of value.
20
22
  * @param value the value to compute log2 of
21
23
  * @returns the log2 of value.
22
24
  */
23
- static Log2(value) {
24
- return Math.log(value) * Math.LOG2E;
25
- }
26
- /**
27
- * the floor part of a log2 value.
28
- * @param value the value to compute log2 of
29
- * @returns the log2 of value.
30
- */
31
- static ILog2(value) {
32
- if (Math.log2) {
33
- return Math.floor(Math.log2(value));
34
- }
35
- if (value < 0) {
36
- return NaN;
37
- }
38
- else if (value === 0) {
39
- return -Infinity;
40
- }
41
- let n = 0;
42
- if (value < 1) {
43
- while (value < 1) {
44
- n++;
45
- value = value * 2;
46
- }
47
- n = -n;
48
- }
49
- else if (value > 1) {
50
- while (value > 1) {
51
- n++;
52
- value = Math.floor(value / 2);
53
- }
54
- }
55
- return n;
56
- }
57
- /**
58
- * Loops the value, so that it is never larger than length and never smaller than 0.
59
- *
60
- * This is similar to the modulo operator but it works with floating point numbers.
61
- * For example, using 3.0 for t and 2.5 for length, the result would be 0.5.
62
- * With t = 5 and length = 2.5, the result would be 0.0.
63
- * Note, however, that the behaviour is not defined for negative numbers as it is for the modulo operator
64
- * @param value the value
65
- * @param length the length
66
- * @returns the looped value
67
- */
68
- static Repeat(value, length) {
69
- return value - Math.floor(value / length) * length;
70
- }
71
- /**
72
- * Normalize the value between 0.0 and 1.0 using min and max values
73
- * @param value value to normalize
74
- * @param min max to normalize between
75
- * @param max min to normalize between
76
- * @returns the normalized value
77
- */
78
- static Normalize(value, min, max) {
79
- return (value - min) / (max - min);
80
- }
81
- /**
82
- * Denormalize the value from 0.0 and 1.0 using min and max values
83
- * @param normalized value to denormalize
84
- * @param min max to denormalize between
85
- * @param max min to denormalize between
86
- * @returns the denormalized value
87
- */
88
- static Denormalize(normalized, min, max) {
89
- return normalized * (max - min) + min;
90
- }
91
- /**
92
- * Calculates the shortest difference between two given angles given in degrees.
93
- * @param current current angle in degrees
94
- * @param target target angle in degrees
95
- * @returns the delta
96
- */
97
- static DeltaAngle(current, target) {
98
- let num = Scalar.Repeat(target - current, 360.0);
99
- if (num > 180.0) {
100
- num -= 360.0;
101
- }
102
- return num;
103
- }
104
- /**
105
- * PingPongs the value t, so that it is never larger than length and never smaller than 0.
106
- * @param tx value
107
- * @param length length
108
- * @returns The returned value will move back and forth between 0 and length
109
- */
110
- static PingPong(tx, length) {
111
- const t = Scalar.Repeat(tx, length * 2.0);
112
- return length - Math.abs(t - length);
113
- }
114
- /**
115
- * Interpolates between min and max with smoothing at the limits.
116
- *
117
- * This function interpolates between min and max in a similar way to Lerp. However, the interpolation will gradually speed up
118
- * from the start and slow down toward the end. This is useful for creating natural-looking animation, fading and other transitions.
119
- * @param from from
120
- * @param to to
121
- * @param tx value
122
- * @returns the smooth stepped value
123
- */
124
- static SmoothStep(from, to, tx) {
125
- let t = Scalar.Clamp(tx);
126
- t = -2.0 * t * t * t + 3.0 * t * t;
127
- return to * t + from * (1.0 - t);
128
- }
129
- /**
130
- * Moves a value current towards target.
131
- *
132
- * This is essentially the same as Mathf.Lerp but instead the function will ensure that the speed never exceeds maxDelta.
133
- * Negative values of maxDelta pushes the value away from target.
134
- * @param current current value
135
- * @param target target value
136
- * @param maxDelta max distance to move
137
- * @returns resulting value
138
- */
139
- static MoveTowards(current, target, maxDelta) {
140
- let result = 0;
141
- if (Math.abs(target - current) <= maxDelta) {
142
- result = target;
143
- }
144
- else {
145
- result = current + Scalar.Sign(target - current) * maxDelta;
146
- }
147
- return result;
148
- }
149
- /**
150
- * Same as MoveTowards but makes sure the values interpolate correctly when they wrap around 360 degrees.
151
- *
152
- * Variables current and target are assumed to be in degrees. For optimization reasons, negative values of maxDelta
153
- * are not supported and may cause oscillation. To push current away from a target angle, add 180 to that angle instead.
154
- * @param current current value
155
- * @param target target value
156
- * @param maxDelta max distance to move
157
- * @returns resulting angle
158
- */
159
- static MoveTowardsAngle(current, target, maxDelta) {
160
- const num = Scalar.DeltaAngle(current, target);
161
- let result = 0;
162
- if (-maxDelta < num && num < maxDelta) {
163
- result = target;
164
- }
165
- else {
166
- target = current + num;
167
- result = Scalar.MoveTowards(current, target, maxDelta);
168
- }
169
- return result;
170
- }
171
- /**
172
- * Same as Lerp but makes sure the values interpolate correctly when they wrap around 360 degrees.
173
- * The parameter t is clamped to the range [0, 1]. Variables a and b are assumed to be in degrees.
174
- * @param start start value
175
- * @param end target value
176
- * @param amount amount to lerp between
177
- * @returns the lerped value
178
- */
179
- static LerpAngle(start, end, amount) {
180
- let num = Scalar.Repeat(end - start, 360.0);
181
- if (num > 180.0) {
182
- num -= 360.0;
183
- }
184
- return start + num * Clamp(amount);
185
- }
186
- /**
187
- * Calculates the linear parameter t that produces the interpolant value within the range [a, b].
188
- * @param a start value
189
- * @param b target value
190
- * @param value value between a and b
191
- * @returns the inverseLerp value
192
- */
193
- static InverseLerp(a, b, value) {
194
- let result = 0;
195
- if (a != b) {
196
- result = Clamp((value - a) / (b - a));
197
- }
198
- else {
199
- result = 0.0;
200
- }
201
- return result;
202
- }
203
- /**
204
- * Returns a new scalar located for "amount" (float) on the Hermite spline defined by the scalars "value1", "value3", "tangent1", "tangent2".
205
- * @see http://mathworld.wolfram.com/HermitePolynomial.html
206
- * @param value1 defines the first control point
207
- * @param tangent1 defines the first tangent
208
- * @param value2 defines the second control point
209
- * @param tangent2 defines the second tangent
210
- * @param amount defines the amount on the interpolation spline (between 0 and 1)
211
- * @returns hermite result
212
- */
213
- static Hermite(value1, tangent1, value2, tangent2, amount) {
214
- const squared = amount * amount;
215
- const cubed = amount * squared;
216
- const part1 = 2.0 * cubed - 3.0 * squared + 1.0;
217
- const part2 = -2.0 * cubed + 3.0 * squared;
218
- const part3 = cubed - 2.0 * squared + amount;
219
- const part4 = cubed - squared;
220
- return value1 * part1 + value2 * part2 + tangent1 * part3 + tangent2 * part4;
221
- }
222
- /**
223
- * Returns a new scalar which is the 1st derivative of the Hermite spline defined by the scalars "value1", "value2", "tangent1", "tangent2".
224
- * @param value1 defines the first control point
225
- * @param tangent1 defines the first tangent
226
- * @param value2 defines the second control point
227
- * @param tangent2 defines the second tangent
228
- * @param time define where the derivative must be done
229
- * @returns 1st derivative
230
- */
231
- static Hermite1stDerivative(value1, tangent1, value2, tangent2, time) {
232
- const t2 = time * time;
233
- return (t2 - time) * 6 * value1 + (3 * t2 - 4 * time + 1) * tangent1 + (-t2 + time) * 6 * value2 + (3 * t2 - 2 * time) * tangent2;
234
- }
235
- /**
236
- * This function returns percentage of a number in a given range.
237
- *
238
- * RangeToPercent(40,20,60) will return 0.5 (50%)
239
- * RangeToPercent(34,0,100) will return 0.34 (34%)
240
- * @param number to convert to percentage
241
- * @param min min range
242
- * @param max max range
243
- * @returns the percentage
244
- */
245
- static RangeToPercent(number, min, max) {
246
- return (number - min) / (max - min);
247
- }
248
- /**
249
- * This function returns number that corresponds to the percentage in a given range.
250
- *
251
- * PercentToRange(0.34,0,100) will return 34.
252
- * @param percent to convert to number
253
- * @param min min range
254
- * @param max max range
255
- * @returns the number
256
- */
257
- static PercentToRange(percent, min, max) {
258
- return (max - min) * percent + min;
259
- }
25
+ Log2: Math.log2,
260
26
  /**
261
27
  * Returns the highest common factor of two integers.
262
28
  * @param a first parameter
263
29
  * @param b second parameter
264
30
  * @returns HCF of a and b
265
31
  */
266
- static HCF(a, b) {
267
- const r = a % b;
268
- if (r === 0) {
269
- return b;
270
- }
271
- return Scalar.HCF(b, r);
272
- }
273
- }
274
- /**
275
- * Two pi constants convenient for computation.
276
- */
277
- Scalar.TwoPi = Math.PI * 2;
278
- /**
279
- * Boolean : true if the absolute difference between a and b is lower than epsilon (default = 1.401298E-45)
280
- * @param a number
281
- * @param b number
282
- * @param epsilon (default = 1.401298E-45)
283
- * @returns true if the absolute difference between a and b is lower than epsilon (default = 1.401298E-45)
284
- */
285
- Scalar.WithinEpsilon = WithinEpsilon;
286
- /**
287
- * Returns a string : the upper case translation of the number i to hexadecimal.
288
- * @param i number
289
- * @returns the upper case translation of the number i to hexadecimal.
290
- */
291
- Scalar.ToHex = ToHex;
292
- /**
293
- * Returns the value itself if it's between min and max.
294
- * Returns min if the value is lower than min.
295
- * Returns max if the value is greater than max.
296
- * @param value the value to clmap
297
- * @param min the min value to clamp to (default: 0)
298
- * @param max the max value to clamp to (default: 1)
299
- * @returns the clamped value
300
- */
301
- Scalar.Clamp = Clamp;
302
- /**
303
- * Creates a new scalar with values linearly interpolated of "amount" between the start scalar and the end scalar.
304
- * @param start start value
305
- * @param end target value
306
- * @param amount amount to lerp between
307
- * @returns the lerped value
308
- */
309
- Scalar.Lerp = Lerp;
310
- /**
311
- * Returns a random float number between and min and max values
312
- * @param min min value of random
313
- * @param max max value of random
314
- * @returns random value
315
- */
316
- Scalar.RandomRange = RandomRange;
317
- /**
318
- * Returns the angle converted to equivalent value between -Math.PI and Math.PI radians.
319
- * @param angle The angle to normalize in radian.
320
- * @returns The converted angle.
321
- */
322
- Scalar.NormalizeRadians = NormalizeRadians;
32
+ HCF,
33
+ };
34
+ /* eslint-enable @typescript-eslint/naming-convention */
323
35
  //# sourceMappingURL=math.scalar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"math.scalar.js","sourceRoot":"","sources":["../../../../dev/core/src/Maths/math.scalar.ts"],"names":[],"mappings":"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","sourcesContent":["import { Clamp, Lerp, NormalizeRadians, RandomRange, ToHex, WithinEpsilon } from \"./math.scalar.functions\";\r\n\r\n/**\r\n * Scalar computation library\r\n */\r\nexport class Scalar {\r\n /**\r\n * Two pi constants convenient for computation.\r\n */\r\n public static TwoPi: number = Math.PI * 2;\r\n\r\n /**\r\n * Boolean : true if the absolute difference between a and b is lower than epsilon (default = 1.401298E-45)\r\n * @param a number\r\n * @param b number\r\n * @param epsilon (default = 1.401298E-45)\r\n * @returns true if the absolute difference between a and b is lower than epsilon (default = 1.401298E-45)\r\n */\r\n public static WithinEpsilon: (a: number, b: number, epsilon?: number) => boolean = WithinEpsilon;\r\n\r\n /**\r\n * Returns a string : the upper case translation of the number i to hexadecimal.\r\n * @param i number\r\n * @returns the upper case translation of the number i to hexadecimal.\r\n */\r\n public static ToHex: (i: number) => string = ToHex;\r\n\r\n /**\r\n * Returns -1 if value is negative and +1 is value is positive.\r\n * @param value the value\r\n * @returns the value itself if it's equal to zero.\r\n */\r\n public static Sign(value: number): number {\r\n value = +value; // convert to a number\r\n\r\n if (value === 0 || isNaN(value)) {\r\n return value;\r\n }\r\n\r\n return value > 0 ? 1 : -1;\r\n }\r\n\r\n /**\r\n * Returns the value itself if it's between min and max.\r\n * Returns min if the value is lower than min.\r\n * Returns max if the value is greater than max.\r\n * @param value the value to clmap\r\n * @param min the min value to clamp to (default: 0)\r\n * @param max the max value to clamp to (default: 1)\r\n * @returns the clamped value\r\n */\r\n public static Clamp: (value: number, min?: number, max?: number) => number = Clamp;\r\n\r\n /**\r\n * the log2 of value.\r\n * @param value the value to compute log2 of\r\n * @returns the log2 of value.\r\n */\r\n public static Log2(value: number): number {\r\n return Math.log(value) * Math.LOG2E;\r\n }\r\n\r\n /**\r\n * the floor part of a log2 value.\r\n * @param value the value to compute log2 of\r\n * @returns the log2 of value.\r\n */\r\n public static ILog2(value: number): number {\r\n if (Math.log2) {\r\n return Math.floor(Math.log2(value));\r\n }\r\n\r\n if (value < 0) {\r\n return NaN;\r\n } else if (value === 0) {\r\n return -Infinity;\r\n }\r\n\r\n let n = 0;\r\n if (value < 1) {\r\n while (value < 1) {\r\n n++;\r\n value = value * 2;\r\n }\r\n n = -n;\r\n } else if (value > 1) {\r\n while (value > 1) {\r\n n++;\r\n value = Math.floor(value / 2);\r\n }\r\n }\r\n\r\n return n;\r\n }\r\n\r\n /**\r\n * Loops the value, so that it is never larger than length and never smaller than 0.\r\n *\r\n * This is similar to the modulo operator but it works with floating point numbers.\r\n * For example, using 3.0 for t and 2.5 for length, the result would be 0.5.\r\n * With t = 5 and length = 2.5, the result would be 0.0.\r\n * Note, however, that the behaviour is not defined for negative numbers as it is for the modulo operator\r\n * @param value the value\r\n * @param length the length\r\n * @returns the looped value\r\n */\r\n public static Repeat(value: number, length: number): number {\r\n return value - Math.floor(value / length) * length;\r\n }\r\n\r\n /**\r\n * Normalize the value between 0.0 and 1.0 using min and max values\r\n * @param value value to normalize\r\n * @param min max to normalize between\r\n * @param max min to normalize between\r\n * @returns the normalized value\r\n */\r\n public static Normalize(value: number, min: number, max: number): number {\r\n return (value - min) / (max - min);\r\n }\r\n\r\n /**\r\n * Denormalize the value from 0.0 and 1.0 using min and max values\r\n * @param normalized value to denormalize\r\n * @param min max to denormalize between\r\n * @param max min to denormalize between\r\n * @returns the denormalized value\r\n */\r\n public static Denormalize(normalized: number, min: number, max: number): number {\r\n return normalized * (max - min) + min;\r\n }\r\n\r\n /**\r\n * Calculates the shortest difference between two given angles given in degrees.\r\n * @param current current angle in degrees\r\n * @param target target angle in degrees\r\n * @returns the delta\r\n */\r\n public static DeltaAngle(current: number, target: number): number {\r\n let num: number = Scalar.Repeat(target - current, 360.0);\r\n if (num > 180.0) {\r\n num -= 360.0;\r\n }\r\n return num;\r\n }\r\n\r\n /**\r\n * PingPongs the value t, so that it is never larger than length and never smaller than 0.\r\n * @param tx value\r\n * @param length length\r\n * @returns The returned value will move back and forth between 0 and length\r\n */\r\n public static PingPong(tx: number, length: number): number {\r\n const t: number = Scalar.Repeat(tx, length * 2.0);\r\n return length - Math.abs(t - length);\r\n }\r\n\r\n /**\r\n * Interpolates between min and max with smoothing at the limits.\r\n *\r\n * This function interpolates between min and max in a similar way to Lerp. However, the interpolation will gradually speed up\r\n * from the start and slow down toward the end. This is useful for creating natural-looking animation, fading and other transitions.\r\n * @param from from\r\n * @param to to\r\n * @param tx value\r\n * @returns the smooth stepped value\r\n */\r\n public static SmoothStep(from: number, to: number, tx: number): number {\r\n let t: number = Scalar.Clamp(tx);\r\n t = -2.0 * t * t * t + 3.0 * t * t;\r\n return to * t + from * (1.0 - t);\r\n }\r\n\r\n /**\r\n * Moves a value current towards target.\r\n *\r\n * This is essentially the same as Mathf.Lerp but instead the function will ensure that the speed never exceeds maxDelta.\r\n * Negative values of maxDelta pushes the value away from target.\r\n * @param current current value\r\n * @param target target value\r\n * @param maxDelta max distance to move\r\n * @returns resulting value\r\n */\r\n public static MoveTowards(current: number, target: number, maxDelta: number): number {\r\n let result: number = 0;\r\n if (Math.abs(target - current) <= maxDelta) {\r\n result = target;\r\n } else {\r\n result = current + Scalar.Sign(target - current) * maxDelta;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Same as MoveTowards but makes sure the values interpolate correctly when they wrap around 360 degrees.\r\n *\r\n * Variables current and target are assumed to be in degrees. For optimization reasons, negative values of maxDelta\r\n * are not supported and may cause oscillation. To push current away from a target angle, add 180 to that angle instead.\r\n * @param current current value\r\n * @param target target value\r\n * @param maxDelta max distance to move\r\n * @returns resulting angle\r\n */\r\n public static MoveTowardsAngle(current: number, target: number, maxDelta: number): number {\r\n const num: number = Scalar.DeltaAngle(current, target);\r\n let result: number = 0;\r\n if (-maxDelta < num && num < maxDelta) {\r\n result = target;\r\n } else {\r\n target = current + num;\r\n result = Scalar.MoveTowards(current, target, maxDelta);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a new scalar with values linearly interpolated of \"amount\" between the start scalar and the end scalar.\r\n * @param start start value\r\n * @param end target value\r\n * @param amount amount to lerp between\r\n * @returns the lerped value\r\n */\r\n public static Lerp: (start: number, end: number, amount: number) => number = Lerp;\r\n\r\n /**\r\n * Same as Lerp but makes sure the values interpolate correctly when they wrap around 360 degrees.\r\n * The parameter t is clamped to the range [0, 1]. Variables a and b are assumed to be in degrees.\r\n * @param start start value\r\n * @param end target value\r\n * @param amount amount to lerp between\r\n * @returns the lerped value\r\n */\r\n public static LerpAngle(start: number, end: number, amount: number): number {\r\n let num: number = Scalar.Repeat(end - start, 360.0);\r\n if (num > 180.0) {\r\n num -= 360.0;\r\n }\r\n return start + num * Clamp(amount);\r\n }\r\n\r\n /**\r\n * Calculates the linear parameter t that produces the interpolant value within the range [a, b].\r\n * @param a start value\r\n * @param b target value\r\n * @param value value between a and b\r\n * @returns the inverseLerp value\r\n */\r\n public static InverseLerp(a: number, b: number, value: number): number {\r\n let result: number = 0;\r\n if (a != b) {\r\n result = Clamp((value - a) / (b - a));\r\n } else {\r\n result = 0.0;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a new scalar located for \"amount\" (float) on the Hermite spline defined by the scalars \"value1\", \"value3\", \"tangent1\", \"tangent2\".\r\n * @see http://mathworld.wolfram.com/HermitePolynomial.html\r\n * @param value1 defines the first control point\r\n * @param tangent1 defines the first tangent\r\n * @param value2 defines the second control point\r\n * @param tangent2 defines the second tangent\r\n * @param amount defines the amount on the interpolation spline (between 0 and 1)\r\n * @returns hermite result\r\n */\r\n public static Hermite(value1: number, tangent1: number, value2: number, tangent2: number, amount: number): number {\r\n const squared = amount * amount;\r\n const cubed = amount * squared;\r\n const part1 = 2.0 * cubed - 3.0 * squared + 1.0;\r\n const part2 = -2.0 * cubed + 3.0 * squared;\r\n const part3 = cubed - 2.0 * squared + amount;\r\n const part4 = cubed - squared;\r\n\r\n return value1 * part1 + value2 * part2 + tangent1 * part3 + tangent2 * part4;\r\n }\r\n\r\n /**\r\n * Returns a new scalar which is the 1st derivative of the Hermite spline defined by the scalars \"value1\", \"value2\", \"tangent1\", \"tangent2\".\r\n * @param value1 defines the first control point\r\n * @param tangent1 defines the first tangent\r\n * @param value2 defines the second control point\r\n * @param tangent2 defines the second tangent\r\n * @param time define where the derivative must be done\r\n * @returns 1st derivative\r\n */\r\n public static Hermite1stDerivative(value1: number, tangent1: number, value2: number, tangent2: number, time: number): number {\r\n const t2 = time * time;\r\n return (t2 - time) * 6 * value1 + (3 * t2 - 4 * time + 1) * tangent1 + (-t2 + time) * 6 * value2 + (3 * t2 - 2 * time) * tangent2;\r\n }\r\n\r\n /**\r\n * Returns a random float number between and min and max values\r\n * @param min min value of random\r\n * @param max max value of random\r\n * @returns random value\r\n */\r\n public static RandomRange: (min: number, max: number) => number = RandomRange;\r\n\r\n /**\r\n * This function returns percentage of a number in a given range.\r\n *\r\n * RangeToPercent(40,20,60) will return 0.5 (50%)\r\n * RangeToPercent(34,0,100) will return 0.34 (34%)\r\n * @param number to convert to percentage\r\n * @param min min range\r\n * @param max max range\r\n * @returns the percentage\r\n */\r\n public static RangeToPercent(number: number, min: number, max: number): number {\r\n return (number - min) / (max - min);\r\n }\r\n\r\n /**\r\n * This function returns number that corresponds to the percentage in a given range.\r\n *\r\n * PercentToRange(0.34,0,100) will return 34.\r\n * @param percent to convert to number\r\n * @param min min range\r\n * @param max max range\r\n * @returns the number\r\n */\r\n public static PercentToRange(percent: number, min: number, max: number): number {\r\n return (max - min) * percent + min;\r\n }\r\n\r\n /**\r\n * Returns the angle converted to equivalent value between -Math.PI and Math.PI radians.\r\n * @param angle The angle to normalize in radian.\r\n * @returns The converted angle.\r\n */\r\n public static NormalizeRadians: (angle: number) => number = NormalizeRadians;\r\n\r\n /**\r\n * Returns the highest common factor of two integers.\r\n * @param a first parameter\r\n * @param b second parameter\r\n * @returns HCF of a and b\r\n */\r\n public static HCF(a: number, b: number): number {\r\n const r: number = a % b;\r\n if (r === 0) {\r\n return b;\r\n }\r\n return Scalar.HCF(b, r);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"math.scalar.js","sourceRoot":"","sources":["../../../../dev/core/src/Maths/math.scalar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAC;AAErD,MAAM,GAAG,GAAqC,SAAS,CAAC,mBAAmB,CAAC;AAE5E;;;GAGG;AACH,yDAAyD;AACzD,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,GAAG,SAAS;IAEZ;;OAEG;IACH,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IAElB;;;;OAIG;IACH,IAAI,EAAE,IAAI,CAAC,IAAI;IAEf;;;;OAIG;IACH,IAAI,EAAE,IAAI,CAAC,IAAI;IAEf;;;;;OAKG;IACH,GAAG;CACN,CAAC;AACF,wDAAwD","sourcesContent":["import * as functions from \"./math.scalar.functions\";\r\n\r\nconst HCF: (a: number, b: number) => number = functions.HighestCommonFactor;\r\n\r\n/**\r\n * Scalar computation library\r\n * @deprecated Please use the scalar functions\r\n */\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\nexport const Scalar = {\r\n ...functions,\r\n\r\n /**\r\n * Two pi constants convenient for computation.\r\n */\r\n TwoPi: Math.PI * 2,\r\n\r\n /**\r\n * Returns -1 if value is negative and +1 is value is positive.\r\n * @param value the value\r\n * @returns the value itself if it's equal to zero.\r\n */\r\n Sign: Math.sign,\r\n\r\n /**\r\n * the log2 of value.\r\n * @param value the value to compute log2 of\r\n * @returns the log2 of value.\r\n */\r\n Log2: Math.log2,\r\n\r\n /**\r\n * Returns the highest common factor of two integers.\r\n * @param a first parameter\r\n * @param b second parameter\r\n * @returns HCF of a and b\r\n */\r\n HCF,\r\n};\r\n/* eslint-enable @typescript-eslint/naming-convention */\r\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Vector3, Matrix, Vector2, TmpVectors } from "../../Maths/math.vector.js";
2
- import { Scalar } from "../../Maths/math.scalar.js";
2
+ import { Lerp } from "../../Maths/math.scalar.functions.js";
3
3
  import { Mesh } from "../mesh.js";
4
4
  import { VertexBuffer } from "../../Buffers/buffer.js";
5
5
  import { VertexData } from "../mesh.vertexData.js";
@@ -135,7 +135,7 @@ export function CreateDecal(name, sourceMesh, options) {
135
135
  if (v0Weights[mat0Index + i] > 0) {
136
136
  const idx = indexOf(v1Indices, v0Indices[mat0Index + i], mat1Index, 4);
137
137
  indices[index] = v0Indices[mat0Index + i];
138
- weights[index] = Scalar.Lerp(v0Weights[mat0Index + i], idx >= 0 ? v1Weights[idx] : 0, clipFactor);
138
+ weights[index] = Lerp(v0Weights[mat0Index + i], idx >= 0 ? v1Weights[idx] : 0, clipFactor);
139
139
  index++;
140
140
  }
141
141
  }
@@ -144,7 +144,7 @@ export function CreateDecal(name, sourceMesh, options) {
144
144
  if (indexOf(v0Indices, ind, mat0Index, 4) !== -1)
145
145
  continue;
146
146
  indices[index] = ind;
147
- weights[index] = Scalar.Lerp(0, v1Weights[mat1Index + i], clipFactor);
147
+ weights[index] = Lerp(0, v1Weights[mat1Index + i], clipFactor);
148
148
  index++;
149
149
  }
150
150
  const sumw = weights[0] + weights[1] + weights[2] + weights[3];