@onerjs/core 8.53.5 → 8.53.6

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 (841) hide show
  1. package/Animations/animationGroup.d.ts +0 -1
  2. package/Animations/animationGroup.js +0 -1
  3. package/Animations/animationGroup.js.map +1 -1
  4. package/Animations/animationGroup.pure.js +2 -0
  5. package/Animations/animationGroup.pure.js.map +1 -1
  6. package/Animations/runtimeAnimation.js +11 -0
  7. package/Animations/runtimeAnimation.js.map +1 -1
  8. package/Audio/audioSceneComponent.pure.js +1 -1
  9. package/AudioV2/abstractAudio/abstractSound.d.ts +2 -1
  10. package/AudioV2/abstractAudio/abstractSound.js +7 -2
  11. package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
  12. package/AudioV2/abstractAudio/abstractSoundInstance.d.ts +3 -1
  13. package/AudioV2/abstractAudio/abstractSoundInstance.js.map +1 -1
  14. package/AudioV2/abstractAudio/staticSound.d.ts +6 -0
  15. package/AudioV2/abstractAudio/staticSound.js +17 -1
  16. package/AudioV2/abstractAudio/staticSound.js.map +1 -1
  17. package/AudioV2/abstractAudio/staticSoundInstance.d.ts +4 -2
  18. package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
  19. package/AudioV2/abstractAudio/streamingSound.d.ts +6 -0
  20. package/AudioV2/abstractAudio/streamingSound.js +9 -1
  21. package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
  22. package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -1
  23. package/AudioV2/webAudio/webAudioStaticSound.js +56 -8
  24. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  25. package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -1
  26. package/AudioV2/webAudio/webAudioStreamingSound.js +16 -4
  27. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  28. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +2 -2
  29. package/BakedVertexAnimation/bakedVertexAnimationManager.js +151 -121
  30. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  31. package/Behaviors/Cameras/interpolatingBehavior.d.ts +17 -2
  32. package/Behaviors/Cameras/interpolatingBehavior.js +53 -23
  33. package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
  34. package/Bones/bone.pure.js +3 -3
  35. package/Buffers/buffer.pure.js +0 -12
  36. package/Buffers/buffer.pure.js.map +1 -1
  37. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +141 -126
  38. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  39. package/Cameras/Inputs/BaseCameraPointersInput.d.ts +2 -1
  40. package/Cameras/Inputs/BaseCameraPointersInput.js +290 -277
  41. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  42. package/Cameras/Inputs/arcRotateCameraGamepadInput.js +115 -102
  43. package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
  44. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +3 -0
  45. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +334 -273
  46. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  47. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +273 -258
  48. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  49. package/Cameras/Inputs/arcRotateCameraPointersInput.js +237 -213
  50. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  51. package/Cameras/Inputs/flyCameraKeyboardInput.js +199 -168
  52. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  53. package/Cameras/Inputs/flyCameraMouseInput.js +243 -229
  54. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  55. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +311 -266
  56. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  57. package/Cameras/Inputs/followCameraMouseWheelInput.js +139 -119
  58. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  59. package/Cameras/Inputs/followCameraPointersInput.js +239 -203
  60. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  61. package/Cameras/Inputs/freeCameraGamepadInput.js +127 -114
  62. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  63. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +278 -244
  64. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  65. package/Cameras/Inputs/freeCameraMouseInput.js +216 -202
  66. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  67. package/Cameras/Inputs/freeCameraMouseWheelInput.js +368 -353
  68. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  69. package/Cameras/Inputs/freeCameraTouchInput.js +185 -172
  70. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  71. package/Cameras/Inputs/geospatialCameraKeyboardInput.d.ts +2 -0
  72. package/Cameras/Inputs/geospatialCameraKeyboardInput.js +291 -246
  73. package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
  74. package/Cameras/Inputs/geospatialCameraPointersInput.d.ts +11 -1
  75. package/Cameras/Inputs/geospatialCameraPointersInput.js +18 -2
  76. package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
  77. package/Cameras/Inputs/orbitCameraPointersInput.js +112 -96
  78. package/Cameras/Inputs/orbitCameraPointersInput.js.map +1 -1
  79. package/Cameras/VR/vrExperienceHelper.d.ts +0 -2
  80. package/Cameras/VR/vrExperienceHelper.js +0 -2
  81. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  82. package/Cameras/VR/vrExperienceHelper.pure.js +5 -0
  83. package/Cameras/VR/vrExperienceHelper.pure.js.map +1 -1
  84. package/Cameras/arcRotateCamera.pure.js +1559 -1479
  85. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  86. package/Cameras/camera.pure.js +1225 -1178
  87. package/Cameras/camera.pure.js.map +1 -1
  88. package/Cameras/flyCamera.pure.js +369 -351
  89. package/Cameras/flyCamera.pure.js.map +1 -1
  90. package/Cameras/followCamera.pure.js +229 -192
  91. package/Cameras/followCamera.pure.js.map +1 -1
  92. package/Cameras/freeCamera.pure.js +373 -351
  93. package/Cameras/freeCamera.pure.js.map +1 -1
  94. package/Cameras/geospatialCamera.pure.d.ts +30 -7
  95. package/Cameras/geospatialCamera.pure.js +502 -457
  96. package/Cameras/geospatialCamera.pure.js.map +1 -1
  97. package/Cameras/geospatialCameraMovement.js +2 -2
  98. package/Cameras/geospatialCameraMovement.js.map +1 -1
  99. package/Cameras/targetCamera.pure.d.ts +7 -0
  100. package/Cameras/targetCamera.pure.js +550 -509
  101. package/Cameras/targetCamera.pure.js.map +1 -1
  102. package/Cameras/universalCamera.pure.js +98 -85
  103. package/Cameras/universalCamera.pure.js.map +1 -1
  104. package/Collisions/gpuPicker.d.ts +111 -4
  105. package/Collisions/gpuPicker.js +696 -119
  106. package/Collisions/gpuPicker.js.map +1 -1
  107. package/Compute/computeShader.pure.js +372 -355
  108. package/Compute/computeShader.pure.js.map +1 -1
  109. package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +2 -2
  110. package/Decorators/nodeDecorator.d.ts +11 -1
  111. package/Decorators/nodeDecorator.js +43 -6
  112. package/Decorators/nodeDecorator.js.map +1 -1
  113. package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js +8 -0
  114. package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js.map +1 -1
  115. package/Engines/Native/nativeHelpers.js +15 -0
  116. package/Engines/Native/nativeHelpers.js.map +1 -1
  117. package/Engines/Native/nativeInterfaces.d.ts +7 -2
  118. package/Engines/Native/nativeInterfaces.js.map +1 -1
  119. package/Engines/Native/nativeRenderTargetWrapper.d.ts +5 -0
  120. package/Engines/Native/nativeRenderTargetWrapper.js +35 -1
  121. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  122. package/Engines/Processors/shaderProcessor.js +5 -3
  123. package/Engines/Processors/shaderProcessor.js.map +1 -1
  124. package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js +16 -3
  125. package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js.map +1 -1
  126. package/Engines/WebGPU/webgpuClearQuad.pure.js +7 -1
  127. package/Engines/WebGPU/webgpuClearQuad.pure.js.map +1 -1
  128. package/Engines/abstractEngine.functions.d.ts +8 -2
  129. package/Engines/abstractEngine.functions.js +12 -4
  130. package/Engines/abstractEngine.functions.js.map +1 -1
  131. package/Engines/abstractEngine.pure.d.ts +20 -1
  132. package/Engines/abstractEngine.pure.js +21 -134
  133. package/Engines/abstractEngine.pure.js.map +1 -1
  134. package/Engines/engine.d.ts +208 -0
  135. package/Engines/engine.pure.js +0 -15
  136. package/Engines/engine.pure.js.map +1 -1
  137. package/Engines/nullEngine.pure.d.ts +66 -0
  138. package/Engines/nullEngine.pure.js +97 -0
  139. package/Engines/nullEngine.pure.js.map +1 -1
  140. package/Engines/thinEngine.pure.d.ts +0 -13
  141. package/Engines/thinEngine.pure.js +4 -23
  142. package/Engines/thinEngine.pure.js.map +1 -1
  143. package/Engines/thinNativeEngine.d.ts +0 -1
  144. package/Engines/thinNativeEngine.js +0 -1
  145. package/Engines/thinNativeEngine.js.map +1 -1
  146. package/Engines/thinNativeEngine.pure.d.ts +27 -0
  147. package/Engines/thinNativeEngine.pure.js +383 -17
  148. package/Engines/thinNativeEngine.pure.js.map +1 -1
  149. package/Engines/webgpuEngine.d.ts +1 -0
  150. package/Engines/webgpuEngine.js +1 -0
  151. package/Engines/webgpuEngine.js.map +1 -1
  152. package/Engines/webgpuEngine.pure.d.ts +9 -0
  153. package/Engines/webgpuEngine.pure.js +7 -0
  154. package/Engines/webgpuEngine.pure.js.map +1 -1
  155. package/FlowGraph/flowGraph.js +9 -0
  156. package/FlowGraph/flowGraph.js.map +1 -1
  157. package/FlowGraph/flowGraphContext.js +597 -584
  158. package/FlowGraph/flowGraphContext.js.map +1 -1
  159. package/FlowGraph/flowGraphDataConnection.pure.d.ts +14 -0
  160. package/FlowGraph/flowGraphDataConnection.pure.js +38 -1
  161. package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
  162. package/FlowGraph/serialization.d.ts +11 -0
  163. package/FlowGraph/serialization.js +11 -1
  164. package/FlowGraph/serialization.js.map +1 -1
  165. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js +182 -170
  166. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js.map +1 -1
  167. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js +196 -184
  168. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js.map +1 -1
  169. package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js +222 -210
  170. package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js.map +1 -1
  171. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +123 -111
  172. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
  173. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +158 -146
  174. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -1
  175. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js +63 -51
  176. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js.map +1 -1
  177. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js +122 -110
  178. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js.map +1 -1
  179. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js +76 -64
  180. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js.map +1 -1
  181. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js +89 -77
  182. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js.map +1 -1
  183. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js +134 -122
  184. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js.map +1 -1
  185. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js +58 -46
  186. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js.map +1 -1
  187. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js +107 -95
  188. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js.map +1 -1
  189. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js +181 -169
  190. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js.map +1 -1
  191. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js +63 -51
  192. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js.map +1 -1
  193. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js +63 -51
  194. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js.map +1 -1
  195. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js +76 -64
  196. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js.map +1 -1
  197. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js +246 -234
  198. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js.map +1 -1
  199. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js +108 -96
  200. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js.map +1 -1
  201. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js +87 -75
  202. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js.map +1 -1
  203. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js +76 -64
  204. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js.map +1 -1
  205. package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js +313 -301
  206. package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js.map +1 -1
  207. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js +502 -490
  208. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js.map +1 -1
  209. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js +147 -135
  210. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js.map +1 -1
  211. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js +90 -78
  212. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js.map +1 -1
  213. package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js +179 -167
  214. package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js.map +1 -1
  215. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +462 -451
  216. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  217. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +265 -253
  218. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
  219. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js +204 -192
  220. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js.map +1 -1
  221. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +611 -550
  222. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
  223. package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js +320 -308
  224. package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js.map +1 -1
  225. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js +87 -75
  226. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js.map +1 -1
  227. package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js +154 -142
  228. package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js.map +1 -1
  229. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js +150 -138
  230. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js.map +1 -1
  231. package/FrameGraph/Node/Blocks/inputBlock.pure.js +270 -256
  232. package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
  233. package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js +95 -83
  234. package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js.map +1 -1
  235. package/FrameGraph/Node/nodeRenderGraph.js +715 -693
  236. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  237. package/FrameGraph/Node/nodeRenderGraphBlock.js +548 -533
  238. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  239. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +2 -2
  240. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +43 -51
  241. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
  242. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.d.ts +0 -1
  243. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js +0 -1
  244. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js.map +1 -1
  245. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.d.ts +0 -1
  246. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +66 -35
  247. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
  248. package/Helpers/environmentHelper.js +2 -2
  249. package/Helpers/environmentHelper.js.map +1 -1
  250. package/Layers/effectLayer.js +529 -519
  251. package/Layers/effectLayer.js.map +1 -1
  252. package/Layers/glowLayer.pure.js +428 -413
  253. package/Layers/glowLayer.pure.js.map +1 -1
  254. package/Layers/highlightLayer.pure.js +473 -458
  255. package/Layers/highlightLayer.pure.js.map +1 -1
  256. package/Layers/selectionOutlineLayer.pure.js +360 -345
  257. package/Layers/selectionOutlineLayer.pure.js.map +1 -1
  258. package/Lights/Clustered/clusteredLightContainer.pure.d.ts +1 -1
  259. package/Lights/Clustered/clusteredLightContainer.pure.js +583 -558
  260. package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
  261. package/Lights/Shadows/shadowGenerator.js +6 -1
  262. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  263. package/Lights/areaLight.pure.js +61 -39
  264. package/Lights/areaLight.pure.js.map +1 -1
  265. package/Lights/directionalLight.pure.js +308 -284
  266. package/Lights/directionalLight.pure.js.map +1 -1
  267. package/Lights/hemisphericLight.pure.js +123 -104
  268. package/Lights/hemisphericLight.pure.js.map +1 -1
  269. package/Lights/light.d.ts +5 -3
  270. package/Lights/light.js +869 -827
  271. package/Lights/light.js.map +1 -1
  272. package/Lights/pointLight.pure.js +185 -174
  273. package/Lights/pointLight.pure.js.map +1 -1
  274. package/Lights/rectAreaLight.pure.d.ts +17 -0
  275. package/Lights/rectAreaLight.pure.js +238 -159
  276. package/Lights/rectAreaLight.pure.js.map +1 -1
  277. package/Lights/shadowLight.js +280 -268
  278. package/Lights/shadowLight.js.map +1 -1
  279. package/Lights/spotLight.pure.js +460 -427
  280. package/Lights/spotLight.pure.js.map +1 -1
  281. package/Loading/Plugins/babylonFileLoader.pure.js +17 -5
  282. package/Loading/Plugins/babylonFileLoader.pure.js.map +1 -1
  283. package/Loading/sceneLoader.d.ts +5 -1
  284. package/Loading/sceneLoader.js +299 -402
  285. package/Loading/sceneLoader.js.map +1 -1
  286. package/Materials/Background/backgroundMaterial.pure.d.ts +18 -18
  287. package/Materials/Background/backgroundMaterial.pure.js +949 -794
  288. package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
  289. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.d.ts +15 -0
  290. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +34 -1
  291. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
  292. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +9 -0
  293. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +26 -2
  294. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  295. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.d.ts +2 -1
  296. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +169 -149
  297. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
  298. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +1 -1
  299. package/Materials/Node/Blocks/Dual/lightBlock.pure.js +442 -429
  300. package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
  301. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js +396 -383
  302. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js.map +1 -1
  303. package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js +237 -220
  304. package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js.map +1 -1
  305. package/Materials/Node/Blocks/Dual/textureBlock.pure.js +1 -1
  306. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js +150 -133
  307. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
  308. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +265 -250
  309. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
  310. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js +159 -142
  311. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js.map +1 -1
  312. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +214 -201
  313. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
  314. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js +419 -400
  315. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js.map +1 -1
  316. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +3 -1
  317. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
  318. package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js +302 -289
  319. package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js.map +1 -1
  320. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1327 -1272
  321. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
  322. package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js +352 -337
  323. package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js.map +1 -1
  324. package/Materials/Node/Blocks/PBR/refractionBlock.pure.js +297 -277
  325. package/Materials/Node/Blocks/PBR/refractionBlock.pure.js.map +1 -1
  326. package/Materials/Node/Blocks/PBR/sheenBlock.pure.js +146 -131
  327. package/Materials/Node/Blocks/PBR/sheenBlock.pure.js.map +1 -1
  328. package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js +158 -145
  329. package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js.map +1 -1
  330. package/Materials/Node/Blocks/clampBlock.pure.js +92 -77
  331. package/Materials/Node/Blocks/clampBlock.pure.js.map +1 -1
  332. package/Materials/Node/Blocks/cloudBlock.pure.js +145 -132
  333. package/Materials/Node/Blocks/cloudBlock.pure.js.map +1 -1
  334. package/Materials/Node/Blocks/conditionalBlock.pure.js +182 -169
  335. package/Materials/Node/Blocks/conditionalBlock.pure.js.map +1 -1
  336. package/Materials/Node/Blocks/curveBlock.pure.js +259 -246
  337. package/Materials/Node/Blocks/curveBlock.pure.js.map +1 -1
  338. package/Materials/Node/Blocks/debugBlock.pure.js +119 -106
  339. package/Materials/Node/Blocks/debugBlock.pure.js.map +1 -1
  340. package/Materials/Node/Blocks/loopBlock.pure.js +123 -110
  341. package/Materials/Node/Blocks/loopBlock.pure.js.map +1 -1
  342. package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js +185 -172
  343. package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js.map +1 -1
  344. package/Materials/Node/Blocks/remapBlock.pure.js +127 -112
  345. package/Materials/Node/Blocks/remapBlock.pure.js.map +1 -1
  346. package/Materials/Node/Blocks/transformBlock.pure.js +196 -185
  347. package/Materials/Node/Blocks/transformBlock.pure.js.map +1 -1
  348. package/Materials/Node/Blocks/triPlanarBlock.pure.js +451 -438
  349. package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
  350. package/Materials/Node/Blocks/trigonometryBlock.pure.js +184 -171
  351. package/Materials/Node/Blocks/trigonometryBlock.pure.js.map +1 -1
  352. package/Materials/Node/Blocks/waveBlock.pure.js +97 -84
  353. package/Materials/Node/Blocks/waveBlock.pure.js.map +1 -1
  354. package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js +276 -263
  355. package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js.map +1 -1
  356. package/Materials/Node/nodeMaterial.pure.js +1765 -1737
  357. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  358. package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
  359. package/Materials/PBR/openpbrMaterial.pure.d.ts +102 -102
  360. package/Materials/PBR/openpbrMaterial.pure.js +3115 -2243
  361. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  362. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -3
  363. package/Materials/PBR/pbrAnisotropicConfiguration.js +255 -227
  364. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  365. package/Materials/PBR/pbrBRDFConfiguration.d.ts +9 -9
  366. package/Materials/PBR/pbrBRDFConfiguration.js +203 -155
  367. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  368. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
  369. package/Materials/PBR/pbrBaseMaterial.pure.js +1751 -1736
  370. package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
  371. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +13 -13
  372. package/Materials/PBR/pbrBaseSimpleMaterial.js +205 -117
  373. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  374. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +9 -9
  375. package/Materials/PBR/pbrClearCoatConfiguration.js +464 -406
  376. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  377. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +3 -3
  378. package/Materials/PBR/pbrIridescenceConfiguration.js +271 -239
  379. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  380. package/Materials/PBR/pbrMaterial.pure.d.ts +66 -66
  381. package/Materials/PBR/pbrMaterial.pure.js +1041 -685
  382. package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
  383. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.d.ts +5 -5
  384. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js +176 -115
  385. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js.map +1 -1
  386. package/Materials/PBR/pbrSheenConfiguration.d.ts +7 -7
  387. package/Materials/PBR/pbrSheenConfiguration.js +314 -270
  388. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  389. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.d.ts +5 -5
  390. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js +172 -117
  391. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js.map +1 -1
  392. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +16 -16
  393. package/Materials/PBR/pbrSubSurfaceConfiguration.js +864 -764
  394. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  395. package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +43 -0
  396. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +64 -0
  397. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -0
  398. package/Materials/Textures/HTML/htmlInteractionManager.d.ts +69 -0
  399. package/Materials/Textures/HTML/htmlInteractionManager.js +130 -0
  400. package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -0
  401. package/Materials/Textures/HTML/htmlRaycastInteractionManager.d.ts +84 -0
  402. package/Materials/Textures/HTML/htmlRaycastInteractionManager.js +246 -0
  403. package/Materials/Textures/HTML/htmlRaycastInteractionManager.js.map +1 -0
  404. package/Materials/Textures/HTML/htmlTexture.d.ts +148 -0
  405. package/Materials/Textures/HTML/htmlTexture.js +455 -0
  406. package/Materials/Textures/HTML/htmlTexture.js.map +1 -0
  407. package/Materials/Textures/HTML/index.d.ts +4 -0
  408. package/Materials/Textures/HTML/index.js +5 -0
  409. package/Materials/Textures/HTML/index.js.map +1 -0
  410. package/Materials/Textures/HTML/pure.d.ts +5 -0
  411. package/Materials/Textures/HTML/pure.js +6 -0
  412. package/Materials/Textures/HTML/pure.js.map +1 -0
  413. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +671 -643
  414. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  415. package/Materials/Textures/baseTexture.pure.js +880 -825
  416. package/Materials/Textures/baseTexture.pure.js.map +1 -1
  417. package/Materials/Textures/cubeTexture.d.ts +0 -1
  418. package/Materials/Textures/cubeTexture.js +0 -1
  419. package/Materials/Textures/cubeTexture.js.map +1 -1
  420. package/Materials/Textures/cubeTexture.pure.js +368 -333
  421. package/Materials/Textures/cubeTexture.pure.js.map +1 -1
  422. package/Materials/Textures/dynamicTexture.d.ts +0 -1
  423. package/Materials/Textures/dynamicTexture.js +0 -1
  424. package/Materials/Textures/dynamicTexture.js.map +1 -1
  425. package/Materials/Textures/dynamicTexture.pure.js +2 -0
  426. package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
  427. package/Materials/Textures/htmlElementTexture.d.ts +0 -2
  428. package/Materials/Textures/htmlElementTexture.js +0 -2
  429. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  430. package/Materials/Textures/htmlElementTexture.pure.js +4 -0
  431. package/Materials/Textures/htmlElementTexture.pure.js.map +1 -1
  432. package/Materials/Textures/index.d.ts +1 -0
  433. package/Materials/Textures/index.js +1 -1
  434. package/Materials/Textures/index.js.map +1 -1
  435. package/Materials/Textures/multiRenderTarget.d.ts +0 -1
  436. package/Materials/Textures/multiRenderTarget.js +0 -1
  437. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  438. package/Materials/Textures/multiRenderTarget.pure.js +2 -0
  439. package/Materials/Textures/multiRenderTarget.pure.js.map +1 -1
  440. package/Materials/Textures/pure.d.ts +1 -0
  441. package/Materials/Textures/pure.js +1 -0
  442. package/Materials/Textures/pure.js.map +1 -1
  443. package/Materials/Textures/texture.pure.js +961 -923
  444. package/Materials/Textures/texture.pure.js.map +1 -1
  445. package/Materials/Textures/videoTexture.pure.d.ts +3 -0
  446. package/Materials/Textures/videoTexture.pure.js +450 -401
  447. package/Materials/Textures/videoTexture.pure.js.map +1 -1
  448. package/Materials/colorCurves.pure.js +510 -477
  449. package/Materials/colorCurves.pure.js.map +1 -1
  450. package/Materials/effect.pure.js +0 -7
  451. package/Materials/effect.pure.js.map +1 -1
  452. package/Materials/imageProcessing.js +12 -4
  453. package/Materials/imageProcessing.js.map +1 -1
  454. package/Materials/imageProcessingConfiguration.pure.js +647 -587
  455. package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
  456. package/Materials/material.decalMapConfiguration.pure.d.ts +2 -2
  457. package/Materials/material.decalMapConfiguration.pure.js +149 -130
  458. package/Materials/material.decalMapConfiguration.pure.js.map +1 -1
  459. package/Materials/material.detailMapConfiguration.d.ts +3 -3
  460. package/Materials/material.detailMapConfiguration.js +213 -175
  461. package/Materials/material.detailMapConfiguration.js.map +1 -1
  462. package/Materials/material.pure.js +1815 -1721
  463. package/Materials/material.pure.js.map +1 -1
  464. package/Materials/materialPluginBase.pure.js +270 -249
  465. package/Materials/materialPluginBase.pure.js.map +1 -1
  466. package/Materials/materialPluginManager.pure.js +18 -8
  467. package/Materials/materialPluginManager.pure.js.map +1 -1
  468. package/Materials/materialStencilState.js +211 -200
  469. package/Materials/materialStencilState.js.map +1 -1
  470. package/Materials/meshDebugPluginMaterial.pure.d.ts +2 -2
  471. package/Materials/meshDebugPluginMaterial.pure.js +397 -275
  472. package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
  473. package/Materials/standardMaterial.pure.d.ts +32 -32
  474. package/Materials/standardMaterial.pure.js +1804 -1394
  475. package/Materials/standardMaterial.pure.js.map +1 -1
  476. package/Maths/math.color.pure.js +5 -5
  477. package/Maths/math.functions.js +38 -30
  478. package/Maths/math.functions.js.map +1 -1
  479. package/Maths/math.vector.pure.js +25 -25
  480. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
  481. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  482. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +86 -1
  483. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +255 -104
  484. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  485. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +39 -0
  486. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +322 -0
  487. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
  488. package/Meshes/GreasedLine/greasedLineMesh.pure.js +4 -4
  489. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
  490. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +107 -94
  491. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
  492. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js +276 -263
  493. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js.map +1 -1
  494. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js +247 -232
  495. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js.map +1 -1
  496. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +299 -284
  497. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
  498. package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js +196 -181
  499. package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js.map +1 -1
  500. package/Meshes/Node/Blocks/Set/latticeBlock.pure.js +198 -179
  501. package/Meshes/Node/Blocks/Set/latticeBlock.pure.js.map +1 -1
  502. package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js +151 -138
  503. package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js.map +1 -1
  504. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js +107 -94
  505. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js.map +1 -1
  506. package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js +138 -125
  507. package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js.map +1 -1
  508. package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js +213 -200
  509. package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js.map +1 -1
  510. package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js +138 -125
  511. package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js.map +1 -1
  512. package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js +179 -164
  513. package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js.map +1 -1
  514. package/Meshes/Node/Blocks/Sources/boxBlock.pure.js +183 -170
  515. package/Meshes/Node/Blocks/Sources/boxBlock.pure.js.map +1 -1
  516. package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js +125 -112
  517. package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js.map +1 -1
  518. package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js +153 -140
  519. package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js.map +1 -1
  520. package/Meshes/Node/Blocks/Sources/discBlock.pure.js +112 -99
  521. package/Meshes/Node/Blocks/Sources/discBlock.pure.js.map +1 -1
  522. package/Meshes/Node/Blocks/Sources/gridBlock.pure.js +133 -120
  523. package/Meshes/Node/Blocks/Sources/gridBlock.pure.js.map +1 -1
  524. package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js +128 -115
  525. package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js.map +1 -1
  526. package/Meshes/Node/Blocks/Sources/meshBlock.pure.js +116 -103
  527. package/Meshes/Node/Blocks/Sources/meshBlock.pure.js.map +1 -1
  528. package/Meshes/Node/Blocks/Sources/planeBlock.pure.js +160 -147
  529. package/Meshes/Node/Blocks/Sources/planeBlock.pure.js.map +1 -1
  530. package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js +144 -131
  531. package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js.map +1 -1
  532. package/Meshes/Node/Blocks/Sources/torusBlock.pure.js +112 -99
  533. package/Meshes/Node/Blocks/Sources/torusBlock.pure.js.map +1 -1
  534. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js +200 -185
  535. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js.map +1 -1
  536. package/Meshes/Node/Blocks/bevelBlock.pure.js +111 -98
  537. package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
  538. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +182 -165
  539. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
  540. package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js +89 -76
  541. package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js.map +1 -1
  542. package/Meshes/Node/Blocks/conditionBlock.pure.js +184 -169
  543. package/Meshes/Node/Blocks/conditionBlock.pure.js.map +1 -1
  544. package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js +270 -255
  545. package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js.map +1 -1
  546. package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js +172 -159
  547. package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js.map +1 -1
  548. package/Meshes/Node/Blocks/geometryCurveBlock.pure.js +230 -217
  549. package/Meshes/Node/Blocks/geometryCurveBlock.pure.js.map +1 -1
  550. package/Meshes/Node/Blocks/geometryEaseBlock.pure.js +256 -245
  551. package/Meshes/Node/Blocks/geometryEaseBlock.pure.js.map +1 -1
  552. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +206 -189
  553. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
  554. package/Meshes/Node/Blocks/geometryTransformBlock.pure.js +166 -153
  555. package/Meshes/Node/Blocks/geometryTransformBlock.pure.js.map +1 -1
  556. package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js +221 -208
  557. package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js.map +1 -1
  558. package/Meshes/Node/Blocks/mappingBlock.pure.js +150 -137
  559. package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
  560. package/Meshes/Node/Blocks/mathBlock.pure.js +269 -256
  561. package/Meshes/Node/Blocks/mathBlock.pure.js.map +1 -1
  562. package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js +141 -128
  563. package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js.map +1 -1
  564. package/Meshes/Node/Blocks/randomBlock.pure.js +161 -148
  565. package/Meshes/Node/Blocks/randomBlock.pure.js.map +1 -1
  566. package/Meshes/Node/Blocks/subdivideBlock.pure.js +102 -87
  567. package/Meshes/Node/Blocks/subdivideBlock.pure.js.map +1 -1
  568. package/Meshes/Node/nodeGeometry.js +560 -538
  569. package/Meshes/Node/nodeGeometry.js.map +1 -1
  570. package/Meshes/Node/nodeGeometryBlock.js +473 -458
  571. package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
  572. package/Meshes/abstractMesh.pure.js +2218 -2207
  573. package/Meshes/abstractMesh.pure.js.map +1 -1
  574. package/Meshes/geometry.js +30 -15
  575. package/Meshes/geometry.js.map +1 -1
  576. package/Meshes/mesh.pure.js +26 -14
  577. package/Meshes/mesh.pure.js.map +1 -1
  578. package/Meshes/mesh.vertexData.js +1665 -1655
  579. package/Meshes/mesh.vertexData.js.map +1 -1
  580. package/Meshes/transformNode.pure.js +1400 -1372
  581. package/Meshes/transformNode.pure.js.map +1 -1
  582. package/Misc/decorators.d.ts +34 -19
  583. package/Misc/decorators.functions.d.ts +33 -2
  584. package/Misc/decorators.functions.js +114 -35
  585. package/Misc/decorators.functions.js.map +1 -1
  586. package/Misc/decorators.js +96 -68
  587. package/Misc/decorators.js.map +1 -1
  588. package/Misc/decorators.serialization.js +47 -40
  589. package/Misc/decorators.serialization.js.map +1 -1
  590. package/Misc/decorators.serializationUtilities.d.ts +24 -0
  591. package/Misc/decorators.serializationUtilities.js +20 -0
  592. package/Misc/decorators.serializationUtilities.js.map +1 -0
  593. package/Misc/dumpTools.pure.js +43 -33
  594. package/Misc/dumpTools.pure.js.map +1 -1
  595. package/Misc/fileTools.pure.js +8 -0
  596. package/Misc/fileTools.pure.js.map +1 -1
  597. package/Misc/observable.pure.js +0 -7
  598. package/Misc/observable.pure.js.map +1 -1
  599. package/Misc/snapshotRenderingHelper.d.ts +4 -1
  600. package/Misc/snapshotRenderingHelper.js.map +1 -1
  601. package/Misc/symbolMetadataPolyfill.d.ts +11 -0
  602. package/Misc/symbolMetadataPolyfill.js +22 -0
  603. package/Misc/symbolMetadataPolyfill.js.map +1 -0
  604. package/Misc/tools.pure.js +2 -2
  605. package/Misc/tools.pure.js.map +1 -1
  606. package/Morph/morphTarget.js +382 -365
  607. package/Morph/morphTarget.js.map +1 -1
  608. package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js +160 -145
  609. package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js.map +1 -1
  610. package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js +187 -174
  611. package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js.map +1 -1
  612. package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js +238 -219
  613. package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js.map +1 -1
  614. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js +140 -115
  615. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js.map +1 -1
  616. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js +157 -144
  617. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js.map +1 -1
  618. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js +133 -119
  619. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js.map +1 -1
  620. package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js +93 -80
  621. package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js.map +1 -1
  622. package/Particles/Node/Blocks/particleDebugBlock.pure.js +117 -105
  623. package/Particles/Node/Blocks/particleDebugBlock.pure.js.map +1 -1
  624. package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js +105 -92
  625. package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js.map +1 -1
  626. package/Particles/Node/Blocks/particleGradientValueBlock.pure.js +82 -69
  627. package/Particles/Node/Blocks/particleGradientValueBlock.pure.js.map +1 -1
  628. package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js +113 -101
  629. package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js.map +1 -1
  630. package/Particles/Node/Blocks/particleMathBlock.pure.js +278 -265
  631. package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
  632. package/Particles/Node/Blocks/particleNumberMathBlock.pure.js +155 -142
  633. package/Particles/Node/Blocks/particleNumberMathBlock.pure.js.map +1 -1
  634. package/Particles/Node/Blocks/particleRandomBlock.pure.js +156 -143
  635. package/Particles/Node/Blocks/particleRandomBlock.pure.js.map +1 -1
  636. package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js +217 -204
  637. package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js.map +1 -1
  638. package/Particles/Node/Blocks/particleVectorMathBlock.pure.js +106 -93
  639. package/Particles/Node/Blocks/particleVectorMathBlock.pure.js.map +1 -1
  640. package/Particles/Node/Blocks/systemBlock.pure.js +366 -330
  641. package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
  642. package/Particles/Node/nodeParticleBlock.js +339 -324
  643. package/Particles/Node/nodeParticleBlock.js.map +1 -1
  644. package/Particles/Node/nodeParticleSystemSet.js +494 -473
  645. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  646. package/Particles/gpuParticleSystem.d.ts +0 -1
  647. package/Particles/gpuParticleSystem.js +0 -1
  648. package/Particles/gpuParticleSystem.js.map +1 -1
  649. package/Particles/gpuParticleSystem.pure.d.ts +4 -3
  650. package/Particles/gpuParticleSystem.pure.js +27 -16
  651. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  652. package/Particles/particleSystem.pure.js +57 -2
  653. package/Particles/particleSystem.pure.js.map +1 -1
  654. package/Particles/thinParticleSystem.d.ts +0 -1
  655. package/Particles/thinParticleSystem.js +0 -1
  656. package/Particles/thinParticleSystem.js.map +1 -1
  657. package/Particles/thinParticleSystem.pure.js +2 -0
  658. package/Particles/thinParticleSystem.pure.js.map +1 -1
  659. package/Particles/webgl2ParticleSystem.pure.js +2 -0
  660. package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
  661. package/Physics/v1/physicsImpostor.pure.js +4 -4
  662. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +675 -656
  663. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
  664. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.d.ts +0 -1
  665. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +0 -1
  666. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
  667. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +521 -486
  668. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
  669. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +0 -1
  670. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +0 -1
  671. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  672. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js +241 -220
  673. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
  674. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js +852 -835
  675. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js.map +1 -1
  676. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js +1135 -1073
  677. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js.map +1 -1
  678. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js +319 -303
  679. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js.map +1 -1
  680. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +212 -199
  681. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  682. package/PostProcesses/blackAndWhitePostProcess.pure.js +67 -55
  683. package/PostProcesses/blackAndWhitePostProcess.pure.js.map +1 -1
  684. package/PostProcesses/bloomMergePostProcess.pure.js +74 -62
  685. package/PostProcesses/bloomMergePostProcess.pure.js.map +1 -1
  686. package/PostProcesses/blurPostProcess.pure.js +127 -115
  687. package/PostProcesses/blurPostProcess.pure.js.map +1 -1
  688. package/PostProcesses/chromaticAberrationPostProcess.pure.js +130 -118
  689. package/PostProcesses/chromaticAberrationPostProcess.pure.js.map +1 -1
  690. package/PostProcesses/circleOfConfusionPostProcess.pure.js +115 -104
  691. package/PostProcesses/circleOfConfusionPostProcess.pure.js.map +1 -1
  692. package/PostProcesses/colorCorrectionPostProcess.pure.js +55 -43
  693. package/PostProcesses/colorCorrectionPostProcess.pure.js.map +1 -1
  694. package/PostProcesses/convolutionPostProcess.pure.js +96 -84
  695. package/PostProcesses/convolutionPostProcess.pure.js.map +1 -1
  696. package/PostProcesses/extractHighlightsPostProcess.pure.js +68 -57
  697. package/PostProcesses/extractHighlightsPostProcess.pure.js.map +1 -1
  698. package/PostProcesses/filterPostProcess.pure.js +66 -54
  699. package/PostProcesses/filterPostProcess.pure.js.map +1 -1
  700. package/PostProcesses/fxaaPostProcess.pure.js.map +1 -1
  701. package/PostProcesses/grainPostProcess.pure.js +82 -70
  702. package/PostProcesses/grainPostProcess.pure.js.map +1 -1
  703. package/PostProcesses/imageProcessingPostProcess.js +334 -322
  704. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  705. package/PostProcesses/motionBlurPostProcess.pure.js +246 -235
  706. package/PostProcesses/motionBlurPostProcess.pure.js.map +1 -1
  707. package/PostProcesses/passPostProcess.pure.js +75 -63
  708. package/PostProcesses/passPostProcess.pure.js.map +1 -1
  709. package/PostProcesses/postProcess.pure.js +899 -835
  710. package/PostProcesses/postProcess.pure.js.map +1 -1
  711. package/PostProcesses/refractionPostProcess.pure.js +114 -87
  712. package/PostProcesses/refractionPostProcess.pure.js.map +1 -1
  713. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +108 -96
  714. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
  715. package/PostProcesses/screenSpaceReflectionPostProcess.pure.js +241 -220
  716. package/PostProcesses/screenSpaceReflectionPostProcess.pure.js.map +1 -1
  717. package/PostProcesses/sharpenPostProcess.pure.js +86 -74
  718. package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
  719. package/PostProcesses/tonemapPostProcess.pure.js +82 -70
  720. package/PostProcesses/tonemapPostProcess.pure.js.map +1 -1
  721. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +500 -465
  722. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
  723. package/PostProcesses/vrMultiviewToSingleviewPostProcess.d.ts +0 -1
  724. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +0 -1
  725. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
  726. package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js +2 -0
  727. package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js.map +1 -1
  728. package/Probes/reflectionProbe.pure.js +238 -224
  729. package/Probes/reflectionProbe.pure.js.map +1 -1
  730. package/Rendering/GlobalIllumination/giRSMManager.pure.d.ts +1 -1
  731. package/Rendering/GlobalIllumination/giRSMManager.pure.js +138 -105
  732. package/Rendering/GlobalIllumination/giRSMManager.pure.js.map +1 -1
  733. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -1
  734. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +155 -138
  735. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
  736. package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +0 -2
  737. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +0 -2
  738. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  739. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +5 -0
  740. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  741. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +0 -1
  742. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +0 -1
  743. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  744. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +1 -0
  745. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +34 -0
  746. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  747. package/Rendering/edgesRenderer.pure.js.map +1 -1
  748. package/Rendering/prePassRenderer.d.ts +0 -2
  749. package/Rendering/prePassRenderer.js +0 -2
  750. package/Rendering/prePassRenderer.js.map +1 -1
  751. package/Rendering/prePassRenderer.pure.js +2 -0
  752. package/Rendering/prePassRenderer.pure.js.map +1 -1
  753. package/Rendering/reflectiveShadowMap.pure.d.ts +1 -1
  754. package/Rendering/reflectiveShadowMap.pure.js +151 -130
  755. package/Rendering/reflectiveShadowMap.pure.js.map +1 -1
  756. package/Rendering/thinDepthPeelingRenderer.d.ts +0 -1
  757. package/Rendering/thinDepthPeelingRenderer.js +0 -1
  758. package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
  759. package/Shaders/ShadersInclude/gaussianSplatting.js +1 -0
  760. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  761. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +35 -5
  762. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  763. package/Shaders/gaussianSplatting.fragment.js +17 -1
  764. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  765. package/Shaders/gaussianSplatting.vertex.js +1 -1
  766. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  767. package/Shaders/gaussianSplattingDepth.vertex.js +1 -1
  768. package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -1
  769. package/Shaders/picking.fragment.js +39 -3
  770. package/Shaders/picking.fragment.js.map +1 -1
  771. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
  772. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
  773. package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
  774. package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
  775. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +39 -7
  776. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  777. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +4 -3
  778. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
  779. package/ShadersWGSL/gaussianSplatting.fragment.js +14 -1
  780. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  781. package/ShadersWGSL/gaussianSplatting.vertex.js +2 -2
  782. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  783. package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -2
  784. package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
  785. package/ShadersWGSL/lightingVolume.compute.js +2 -2
  786. package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
  787. package/ShadersWGSL/picking.fragment.js +22 -1
  788. package/ShadersWGSL/picking.fragment.js.map +1 -1
  789. package/XR/features/Layers/WebXRCompositionLayer.d.ts +3 -2
  790. package/XR/features/Layers/WebXRCompositionLayer.js +2 -2
  791. package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
  792. package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +59 -0
  793. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +120 -0
  794. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -0
  795. package/XR/features/Layers/WebXRWebGPUProjectionLayer.d.ts +25 -0
  796. package/XR/features/Layers/WebXRWebGPUProjectionLayer.js +69 -0
  797. package/XR/features/Layers/WebXRWebGPUProjectionLayer.js.map +1 -0
  798. package/XR/features/WebXRLayers.pure.d.ts +8 -0
  799. package/XR/features/WebXRLayers.pure.js +43 -6
  800. package/XR/features/WebXRLayers.pure.js.map +1 -1
  801. package/XR/native/nativeXRRenderTarget.d.ts +2 -2
  802. package/XR/native/nativeXRRenderTarget.js +2 -2
  803. package/XR/native/nativeXRRenderTarget.js.map +1 -1
  804. package/XR/webXRExperienceHelper.js +10 -1
  805. package/XR/webXRExperienceHelper.js.map +1 -1
  806. package/XR/webXRGraphicsBinding.d.ts +90 -0
  807. package/XR/webXRGraphicsBinding.js +85 -0
  808. package/XR/webXRGraphicsBinding.js.map +1 -0
  809. package/XR/webXRLayerRenderTargetTexture.d.ts +24 -0
  810. package/XR/webXRLayerRenderTargetTexture.js +30 -0
  811. package/XR/webXRLayerRenderTargetTexture.js.map +1 -0
  812. package/XR/webXRManagedOutputCanvas.d.ts +14 -0
  813. package/XR/webXRManagedOutputCanvas.js +24 -5
  814. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  815. package/XR/webXRRenderTargetTextureProvider.d.ts +25 -4
  816. package/XR/webXRRenderTargetTextureProvider.js +33 -35
  817. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  818. package/XR/webXRSessionManager.d.ts +11 -0
  819. package/XR/webXRSessionManager.js +37 -0
  820. package/XR/webXRSessionManager.js.map +1 -1
  821. package/XR/webXRTypes.d.ts +9 -6
  822. package/XR/webXRTypes.js.map +1 -1
  823. package/XR/webXRWebGLLayer.d.ts +2 -2
  824. package/XR/webXRWebGLLayer.js +2 -2
  825. package/XR/webXRWebGLLayer.js.map +1 -1
  826. package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +12 -0
  827. package/XR/webXRWebGLRenderTargetTextureProvider.js +58 -0
  828. package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -0
  829. package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +69 -0
  830. package/XR/webXRWebGPURenderTargetTextureProvider.js +148 -0
  831. package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -0
  832. package/index.d.ts +1 -0
  833. package/index.js +1 -0
  834. package/index.js.map +1 -1
  835. package/node.js +878 -845
  836. package/node.js.map +1 -1
  837. package/package.json +8 -14
  838. package/scene.pure.d.ts +12 -0
  839. package/scene.pure.js +36 -0
  840. package/scene.pure.js.map +1 -1
  841. package/tslib.es6.js +304 -150
package/Lights/light.js CHANGED
@@ -1,4 +1,4 @@
1
- import { __decorate } from "../tslib.es6.js";
1
+ import { __classPrivateFieldGet, __classPrivateFieldSet, __esDecorate, __runInitializers } from "../tslib.es6.js";
2
2
  import { serialize, serializeAsColor3, expandToProperty } from "../Misc/decorators.js";
3
3
  import { Vector3 } from "../Maths/math.vector.pure.js";
4
4
  import { Color3, TmpColors } from "../Maths/math.color.pure.js";
@@ -12,852 +12,894 @@ import { SerializationHelper } from "../Misc/decorators.serialization.js";
12
12
  * Lights are used, as you would expect, to affect how meshes are seen, in terms of both illumination and colour.
13
13
  * All meshes allow light to pass through them unless shadow generation is activated. The default number of lights allowed is four but this can be increased.
14
14
  */
15
- export class Light extends Node {
16
- /**
17
- * Defines light internal enabled state.
18
- */
19
- get internalEnabled() {
20
- return this._internalEnabled;
21
- }
22
- set internalEnabled(value) {
23
- this._internalEnabled = value;
24
- this._resyncMeshes();
25
- }
26
- /**
27
- * Defines how far from the source the light is impacting in scene units.
28
- * Note: Unused in PBR material as the distance light falloff is defined following the inverse squared falloff.
29
- */
30
- get range() {
31
- return this._range;
32
- }
33
- /**
34
- * Defines how far from the source the light is impacting in scene units.
35
- * Note: Unused in PBR material as the distance light falloff is defined following the inverse squared falloff.
36
- */
37
- set range(value) {
38
- this._range = value;
39
- this._inverseSquaredRange = 1.0 / (this.range * this.range);
40
- }
41
- /**
42
- * Gets the photometric scale used to interpret the intensity.
43
- * This is only relevant with PBR Materials where the light intensity can be defined in a physical way.
44
- */
45
- get intensityMode() {
46
- return this._intensityMode;
47
- }
48
- /**
49
- * Sets the photometric scale used to interpret the intensity.
50
- * This is only relevant with PBR Materials where the light intensity can be defined in a physical way.
51
- */
52
- set intensityMode(value) {
53
- this._intensityMode = value;
54
- this._computePhotometricScale();
55
- }
56
- /**
57
- * Gets the light radius used by PBR Materials to simulate soft area lights.
58
- */
59
- get radius() {
60
- return this._radius;
61
- }
62
- /**
63
- * sets the light radius used by PBR Materials to simulate soft area lights.
64
- */
65
- set radius(value) {
66
- this._radius = value;
67
- this._computePhotometricScale();
68
- }
69
- /**
70
- * Gets whether or not the shadows are enabled for this light. This can help turning off/on shadow without detaching
71
- * the current shadow generator.
72
- */
73
- get shadowEnabled() {
74
- return this._shadowEnabled;
75
- }
76
- /**
77
- * Sets whether or not the shadows are enabled for this light. This can help turning off/on shadow without detaching
78
- * the current shadow generator.
79
- */
80
- set shadowEnabled(value) {
81
- if (this._shadowEnabled === value) {
82
- return;
83
- }
84
- this._shadowEnabled = value;
85
- this._markMeshesAsLightDirty();
86
- }
87
- /**
88
- * Gets the only meshes impacted by this light.
89
- */
90
- get includedOnlyMeshes() {
91
- return this._includedOnlyMeshes;
92
- }
93
- /**
94
- * Sets the only meshes impacted by this light.
95
- */
96
- set includedOnlyMeshes(value) {
97
- this._includedOnlyMeshes = value;
98
- this._hookArrayForIncludedOnly(value);
99
- }
100
- /**
101
- * Gets the meshes not impacted by this light.
102
- */
103
- get excludedMeshes() {
104
- return this._excludedMeshes;
105
- }
106
- /**
107
- * Sets the meshes not impacted by this light.
108
- */
109
- set excludedMeshes(value) {
110
- this._excludedMeshes = value;
111
- this._hookArrayForExcluded(value);
112
- }
113
- /**
114
- * Gets the layer id use to find what meshes are not impacted by the light.
115
- * Inactive if 0
116
- */
117
- get excludeWithLayerMask() {
118
- return this._excludeWithLayerMask;
119
- }
120
- /**
121
- * Sets the layer id use to find what meshes are not impacted by the light.
122
- * Inactive if 0
123
- */
124
- set excludeWithLayerMask(value) {
125
- this._excludeWithLayerMask = value;
126
- this._resyncMeshes();
127
- }
128
- /**
129
- * Gets the layer id use to find what meshes are impacted by the light.
130
- * Inactive if 0
131
- */
132
- get includeOnlyWithLayerMask() {
133
- return this._includeOnlyWithLayerMask;
134
- }
135
- /**
136
- * Sets the layer id use to find what meshes are impacted by the light.
137
- * Inactive if 0
138
- */
139
- set includeOnlyWithLayerMask(value) {
140
- this._includeOnlyWithLayerMask = value;
141
- this._resyncMeshes();
142
- }
143
- /**
144
- * Gets the lightmap mode of this light (should be one of the constants defined by Light.LIGHTMAP_x)
145
- */
146
- get lightmapMode() {
147
- return this._lightmapMode;
148
- }
149
- /**
150
- * Sets the lightmap mode of this light (should be one of the constants defined by Light.LIGHTMAP_x)
151
- */
152
- set lightmapMode(value) {
153
- if (this._lightmapMode === value) {
154
- return;
155
- }
156
- this._lightmapMode = value;
157
- this._markMeshesAsLightDirty();
158
- }
159
- /**
160
- * Returns the view matrix.
161
- * @param _faceIndex The index of the face for which we want to extract the view matrix. Only used for point light types.
162
- * @returns The view matrix. Can be null, if a view matrix cannot be defined for the type of light considered (as for a hemispherical light, for example).
163
- */
164
- getViewMatrix(_faceIndex) {
165
- return null;
166
- }
167
- /**
168
- * Returns the projection matrix.
169
- * Note that viewMatrix and renderList are optional and are only used by lights that calculate the projection matrix from a list of meshes (e.g. directional lights with automatic extents calculation).
170
- * @param _viewMatrix The view transform matrix of the light (optional).
171
- * @param _renderList The list of meshes to take into account when calculating the projection matrix (optional).
172
- * @returns The projection matrix. Can be null, if a projection matrix cannot be defined for the type of light considered (as for a hemispherical light, for example).
173
- */
174
- getProjectionMatrix(_viewMatrix, _renderList) {
175
- return null;
176
- }
177
- /**
178
- * Creates a Light object in the scene.
179
- * Documentation : https://doc.babylonjs.com/features/featuresDeepDive/lights/lights_introduction
180
- * @param name The friendly name of the light
181
- * @param scene The scene the light belongs too
182
- * @param dontAddToScene True to not add the light to the scene
183
- */
184
- constructor(name, scene, dontAddToScene) {
185
- super(name, scene, false);
15
+ let Light = (() => {
16
+ var _a, _Light_renderPriority_accessor_storage;
17
+ let _classSuper = Node;
18
+ let _instanceExtraInitializers = [];
19
+ let _diffuse_decorators;
20
+ let _diffuse_initializers = [];
21
+ let _diffuse_extraInitializers = [];
22
+ let _specular_decorators;
23
+ let _specular_initializers = [];
24
+ let _specular_extraInitializers = [];
25
+ let _falloffType_decorators;
26
+ let _falloffType_initializers = [];
27
+ let _falloffType_extraInitializers = [];
28
+ let _intensity_decorators;
29
+ let _intensity_initializers = [];
30
+ let _intensity_extraInitializers = [];
31
+ let _get_range_decorators;
32
+ let _get_intensityMode_decorators;
33
+ let _get_radius_decorators;
34
+ let __renderPriority_decorators;
35
+ let __renderPriority_initializers = [];
36
+ let __renderPriority_extraInitializers = [];
37
+ let _renderPriority_decorators;
38
+ let _renderPriority_initializers = [];
39
+ let _renderPriority_extraInitializers = [];
40
+ let __shadowEnabled_decorators;
41
+ let __shadowEnabled_initializers = [];
42
+ let __shadowEnabled_extraInitializers = [];
43
+ let __excludeWithLayerMask_decorators;
44
+ let __excludeWithLayerMask_initializers = [];
45
+ let __excludeWithLayerMask_extraInitializers = [];
46
+ let __includeOnlyWithLayerMask_decorators;
47
+ let __includeOnlyWithLayerMask_initializers = [];
48
+ let __includeOnlyWithLayerMask_extraInitializers = [];
49
+ let __lightmapMode_decorators;
50
+ let __lightmapMode_initializers = [];
51
+ let __lightmapMode_extraInitializers = [];
52
+ return _a = class Light extends _classSuper {
53
+ /**
54
+ * Defines light internal enabled state.
55
+ */
56
+ get internalEnabled() {
57
+ return this._internalEnabled;
58
+ }
59
+ set internalEnabled(value) {
60
+ this._internalEnabled = value;
61
+ this._resyncMeshes();
62
+ }
63
+ /**
64
+ * Defines how far from the source the light is impacting in scene units.
65
+ * Note: Unused in PBR material as the distance light falloff is defined following the inverse squared falloff.
66
+ */
67
+ get range() {
68
+ return this._range;
69
+ }
70
+ /**
71
+ * Defines how far from the source the light is impacting in scene units.
72
+ * Note: Unused in PBR material as the distance light falloff is defined following the inverse squared falloff.
73
+ */
74
+ set range(value) {
75
+ this._range = value;
76
+ this._inverseSquaredRange = 1.0 / (this.range * this.range);
77
+ }
78
+ /**
79
+ * Gets the photometric scale used to interpret the intensity.
80
+ * This is only relevant with PBR Materials where the light intensity can be defined in a physical way.
81
+ */
82
+ get intensityMode() {
83
+ return this._intensityMode;
84
+ }
85
+ /**
86
+ * Sets the photometric scale used to interpret the intensity.
87
+ * This is only relevant with PBR Materials where the light intensity can be defined in a physical way.
88
+ */
89
+ set intensityMode(value) {
90
+ this._intensityMode = value;
91
+ this._computePhotometricScale();
92
+ }
93
+ /**
94
+ * Gets the light radius used by PBR Materials to simulate soft area lights.
95
+ */
96
+ get radius() {
97
+ return this._radius;
98
+ }
99
+ /**
100
+ * sets the light radius used by PBR Materials to simulate soft area lights.
101
+ */
102
+ set radius(value) {
103
+ this._radius = value;
104
+ this._computePhotometricScale();
105
+ }
106
+ /**
107
+ * Defines the rendering priority of the lights. It can help in case of fallback or number of lights
108
+ * exceeding the number allowed of the materials.
109
+ */
110
+ get renderPriority() { return __classPrivateFieldGet(this, _Light_renderPriority_accessor_storage, "f"); }
111
+ set renderPriority(value) { __classPrivateFieldSet(this, _Light_renderPriority_accessor_storage, value, "f"); }
112
+ /**
113
+ * Gets whether or not the shadows are enabled for this light. This can help turning off/on shadow without detaching
114
+ * the current shadow generator.
115
+ */
116
+ get shadowEnabled() {
117
+ return this._shadowEnabled;
118
+ }
119
+ /**
120
+ * Sets whether or not the shadows are enabled for this light. This can help turning off/on shadow without detaching
121
+ * the current shadow generator.
122
+ */
123
+ set shadowEnabled(value) {
124
+ if (this._shadowEnabled === value) {
125
+ return;
126
+ }
127
+ this._shadowEnabled = value;
128
+ this._markMeshesAsLightDirty();
129
+ }
130
+ /**
131
+ * Gets the only meshes impacted by this light.
132
+ */
133
+ get includedOnlyMeshes() {
134
+ return this._includedOnlyMeshes;
135
+ }
136
+ /**
137
+ * Sets the only meshes impacted by this light.
138
+ */
139
+ set includedOnlyMeshes(value) {
140
+ this._includedOnlyMeshes = value;
141
+ this._hookArrayForIncludedOnly(value);
142
+ }
143
+ /**
144
+ * Gets the meshes not impacted by this light.
145
+ */
146
+ get excludedMeshes() {
147
+ return this._excludedMeshes;
148
+ }
149
+ /**
150
+ * Sets the meshes not impacted by this light.
151
+ */
152
+ set excludedMeshes(value) {
153
+ this._excludedMeshes = value;
154
+ this._hookArrayForExcluded(value);
155
+ }
156
+ /**
157
+ * Gets the layer id use to find what meshes are not impacted by the light.
158
+ * Inactive if 0
159
+ */
160
+ get excludeWithLayerMask() {
161
+ return this._excludeWithLayerMask;
162
+ }
163
+ /**
164
+ * Sets the layer id use to find what meshes are not impacted by the light.
165
+ * Inactive if 0
166
+ */
167
+ set excludeWithLayerMask(value) {
168
+ this._excludeWithLayerMask = value;
169
+ this._resyncMeshes();
170
+ }
171
+ /**
172
+ * Gets the layer id use to find what meshes are impacted by the light.
173
+ * Inactive if 0
174
+ */
175
+ get includeOnlyWithLayerMask() {
176
+ return this._includeOnlyWithLayerMask;
177
+ }
178
+ /**
179
+ * Sets the layer id use to find what meshes are impacted by the light.
180
+ * Inactive if 0
181
+ */
182
+ set includeOnlyWithLayerMask(value) {
183
+ this._includeOnlyWithLayerMask = value;
184
+ this._resyncMeshes();
185
+ }
186
+ /**
187
+ * Gets the lightmap mode of this light (should be one of the constants defined by Light.LIGHTMAP_x)
188
+ */
189
+ get lightmapMode() {
190
+ return this._lightmapMode;
191
+ }
192
+ /**
193
+ * Sets the lightmap mode of this light (should be one of the constants defined by Light.LIGHTMAP_x)
194
+ */
195
+ set lightmapMode(value) {
196
+ if (this._lightmapMode === value) {
197
+ return;
198
+ }
199
+ this._lightmapMode = value;
200
+ this._markMeshesAsLightDirty();
201
+ }
202
+ /**
203
+ * Returns the view matrix.
204
+ * @param _faceIndex The index of the face for which we want to extract the view matrix. Only used for point light types.
205
+ * @returns The view matrix. Can be null, if a view matrix cannot be defined for the type of light considered (as for a hemispherical light, for example).
206
+ */
207
+ getViewMatrix(_faceIndex) {
208
+ return null;
209
+ }
210
+ /**
211
+ * Returns the projection matrix.
212
+ * Note that viewMatrix and renderList are optional and are only used by lights that calculate the projection matrix from a list of meshes (e.g. directional lights with automatic extents calculation).
213
+ * @param _viewMatrix The view transform matrix of the light (optional).
214
+ * @param _renderList The list of meshes to take into account when calculating the projection matrix (optional).
215
+ * @returns The projection matrix. Can be null, if a projection matrix cannot be defined for the type of light considered (as for a hemispherical light, for example).
216
+ */
217
+ getProjectionMatrix(_viewMatrix, _renderList) {
218
+ return null;
219
+ }
220
+ /**
221
+ * Creates a Light object in the scene.
222
+ * Documentation : https://doc.babylonjs.com/features/featuresDeepDive/lights/lights_introduction
223
+ * @param name The friendly name of the light
224
+ * @param scene The scene the light belongs too
225
+ * @param dontAddToScene True to not add the light to the scene
226
+ */
227
+ constructor(name, scene, dontAddToScene) {
228
+ super(name, scene, false);
229
+ /**
230
+ * Diffuse gives the basic color to an object.
231
+ */
232
+ this.diffuse = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _diffuse_initializers, new Color3(1.0, 1.0, 1.0)));
233
+ /**
234
+ * Specular produces a highlight color on an object.
235
+ * Note: This is not affecting PBR materials.
236
+ */
237
+ this.specular = (__runInitializers(this, _diffuse_extraInitializers), __runInitializers(this, _specular_initializers, new Color3(1.0, 1.0, 1.0)));
238
+ /**
239
+ * Defines the falloff type for this light. This lets overriding how punctual light are
240
+ * falling off base on range or angle.
241
+ * This can be set to any values in Light.FALLOFF_x.
242
+ *
243
+ * Note: This is only useful for PBR Materials at the moment. This could be extended if required to
244
+ * other types of materials.
245
+ */
246
+ this.falloffType = (__runInitializers(this, _specular_extraInitializers), __runInitializers(this, _falloffType_initializers, _a.FALLOFF_DEFAULT));
247
+ /**
248
+ * Strength of the light.
249
+ * Note: By default it is define in the framework own unit.
250
+ * Note: In PBR materials the intensityMode can be use to chose what unit the intensity is defined in.
251
+ */
252
+ this.intensity = (__runInitializers(this, _falloffType_extraInitializers), __runInitializers(this, _intensity_initializers, 1.0));
253
+ /** @internal */
254
+ this._internalEnabled = (__runInitializers(this, _intensity_extraInitializers), true);
255
+ this._range = Number.MAX_VALUE;
256
+ /** @internal */
257
+ this._inverseSquaredRange = 0;
258
+ /**
259
+ * Cached photometric scale default to 1.0 as the automatic intensity mode defaults to 1.0 for every type
260
+ * of light.
261
+ */
262
+ this._photometricScale = 1.0;
263
+ this._intensityMode = _a.INTENSITYMODE_AUTOMATIC;
264
+ this._radius = 0.00001;
265
+ this._renderPriority = __runInitializers(this, __renderPriority_initializers, void 0);
266
+ _Light_renderPriority_accessor_storage.set(this, (__runInitializers(this, __renderPriority_extraInitializers), __runInitializers(this, _renderPriority_initializers, 0)));
267
+ this._shadowEnabled = (__runInitializers(this, _renderPriority_extraInitializers), __runInitializers(this, __shadowEnabled_initializers, true));
268
+ this._includedOnlyMeshes = __runInitializers(this, __shadowEnabled_extraInitializers);
269
+ this._excludeWithLayerMask = __runInitializers(this, __excludeWithLayerMask_initializers, 0);
270
+ this._includeOnlyWithLayerMask = (__runInitializers(this, __excludeWithLayerMask_extraInitializers), __runInitializers(this, __includeOnlyWithLayerMask_initializers, 0));
271
+ this._lightmapMode = (__runInitializers(this, __includeOnlyWithLayerMask_extraInitializers), __runInitializers(this, __lightmapMode_initializers, 0));
272
+ /**
273
+ * Shadow generators associated to the light.
274
+ * @internal Internal use only.
275
+ */
276
+ this._shadowGenerators = (__runInitializers(this, __lightmapMode_extraInitializers), null);
277
+ /**
278
+ * @internal Internal use only.
279
+ */
280
+ this._excludedMeshesIds = new Array();
281
+ /**
282
+ * @internal Internal use only.
283
+ */
284
+ this._includedOnlyMeshesIds = new Array();
285
+ /**
286
+ * Used internally by ClusteredLight to sort lights
287
+ * @internal
288
+ */
289
+ this._currentViewDepth = 0;
290
+ /**
291
+ * Used internally by ClusteredLightContainer to keep child lights out of mesh light source lists.
292
+ * @internal
293
+ */
294
+ this._clusteredContainer = null;
295
+ /** @internal */
296
+ this._isLight = true;
297
+ if (!dontAddToScene) {
298
+ this.getScene().addLight(this);
299
+ }
300
+ this._uniformBuffer = new UniformBuffer(this.getScene().getEngine(), undefined, undefined, name);
301
+ this._buildUniformLayout();
302
+ this.includedOnlyMeshes = [];
303
+ this.excludedMeshes = [];
304
+ if (!dontAddToScene) {
305
+ this._resyncMeshes();
306
+ }
307
+ }
308
+ /**
309
+ * Sets the passed Effect "effect" with the Light textures.
310
+ * @param effect The effect to update
311
+ * @param lightIndex The index of the light in the effect to update
312
+ * @returns The light
313
+ */
314
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
315
+ transferTexturesToEffect(effect, lightIndex) {
316
+ // Do nothing by default.
317
+ return this;
318
+ }
319
+ /**
320
+ * Binds the lights information from the scene to the effect for the given mesh.
321
+ * @param lightIndex Light index
322
+ * @param scene The scene where the light belongs to
323
+ * @param effect The effect we are binding the data to
324
+ * @param useSpecular Defines if specular is supported
325
+ * @param receiveShadows Defines if the effect (mesh) we bind the light for receives shadows
326
+ */
327
+ _bindLight(lightIndex, scene, effect, useSpecular, receiveShadows = true) {
328
+ const iAsString = lightIndex.toString();
329
+ let needUpdate = false;
330
+ this._uniformBuffer.bindToEffect(effect, "Light" + iAsString);
331
+ if (this._renderId !== scene.getRenderId() || this._lastUseSpecular !== useSpecular || !this._uniformBuffer.useUbo) {
332
+ this._renderId = scene.getRenderId();
333
+ this._lastUseSpecular = useSpecular;
334
+ const scaledIntensity = this.getScaledIntensity();
335
+ this.transferToEffect(effect, iAsString);
336
+ this.diffuse.scaleToRef(scaledIntensity, TmpColors.Color3[0]);
337
+ this._uniformBuffer.updateColor4("vLightDiffuse", TmpColors.Color3[0], this.range, iAsString);
338
+ if (useSpecular) {
339
+ this.specular.scaleToRef(scaledIntensity, TmpColors.Color3[1]);
340
+ this._uniformBuffer.updateColor4("vLightSpecular", TmpColors.Color3[1], this.radius, iAsString);
341
+ }
342
+ needUpdate = true;
343
+ }
344
+ // Textures might still need to be rebound.
345
+ this.transferTexturesToEffect(effect, iAsString);
346
+ // Shadows
347
+ if (scene.shadowsEnabled && this.shadowEnabled && receiveShadows) {
348
+ const shadowGenerator = this.getShadowGenerator(scene.activeCamera) ?? this.getShadowGenerator();
349
+ if (shadowGenerator) {
350
+ shadowGenerator.bindShadowLight(iAsString, effect);
351
+ needUpdate = true;
352
+ }
353
+ }
354
+ if (needUpdate) {
355
+ this._uniformBuffer.update();
356
+ }
357
+ else {
358
+ this._uniformBuffer.bindUniformBuffer();
359
+ }
360
+ }
361
+ /**
362
+ * Returns the string "Light".
363
+ * @returns the class name
364
+ */
365
+ getClassName() {
366
+ return "Light";
367
+ }
368
+ /**
369
+ * Converts the light information to a readable string for debug purpose.
370
+ * @param fullDetails Supports for multiple levels of logging within scene loading
371
+ * @returns the human readable light info
372
+ */
373
+ toString(fullDetails) {
374
+ let ret = "Name: " + this.name;
375
+ ret += ", type: " + ["Point", "Directional", "Spot", "Hemispheric", "Clustered"][this.getTypeID()];
376
+ if (this.animations) {
377
+ for (let i = 0; i < this.animations.length; i++) {
378
+ ret += ", animation[0]: " + this.animations[i].toString(fullDetails);
379
+ }
380
+ }
381
+ return ret;
382
+ }
383
+ /** @internal */
384
+ _syncParentEnabledState() {
385
+ super._syncParentEnabledState();
386
+ if (!this.isDisposed()) {
387
+ this._resyncMeshes();
388
+ }
389
+ }
390
+ /**
391
+ * Set the enabled state of this node.
392
+ * @param value - the new enabled state
393
+ */
394
+ setEnabled(value) {
395
+ super.setEnabled(value);
396
+ this._resyncMeshes();
397
+ }
398
+ /**
399
+ * Returns the Light associated shadow generator if any.
400
+ * @param camera Camera for which the shadow generator should be retrieved (default: null). If null, retrieves the default shadow generator
401
+ * @returns the associated shadow generator.
402
+ */
403
+ getShadowGenerator(camera = null) {
404
+ if (this._shadowGenerators === null) {
405
+ return null;
406
+ }
407
+ return this._shadowGenerators.get(camera) ?? null;
408
+ }
409
+ /**
410
+ * Returns all the shadow generators associated to this light
411
+ * @returns
412
+ */
413
+ getShadowGenerators() {
414
+ return this._shadowGenerators;
415
+ }
416
+ /**
417
+ * Returns a Vector3, the absolute light position in the World.
418
+ * @returns the world space position of the light
419
+ */
420
+ getAbsolutePosition() {
421
+ return Vector3.Zero();
422
+ }
423
+ /**
424
+ * Specifies if the light will affect the passed mesh.
425
+ * @param mesh The mesh to test against the light
426
+ * @returns true the mesh is affected otherwise, false.
427
+ */
428
+ canAffectMesh(mesh) {
429
+ if (!this.internalEnabled) {
430
+ return false;
431
+ }
432
+ if (!mesh) {
433
+ return true;
434
+ }
435
+ if (this.includedOnlyMeshes && this.includedOnlyMeshes.length > 0 && this.includedOnlyMeshes.indexOf(mesh) === -1) {
436
+ return false;
437
+ }
438
+ if (this.excludedMeshes && this.excludedMeshes.length > 0 && this.excludedMeshes.indexOf(mesh) !== -1) {
439
+ return false;
440
+ }
441
+ if (this.includeOnlyWithLayerMask !== 0 && (this.includeOnlyWithLayerMask & mesh.layerMask) === 0) {
442
+ return false;
443
+ }
444
+ if (this.excludeWithLayerMask !== 0 && this.excludeWithLayerMask & mesh.layerMask) {
445
+ return false;
446
+ }
447
+ return true;
448
+ }
449
+ /**
450
+ * Releases resources associated with this node.
451
+ * @param doNotRecurse Set to true to not recurse into each children (recurse into each children by default)
452
+ * @param disposeMaterialAndTextures Set to true to also dispose referenced materials and textures (false by default)
453
+ */
454
+ dispose(doNotRecurse, disposeMaterialAndTextures = false) {
455
+ if (this._shadowGenerators) {
456
+ const iterator = this._shadowGenerators.values();
457
+ for (let key = iterator.next(); key.done !== true; key = iterator.next()) {
458
+ const shadowGenerator = key.value;
459
+ shadowGenerator.dispose();
460
+ }
461
+ this._shadowGenerators = null;
462
+ }
463
+ // Animations
464
+ this.getScene().stopAnimation(this);
465
+ if (this._parentContainer) {
466
+ const index = this._parentContainer.lights.indexOf(this);
467
+ if (index > -1) {
468
+ this._parentContainer.lights.splice(index, 1);
469
+ }
470
+ this._parentContainer = null;
471
+ }
472
+ // Remove from meshes
473
+ for (const mesh of this.getScene().meshes) {
474
+ mesh._removeLightSource(this, true);
475
+ }
476
+ this._uniformBuffer.dispose();
477
+ // Remove from scene
478
+ this.getScene().removeLight(this);
479
+ super.dispose(doNotRecurse, disposeMaterialAndTextures);
480
+ }
481
+ /**
482
+ * Returns the light type ID (integer).
483
+ * @returns The light Type id as a constant defines in Light.LIGHTTYPEID_x
484
+ */
485
+ // eslint-disable-next-line @typescript-eslint/naming-convention
486
+ getTypeID() {
487
+ return 0;
488
+ }
489
+ /**
490
+ * Returns the intensity scaled by the Photometric Scale according to the light type and intensity mode.
491
+ * @returns the scaled intensity in intensity mode unit
492
+ */
493
+ getScaledIntensity() {
494
+ return this._photometricScale * this.intensity;
495
+ }
496
+ /**
497
+ * Returns a new Light object, named "name", from the current one.
498
+ * @param name The name of the cloned light
499
+ * @param newParent The parent of this light, if it has one
500
+ * @returns the new created light
501
+ */
502
+ clone(name, newParent = null) {
503
+ const constructor = _a.GetConstructorFromName(this.getTypeID(), name, this.getScene());
504
+ if (!constructor) {
505
+ return null;
506
+ }
507
+ const clonedLight = SerializationHelper.Clone(constructor, this);
508
+ if (name) {
509
+ clonedLight.name = name;
510
+ }
511
+ if (newParent) {
512
+ clonedLight.parent = newParent;
513
+ }
514
+ clonedLight.setEnabled(this.isEnabled());
515
+ this.onClonedObservable.notifyObservers(clonedLight);
516
+ return clonedLight;
517
+ }
518
+ /**
519
+ * Serializes the current light into a Serialization object.
520
+ * @returns the serialized object.
521
+ */
522
+ serialize() {
523
+ const serializationObject = SerializationHelper.Serialize(this);
524
+ serializationObject.uniqueId = this.uniqueId;
525
+ // Type
526
+ serializationObject.type = this.getTypeID();
527
+ // Parent
528
+ if (this.parent) {
529
+ this.parent._serializeAsParent(serializationObject);
530
+ }
531
+ // Inclusion / exclusions
532
+ if (this.excludedMeshes.length > 0) {
533
+ serializationObject.excludedMeshesIds = [];
534
+ for (const mesh of this.excludedMeshes) {
535
+ serializationObject.excludedMeshesIds.push(mesh.id);
536
+ }
537
+ }
538
+ if (this.includedOnlyMeshes.length > 0) {
539
+ serializationObject.includedOnlyMeshesIds = [];
540
+ for (const mesh of this.includedOnlyMeshes) {
541
+ serializationObject.includedOnlyMeshesIds.push(mesh.id);
542
+ }
543
+ }
544
+ // Animations
545
+ SerializationHelper.AppendSerializedAnimations(this, serializationObject);
546
+ serializationObject.ranges = this.serializeAnimationRanges();
547
+ serializationObject.isEnabled = this.isEnabled();
548
+ return serializationObject;
549
+ }
550
+ /**
551
+ * Creates a new typed light from the passed type (integer) : point light = 0, directional light = 1, spot light = 2, hemispheric light = 3.
552
+ * This new light is named "name" and added to the passed scene.
553
+ * @param type Type according to the types available in Light.LIGHTTYPEID_x
554
+ * @param name The friendly name of the light
555
+ * @param scene The scene the new light will belong to
556
+ * @returns the constructor function
557
+ */
558
+ static GetConstructorFromName(type, name, scene) {
559
+ const constructorFunc = Node.Construct("Light_Type_" + type, name, scene);
560
+ if (constructorFunc) {
561
+ return constructorFunc;
562
+ }
563
+ // Default to no light for none present once.
564
+ return null;
565
+ }
566
+ /**
567
+ * Parses the passed "parsedLight" and returns a new instanced Light from this parsing.
568
+ * @param parsedLight The JSON representation of the light
569
+ * @param scene The scene to create the parsed light in
570
+ * @param rootUrl The root url to use to load assets referenced by the light (e.g. textures)
571
+ * @returns the created light after parsing
572
+ */
573
+ static Parse(parsedLight, scene, rootUrl = "") {
574
+ const constructor = _a.GetConstructorFromName(parsedLight.type, parsedLight.name, scene);
575
+ if (!constructor) {
576
+ return null;
577
+ }
578
+ const light = SerializationHelper.Parse(constructor, parsedLight, scene, rootUrl);
579
+ // Inclusion / exclusions
580
+ if (parsedLight.excludedMeshesIds) {
581
+ light._excludedMeshesIds = parsedLight.excludedMeshesIds;
582
+ }
583
+ if (parsedLight.includedOnlyMeshesIds) {
584
+ light._includedOnlyMeshesIds = parsedLight.includedOnlyMeshesIds;
585
+ }
586
+ // Parent
587
+ if (parsedLight.parentId !== undefined) {
588
+ light._waitingParentId = parsedLight.parentId;
589
+ }
590
+ if (parsedLight.parentInstanceIndex !== undefined) {
591
+ light._waitingParentInstanceIndex = parsedLight.parentInstanceIndex;
592
+ }
593
+ // Falloff
594
+ if (parsedLight.falloffType !== undefined) {
595
+ light.falloffType = parsedLight.falloffType;
596
+ }
597
+ // Lightmaps
598
+ if (parsedLight.lightmapMode !== undefined) {
599
+ light.lightmapMode = parsedLight.lightmapMode;
600
+ }
601
+ // Animations
602
+ if (parsedLight.animations) {
603
+ for (let animationIndex = 0; animationIndex < parsedLight.animations.length; animationIndex++) {
604
+ const parsedAnimation = parsedLight.animations[animationIndex];
605
+ const internalClass = GetClass("BABYLON.Animation");
606
+ if (internalClass) {
607
+ light.animations.push(internalClass.Parse(parsedAnimation));
608
+ }
609
+ }
610
+ Node.ParseAnimationRanges(light, parsedLight, scene);
611
+ }
612
+ if (parsedLight.autoAnimate) {
613
+ scene.beginAnimation(light, parsedLight.autoAnimateFrom, parsedLight.autoAnimateTo, parsedLight.autoAnimateLoop, parsedLight.autoAnimateSpeed || 1.0);
614
+ }
615
+ // Check if isEnabled is defined to be back compatible with prior serialized versions.
616
+ if (parsedLight.isEnabled !== undefined) {
617
+ light.setEnabled(parsedLight.isEnabled);
618
+ }
619
+ light._onParsed(parsedLight, scene, rootUrl);
620
+ return light;
621
+ }
622
+ /**
623
+ * Called after the light has been fully parsed and all base properties have been set.
624
+ * Override in subclasses to handle custom serialized data.
625
+ * @param _parsedLight The JSON representation of the light
626
+ * @param _scene The scene the light belongs to
627
+ * @param _rootUrl The root url to use to load assets referenced by the light (e.g. textures)
628
+ */
629
+ _onParsed(_parsedLight, _scene, _rootUrl = "") {
630
+ // Override in subclasses
631
+ }
632
+ _hookArrayForExcluded(array) {
633
+ const oldPush = array.push;
634
+ array.push = (...items) => {
635
+ const result = oldPush.apply(array, items);
636
+ if (this._clusteredContainer) {
637
+ return result;
638
+ }
639
+ for (const item of items) {
640
+ item._resyncLightSource(this);
641
+ }
642
+ return result;
643
+ };
644
+ const oldSplice = array.splice;
645
+ array.splice = (index, deleteCount) => {
646
+ const deleted = oldSplice.call(array, index, deleteCount ?? array.length);
647
+ if (this._clusteredContainer) {
648
+ return deleted;
649
+ }
650
+ for (const item of deleted) {
651
+ item._resyncLightSource(this);
652
+ }
653
+ return deleted;
654
+ };
655
+ if (!this._clusteredContainer) {
656
+ for (const item of array) {
657
+ item._resyncLightSource(this);
658
+ }
659
+ }
660
+ }
661
+ _hookArrayForIncludedOnly(array) {
662
+ const oldPush = array.push;
663
+ array.push = (...items) => {
664
+ const result = oldPush.apply(array, items);
665
+ this._resyncMeshes();
666
+ return result;
667
+ };
668
+ const oldSplice = array.splice;
669
+ array.splice = (index, deleteCount) => {
670
+ const deleted = oldSplice.call(array, index, deleteCount ?? array.length);
671
+ this._resyncMeshes();
672
+ return deleted;
673
+ };
674
+ this._resyncMeshes();
675
+ }
676
+ _resyncMeshes() {
677
+ if (this._clusteredContainer) {
678
+ return;
679
+ }
680
+ for (const mesh of this.getScene().meshes) {
681
+ mesh._resyncLightSource(this);
682
+ }
683
+ }
684
+ /**
685
+ * Forces the meshes to update their light related information in their rendering used effects
686
+ * @internal Internal Use Only
687
+ */
688
+ _markMeshesAsLightDirty() {
689
+ for (const mesh of this.getScene().meshes) {
690
+ if (mesh.lightSources.indexOf(this) !== -1) {
691
+ mesh._markSubMeshesAsLightDirty();
692
+ }
693
+ }
694
+ }
695
+ /**
696
+ * Recomputes the cached photometric scale if needed.
697
+ */
698
+ _computePhotometricScale() {
699
+ this._photometricScale = this._getPhotometricScale();
700
+ this.getScene().resetCachedMaterial();
701
+ }
702
+ /**
703
+ * @returns the Photometric Scale according to the light type and intensity mode.
704
+ */
705
+ _getPhotometricScale() {
706
+ let photometricScale = 0.0;
707
+ const lightTypeID = this.getTypeID();
708
+ //get photometric mode
709
+ let photometricMode = this.intensityMode;
710
+ if (photometricMode === _a.INTENSITYMODE_AUTOMATIC) {
711
+ if (lightTypeID === _a.LIGHTTYPEID_DIRECTIONALLIGHT) {
712
+ photometricMode = _a.INTENSITYMODE_ILLUMINANCE;
713
+ }
714
+ else {
715
+ photometricMode = _a.INTENSITYMODE_LUMINOUSINTENSITY;
716
+ }
717
+ }
718
+ //compute photometric scale
719
+ switch (lightTypeID) {
720
+ case _a.LIGHTTYPEID_POINTLIGHT:
721
+ case _a.LIGHTTYPEID_SPOTLIGHT:
722
+ switch (photometricMode) {
723
+ case _a.INTENSITYMODE_LUMINOUSPOWER:
724
+ photometricScale = 1.0 / (4.0 * Math.PI);
725
+ break;
726
+ case _a.INTENSITYMODE_LUMINOUSINTENSITY:
727
+ photometricScale = 1.0;
728
+ break;
729
+ case _a.INTENSITYMODE_LUMINANCE:
730
+ photometricScale = this.radius * this.radius;
731
+ break;
732
+ }
733
+ break;
734
+ case _a.LIGHTTYPEID_DIRECTIONALLIGHT:
735
+ switch (photometricMode) {
736
+ case _a.INTENSITYMODE_ILLUMINANCE:
737
+ photometricScale = 1.0;
738
+ break;
739
+ case _a.INTENSITYMODE_LUMINANCE: {
740
+ // When radius (and therefore solid angle) is non-zero a directional lights brightness can be specified via central (peak) luminance.
741
+ // For a directional light the 'radius' defines the angular radius (in radians) rather than world-space radius (e.g. in metres).
742
+ let apexAngleRadians = this.radius;
743
+ // Impose a minimum light angular size to avoid the light becoming an infinitely small angular light source (i.e. a dirac delta function).
744
+ apexAngleRadians = Math.max(apexAngleRadians, 0.001);
745
+ const solidAngle = 2.0 * Math.PI * (1.0 - Math.cos(apexAngleRadians));
746
+ photometricScale = solidAngle;
747
+ break;
748
+ }
749
+ }
750
+ break;
751
+ case _a.LIGHTTYPEID_HEMISPHERICLIGHT:
752
+ // No fall off in hemispheric light.
753
+ photometricScale = 1.0;
754
+ break;
755
+ case _a.LIGHTTYPEID_RECT_AREALIGHT:
756
+ // Area lights interpret their intensity directly; no additional photometric scaling is applied.
757
+ photometricScale = 1.0;
758
+ break;
759
+ }
760
+ return photometricScale;
761
+ }
762
+ /**
763
+ * Reorder the light in the scene according to their defined priority.
764
+ * @internal Internal Use Only
765
+ */
766
+ _reorderLightsInScene() {
767
+ const scene = this.getScene();
768
+ if (this._renderPriority != 0) {
769
+ scene.requireLightSorting = true;
770
+ }
771
+ this.getScene().sortLightsByPriority();
772
+ }
773
+ /**
774
+ * Returns true when all texture resources used by this light are ready (e.g. projection textures).
775
+ * Override in subclasses that use texture resources.
776
+ * @returns true if all light textures are ready
777
+ */
778
+ areLightTexturesReady() {
779
+ return true;
780
+ }
781
+ /**
782
+ * @internal
783
+ */
784
+ _isReady() {
785
+ return true;
786
+ }
787
+ },
788
+ _Light_renderPriority_accessor_storage = new WeakMap(),
789
+ (() => {
790
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
791
+ _diffuse_decorators = [serializeAsColor3()];
792
+ _specular_decorators = [serializeAsColor3()];
793
+ _falloffType_decorators = [serialize()];
794
+ _intensity_decorators = [serialize()];
795
+ _get_range_decorators = [serialize()];
796
+ _get_intensityMode_decorators = [serialize()];
797
+ _get_radius_decorators = [serialize()];
798
+ __renderPriority_decorators = [serialize()];
799
+ _renderPriority_decorators = [expandToProperty("_reorderLightsInScene")];
800
+ __shadowEnabled_decorators = [serialize("shadowEnabled")];
801
+ __excludeWithLayerMask_decorators = [serialize("excludeWithLayerMask")];
802
+ __includeOnlyWithLayerMask_decorators = [serialize("includeOnlyWithLayerMask")];
803
+ __lightmapMode_decorators = [serialize("lightmapMode")];
804
+ __esDecorate(_a, null, _get_range_decorators, { kind: "getter", name: "range", static: false, private: false, access: { has: obj => "range" in obj, get: obj => obj.range }, metadata: _metadata }, null, _instanceExtraInitializers);
805
+ __esDecorate(_a, null, _get_intensityMode_decorators, { kind: "getter", name: "intensityMode", static: false, private: false, access: { has: obj => "intensityMode" in obj, get: obj => obj.intensityMode }, metadata: _metadata }, null, _instanceExtraInitializers);
806
+ __esDecorate(_a, null, _get_radius_decorators, { kind: "getter", name: "radius", static: false, private: false, access: { has: obj => "radius" in obj, get: obj => obj.radius }, metadata: _metadata }, null, _instanceExtraInitializers);
807
+ __esDecorate(_a, null, _renderPriority_decorators, { kind: "accessor", name: "renderPriority", static: false, private: false, access: { has: obj => "renderPriority" in obj, get: obj => obj.renderPriority, set: (obj, value) => { obj.renderPriority = value; } }, metadata: _metadata }, _renderPriority_initializers, _renderPriority_extraInitializers);
808
+ __esDecorate(null, null, _diffuse_decorators, { kind: "field", name: "diffuse", static: false, private: false, access: { has: obj => "diffuse" in obj, get: obj => obj.diffuse, set: (obj, value) => { obj.diffuse = value; } }, metadata: _metadata }, _diffuse_initializers, _diffuse_extraInitializers);
809
+ __esDecorate(null, null, _specular_decorators, { kind: "field", name: "specular", static: false, private: false, access: { has: obj => "specular" in obj, get: obj => obj.specular, set: (obj, value) => { obj.specular = value; } }, metadata: _metadata }, _specular_initializers, _specular_extraInitializers);
810
+ __esDecorate(null, null, _falloffType_decorators, { kind: "field", name: "falloffType", static: false, private: false, access: { has: obj => "falloffType" in obj, get: obj => obj.falloffType, set: (obj, value) => { obj.falloffType = value; } }, metadata: _metadata }, _falloffType_initializers, _falloffType_extraInitializers);
811
+ __esDecorate(null, null, _intensity_decorators, { kind: "field", name: "intensity", static: false, private: false, access: { has: obj => "intensity" in obj, get: obj => obj.intensity, set: (obj, value) => { obj.intensity = value; } }, metadata: _metadata }, _intensity_initializers, _intensity_extraInitializers);
812
+ __esDecorate(null, null, __renderPriority_decorators, { kind: "field", name: "_renderPriority", static: false, private: false, access: { has: obj => "_renderPriority" in obj, get: obj => obj._renderPriority, set: (obj, value) => { obj._renderPriority = value; } }, metadata: _metadata }, __renderPriority_initializers, __renderPriority_extraInitializers);
813
+ __esDecorate(null, null, __shadowEnabled_decorators, { kind: "field", name: "_shadowEnabled", static: false, private: false, access: { has: obj => "_shadowEnabled" in obj, get: obj => obj._shadowEnabled, set: (obj, value) => { obj._shadowEnabled = value; } }, metadata: _metadata }, __shadowEnabled_initializers, __shadowEnabled_extraInitializers);
814
+ __esDecorate(null, null, __excludeWithLayerMask_decorators, { kind: "field", name: "_excludeWithLayerMask", static: false, private: false, access: { has: obj => "_excludeWithLayerMask" in obj, get: obj => obj._excludeWithLayerMask, set: (obj, value) => { obj._excludeWithLayerMask = value; } }, metadata: _metadata }, __excludeWithLayerMask_initializers, __excludeWithLayerMask_extraInitializers);
815
+ __esDecorate(null, null, __includeOnlyWithLayerMask_decorators, { kind: "field", name: "_includeOnlyWithLayerMask", static: false, private: false, access: { has: obj => "_includeOnlyWithLayerMask" in obj, get: obj => obj._includeOnlyWithLayerMask, set: (obj, value) => { obj._includeOnlyWithLayerMask = value; } }, metadata: _metadata }, __includeOnlyWithLayerMask_initializers, __includeOnlyWithLayerMask_extraInitializers);
816
+ __esDecorate(null, null, __lightmapMode_decorators, { kind: "field", name: "_lightmapMode", static: false, private: false, access: { has: obj => "_lightmapMode" in obj, get: obj => obj._lightmapMode, set: (obj, value) => { obj._lightmapMode = value; } }, metadata: _metadata }, __lightmapMode_initializers, __lightmapMode_extraInitializers);
817
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
818
+ })(),
186
819
  /**
187
- * Diffuse gives the basic color to an object.
820
+ * Falloff Default: light is falling off following the material specification:
821
+ * standard material is using standard falloff whereas pbr material can request special falloff per materials.
188
822
  */
189
- this.diffuse = new Color3(1.0, 1.0, 1.0);
823
+ _a.FALLOFF_DEFAULT = LightConstants.FALLOFF_DEFAULT,
190
824
  /**
191
- * Specular produces a highlight color on an object.
192
- * Note: This is not affecting PBR materials.
825
+ * Falloff Physical: light is falling off following the inverse squared distance law.
193
826
  */
194
- this.specular = new Color3(1.0, 1.0, 1.0);
827
+ _a.FALLOFF_PHYSICAL = LightConstants.FALLOFF_PHYSICAL,
195
828
  /**
196
- * Defines the falloff type for this light. This lets overriding how punctual light are
197
- * falling off base on range or angle.
198
- * This can be set to any values in Light.FALLOFF_x.
199
- *
200
- * Note: This is only useful for PBR Materials at the moment. This could be extended if required to
201
- * other types of materials.
829
+ * Falloff gltf: light is falling off as described in the gltf moving to PBR document
830
+ * to enhance interoperability with other engines.
202
831
  */
203
- this.falloffType = Light.FALLOFF_DEFAULT;
832
+ _a.FALLOFF_GLTF = LightConstants.FALLOFF_GLTF,
204
833
  /**
205
- * Strength of the light.
206
- * Note: By default it is define in the framework own unit.
207
- * Note: In PBR materials the intensityMode can be use to chose what unit the intensity is defined in.
834
+ * Falloff Standard: light is falling off like in the standard material
835
+ * to enhance interoperability with other materials.
208
836
  */
209
- this.intensity = 1.0;
210
- /** @internal */
211
- this._internalEnabled = true;
212
- this._range = Number.MAX_VALUE;
213
- /** @internal */
214
- this._inverseSquaredRange = 0;
837
+ _a.FALLOFF_STANDARD = LightConstants.FALLOFF_STANDARD,
838
+ //lightmapMode Consts
215
839
  /**
216
- * Cached photometric scale default to 1.0 as the automatic intensity mode defaults to 1.0 for every type
217
- * of light.
840
+ * If every light affecting the material is in this lightmapMode,
841
+ * material.lightmapTexture adds or multiplies
842
+ * (depends on material.useLightmapAsShadowmap)
843
+ * after every other light calculations.
218
844
  */
219
- this._photometricScale = 1.0;
220
- this._intensityMode = Light.INTENSITYMODE_AUTOMATIC;
221
- this._radius = 0.00001;
845
+ _a.LIGHTMAP_DEFAULT = LightConstants.LIGHTMAP_DEFAULT,
222
846
  /**
223
- * Defines the rendering priority of the lights. It can help in case of fallback or number of lights
224
- * exceeding the number allowed of the materials.
847
+ * material.lightmapTexture as only diffuse lighting from this light
848
+ * adds only specular lighting from this light
849
+ * adds dynamic shadows
225
850
  */
226
- this.renderPriority = 0;
227
- this._shadowEnabled = true;
228
- this._excludeWithLayerMask = 0;
229
- this._includeOnlyWithLayerMask = 0;
230
- this._lightmapMode = 0;
851
+ _a.LIGHTMAP_SPECULAR = LightConstants.LIGHTMAP_SPECULAR,
231
852
  /**
232
- * Shadow generators associated to the light.
233
- * @internal Internal use only.
853
+ * material.lightmapTexture as only lighting
854
+ * no light calculation from this light
855
+ * only adds dynamic shadows from this light
234
856
  */
235
- this._shadowGenerators = null;
857
+ _a.LIGHTMAP_SHADOWSONLY = LightConstants.LIGHTMAP_SHADOWSONLY,
858
+ // Intensity Mode Consts
236
859
  /**
237
- * @internal Internal use only.
860
+ * Each light type uses the default quantity according to its type:
861
+ * point/spot lights use luminous intensity
862
+ * directional lights use illuminance
238
863
  */
239
- this._excludedMeshesIds = new Array();
864
+ _a.INTENSITYMODE_AUTOMATIC = LightConstants.INTENSITYMODE_AUTOMATIC,
240
865
  /**
241
- * @internal Internal use only.
866
+ * lumen (lm)
242
867
  */
243
- this._includedOnlyMeshesIds = new Array();
868
+ _a.INTENSITYMODE_LUMINOUSPOWER = LightConstants.INTENSITYMODE_LUMINOUSPOWER,
244
869
  /**
245
- * Used internally by ClusteredLight to sort lights
246
- * @internal
870
+ * candela (lm/sr)
247
871
  */
248
- this._currentViewDepth = 0;
872
+ _a.INTENSITYMODE_LUMINOUSINTENSITY = LightConstants.INTENSITYMODE_LUMINOUSINTENSITY,
249
873
  /**
250
- * Used internally by ClusteredLightContainer to keep child lights out of mesh light source lists.
251
- * @internal
874
+ * lux (lm/m^2)
252
875
  */
253
- this._clusteredContainer = null;
254
- /** @internal */
255
- this._isLight = true;
256
- if (!dontAddToScene) {
257
- this.getScene().addLight(this);
258
- }
259
- this._uniformBuffer = new UniformBuffer(this.getScene().getEngine(), undefined, undefined, name);
260
- this._buildUniformLayout();
261
- this.includedOnlyMeshes = [];
262
- this.excludedMeshes = [];
263
- if (!dontAddToScene) {
264
- this._resyncMeshes();
265
- }
266
- }
267
- /**
268
- * Sets the passed Effect "effect" with the Light textures.
269
- * @param effect The effect to update
270
- * @param lightIndex The index of the light in the effect to update
271
- * @returns The light
272
- */
273
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
274
- transferTexturesToEffect(effect, lightIndex) {
275
- // Do nothing by default.
276
- return this;
277
- }
278
- /**
279
- * Binds the lights information from the scene to the effect for the given mesh.
280
- * @param lightIndex Light index
281
- * @param scene The scene where the light belongs to
282
- * @param effect The effect we are binding the data to
283
- * @param useSpecular Defines if specular is supported
284
- * @param receiveShadows Defines if the effect (mesh) we bind the light for receives shadows
285
- */
286
- _bindLight(lightIndex, scene, effect, useSpecular, receiveShadows = true) {
287
- const iAsString = lightIndex.toString();
288
- let needUpdate = false;
289
- this._uniformBuffer.bindToEffect(effect, "Light" + iAsString);
290
- if (this._renderId !== scene.getRenderId() || this._lastUseSpecular !== useSpecular || !this._uniformBuffer.useUbo) {
291
- this._renderId = scene.getRenderId();
292
- this._lastUseSpecular = useSpecular;
293
- const scaledIntensity = this.getScaledIntensity();
294
- this.transferToEffect(effect, iAsString);
295
- this.diffuse.scaleToRef(scaledIntensity, TmpColors.Color3[0]);
296
- this._uniformBuffer.updateColor4("vLightDiffuse", TmpColors.Color3[0], this.range, iAsString);
297
- if (useSpecular) {
298
- this.specular.scaleToRef(scaledIntensity, TmpColors.Color3[1]);
299
- this._uniformBuffer.updateColor4("vLightSpecular", TmpColors.Color3[1], this.radius, iAsString);
300
- }
301
- needUpdate = true;
302
- }
303
- // Textures might still need to be rebound.
304
- this.transferTexturesToEffect(effect, iAsString);
305
- // Shadows
306
- if (scene.shadowsEnabled && this.shadowEnabled && receiveShadows) {
307
- const shadowGenerator = this.getShadowGenerator(scene.activeCamera) ?? this.getShadowGenerator();
308
- if (shadowGenerator) {
309
- shadowGenerator.bindShadowLight(iAsString, effect);
310
- needUpdate = true;
311
- }
312
- }
313
- if (needUpdate) {
314
- this._uniformBuffer.update();
315
- }
316
- else {
317
- this._uniformBuffer.bindUniformBuffer();
318
- }
319
- }
320
- /**
321
- * Returns the string "Light".
322
- * @returns the class name
323
- */
324
- getClassName() {
325
- return "Light";
326
- }
327
- /**
328
- * Converts the light information to a readable string for debug purpose.
329
- * @param fullDetails Supports for multiple levels of logging within scene loading
330
- * @returns the human readable light info
331
- */
332
- toString(fullDetails) {
333
- let ret = "Name: " + this.name;
334
- ret += ", type: " + ["Point", "Directional", "Spot", "Hemispheric", "Clustered"][this.getTypeID()];
335
- if (this.animations) {
336
- for (let i = 0; i < this.animations.length; i++) {
337
- ret += ", animation[0]: " + this.animations[i].toString(fullDetails);
338
- }
339
- }
340
- return ret;
341
- }
342
- /** @internal */
343
- _syncParentEnabledState() {
344
- super._syncParentEnabledState();
345
- if (!this.isDisposed()) {
346
- this._resyncMeshes();
347
- }
348
- }
349
- /**
350
- * Set the enabled state of this node.
351
- * @param value - the new enabled state
352
- */
353
- setEnabled(value) {
354
- super.setEnabled(value);
355
- this._resyncMeshes();
356
- }
357
- /**
358
- * Returns the Light associated shadow generator if any.
359
- * @param camera Camera for which the shadow generator should be retrieved (default: null). If null, retrieves the default shadow generator
360
- * @returns the associated shadow generator.
361
- */
362
- getShadowGenerator(camera = null) {
363
- if (this._shadowGenerators === null) {
364
- return null;
365
- }
366
- return this._shadowGenerators.get(camera) ?? null;
367
- }
368
- /**
369
- * Returns all the shadow generators associated to this light
370
- * @returns
371
- */
372
- getShadowGenerators() {
373
- return this._shadowGenerators;
374
- }
375
- /**
376
- * Returns a Vector3, the absolute light position in the World.
377
- * @returns the world space position of the light
378
- */
379
- getAbsolutePosition() {
380
- return Vector3.Zero();
381
- }
382
- /**
383
- * Specifies if the light will affect the passed mesh.
384
- * @param mesh The mesh to test against the light
385
- * @returns true the mesh is affected otherwise, false.
386
- */
387
- canAffectMesh(mesh) {
388
- if (!this.internalEnabled) {
389
- return false;
390
- }
391
- if (!mesh) {
392
- return true;
393
- }
394
- if (this.includedOnlyMeshes && this.includedOnlyMeshes.length > 0 && this.includedOnlyMeshes.indexOf(mesh) === -1) {
395
- return false;
396
- }
397
- if (this.excludedMeshes && this.excludedMeshes.length > 0 && this.excludedMeshes.indexOf(mesh) !== -1) {
398
- return false;
399
- }
400
- if (this.includeOnlyWithLayerMask !== 0 && (this.includeOnlyWithLayerMask & mesh.layerMask) === 0) {
401
- return false;
402
- }
403
- if (this.excludeWithLayerMask !== 0 && this.excludeWithLayerMask & mesh.layerMask) {
404
- return false;
405
- }
406
- return true;
407
- }
408
- /**
409
- * Releases resources associated with this node.
410
- * @param doNotRecurse Set to true to not recurse into each children (recurse into each children by default)
411
- * @param disposeMaterialAndTextures Set to true to also dispose referenced materials and textures (false by default)
412
- */
413
- dispose(doNotRecurse, disposeMaterialAndTextures = false) {
414
- if (this._shadowGenerators) {
415
- const iterator = this._shadowGenerators.values();
416
- for (let key = iterator.next(); key.done !== true; key = iterator.next()) {
417
- const shadowGenerator = key.value;
418
- shadowGenerator.dispose();
419
- }
420
- this._shadowGenerators = null;
421
- }
422
- // Animations
423
- this.getScene().stopAnimation(this);
424
- if (this._parentContainer) {
425
- const index = this._parentContainer.lights.indexOf(this);
426
- if (index > -1) {
427
- this._parentContainer.lights.splice(index, 1);
428
- }
429
- this._parentContainer = null;
430
- }
431
- // Remove from meshes
432
- for (const mesh of this.getScene().meshes) {
433
- mesh._removeLightSource(this, true);
434
- }
435
- this._uniformBuffer.dispose();
436
- // Remove from scene
437
- this.getScene().removeLight(this);
438
- super.dispose(doNotRecurse, disposeMaterialAndTextures);
439
- }
440
- /**
441
- * Returns the light type ID (integer).
442
- * @returns The light Type id as a constant defines in Light.LIGHTTYPEID_x
443
- */
444
- // eslint-disable-next-line @typescript-eslint/naming-convention
445
- getTypeID() {
446
- return 0;
447
- }
448
- /**
449
- * Returns the intensity scaled by the Photometric Scale according to the light type and intensity mode.
450
- * @returns the scaled intensity in intensity mode unit
451
- */
452
- getScaledIntensity() {
453
- return this._photometricScale * this.intensity;
454
- }
455
- /**
456
- * Returns a new Light object, named "name", from the current one.
457
- * @param name The name of the cloned light
458
- * @param newParent The parent of this light, if it has one
459
- * @returns the new created light
460
- */
461
- clone(name, newParent = null) {
462
- const constructor = Light.GetConstructorFromName(this.getTypeID(), name, this.getScene());
463
- if (!constructor) {
464
- return null;
465
- }
466
- const clonedLight = SerializationHelper.Clone(constructor, this);
467
- if (name) {
468
- clonedLight.name = name;
469
- }
470
- if (newParent) {
471
- clonedLight.parent = newParent;
472
- }
473
- clonedLight.setEnabled(this.isEnabled());
474
- this.onClonedObservable.notifyObservers(clonedLight);
475
- return clonedLight;
476
- }
477
- /**
478
- * Serializes the current light into a Serialization object.
479
- * @returns the serialized object.
480
- */
481
- serialize() {
482
- const serializationObject = SerializationHelper.Serialize(this);
483
- serializationObject.uniqueId = this.uniqueId;
484
- // Type
485
- serializationObject.type = this.getTypeID();
486
- // Parent
487
- if (this.parent) {
488
- this.parent._serializeAsParent(serializationObject);
489
- }
490
- // Inclusion / exclusions
491
- if (this.excludedMeshes.length > 0) {
492
- serializationObject.excludedMeshesIds = [];
493
- for (const mesh of this.excludedMeshes) {
494
- serializationObject.excludedMeshesIds.push(mesh.id);
495
- }
496
- }
497
- if (this.includedOnlyMeshes.length > 0) {
498
- serializationObject.includedOnlyMeshesIds = [];
499
- for (const mesh of this.includedOnlyMeshes) {
500
- serializationObject.includedOnlyMeshesIds.push(mesh.id);
501
- }
502
- }
503
- // Animations
504
- SerializationHelper.AppendSerializedAnimations(this, serializationObject);
505
- serializationObject.ranges = this.serializeAnimationRanges();
506
- serializationObject.isEnabled = this.isEnabled();
507
- return serializationObject;
508
- }
509
- /**
510
- * Creates a new typed light from the passed type (integer) : point light = 0, directional light = 1, spot light = 2, hemispheric light = 3.
511
- * This new light is named "name" and added to the passed scene.
512
- * @param type Type according to the types available in Light.LIGHTTYPEID_x
513
- * @param name The friendly name of the light
514
- * @param scene The scene the new light will belong to
515
- * @returns the constructor function
516
- */
517
- static GetConstructorFromName(type, name, scene) {
518
- const constructorFunc = Node.Construct("Light_Type_" + type, name, scene);
519
- if (constructorFunc) {
520
- return constructorFunc;
521
- }
522
- // Default to no light for none present once.
523
- return null;
524
- }
525
- /**
526
- * Parses the passed "parsedLight" and returns a new instanced Light from this parsing.
527
- * @param parsedLight The JSON representation of the light
528
- * @param scene The scene to create the parsed light in
529
- * @returns the created light after parsing
530
- */
531
- static Parse(parsedLight, scene) {
532
- const constructor = Light.GetConstructorFromName(parsedLight.type, parsedLight.name, scene);
533
- if (!constructor) {
534
- return null;
535
- }
536
- const light = SerializationHelper.Parse(constructor, parsedLight, scene);
537
- // Inclusion / exclusions
538
- if (parsedLight.excludedMeshesIds) {
539
- light._excludedMeshesIds = parsedLight.excludedMeshesIds;
540
- }
541
- if (parsedLight.includedOnlyMeshesIds) {
542
- light._includedOnlyMeshesIds = parsedLight.includedOnlyMeshesIds;
543
- }
544
- // Parent
545
- if (parsedLight.parentId !== undefined) {
546
- light._waitingParentId = parsedLight.parentId;
547
- }
548
- if (parsedLight.parentInstanceIndex !== undefined) {
549
- light._waitingParentInstanceIndex = parsedLight.parentInstanceIndex;
550
- }
551
- // Falloff
552
- if (parsedLight.falloffType !== undefined) {
553
- light.falloffType = parsedLight.falloffType;
554
- }
555
- // Lightmaps
556
- if (parsedLight.lightmapMode !== undefined) {
557
- light.lightmapMode = parsedLight.lightmapMode;
558
- }
559
- // Animations
560
- if (parsedLight.animations) {
561
- for (let animationIndex = 0; animationIndex < parsedLight.animations.length; animationIndex++) {
562
- const parsedAnimation = parsedLight.animations[animationIndex];
563
- const internalClass = GetClass("BABYLON.Animation");
564
- if (internalClass) {
565
- light.animations.push(internalClass.Parse(parsedAnimation));
566
- }
567
- }
568
- Node.ParseAnimationRanges(light, parsedLight, scene);
569
- }
570
- if (parsedLight.autoAnimate) {
571
- scene.beginAnimation(light, parsedLight.autoAnimateFrom, parsedLight.autoAnimateTo, parsedLight.autoAnimateLoop, parsedLight.autoAnimateSpeed || 1.0);
572
- }
573
- // Check if isEnabled is defined to be back compatible with prior serialized versions.
574
- if (parsedLight.isEnabled !== undefined) {
575
- light.setEnabled(parsedLight.isEnabled);
576
- }
577
- light._onParsed(parsedLight, scene);
578
- return light;
579
- }
580
- /**
581
- * Called after the light has been fully parsed and all base properties have been set.
582
- * Override in subclasses to handle custom serialized data.
583
- * @param _parsedLight The JSON representation of the light
584
- * @param _scene The scene the light belongs to
585
- */
586
- _onParsed(_parsedLight, _scene) {
587
- // Override in subclasses
588
- }
589
- _hookArrayForExcluded(array) {
590
- const oldPush = array.push;
591
- array.push = (...items) => {
592
- const result = oldPush.apply(array, items);
593
- if (this._clusteredContainer) {
594
- return result;
595
- }
596
- for (const item of items) {
597
- item._resyncLightSource(this);
598
- }
599
- return result;
600
- };
601
- const oldSplice = array.splice;
602
- array.splice = (index, deleteCount) => {
603
- const deleted = oldSplice.call(array, index, deleteCount ?? array.length);
604
- if (this._clusteredContainer) {
605
- return deleted;
606
- }
607
- for (const item of deleted) {
608
- item._resyncLightSource(this);
609
- }
610
- return deleted;
611
- };
612
- if (!this._clusteredContainer) {
613
- for (const item of array) {
614
- item._resyncLightSource(this);
615
- }
616
- }
617
- }
618
- _hookArrayForIncludedOnly(array) {
619
- const oldPush = array.push;
620
- array.push = (...items) => {
621
- const result = oldPush.apply(array, items);
622
- this._resyncMeshes();
623
- return result;
624
- };
625
- const oldSplice = array.splice;
626
- array.splice = (index, deleteCount) => {
627
- const deleted = oldSplice.call(array, index, deleteCount ?? array.length);
628
- this._resyncMeshes();
629
- return deleted;
630
- };
631
- this._resyncMeshes();
632
- }
633
- _resyncMeshes() {
634
- if (this._clusteredContainer) {
635
- return;
636
- }
637
- for (const mesh of this.getScene().meshes) {
638
- mesh._resyncLightSource(this);
639
- }
640
- }
641
- /**
642
- * Forces the meshes to update their light related information in their rendering used effects
643
- * @internal Internal Use Only
644
- */
645
- _markMeshesAsLightDirty() {
646
- for (const mesh of this.getScene().meshes) {
647
- if (mesh.lightSources.indexOf(this) !== -1) {
648
- mesh._markSubMeshesAsLightDirty();
649
- }
650
- }
651
- }
652
- /**
653
- * Recomputes the cached photometric scale if needed.
654
- */
655
- _computePhotometricScale() {
656
- this._photometricScale = this._getPhotometricScale();
657
- this.getScene().resetCachedMaterial();
658
- }
659
- /**
660
- * @returns the Photometric Scale according to the light type and intensity mode.
661
- */
662
- _getPhotometricScale() {
663
- let photometricScale = 0.0;
664
- const lightTypeID = this.getTypeID();
665
- //get photometric mode
666
- let photometricMode = this.intensityMode;
667
- if (photometricMode === Light.INTENSITYMODE_AUTOMATIC) {
668
- if (lightTypeID === Light.LIGHTTYPEID_DIRECTIONALLIGHT) {
669
- photometricMode = Light.INTENSITYMODE_ILLUMINANCE;
670
- }
671
- else {
672
- photometricMode = Light.INTENSITYMODE_LUMINOUSINTENSITY;
673
- }
674
- }
675
- //compute photometric scale
676
- switch (lightTypeID) {
677
- case Light.LIGHTTYPEID_POINTLIGHT:
678
- case Light.LIGHTTYPEID_SPOTLIGHT:
679
- switch (photometricMode) {
680
- case Light.INTENSITYMODE_LUMINOUSPOWER:
681
- photometricScale = 1.0 / (4.0 * Math.PI);
682
- break;
683
- case Light.INTENSITYMODE_LUMINOUSINTENSITY:
684
- photometricScale = 1.0;
685
- break;
686
- case Light.INTENSITYMODE_LUMINANCE:
687
- photometricScale = this.radius * this.radius;
688
- break;
689
- }
690
- break;
691
- case Light.LIGHTTYPEID_DIRECTIONALLIGHT:
692
- switch (photometricMode) {
693
- case Light.INTENSITYMODE_ILLUMINANCE:
694
- photometricScale = 1.0;
695
- break;
696
- case Light.INTENSITYMODE_LUMINANCE: {
697
- // When radius (and therefore solid angle) is non-zero a directional lights brightness can be specified via central (peak) luminance.
698
- // For a directional light the 'radius' defines the angular radius (in radians) rather than world-space radius (e.g. in metres).
699
- let apexAngleRadians = this.radius;
700
- // Impose a minimum light angular size to avoid the light becoming an infinitely small angular light source (i.e. a dirac delta function).
701
- apexAngleRadians = Math.max(apexAngleRadians, 0.001);
702
- const solidAngle = 2.0 * Math.PI * (1.0 - Math.cos(apexAngleRadians));
703
- photometricScale = solidAngle;
704
- break;
705
- }
706
- }
707
- break;
708
- case Light.LIGHTTYPEID_HEMISPHERICLIGHT:
709
- // No fall off in hemispheric light.
710
- photometricScale = 1.0;
711
- break;
712
- }
713
- return photometricScale;
714
- }
715
- /**
716
- * Reorder the light in the scene according to their defined priority.
717
- * @internal Internal Use Only
718
- */
719
- _reorderLightsInScene() {
720
- const scene = this.getScene();
721
- if (this._renderPriority != 0) {
722
- scene.requireLightSorting = true;
723
- }
724
- this.getScene().sortLightsByPriority();
725
- }
726
- /**
727
- * Returns true when all texture resources used by this light are ready (e.g. projection textures).
728
- * Override in subclasses that use texture resources.
729
- * @returns true if all light textures are ready
730
- */
731
- areLightTexturesReady() {
732
- return true;
733
- }
734
- /**
735
- * @internal
736
- */
737
- _isReady() {
738
- return true;
739
- }
740
- }
741
- /**
742
- * Falloff Default: light is falling off following the material specification:
743
- * standard material is using standard falloff whereas pbr material can request special falloff per materials.
744
- */
745
- Light.FALLOFF_DEFAULT = LightConstants.FALLOFF_DEFAULT;
746
- /**
747
- * Falloff Physical: light is falling off following the inverse squared distance law.
748
- */
749
- Light.FALLOFF_PHYSICAL = LightConstants.FALLOFF_PHYSICAL;
750
- /**
751
- * Falloff gltf: light is falling off as described in the gltf moving to PBR document
752
- * to enhance interoperability with other engines.
753
- */
754
- Light.FALLOFF_GLTF = LightConstants.FALLOFF_GLTF;
755
- /**
756
- * Falloff Standard: light is falling off like in the standard material
757
- * to enhance interoperability with other materials.
758
- */
759
- Light.FALLOFF_STANDARD = LightConstants.FALLOFF_STANDARD;
760
- //lightmapMode Consts
761
- /**
762
- * If every light affecting the material is in this lightmapMode,
763
- * material.lightmapTexture adds or multiplies
764
- * (depends on material.useLightmapAsShadowmap)
765
- * after every other light calculations.
766
- */
767
- Light.LIGHTMAP_DEFAULT = LightConstants.LIGHTMAP_DEFAULT;
768
- /**
769
- * material.lightmapTexture as only diffuse lighting from this light
770
- * adds only specular lighting from this light
771
- * adds dynamic shadows
772
- */
773
- Light.LIGHTMAP_SPECULAR = LightConstants.LIGHTMAP_SPECULAR;
774
- /**
775
- * material.lightmapTexture as only lighting
776
- * no light calculation from this light
777
- * only adds dynamic shadows from this light
778
- */
779
- Light.LIGHTMAP_SHADOWSONLY = LightConstants.LIGHTMAP_SHADOWSONLY;
780
- // Intensity Mode Consts
781
- /**
782
- * Each light type uses the default quantity according to its type:
783
- * point/spot lights use luminous intensity
784
- * directional lights use illuminance
785
- */
786
- Light.INTENSITYMODE_AUTOMATIC = LightConstants.INTENSITYMODE_AUTOMATIC;
787
- /**
788
- * lumen (lm)
789
- */
790
- Light.INTENSITYMODE_LUMINOUSPOWER = LightConstants.INTENSITYMODE_LUMINOUSPOWER;
791
- /**
792
- * candela (lm/sr)
793
- */
794
- Light.INTENSITYMODE_LUMINOUSINTENSITY = LightConstants.INTENSITYMODE_LUMINOUSINTENSITY;
795
- /**
796
- * lux (lm/m^2)
797
- */
798
- Light.INTENSITYMODE_ILLUMINANCE = LightConstants.INTENSITYMODE_ILLUMINANCE;
799
- /**
800
- * nit (cd/m^2)
801
- */
802
- Light.INTENSITYMODE_LUMINANCE = LightConstants.INTENSITYMODE_LUMINANCE;
803
- // Light types ids const.
804
- /**
805
- * Light type const id of the point light.
806
- */
807
- Light.LIGHTTYPEID_POINTLIGHT = LightConstants.LIGHTTYPEID_POINTLIGHT;
808
- /**
809
- * Light type const id of the directional light.
810
- */
811
- Light.LIGHTTYPEID_DIRECTIONALLIGHT = LightConstants.LIGHTTYPEID_DIRECTIONALLIGHT;
812
- /**
813
- * Light type const id of the spot light.
814
- */
815
- Light.LIGHTTYPEID_SPOTLIGHT = LightConstants.LIGHTTYPEID_SPOTLIGHT;
816
- /**
817
- * Light type const id of the hemispheric light.
818
- */
819
- Light.LIGHTTYPEID_HEMISPHERICLIGHT = LightConstants.LIGHTTYPEID_HEMISPHERICLIGHT;
820
- /**
821
- * Light type const id of the area light.
822
- */
823
- Light.LIGHTTYPEID_RECT_AREALIGHT = LightConstants.LIGHTTYPEID_RECT_AREALIGHT;
824
- __decorate([
825
- serializeAsColor3()
826
- ], Light.prototype, "diffuse", void 0);
827
- __decorate([
828
- serializeAsColor3()
829
- ], Light.prototype, "specular", void 0);
830
- __decorate([
831
- serialize()
832
- ], Light.prototype, "falloffType", void 0);
833
- __decorate([
834
- serialize()
835
- ], Light.prototype, "intensity", void 0);
836
- __decorate([
837
- serialize()
838
- ], Light.prototype, "range", null);
839
- __decorate([
840
- serialize()
841
- ], Light.prototype, "intensityMode", null);
842
- __decorate([
843
- serialize()
844
- ], Light.prototype, "radius", null);
845
- __decorate([
846
- serialize()
847
- ], Light.prototype, "_renderPriority", void 0);
848
- __decorate([
849
- expandToProperty("_reorderLightsInScene")
850
- ], Light.prototype, "renderPriority", void 0);
851
- __decorate([
852
- serialize("shadowEnabled")
853
- ], Light.prototype, "_shadowEnabled", void 0);
854
- __decorate([
855
- serialize("excludeWithLayerMask")
856
- ], Light.prototype, "_excludeWithLayerMask", void 0);
857
- __decorate([
858
- serialize("includeOnlyWithLayerMask")
859
- ], Light.prototype, "_includeOnlyWithLayerMask", void 0);
860
- __decorate([
861
- serialize("lightmapMode")
862
- ], Light.prototype, "_lightmapMode", void 0);
876
+ _a.INTENSITYMODE_ILLUMINANCE = LightConstants.INTENSITYMODE_ILLUMINANCE,
877
+ /**
878
+ * nit (cd/m^2)
879
+ */
880
+ _a.INTENSITYMODE_LUMINANCE = LightConstants.INTENSITYMODE_LUMINANCE,
881
+ // Light types ids const.
882
+ /**
883
+ * Light type const id of the point light.
884
+ */
885
+ _a.LIGHTTYPEID_POINTLIGHT = LightConstants.LIGHTTYPEID_POINTLIGHT,
886
+ /**
887
+ * Light type const id of the directional light.
888
+ */
889
+ _a.LIGHTTYPEID_DIRECTIONALLIGHT = LightConstants.LIGHTTYPEID_DIRECTIONALLIGHT,
890
+ /**
891
+ * Light type const id of the spot light.
892
+ */
893
+ _a.LIGHTTYPEID_SPOTLIGHT = LightConstants.LIGHTTYPEID_SPOTLIGHT,
894
+ /**
895
+ * Light type const id of the hemispheric light.
896
+ */
897
+ _a.LIGHTTYPEID_HEMISPHERICLIGHT = LightConstants.LIGHTTYPEID_HEMISPHERICLIGHT,
898
+ /**
899
+ * Light type const id of the area light.
900
+ */
901
+ _a.LIGHTTYPEID_RECT_AREALIGHT = LightConstants.LIGHTTYPEID_RECT_AREALIGHT,
902
+ _a;
903
+ })();
904
+ export { Light };
863
905
  //# sourceMappingURL=light.js.map