@babylonjs/core 7.53.3 → 7.54.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1260) hide show
  1. package/AudioV2/abstractAudio/abstractAudioBus.d.ts +2 -3
  2. package/AudioV2/abstractAudio/abstractAudioBus.js.map +1 -1
  3. package/AudioV2/abstractAudio/abstractSound.d.ts +2 -3
  4. package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
  5. package/AudioV2/abstractAudio/audioEngineV2.d.ts +11 -1
  6. package/AudioV2/abstractAudio/audioEngineV2.js +14 -1
  7. package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
  8. package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.d.ts +1 -1
  9. package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.js.map +1 -1
  10. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +4 -2
  11. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +13 -13
  12. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
  13. package/AudioV2/webAudio/subNodes/stereoWebAudioSubNode.d.ts +5 -2
  14. package/AudioV2/webAudio/subNodes/stereoWebAudioSubNode.js +11 -9
  15. package/AudioV2/webAudio/subNodes/stereoWebAudioSubNode.js.map +1 -1
  16. package/AudioV2/webAudio/subNodes/volumeWebAudioSubNode.d.ts +5 -2
  17. package/AudioV2/webAudio/subNodes/volumeWebAudioSubNode.js +11 -9
  18. package/AudioV2/webAudio/subNodes/volumeWebAudioSubNode.js.map +1 -1
  19. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.d.ts +1 -1
  20. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js +2 -2
  21. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js.map +1 -1
  22. package/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.d.ts +3 -3
  23. package/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.js +9 -9
  24. package/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.js.map +1 -1
  25. package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.d.ts +2 -2
  26. package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.js +11 -11
  27. package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.js.map +1 -1
  28. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +11 -10
  29. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
  30. package/AudioV2/webAudio/webAudioBus.d.ts +6 -6
  31. package/AudioV2/webAudio/webAudioBus.js +27 -8
  32. package/AudioV2/webAudio/webAudioBus.js.map +1 -1
  33. package/AudioV2/webAudio/webAudioEngine.d.ts +19 -7
  34. package/AudioV2/webAudio/webAudioEngine.js +43 -29
  35. package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
  36. package/AudioV2/webAudio/webAudioMainBus.d.ts +3 -5
  37. package/AudioV2/webAudio/webAudioMainBus.js +11 -12
  38. package/AudioV2/webAudio/webAudioMainBus.js.map +1 -1
  39. package/AudioV2/webAudio/webAudioMainOut.d.ts +4 -1
  40. package/AudioV2/webAudio/webAudioMainOut.js +6 -4
  41. package/AudioV2/webAudio/webAudioMainOut.js.map +1 -1
  42. package/AudioV2/webAudio/webAudioNode.d.ts +2 -2
  43. package/AudioV2/webAudio/webAudioNode.js.map +1 -1
  44. package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -7
  45. package/AudioV2/webAudio/webAudioStaticSound.js +29 -29
  46. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  47. package/AudioV2/webAudio/webAudioStreamingSound.d.ts +6 -6
  48. package/AudioV2/webAudio/webAudioStreamingSound.js +27 -27
  49. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  50. package/AudioV2/webAudio/webAudioUnmuteUI.d.ts +15 -0
  51. package/AudioV2/webAudio/webAudioUnmuteUI.js +46 -0
  52. package/AudioV2/webAudio/webAudioUnmuteUI.js.map +1 -0
  53. package/Behaviors/Meshes/pointerDragBehavior.js +10 -0
  54. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  55. package/Cameras/Inputs/BaseCameraPointersInput.d.ts +4 -1
  56. package/Cameras/Inputs/BaseCameraPointersInput.js +10 -7
  57. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  58. package/DeviceInput/webDeviceInputSystem.js +21 -3
  59. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  60. package/Engines/abstractEngine.js +5 -11
  61. package/Engines/abstractEngine.js.map +1 -1
  62. package/Engines/thinEngine.d.ts +2 -1
  63. package/Engines/thinEngine.js +10 -2
  64. package/Engines/thinEngine.js.map +1 -1
  65. package/Engines/webgpuEngine.d.ts +2 -1
  66. package/Engines/webgpuEngine.js +3 -2
  67. package/Engines/webgpuEngine.js.map +1 -1
  68. package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.js +3 -0
  69. package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.js.map +1 -1
  70. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js +6 -0
  71. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
  72. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.d.ts +16 -1
  73. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js +33 -1
  74. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -1
  75. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.d.ts +6 -6
  76. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js +31 -4
  77. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js.map +1 -1
  78. package/FlowGraph/flowGraphCoordinator.d.ts +21 -1
  79. package/FlowGraph/flowGraphCoordinator.js +51 -2
  80. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  81. package/FlowGraph/flowGraphParser.js +3 -0
  82. package/FlowGraph/flowGraphParser.js.map +1 -1
  83. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js +4 -4
  84. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js.map +1 -1
  85. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.js +4 -4
  86. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.js.map +1 -1
  87. package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.js +2 -2
  88. package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.js.map +1 -1
  89. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +4 -4
  90. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
  91. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.js +25 -15
  92. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.js.map +1 -1
  93. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +6 -6
  94. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  95. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +4 -2
  96. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
  97. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js +2 -0
  98. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js.map +1 -1
  99. package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js +2 -0
  100. package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js.map +1 -1
  101. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.js +4 -2
  102. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.js.map +1 -1
  103. package/FrameGraph/Node/Blocks/Textures/clearBlock.js +4 -4
  104. package/FrameGraph/Node/Blocks/Textures/clearBlock.js.map +1 -1
  105. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js +4 -4
  106. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js.map +1 -1
  107. package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.js +2 -2
  108. package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.js.map +1 -1
  109. package/FrameGraph/Node/Blocks/{Rendering/cullObjectsBlock.d.ts → cullObjectsBlock.d.ts} +3 -3
  110. package/FrameGraph/Node/Blocks/{Rendering/cullObjectsBlock.js → cullObjectsBlock.js} +4 -4
  111. package/FrameGraph/Node/Blocks/cullObjectsBlock.js.map +1 -0
  112. package/FrameGraph/Node/Blocks/executeBlock.js +1 -2
  113. package/FrameGraph/Node/Blocks/executeBlock.js.map +1 -1
  114. package/FrameGraph/Node/Blocks/index.d.ts +1 -1
  115. package/FrameGraph/Node/Blocks/index.js +1 -1
  116. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  117. package/FrameGraph/Node/Blocks/resourceContainerBlock.js +16 -16
  118. package/FrameGraph/Node/Blocks/resourceContainerBlock.js.map +1 -1
  119. package/FrameGraph/Node/nodeRenderGraphBlock.d.ts +1 -1
  120. package/FrameGraph/Node/nodeRenderGraphBlock.js +5 -4
  121. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  122. package/FrameGraph/Tasks/Layers/baseLayerTask.js +4 -4
  123. package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
  124. package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -0
  125. package/FrameGraph/Tasks/PostProcesses/bloomTask.js +2 -2
  126. package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
  127. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +2 -2
  128. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
  129. package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js +4 -4
  130. package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js.map +1 -1
  131. package/FrameGraph/index.d.ts +1 -1
  132. package/FrameGraph/index.js +1 -1
  133. package/FrameGraph/index.js.map +1 -1
  134. package/Gizmos/gizmo.js +25 -17
  135. package/Gizmos/gizmo.js.map +1 -1
  136. package/Loading/Plugins/babylonFileLoader.js +4 -0
  137. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  138. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +4 -3
  139. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  140. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +26 -17
  141. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  142. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js +8 -0
  143. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js.map +1 -1
  144. package/Materials/Node/Blocks/Input/inputBlock.js +1 -1
  145. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  146. package/Materials/Node/nodeMaterial.d.ts +2 -0
  147. package/Materials/Node/nodeMaterial.js +6 -1
  148. package/Materials/Node/nodeMaterial.js.map +1 -1
  149. package/Materials/Node/nodeMaterialBlock.js +11 -2
  150. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  151. package/Materials/Node/nodeMaterialBuildState.js +41 -13
  152. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  153. package/Materials/Node/nodeMaterialBuildStateSharedData.d.ts +11 -1
  154. package/Materials/Node/nodeMaterialBuildStateSharedData.js +11 -1
  155. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  156. package/Materials/PBR/pbrBaseMaterial.js +1 -1
  157. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  158. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +1 -0
  159. package/Materials/PBR/pbrSubSurfaceConfiguration.js +3 -0
  160. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  161. package/Materials/material.js +1 -1
  162. package/Materials/material.js.map +1 -1
  163. package/Meshes/Node/Blocks/conditionBlock.d.ts +4 -0
  164. package/Meshes/Node/Blocks/conditionBlock.js +19 -8
  165. package/Meshes/Node/Blocks/conditionBlock.js.map +1 -1
  166. package/Misc/decorators.js +2 -2
  167. package/Misc/decorators.js.map +1 -1
  168. package/Misc/sceneSerializer.js +2 -0
  169. package/Misc/sceneSerializer.js.map +1 -1
  170. package/Physics/v2/Plugins/havokPlugin.js +1 -0
  171. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  172. package/PostProcesses/subSurfaceScatteringPostProcess.d.ts +3 -0
  173. package/PostProcesses/subSurfaceScatteringPostProcess.js +16 -1
  174. package/PostProcesses/subSurfaceScatteringPostProcess.js.map +1 -1
  175. package/Rendering/subSurfaceConfiguration.js +5 -1
  176. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  177. package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js +3 -1
  178. package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js.map +1 -1
  179. package/Shaders/ShadersInclude/backgroundUboDeclaration.js +3 -1
  180. package/Shaders/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
  181. package/Shaders/ShadersInclude/backgroundVertexDeclaration.js +3 -1
  182. package/Shaders/ShadersInclude/backgroundVertexDeclaration.js.map +1 -1
  183. package/Shaders/ShadersInclude/bakedVertexAnimation.js +3 -1
  184. package/Shaders/ShadersInclude/bakedVertexAnimation.js.map +1 -1
  185. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js +3 -1
  186. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -1
  187. package/Shaders/ShadersInclude/bayerDitherFunctions.js +3 -1
  188. package/Shaders/ShadersInclude/bayerDitherFunctions.js.map +1 -1
  189. package/Shaders/ShadersInclude/bonesDeclaration.js +3 -1
  190. package/Shaders/ShadersInclude/bonesDeclaration.js.map +1 -1
  191. package/Shaders/ShadersInclude/bonesVertex.js +3 -1
  192. package/Shaders/ShadersInclude/bonesVertex.js.map +1 -1
  193. package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js +3 -1
  194. package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js.map +1 -1
  195. package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js +3 -1
  196. package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js.map +1 -1
  197. package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js +3 -1
  198. package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js.map +1 -1
  199. package/Shaders/ShadersInclude/bumpFragment.js +3 -1
  200. package/Shaders/ShadersInclude/bumpFragment.js.map +1 -1
  201. package/Shaders/ShadersInclude/bumpFragmentFunctions.js +3 -1
  202. package/Shaders/ShadersInclude/bumpFragmentFunctions.js.map +1 -1
  203. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js +3 -1
  204. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
  205. package/Shaders/ShadersInclude/bumpVertex.js +3 -1
  206. package/Shaders/ShadersInclude/bumpVertex.js.map +1 -1
  207. package/Shaders/ShadersInclude/bumpVertexDeclaration.js +3 -1
  208. package/Shaders/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
  209. package/Shaders/ShadersInclude/clipPlaneFragment.js +3 -1
  210. package/Shaders/ShadersInclude/clipPlaneFragment.js.map +1 -1
  211. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js +3 -1
  212. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -1
  213. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js +3 -1
  214. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js.map +1 -1
  215. package/Shaders/ShadersInclude/clipPlaneVertex.js +3 -1
  216. package/Shaders/ShadersInclude/clipPlaneVertex.js.map +1 -1
  217. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js +3 -1
  218. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -1
  219. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js +3 -1
  220. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js.map +1 -1
  221. package/Shaders/ShadersInclude/decalFragment.js +3 -1
  222. package/Shaders/ShadersInclude/decalFragment.js.map +1 -1
  223. package/Shaders/ShadersInclude/decalFragmentDeclaration.js +3 -1
  224. package/Shaders/ShadersInclude/decalFragmentDeclaration.js.map +1 -1
  225. package/Shaders/ShadersInclude/decalVertexDeclaration.js +3 -1
  226. package/Shaders/ShadersInclude/decalVertexDeclaration.js.map +1 -1
  227. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +3 -1
  228. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js.map +1 -1
  229. package/Shaders/ShadersInclude/defaultUboDeclaration.js +3 -1
  230. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  231. package/Shaders/ShadersInclude/defaultVertexDeclaration.js +3 -1
  232. package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
  233. package/Shaders/ShadersInclude/depthPrePass.js +3 -1
  234. package/Shaders/ShadersInclude/depthPrePass.js.map +1 -1
  235. package/Shaders/ShadersInclude/diffusionProfile.js +3 -1
  236. package/Shaders/ShadersInclude/diffusionProfile.js.map +1 -1
  237. package/Shaders/ShadersInclude/fibonacci.js +3 -2
  238. package/Shaders/ShadersInclude/fibonacci.js.map +1 -1
  239. package/Shaders/ShadersInclude/fogFragment.js +3 -1
  240. package/Shaders/ShadersInclude/fogFragment.js.map +1 -1
  241. package/Shaders/ShadersInclude/fogFragmentDeclaration.js +3 -1
  242. package/Shaders/ShadersInclude/fogFragmentDeclaration.js.map +1 -1
  243. package/Shaders/ShadersInclude/fogVertex.js +3 -1
  244. package/Shaders/ShadersInclude/fogVertex.js.map +1 -1
  245. package/Shaders/ShadersInclude/fogVertexDeclaration.js +3 -1
  246. package/Shaders/ShadersInclude/fogVertexDeclaration.js.map +1 -1
  247. package/Shaders/ShadersInclude/fresnelFunction.js +3 -1
  248. package/Shaders/ShadersInclude/fresnelFunction.js.map +1 -1
  249. package/Shaders/ShadersInclude/gaussianSplatting.js +3 -1
  250. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  251. package/Shaders/ShadersInclude/gaussianSplattingFragmentDeclaration.js +3 -1
  252. package/Shaders/ShadersInclude/gaussianSplattingFragmentDeclaration.js.map +1 -1
  253. package/Shaders/ShadersInclude/gaussianSplattingUboDeclaration.js +3 -1
  254. package/Shaders/ShadersInclude/gaussianSplattingUboDeclaration.js.map +1 -1
  255. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +3 -1
  256. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
  257. package/Shaders/ShadersInclude/geometryUboDeclaration.js +3 -1
  258. package/Shaders/ShadersInclude/geometryUboDeclaration.js.map +1 -1
  259. package/Shaders/ShadersInclude/geometryVertexDeclaration.js +3 -1
  260. package/Shaders/ShadersInclude/geometryVertexDeclaration.js.map +1 -1
  261. package/Shaders/ShadersInclude/harmonicsFunctions.js +3 -1
  262. package/Shaders/ShadersInclude/harmonicsFunctions.js.map +1 -1
  263. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +3 -1
  264. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  265. package/Shaders/ShadersInclude/helperFunctions.js +3 -1
  266. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  267. package/Shaders/ShadersInclude/imageProcessingCompatibility.js +3 -1
  268. package/Shaders/ShadersInclude/imageProcessingCompatibility.js.map +1 -1
  269. package/Shaders/ShadersInclude/imageProcessingDeclaration.js +3 -1
  270. package/Shaders/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
  271. package/Shaders/ShadersInclude/imageProcessingFunctions.js +3 -1
  272. package/Shaders/ShadersInclude/imageProcessingFunctions.js.map +1 -1
  273. package/Shaders/ShadersInclude/importanceSampling.js +3 -1
  274. package/Shaders/ShadersInclude/importanceSampling.js.map +1 -1
  275. package/Shaders/ShadersInclude/instancesDeclaration.js +3 -1
  276. package/Shaders/ShadersInclude/instancesDeclaration.js.map +1 -1
  277. package/Shaders/ShadersInclude/instancesVertex.js +3 -1
  278. package/Shaders/ShadersInclude/instancesVertex.js.map +1 -1
  279. package/Shaders/ShadersInclude/intersectionFunctions.js +3 -1
  280. package/Shaders/ShadersInclude/intersectionFunctions.js.map +1 -1
  281. package/Shaders/ShadersInclude/kernelBlurFragment.js +3 -1
  282. package/Shaders/ShadersInclude/kernelBlurFragment.js.map +1 -1
  283. package/Shaders/ShadersInclude/kernelBlurFragment2.js +3 -1
  284. package/Shaders/ShadersInclude/kernelBlurFragment2.js.map +1 -1
  285. package/Shaders/ShadersInclude/kernelBlurVaryingDeclaration.js +3 -1
  286. package/Shaders/ShadersInclude/kernelBlurVaryingDeclaration.js.map +1 -1
  287. package/Shaders/ShadersInclude/kernelBlurVertex.js +3 -1
  288. package/Shaders/ShadersInclude/kernelBlurVertex.js.map +1 -1
  289. package/Shaders/ShadersInclude/lightFragment.js +3 -1
  290. package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
  291. package/Shaders/ShadersInclude/lightFragmentDeclaration.js +3 -1
  292. package/Shaders/ShadersInclude/lightFragmentDeclaration.js.map +1 -1
  293. package/Shaders/ShadersInclude/lightUboDeclaration.js +3 -1
  294. package/Shaders/ShadersInclude/lightUboDeclaration.js.map +1 -1
  295. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js +3 -1
  296. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js.map +1 -1
  297. package/Shaders/ShadersInclude/lightVxUboDeclaration.js +3 -1
  298. package/Shaders/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  299. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +3 -1
  300. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  301. package/Shaders/ShadersInclude/lineUboDeclaration.js +3 -1
  302. package/Shaders/ShadersInclude/lineUboDeclaration.js.map +1 -1
  303. package/Shaders/ShadersInclude/lineVertexDeclaration.js +3 -1
  304. package/Shaders/ShadersInclude/lineVertexDeclaration.js.map +1 -1
  305. package/Shaders/ShadersInclude/logDepthDeclaration.js +3 -1
  306. package/Shaders/ShadersInclude/logDepthDeclaration.js.map +1 -1
  307. package/Shaders/ShadersInclude/logDepthFragment.js +3 -1
  308. package/Shaders/ShadersInclude/logDepthFragment.js.map +1 -1
  309. package/Shaders/ShadersInclude/logDepthVertex.js +3 -1
  310. package/Shaders/ShadersInclude/logDepthVertex.js.map +1 -1
  311. package/Shaders/ShadersInclude/ltcHelperFunctions.js +3 -1
  312. package/Shaders/ShadersInclude/ltcHelperFunctions.js.map +1 -1
  313. package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js +3 -1
  314. package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js.map +1 -1
  315. package/Shaders/ShadersInclude/meshFragmentDeclaration.js +3 -1
  316. package/Shaders/ShadersInclude/meshFragmentDeclaration.js.map +1 -1
  317. package/Shaders/ShadersInclude/meshUboDeclaration.js +3 -1
  318. package/Shaders/ShadersInclude/meshUboDeclaration.js.map +1 -1
  319. package/Shaders/ShadersInclude/meshVertexDeclaration.js +3 -1
  320. package/Shaders/ShadersInclude/meshVertexDeclaration.js.map +1 -1
  321. package/Shaders/ShadersInclude/morphTargetsVertex.js +3 -1
  322. package/Shaders/ShadersInclude/morphTargetsVertex.js.map +1 -1
  323. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +3 -1
  324. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  325. package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js +3 -1
  326. package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js.map +1 -1
  327. package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +3 -1
  328. package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
  329. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +3 -1
  330. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
  331. package/Shaders/ShadersInclude/oitDeclaration.js +3 -1
  332. package/Shaders/ShadersInclude/oitDeclaration.js.map +1 -1
  333. package/Shaders/ShadersInclude/oitFragment.js +3 -1
  334. package/Shaders/ShadersInclude/oitFragment.js.map +1 -1
  335. package/Shaders/ShadersInclude/packingFunctions.js +3 -1
  336. package/Shaders/ShadersInclude/packingFunctions.js.map +1 -1
  337. package/Shaders/ShadersInclude/pbrBRDFFunctions.js +3 -1
  338. package/Shaders/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  339. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +3 -1
  340. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  341. package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js +3 -1
  342. package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js.map +1 -1
  343. package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js +3 -1
  344. package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js.map +1 -1
  345. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +3 -1
  346. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js.map +1 -1
  347. package/Shaders/ShadersInclude/pbrBlockClearcoat.js +3 -1
  348. package/Shaders/ShadersInclude/pbrBlockClearcoat.js.map +1 -1
  349. package/Shaders/ShadersInclude/pbrBlockDirectLighting.js +3 -1
  350. package/Shaders/ShadersInclude/pbrBlockDirectLighting.js.map +1 -1
  351. package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js +3 -1
  352. package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js.map +1 -1
  353. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js +5 -2
  354. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
  355. package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js +3 -1
  356. package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js.map +1 -1
  357. package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js +3 -1
  358. package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js.map +1 -1
  359. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +3 -1
  360. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
  361. package/Shaders/ShadersInclude/pbrBlockIridescence.js +3 -1
  362. package/Shaders/ShadersInclude/pbrBlockIridescence.js.map +1 -1
  363. package/Shaders/ShadersInclude/pbrBlockLightmapInit.js +3 -1
  364. package/Shaders/ShadersInclude/pbrBlockLightmapInit.js.map +1 -1
  365. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js +3 -1
  366. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
  367. package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js +3 -1
  368. package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js.map +1 -1
  369. package/Shaders/ShadersInclude/pbrBlockPrePass.js +3 -1
  370. package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  371. package/Shaders/ShadersInclude/pbrBlockReflectance.js +3 -1
  372. package/Shaders/ShadersInclude/pbrBlockReflectance.js.map +1 -1
  373. package/Shaders/ShadersInclude/pbrBlockReflectance0.js +3 -1
  374. package/Shaders/ShadersInclude/pbrBlockReflectance0.js.map +1 -1
  375. package/Shaders/ShadersInclude/pbrBlockReflection.js +4 -2
  376. package/Shaders/ShadersInclude/pbrBlockReflection.js.map +1 -1
  377. package/Shaders/ShadersInclude/pbrBlockReflectivity.js +3 -1
  378. package/Shaders/ShadersInclude/pbrBlockReflectivity.js.map +1 -1
  379. package/Shaders/ShadersInclude/pbrBlockSheen.js +3 -1
  380. package/Shaders/ShadersInclude/pbrBlockSheen.js.map +1 -1
  381. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +3 -1
  382. package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  383. package/Shaders/ShadersInclude/pbrDebug.js +3 -1
  384. package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
  385. package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js +3 -1
  386. package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js.map +1 -1
  387. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +3 -1
  388. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  389. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +3 -1
  390. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
  391. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +3 -1
  392. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  393. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +3 -1
  394. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
  395. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +3 -1
  396. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  397. package/Shaders/ShadersInclude/pbrHelperFunctions.js +3 -1
  398. package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  399. package/Shaders/ShadersInclude/pbrIBLFunctions.js +3 -1
  400. package/Shaders/ShadersInclude/pbrIBLFunctions.js.map +1 -1
  401. package/Shaders/ShadersInclude/pbrUboDeclaration.js +3 -1
  402. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  403. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +3 -1
  404. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  405. package/Shaders/ShadersInclude/pointCloudVertex.js +3 -1
  406. package/Shaders/ShadersInclude/pointCloudVertex.js.map +1 -1
  407. package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js +3 -1
  408. package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js.map +1 -1
  409. package/Shaders/ShadersInclude/prePassDeclaration.js +3 -1
  410. package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
  411. package/Shaders/ShadersInclude/prePassVertex.js +3 -1
  412. package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
  413. package/Shaders/ShadersInclude/prePassVertexDeclaration.js +3 -1
  414. package/Shaders/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
  415. package/Shaders/ShadersInclude/reflectionFunction.js +3 -1
  416. package/Shaders/ShadersInclude/reflectionFunction.js.map +1 -1
  417. package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js +3 -1
  418. package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js.map +1 -1
  419. package/Shaders/ShadersInclude/samplerFragmentDeclaration.js +3 -1
  420. package/Shaders/ShadersInclude/samplerFragmentDeclaration.js.map +1 -1
  421. package/Shaders/ShadersInclude/samplerVertexDeclaration.js +3 -1
  422. package/Shaders/ShadersInclude/samplerVertexDeclaration.js.map +1 -1
  423. package/Shaders/ShadersInclude/samplerVertexImplementation.js +3 -1
  424. package/Shaders/ShadersInclude/samplerVertexImplementation.js.map +1 -1
  425. package/Shaders/ShadersInclude/sceneFragmentDeclaration.js +3 -1
  426. package/Shaders/ShadersInclude/sceneFragmentDeclaration.js.map +1 -1
  427. package/Shaders/ShadersInclude/sceneUboDeclaration.js +3 -1
  428. package/Shaders/ShadersInclude/sceneUboDeclaration.js.map +1 -1
  429. package/Shaders/ShadersInclude/sceneVertexDeclaration.js +3 -1
  430. package/Shaders/ShadersInclude/sceneVertexDeclaration.js.map +1 -1
  431. package/Shaders/ShadersInclude/screenSpaceRayTrace.js +3 -1
  432. package/Shaders/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
  433. package/Shaders/ShadersInclude/shadowMapFragment.js +3 -1
  434. package/Shaders/ShadersInclude/shadowMapFragment.js.map +1 -1
  435. package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js +3 -1
  436. package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js.map +1 -1
  437. package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +3 -1
  438. package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js.map +1 -1
  439. package/Shaders/ShadersInclude/shadowMapUboDeclaration.js +3 -1
  440. package/Shaders/ShadersInclude/shadowMapUboDeclaration.js.map +1 -1
  441. package/Shaders/ShadersInclude/shadowMapVertexDeclaration.js +3 -1
  442. package/Shaders/ShadersInclude/shadowMapVertexDeclaration.js.map +1 -1
  443. package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js +3 -1
  444. package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js.map +1 -1
  445. package/Shaders/ShadersInclude/shadowMapVertexMetric.js +3 -1
  446. package/Shaders/ShadersInclude/shadowMapVertexMetric.js.map +1 -1
  447. package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js +3 -1
  448. package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js.map +1 -1
  449. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +3 -1
  450. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
  451. package/Shaders/ShadersInclude/shadowsVertex.js +3 -1
  452. package/Shaders/ShadersInclude/shadowsVertex.js.map +1 -1
  453. package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js +3 -1
  454. package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js.map +1 -1
  455. package/Shaders/ShadersInclude/uvAttributeDeclaration.js +3 -1
  456. package/Shaders/ShadersInclude/uvAttributeDeclaration.js.map +1 -1
  457. package/Shaders/ShadersInclude/uvVariableDeclaration.js +3 -1
  458. package/Shaders/ShadersInclude/uvVariableDeclaration.js.map +1 -1
  459. package/Shaders/ShadersInclude/vertexColorMixing.js +3 -1
  460. package/Shaders/ShadersInclude/vertexColorMixing.js.map +1 -1
  461. package/Shaders/anaglyph.fragment.js +3 -1
  462. package/Shaders/anaglyph.fragment.js.map +1 -1
  463. package/Shaders/background.fragment.js +3 -1
  464. package/Shaders/background.fragment.js.map +1 -1
  465. package/Shaders/background.vertex.js +3 -1
  466. package/Shaders/background.vertex.js.map +1 -1
  467. package/Shaders/bilateralBlur.fragment.js +3 -1
  468. package/Shaders/bilateralBlur.fragment.js.map +1 -1
  469. package/Shaders/bilateralBlurQuality.fragment.js +3 -1
  470. package/Shaders/bilateralBlurQuality.fragment.js.map +1 -1
  471. package/Shaders/blackAndWhite.fragment.js +3 -1
  472. package/Shaders/blackAndWhite.fragment.js.map +1 -1
  473. package/Shaders/bloomMerge.fragment.js +3 -1
  474. package/Shaders/bloomMerge.fragment.js.map +1 -1
  475. package/Shaders/boundingBoxRenderer.fragment.js +3 -1
  476. package/Shaders/boundingBoxRenderer.fragment.js.map +1 -1
  477. package/Shaders/boundingBoxRenderer.vertex.js +3 -1
  478. package/Shaders/boundingBoxRenderer.vertex.js.map +1 -1
  479. package/Shaders/chromaticAberration.fragment.js +3 -1
  480. package/Shaders/chromaticAberration.fragment.js.map +1 -1
  481. package/Shaders/circleOfConfusion.fragment.js +3 -1
  482. package/Shaders/circleOfConfusion.fragment.js.map +1 -1
  483. package/Shaders/color.fragment.js +3 -1
  484. package/Shaders/color.fragment.js.map +1 -1
  485. package/Shaders/color.vertex.js +3 -1
  486. package/Shaders/color.vertex.js.map +1 -1
  487. package/Shaders/colorCorrection.fragment.js +3 -1
  488. package/Shaders/colorCorrection.fragment.js.map +1 -1
  489. package/Shaders/convolution.fragment.js +3 -1
  490. package/Shaders/convolution.fragment.js.map +1 -1
  491. package/Shaders/copyTexture3DLayerToTexture.fragment.js +3 -1
  492. package/Shaders/copyTexture3DLayerToTexture.fragment.js.map +1 -1
  493. package/Shaders/copyTextureToTexture.fragment.js +3 -1
  494. package/Shaders/copyTextureToTexture.fragment.js.map +1 -1
  495. package/Shaders/default.fragment.js +3 -1
  496. package/Shaders/default.fragment.js.map +1 -1
  497. package/Shaders/default.vertex.js +3 -1
  498. package/Shaders/default.vertex.js.map +1 -1
  499. package/Shaders/depth.fragment.js +3 -1
  500. package/Shaders/depth.fragment.js.map +1 -1
  501. package/Shaders/depth.vertex.js +3 -1
  502. package/Shaders/depth.vertex.js.map +1 -1
  503. package/Shaders/depthBoxBlur.fragment.js +3 -1
  504. package/Shaders/depthBoxBlur.fragment.js.map +1 -1
  505. package/Shaders/depthOfField.fragment.js +3 -1
  506. package/Shaders/depthOfField.fragment.js.map +1 -1
  507. package/Shaders/depthOfFieldMerge.fragment.js +3 -1
  508. package/Shaders/depthOfFieldMerge.fragment.js.map +1 -1
  509. package/Shaders/displayPass.fragment.js +3 -1
  510. package/Shaders/displayPass.fragment.js.map +1 -1
  511. package/Shaders/equirectangularPanorama.fragment.js +3 -1
  512. package/Shaders/equirectangularPanorama.fragment.js.map +1 -1
  513. package/Shaders/extractHighlights.fragment.js +3 -1
  514. package/Shaders/extractHighlights.fragment.js.map +1 -1
  515. package/Shaders/filter.fragment.js +3 -1
  516. package/Shaders/filter.fragment.js.map +1 -1
  517. package/Shaders/fluidRenderingBilateralBlur.fragment.js +3 -1
  518. package/Shaders/fluidRenderingBilateralBlur.fragment.js.map +1 -1
  519. package/Shaders/fluidRenderingParticleDepth.fragment.js +3 -1
  520. package/Shaders/fluidRenderingParticleDepth.fragment.js.map +1 -1
  521. package/Shaders/fluidRenderingParticleDepth.vertex.js +3 -1
  522. package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
  523. package/Shaders/fluidRenderingParticleDiffuse.fragment.js +3 -1
  524. package/Shaders/fluidRenderingParticleDiffuse.fragment.js.map +1 -1
  525. package/Shaders/fluidRenderingParticleDiffuse.vertex.js +3 -1
  526. package/Shaders/fluidRenderingParticleDiffuse.vertex.js.map +1 -1
  527. package/Shaders/fluidRenderingParticleThickness.fragment.js +3 -1
  528. package/Shaders/fluidRenderingParticleThickness.fragment.js.map +1 -1
  529. package/Shaders/fluidRenderingParticleThickness.vertex.js +3 -1
  530. package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
  531. package/Shaders/fluidRenderingRender.fragment.js +3 -1
  532. package/Shaders/fluidRenderingRender.fragment.js.map +1 -1
  533. package/Shaders/fluidRenderingStandardBlur.fragment.js +3 -1
  534. package/Shaders/fluidRenderingStandardBlur.fragment.js.map +1 -1
  535. package/Shaders/fxaa.fragment.js +3 -1
  536. package/Shaders/fxaa.fragment.js.map +1 -1
  537. package/Shaders/fxaa.vertex.js +3 -1
  538. package/Shaders/fxaa.vertex.js.map +1 -1
  539. package/Shaders/gaussianSplatting.fragment.js +3 -1
  540. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  541. package/Shaders/gaussianSplatting.vertex.js +3 -1
  542. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  543. package/Shaders/geometry.fragment.js +3 -1
  544. package/Shaders/geometry.fragment.js.map +1 -1
  545. package/Shaders/geometry.vertex.js +3 -1
  546. package/Shaders/geometry.vertex.js.map +1 -1
  547. package/Shaders/glowBlurPostProcess.fragment.js +3 -1
  548. package/Shaders/glowBlurPostProcess.fragment.js.map +1 -1
  549. package/Shaders/glowMapGeneration.fragment.js +3 -1
  550. package/Shaders/glowMapGeneration.fragment.js.map +1 -1
  551. package/Shaders/glowMapGeneration.vertex.js +3 -1
  552. package/Shaders/glowMapGeneration.vertex.js.map +1 -1
  553. package/Shaders/glowMapMerge.fragment.js +3 -1
  554. package/Shaders/glowMapMerge.fragment.js.map +1 -1
  555. package/Shaders/glowMapMerge.vertex.js +3 -1
  556. package/Shaders/glowMapMerge.vertex.js.map +1 -1
  557. package/Shaders/gpuRenderParticles.fragment.js +3 -1
  558. package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
  559. package/Shaders/gpuRenderParticles.vertex.js +3 -1
  560. package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
  561. package/Shaders/gpuTransform.fragment.js +3 -1
  562. package/Shaders/gpuTransform.fragment.js.map +1 -1
  563. package/Shaders/gpuTransform.vertex.js +3 -1
  564. package/Shaders/gpuTransform.vertex.js.map +1 -1
  565. package/Shaders/gpuUpdateParticles.fragment.js +3 -1
  566. package/Shaders/gpuUpdateParticles.fragment.js.map +1 -1
  567. package/Shaders/gpuUpdateParticles.vertex.js +3 -1
  568. package/Shaders/gpuUpdateParticles.vertex.js.map +1 -1
  569. package/Shaders/grain.fragment.js +3 -1
  570. package/Shaders/grain.fragment.js.map +1 -1
  571. package/Shaders/greasedLine.fragment.js +3 -1
  572. package/Shaders/greasedLine.fragment.js.map +1 -1
  573. package/Shaders/greasedLine.vertex.js +3 -1
  574. package/Shaders/greasedLine.vertex.js.map +1 -1
  575. package/Shaders/hdrFiltering.fragment.js +3 -1
  576. package/Shaders/hdrFiltering.fragment.js.map +1 -1
  577. package/Shaders/hdrFiltering.vertex.js +3 -1
  578. package/Shaders/hdrFiltering.vertex.js.map +1 -1
  579. package/Shaders/hdrIrradianceFiltering.fragment.js +3 -1
  580. package/Shaders/hdrIrradianceFiltering.fragment.js.map +1 -1
  581. package/Shaders/hdrIrradianceFiltering.vertex.js +3 -1
  582. package/Shaders/hdrIrradianceFiltering.vertex.js.map +1 -1
  583. package/Shaders/highlights.fragment.js +3 -1
  584. package/Shaders/highlights.fragment.js.map +1 -1
  585. package/Shaders/iblCdfDebug.fragment.js +3 -1
  586. package/Shaders/iblCdfDebug.fragment.js.map +1 -1
  587. package/Shaders/iblCdfx.fragment.js +3 -1
  588. package/Shaders/iblCdfx.fragment.js.map +1 -1
  589. package/Shaders/iblCdfy.fragment.js +3 -1
  590. package/Shaders/iblCdfy.fragment.js.map +1 -1
  591. package/Shaders/iblCombineVoxelGrids.fragment.js +3 -1
  592. package/Shaders/iblCombineVoxelGrids.fragment.js.map +1 -1
  593. package/Shaders/iblGenerateVoxelMip.fragment.js +3 -1
  594. package/Shaders/iblGenerateVoxelMip.fragment.js.map +1 -1
  595. package/Shaders/iblIcdf.fragment.js +3 -1
  596. package/Shaders/iblIcdf.fragment.js.map +1 -1
  597. package/Shaders/iblScaledLuminance.fragment.js +3 -1
  598. package/Shaders/iblScaledLuminance.fragment.js.map +1 -1
  599. package/Shaders/iblShadowAccumulation.fragment.js +3 -1
  600. package/Shaders/iblShadowAccumulation.fragment.js.map +1 -1
  601. package/Shaders/iblShadowDebug.fragment.js +3 -1
  602. package/Shaders/iblShadowDebug.fragment.js.map +1 -1
  603. package/Shaders/iblShadowGBufferDebug.fragment.js +3 -1
  604. package/Shaders/iblShadowGBufferDebug.fragment.js.map +1 -1
  605. package/Shaders/iblShadowSpatialBlur.fragment.js +3 -1
  606. package/Shaders/iblShadowSpatialBlur.fragment.js.map +1 -1
  607. package/Shaders/iblShadowVoxelTracing.fragment.js +3 -1
  608. package/Shaders/iblShadowVoxelTracing.fragment.js.map +1 -1
  609. package/Shaders/iblShadowsCombine.fragment.js +3 -1
  610. package/Shaders/iblShadowsCombine.fragment.js.map +1 -1
  611. package/Shaders/iblVoxelGrid.fragment.js +3 -1
  612. package/Shaders/iblVoxelGrid.fragment.js.map +1 -1
  613. package/Shaders/iblVoxelGrid.vertex.js +3 -1
  614. package/Shaders/iblVoxelGrid.vertex.js.map +1 -1
  615. package/Shaders/iblVoxelGrid2dArrayDebug.fragment.js +3 -1
  616. package/Shaders/iblVoxelGrid2dArrayDebug.fragment.js.map +1 -1
  617. package/Shaders/iblVoxelGrid3dDebug.fragment.js +3 -1
  618. package/Shaders/iblVoxelGrid3dDebug.fragment.js.map +1 -1
  619. package/Shaders/iblVoxelSlabDebug.fragment.js +3 -1
  620. package/Shaders/iblVoxelSlabDebug.fragment.js.map +1 -1
  621. package/Shaders/iblVoxelSlabDebug.vertex.js +3 -1
  622. package/Shaders/iblVoxelSlabDebug.vertex.js.map +1 -1
  623. package/Shaders/imageProcessing.fragment.js +4 -2
  624. package/Shaders/imageProcessing.fragment.js.map +1 -1
  625. package/Shaders/kernelBlur.fragment.js +3 -1
  626. package/Shaders/kernelBlur.fragment.js.map +1 -1
  627. package/Shaders/kernelBlur.vertex.js +3 -1
  628. package/Shaders/kernelBlur.vertex.js.map +1 -1
  629. package/Shaders/layer.fragment.js +3 -1
  630. package/Shaders/layer.fragment.js.map +1 -1
  631. package/Shaders/layer.vertex.js +3 -1
  632. package/Shaders/layer.vertex.js.map +1 -1
  633. package/Shaders/lensFlare.fragment.js +3 -1
  634. package/Shaders/lensFlare.fragment.js.map +1 -1
  635. package/Shaders/lensFlare.vertex.js +3 -1
  636. package/Shaders/lensFlare.vertex.js.map +1 -1
  637. package/Shaders/lensHighlights.fragment.js +3 -1
  638. package/Shaders/lensHighlights.fragment.js.map +1 -1
  639. package/Shaders/line.fragment.js +3 -1
  640. package/Shaders/line.fragment.js.map +1 -1
  641. package/Shaders/line.vertex.js +3 -1
  642. package/Shaders/line.vertex.js.map +1 -1
  643. package/Shaders/lod.fragment.js +3 -1
  644. package/Shaders/lod.fragment.js.map +1 -1
  645. package/Shaders/lodCube.fragment.js +3 -1
  646. package/Shaders/lodCube.fragment.js.map +1 -1
  647. package/Shaders/meshUVSpaceRenderer.fragment.js +3 -1
  648. package/Shaders/meshUVSpaceRenderer.fragment.js.map +1 -1
  649. package/Shaders/meshUVSpaceRenderer.vertex.js +3 -1
  650. package/Shaders/meshUVSpaceRenderer.vertex.js.map +1 -1
  651. package/Shaders/meshUVSpaceRendererFinaliser.fragment.js +3 -1
  652. package/Shaders/meshUVSpaceRendererFinaliser.fragment.js.map +1 -1
  653. package/Shaders/meshUVSpaceRendererFinaliser.vertex.js +3 -1
  654. package/Shaders/meshUVSpaceRendererFinaliser.vertex.js.map +1 -1
  655. package/Shaders/meshUVSpaceRendererMasker.fragment.js +3 -1
  656. package/Shaders/meshUVSpaceRendererMasker.fragment.js.map +1 -1
  657. package/Shaders/meshUVSpaceRendererMasker.vertex.js +3 -1
  658. package/Shaders/meshUVSpaceRendererMasker.vertex.js.map +1 -1
  659. package/Shaders/minmaxRedux.fragment.js +3 -1
  660. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  661. package/Shaders/motionBlur.fragment.js +4 -2
  662. package/Shaders/motionBlur.fragment.js.map +1 -1
  663. package/Shaders/noise.fragment.js +3 -1
  664. package/Shaders/noise.fragment.js.map +1 -1
  665. package/Shaders/oitBackBlend.fragment.js +3 -1
  666. package/Shaders/oitBackBlend.fragment.js.map +1 -1
  667. package/Shaders/oitFinal.fragment.js +3 -1
  668. package/Shaders/oitFinal.fragment.js.map +1 -1
  669. package/Shaders/outline.fragment.js +3 -1
  670. package/Shaders/outline.fragment.js.map +1 -1
  671. package/Shaders/outline.vertex.js +3 -1
  672. package/Shaders/outline.vertex.js.map +1 -1
  673. package/Shaders/particles.fragment.js +3 -1
  674. package/Shaders/particles.fragment.js.map +1 -1
  675. package/Shaders/particles.vertex.js +3 -1
  676. package/Shaders/particles.vertex.js.map +1 -1
  677. package/Shaders/pass.fragment.js +3 -1
  678. package/Shaders/pass.fragment.js.map +1 -1
  679. package/Shaders/passCube.fragment.js +3 -1
  680. package/Shaders/passCube.fragment.js.map +1 -1
  681. package/Shaders/pbr.fragment.js +6 -1
  682. package/Shaders/pbr.fragment.js.map +1 -1
  683. package/Shaders/pbr.vertex.js +3 -1
  684. package/Shaders/pbr.vertex.js.map +1 -1
  685. package/Shaders/picking.fragment.js +3 -1
  686. package/Shaders/picking.fragment.js.map +1 -1
  687. package/Shaders/picking.vertex.js +3 -1
  688. package/Shaders/picking.vertex.js.map +1 -1
  689. package/Shaders/postprocess.vertex.js +3 -1
  690. package/Shaders/postprocess.vertex.js.map +1 -1
  691. package/Shaders/procedural.vertex.js +3 -1
  692. package/Shaders/procedural.vertex.js.map +1 -1
  693. package/Shaders/refraction.fragment.js +3 -1
  694. package/Shaders/refraction.fragment.js.map +1 -1
  695. package/Shaders/rgbdDecode.fragment.js +3 -1
  696. package/Shaders/rgbdDecode.fragment.js.map +1 -1
  697. package/Shaders/rgbdEncode.fragment.js +3 -1
  698. package/Shaders/rgbdEncode.fragment.js.map +1 -1
  699. package/Shaders/rsmFullGlobalIllumination.fragment.js +3 -1
  700. package/Shaders/rsmFullGlobalIllumination.fragment.js.map +1 -1
  701. package/Shaders/rsmGlobalIllumination.fragment.js +3 -1
  702. package/Shaders/rsmGlobalIllumination.fragment.js.map +1 -1
  703. package/Shaders/screenSpaceCurvature.fragment.js +3 -1
  704. package/Shaders/screenSpaceCurvature.fragment.js.map +1 -1
  705. package/Shaders/screenSpaceReflection.fragment.js +3 -1
  706. package/Shaders/screenSpaceReflection.fragment.js.map +1 -1
  707. package/Shaders/screenSpaceReflection2.fragment.js +4 -2
  708. package/Shaders/screenSpaceReflection2.fragment.js.map +1 -1
  709. package/Shaders/screenSpaceReflection2Blur.fragment.js +3 -1
  710. package/Shaders/screenSpaceReflection2Blur.fragment.js.map +1 -1
  711. package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js +3 -1
  712. package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js.map +1 -1
  713. package/Shaders/shadowMap.fragment.js +3 -1
  714. package/Shaders/shadowMap.fragment.js.map +1 -1
  715. package/Shaders/shadowMap.vertex.js +3 -1
  716. package/Shaders/shadowMap.vertex.js.map +1 -1
  717. package/Shaders/sharpen.fragment.js +3 -1
  718. package/Shaders/sharpen.fragment.js.map +1 -1
  719. package/Shaders/spriteMap.fragment.js +3 -1
  720. package/Shaders/spriteMap.fragment.js.map +1 -1
  721. package/Shaders/spriteMap.vertex.js +3 -1
  722. package/Shaders/spriteMap.vertex.js.map +1 -1
  723. package/Shaders/sprites.fragment.js +3 -1
  724. package/Shaders/sprites.fragment.js.map +1 -1
  725. package/Shaders/sprites.vertex.js +3 -1
  726. package/Shaders/sprites.vertex.js.map +1 -1
  727. package/Shaders/ssao.fragment.js +3 -1
  728. package/Shaders/ssao.fragment.js.map +1 -1
  729. package/Shaders/ssao2.fragment.js +3 -1
  730. package/Shaders/ssao2.fragment.js.map +1 -1
  731. package/Shaders/ssaoCombine.fragment.js +3 -1
  732. package/Shaders/ssaoCombine.fragment.js.map +1 -1
  733. package/Shaders/standard.fragment.js +3 -1
  734. package/Shaders/standard.fragment.js.map +1 -1
  735. package/Shaders/stereoscopicInterlace.fragment.js +3 -1
  736. package/Shaders/stereoscopicInterlace.fragment.js.map +1 -1
  737. package/Shaders/subSurfaceScattering.fragment.d.ts +1 -1
  738. package/Shaders/subSurfaceScattering.fragment.js +8 -6
  739. package/Shaders/subSurfaceScattering.fragment.js.map +1 -1
  740. package/Shaders/taa.fragment.js +3 -1
  741. package/Shaders/taa.fragment.js.map +1 -1
  742. package/Shaders/tonemap.fragment.js +3 -1
  743. package/Shaders/tonemap.fragment.js.map +1 -1
  744. package/Shaders/velocity.fragment.js +3 -1
  745. package/Shaders/velocity.fragment.js.map +1 -1
  746. package/Shaders/velocity.vertex.js +3 -1
  747. package/Shaders/velocity.vertex.js.map +1 -1
  748. package/Shaders/volumetricLightScattering.fragment.js +3 -1
  749. package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
  750. package/Shaders/volumetricLightScatteringPass.fragment.js +3 -1
  751. package/Shaders/volumetricLightScatteringPass.fragment.js.map +1 -1
  752. package/Shaders/volumetricLightScatteringPass.vertex.js +3 -1
  753. package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
  754. package/Shaders/vrDistortionCorrection.fragment.js +3 -1
  755. package/Shaders/vrDistortionCorrection.fragment.js.map +1 -1
  756. package/Shaders/vrMultiviewToSingleview.fragment.js +3 -1
  757. package/Shaders/vrMultiviewToSingleview.fragment.js.map +1 -1
  758. package/ShadersWGSL/ShadersInclude/backgroundUboDeclaration.js +3 -1
  759. package/ShadersWGSL/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
  760. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js +3 -1
  761. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js.map +1 -1
  762. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js +3 -1
  763. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -1
  764. package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.js +3 -1
  765. package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.js.map +1 -1
  766. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +3 -1
  767. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
  768. package/ShadersWGSL/ShadersInclude/bonesVertex.js +3 -1
  769. package/ShadersWGSL/ShadersInclude/bonesVertex.js.map +1 -1
  770. package/ShadersWGSL/ShadersInclude/bumpFragment.js +3 -1
  771. package/ShadersWGSL/ShadersInclude/bumpFragment.js.map +1 -1
  772. package/ShadersWGSL/ShadersInclude/bumpFragmentFunctions.js +3 -1
  773. package/ShadersWGSL/ShadersInclude/bumpFragmentFunctions.js.map +1 -1
  774. package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js +3 -1
  775. package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
  776. package/ShadersWGSL/ShadersInclude/bumpVertex.js +3 -1
  777. package/ShadersWGSL/ShadersInclude/bumpVertex.js.map +1 -1
  778. package/ShadersWGSL/ShadersInclude/bumpVertexDeclaration.js +3 -1
  779. package/ShadersWGSL/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
  780. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js +3 -1
  781. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js.map +1 -1
  782. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js +3 -1
  783. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -1
  784. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js +3 -1
  785. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js.map +1 -1
  786. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js +3 -1
  787. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -1
  788. package/ShadersWGSL/ShadersInclude/decalFragment.js +3 -1
  789. package/ShadersWGSL/ShadersInclude/decalFragment.js.map +1 -1
  790. package/ShadersWGSL/ShadersInclude/decalFragmentDeclaration.js +3 -1
  791. package/ShadersWGSL/ShadersInclude/decalFragmentDeclaration.js.map +1 -1
  792. package/ShadersWGSL/ShadersInclude/decalVertexDeclaration.js +3 -1
  793. package/ShadersWGSL/ShadersInclude/decalVertexDeclaration.js.map +1 -1
  794. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js +3 -1
  795. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  796. package/ShadersWGSL/ShadersInclude/depthPrePass.js +3 -1
  797. package/ShadersWGSL/ShadersInclude/depthPrePass.js.map +1 -1
  798. package/ShadersWGSL/ShadersInclude/diffusionProfile.d.ts +5 -0
  799. package/ShadersWGSL/ShadersInclude/diffusionProfile.js +12 -0
  800. package/ShadersWGSL/ShadersInclude/diffusionProfile.js.map +1 -0
  801. package/ShadersWGSL/ShadersInclude/fibonacci.d.ts +5 -0
  802. package/ShadersWGSL/ShadersInclude/fibonacci.js +17 -0
  803. package/ShadersWGSL/ShadersInclude/fibonacci.js.map +1 -0
  804. package/ShadersWGSL/ShadersInclude/fogFragment.js +3 -1
  805. package/ShadersWGSL/ShadersInclude/fogFragment.js.map +1 -1
  806. package/ShadersWGSL/ShadersInclude/fogFragmentDeclaration.js +3 -1
  807. package/ShadersWGSL/ShadersInclude/fogFragmentDeclaration.js.map +1 -1
  808. package/ShadersWGSL/ShadersInclude/fogVertex.js +3 -1
  809. package/ShadersWGSL/ShadersInclude/fogVertex.js.map +1 -1
  810. package/ShadersWGSL/ShadersInclude/fogVertexDeclaration.js +3 -1
  811. package/ShadersWGSL/ShadersInclude/fogVertexDeclaration.js.map +1 -1
  812. package/ShadersWGSL/ShadersInclude/fresnelFunction.js +3 -1
  813. package/ShadersWGSL/ShadersInclude/fresnelFunction.js.map +1 -1
  814. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
  815. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
  816. package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js +3 -1
  817. package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js.map +1 -1
  818. package/ShadersWGSL/ShadersInclude/gaussianSplattingUboDeclaration.js +3 -1
  819. package/ShadersWGSL/ShadersInclude/gaussianSplattingUboDeclaration.js.map +1 -1
  820. package/ShadersWGSL/ShadersInclude/gaussianSplattingVertexDeclaration.js +3 -1
  821. package/ShadersWGSL/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
  822. package/ShadersWGSL/ShadersInclude/harmonicsFunctions.js +3 -1
  823. package/ShadersWGSL/ShadersInclude/harmonicsFunctions.js.map +1 -1
  824. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js +3 -1
  825. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  826. package/ShadersWGSL/ShadersInclude/helperFunctions.js +3 -1
  827. package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
  828. package/ShadersWGSL/ShadersInclude/imageProcessingCompatibility.js +3 -1
  829. package/ShadersWGSL/ShadersInclude/imageProcessingCompatibility.js.map +1 -1
  830. package/ShadersWGSL/ShadersInclude/imageProcessingDeclaration.js +3 -1
  831. package/ShadersWGSL/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
  832. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js +3 -1
  833. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js.map +1 -1
  834. package/ShadersWGSL/ShadersInclude/importanceSampling.js +3 -1
  835. package/ShadersWGSL/ShadersInclude/importanceSampling.js.map +1 -1
  836. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +3 -1
  837. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js.map +1 -1
  838. package/ShadersWGSL/ShadersInclude/instancesVertex.js +3 -1
  839. package/ShadersWGSL/ShadersInclude/instancesVertex.js.map +1 -1
  840. package/ShadersWGSL/ShadersInclude/intersectionFunctions.js +3 -1
  841. package/ShadersWGSL/ShadersInclude/intersectionFunctions.js.map +1 -1
  842. package/ShadersWGSL/ShadersInclude/kernelBlurFragment.js +3 -1
  843. package/ShadersWGSL/ShadersInclude/kernelBlurFragment.js.map +1 -1
  844. package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.js +3 -1
  845. package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.js.map +1 -1
  846. package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.js +3 -1
  847. package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.js.map +1 -1
  848. package/ShadersWGSL/ShadersInclude/kernelBlurVertex.js +3 -1
  849. package/ShadersWGSL/ShadersInclude/kernelBlurVertex.js.map +1 -1
  850. package/ShadersWGSL/ShadersInclude/lightFragment.js +3 -1
  851. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  852. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js +3 -1
  853. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js.map +1 -1
  854. package/ShadersWGSL/ShadersInclude/lightVxFragmentDeclaration.js +3 -1
  855. package/ShadersWGSL/ShadersInclude/lightVxFragmentDeclaration.js.map +1 -1
  856. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js +3 -1
  857. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  858. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +3 -1
  859. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  860. package/ShadersWGSL/ShadersInclude/logDepthDeclaration.js +3 -1
  861. package/ShadersWGSL/ShadersInclude/logDepthDeclaration.js.map +1 -1
  862. package/ShadersWGSL/ShadersInclude/logDepthFragment.js +3 -1
  863. package/ShadersWGSL/ShadersInclude/logDepthFragment.js.map +1 -1
  864. package/ShadersWGSL/ShadersInclude/logDepthVertex.js +3 -1
  865. package/ShadersWGSL/ShadersInclude/logDepthVertex.js.map +1 -1
  866. package/ShadersWGSL/ShadersInclude/ltcHelperFunctions.js +3 -1
  867. package/ShadersWGSL/ShadersInclude/ltcHelperFunctions.js.map +1 -1
  868. package/ShadersWGSL/ShadersInclude/mainUVVaryingDeclaration.js +3 -1
  869. package/ShadersWGSL/ShadersInclude/mainUVVaryingDeclaration.js.map +1 -1
  870. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js +3 -1
  871. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js.map +1 -1
  872. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +3 -1
  873. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
  874. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +3 -1
  875. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  876. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js +3 -1
  877. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js.map +1 -1
  878. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +3 -1
  879. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
  880. package/ShadersWGSL/ShadersInclude/oitDeclaration.js +3 -1
  881. package/ShadersWGSL/ShadersInclude/oitDeclaration.js.map +1 -1
  882. package/ShadersWGSL/ShadersInclude/oitFragment.js +3 -1
  883. package/ShadersWGSL/ShadersInclude/oitFragment.js.map +1 -1
  884. package/ShadersWGSL/ShadersInclude/packingFunctions.js +3 -1
  885. package/ShadersWGSL/ShadersInclude/packingFunctions.js.map +1 -1
  886. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js +3 -1
  887. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  888. package/ShadersWGSL/ShadersInclude/pbrBlockAlbedoOpacity.js +3 -1
  889. package/ShadersWGSL/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  890. package/ShadersWGSL/ShadersInclude/pbrBlockAlphaFresnel.js +3 -1
  891. package/ShadersWGSL/ShadersInclude/pbrBlockAlphaFresnel.js.map +1 -1
  892. package/ShadersWGSL/ShadersInclude/pbrBlockAmbientOcclusion.js +3 -1
  893. package/ShadersWGSL/ShadersInclude/pbrBlockAmbientOcclusion.js.map +1 -1
  894. package/ShadersWGSL/ShadersInclude/pbrBlockAnisotropic.js +3 -1
  895. package/ShadersWGSL/ShadersInclude/pbrBlockAnisotropic.js.map +1 -1
  896. package/ShadersWGSL/ShadersInclude/pbrBlockClearcoat.js +3 -1
  897. package/ShadersWGSL/ShadersInclude/pbrBlockClearcoat.js.map +1 -1
  898. package/ShadersWGSL/ShadersInclude/pbrBlockDirectLighting.js +3 -1
  899. package/ShadersWGSL/ShadersInclude/pbrBlockDirectLighting.js.map +1 -1
  900. package/ShadersWGSL/ShadersInclude/pbrBlockFinalColorComposition.js +3 -1
  901. package/ShadersWGSL/ShadersInclude/pbrBlockFinalColorComposition.js.map +1 -1
  902. package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js +5 -2
  903. package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
  904. package/ShadersWGSL/ShadersInclude/pbrBlockFinalUnlitComponents.js +3 -1
  905. package/ShadersWGSL/ShadersInclude/pbrBlockFinalUnlitComponents.js.map +1 -1
  906. package/ShadersWGSL/ShadersInclude/pbrBlockGeometryInfo.js +3 -1
  907. package/ShadersWGSL/ShadersInclude/pbrBlockGeometryInfo.js.map +1 -1
  908. package/ShadersWGSL/ShadersInclude/pbrBlockImageProcessing.js +3 -1
  909. package/ShadersWGSL/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
  910. package/ShadersWGSL/ShadersInclude/pbrBlockIridescence.js +3 -1
  911. package/ShadersWGSL/ShadersInclude/pbrBlockIridescence.js.map +1 -1
  912. package/ShadersWGSL/ShadersInclude/pbrBlockLightmapInit.js +3 -1
  913. package/ShadersWGSL/ShadersInclude/pbrBlockLightmapInit.js.map +1 -1
  914. package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js +3 -1
  915. package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
  916. package/ShadersWGSL/ShadersInclude/pbrBlockNormalGeometric.js +3 -1
  917. package/ShadersWGSL/ShadersInclude/pbrBlockNormalGeometric.js.map +1 -1
  918. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +3 -1
  919. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  920. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js +3 -1
  921. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js.map +1 -1
  922. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance0.js +3 -1
  923. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance0.js.map +1 -1
  924. package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js +3 -1
  925. package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js.map +1 -1
  926. package/ShadersWGSL/ShadersInclude/pbrBlockReflectivity.js +3 -1
  927. package/ShadersWGSL/ShadersInclude/pbrBlockReflectivity.js.map +1 -1
  928. package/ShadersWGSL/ShadersInclude/pbrBlockSheen.js +3 -1
  929. package/ShadersWGSL/ShadersInclude/pbrBlockSheen.js.map +1 -1
  930. package/ShadersWGSL/ShadersInclude/pbrBlockSubSurface.js +3 -1
  931. package/ShadersWGSL/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  932. package/ShadersWGSL/ShadersInclude/pbrDebug.js +3 -1
  933. package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
  934. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFalloffFunctions.js +3 -1
  935. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFalloffFunctions.js.map +1 -1
  936. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +3 -1
  937. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  938. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js +3 -1
  939. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
  940. package/ShadersWGSL/ShadersInclude/pbrFragmentExtraDeclaration.js +3 -1
  941. package/ShadersWGSL/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
  942. package/ShadersWGSL/ShadersInclude/pbrFragmentSamplersDeclaration.js +3 -1
  943. package/ShadersWGSL/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  944. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js +3 -1
  945. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  946. package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js +3 -1
  947. package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js.map +1 -1
  948. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js +3 -1
  949. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  950. package/ShadersWGSL/ShadersInclude/pointCloudVertex.js +3 -1
  951. package/ShadersWGSL/ShadersInclude/pointCloudVertex.js.map +1 -1
  952. package/ShadersWGSL/ShadersInclude/pointCloudVertexDeclaration.js +3 -1
  953. package/ShadersWGSL/ShadersInclude/pointCloudVertexDeclaration.js.map +1 -1
  954. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +3 -1
  955. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
  956. package/ShadersWGSL/ShadersInclude/prePassVertex.js +3 -1
  957. package/ShadersWGSL/ShadersInclude/prePassVertex.js.map +1 -1
  958. package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js +3 -1
  959. package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
  960. package/ShadersWGSL/ShadersInclude/reflectionFunction.js +3 -1
  961. package/ShadersWGSL/ShadersInclude/reflectionFunction.js.map +1 -1
  962. package/ShadersWGSL/ShadersInclude/samplerFragmentAlternateDeclaration.js +3 -1
  963. package/ShadersWGSL/ShadersInclude/samplerFragmentAlternateDeclaration.js.map +1 -1
  964. package/ShadersWGSL/ShadersInclude/samplerFragmentDeclaration.js +3 -1
  965. package/ShadersWGSL/ShadersInclude/samplerFragmentDeclaration.js.map +1 -1
  966. package/ShadersWGSL/ShadersInclude/samplerVertexDeclaration.js +3 -1
  967. package/ShadersWGSL/ShadersInclude/samplerVertexDeclaration.js.map +1 -1
  968. package/ShadersWGSL/ShadersInclude/samplerVertexImplementation.js +3 -1
  969. package/ShadersWGSL/ShadersInclude/samplerVertexImplementation.js.map +1 -1
  970. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +3 -1
  971. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js.map +1 -1
  972. package/ShadersWGSL/ShadersInclude/screenSpaceRayTrace.js +3 -1
  973. package/ShadersWGSL/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
  974. package/ShadersWGSL/ShadersInclude/shadowMapFragment.js +3 -1
  975. package/ShadersWGSL/ShadersInclude/shadowMapFragment.js.map +1 -1
  976. package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.js +3 -1
  977. package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.js.map +1 -1
  978. package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +3 -1
  979. package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js.map +1 -1
  980. package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.js +3 -1
  981. package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.js.map +1 -1
  982. package/ShadersWGSL/ShadersInclude/shadowMapVertexMetric.js +3 -1
  983. package/ShadersWGSL/ShadersInclude/shadowMapVertexMetric.js.map +1 -1
  984. package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.js +3 -1
  985. package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.js.map +1 -1
  986. package/ShadersWGSL/ShadersInclude/shadowsFragmentFunctions.js +3 -1
  987. package/ShadersWGSL/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
  988. package/ShadersWGSL/ShadersInclude/shadowsVertex.js +3 -1
  989. package/ShadersWGSL/ShadersInclude/shadowsVertex.js.map +1 -1
  990. package/ShadersWGSL/ShadersInclude/subSurfaceScatteringFunctions.js +3 -1
  991. package/ShadersWGSL/ShadersInclude/subSurfaceScatteringFunctions.js.map +1 -1
  992. package/ShadersWGSL/ShadersInclude/uvAttributeDeclaration.js +3 -1
  993. package/ShadersWGSL/ShadersInclude/uvAttributeDeclaration.js.map +1 -1
  994. package/ShadersWGSL/ShadersInclude/uvVariableDeclaration.js +3 -1
  995. package/ShadersWGSL/ShadersInclude/uvVariableDeclaration.js.map +1 -1
  996. package/ShadersWGSL/ShadersInclude/vertexColorMixing.js +3 -1
  997. package/ShadersWGSL/ShadersInclude/vertexColorMixing.js.map +1 -1
  998. package/ShadersWGSL/anaglyph.fragment.js +3 -1
  999. package/ShadersWGSL/anaglyph.fragment.js.map +1 -1
  1000. package/ShadersWGSL/background.fragment.js +3 -1
  1001. package/ShadersWGSL/background.fragment.js.map +1 -1
  1002. package/ShadersWGSL/background.vertex.js +3 -1
  1003. package/ShadersWGSL/background.vertex.js.map +1 -1
  1004. package/ShadersWGSL/bilateralBlur.fragment.js +3 -1
  1005. package/ShadersWGSL/bilateralBlur.fragment.js.map +1 -1
  1006. package/ShadersWGSL/bilateralBlurQuality.fragment.js +3 -1
  1007. package/ShadersWGSL/bilateralBlurQuality.fragment.js.map +1 -1
  1008. package/ShadersWGSL/blackAndWhite.fragment.js +3 -1
  1009. package/ShadersWGSL/blackAndWhite.fragment.js.map +1 -1
  1010. package/ShadersWGSL/bloomMerge.fragment.js +3 -1
  1011. package/ShadersWGSL/bloomMerge.fragment.js.map +1 -1
  1012. package/ShadersWGSL/boundingBoxRenderer.fragment.js +3 -1
  1013. package/ShadersWGSL/boundingBoxRenderer.fragment.js.map +1 -1
  1014. package/ShadersWGSL/boundingBoxRenderer.vertex.js +3 -1
  1015. package/ShadersWGSL/boundingBoxRenderer.vertex.js.map +1 -1
  1016. package/ShadersWGSL/boundingInfo.compute.js +3 -1
  1017. package/ShadersWGSL/boundingInfo.compute.js.map +1 -1
  1018. package/ShadersWGSL/chromaticAberration.fragment.js +3 -1
  1019. package/ShadersWGSL/chromaticAberration.fragment.js.map +1 -1
  1020. package/ShadersWGSL/circleOfConfusion.fragment.js +3 -1
  1021. package/ShadersWGSL/circleOfConfusion.fragment.js.map +1 -1
  1022. package/ShadersWGSL/clearQuad.fragment.js +3 -1
  1023. package/ShadersWGSL/clearQuad.fragment.js.map +1 -1
  1024. package/ShadersWGSL/clearQuad.vertex.js +3 -1
  1025. package/ShadersWGSL/clearQuad.vertex.js.map +1 -1
  1026. package/ShadersWGSL/color.fragment.js +3 -1
  1027. package/ShadersWGSL/color.fragment.js.map +1 -1
  1028. package/ShadersWGSL/color.vertex.js +3 -1
  1029. package/ShadersWGSL/color.vertex.js.map +1 -1
  1030. package/ShadersWGSL/colorCorrection.fragment.js +3 -1
  1031. package/ShadersWGSL/colorCorrection.fragment.js.map +1 -1
  1032. package/ShadersWGSL/convolution.fragment.js +3 -1
  1033. package/ShadersWGSL/convolution.fragment.js.map +1 -1
  1034. package/ShadersWGSL/copyTexture3DLayerToTexture.fragment.js +3 -1
  1035. package/ShadersWGSL/copyTexture3DLayerToTexture.fragment.js.map +1 -1
  1036. package/ShadersWGSL/copyTextureToTexture.fragment.js +3 -1
  1037. package/ShadersWGSL/copyTextureToTexture.fragment.js.map +1 -1
  1038. package/ShadersWGSL/default.fragment.js +3 -1
  1039. package/ShadersWGSL/default.fragment.js.map +1 -1
  1040. package/ShadersWGSL/default.vertex.js +3 -1
  1041. package/ShadersWGSL/default.vertex.js.map +1 -1
  1042. package/ShadersWGSL/depth.fragment.js +3 -1
  1043. package/ShadersWGSL/depth.fragment.js.map +1 -1
  1044. package/ShadersWGSL/depth.vertex.js +3 -1
  1045. package/ShadersWGSL/depth.vertex.js.map +1 -1
  1046. package/ShadersWGSL/depthBoxBlur.fragment.js +3 -1
  1047. package/ShadersWGSL/depthBoxBlur.fragment.js.map +1 -1
  1048. package/ShadersWGSL/depthOfFieldMerge.fragment.js +3 -1
  1049. package/ShadersWGSL/depthOfFieldMerge.fragment.js.map +1 -1
  1050. package/ShadersWGSL/displayPass.fragment.js +3 -1
  1051. package/ShadersWGSL/displayPass.fragment.js.map +1 -1
  1052. package/ShadersWGSL/extractHighlights.fragment.js +3 -1
  1053. package/ShadersWGSL/extractHighlights.fragment.js.map +1 -1
  1054. package/ShadersWGSL/filter.fragment.js +3 -1
  1055. package/ShadersWGSL/filter.fragment.js.map +1 -1
  1056. package/ShadersWGSL/fluidRenderingBilateralBlur.fragment.js +3 -1
  1057. package/ShadersWGSL/fluidRenderingBilateralBlur.fragment.js.map +1 -1
  1058. package/ShadersWGSL/fluidRenderingParticleDepth.fragment.js +3 -1
  1059. package/ShadersWGSL/fluidRenderingParticleDepth.fragment.js.map +1 -1
  1060. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +3 -1
  1061. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
  1062. package/ShadersWGSL/fluidRenderingParticleDiffuse.fragment.js +3 -1
  1063. package/ShadersWGSL/fluidRenderingParticleDiffuse.fragment.js.map +1 -1
  1064. package/ShadersWGSL/fluidRenderingParticleDiffuse.vertex.js +3 -1
  1065. package/ShadersWGSL/fluidRenderingParticleDiffuse.vertex.js.map +1 -1
  1066. package/ShadersWGSL/fluidRenderingParticleThickness.fragment.js +3 -1
  1067. package/ShadersWGSL/fluidRenderingParticleThickness.fragment.js.map +1 -1
  1068. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +3 -1
  1069. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
  1070. package/ShadersWGSL/fluidRenderingRender.fragment.js +3 -1
  1071. package/ShadersWGSL/fluidRenderingRender.fragment.js.map +1 -1
  1072. package/ShadersWGSL/fluidRenderingStandardBlur.fragment.js +3 -1
  1073. package/ShadersWGSL/fluidRenderingStandardBlur.fragment.js.map +1 -1
  1074. package/ShadersWGSL/fxaa.fragment.js +3 -1
  1075. package/ShadersWGSL/fxaa.fragment.js.map +1 -1
  1076. package/ShadersWGSL/fxaa.vertex.js +3 -1
  1077. package/ShadersWGSL/fxaa.vertex.js.map +1 -1
  1078. package/ShadersWGSL/gaussianSplatting.fragment.js +3 -1
  1079. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  1080. package/ShadersWGSL/gaussianSplatting.vertex.js +3 -1
  1081. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  1082. package/ShadersWGSL/geometry.fragment.js +3 -1
  1083. package/ShadersWGSL/geometry.fragment.js.map +1 -1
  1084. package/ShadersWGSL/geometry.vertex.js +3 -1
  1085. package/ShadersWGSL/geometry.vertex.js.map +1 -1
  1086. package/ShadersWGSL/glowBlurPostProcess.fragment.js +3 -1
  1087. package/ShadersWGSL/glowBlurPostProcess.fragment.js.map +1 -1
  1088. package/ShadersWGSL/glowMapGeneration.fragment.js +3 -1
  1089. package/ShadersWGSL/glowMapGeneration.fragment.js.map +1 -1
  1090. package/ShadersWGSL/glowMapGeneration.vertex.js +3 -1
  1091. package/ShadersWGSL/glowMapGeneration.vertex.js.map +1 -1
  1092. package/ShadersWGSL/glowMapMerge.fragment.js +3 -1
  1093. package/ShadersWGSL/glowMapMerge.fragment.js.map +1 -1
  1094. package/ShadersWGSL/glowMapMerge.vertex.js +3 -1
  1095. package/ShadersWGSL/glowMapMerge.vertex.js.map +1 -1
  1096. package/ShadersWGSL/gpuUpdateParticles.compute.js +3 -1
  1097. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  1098. package/ShadersWGSL/grain.fragment.js +3 -1
  1099. package/ShadersWGSL/grain.fragment.js.map +1 -1
  1100. package/ShadersWGSL/greasedLine.fragment.js +3 -1
  1101. package/ShadersWGSL/greasedLine.fragment.js.map +1 -1
  1102. package/ShadersWGSL/greasedLine.vertex.js +3 -1
  1103. package/ShadersWGSL/greasedLine.vertex.js.map +1 -1
  1104. package/ShadersWGSL/hdrFiltering.fragment.js +3 -1
  1105. package/ShadersWGSL/hdrFiltering.fragment.js.map +1 -1
  1106. package/ShadersWGSL/hdrFiltering.vertex.js +3 -1
  1107. package/ShadersWGSL/hdrFiltering.vertex.js.map +1 -1
  1108. package/ShadersWGSL/hdrIrradianceFiltering.fragment.js +3 -1
  1109. package/ShadersWGSL/hdrIrradianceFiltering.fragment.js.map +1 -1
  1110. package/ShadersWGSL/hdrIrradianceFiltering.vertex.js +3 -1
  1111. package/ShadersWGSL/hdrIrradianceFiltering.vertex.js.map +1 -1
  1112. package/ShadersWGSL/highlights.fragment.js +3 -1
  1113. package/ShadersWGSL/highlights.fragment.js.map +1 -1
  1114. package/ShadersWGSL/iblCdfDebug.fragment.js +3 -1
  1115. package/ShadersWGSL/iblCdfDebug.fragment.js.map +1 -1
  1116. package/ShadersWGSL/iblCdfx.fragment.js +3 -1
  1117. package/ShadersWGSL/iblCdfx.fragment.js.map +1 -1
  1118. package/ShadersWGSL/iblCdfy.fragment.js +3 -1
  1119. package/ShadersWGSL/iblCdfy.fragment.js.map +1 -1
  1120. package/ShadersWGSL/iblCombineVoxelGrids.fragment.js +3 -1
  1121. package/ShadersWGSL/iblCombineVoxelGrids.fragment.js.map +1 -1
  1122. package/ShadersWGSL/iblGenerateVoxelMip.fragment.js +3 -1
  1123. package/ShadersWGSL/iblGenerateVoxelMip.fragment.js.map +1 -1
  1124. package/ShadersWGSL/iblIcdf.fragment.js +3 -1
  1125. package/ShadersWGSL/iblIcdf.fragment.js.map +1 -1
  1126. package/ShadersWGSL/iblScaledLuminance.fragment.js +3 -1
  1127. package/ShadersWGSL/iblScaledLuminance.fragment.js.map +1 -1
  1128. package/ShadersWGSL/iblShadowAccumulation.fragment.js +3 -1
  1129. package/ShadersWGSL/iblShadowAccumulation.fragment.js.map +1 -1
  1130. package/ShadersWGSL/iblShadowDebug.fragment.js +3 -1
  1131. package/ShadersWGSL/iblShadowDebug.fragment.js.map +1 -1
  1132. package/ShadersWGSL/iblShadowGBufferDebug.fragment.js +3 -1
  1133. package/ShadersWGSL/iblShadowGBufferDebug.fragment.js.map +1 -1
  1134. package/ShadersWGSL/iblShadowSpatialBlur.fragment.js +3 -1
  1135. package/ShadersWGSL/iblShadowSpatialBlur.fragment.js.map +1 -1
  1136. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js +3 -1
  1137. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js.map +1 -1
  1138. package/ShadersWGSL/iblShadowsCombine.fragment.js +3 -1
  1139. package/ShadersWGSL/iblShadowsCombine.fragment.js.map +1 -1
  1140. package/ShadersWGSL/iblVoxelGrid.fragment.js +3 -1
  1141. package/ShadersWGSL/iblVoxelGrid.fragment.js.map +1 -1
  1142. package/ShadersWGSL/iblVoxelGrid.vertex.js +3 -1
  1143. package/ShadersWGSL/iblVoxelGrid.vertex.js.map +1 -1
  1144. package/ShadersWGSL/iblVoxelGrid2dArrayDebug.fragment.js +3 -1
  1145. package/ShadersWGSL/iblVoxelGrid2dArrayDebug.fragment.js.map +1 -1
  1146. package/ShadersWGSL/iblVoxelGrid3dDebug.fragment.js +3 -1
  1147. package/ShadersWGSL/iblVoxelGrid3dDebug.fragment.js.map +1 -1
  1148. package/ShadersWGSL/iblVoxelSlabDebug.fragment.js +3 -1
  1149. package/ShadersWGSL/iblVoxelSlabDebug.fragment.js.map +1 -1
  1150. package/ShadersWGSL/iblVoxelSlabDebug.vertex.js +3 -1
  1151. package/ShadersWGSL/iblVoxelSlabDebug.vertex.js.map +1 -1
  1152. package/ShadersWGSL/imageProcessing.fragment.js +4 -2
  1153. package/ShadersWGSL/imageProcessing.fragment.js.map +1 -1
  1154. package/ShadersWGSL/kernelBlur.fragment.js +3 -1
  1155. package/ShadersWGSL/kernelBlur.fragment.js.map +1 -1
  1156. package/ShadersWGSL/kernelBlur.vertex.js +3 -1
  1157. package/ShadersWGSL/kernelBlur.vertex.js.map +1 -1
  1158. package/ShadersWGSL/layer.fragment.js +3 -1
  1159. package/ShadersWGSL/layer.fragment.js.map +1 -1
  1160. package/ShadersWGSL/layer.vertex.js +3 -1
  1161. package/ShadersWGSL/layer.vertex.js.map +1 -1
  1162. package/ShadersWGSL/lensFlare.fragment.js +3 -1
  1163. package/ShadersWGSL/lensFlare.fragment.js.map +1 -1
  1164. package/ShadersWGSL/lensFlare.vertex.js +3 -1
  1165. package/ShadersWGSL/lensFlare.vertex.js.map +1 -1
  1166. package/ShadersWGSL/line.fragment.js +3 -1
  1167. package/ShadersWGSL/line.fragment.js.map +1 -1
  1168. package/ShadersWGSL/line.vertex.js +3 -1
  1169. package/ShadersWGSL/line.vertex.js.map +1 -1
  1170. package/ShadersWGSL/lod.fragment.js +3 -1
  1171. package/ShadersWGSL/lod.fragment.js.map +1 -1
  1172. package/ShadersWGSL/lodCube.fragment.js +3 -1
  1173. package/ShadersWGSL/lodCube.fragment.js.map +1 -1
  1174. package/ShadersWGSL/meshUVSpaceRenderer.fragment.js +3 -1
  1175. package/ShadersWGSL/meshUVSpaceRenderer.fragment.js.map +1 -1
  1176. package/ShadersWGSL/meshUVSpaceRenderer.vertex.js +3 -1
  1177. package/ShadersWGSL/meshUVSpaceRenderer.vertex.js.map +1 -1
  1178. package/ShadersWGSL/meshUVSpaceRendererFinaliser.fragment.js +3 -1
  1179. package/ShadersWGSL/meshUVSpaceRendererFinaliser.fragment.js.map +1 -1
  1180. package/ShadersWGSL/meshUVSpaceRendererFinaliser.vertex.js +3 -1
  1181. package/ShadersWGSL/meshUVSpaceRendererFinaliser.vertex.js.map +1 -1
  1182. package/ShadersWGSL/meshUVSpaceRendererMasker.fragment.js +3 -1
  1183. package/ShadersWGSL/meshUVSpaceRendererMasker.fragment.js.map +1 -1
  1184. package/ShadersWGSL/meshUVSpaceRendererMasker.vertex.js +3 -1
  1185. package/ShadersWGSL/meshUVSpaceRendererMasker.vertex.js.map +1 -1
  1186. package/ShadersWGSL/motionBlur.fragment.js +4 -2
  1187. package/ShadersWGSL/motionBlur.fragment.js.map +1 -1
  1188. package/ShadersWGSL/oitBackBlend.fragment.js +3 -1
  1189. package/ShadersWGSL/oitBackBlend.fragment.js.map +1 -1
  1190. package/ShadersWGSL/oitFinal.fragment.js +3 -1
  1191. package/ShadersWGSL/oitFinal.fragment.js.map +1 -1
  1192. package/ShadersWGSL/outline.fragment.js +3 -1
  1193. package/ShadersWGSL/outline.fragment.js.map +1 -1
  1194. package/ShadersWGSL/outline.vertex.js +3 -1
  1195. package/ShadersWGSL/outline.vertex.js.map +1 -1
  1196. package/ShadersWGSL/particles.fragment.js +3 -1
  1197. package/ShadersWGSL/particles.fragment.js.map +1 -1
  1198. package/ShadersWGSL/particles.vertex.js +3 -1
  1199. package/ShadersWGSL/particles.vertex.js.map +1 -1
  1200. package/ShadersWGSL/pass.fragment.js +3 -1
  1201. package/ShadersWGSL/pass.fragment.js.map +1 -1
  1202. package/ShadersWGSL/passCube.fragment.js +3 -1
  1203. package/ShadersWGSL/passCube.fragment.js.map +1 -1
  1204. package/ShadersWGSL/pbr.fragment.js +6 -1
  1205. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  1206. package/ShadersWGSL/pbr.vertex.js +3 -1
  1207. package/ShadersWGSL/pbr.vertex.js.map +1 -1
  1208. package/ShadersWGSL/picking.fragment.js +3 -1
  1209. package/ShadersWGSL/picking.fragment.js.map +1 -1
  1210. package/ShadersWGSL/picking.vertex.js +3 -1
  1211. package/ShadersWGSL/picking.vertex.js.map +1 -1
  1212. package/ShadersWGSL/postprocess.vertex.js +3 -1
  1213. package/ShadersWGSL/postprocess.vertex.js.map +1 -1
  1214. package/ShadersWGSL/procedural.vertex.js +3 -1
  1215. package/ShadersWGSL/procedural.vertex.js.map +1 -1
  1216. package/ShadersWGSL/rgbdDecode.fragment.js +3 -1
  1217. package/ShadersWGSL/rgbdDecode.fragment.js.map +1 -1
  1218. package/ShadersWGSL/rgbdEncode.fragment.js +3 -1
  1219. package/ShadersWGSL/rgbdEncode.fragment.js.map +1 -1
  1220. package/ShadersWGSL/rsmFullGlobalIllumination.fragment.js +3 -1
  1221. package/ShadersWGSL/rsmFullGlobalIllumination.fragment.js.map +1 -1
  1222. package/ShadersWGSL/rsmGlobalIllumination.fragment.js +3 -1
  1223. package/ShadersWGSL/rsmGlobalIllumination.fragment.js.map +1 -1
  1224. package/ShadersWGSL/screenSpaceReflection2.fragment.js +4 -2
  1225. package/ShadersWGSL/screenSpaceReflection2.fragment.js.map +1 -1
  1226. package/ShadersWGSL/screenSpaceReflection2Blur.fragment.js +3 -1
  1227. package/ShadersWGSL/screenSpaceReflection2Blur.fragment.js.map +1 -1
  1228. package/ShadersWGSL/screenSpaceReflection2BlurCombiner.fragment.js +3 -1
  1229. package/ShadersWGSL/screenSpaceReflection2BlurCombiner.fragment.js.map +1 -1
  1230. package/ShadersWGSL/shadowMap.fragment.js +3 -1
  1231. package/ShadersWGSL/shadowMap.fragment.js.map +1 -1
  1232. package/ShadersWGSL/shadowMap.vertex.js +3 -1
  1233. package/ShadersWGSL/shadowMap.vertex.js.map +1 -1
  1234. package/ShadersWGSL/sharpen.fragment.js +3 -1
  1235. package/ShadersWGSL/sharpen.fragment.js.map +1 -1
  1236. package/ShadersWGSL/sprites.fragment.js +3 -1
  1237. package/ShadersWGSL/sprites.fragment.js.map +1 -1
  1238. package/ShadersWGSL/sprites.vertex.js +3 -1
  1239. package/ShadersWGSL/sprites.vertex.js.map +1 -1
  1240. package/ShadersWGSL/ssao2.fragment.js +3 -1
  1241. package/ShadersWGSL/ssao2.fragment.js.map +1 -1
  1242. package/ShadersWGSL/ssaoCombine.fragment.js +3 -1
  1243. package/ShadersWGSL/ssaoCombine.fragment.js.map +1 -1
  1244. package/ShadersWGSL/subSurfaceScattering.fragment.d.ts +9 -0
  1245. package/ShadersWGSL/subSurfaceScattering.fragment.js +77 -0
  1246. package/ShadersWGSL/subSurfaceScattering.fragment.js.map +1 -0
  1247. package/ShadersWGSL/taa.fragment.js +3 -1
  1248. package/ShadersWGSL/taa.fragment.js.map +1 -1
  1249. package/ShadersWGSL/tonemap.fragment.js +3 -1
  1250. package/ShadersWGSL/tonemap.fragment.js.map +1 -1
  1251. package/ShadersWGSL/vrDistortionCorrection.fragment.js +3 -1
  1252. package/ShadersWGSL/vrDistortionCorrection.fragment.js.map +1 -1
  1253. package/package.json +1 -1
  1254. package/scene.d.ts +9 -2
  1255. package/scene.js +9 -2
  1256. package/scene.js.map +1 -1
  1257. package/FrameGraph/Node/Blocks/Rendering/cullObjectsBlock.js.map +0 -1
  1258. package/FrameGraph/Tasks/Rendering/cullObjectsTask.js.map +0 -1
  1259. /package/FrameGraph/Tasks/{Rendering → Misc}/cullObjectsTask.d.ts +0 -0
  1260. /package/FrameGraph/Tasks/{Rendering → Misc}/cullObjectsTask.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"babylonFileLoader.js","sourceRoot":"","sources":["../../../../../dev/core/src/Loading/Plugins/babylonFileLoader.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../../Misc/logger\";\r\nimport type { Nullable } from \"../../types\";\r\nimport { Camera } from \"../../Cameras/camera\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Vector3 } from \"../../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh } from \"../../Meshes/mesh\";\r\nimport type { AbstractMesh } from \"../../Meshes/abstractMesh\";\r\nimport { Geometry } from \"../../Meshes/geometry\";\r\nimport type { Node } from \"../../node\";\r\nimport { TransformNode } from \"../../Meshes/transformNode\";\r\nimport { Material } from \"../../Materials/material\";\r\nimport { MultiMaterial } from \"../../Materials/multiMaterial\";\r\nimport { CubeTexture } from \"../../Materials/Textures/cubeTexture\";\r\nimport { HDRCubeTexture } from \"../../Materials/Textures/hdrCubeTexture\";\r\nimport { AnimationGroup } from \"../../Animations/animationGroup\";\r\nimport { Light } from \"../../Lights/light\";\r\nimport { SceneComponentConstants } from \"../../sceneComponent\";\r\nimport { SceneLoader } from \"../../Loading/sceneLoader\";\r\nimport { AssetContainer } from \"../../assetContainer\";\r\nimport { ActionManager } from \"../../Actions/actionManager\";\r\nimport type { IParticleSystem } from \"../../Particles/IParticleSystem\";\r\nimport { Skeleton } from \"../../Bones/skeleton\";\r\nimport { MorphTargetManager } from \"../../Morph/morphTargetManager\";\r\nimport { CannonJSPlugin } from \"../../Physics/v1/Plugins/cannonJSPlugin\";\r\nimport { OimoJSPlugin } from \"../../Physics/v1/Plugins/oimoJSPlugin\";\r\nimport { AmmoJSPlugin } from \"../../Physics/v1/Plugins/ammoJSPlugin\";\r\nimport { ReflectionProbe } from \"../../Probes/reflectionProbe\";\r\nimport { GetClass } from \"../../Misc/typeStore\";\r\nimport { Tools } from \"../../Misc/tools\";\r\nimport { PostProcess } from \"../../PostProcesses/postProcess\";\r\nimport { SpriteManager } from \"core/Sprites/spriteManager\";\r\nimport { GetIndividualParser, Parse } from \"./babylonFileParser.function\";\r\n\r\n/** @internal */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention, no-var\r\nexport var _BabylonLoaderRegistered = true;\r\n\r\n/**\r\n * Helps setting up some configuration for the babylon file loader.\r\n */\r\nexport class BabylonFileLoaderConfiguration {\r\n /**\r\n * The loader does not allow injecting custom physics engine into the plugins.\r\n * Unfortunately in ES6, we need to manually inject them into the plugin.\r\n * So you could set this variable to your engine import to make it work.\r\n */\r\n public static LoaderInjectedPhysicsEngine: any = undefined;\r\n}\r\n\r\nlet tempIndexContainer: { [key: string]: Node } = {};\r\nlet tempMaterialIndexContainer: { [key: string]: Material } = {};\r\nlet tempMorphTargetManagerIndexContainer: { [key: string]: MorphTargetManager } = {};\r\n\r\nconst parseMaterialByPredicate = (predicate: (parsedMaterial: any) => boolean, parsedData: any, scene: Scene, rootUrl: string) => {\r\n if (!parsedData.materials) {\r\n return null;\r\n }\r\n\r\n for (let index = 0, cache = parsedData.materials.length; index < cache; index++) {\r\n const parsedMaterial = parsedData.materials[index];\r\n if (predicate(parsedMaterial)) {\r\n return { parsedMaterial, material: Material.Parse(parsedMaterial, scene, rootUrl) };\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nconst isDescendantOf = (mesh: any, names: Array<any>, hierarchyIds: Array<number>) => {\r\n for (const i in names) {\r\n if (mesh.name === names[i]) {\r\n hierarchyIds.push(mesh.id);\r\n return true;\r\n }\r\n }\r\n if (mesh.parentId !== undefined && hierarchyIds.indexOf(mesh.parentId) !== -1) {\r\n hierarchyIds.push(mesh.id);\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nconst logOperation = (operation: string, producer: { file: string; name: string; version: string; exporter_version: string }) => {\r\n return (\r\n operation +\r\n \" of \" +\r\n (producer ? producer.file + \" from \" + producer.name + \" version: \" + producer.version + \", exporter version: \" + producer.exporter_version : \"unknown\")\r\n );\r\n};\r\n\r\nconst loadDetailLevels = (scene: Scene, mesh: AbstractMesh) => {\r\n const mastermesh: Mesh = mesh as Mesh;\r\n\r\n // Every value specified in the ids array of the lod data points to another mesh which should be used as the lower LOD level.\r\n // The distances (or coverages) array values specified are used along with the lod mesh ids as a hint to determine the switching threshold for the various LODs.\r\n if (mesh._waitingData.lods) {\r\n if (mesh._waitingData.lods.ids && mesh._waitingData.lods.ids.length > 0) {\r\n const lodmeshes: string[] = mesh._waitingData.lods.ids;\r\n const wasenabled: boolean = mastermesh.isEnabled(false);\r\n if (mesh._waitingData.lods.distances) {\r\n const distances: number[] = mesh._waitingData.lods.distances;\r\n if (distances.length >= lodmeshes.length) {\r\n const culling: number = distances.length > lodmeshes.length ? distances[distances.length - 1] : 0;\r\n mastermesh.setEnabled(false);\r\n for (let index = 0; index < lodmeshes.length; index++) {\r\n const lodid: string = lodmeshes[index];\r\n const lodmesh: Mesh = scene.getMeshById(lodid) as Mesh;\r\n if (lodmesh != null) {\r\n mastermesh.addLODLevel(distances[index], lodmesh);\r\n }\r\n }\r\n if (culling > 0) {\r\n mastermesh.addLODLevel(culling, null);\r\n }\r\n if (wasenabled === true) {\r\n mastermesh.setEnabled(true);\r\n }\r\n } else {\r\n Tools.Warn(\"Invalid level of detail distances for \" + mesh.name);\r\n }\r\n }\r\n }\r\n mesh._waitingData.lods = null;\r\n }\r\n};\r\n\r\nconst findParent = (parentId: any, parentInstanceIndex: any, scene: Scene) => {\r\n if (typeof parentId !== \"number\") {\r\n const parentEntry = scene.getLastEntryById(parentId);\r\n if (parentEntry && parentInstanceIndex !== undefined && parentInstanceIndex !== null) {\r\n const instance = (parentEntry as Mesh).instances[parseInt(parentInstanceIndex)];\r\n return instance;\r\n }\r\n return parentEntry;\r\n }\r\n\r\n const parent = tempIndexContainer[parentId];\r\n if (parent && parentInstanceIndex !== undefined && parentInstanceIndex !== null) {\r\n const instance = (parent as Mesh).instances[parseInt(parentInstanceIndex)];\r\n return instance;\r\n }\r\n\r\n return parent;\r\n};\r\n\r\nconst findMaterial = (materialId: any, scene: Scene) => {\r\n if (typeof materialId !== \"number\") {\r\n return scene.getLastMaterialById(materialId, true);\r\n }\r\n\r\n return tempMaterialIndexContainer[materialId];\r\n};\r\n\r\nconst loadAssetContainer = (scene: Scene, data: string, rootUrl: string, onError?: (message: string, exception?: any) => void, addToScene = false): AssetContainer => {\r\n const container = new AssetContainer(scene);\r\n\r\n // Entire method running in try block, so ALWAYS logs as far as it got, only actually writes details\r\n // when SceneLoader.debugLogging = true (default), or exception encountered.\r\n // Everything stored in var log instead of writing separate lines to support only writing in exception,\r\n // and avoid problems with multiple concurrent .babylon loads.\r\n let log = \"importScene has failed JSON parse\";\r\n try {\r\n // eslint-disable-next-line no-var\r\n var parsedData = JSON.parse(data);\r\n log = \"\";\r\n const fullDetails = SceneLoader.loggingLevel === SceneLoader.DETAILED_LOGGING;\r\n\r\n let index: number;\r\n let cache: number;\r\n\r\n // Environment texture\r\n if (parsedData.environmentTexture !== undefined && parsedData.environmentTexture !== null) {\r\n // PBR needed for both HDR texture (gamma space) & a sky box\r\n const isPBR = parsedData.isPBR !== undefined ? parsedData.isPBR : true;\r\n if (parsedData.environmentTextureType && parsedData.environmentTextureType === \"BABYLON.HDRCubeTexture\") {\r\n const hdrSize: number = parsedData.environmentTextureSize ? parsedData.environmentTextureSize : 128;\r\n const hdrTexture = new HDRCubeTexture(\r\n (parsedData.environmentTexture.match(/https?:\\/\\//g) ? \"\" : rootUrl) + parsedData.environmentTexture,\r\n scene,\r\n hdrSize,\r\n true,\r\n !isPBR,\r\n undefined,\r\n parsedData.environmentTexturePrefilterOnLoad\r\n );\r\n if (parsedData.environmentTextureRotationY) {\r\n hdrTexture.rotationY = parsedData.environmentTextureRotationY;\r\n }\r\n scene.environmentTexture = hdrTexture;\r\n } else {\r\n if (typeof parsedData.environmentTexture === \"object\") {\r\n const environmentTexture = CubeTexture.Parse(parsedData.environmentTexture, scene, rootUrl);\r\n scene.environmentTexture = environmentTexture;\r\n } else if ((parsedData.environmentTexture as string).endsWith(\".env\")) {\r\n const compressedTexture = new CubeTexture(\r\n (parsedData.environmentTexture.match(/https?:\\/\\//g) ? \"\" : rootUrl) + parsedData.environmentTexture,\r\n scene,\r\n parsedData.environmentTextureForcedExtension\r\n );\r\n if (parsedData.environmentTextureRotationY) {\r\n compressedTexture.rotationY = parsedData.environmentTextureRotationY;\r\n }\r\n scene.environmentTexture = compressedTexture;\r\n } else {\r\n const cubeTexture = CubeTexture.CreateFromPrefilteredData(\r\n (parsedData.environmentTexture.match(/https?:\\/\\//g) ? \"\" : rootUrl) + parsedData.environmentTexture,\r\n scene,\r\n parsedData.environmentTextureForcedExtension\r\n );\r\n if (parsedData.environmentTextureRotationY) {\r\n cubeTexture.rotationY = parsedData.environmentTextureRotationY;\r\n }\r\n scene.environmentTexture = cubeTexture;\r\n }\r\n }\r\n if (parsedData.createDefaultSkybox === true) {\r\n const skyboxScale = scene.activeCamera !== undefined && scene.activeCamera !== null ? (scene.activeCamera.maxZ - scene.activeCamera.minZ) / 2 : 1000;\r\n const skyboxBlurLevel = parsedData.skyboxBlurLevel || 0;\r\n scene.createDefaultSkybox(scene.environmentTexture, isPBR, skyboxScale, skyboxBlurLevel);\r\n }\r\n container.environmentTexture = scene.environmentTexture;\r\n }\r\n\r\n // Environment Intensity\r\n if (parsedData.environmentIntensity !== undefined && parsedData.environmentIntensity !== null) {\r\n scene.environmentIntensity = parsedData.environmentIntensity;\r\n }\r\n\r\n // Lights\r\n if (parsedData.lights !== undefined && parsedData.lights !== null) {\r\n for (index = 0, cache = parsedData.lights.length; index < cache; index++) {\r\n const parsedLight = parsedData.lights[index];\r\n const light = Light.Parse(parsedLight, scene);\r\n if (light) {\r\n tempIndexContainer[parsedLight.uniqueId] = light;\r\n container.lights.push(light);\r\n light._parentContainer = container;\r\n log += index === 0 ? \"\\n\\tLights:\" : \"\";\r\n log += \"\\n\\t\\t\" + light.toString(fullDetails);\r\n }\r\n }\r\n }\r\n\r\n // Reflection probes\r\n if (parsedData.reflectionProbes !== undefined && parsedData.reflectionProbes !== null) {\r\n for (index = 0, cache = parsedData.reflectionProbes.length; index < cache; index++) {\r\n const parsedReflectionProbe = parsedData.reflectionProbes[index];\r\n const reflectionProbe = ReflectionProbe.Parse(parsedReflectionProbe, scene, rootUrl);\r\n if (reflectionProbe) {\r\n container.reflectionProbes.push(reflectionProbe);\r\n reflectionProbe._parentContainer = container;\r\n log += index === 0 ? \"\\n\\tReflection Probes:\" : \"\";\r\n log += \"\\n\\t\\t\" + reflectionProbe.toString(fullDetails);\r\n }\r\n }\r\n }\r\n\r\n // Animations\r\n if (parsedData.animations !== undefined && parsedData.animations !== null) {\r\n for (index = 0, cache = parsedData.animations.length; index < cache; index++) {\r\n const parsedAnimation = parsedData.animations[index];\r\n const internalClass = GetClass(\"BABYLON.Animation\");\r\n if (internalClass) {\r\n const animation = internalClass.Parse(parsedAnimation);\r\n scene.animations.push(animation);\r\n container.animations.push(animation);\r\n log += index === 0 ? \"\\n\\tAnimations:\" : \"\";\r\n log += \"\\n\\t\\t\" + animation.toString(fullDetails);\r\n }\r\n }\r\n }\r\n\r\n // Materials\r\n if (parsedData.materials !== undefined && parsedData.materials !== null) {\r\n for (index = 0, cache = parsedData.materials.length; index < cache; index++) {\r\n const parsedMaterial = parsedData.materials[index];\r\n const mat = Material.Parse(parsedMaterial, scene, rootUrl);\r\n if (mat) {\r\n tempMaterialIndexContainer[parsedMaterial.uniqueId || parsedMaterial.id] = mat;\r\n container.materials.push(mat);\r\n mat._parentContainer = container;\r\n log += index === 0 ? \"\\n\\tMaterials:\" : \"\";\r\n log += \"\\n\\t\\t\" + mat.toString(fullDetails);\r\n\r\n // Textures\r\n const textures = mat.getActiveTextures();\r\n textures.forEach((t) => {\r\n if (container.textures.indexOf(t) == -1) {\r\n container.textures.push(t);\r\n t._parentContainer = container;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (parsedData.multiMaterials !== undefined && parsedData.multiMaterials !== null) {\r\n for (index = 0, cache = parsedData.multiMaterials.length; index < cache; index++) {\r\n const parsedMultiMaterial = parsedData.multiMaterials[index];\r\n const mmat = MultiMaterial.ParseMultiMaterial(parsedMultiMaterial, scene);\r\n tempMaterialIndexContainer[parsedMultiMaterial.uniqueId || parsedMultiMaterial.id] = mmat;\r\n container.multiMaterials.push(mmat);\r\n mmat._parentContainer = container;\r\n\r\n log += index === 0 ? \"\\n\\tMultiMaterials:\" : \"\";\r\n log += \"\\n\\t\\t\" + mmat.toString(fullDetails);\r\n\r\n // Textures\r\n const textures = mmat.getActiveTextures();\r\n textures.forEach((t) => {\r\n if (container.textures.indexOf(t) == -1) {\r\n container.textures.push(t);\r\n t._parentContainer = container;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Morph targets\r\n if (parsedData.morphTargetManagers !== undefined && parsedData.morphTargetManagers !== null) {\r\n for (const parsedManager of parsedData.morphTargetManagers) {\r\n const manager = MorphTargetManager.Parse(parsedManager, scene);\r\n tempMorphTargetManagerIndexContainer[parsedManager.id] = manager;\r\n container.morphTargetManagers.push(manager);\r\n manager._parentContainer = container;\r\n }\r\n }\r\n\r\n // Skeletons\r\n if (parsedData.skeletons !== undefined && parsedData.skeletons !== null) {\r\n for (index = 0, cache = parsedData.skeletons.length; index < cache; index++) {\r\n const parsedSkeleton = parsedData.skeletons[index];\r\n const skeleton = Skeleton.Parse(parsedSkeleton, scene);\r\n container.skeletons.push(skeleton);\r\n skeleton._parentContainer = container;\r\n log += index === 0 ? \"\\n\\tSkeletons:\" : \"\";\r\n log += \"\\n\\t\\t\" + skeleton.toString(fullDetails);\r\n }\r\n }\r\n\r\n // Geometries\r\n const geometries = parsedData.geometries;\r\n if (geometries !== undefined && geometries !== null) {\r\n const addedGeometry = new Array<Nullable<Geometry>>();\r\n\r\n // VertexData\r\n const vertexData = geometries.vertexData;\r\n if (vertexData !== undefined && vertexData !== null) {\r\n for (index = 0, cache = vertexData.length; index < cache; index++) {\r\n const parsedVertexData = vertexData[index];\r\n addedGeometry.push(Geometry.Parse(parsedVertexData, scene, rootUrl));\r\n }\r\n }\r\n\r\n addedGeometry.forEach((g) => {\r\n if (g) {\r\n container.geometries.push(g);\r\n g._parentContainer = container;\r\n }\r\n });\r\n }\r\n\r\n // Transform nodes\r\n if (parsedData.transformNodes !== undefined && parsedData.transformNodes !== null) {\r\n for (index = 0, cache = parsedData.transformNodes.length; index < cache; index++) {\r\n const parsedTransformNode = parsedData.transformNodes[index];\r\n const node = TransformNode.Parse(parsedTransformNode, scene, rootUrl);\r\n tempIndexContainer[parsedTransformNode.uniqueId] = node;\r\n container.transformNodes.push(node);\r\n node._parentContainer = container;\r\n }\r\n }\r\n\r\n // Meshes\r\n if (parsedData.meshes !== undefined && parsedData.meshes !== null) {\r\n for (index = 0, cache = parsedData.meshes.length; index < cache; index++) {\r\n const parsedMesh = parsedData.meshes[index];\r\n const mesh = <AbstractMesh>Mesh.Parse(parsedMesh, scene, rootUrl);\r\n tempIndexContainer[parsedMesh.uniqueId] = mesh;\r\n container.meshes.push(mesh);\r\n mesh._parentContainer = container;\r\n if (mesh.hasInstances) {\r\n for (const instance of (mesh as Mesh).instances) {\r\n container.meshes.push(instance);\r\n instance._parentContainer = container;\r\n }\r\n }\r\n log += index === 0 ? \"\\n\\tMeshes:\" : \"\";\r\n log += \"\\n\\t\\t\" + mesh.toString(fullDetails);\r\n }\r\n }\r\n\r\n // Cameras\r\n if (parsedData.cameras !== undefined && parsedData.cameras !== null) {\r\n for (index = 0, cache = parsedData.cameras.length; index < cache; index++) {\r\n const parsedCamera = parsedData.cameras[index];\r\n const camera = Camera.Parse(parsedCamera, scene);\r\n tempIndexContainer[parsedCamera.uniqueId] = camera;\r\n container.cameras.push(camera);\r\n camera._parentContainer = container;\r\n log += index === 0 ? \"\\n\\tCameras:\" : \"\";\r\n log += \"\\n\\t\\t\" + camera.toString(fullDetails);\r\n }\r\n }\r\n\r\n // Postprocesses\r\n if (parsedData.postProcesses !== undefined && parsedData.postProcesses !== null) {\r\n for (index = 0, cache = parsedData.postProcesses.length; index < cache; index++) {\r\n const parsedPostProcess = parsedData.postProcesses[index];\r\n const postProcess = PostProcess.Parse(parsedPostProcess, scene, rootUrl);\r\n if (postProcess) {\r\n container.postProcesses.push(postProcess);\r\n postProcess._parentContainer = container;\r\n log += index === 0 ? \"\\nPostprocesses:\" : \"\";\r\n log += \"\\n\\t\\t\" + postProcess.toString();\r\n }\r\n }\r\n }\r\n\r\n // Animation Groups\r\n if (parsedData.animationGroups !== undefined && parsedData.animationGroups !== null) {\r\n for (index = 0, cache = parsedData.animationGroups.length; index < cache; index++) {\r\n const parsedAnimationGroup = parsedData.animationGroups[index];\r\n const animationGroup = AnimationGroup.Parse(parsedAnimationGroup, scene);\r\n container.animationGroups.push(animationGroup);\r\n animationGroup._parentContainer = container;\r\n log += index === 0 ? \"\\n\\tAnimationGroups:\" : \"\";\r\n log += \"\\n\\t\\t\" + animationGroup.toString(fullDetails);\r\n }\r\n }\r\n\r\n // Sprites\r\n if (parsedData.spriteManagers) {\r\n for (let index = 0, cache = parsedData.spriteManagers.length; index < cache; index++) {\r\n const parsedSpriteManager = parsedData.spriteManagers[index];\r\n const spriteManager = SpriteManager.Parse(parsedSpriteManager, scene, rootUrl);\r\n log += \"\\n\\t\\tSpriteManager \" + spriteManager.name;\r\n }\r\n }\r\n\r\n // Browsing all the graph to connect the dots\r\n for (index = 0, cache = scene.cameras.length; index < cache; index++) {\r\n const camera = scene.cameras[index];\r\n if (camera._waitingParentId !== null) {\r\n camera.parent = findParent(camera._waitingParentId, camera._waitingParentInstanceIndex, scene);\r\n camera._waitingParentId = null;\r\n camera._waitingParentInstanceIndex = null;\r\n }\r\n }\r\n\r\n for (index = 0, cache = scene.lights.length; index < cache; index++) {\r\n const light = scene.lights[index];\r\n if (light && light._waitingParentId !== null) {\r\n light.parent = findParent(light._waitingParentId, light._waitingParentInstanceIndex, scene);\r\n light._waitingParentId = null;\r\n light._waitingParentInstanceIndex = null;\r\n }\r\n }\r\n\r\n // Connect parents & children and parse actions and lods\r\n for (index = 0, cache = scene.transformNodes.length; index < cache; index++) {\r\n const transformNode = scene.transformNodes[index];\r\n if (transformNode._waitingParentId !== null) {\r\n transformNode.parent = findParent(transformNode._waitingParentId, transformNode._waitingParentInstanceIndex, scene);\r\n transformNode._waitingParentId = null;\r\n transformNode._waitingParentInstanceIndex = null;\r\n }\r\n }\r\n for (index = 0, cache = scene.meshes.length; index < cache; index++) {\r\n const mesh = scene.meshes[index];\r\n if (mesh._waitingParentId !== null) {\r\n mesh.parent = findParent(mesh._waitingParentId, mesh._waitingParentInstanceIndex, scene);\r\n mesh._waitingParentId = null;\r\n mesh._waitingParentInstanceIndex = null;\r\n }\r\n if (mesh._waitingData.lods) {\r\n loadDetailLevels(scene, mesh);\r\n }\r\n }\r\n\r\n // link multimats with materials\r\n scene.multiMaterials.forEach((multimat) => {\r\n multimat._waitingSubMaterialsUniqueIds.forEach((subMaterial) => {\r\n multimat.subMaterials.push(findMaterial(subMaterial, scene));\r\n });\r\n multimat._waitingSubMaterialsUniqueIds = [];\r\n });\r\n\r\n // link meshes with materials\r\n scene.meshes.forEach((mesh) => {\r\n if (mesh._waitingMaterialId !== null) {\r\n mesh.material = findMaterial(mesh._waitingMaterialId, scene);\r\n mesh._waitingMaterialId = null;\r\n }\r\n });\r\n\r\n // link meshes with morph target managers\r\n scene.meshes.forEach((mesh) => {\r\n if (mesh._waitingMorphTargetManagerId !== null) {\r\n mesh.morphTargetManager = tempMorphTargetManagerIndexContainer[mesh._waitingMorphTargetManagerId];\r\n mesh._waitingMorphTargetManagerId = null;\r\n }\r\n });\r\n\r\n // link skeleton transform nodes\r\n for (index = 0, cache = scene.skeletons.length; index < cache; index++) {\r\n const skeleton = scene.skeletons[index];\r\n if (skeleton._hasWaitingData) {\r\n if (skeleton.bones != null) {\r\n skeleton.bones.forEach((bone) => {\r\n if (bone._waitingTransformNodeId) {\r\n const linkTransformNode = scene.getLastEntryById(bone._waitingTransformNodeId) as TransformNode;\r\n if (linkTransformNode) {\r\n bone.linkTransformNode(linkTransformNode);\r\n }\r\n bone._waitingTransformNodeId = null;\r\n }\r\n });\r\n }\r\n\r\n skeleton._hasWaitingData = null;\r\n }\r\n }\r\n\r\n // freeze world matrix application\r\n for (index = 0, cache = scene.meshes.length; index < cache; index++) {\r\n const currentMesh = scene.meshes[index];\r\n if (currentMesh._waitingData.freezeWorldMatrix) {\r\n currentMesh.freezeWorldMatrix();\r\n currentMesh._waitingData.freezeWorldMatrix = null;\r\n } else {\r\n currentMesh.computeWorldMatrix(true);\r\n }\r\n }\r\n\r\n // Lights exclusions / inclusions\r\n for (index = 0, cache = scene.lights.length; index < cache; index++) {\r\n const light = scene.lights[index];\r\n // Excluded check\r\n if (light._excludedMeshesIds.length > 0) {\r\n for (let excludedIndex = 0; excludedIndex < light._excludedMeshesIds.length; excludedIndex++) {\r\n const excludedMesh = scene.getMeshById(light._excludedMeshesIds[excludedIndex]);\r\n\r\n if (excludedMesh) {\r\n light.excludedMeshes.push(excludedMesh);\r\n }\r\n }\r\n\r\n light._excludedMeshesIds = [];\r\n }\r\n\r\n // Included check\r\n if (light._includedOnlyMeshesIds.length > 0) {\r\n for (let includedOnlyIndex = 0; includedOnlyIndex < light._includedOnlyMeshesIds.length; includedOnlyIndex++) {\r\n const includedOnlyMesh = scene.getMeshById(light._includedOnlyMeshesIds[includedOnlyIndex]);\r\n\r\n if (includedOnlyMesh) {\r\n light.includedOnlyMeshes.push(includedOnlyMesh);\r\n }\r\n }\r\n\r\n light._includedOnlyMeshesIds = [];\r\n }\r\n }\r\n\r\n scene.geometries.forEach((g) => {\r\n g._loadedUniqueId = \"\";\r\n });\r\n\r\n Parse(parsedData, scene, container, rootUrl);\r\n\r\n // Actions (scene) Done last as it can access other objects.\r\n for (index = 0, cache = scene.meshes.length; index < cache; index++) {\r\n const mesh = scene.meshes[index];\r\n if (mesh._waitingData.actions) {\r\n ActionManager.Parse(mesh._waitingData.actions, mesh, scene);\r\n mesh._waitingData.actions = null;\r\n }\r\n }\r\n if (parsedData.actions !== undefined && parsedData.actions !== null) {\r\n ActionManager.Parse(parsedData.actions, null, scene);\r\n }\r\n } catch (err) {\r\n const msg = logOperation(\"loadAssets\", parsedData ? parsedData.producer : \"Unknown\") + log;\r\n if (onError) {\r\n onError(msg, err);\r\n } else {\r\n Logger.Log(msg);\r\n throw err;\r\n }\r\n } finally {\r\n tempIndexContainer = {};\r\n tempMaterialIndexContainer = {};\r\n tempMorphTargetManagerIndexContainer = {};\r\n\r\n if (!addToScene) {\r\n container.removeAllFromScene();\r\n }\r\n if (log !== null && SceneLoader.loggingLevel !== SceneLoader.NO_LOGGING) {\r\n Logger.Log(logOperation(\"loadAssets\", parsedData ? parsedData.producer : \"Unknown\") + (SceneLoader.loggingLevel !== SceneLoader.MINIMAL_LOGGING ? log : \"\"));\r\n }\r\n }\r\n\r\n return container;\r\n};\r\n\r\nSceneLoader.RegisterPlugin({\r\n name: \"babylon.js\",\r\n extensions: \".babylon\",\r\n canDirectLoad: (data: string) => {\r\n if (data.indexOf(\"babylon\") !== -1) {\r\n // We consider that the producer string is filled\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n importMesh: (\r\n meshesNames: any,\r\n scene: Scene,\r\n data: any,\r\n rootUrl: string,\r\n meshes: AbstractMesh[],\r\n particleSystems: IParticleSystem[],\r\n skeletons: Skeleton[],\r\n onError?: (message: string, exception?: any) => void\r\n ): boolean => {\r\n // Entire method running in try block, so ALWAYS logs as far as it got, only actually writes details\r\n // when SceneLoader.debugLogging = true (default), or exception encountered.\r\n // Everything stored in var log instead of writing separate lines to support only writing in exception,\r\n // and avoid problems with multiple concurrent .babylon loads.\r\n let log = \"importMesh has failed JSON parse\";\r\n try {\r\n // eslint-disable-next-line no-var\r\n var parsedData = JSON.parse(data);\r\n log = \"\";\r\n const fullDetails = SceneLoader.loggingLevel === SceneLoader.DETAILED_LOGGING;\r\n if (!meshesNames) {\r\n meshesNames = null;\r\n } else if (!Array.isArray(meshesNames)) {\r\n meshesNames = [meshesNames];\r\n }\r\n\r\n const hierarchyIds: number[] = [];\r\n const parsedIdToNodeMap = new Map<number, Node>();\r\n\r\n // Transform nodes (the overall idea is to load all of them as this is super fast and then get rid of the ones we don't need)\r\n const loadedTransformNodes = [];\r\n if (parsedData.transformNodes !== undefined && parsedData.transformNodes !== null) {\r\n for (let index = 0, cache = parsedData.transformNodes.length; index < cache; index++) {\r\n const parsedJSONTransformNode = parsedData.transformNodes[index];\r\n const parsedTransformNode = TransformNode.Parse(parsedJSONTransformNode, scene, rootUrl);\r\n loadedTransformNodes.push(parsedTransformNode);\r\n parsedIdToNodeMap.set(parsedTransformNode._waitingParsedUniqueId!, parsedTransformNode);\r\n parsedTransformNode._waitingParsedUniqueId = null;\r\n }\r\n }\r\n if (parsedData.meshes !== undefined && parsedData.meshes !== null) {\r\n const loadedSkeletonsIds = [];\r\n const loadedMaterialsIds: string[] = [];\r\n const loadedMaterialsUniqueIds: string[] = [];\r\n const loadedMorphTargetManagerIds: number[] = [];\r\n for (let index = 0, cache = parsedData.meshes.length; index < cache; index++) {\r\n const parsedMesh = parsedData.meshes[index];\r\n\r\n if (meshesNames === null || isDescendantOf(parsedMesh, meshesNames, hierarchyIds)) {\r\n if (meshesNames !== null) {\r\n // Remove found mesh name from list.\r\n delete meshesNames[meshesNames.indexOf(parsedMesh.name)];\r\n }\r\n\r\n //Geometry?\r\n if (parsedMesh.geometryId !== undefined && parsedMesh.geometryId !== null) {\r\n //does the file contain geometries?\r\n if (parsedData.geometries !== undefined && parsedData.geometries !== null) {\r\n //find the correct geometry and add it to the scene\r\n let found: boolean = false;\r\n [\"boxes\", \"spheres\", \"cylinders\", \"toruses\", \"grounds\", \"planes\", \"torusKnots\", \"vertexData\"].forEach((geometryType: string) => {\r\n if (found === true || !parsedData.geometries[geometryType] || !Array.isArray(parsedData.geometries[geometryType])) {\r\n return;\r\n } else {\r\n parsedData.geometries[geometryType].forEach((parsedGeometryData: any) => {\r\n if (parsedGeometryData.id === parsedMesh.geometryId) {\r\n switch (geometryType) {\r\n case \"vertexData\":\r\n Geometry.Parse(parsedGeometryData, scene, rootUrl);\r\n break;\r\n }\r\n found = true;\r\n }\r\n });\r\n }\r\n });\r\n if (found === false) {\r\n Logger.Warn(\"Geometry not found for mesh \" + parsedMesh.id);\r\n }\r\n }\r\n }\r\n\r\n // Material ?\r\n if (parsedMesh.materialUniqueId || parsedMesh.materialId) {\r\n // if we have a unique ID, look up and store in loadedMaterialsUniqueIds, else use loadedMaterialsIds\r\n const materialArray = parsedMesh.materialUniqueId ? loadedMaterialsUniqueIds : loadedMaterialsIds;\r\n let materialFound = materialArray.indexOf(parsedMesh.materialUniqueId || parsedMesh.materialId) !== -1;\r\n if (materialFound === false && parsedData.multiMaterials !== undefined && parsedData.multiMaterials !== null) {\r\n // Loads a submaterial of a multimaterial\r\n const loadSubMaterial = (subMatId: string, predicate: (parsedMaterial: any) => boolean) => {\r\n materialArray.push(subMatId);\r\n const mat = parseMaterialByPredicate(predicate, parsedData, scene, rootUrl);\r\n if (mat && mat.material) {\r\n tempMaterialIndexContainer[mat.parsedMaterial.uniqueId || mat.parsedMaterial.id] = mat.material;\r\n log += \"\\n\\tMaterial \" + mat.material.toString(fullDetails);\r\n }\r\n };\r\n for (let multimatIndex = 0, multimatCache = parsedData.multiMaterials.length; multimatIndex < multimatCache; multimatIndex++) {\r\n const parsedMultiMaterial = parsedData.multiMaterials[multimatIndex];\r\n if (\r\n (parsedMesh.materialUniqueId && parsedMultiMaterial.uniqueId === parsedMesh.materialUniqueId) ||\r\n parsedMultiMaterial.id === parsedMesh.materialId\r\n ) {\r\n if (parsedMultiMaterial.materialsUniqueIds) {\r\n // if the materials inside the multimat are stored by unique id\r\n parsedMultiMaterial.materialsUniqueIds.forEach((subMatId: string) =>\r\n loadSubMaterial(subMatId, (parsedMaterial) => parsedMaterial.uniqueId === subMatId)\r\n );\r\n } else {\r\n // if the mats are stored by id instead\r\n parsedMultiMaterial.materials.forEach((subMatId: string) =>\r\n loadSubMaterial(subMatId, (parsedMaterial) => parsedMaterial.id === subMatId)\r\n );\r\n }\r\n materialArray.push(parsedMultiMaterial.uniqueId || parsedMultiMaterial.id);\r\n const mmat = MultiMaterial.ParseMultiMaterial(parsedMultiMaterial, scene);\r\n tempMaterialIndexContainer[parsedMultiMaterial.uniqueId || parsedMultiMaterial.id] = mmat;\r\n if (mmat) {\r\n materialFound = true;\r\n log += \"\\n\\tMulti-Material \" + mmat.toString(fullDetails);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (materialFound === false) {\r\n materialArray.push(parsedMesh.materialUniqueId || parsedMesh.materialId);\r\n const mat = parseMaterialByPredicate(\r\n (parsedMaterial) =>\r\n (parsedMesh.materialUniqueId && parsedMaterial.uniqueId === parsedMesh.materialUniqueId) || parsedMaterial.id === parsedMesh.materialId,\r\n parsedData,\r\n scene,\r\n rootUrl\r\n );\r\n if (!mat || !mat.material) {\r\n Logger.Warn(\"Material not found for mesh \" + parsedMesh.id);\r\n } else {\r\n tempMaterialIndexContainer[mat.parsedMaterial.uniqueId || mat.parsedMaterial.id] = mat.material;\r\n log += \"\\n\\tMaterial \" + mat.material.toString(fullDetails);\r\n }\r\n }\r\n }\r\n\r\n // Skeleton ?\r\n if (\r\n parsedMesh.skeletonId !== null &&\r\n parsedMesh.skeletonId !== undefined &&\r\n parsedData.skeletonId !== -1 &&\r\n parsedData.skeletons !== undefined &&\r\n parsedData.skeletons !== null\r\n ) {\r\n const skeletonAlreadyLoaded = loadedSkeletonsIds.indexOf(parsedMesh.skeletonId) > -1;\r\n if (!skeletonAlreadyLoaded) {\r\n for (let skeletonIndex = 0, skeletonCache = parsedData.skeletons.length; skeletonIndex < skeletonCache; skeletonIndex++) {\r\n const parsedSkeleton = parsedData.skeletons[skeletonIndex];\r\n if (parsedSkeleton.id === parsedMesh.skeletonId) {\r\n const skeleton = Skeleton.Parse(parsedSkeleton, scene);\r\n skeletons.push(skeleton);\r\n loadedSkeletonsIds.push(parsedSkeleton.id);\r\n log += \"\\n\\tSkeleton \" + skeleton.toString(fullDetails);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Morph targets ?\r\n if (parsedMesh.morphTargetManagerId > -1 && parsedData.morphTargetManagers !== undefined && parsedData.morphTargetManagers !== null) {\r\n const morphTargetManagerAlreadyLoaded = loadedMorphTargetManagerIds.indexOf(parsedMesh.morphTargetManagerId) > -1;\r\n if (!morphTargetManagerAlreadyLoaded) {\r\n for (let morphTargetManagerIndex = 0; morphTargetManagerIndex < parsedData.morphTargetManagers.length; morphTargetManagerIndex++) {\r\n const parsedManager = parsedData.morphTargetManagers[morphTargetManagerIndex];\r\n if (parsedManager.id === parsedMesh.morphTargetManagerId) {\r\n const morphTargetManager = MorphTargetManager.Parse(parsedManager, scene);\r\n tempMorphTargetManagerIndexContainer[parsedManager.id] = morphTargetManager;\r\n loadedMorphTargetManagerIds.push(parsedManager.id);\r\n log += \"\\nMorph target manager\" + morphTargetManager.toString();\r\n }\r\n }\r\n }\r\n }\r\n\r\n const mesh = Mesh.Parse(parsedMesh, scene, rootUrl);\r\n meshes.push(mesh);\r\n parsedIdToNodeMap.set(mesh._waitingParsedUniqueId!, mesh);\r\n mesh._waitingParsedUniqueId = null;\r\n log += \"\\n\\tMesh \" + mesh.toString(fullDetails);\r\n }\r\n }\r\n\r\n // link multimats with materials\r\n scene.multiMaterials.forEach((multimat) => {\r\n multimat._waitingSubMaterialsUniqueIds.forEach((subMaterial) => {\r\n multimat.subMaterials.push(findMaterial(subMaterial, scene));\r\n });\r\n multimat._waitingSubMaterialsUniqueIds = [];\r\n });\r\n\r\n // link meshes with materials\r\n scene.meshes.forEach((mesh) => {\r\n if (mesh._waitingMaterialId !== null) {\r\n mesh.material = findMaterial(mesh._waitingMaterialId, scene);\r\n mesh._waitingMaterialId = null;\r\n }\r\n });\r\n\r\n // link meshes with morph target managers\r\n scene.meshes.forEach((mesh) => {\r\n if (mesh._waitingMorphTargetManagerId !== null) {\r\n mesh.morphTargetManager = tempMorphTargetManagerIndexContainer[mesh._waitingMorphTargetManagerId];\r\n mesh._waitingMorphTargetManagerId = null;\r\n }\r\n });\r\n\r\n // Connecting parents and lods\r\n for (let index = 0, cache = scene.transformNodes.length; index < cache; index++) {\r\n const transformNode = scene.transformNodes[index];\r\n if (transformNode._waitingParentId !== null) {\r\n let parent = parsedIdToNodeMap.get(parseInt(transformNode._waitingParentId)) || null;\r\n if (parent === null) {\r\n parent = scene.getLastEntryById(transformNode._waitingParentId);\r\n }\r\n let parentNode = parent;\r\n if (transformNode._waitingParentInstanceIndex) {\r\n parentNode = (parent as Mesh).instances[parseInt(transformNode._waitingParentInstanceIndex)];\r\n transformNode._waitingParentInstanceIndex = null;\r\n }\r\n transformNode.parent = parentNode;\r\n transformNode._waitingParentId = null;\r\n }\r\n }\r\n let currentMesh: AbstractMesh;\r\n for (let index = 0, cache = scene.meshes.length; index < cache; index++) {\r\n currentMesh = scene.meshes[index];\r\n if (currentMesh._waitingParentId) {\r\n let parent = parsedIdToNodeMap.get(parseInt(currentMesh._waitingParentId)) || null;\r\n if (parent === null) {\r\n parent = scene.getLastEntryById(currentMesh._waitingParentId);\r\n }\r\n let parentNode = parent;\r\n if (currentMesh._waitingParentInstanceIndex) {\r\n parentNode = (parent as Mesh).instances[parseInt(currentMesh._waitingParentInstanceIndex)];\r\n currentMesh._waitingParentInstanceIndex = null;\r\n }\r\n currentMesh.parent = parentNode;\r\n currentMesh._waitingParentId = null;\r\n }\r\n if (currentMesh._waitingData.lods) {\r\n loadDetailLevels(scene, currentMesh);\r\n }\r\n }\r\n\r\n // Remove unused transform nodes\r\n for (const transformNode of loadedTransformNodes) {\r\n const childMeshes = transformNode.getChildMeshes(false);\r\n if (!childMeshes.length) {\r\n transformNode.dispose();\r\n }\r\n }\r\n\r\n // link skeleton transform nodes\r\n for (let index = 0, cache = scene.skeletons.length; index < cache; index++) {\r\n const skeleton = scene.skeletons[index];\r\n if (skeleton._hasWaitingData) {\r\n if (skeleton.bones != null) {\r\n skeleton.bones.forEach((bone) => {\r\n if (bone._waitingTransformNodeId) {\r\n const linkTransformNode = scene.getLastEntryById(bone._waitingTransformNodeId) as TransformNode;\r\n if (linkTransformNode) {\r\n bone.linkTransformNode(linkTransformNode);\r\n }\r\n bone._waitingTransformNodeId = null;\r\n }\r\n });\r\n }\r\n\r\n skeleton._hasWaitingData = null;\r\n }\r\n }\r\n\r\n // freeze and compute world matrix application\r\n for (let index = 0, cache = scene.meshes.length; index < cache; index++) {\r\n currentMesh = scene.meshes[index];\r\n if (currentMesh._waitingData.freezeWorldMatrix) {\r\n currentMesh.freezeWorldMatrix();\r\n currentMesh._waitingData.freezeWorldMatrix = null;\r\n } else {\r\n currentMesh.computeWorldMatrix(true);\r\n }\r\n }\r\n }\r\n\r\n // Particles\r\n if (parsedData.particleSystems !== undefined && parsedData.particleSystems !== null) {\r\n const parser = GetIndividualParser(SceneComponentConstants.NAME_PARTICLESYSTEM);\r\n if (parser) {\r\n for (let index = 0, cache = parsedData.particleSystems.length; index < cache; index++) {\r\n const parsedParticleSystem = parsedData.particleSystems[index];\r\n if (hierarchyIds.indexOf(parsedParticleSystem.emitterId) !== -1) {\r\n particleSystems.push(parser(parsedParticleSystem, scene, rootUrl));\r\n }\r\n }\r\n }\r\n }\r\n\r\n scene.geometries.forEach((g) => {\r\n g._loadedUniqueId = \"\";\r\n });\r\n\r\n return true;\r\n } catch (err) {\r\n const msg = logOperation(\"importMesh\", parsedData ? parsedData.producer : \"Unknown\") + log;\r\n if (onError) {\r\n onError(msg, err);\r\n } else {\r\n Logger.Log(msg);\r\n throw err;\r\n }\r\n } finally {\r\n if (log !== null && SceneLoader.loggingLevel !== SceneLoader.NO_LOGGING) {\r\n Logger.Log(logOperation(\"importMesh\", parsedData ? parsedData.producer : \"Unknown\") + (SceneLoader.loggingLevel !== SceneLoader.MINIMAL_LOGGING ? log : \"\"));\r\n }\r\n tempMaterialIndexContainer = {};\r\n tempMorphTargetManagerIndexContainer = {};\r\n }\r\n\r\n return false;\r\n },\r\n load: (scene: Scene, data: string, rootUrl: string, onError?: (message: string, exception?: any) => void): boolean => {\r\n // Entire method running in try block, so ALWAYS logs as far as it got, only actually writes details\r\n // when SceneLoader.debugLogging = true (default), or exception encountered.\r\n // Everything stored in var log instead of writing separate lines to support only writing in exception,\r\n // and avoid problems with multiple concurrent .babylon loads.\r\n let log = \"importScene has failed JSON parse\";\r\n try {\r\n // eslint-disable-next-line no-var\r\n var parsedData = JSON.parse(data);\r\n log = \"\";\r\n\r\n // Scene\r\n if (parsedData.useDelayedTextureLoading !== undefined && parsedData.useDelayedTextureLoading !== null) {\r\n scene.useDelayedTextureLoading = parsedData.useDelayedTextureLoading && !SceneLoader.ForceFullSceneLoadingForIncremental;\r\n }\r\n if (parsedData.autoClear !== undefined && parsedData.autoClear !== null) {\r\n scene.autoClear = parsedData.autoClear;\r\n }\r\n if (parsedData.clearColor !== undefined && parsedData.clearColor !== null) {\r\n scene.clearColor = Color4.FromArray(parsedData.clearColor);\r\n }\r\n if (parsedData.ambientColor !== undefined && parsedData.ambientColor !== null) {\r\n scene.ambientColor = Color3.FromArray(parsedData.ambientColor);\r\n }\r\n if (parsedData.gravity !== undefined && parsedData.gravity !== null) {\r\n scene.gravity = Vector3.FromArray(parsedData.gravity);\r\n }\r\n\r\n if (parsedData.useRightHandedSystem !== undefined) {\r\n scene.useRightHandedSystem = !!parsedData.useRightHandedSystem;\r\n }\r\n\r\n // Fog\r\n if (parsedData.fogMode !== undefined && parsedData.fogMode !== null) {\r\n scene.fogMode = parsedData.fogMode;\r\n }\r\n if (parsedData.fogColor !== undefined && parsedData.fogColor !== null) {\r\n scene.fogColor = Color3.FromArray(parsedData.fogColor);\r\n }\r\n if (parsedData.fogStart !== undefined && parsedData.fogStart !== null) {\r\n scene.fogStart = parsedData.fogStart;\r\n }\r\n if (parsedData.fogEnd !== undefined && parsedData.fogEnd !== null) {\r\n scene.fogEnd = parsedData.fogEnd;\r\n }\r\n if (parsedData.fogDensity !== undefined && parsedData.fogDensity !== null) {\r\n scene.fogDensity = parsedData.fogDensity;\r\n }\r\n log += \"\\tFog mode for scene: \";\r\n switch (scene.fogMode) {\r\n case 0:\r\n log += \"none\\n\";\r\n break;\r\n // getters not compiling, so using hardcoded\r\n case 1:\r\n log += \"exp\\n\";\r\n break;\r\n case 2:\r\n log += \"exp2\\n\";\r\n break;\r\n case 3:\r\n log += \"linear\\n\";\r\n break;\r\n }\r\n\r\n //Physics\r\n if (parsedData.physicsEnabled) {\r\n let physicsPlugin;\r\n if (parsedData.physicsEngine === \"cannon\" || parsedData.physicsEngine === CannonJSPlugin.name) {\r\n physicsPlugin = new CannonJSPlugin(undefined, undefined, BabylonFileLoaderConfiguration.LoaderInjectedPhysicsEngine);\r\n } else if (parsedData.physicsEngine === \"oimo\" || parsedData.physicsEngine === OimoJSPlugin.name) {\r\n physicsPlugin = new OimoJSPlugin(undefined, BabylonFileLoaderConfiguration.LoaderInjectedPhysicsEngine);\r\n } else if (parsedData.physicsEngine === \"ammo\" || parsedData.physicsEngine === AmmoJSPlugin.name) {\r\n physicsPlugin = new AmmoJSPlugin(undefined, BabylonFileLoaderConfiguration.LoaderInjectedPhysicsEngine, undefined);\r\n }\r\n log = \"\\tPhysics engine \" + (parsedData.physicsEngine ? parsedData.physicsEngine : \"oimo\") + \" enabled\\n\";\r\n //else - default engine, which is currently oimo\r\n const physicsGravity = parsedData.gravity ? Vector3.FromArray(parsedData.gravity) : parsedData.physicsGravity ? Vector3.FromArray(parsedData.physicsGravity) : null;\r\n scene.enablePhysics(physicsGravity, physicsPlugin);\r\n }\r\n\r\n // Metadata\r\n if (parsedData.metadata !== undefined && parsedData.metadata !== null) {\r\n scene.metadata = parsedData.metadata;\r\n }\r\n\r\n //collisions, if defined. otherwise, default is true\r\n if (parsedData.collisionsEnabled !== undefined && parsedData.collisionsEnabled !== null) {\r\n scene.collisionsEnabled = parsedData.collisionsEnabled;\r\n }\r\n\r\n const container = loadAssetContainer(scene, data, rootUrl, onError, true);\r\n if (!container) {\r\n return false;\r\n }\r\n\r\n if (parsedData.autoAnimate) {\r\n scene.beginAnimation(scene, parsedData.autoAnimateFrom, parsedData.autoAnimateTo, parsedData.autoAnimateLoop, parsedData.autoAnimateSpeed || 1.0);\r\n }\r\n\r\n if (parsedData.activeCameraID !== undefined && parsedData.activeCameraID !== null) {\r\n scene.setActiveCameraById(parsedData.activeCameraID);\r\n }\r\n\r\n // Finish\r\n return true;\r\n } catch (err) {\r\n const msg = logOperation(\"importScene\", parsedData ? parsedData.producer : \"Unknown\") + log;\r\n if (onError) {\r\n onError(msg, err);\r\n } else {\r\n Logger.Log(msg);\r\n throw err;\r\n }\r\n } finally {\r\n if (log !== null && SceneLoader.loggingLevel !== SceneLoader.NO_LOGGING) {\r\n Logger.Log(logOperation(\"importScene\", parsedData ? parsedData.producer : \"Unknown\") + (SceneLoader.loggingLevel !== SceneLoader.MINIMAL_LOGGING ? log : \"\"));\r\n }\r\n }\r\n return false;\r\n },\r\n loadAssetContainer: (scene: Scene, data: string, rootUrl: string, onError?: (message: string, exception?: any) => void): AssetContainer => {\r\n const container = loadAssetContainer(scene, data, rootUrl, onError);\r\n return container;\r\n },\r\n});\r\n"]}
1
+ {"version":3,"file":"babylonFileLoader.js","sourceRoot":"","sources":["../../../../../dev/core/src/Loading/Plugins/babylonFileLoader.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../../Misc/logger\";\r\nimport type { Nullable } from \"../../types\";\r\nimport { Camera } from \"../../Cameras/camera\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Vector3 } from \"../../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../../Maths/math.color\";\r\nimport { Mesh } from \"../../Meshes/mesh\";\r\nimport type { AbstractMesh } from \"../../Meshes/abstractMesh\";\r\nimport { Geometry } from \"../../Meshes/geometry\";\r\nimport type { Node } from \"../../node\";\r\nimport { TransformNode } from \"../../Meshes/transformNode\";\r\nimport { Material } from \"../../Materials/material\";\r\nimport { MultiMaterial } from \"../../Materials/multiMaterial\";\r\nimport { CubeTexture } from \"../../Materials/Textures/cubeTexture\";\r\nimport { HDRCubeTexture } from \"../../Materials/Textures/hdrCubeTexture\";\r\nimport { AnimationGroup } from \"../../Animations/animationGroup\";\r\nimport { Light } from \"../../Lights/light\";\r\nimport { SceneComponentConstants } from \"../../sceneComponent\";\r\nimport { SceneLoader } from \"../../Loading/sceneLoader\";\r\nimport { AssetContainer } from \"../../assetContainer\";\r\nimport { ActionManager } from \"../../Actions/actionManager\";\r\nimport type { IParticleSystem } from \"../../Particles/IParticleSystem\";\r\nimport { Skeleton } from \"../../Bones/skeleton\";\r\nimport { MorphTargetManager } from \"../../Morph/morphTargetManager\";\r\nimport { CannonJSPlugin } from \"../../Physics/v1/Plugins/cannonJSPlugin\";\r\nimport { OimoJSPlugin } from \"../../Physics/v1/Plugins/oimoJSPlugin\";\r\nimport { AmmoJSPlugin } from \"../../Physics/v1/Plugins/ammoJSPlugin\";\r\nimport { ReflectionProbe } from \"../../Probes/reflectionProbe\";\r\nimport { GetClass } from \"../../Misc/typeStore\";\r\nimport { Tools } from \"../../Misc/tools\";\r\nimport { PostProcess } from \"../../PostProcesses/postProcess\";\r\nimport { SpriteManager } from \"core/Sprites/spriteManager\";\r\nimport { GetIndividualParser, Parse } from \"./babylonFileParser.function\";\r\n\r\n/** @internal */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention, no-var\r\nexport var _BabylonLoaderRegistered = true;\r\n\r\n/**\r\n * Helps setting up some configuration for the babylon file loader.\r\n */\r\nexport class BabylonFileLoaderConfiguration {\r\n /**\r\n * The loader does not allow injecting custom physics engine into the plugins.\r\n * Unfortunately in ES6, we need to manually inject them into the plugin.\r\n * So you could set this variable to your engine import to make it work.\r\n */\r\n public static LoaderInjectedPhysicsEngine: any = undefined;\r\n}\r\n\r\nlet tempIndexContainer: { [key: string]: Node } = {};\r\nlet tempMaterialIndexContainer: { [key: string]: Material } = {};\r\nlet tempMorphTargetManagerIndexContainer: { [key: string]: MorphTargetManager } = {};\r\n\r\nconst parseMaterialByPredicate = (predicate: (parsedMaterial: any) => boolean, parsedData: any, scene: Scene, rootUrl: string) => {\r\n if (!parsedData.materials) {\r\n return null;\r\n }\r\n\r\n for (let index = 0, cache = parsedData.materials.length; index < cache; index++) {\r\n const parsedMaterial = parsedData.materials[index];\r\n if (predicate(parsedMaterial)) {\r\n return { parsedMaterial, material: Material.Parse(parsedMaterial, scene, rootUrl) };\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nconst isDescendantOf = (mesh: any, names: Array<any>, hierarchyIds: Array<number>) => {\r\n for (const i in names) {\r\n if (mesh.name === names[i]) {\r\n hierarchyIds.push(mesh.id);\r\n return true;\r\n }\r\n }\r\n if (mesh.parentId !== undefined && hierarchyIds.indexOf(mesh.parentId) !== -1) {\r\n hierarchyIds.push(mesh.id);\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nconst logOperation = (operation: string, producer: { file: string; name: string; version: string; exporter_version: string }) => {\r\n return (\r\n operation +\r\n \" of \" +\r\n (producer ? producer.file + \" from \" + producer.name + \" version: \" + producer.version + \", exporter version: \" + producer.exporter_version : \"unknown\")\r\n );\r\n};\r\n\r\nconst loadDetailLevels = (scene: Scene, mesh: AbstractMesh) => {\r\n const mastermesh: Mesh = mesh as Mesh;\r\n\r\n // Every value specified in the ids array of the lod data points to another mesh which should be used as the lower LOD level.\r\n // The distances (or coverages) array values specified are used along with the lod mesh ids as a hint to determine the switching threshold for the various LODs.\r\n if (mesh._waitingData.lods) {\r\n if (mesh._waitingData.lods.ids && mesh._waitingData.lods.ids.length > 0) {\r\n const lodmeshes: string[] = mesh._waitingData.lods.ids;\r\n const wasenabled: boolean = mastermesh.isEnabled(false);\r\n if (mesh._waitingData.lods.distances) {\r\n const distances: number[] = mesh._waitingData.lods.distances;\r\n if (distances.length >= lodmeshes.length) {\r\n const culling: number = distances.length > lodmeshes.length ? distances[distances.length - 1] : 0;\r\n mastermesh.setEnabled(false);\r\n for (let index = 0; index < lodmeshes.length; index++) {\r\n const lodid: string = lodmeshes[index];\r\n const lodmesh: Mesh = scene.getMeshById(lodid) as Mesh;\r\n if (lodmesh != null) {\r\n mastermesh.addLODLevel(distances[index], lodmesh);\r\n }\r\n }\r\n if (culling > 0) {\r\n mastermesh.addLODLevel(culling, null);\r\n }\r\n if (wasenabled === true) {\r\n mastermesh.setEnabled(true);\r\n }\r\n } else {\r\n Tools.Warn(\"Invalid level of detail distances for \" + mesh.name);\r\n }\r\n }\r\n }\r\n mesh._waitingData.lods = null;\r\n }\r\n};\r\n\r\nconst findParent = (parentId: any, parentInstanceIndex: any, scene: Scene) => {\r\n if (typeof parentId !== \"number\") {\r\n const parentEntry = scene.getLastEntryById(parentId);\r\n if (parentEntry && parentInstanceIndex !== undefined && parentInstanceIndex !== null) {\r\n const instance = (parentEntry as Mesh).instances[parseInt(parentInstanceIndex)];\r\n return instance;\r\n }\r\n return parentEntry;\r\n }\r\n\r\n const parent = tempIndexContainer[parentId];\r\n if (parent && parentInstanceIndex !== undefined && parentInstanceIndex !== null) {\r\n const instance = (parent as Mesh).instances[parseInt(parentInstanceIndex)];\r\n return instance;\r\n }\r\n\r\n return parent;\r\n};\r\n\r\nconst findMaterial = (materialId: any, scene: Scene) => {\r\n if (typeof materialId !== \"number\") {\r\n return scene.getLastMaterialById(materialId, true);\r\n }\r\n\r\n return tempMaterialIndexContainer[materialId];\r\n};\r\n\r\nconst loadAssetContainer = (scene: Scene, data: string, rootUrl: string, onError?: (message: string, exception?: any) => void, addToScene = false): AssetContainer => {\r\n const container = new AssetContainer(scene);\r\n\r\n // Entire method running in try block, so ALWAYS logs as far as it got, only actually writes details\r\n // when SceneLoader.debugLogging = true (default), or exception encountered.\r\n // Everything stored in var log instead of writing separate lines to support only writing in exception,\r\n // and avoid problems with multiple concurrent .babylon loads.\r\n let log = \"importScene has failed JSON parse\";\r\n try {\r\n // eslint-disable-next-line no-var\r\n var parsedData = JSON.parse(data);\r\n log = \"\";\r\n const fullDetails = SceneLoader.loggingLevel === SceneLoader.DETAILED_LOGGING;\r\n\r\n let index: number;\r\n let cache: number;\r\n\r\n // Environment texture\r\n if (parsedData.environmentTexture !== undefined && parsedData.environmentTexture !== null) {\r\n // PBR needed for both HDR texture (gamma space) & a sky box\r\n const isPBR = parsedData.isPBR !== undefined ? parsedData.isPBR : true;\r\n if (parsedData.environmentTextureType && parsedData.environmentTextureType === \"BABYLON.HDRCubeTexture\") {\r\n const hdrSize: number = parsedData.environmentTextureSize ? parsedData.environmentTextureSize : 128;\r\n const hdrTexture = new HDRCubeTexture(\r\n (parsedData.environmentTexture.match(/https?:\\/\\//g) ? \"\" : rootUrl) + parsedData.environmentTexture,\r\n scene,\r\n hdrSize,\r\n true,\r\n !isPBR,\r\n undefined,\r\n parsedData.environmentTexturePrefilterOnLoad\r\n );\r\n if (parsedData.environmentTextureRotationY) {\r\n hdrTexture.rotationY = parsedData.environmentTextureRotationY;\r\n }\r\n scene.environmentTexture = hdrTexture;\r\n } else {\r\n if (typeof parsedData.environmentTexture === \"object\") {\r\n const environmentTexture = CubeTexture.Parse(parsedData.environmentTexture, scene, rootUrl);\r\n scene.environmentTexture = environmentTexture;\r\n } else if ((parsedData.environmentTexture as string).endsWith(\".env\")) {\r\n const compressedTexture = new CubeTexture(\r\n (parsedData.environmentTexture.match(/https?:\\/\\//g) ? \"\" : rootUrl) + parsedData.environmentTexture,\r\n scene,\r\n parsedData.environmentTextureForcedExtension\r\n );\r\n if (parsedData.environmentTextureRotationY) {\r\n compressedTexture.rotationY = parsedData.environmentTextureRotationY;\r\n }\r\n scene.environmentTexture = compressedTexture;\r\n } else {\r\n const cubeTexture = CubeTexture.CreateFromPrefilteredData(\r\n (parsedData.environmentTexture.match(/https?:\\/\\//g) ? \"\" : rootUrl) + parsedData.environmentTexture,\r\n scene,\r\n parsedData.environmentTextureForcedExtension\r\n );\r\n if (parsedData.environmentTextureRotationY) {\r\n cubeTexture.rotationY = parsedData.environmentTextureRotationY;\r\n }\r\n scene.environmentTexture = cubeTexture;\r\n }\r\n }\r\n if (parsedData.createDefaultSkybox === true) {\r\n const skyboxScale = scene.activeCamera !== undefined && scene.activeCamera !== null ? (scene.activeCamera.maxZ - scene.activeCamera.minZ) / 2 : 1000;\r\n const skyboxBlurLevel = parsedData.skyboxBlurLevel || 0;\r\n scene.createDefaultSkybox(scene.environmentTexture, isPBR, skyboxScale, skyboxBlurLevel);\r\n }\r\n container.environmentTexture = scene.environmentTexture;\r\n }\r\n\r\n // Environment Intensity\r\n if (parsedData.environmentIntensity !== undefined && parsedData.environmentIntensity !== null) {\r\n scene.environmentIntensity = parsedData.environmentIntensity;\r\n }\r\n\r\n // IBL Intensity\r\n if (parsedData.iblIntensity !== undefined && parsedData.iblIntensity !== null) {\r\n scene.iblIntensity = parsedData.iblIntensity;\r\n }\r\n\r\n // Lights\r\n if (parsedData.lights !== undefined && parsedData.lights !== null) {\r\n for (index = 0, cache = parsedData.lights.length; index < cache; index++) {\r\n const parsedLight = parsedData.lights[index];\r\n const light = Light.Parse(parsedLight, scene);\r\n if (light) {\r\n tempIndexContainer[parsedLight.uniqueId] = light;\r\n container.lights.push(light);\r\n light._parentContainer = container;\r\n log += index === 0 ? \"\\n\\tLights:\" : \"\";\r\n log += \"\\n\\t\\t\" + light.toString(fullDetails);\r\n }\r\n }\r\n }\r\n\r\n // Reflection probes\r\n if (parsedData.reflectionProbes !== undefined && parsedData.reflectionProbes !== null) {\r\n for (index = 0, cache = parsedData.reflectionProbes.length; index < cache; index++) {\r\n const parsedReflectionProbe = parsedData.reflectionProbes[index];\r\n const reflectionProbe = ReflectionProbe.Parse(parsedReflectionProbe, scene, rootUrl);\r\n if (reflectionProbe) {\r\n container.reflectionProbes.push(reflectionProbe);\r\n reflectionProbe._parentContainer = container;\r\n log += index === 0 ? \"\\n\\tReflection Probes:\" : \"\";\r\n log += \"\\n\\t\\t\" + reflectionProbe.toString(fullDetails);\r\n }\r\n }\r\n }\r\n\r\n // Animations\r\n if (parsedData.animations !== undefined && parsedData.animations !== null) {\r\n for (index = 0, cache = parsedData.animations.length; index < cache; index++) {\r\n const parsedAnimation = parsedData.animations[index];\r\n const internalClass = GetClass(\"BABYLON.Animation\");\r\n if (internalClass) {\r\n const animation = internalClass.Parse(parsedAnimation);\r\n scene.animations.push(animation);\r\n container.animations.push(animation);\r\n log += index === 0 ? \"\\n\\tAnimations:\" : \"\";\r\n log += \"\\n\\t\\t\" + animation.toString(fullDetails);\r\n }\r\n }\r\n }\r\n\r\n // Materials\r\n if (parsedData.materials !== undefined && parsedData.materials !== null) {\r\n for (index = 0, cache = parsedData.materials.length; index < cache; index++) {\r\n const parsedMaterial = parsedData.materials[index];\r\n const mat = Material.Parse(parsedMaterial, scene, rootUrl);\r\n if (mat) {\r\n tempMaterialIndexContainer[parsedMaterial.uniqueId || parsedMaterial.id] = mat;\r\n container.materials.push(mat);\r\n mat._parentContainer = container;\r\n log += index === 0 ? \"\\n\\tMaterials:\" : \"\";\r\n log += \"\\n\\t\\t\" + mat.toString(fullDetails);\r\n\r\n // Textures\r\n const textures = mat.getActiveTextures();\r\n textures.forEach((t) => {\r\n if (container.textures.indexOf(t) == -1) {\r\n container.textures.push(t);\r\n t._parentContainer = container;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (parsedData.multiMaterials !== undefined && parsedData.multiMaterials !== null) {\r\n for (index = 0, cache = parsedData.multiMaterials.length; index < cache; index++) {\r\n const parsedMultiMaterial = parsedData.multiMaterials[index];\r\n const mmat = MultiMaterial.ParseMultiMaterial(parsedMultiMaterial, scene);\r\n tempMaterialIndexContainer[parsedMultiMaterial.uniqueId || parsedMultiMaterial.id] = mmat;\r\n container.multiMaterials.push(mmat);\r\n mmat._parentContainer = container;\r\n\r\n log += index === 0 ? \"\\n\\tMultiMaterials:\" : \"\";\r\n log += \"\\n\\t\\t\" + mmat.toString(fullDetails);\r\n\r\n // Textures\r\n const textures = mmat.getActiveTextures();\r\n textures.forEach((t) => {\r\n if (container.textures.indexOf(t) == -1) {\r\n container.textures.push(t);\r\n t._parentContainer = container;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Morph targets\r\n if (parsedData.morphTargetManagers !== undefined && parsedData.morphTargetManagers !== null) {\r\n for (const parsedManager of parsedData.morphTargetManagers) {\r\n const manager = MorphTargetManager.Parse(parsedManager, scene);\r\n tempMorphTargetManagerIndexContainer[parsedManager.id] = manager;\r\n container.morphTargetManagers.push(manager);\r\n manager._parentContainer = container;\r\n }\r\n }\r\n\r\n // Skeletons\r\n if (parsedData.skeletons !== undefined && parsedData.skeletons !== null) {\r\n for (index = 0, cache = parsedData.skeletons.length; index < cache; index++) {\r\n const parsedSkeleton = parsedData.skeletons[index];\r\n const skeleton = Skeleton.Parse(parsedSkeleton, scene);\r\n container.skeletons.push(skeleton);\r\n skeleton._parentContainer = container;\r\n log += index === 0 ? \"\\n\\tSkeletons:\" : \"\";\r\n log += \"\\n\\t\\t\" + skeleton.toString(fullDetails);\r\n }\r\n }\r\n\r\n // Geometries\r\n const geometries = parsedData.geometries;\r\n if (geometries !== undefined && geometries !== null) {\r\n const addedGeometry = new Array<Nullable<Geometry>>();\r\n\r\n // VertexData\r\n const vertexData = geometries.vertexData;\r\n if (vertexData !== undefined && vertexData !== null) {\r\n for (index = 0, cache = vertexData.length; index < cache; index++) {\r\n const parsedVertexData = vertexData[index];\r\n addedGeometry.push(Geometry.Parse(parsedVertexData, scene, rootUrl));\r\n }\r\n }\r\n\r\n addedGeometry.forEach((g) => {\r\n if (g) {\r\n container.geometries.push(g);\r\n g._parentContainer = container;\r\n }\r\n });\r\n }\r\n\r\n // Transform nodes\r\n if (parsedData.transformNodes !== undefined && parsedData.transformNodes !== null) {\r\n for (index = 0, cache = parsedData.transformNodes.length; index < cache; index++) {\r\n const parsedTransformNode = parsedData.transformNodes[index];\r\n const node = TransformNode.Parse(parsedTransformNode, scene, rootUrl);\r\n tempIndexContainer[parsedTransformNode.uniqueId] = node;\r\n container.transformNodes.push(node);\r\n node._parentContainer = container;\r\n }\r\n }\r\n\r\n // Meshes\r\n if (parsedData.meshes !== undefined && parsedData.meshes !== null) {\r\n for (index = 0, cache = parsedData.meshes.length; index < cache; index++) {\r\n const parsedMesh = parsedData.meshes[index];\r\n const mesh = <AbstractMesh>Mesh.Parse(parsedMesh, scene, rootUrl);\r\n tempIndexContainer[parsedMesh.uniqueId] = mesh;\r\n container.meshes.push(mesh);\r\n mesh._parentContainer = container;\r\n if (mesh.hasInstances) {\r\n for (const instance of (mesh as Mesh).instances) {\r\n container.meshes.push(instance);\r\n instance._parentContainer = container;\r\n }\r\n }\r\n log += index === 0 ? \"\\n\\tMeshes:\" : \"\";\r\n log += \"\\n\\t\\t\" + mesh.toString(fullDetails);\r\n }\r\n }\r\n\r\n // Cameras\r\n if (parsedData.cameras !== undefined && parsedData.cameras !== null) {\r\n for (index = 0, cache = parsedData.cameras.length; index < cache; index++) {\r\n const parsedCamera = parsedData.cameras[index];\r\n const camera = Camera.Parse(parsedCamera, scene);\r\n tempIndexContainer[parsedCamera.uniqueId] = camera;\r\n container.cameras.push(camera);\r\n camera._parentContainer = container;\r\n log += index === 0 ? \"\\n\\tCameras:\" : \"\";\r\n log += \"\\n\\t\\t\" + camera.toString(fullDetails);\r\n }\r\n }\r\n\r\n // Postprocesses\r\n if (parsedData.postProcesses !== undefined && parsedData.postProcesses !== null) {\r\n for (index = 0, cache = parsedData.postProcesses.length; index < cache; index++) {\r\n const parsedPostProcess = parsedData.postProcesses[index];\r\n const postProcess = PostProcess.Parse(parsedPostProcess, scene, rootUrl);\r\n if (postProcess) {\r\n container.postProcesses.push(postProcess);\r\n postProcess._parentContainer = container;\r\n log += index === 0 ? \"\\nPostprocesses:\" : \"\";\r\n log += \"\\n\\t\\t\" + postProcess.toString();\r\n }\r\n }\r\n }\r\n\r\n // Animation Groups\r\n if (parsedData.animationGroups !== undefined && parsedData.animationGroups !== null) {\r\n for (index = 0, cache = parsedData.animationGroups.length; index < cache; index++) {\r\n const parsedAnimationGroup = parsedData.animationGroups[index];\r\n const animationGroup = AnimationGroup.Parse(parsedAnimationGroup, scene);\r\n container.animationGroups.push(animationGroup);\r\n animationGroup._parentContainer = container;\r\n log += index === 0 ? \"\\n\\tAnimationGroups:\" : \"\";\r\n log += \"\\n\\t\\t\" + animationGroup.toString(fullDetails);\r\n }\r\n }\r\n\r\n // Sprites\r\n if (parsedData.spriteManagers) {\r\n for (let index = 0, cache = parsedData.spriteManagers.length; index < cache; index++) {\r\n const parsedSpriteManager = parsedData.spriteManagers[index];\r\n const spriteManager = SpriteManager.Parse(parsedSpriteManager, scene, rootUrl);\r\n log += \"\\n\\t\\tSpriteManager \" + spriteManager.name;\r\n }\r\n }\r\n\r\n // Browsing all the graph to connect the dots\r\n for (index = 0, cache = scene.cameras.length; index < cache; index++) {\r\n const camera = scene.cameras[index];\r\n if (camera._waitingParentId !== null) {\r\n camera.parent = findParent(camera._waitingParentId, camera._waitingParentInstanceIndex, scene);\r\n camera._waitingParentId = null;\r\n camera._waitingParentInstanceIndex = null;\r\n }\r\n }\r\n\r\n for (index = 0, cache = scene.lights.length; index < cache; index++) {\r\n const light = scene.lights[index];\r\n if (light && light._waitingParentId !== null) {\r\n light.parent = findParent(light._waitingParentId, light._waitingParentInstanceIndex, scene);\r\n light._waitingParentId = null;\r\n light._waitingParentInstanceIndex = null;\r\n }\r\n }\r\n\r\n // Connect parents & children and parse actions and lods\r\n for (index = 0, cache = scene.transformNodes.length; index < cache; index++) {\r\n const transformNode = scene.transformNodes[index];\r\n if (transformNode._waitingParentId !== null) {\r\n transformNode.parent = findParent(transformNode._waitingParentId, transformNode._waitingParentInstanceIndex, scene);\r\n transformNode._waitingParentId = null;\r\n transformNode._waitingParentInstanceIndex = null;\r\n }\r\n }\r\n for (index = 0, cache = scene.meshes.length; index < cache; index++) {\r\n const mesh = scene.meshes[index];\r\n if (mesh._waitingParentId !== null) {\r\n mesh.parent = findParent(mesh._waitingParentId, mesh._waitingParentInstanceIndex, scene);\r\n mesh._waitingParentId = null;\r\n mesh._waitingParentInstanceIndex = null;\r\n }\r\n if (mesh._waitingData.lods) {\r\n loadDetailLevels(scene, mesh);\r\n }\r\n }\r\n\r\n // link multimats with materials\r\n scene.multiMaterials.forEach((multimat) => {\r\n multimat._waitingSubMaterialsUniqueIds.forEach((subMaterial) => {\r\n multimat.subMaterials.push(findMaterial(subMaterial, scene));\r\n });\r\n multimat._waitingSubMaterialsUniqueIds = [];\r\n });\r\n\r\n // link meshes with materials\r\n scene.meshes.forEach((mesh) => {\r\n if (mesh._waitingMaterialId !== null) {\r\n mesh.material = findMaterial(mesh._waitingMaterialId, scene);\r\n mesh._waitingMaterialId = null;\r\n }\r\n });\r\n\r\n // link meshes with morph target managers\r\n scene.meshes.forEach((mesh) => {\r\n if (mesh._waitingMorphTargetManagerId !== null) {\r\n mesh.morphTargetManager = tempMorphTargetManagerIndexContainer[mesh._waitingMorphTargetManagerId];\r\n mesh._waitingMorphTargetManagerId = null;\r\n }\r\n });\r\n\r\n // link skeleton transform nodes\r\n for (index = 0, cache = scene.skeletons.length; index < cache; index++) {\r\n const skeleton = scene.skeletons[index];\r\n if (skeleton._hasWaitingData) {\r\n if (skeleton.bones != null) {\r\n skeleton.bones.forEach((bone) => {\r\n if (bone._waitingTransformNodeId) {\r\n const linkTransformNode = scene.getLastEntryById(bone._waitingTransformNodeId) as TransformNode;\r\n if (linkTransformNode) {\r\n bone.linkTransformNode(linkTransformNode);\r\n }\r\n bone._waitingTransformNodeId = null;\r\n }\r\n });\r\n }\r\n\r\n skeleton._hasWaitingData = null;\r\n }\r\n }\r\n\r\n // freeze world matrix application\r\n for (index = 0, cache = scene.meshes.length; index < cache; index++) {\r\n const currentMesh = scene.meshes[index];\r\n if (currentMesh._waitingData.freezeWorldMatrix) {\r\n currentMesh.freezeWorldMatrix();\r\n currentMesh._waitingData.freezeWorldMatrix = null;\r\n } else {\r\n currentMesh.computeWorldMatrix(true);\r\n }\r\n }\r\n\r\n // Lights exclusions / inclusions\r\n for (index = 0, cache = scene.lights.length; index < cache; index++) {\r\n const light = scene.lights[index];\r\n // Excluded check\r\n if (light._excludedMeshesIds.length > 0) {\r\n for (let excludedIndex = 0; excludedIndex < light._excludedMeshesIds.length; excludedIndex++) {\r\n const excludedMesh = scene.getMeshById(light._excludedMeshesIds[excludedIndex]);\r\n\r\n if (excludedMesh) {\r\n light.excludedMeshes.push(excludedMesh);\r\n }\r\n }\r\n\r\n light._excludedMeshesIds = [];\r\n }\r\n\r\n // Included check\r\n if (light._includedOnlyMeshesIds.length > 0) {\r\n for (let includedOnlyIndex = 0; includedOnlyIndex < light._includedOnlyMeshesIds.length; includedOnlyIndex++) {\r\n const includedOnlyMesh = scene.getMeshById(light._includedOnlyMeshesIds[includedOnlyIndex]);\r\n\r\n if (includedOnlyMesh) {\r\n light.includedOnlyMeshes.push(includedOnlyMesh);\r\n }\r\n }\r\n\r\n light._includedOnlyMeshesIds = [];\r\n }\r\n }\r\n\r\n scene.geometries.forEach((g) => {\r\n g._loadedUniqueId = \"\";\r\n });\r\n\r\n Parse(parsedData, scene, container, rootUrl);\r\n\r\n // Actions (scene) Done last as it can access other objects.\r\n for (index = 0, cache = scene.meshes.length; index < cache; index++) {\r\n const mesh = scene.meshes[index];\r\n if (mesh._waitingData.actions) {\r\n ActionManager.Parse(mesh._waitingData.actions, mesh, scene);\r\n mesh._waitingData.actions = null;\r\n }\r\n }\r\n if (parsedData.actions !== undefined && parsedData.actions !== null) {\r\n ActionManager.Parse(parsedData.actions, null, scene);\r\n }\r\n } catch (err) {\r\n const msg = logOperation(\"loadAssets\", parsedData ? parsedData.producer : \"Unknown\") + log;\r\n if (onError) {\r\n onError(msg, err);\r\n } else {\r\n Logger.Log(msg);\r\n throw err;\r\n }\r\n } finally {\r\n tempIndexContainer = {};\r\n tempMaterialIndexContainer = {};\r\n tempMorphTargetManagerIndexContainer = {};\r\n\r\n if (!addToScene) {\r\n container.removeAllFromScene();\r\n }\r\n if (log !== null && SceneLoader.loggingLevel !== SceneLoader.NO_LOGGING) {\r\n Logger.Log(logOperation(\"loadAssets\", parsedData ? parsedData.producer : \"Unknown\") + (SceneLoader.loggingLevel !== SceneLoader.MINIMAL_LOGGING ? log : \"\"));\r\n }\r\n }\r\n\r\n return container;\r\n};\r\n\r\nSceneLoader.RegisterPlugin({\r\n name: \"babylon.js\",\r\n extensions: \".babylon\",\r\n canDirectLoad: (data: string) => {\r\n if (data.indexOf(\"babylon\") !== -1) {\r\n // We consider that the producer string is filled\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n importMesh: (\r\n meshesNames: any,\r\n scene: Scene,\r\n data: any,\r\n rootUrl: string,\r\n meshes: AbstractMesh[],\r\n particleSystems: IParticleSystem[],\r\n skeletons: Skeleton[],\r\n onError?: (message: string, exception?: any) => void\r\n ): boolean => {\r\n // Entire method running in try block, so ALWAYS logs as far as it got, only actually writes details\r\n // when SceneLoader.debugLogging = true (default), or exception encountered.\r\n // Everything stored in var log instead of writing separate lines to support only writing in exception,\r\n // and avoid problems with multiple concurrent .babylon loads.\r\n let log = \"importMesh has failed JSON parse\";\r\n try {\r\n // eslint-disable-next-line no-var\r\n var parsedData = JSON.parse(data);\r\n log = \"\";\r\n const fullDetails = SceneLoader.loggingLevel === SceneLoader.DETAILED_LOGGING;\r\n if (!meshesNames) {\r\n meshesNames = null;\r\n } else if (!Array.isArray(meshesNames)) {\r\n meshesNames = [meshesNames];\r\n }\r\n\r\n const hierarchyIds: number[] = [];\r\n const parsedIdToNodeMap = new Map<number, Node>();\r\n\r\n // Transform nodes (the overall idea is to load all of them as this is super fast and then get rid of the ones we don't need)\r\n const loadedTransformNodes = [];\r\n if (parsedData.transformNodes !== undefined && parsedData.transformNodes !== null) {\r\n for (let index = 0, cache = parsedData.transformNodes.length; index < cache; index++) {\r\n const parsedJSONTransformNode = parsedData.transformNodes[index];\r\n const parsedTransformNode = TransformNode.Parse(parsedJSONTransformNode, scene, rootUrl);\r\n loadedTransformNodes.push(parsedTransformNode);\r\n parsedIdToNodeMap.set(parsedTransformNode._waitingParsedUniqueId!, parsedTransformNode);\r\n parsedTransformNode._waitingParsedUniqueId = null;\r\n }\r\n }\r\n if (parsedData.meshes !== undefined && parsedData.meshes !== null) {\r\n const loadedSkeletonsIds = [];\r\n const loadedMaterialsIds: string[] = [];\r\n const loadedMaterialsUniqueIds: string[] = [];\r\n const loadedMorphTargetManagerIds: number[] = [];\r\n for (let index = 0, cache = parsedData.meshes.length; index < cache; index++) {\r\n const parsedMesh = parsedData.meshes[index];\r\n\r\n if (meshesNames === null || isDescendantOf(parsedMesh, meshesNames, hierarchyIds)) {\r\n if (meshesNames !== null) {\r\n // Remove found mesh name from list.\r\n delete meshesNames[meshesNames.indexOf(parsedMesh.name)];\r\n }\r\n\r\n //Geometry?\r\n if (parsedMesh.geometryId !== undefined && parsedMesh.geometryId !== null) {\r\n //does the file contain geometries?\r\n if (parsedData.geometries !== undefined && parsedData.geometries !== null) {\r\n //find the correct geometry and add it to the scene\r\n let found: boolean = false;\r\n [\"boxes\", \"spheres\", \"cylinders\", \"toruses\", \"grounds\", \"planes\", \"torusKnots\", \"vertexData\"].forEach((geometryType: string) => {\r\n if (found === true || !parsedData.geometries[geometryType] || !Array.isArray(parsedData.geometries[geometryType])) {\r\n return;\r\n } else {\r\n parsedData.geometries[geometryType].forEach((parsedGeometryData: any) => {\r\n if (parsedGeometryData.id === parsedMesh.geometryId) {\r\n switch (geometryType) {\r\n case \"vertexData\":\r\n Geometry.Parse(parsedGeometryData, scene, rootUrl);\r\n break;\r\n }\r\n found = true;\r\n }\r\n });\r\n }\r\n });\r\n if (found === false) {\r\n Logger.Warn(\"Geometry not found for mesh \" + parsedMesh.id);\r\n }\r\n }\r\n }\r\n\r\n // Material ?\r\n if (parsedMesh.materialUniqueId || parsedMesh.materialId) {\r\n // if we have a unique ID, look up and store in loadedMaterialsUniqueIds, else use loadedMaterialsIds\r\n const materialArray = parsedMesh.materialUniqueId ? loadedMaterialsUniqueIds : loadedMaterialsIds;\r\n let materialFound = materialArray.indexOf(parsedMesh.materialUniqueId || parsedMesh.materialId) !== -1;\r\n if (materialFound === false && parsedData.multiMaterials !== undefined && parsedData.multiMaterials !== null) {\r\n // Loads a submaterial of a multimaterial\r\n const loadSubMaterial = (subMatId: string, predicate: (parsedMaterial: any) => boolean) => {\r\n materialArray.push(subMatId);\r\n const mat = parseMaterialByPredicate(predicate, parsedData, scene, rootUrl);\r\n if (mat && mat.material) {\r\n tempMaterialIndexContainer[mat.parsedMaterial.uniqueId || mat.parsedMaterial.id] = mat.material;\r\n log += \"\\n\\tMaterial \" + mat.material.toString(fullDetails);\r\n }\r\n };\r\n for (let multimatIndex = 0, multimatCache = parsedData.multiMaterials.length; multimatIndex < multimatCache; multimatIndex++) {\r\n const parsedMultiMaterial = parsedData.multiMaterials[multimatIndex];\r\n if (\r\n (parsedMesh.materialUniqueId && parsedMultiMaterial.uniqueId === parsedMesh.materialUniqueId) ||\r\n parsedMultiMaterial.id === parsedMesh.materialId\r\n ) {\r\n if (parsedMultiMaterial.materialsUniqueIds) {\r\n // if the materials inside the multimat are stored by unique id\r\n parsedMultiMaterial.materialsUniqueIds.forEach((subMatId: string) =>\r\n loadSubMaterial(subMatId, (parsedMaterial) => parsedMaterial.uniqueId === subMatId)\r\n );\r\n } else {\r\n // if the mats are stored by id instead\r\n parsedMultiMaterial.materials.forEach((subMatId: string) =>\r\n loadSubMaterial(subMatId, (parsedMaterial) => parsedMaterial.id === subMatId)\r\n );\r\n }\r\n materialArray.push(parsedMultiMaterial.uniqueId || parsedMultiMaterial.id);\r\n const mmat = MultiMaterial.ParseMultiMaterial(parsedMultiMaterial, scene);\r\n tempMaterialIndexContainer[parsedMultiMaterial.uniqueId || parsedMultiMaterial.id] = mmat;\r\n if (mmat) {\r\n materialFound = true;\r\n log += \"\\n\\tMulti-Material \" + mmat.toString(fullDetails);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (materialFound === false) {\r\n materialArray.push(parsedMesh.materialUniqueId || parsedMesh.materialId);\r\n const mat = parseMaterialByPredicate(\r\n (parsedMaterial) =>\r\n (parsedMesh.materialUniqueId && parsedMaterial.uniqueId === parsedMesh.materialUniqueId) || parsedMaterial.id === parsedMesh.materialId,\r\n parsedData,\r\n scene,\r\n rootUrl\r\n );\r\n if (!mat || !mat.material) {\r\n Logger.Warn(\"Material not found for mesh \" + parsedMesh.id);\r\n } else {\r\n tempMaterialIndexContainer[mat.parsedMaterial.uniqueId || mat.parsedMaterial.id] = mat.material;\r\n log += \"\\n\\tMaterial \" + mat.material.toString(fullDetails);\r\n }\r\n }\r\n }\r\n\r\n // Skeleton ?\r\n if (\r\n parsedMesh.skeletonId !== null &&\r\n parsedMesh.skeletonId !== undefined &&\r\n parsedData.skeletonId !== -1 &&\r\n parsedData.skeletons !== undefined &&\r\n parsedData.skeletons !== null\r\n ) {\r\n const skeletonAlreadyLoaded = loadedSkeletonsIds.indexOf(parsedMesh.skeletonId) > -1;\r\n if (!skeletonAlreadyLoaded) {\r\n for (let skeletonIndex = 0, skeletonCache = parsedData.skeletons.length; skeletonIndex < skeletonCache; skeletonIndex++) {\r\n const parsedSkeleton = parsedData.skeletons[skeletonIndex];\r\n if (parsedSkeleton.id === parsedMesh.skeletonId) {\r\n const skeleton = Skeleton.Parse(parsedSkeleton, scene);\r\n skeletons.push(skeleton);\r\n loadedSkeletonsIds.push(parsedSkeleton.id);\r\n log += \"\\n\\tSkeleton \" + skeleton.toString(fullDetails);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Morph targets ?\r\n if (parsedMesh.morphTargetManagerId > -1 && parsedData.morphTargetManagers !== undefined && parsedData.morphTargetManagers !== null) {\r\n const morphTargetManagerAlreadyLoaded = loadedMorphTargetManagerIds.indexOf(parsedMesh.morphTargetManagerId) > -1;\r\n if (!morphTargetManagerAlreadyLoaded) {\r\n for (let morphTargetManagerIndex = 0; morphTargetManagerIndex < parsedData.morphTargetManagers.length; morphTargetManagerIndex++) {\r\n const parsedManager = parsedData.morphTargetManagers[morphTargetManagerIndex];\r\n if (parsedManager.id === parsedMesh.morphTargetManagerId) {\r\n const morphTargetManager = MorphTargetManager.Parse(parsedManager, scene);\r\n tempMorphTargetManagerIndexContainer[parsedManager.id] = morphTargetManager;\r\n loadedMorphTargetManagerIds.push(parsedManager.id);\r\n log += \"\\nMorph target manager\" + morphTargetManager.toString();\r\n }\r\n }\r\n }\r\n }\r\n\r\n const mesh = Mesh.Parse(parsedMesh, scene, rootUrl);\r\n meshes.push(mesh);\r\n parsedIdToNodeMap.set(mesh._waitingParsedUniqueId!, mesh);\r\n mesh._waitingParsedUniqueId = null;\r\n log += \"\\n\\tMesh \" + mesh.toString(fullDetails);\r\n }\r\n }\r\n\r\n // link multimats with materials\r\n scene.multiMaterials.forEach((multimat) => {\r\n multimat._waitingSubMaterialsUniqueIds.forEach((subMaterial) => {\r\n multimat.subMaterials.push(findMaterial(subMaterial, scene));\r\n });\r\n multimat._waitingSubMaterialsUniqueIds = [];\r\n });\r\n\r\n // link meshes with materials\r\n scene.meshes.forEach((mesh) => {\r\n if (mesh._waitingMaterialId !== null) {\r\n mesh.material = findMaterial(mesh._waitingMaterialId, scene);\r\n mesh._waitingMaterialId = null;\r\n }\r\n });\r\n\r\n // link meshes with morph target managers\r\n scene.meshes.forEach((mesh) => {\r\n if (mesh._waitingMorphTargetManagerId !== null) {\r\n mesh.morphTargetManager = tempMorphTargetManagerIndexContainer[mesh._waitingMorphTargetManagerId];\r\n mesh._waitingMorphTargetManagerId = null;\r\n }\r\n });\r\n\r\n // Connecting parents and lods\r\n for (let index = 0, cache = scene.transformNodes.length; index < cache; index++) {\r\n const transformNode = scene.transformNodes[index];\r\n if (transformNode._waitingParentId !== null) {\r\n let parent = parsedIdToNodeMap.get(parseInt(transformNode._waitingParentId)) || null;\r\n if (parent === null) {\r\n parent = scene.getLastEntryById(transformNode._waitingParentId);\r\n }\r\n let parentNode = parent;\r\n if (transformNode._waitingParentInstanceIndex) {\r\n parentNode = (parent as Mesh).instances[parseInt(transformNode._waitingParentInstanceIndex)];\r\n transformNode._waitingParentInstanceIndex = null;\r\n }\r\n transformNode.parent = parentNode;\r\n transformNode._waitingParentId = null;\r\n }\r\n }\r\n let currentMesh: AbstractMesh;\r\n for (let index = 0, cache = scene.meshes.length; index < cache; index++) {\r\n currentMesh = scene.meshes[index];\r\n if (currentMesh._waitingParentId) {\r\n let parent = parsedIdToNodeMap.get(parseInt(currentMesh._waitingParentId)) || null;\r\n if (parent === null) {\r\n parent = scene.getLastEntryById(currentMesh._waitingParentId);\r\n }\r\n let parentNode = parent;\r\n if (currentMesh._waitingParentInstanceIndex) {\r\n parentNode = (parent as Mesh).instances[parseInt(currentMesh._waitingParentInstanceIndex)];\r\n currentMesh._waitingParentInstanceIndex = null;\r\n }\r\n currentMesh.parent = parentNode;\r\n currentMesh._waitingParentId = null;\r\n }\r\n if (currentMesh._waitingData.lods) {\r\n loadDetailLevels(scene, currentMesh);\r\n }\r\n }\r\n\r\n // Remove unused transform nodes\r\n for (const transformNode of loadedTransformNodes) {\r\n const childMeshes = transformNode.getChildMeshes(false);\r\n if (!childMeshes.length) {\r\n transformNode.dispose();\r\n }\r\n }\r\n\r\n // link skeleton transform nodes\r\n for (let index = 0, cache = scene.skeletons.length; index < cache; index++) {\r\n const skeleton = scene.skeletons[index];\r\n if (skeleton._hasWaitingData) {\r\n if (skeleton.bones != null) {\r\n skeleton.bones.forEach((bone) => {\r\n if (bone._waitingTransformNodeId) {\r\n const linkTransformNode = scene.getLastEntryById(bone._waitingTransformNodeId) as TransformNode;\r\n if (linkTransformNode) {\r\n bone.linkTransformNode(linkTransformNode);\r\n }\r\n bone._waitingTransformNodeId = null;\r\n }\r\n });\r\n }\r\n\r\n skeleton._hasWaitingData = null;\r\n }\r\n }\r\n\r\n // freeze and compute world matrix application\r\n for (let index = 0, cache = scene.meshes.length; index < cache; index++) {\r\n currentMesh = scene.meshes[index];\r\n if (currentMesh._waitingData.freezeWorldMatrix) {\r\n currentMesh.freezeWorldMatrix();\r\n currentMesh._waitingData.freezeWorldMatrix = null;\r\n } else {\r\n currentMesh.computeWorldMatrix(true);\r\n }\r\n }\r\n }\r\n\r\n // Particles\r\n if (parsedData.particleSystems !== undefined && parsedData.particleSystems !== null) {\r\n const parser = GetIndividualParser(SceneComponentConstants.NAME_PARTICLESYSTEM);\r\n if (parser) {\r\n for (let index = 0, cache = parsedData.particleSystems.length; index < cache; index++) {\r\n const parsedParticleSystem = parsedData.particleSystems[index];\r\n if (hierarchyIds.indexOf(parsedParticleSystem.emitterId) !== -1) {\r\n particleSystems.push(parser(parsedParticleSystem, scene, rootUrl));\r\n }\r\n }\r\n }\r\n }\r\n\r\n scene.geometries.forEach((g) => {\r\n g._loadedUniqueId = \"\";\r\n });\r\n\r\n return true;\r\n } catch (err) {\r\n const msg = logOperation(\"importMesh\", parsedData ? parsedData.producer : \"Unknown\") + log;\r\n if (onError) {\r\n onError(msg, err);\r\n } else {\r\n Logger.Log(msg);\r\n throw err;\r\n }\r\n } finally {\r\n if (log !== null && SceneLoader.loggingLevel !== SceneLoader.NO_LOGGING) {\r\n Logger.Log(logOperation(\"importMesh\", parsedData ? parsedData.producer : \"Unknown\") + (SceneLoader.loggingLevel !== SceneLoader.MINIMAL_LOGGING ? log : \"\"));\r\n }\r\n tempMaterialIndexContainer = {};\r\n tempMorphTargetManagerIndexContainer = {};\r\n }\r\n\r\n return false;\r\n },\r\n load: (scene: Scene, data: string, rootUrl: string, onError?: (message: string, exception?: any) => void): boolean => {\r\n // Entire method running in try block, so ALWAYS logs as far as it got, only actually writes details\r\n // when SceneLoader.debugLogging = true (default), or exception encountered.\r\n // Everything stored in var log instead of writing separate lines to support only writing in exception,\r\n // and avoid problems with multiple concurrent .babylon loads.\r\n let log = \"importScene has failed JSON parse\";\r\n try {\r\n // eslint-disable-next-line no-var\r\n var parsedData = JSON.parse(data);\r\n log = \"\";\r\n\r\n // Scene\r\n if (parsedData.useDelayedTextureLoading !== undefined && parsedData.useDelayedTextureLoading !== null) {\r\n scene.useDelayedTextureLoading = parsedData.useDelayedTextureLoading && !SceneLoader.ForceFullSceneLoadingForIncremental;\r\n }\r\n if (parsedData.autoClear !== undefined && parsedData.autoClear !== null) {\r\n scene.autoClear = parsedData.autoClear;\r\n }\r\n if (parsedData.clearColor !== undefined && parsedData.clearColor !== null) {\r\n scene.clearColor = Color4.FromArray(parsedData.clearColor);\r\n }\r\n if (parsedData.ambientColor !== undefined && parsedData.ambientColor !== null) {\r\n scene.ambientColor = Color3.FromArray(parsedData.ambientColor);\r\n }\r\n if (parsedData.gravity !== undefined && parsedData.gravity !== null) {\r\n scene.gravity = Vector3.FromArray(parsedData.gravity);\r\n }\r\n\r\n if (parsedData.useRightHandedSystem !== undefined) {\r\n scene.useRightHandedSystem = !!parsedData.useRightHandedSystem;\r\n }\r\n\r\n // Fog\r\n if (parsedData.fogMode !== undefined && parsedData.fogMode !== null) {\r\n scene.fogMode = parsedData.fogMode;\r\n }\r\n if (parsedData.fogColor !== undefined && parsedData.fogColor !== null) {\r\n scene.fogColor = Color3.FromArray(parsedData.fogColor);\r\n }\r\n if (parsedData.fogStart !== undefined && parsedData.fogStart !== null) {\r\n scene.fogStart = parsedData.fogStart;\r\n }\r\n if (parsedData.fogEnd !== undefined && parsedData.fogEnd !== null) {\r\n scene.fogEnd = parsedData.fogEnd;\r\n }\r\n if (parsedData.fogDensity !== undefined && parsedData.fogDensity !== null) {\r\n scene.fogDensity = parsedData.fogDensity;\r\n }\r\n log += \"\\tFog mode for scene: \";\r\n switch (scene.fogMode) {\r\n case 0:\r\n log += \"none\\n\";\r\n break;\r\n // getters not compiling, so using hardcoded\r\n case 1:\r\n log += \"exp\\n\";\r\n break;\r\n case 2:\r\n log += \"exp2\\n\";\r\n break;\r\n case 3:\r\n log += \"linear\\n\";\r\n break;\r\n }\r\n\r\n //Physics\r\n if (parsedData.physicsEnabled) {\r\n let physicsPlugin;\r\n if (parsedData.physicsEngine === \"cannon\" || parsedData.physicsEngine === CannonJSPlugin.name) {\r\n physicsPlugin = new CannonJSPlugin(undefined, undefined, BabylonFileLoaderConfiguration.LoaderInjectedPhysicsEngine);\r\n } else if (parsedData.physicsEngine === \"oimo\" || parsedData.physicsEngine === OimoJSPlugin.name) {\r\n physicsPlugin = new OimoJSPlugin(undefined, BabylonFileLoaderConfiguration.LoaderInjectedPhysicsEngine);\r\n } else if (parsedData.physicsEngine === \"ammo\" || parsedData.physicsEngine === AmmoJSPlugin.name) {\r\n physicsPlugin = new AmmoJSPlugin(undefined, BabylonFileLoaderConfiguration.LoaderInjectedPhysicsEngine, undefined);\r\n }\r\n log = \"\\tPhysics engine \" + (parsedData.physicsEngine ? parsedData.physicsEngine : \"oimo\") + \" enabled\\n\";\r\n //else - default engine, which is currently oimo\r\n const physicsGravity = parsedData.gravity ? Vector3.FromArray(parsedData.gravity) : parsedData.physicsGravity ? Vector3.FromArray(parsedData.physicsGravity) : null;\r\n scene.enablePhysics(physicsGravity, physicsPlugin);\r\n }\r\n\r\n // Metadata\r\n if (parsedData.metadata !== undefined && parsedData.metadata !== null) {\r\n scene.metadata = parsedData.metadata;\r\n }\r\n\r\n //collisions, if defined. otherwise, default is true\r\n if (parsedData.collisionsEnabled !== undefined && parsedData.collisionsEnabled !== null) {\r\n scene.collisionsEnabled = parsedData.collisionsEnabled;\r\n }\r\n\r\n const container = loadAssetContainer(scene, data, rootUrl, onError, true);\r\n if (!container) {\r\n return false;\r\n }\r\n\r\n if (parsedData.autoAnimate) {\r\n scene.beginAnimation(scene, parsedData.autoAnimateFrom, parsedData.autoAnimateTo, parsedData.autoAnimateLoop, parsedData.autoAnimateSpeed || 1.0);\r\n }\r\n\r\n if (parsedData.activeCameraID !== undefined && parsedData.activeCameraID !== null) {\r\n scene.setActiveCameraById(parsedData.activeCameraID);\r\n }\r\n\r\n // Finish\r\n return true;\r\n } catch (err) {\r\n const msg = logOperation(\"importScene\", parsedData ? parsedData.producer : \"Unknown\") + log;\r\n if (onError) {\r\n onError(msg, err);\r\n } else {\r\n Logger.Log(msg);\r\n throw err;\r\n }\r\n } finally {\r\n if (log !== null && SceneLoader.loggingLevel !== SceneLoader.NO_LOGGING) {\r\n Logger.Log(logOperation(\"importScene\", parsedData ? parsedData.producer : \"Unknown\") + (SceneLoader.loggingLevel !== SceneLoader.MINIMAL_LOGGING ? log : \"\"));\r\n }\r\n }\r\n return false;\r\n },\r\n loadAssetContainer: (scene: Scene, data: string, rootUrl: string, onError?: (message: string, exception?: any) => void): AssetContainer => {\r\n const container = loadAssetContainer(scene, data, rootUrl, onError);\r\n return container;\r\n },\r\n});\r\n"]}
@@ -265,15 +265,16 @@ export class ReflectionTextureBaseBlock extends NodeMaterialBlock {
265
265
  * @returns the shader code
266
266
  */
267
267
  handleFragmentSideCodeReflectionCoords(state, worldNormalVarName, worldPos, onlyReflectionVector = false, doNotEmitInvertZ = false) {
268
- if (!worldPos) {
269
- worldPos = this.generateOnlyFragmentCode ? this._worldPositionNameInFragmentOnlyMode : `v_${this.worldPosition.associatedVariableName}`;
270
- }
271
268
  const isWebGPU = state.shaderLanguage === 1 /* ShaderLanguage.WGSL */;
272
269
  const reflectionMatrix = (isWebGPU ? "uniforms." : "") + this._reflectionMatrixName;
273
270
  const direction = `normalize(${this._directionWName})`;
274
271
  const positionUVW = `${this._positionUVWName}`;
275
272
  const vEyePosition = `${this.cameraPosition.associatedVariableName}`;
276
273
  const view = `${this.view.associatedVariableName}`;
274
+ const fragmentInputsPrefix = isWebGPU ? "fragmentInputs." : "";
275
+ if (!worldPos) {
276
+ worldPos = this.generateOnlyFragmentCode ? this._worldPositionNameInFragmentOnlyMode : `${fragmentInputsPrefix}v_${this.worldPosition.associatedVariableName}`;
277
+ }
277
278
  worldNormalVarName += ".xyz";
278
279
  let code = `
279
280
  #ifdef ${this._defineMirroredEquirectangularFixedName}