@babylonjs/core 9.11.0 → 9.12.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 (1078) hide show
  1. package/Actions/actionManager.d.ts +1 -1
  2. package/Actions/actionManager.js +8 -5
  3. package/Actions/actionManager.js.map +1 -1
  4. package/Animations/animatable.core.d.ts +1 -1
  5. package/Animations/animatable.core.js +2 -2
  6. package/Animations/animatable.core.js.map +1 -1
  7. package/Animations/animationPropertiesOverride.js +1 -1
  8. package/Animations/animationPropertiesOverride.js.map +1 -1
  9. package/Animations/animatorAvatar.d.ts +2 -2
  10. package/Animations/animatorAvatar.js +3 -3
  11. package/Animations/animatorAvatar.js.map +1 -1
  12. package/Animations/pathCursor.d.ts +1 -1
  13. package/Animations/pathCursor.js +1 -1
  14. package/Animations/pathCursor.js.map +1 -1
  15. package/Animations/runtimeAnimation.d.ts +1 -1
  16. package/Animations/runtimeAnimation.js +2 -2
  17. package/Animations/runtimeAnimation.js.map +1 -1
  18. package/Audio/analyser.js +1 -1
  19. package/Audio/analyser.js.map +1 -1
  20. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js +1 -1
  21. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js.map +1 -1
  22. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.d.ts +1 -1
  23. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js +1 -1
  24. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js.map +1 -1
  25. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.d.ts +1 -1
  26. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js +1 -1
  27. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js.map +1 -1
  28. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +1 -1
  29. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +1 -1
  30. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
  31. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +1 -1
  32. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
  33. package/AudioV2/webAudio/webAudioStreamingSound.js +1 -1
  34. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  35. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
  36. package/BakedVertexAnimation/bakedVertexAnimationManager.js +1 -1
  37. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  38. package/BakedVertexAnimation/vertexAnimationBaker.js +1 -1
  39. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -1
  40. package/Behaviors/Cameras/bouncingBehavior.js +1 -1
  41. package/Behaviors/Cameras/bouncingBehavior.js.map +1 -1
  42. package/Behaviors/Cameras/framingBehavior.d.ts +1 -1
  43. package/Behaviors/Cameras/framingBehavior.js +2 -2
  44. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  45. package/Behaviors/Cameras/interpolatingBehavior.d.ts +28 -1
  46. package/Behaviors/Cameras/interpolatingBehavior.js +64 -22
  47. package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
  48. package/Behaviors/Meshes/attachToBoxBehavior.js +1 -1
  49. package/Behaviors/Meshes/attachToBoxBehavior.js.map +1 -1
  50. package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +3 -3
  51. package/Behaviors/Meshes/baseSixDofDragBehavior.js +4 -4
  52. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  53. package/Behaviors/Meshes/followBehavior.js +1 -1
  54. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  55. package/Behaviors/Meshes/handConstraintBehavior.js +2 -2
  56. package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
  57. package/Behaviors/Meshes/multiPointerScaleBehavior.js +1 -1
  58. package/Behaviors/Meshes/multiPointerScaleBehavior.js.map +1 -1
  59. package/Behaviors/Meshes/pointerDragBehavior.d.ts +3 -3
  60. package/Behaviors/Meshes/pointerDragBehavior.js +5 -5
  61. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  62. package/Behaviors/Meshes/sixDofDragBehavior.d.ts +1 -1
  63. package/Behaviors/Meshes/sixDofDragBehavior.js +2 -2
  64. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  65. package/Behaviors/Meshes/surfaceMagnetismBehavior.js +1 -1
  66. package/Behaviors/Meshes/surfaceMagnetismBehavior.js.map +1 -1
  67. package/Bones/boneIKController.d.ts +1 -1
  68. package/Bones/boneIKController.js +1 -1
  69. package/Bones/boneIKController.js.map +1 -1
  70. package/Bones/boneLookController.d.ts +1 -1
  71. package/Bones/boneLookController.js +1 -1
  72. package/Bones/boneLookController.js.map +1 -1
  73. package/Bones/skeleton.d.ts +2 -2
  74. package/Bones/skeleton.functions.d.ts +1 -1
  75. package/Bones/skeleton.functions.js +3 -3
  76. package/Bones/skeleton.functions.js.map +1 -1
  77. package/Bones/skeleton.js +3 -4
  78. package/Bones/skeleton.js.map +1 -1
  79. package/Buffers/buffer.align.pure.js +6 -0
  80. package/Buffers/buffer.align.pure.js.map +1 -1
  81. package/Buffers/buffer.nonFloatVertexBuffers.js +2 -1
  82. package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
  83. package/Buffers/buffer.pure.d.ts +8 -0
  84. package/Buffers/buffer.pure.js +31 -2
  85. package/Buffers/buffer.pure.js.map +1 -1
  86. package/Buffers/bufferUtils.js +17 -5
  87. package/Buffers/bufferUtils.js.map +1 -1
  88. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +1 -1
  89. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  90. package/Cameras/Inputs/BaseCameraPointersInput.js +1 -1
  91. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  92. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +1 -1
  93. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  94. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +2 -2
  95. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  96. package/Cameras/Inputs/flyCameraKeyboardInput.js +11 -3
  97. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  98. package/Cameras/Inputs/flyCameraMouseInput.d.ts +2 -0
  99. package/Cameras/Inputs/flyCameraMouseInput.js +16 -4
  100. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  101. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +1 -1
  102. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  103. package/Cameras/Inputs/followCameraMouseWheelInput.js +1 -1
  104. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  105. package/Cameras/Inputs/freeCameraGamepadInput.js +1 -1
  106. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  107. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +27 -7
  108. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  109. package/Cameras/Inputs/freeCameraMouseInput.d.ts +14 -0
  110. package/Cameras/Inputs/freeCameraMouseInput.js +27 -5
  111. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  112. package/Cameras/Inputs/freeCameraMouseWheelInput.js +1 -1
  113. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  114. package/Cameras/Inputs/freeCameraTouchInput.js +18 -7
  115. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  116. package/Cameras/Inputs/geospatialCameraKeyboardInput.js +9 -2
  117. package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
  118. package/Cameras/Limits/geospatialLimits.d.ts +1 -1
  119. package/Cameras/Limits/geospatialLimits.js +1 -1
  120. package/Cameras/Limits/geospatialLimits.js.map +1 -1
  121. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js +2 -2
  122. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js.map +1 -1
  123. package/Cameras/RigModes/stereoscopicRigMode.d.ts +1 -1
  124. package/Cameras/RigModes/stereoscopicRigMode.js +3 -3
  125. package/Cameras/RigModes/stereoscopicRigMode.js.map +1 -1
  126. package/Cameras/RigModes/vrRigMode.js +2 -2
  127. package/Cameras/RigModes/vrRigMode.js.map +1 -1
  128. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +3 -3
  129. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +5 -5
  130. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  131. package/Cameras/VR/vrCameraMetrics.d.ts +1 -1
  132. package/Cameras/VR/vrCameraMetrics.js +1 -1
  133. package/Cameras/VR/vrCameraMetrics.js.map +1 -1
  134. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  135. package/Cameras/cameraInputsManager.d.ts +1 -1
  136. package/Cameras/cameraInputsManager.js +1 -1
  137. package/Cameras/cameraInputsManager.js.map +1 -1
  138. package/Cameras/flyCamera.pure.d.ts +8 -0
  139. package/Cameras/flyCamera.pure.js.map +1 -1
  140. package/Cameras/freeCamera.pure.d.ts +8 -0
  141. package/Cameras/freeCamera.pure.js.map +1 -1
  142. package/Cameras/geospatialCamera.pure.d.ts +30 -7
  143. package/Cameras/geospatialCamera.pure.js +39 -14
  144. package/Cameras/geospatialCamera.pure.js.map +1 -1
  145. package/Cameras/geospatialCameraMovement.js +2 -2
  146. package/Cameras/geospatialCameraMovement.js.map +1 -1
  147. package/Cameras/index.d.ts +1 -0
  148. package/Cameras/index.js +1 -0
  149. package/Cameras/index.js.map +1 -1
  150. package/Cameras/pure.d.ts +1 -0
  151. package/Cameras/pure.js +1 -0
  152. package/Cameras/pure.js.map +1 -1
  153. package/Cameras/targetCamera.pure.d.ts +25 -0
  154. package/Cameras/targetCamera.pure.js +83 -25
  155. package/Cameras/targetCamera.pure.js.map +1 -1
  156. package/Cameras/targetCameraMovement.d.ts +56 -0
  157. package/Cameras/targetCameraMovement.js +63 -0
  158. package/Cameras/targetCameraMovement.js.map +1 -0
  159. package/Collisions/collider.d.ts +1 -1
  160. package/Collisions/collider.js +1 -1
  161. package/Collisions/collider.js.map +1 -1
  162. package/Collisions/gpuPicker.d.ts +1 -1
  163. package/Collisions/gpuPicker.js +5 -5
  164. package/Collisions/gpuPicker.js.map +1 -1
  165. package/Collisions/meshCollisionData.d.ts +1 -1
  166. package/Collisions/meshCollisionData.js +1 -1
  167. package/Collisions/meshCollisionData.js.map +1 -1
  168. package/Collisions/pickingInfo.d.ts +1 -1
  169. package/Collisions/pickingInfo.js +2 -2
  170. package/Collisions/pickingInfo.js.map +1 -1
  171. package/Culling/Octrees/octreeBlock.d.ts +1 -1
  172. package/Culling/Octrees/octreeBlock.js +1 -1
  173. package/Culling/Octrees/octreeBlock.js.map +1 -1
  174. package/Culling/boundingBox.d.ts +1 -1
  175. package/Culling/boundingBox.js +1 -1
  176. package/Culling/boundingBox.js.map +1 -1
  177. package/Culling/boundingInfo.d.ts +1 -1
  178. package/Culling/boundingInfo.js +1 -1
  179. package/Culling/boundingInfo.js.map +1 -1
  180. package/Culling/boundingSphere.d.ts +1 -1
  181. package/Culling/boundingSphere.js +1 -1
  182. package/Culling/boundingSphere.js.map +1 -1
  183. package/Culling/ray.core.d.ts +1 -1
  184. package/Culling/ray.core.js +1 -1
  185. package/Culling/ray.core.js.map +1 -1
  186. package/Debug/axesViewer.d.ts +1 -1
  187. package/Debug/axesViewer.js +3 -3
  188. package/Debug/axesViewer.js.map +1 -1
  189. package/Debug/boneAxesViewer.d.ts +1 -1
  190. package/Debug/boneAxesViewer.js +1 -1
  191. package/Debug/boneAxesViewer.js.map +1 -1
  192. package/Debug/directionalLightFrustumViewer.d.ts +1 -1
  193. package/Debug/directionalLightFrustumViewer.js +6 -6
  194. package/Debug/directionalLightFrustumViewer.js.map +1 -1
  195. package/Debug/rayHelper.d.ts +1 -1
  196. package/Debug/rayHelper.js +2 -2
  197. package/Debug/rayHelper.js.map +1 -1
  198. package/Debug/skeletonViewer.d.ts +2 -2
  199. package/Debug/skeletonViewer.js +10 -10
  200. package/Debug/skeletonViewer.js.map +1 -1
  201. package/DeviceInput/internalDeviceSourceManager.d.ts +1 -1
  202. package/DeviceInput/internalDeviceSourceManager.js +0 -1
  203. package/DeviceInput/internalDeviceSourceManager.js.map +1 -1
  204. package/DeviceInput/webDeviceInputSystem.js +1 -1
  205. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  206. package/Engines/AbstractEngine/abstractEngine.scissor.d.ts +18 -0
  207. package/Engines/AbstractEngine/abstractEngine.scissor.js +2 -0
  208. package/Engines/AbstractEngine/abstractEngine.scissor.js.map +1 -0
  209. package/Engines/Extensions/engine.views.d.ts +1 -1
  210. package/Engines/Extensions/engine.views.js +1 -1
  211. package/Engines/Extensions/engine.views.js.map +1 -1
  212. package/Engines/Native/nativeHelpers.js +4 -1
  213. package/Engines/Native/nativeHelpers.js.map +1 -1
  214. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -1
  215. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +11 -1
  216. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  217. package/Engines/WebGPU/webgpuComputeContext.d.ts +1 -1
  218. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  219. package/Engines/WebGPU/webgpuTintWASM.js +1 -1
  220. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  221. package/Engines/abstractEngine.pure.js +2 -2
  222. package/Engines/abstractEngine.pure.js.map +1 -1
  223. package/Engines/constants.d.ts +4 -0
  224. package/Engines/constants.js +4 -0
  225. package/Engines/constants.js.map +1 -1
  226. package/Engines/engine.d.ts +1 -0
  227. package/Engines/engine.js +1 -0
  228. package/Engines/engine.js.map +1 -1
  229. package/Engines/engine.pure.d.ts +0 -12
  230. package/Engines/engine.pure.js +0 -20
  231. package/Engines/engine.pure.js.map +1 -1
  232. package/Engines/engineFactory.d.ts +2 -2
  233. package/Engines/engineFactory.js +3 -3
  234. package/Engines/engineFactory.js.map +1 -1
  235. package/Engines/nullEngine.pure.d.ts +66 -0
  236. package/Engines/nullEngine.pure.js +93 -0
  237. package/Engines/nullEngine.pure.js.map +1 -1
  238. package/Engines/pure.d.ts +1 -0
  239. package/Engines/pure.js +1 -0
  240. package/Engines/pure.js.map +1 -1
  241. package/Engines/thinEngine.scissor.d.ts +6 -0
  242. package/Engines/thinEngine.scissor.js +9 -0
  243. package/Engines/thinEngine.scissor.js.map +1 -0
  244. package/Engines/thinEngine.scissor.pure.d.ts +6 -0
  245. package/Engines/thinEngine.scissor.pure.js +24 -0
  246. package/Engines/thinEngine.scissor.pure.js.map +1 -0
  247. package/Engines/thinNativeEngine.d.ts +0 -1
  248. package/Engines/thinNativeEngine.js +0 -1
  249. package/Engines/thinNativeEngine.js.map +1 -1
  250. package/Engines/thinNativeEngine.pure.js +7 -0
  251. package/Engines/thinNativeEngine.pure.js.map +1 -1
  252. package/Engines/webgpuEngine.pure.js.map +1 -1
  253. package/Events/pointerEvents.d.ts +1 -1
  254. package/Events/pointerEvents.js +1 -1
  255. package/Events/pointerEvents.js.map +1 -1
  256. package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js +1 -1
  257. package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js.map +1 -1
  258. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +1 -1
  259. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +1 -1
  260. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  261. package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js +1 -1
  262. package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js.map +1 -1
  263. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.d.ts +1 -1
  264. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js +3 -3
  265. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js.map +1 -1
  266. package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +1 -1
  267. package/FlowGraph/CustomTypes/flowGraphMatrix.js +1 -1
  268. package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
  269. package/FlowGraph/flowGraphBlock.d.ts +1 -1
  270. package/FlowGraph/flowGraphBlock.js +1 -1
  271. package/FlowGraph/flowGraphBlock.js.map +1 -1
  272. package/FlowGraph/flowGraphExecutionBlock.d.ts +1 -1
  273. package/FlowGraph/flowGraphExecutionBlock.js +1 -1
  274. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  275. package/FlowGraph/flowGraphMath.d.ts +1 -1
  276. package/FlowGraph/flowGraphMath.js +1 -1
  277. package/FlowGraph/flowGraphMath.js.map +1 -1
  278. package/FlowGraph/flowGraphParser.js +1 -1
  279. package/FlowGraph/flowGraphParser.js.map +1 -1
  280. package/FlowGraph/flowGraphPathConverterComponent.d.ts +1 -1
  281. package/FlowGraph/flowGraphPathConverterComponent.js +2 -2
  282. package/FlowGraph/flowGraphPathConverterComponent.js.map +1 -1
  283. package/FlowGraph/flowGraphValidator.js.map +1 -1
  284. package/FlowGraph/serialization.js +4 -4
  285. package/FlowGraph/serialization.js.map +1 -1
  286. package/FlowGraph/utils.js.map +1 -1
  287. package/FrameGraph/Node/nodeRenderGraph.d.ts +2 -2
  288. package/FrameGraph/Node/nodeRenderGraph.js +7 -7
  289. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  290. package/FrameGraph/Tasks/Layers/baseLayerTask.d.ts +30 -0
  291. package/FrameGraph/Tasks/Layers/baseLayerTask.js +28 -1
  292. package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
  293. package/FrameGraph/Tasks/Misc/computeShaderTask.d.ts +2 -2
  294. package/FrameGraph/Tasks/Misc/computeShaderTask.js +2 -2
  295. package/FrameGraph/Tasks/Misc/computeShaderTask.js.map +1 -1
  296. package/FrameGraph/Tasks/Misc/lightingVolumeTask.d.ts +1 -1
  297. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +2 -2
  298. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
  299. package/FrameGraph/Tasks/PostProcesses/blurTask.d.ts +7 -0
  300. package/FrameGraph/Tasks/PostProcesses/blurTask.js +8 -1
  301. package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -1
  302. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +1 -1
  303. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
  304. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js +1 -1
  305. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js.map +1 -1
  306. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.d.ts +1 -1
  307. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js +1 -1
  308. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js.map +1 -1
  309. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.d.ts +2 -2
  310. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js +3 -3
  311. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js.map +1 -1
  312. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +1 -1
  313. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +2 -2
  314. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
  315. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +6 -0
  316. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +14 -5
  317. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  318. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +1 -1
  319. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +1 -1
  320. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
  321. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.d.ts +1 -1
  322. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js +1 -1
  323. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js.map +1 -1
  324. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.d.ts +1 -1
  325. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js +2 -2
  326. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js.map +1 -1
  327. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.d.ts +1 -1
  328. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js +2 -2
  329. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js.map +1 -1
  330. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +7 -1
  331. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +7 -1
  332. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  333. package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +1 -1
  334. package/FrameGraph/Tasks/Texture/clearTextureTask.js +1 -1
  335. package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
  336. package/FrameGraph/frameGraphRenderContext.js +1 -1
  337. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  338. package/FrameGraph/frameGraphTextureManager.d.ts +1 -1
  339. package/FrameGraph/frameGraphTextureManager.js +1 -1
  340. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  341. package/Gamepads/gamepadManager.js +1 -1
  342. package/Gamepads/gamepadManager.js.map +1 -1
  343. package/Gizmos/axisDragGizmo.d.ts +5 -5
  344. package/Gizmos/axisDragGizmo.js +6 -6
  345. package/Gizmos/axisDragGizmo.js.map +1 -1
  346. package/Gizmos/axisScaleGizmo.d.ts +4 -4
  347. package/Gizmos/axisScaleGizmo.js +6 -6
  348. package/Gizmos/axisScaleGizmo.js.map +1 -1
  349. package/Gizmos/boundingBoxGizmo.d.ts +5 -5
  350. package/Gizmos/boundingBoxGizmo.js +7 -7
  351. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  352. package/Gizmos/cameraGizmo.d.ts +3 -3
  353. package/Gizmos/cameraGizmo.js +7 -7
  354. package/Gizmos/cameraGizmo.js.map +1 -1
  355. package/Gizmos/gizmo.d.ts +2 -2
  356. package/Gizmos/gizmo.js +3 -3
  357. package/Gizmos/gizmo.js.map +1 -1
  358. package/Gizmos/gizmoManager.d.ts +2 -2
  359. package/Gizmos/gizmoManager.js +2 -2
  360. package/Gizmos/gizmoManager.js.map +1 -1
  361. package/Gizmos/lightGizmo.d.ts +4 -4
  362. package/Gizmos/lightGizmo.js +11 -11
  363. package/Gizmos/lightGizmo.js.map +1 -1
  364. package/Gizmos/planeDragGizmo.d.ts +4 -4
  365. package/Gizmos/planeDragGizmo.js +5 -5
  366. package/Gizmos/planeDragGizmo.js.map +1 -1
  367. package/Gizmos/positionGizmo.d.ts +1 -1
  368. package/Gizmos/positionGizmo.js +2 -2
  369. package/Gizmos/positionGizmo.js.map +1 -1
  370. package/Gizmos/rotationGizmo.d.ts +3 -3
  371. package/Gizmos/rotationGizmo.js +3 -3
  372. package/Gizmos/rotationGizmo.js.map +1 -1
  373. package/Gizmos/scaleGizmo.d.ts +2 -2
  374. package/Gizmos/scaleGizmo.js +4 -4
  375. package/Gizmos/scaleGizmo.js.map +1 -1
  376. package/Gizmos/spatialAudioGizmo.d.ts +2 -2
  377. package/Gizmos/spatialAudioGizmo.js +6 -6
  378. package/Gizmos/spatialAudioGizmo.js.map +1 -1
  379. package/Helpers/environmentHelper.d.ts +6 -6
  380. package/Helpers/environmentHelper.js +12 -12
  381. package/Helpers/environmentHelper.js.map +1 -1
  382. package/Helpers/materialConversionHelper.d.ts +1 -1
  383. package/Helpers/materialConversionHelper.js +1 -1
  384. package/Helpers/materialConversionHelper.js.map +1 -1
  385. package/Helpers/photoDome.d.ts +1 -1
  386. package/Helpers/photoDome.js +1 -1
  387. package/Helpers/photoDome.js.map +1 -1
  388. package/Helpers/textureDome.d.ts +4 -4
  389. package/Helpers/textureDome.js +6 -6
  390. package/Helpers/textureDome.js.map +1 -1
  391. package/Helpers/videoDome.d.ts +1 -1
  392. package/Helpers/videoDome.js +2 -2
  393. package/Helpers/videoDome.js.map +1 -1
  394. package/Inputs/scene.inputManager.d.ts +1 -1
  395. package/Inputs/scene.inputManager.js +1 -1
  396. package/Inputs/scene.inputManager.js.map +1 -1
  397. package/Instrumentation/sceneInstrumentation.js +1 -1
  398. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  399. package/Layers/effectLayer.d.ts +1 -1
  400. package/Layers/effectLayer.js +3 -3
  401. package/Layers/effectLayer.js.map +1 -1
  402. package/Layers/layer.d.ts +2 -2
  403. package/Layers/layer.js +4 -4
  404. package/Layers/layer.js.map +1 -1
  405. package/Layers/thinEffectLayer.d.ts +2 -2
  406. package/Layers/thinEffectLayer.js +3 -3
  407. package/Layers/thinEffectLayer.js.map +1 -1
  408. package/Layers/thinGlowLayer.d.ts +1 -1
  409. package/Layers/thinGlowLayer.js +3 -3
  410. package/Layers/thinGlowLayer.js.map +1 -1
  411. package/Layers/thinHighlightLayer.d.ts +1 -1
  412. package/Layers/thinHighlightLayer.js +3 -3
  413. package/Layers/thinHighlightLayer.js.map +1 -1
  414. package/Layers/thinSelectionOutlineLayer.d.ts +1 -1
  415. package/Layers/thinSelectionOutlineLayer.js +3 -3
  416. package/Layers/thinSelectionOutlineLayer.js.map +1 -1
  417. package/Legacy/legacy.js +12 -1
  418. package/Legacy/legacy.js.map +1 -1
  419. package/LensFlares/lensFlare.d.ts +2 -2
  420. package/LensFlares/lensFlare.js +3 -3
  421. package/LensFlares/lensFlare.js.map +1 -1
  422. package/LensFlares/lensFlareSystem.d.ts +1 -1
  423. package/LensFlares/lensFlareSystem.js +6 -6
  424. package/LensFlares/lensFlareSystem.js.map +1 -1
  425. package/Lights/LTC/ltcTextureTool.js +1 -1
  426. package/Lights/LTC/ltcTextureTool.js.map +1 -1
  427. package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -285
  428. package/Lights/Shadows/cascadedShadowGenerator.js +3 -857
  429. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  430. package/Lights/Shadows/cascadedShadowGenerator.pure.d.ts +290 -0
  431. package/Lights/Shadows/cascadedShadowGenerator.pure.js +868 -0
  432. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -0
  433. package/Lights/Shadows/pure.d.ts +1 -0
  434. package/Lights/Shadows/pure.js +1 -0
  435. package/Lights/Shadows/pure.js.map +1 -1
  436. package/Lights/Shadows/shadowGenerator.d.ts +3 -3
  437. package/Lights/Shadows/shadowGenerator.js +7 -7
  438. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  439. package/Lights/areaLight.d.ts +1 -1
  440. package/Lights/areaLight.js +0 -1
  441. package/Lights/areaLight.js.map +1 -1
  442. package/Lights/light.d.ts +2 -2
  443. package/Lights/light.js +2 -2
  444. package/Lights/light.js.map +1 -1
  445. package/Lights/shadowLight.d.ts +1 -1
  446. package/Lights/shadowLight.js +1 -1
  447. package/Lights/shadowLight.js.map +1 -1
  448. package/Loading/sceneLoader.d.ts +2 -2
  449. package/Loading/sceneLoader.js +3 -3
  450. package/Loading/sceneLoader.js.map +1 -1
  451. package/Materials/GreasedLine/greasedLineMaterialDefaults.d.ts +1 -1
  452. package/Materials/GreasedLine/greasedLineMaterialDefaults.js +1 -1
  453. package/Materials/GreasedLine/greasedLineMaterialDefaults.js.map +1 -1
  454. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js +10 -3
  455. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js.map +1 -1
  456. package/Materials/GreasedLine/greasedLineSimpleMaterial.d.ts +3 -3
  457. package/Materials/GreasedLine/greasedLineSimpleMaterial.js +3 -3
  458. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  459. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +6 -6
  460. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
  461. package/Materials/Node/nodeMaterial.pure.d.ts +12 -0
  462. package/Materials/Node/nodeMaterial.pure.js +68 -13
  463. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  464. package/Materials/Node/nodeMaterialDefault.js +14 -14
  465. package/Materials/Node/nodeMaterialDefault.js.map +1 -1
  466. package/Materials/PBR/openpbrMaterial.pure.js +19 -4
  467. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  468. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +40 -2
  469. package/Materials/PBR/pbrAnisotropicConfiguration.js +41 -3
  470. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  471. package/Materials/PBR/pbrBRDFConfiguration.d.ts +5 -1
  472. package/Materials/PBR/pbrBRDFConfiguration.js +5 -1
  473. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  474. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +2 -2
  475. package/Materials/PBR/pbrBaseSimpleMaterial.js +2 -2
  476. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  477. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +42 -2
  478. package/Materials/PBR/pbrClearCoatConfiguration.js +42 -2
  479. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  480. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +38 -1
  481. package/Materials/PBR/pbrIridescenceConfiguration.js +38 -1
  482. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  483. package/Materials/PBR/pbrSheenConfiguration.d.ts +41 -2
  484. package/Materials/PBR/pbrSheenConfiguration.js +41 -2
  485. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  486. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +41 -2
  487. package/Materials/PBR/pbrSubSurfaceConfiguration.js +42 -3
  488. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  489. package/Materials/Textures/Filtering/hdrFiltering.js +1 -1
  490. package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
  491. package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +1 -1
  492. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +2 -2
  493. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
  494. package/Materials/Textures/Loaders/EXR/exrLoader.core.d.ts +1 -1
  495. package/Materials/Textures/Loaders/EXR/exrLoader.core.js +5 -109
  496. package/Materials/Textures/Loaders/EXR/exrLoader.core.js.map +1 -1
  497. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js +1 -1
  498. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js.map +1 -1
  499. package/Materials/Textures/Loaders/basisTextureLoader.js +2 -2
  500. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  501. package/Materials/Textures/Loaders/ddsTextureLoader.js +1 -1
  502. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  503. package/Materials/Textures/Loaders/envTextureLoader.js +3 -1
  504. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  505. package/Materials/Textures/Loaders/ktxTextureLoader.js +11 -2
  506. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  507. package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -1
  508. package/Materials/Textures/MultiviewRenderTarget.js +1 -1
  509. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  510. package/Materials/Textures/Packer/packer.d.ts +1 -1
  511. package/Materials/Textures/Packer/packer.js +6 -6
  512. package/Materials/Textures/Packer/packer.js.map +1 -1
  513. package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +2 -2
  514. package/Materials/Textures/Procedurals/customProceduralTexture.js +4 -4
  515. package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
  516. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +4 -1
  517. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  518. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js +1 -1
  519. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js.map +1 -1
  520. package/Materials/Textures/prePassRenderTarget.d.ts +1 -1
  521. package/Materials/Textures/prePassRenderTarget.js +1 -1
  522. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  523. package/Materials/Textures/rawCubeTexture.d.ts +1 -1
  524. package/Materials/Textures/rawCubeTexture.js +2 -2
  525. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  526. package/Materials/Textures/rawTexture.d.ts +1 -1
  527. package/Materials/Textures/rawTexture.js +1 -1
  528. package/Materials/Textures/rawTexture.js.map +1 -1
  529. package/Materials/Textures/rawTexture2DArray.d.ts +1 -1
  530. package/Materials/Textures/rawTexture2DArray.js +1 -1
  531. package/Materials/Textures/rawTexture2DArray.js.map +1 -1
  532. package/Materials/Textures/rawTexture3D.d.ts +1 -1
  533. package/Materials/Textures/rawTexture3D.js +1 -1
  534. package/Materials/Textures/rawTexture3D.js.map +1 -1
  535. package/Materials/Textures/refractionTexture.d.ts +1 -1
  536. package/Materials/Textures/refractionTexture.js +1 -1
  537. package/Materials/Textures/refractionTexture.js.map +1 -1
  538. package/Materials/Textures/textureMerger.d.ts +1 -1
  539. package/Materials/Textures/textureMerger.js +1 -1
  540. package/Materials/Textures/textureMerger.js.map +1 -1
  541. package/Materials/Textures/textureProcessor.d.ts +1 -1
  542. package/Materials/Textures/textureProcessor.js +2 -2
  543. package/Materials/Textures/textureProcessor.js.map +1 -1
  544. package/Materials/Textures/thinRenderTargetTexture.d.ts +4 -4
  545. package/Materials/Textures/thinRenderTargetTexture.js +2 -2
  546. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  547. package/Materials/clipPlaneMaterialHelper.js +1 -1
  548. package/Materials/clipPlaneMaterialHelper.js.map +1 -1
  549. package/Materials/effectRenderer.pure.js +4 -2
  550. package/Materials/effectRenderer.pure.js.map +1 -1
  551. package/Materials/floatingOriginMatrixOverrides.d.ts +1 -1
  552. package/Materials/floatingOriginMatrixOverrides.js +1 -1
  553. package/Materials/floatingOriginMatrixOverrides.js.map +1 -1
  554. package/Materials/material.detailMapConfiguration.d.ts +39 -1
  555. package/Materials/material.detailMapConfiguration.js +39 -1
  556. package/Materials/material.detailMapConfiguration.js.map +1 -1
  557. package/Materials/materialHelper.functions.js +45 -1
  558. package/Materials/materialHelper.functions.js.map +1 -1
  559. package/Materials/materialHelper.geometryrendering.d.ts +1 -1
  560. package/Materials/materialHelper.geometryrendering.js +1 -1
  561. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  562. package/Materials/materialPluginFactoryExport.js +2 -2
  563. package/Materials/materialPluginFactoryExport.js.map +1 -1
  564. package/Materials/pushMaterial.d.ts +7 -1
  565. package/Materials/pushMaterial.js +7 -1
  566. package/Materials/pushMaterial.js.map +1 -1
  567. package/Materials/uniformBuffer.js +1 -1
  568. package/Materials/uniformBuffer.js.map +1 -1
  569. package/Maths/math.axis.d.ts +1 -1
  570. package/Maths/math.axis.js +1 -1
  571. package/Maths/math.axis.js.map +1 -1
  572. package/Maths/math.d.ts +2 -2
  573. package/Maths/math.functions.d.ts +1 -1
  574. package/Maths/math.functions.js +1 -1
  575. package/Maths/math.functions.js.map +1 -1
  576. package/Maths/math.isovector.d.ts +1 -1
  577. package/Maths/math.isovector.js +1 -1
  578. package/Maths/math.isovector.js.map +1 -1
  579. package/Maths/math.js +2 -2
  580. package/Maths/math.js.map +1 -1
  581. package/Maths/math.path.d.ts +1 -1
  582. package/Maths/math.path.js +1 -1
  583. package/Maths/math.path.js.map +1 -1
  584. package/Maths/math.plane.d.ts +1 -1
  585. package/Maths/math.plane.js +1 -1
  586. package/Maths/math.plane.js.map +1 -1
  587. package/Maths/math.polar.d.ts +1 -1
  588. package/Maths/math.polar.js +1 -1
  589. package/Maths/math.polar.js.map +1 -1
  590. package/Maths/math.vertexFormat.d.ts +1 -1
  591. package/Maths/math.vertexFormat.js +1 -1
  592. package/Maths/math.vertexFormat.js.map +1 -1
  593. package/Maths/pure.d.ts +1 -0
  594. package/Maths/pure.js +1 -0
  595. package/Maths/pure.js.map +1 -1
  596. package/Meshes/Builders/geodesicBuilder.js +1 -1
  597. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  598. package/Meshes/Builders/goldbergBuilder.d.ts +1 -1
  599. package/Meshes/Builders/goldbergBuilder.js +4 -4
  600. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  601. package/Meshes/Builders/greasedLineBuilder.d.ts +4 -4
  602. package/Meshes/Builders/greasedLineBuilder.js +5 -5
  603. package/Meshes/Builders/greasedLineBuilder.js.map +1 -1
  604. package/Meshes/Builders/textBuilder.d.ts +2 -2
  605. package/Meshes/Builders/textBuilder.js +4 -4
  606. package/Meshes/Builders/textBuilder.js.map +1 -1
  607. package/Meshes/Builders/tiledBoxBuilder.d.ts +3 -3
  608. package/Meshes/Builders/tiledBoxBuilder.js +3 -3
  609. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  610. package/Meshes/Builders/tiledPlaneBuilder.d.ts +1 -1
  611. package/Meshes/Builders/tiledPlaneBuilder.js +1 -1
  612. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  613. package/Meshes/Compression/dracoCodec.js +1 -1
  614. package/Meshes/Compression/dracoCodec.js.map +1 -1
  615. package/Meshes/Compression/dracoDecoder.js +1 -1
  616. package/Meshes/Compression/dracoDecoder.js.map +1 -1
  617. package/Meshes/Compression/dracoEncoder.d.ts +1 -1
  618. package/Meshes/Compression/dracoEncoder.js +2 -2
  619. package/Meshes/Compression/dracoEncoder.js.map +1 -1
  620. package/Meshes/Compression/meshoptCompression.js +1 -1
  621. package/Meshes/Compression/meshoptCompression.js.map +1 -1
  622. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
  623. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  624. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +50 -1
  625. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +263 -107
  626. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  627. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +37 -0
  628. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +160 -0
  629. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
  630. package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +2 -2
  631. package/Meshes/GreasedLine/greasedLineBaseMesh.js +3 -3
  632. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  633. package/Meshes/Node/nodeGeometry.d.ts +2 -2
  634. package/Meshes/Node/nodeGeometry.js +4 -4
  635. package/Meshes/Node/nodeGeometry.js.map +1 -1
  636. package/Meshes/Node/nodeGeometryBuildState.d.ts +1 -1
  637. package/Meshes/Node/nodeGeometryBuildState.js +1 -1
  638. package/Meshes/Node/nodeGeometryBuildState.js.map +1 -1
  639. package/Meshes/abstractMesh.hotSpot.d.ts +1 -1
  640. package/Meshes/abstractMesh.hotSpot.js +2 -2
  641. package/Meshes/abstractMesh.hotSpot.js.map +1 -1
  642. package/Meshes/abstractMesh.pure.js +2 -13
  643. package/Meshes/abstractMesh.pure.js.map +1 -1
  644. package/Meshes/buffer.d.ts +1 -1
  645. package/Meshes/buffer.js +1 -1
  646. package/Meshes/buffer.js.map +1 -1
  647. package/Meshes/csg.d.ts +3 -3
  648. package/Meshes/csg.js +4 -4
  649. package/Meshes/csg.js.map +1 -1
  650. package/Meshes/csg2.d.ts +1 -1
  651. package/Meshes/csg2.js +38 -11
  652. package/Meshes/csg2.js.map +1 -1
  653. package/Meshes/geodesicMesh.d.ts +1 -1
  654. package/Meshes/geodesicMesh.js +1 -1
  655. package/Meshes/geodesicMesh.js.map +1 -1
  656. package/Meshes/geometry.d.ts +2 -2
  657. package/Meshes/geometry.js +34 -19
  658. package/Meshes/geometry.js.map +1 -1
  659. package/Meshes/lattice.d.ts +1 -1
  660. package/Meshes/lattice.js +1 -1
  661. package/Meshes/lattice.js.map +1 -1
  662. package/Meshes/lattice.material.d.ts +1 -1
  663. package/Meshes/lattice.material.js +1 -1
  664. package/Meshes/lattice.material.js.map +1 -1
  665. package/Meshes/mesh.pure.js +26 -14
  666. package/Meshes/mesh.pure.js.map +1 -1
  667. package/Meshes/mesh.vertexData.d.ts +2 -2
  668. package/Meshes/mesh.vertexData.js +3 -4
  669. package/Meshes/mesh.vertexData.js.map +1 -1
  670. package/Meshes/mesh.vertexData.subdivide.js +1 -1
  671. package/Meshes/mesh.vertexData.subdivide.js.map +1 -1
  672. package/Meshes/meshBuilder.d.ts +18 -18
  673. package/Meshes/meshBuilder.js +18 -18
  674. package/Meshes/meshBuilder.js.map +1 -1
  675. package/Meshes/meshSimplification.d.ts +1 -1
  676. package/Meshes/meshSimplification.js +4 -4
  677. package/Meshes/meshSimplification.js.map +1 -1
  678. package/Meshes/meshUVSpaceRenderer.d.ts +1 -1
  679. package/Meshes/meshUVSpaceRenderer.js +0 -1
  680. package/Meshes/meshUVSpaceRenderer.js.map +1 -1
  681. package/Meshes/meshUtils.d.ts +1 -1
  682. package/Meshes/meshUtils.js +2 -2
  683. package/Meshes/meshUtils.js.map +1 -1
  684. package/Meshes/polygonMesh.d.ts +2 -2
  685. package/Meshes/polygonMesh.js +3 -3
  686. package/Meshes/polygonMesh.js.map +1 -1
  687. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +2 -2
  688. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  689. package/Misc/HighDynamicRange/panoramaToCubemap.js +1 -1
  690. package/Misc/HighDynamicRange/panoramaToCubemap.js.map +1 -1
  691. package/Misc/PerformanceViewer/performanceViewerCollector.js +1 -1
  692. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  693. package/Misc/areaLightsTextureTools.d.ts +1 -1
  694. package/Misc/areaLightsTextureTools.js +3 -3
  695. package/Misc/areaLightsTextureTools.js.map +1 -1
  696. package/Misc/assetsManager.d.ts +4 -4
  697. package/Misc/assetsManager.js +5 -5
  698. package/Misc/assetsManager.js.map +1 -1
  699. package/Misc/basisWorker.js +1 -1
  700. package/Misc/basisWorker.js.map +1 -1
  701. package/Misc/brdfTextureTools.js +1 -1
  702. package/Misc/brdfTextureTools.js.map +1 -1
  703. package/Misc/copyTextureToTexture.d.ts +1 -1
  704. package/Misc/copyTextureToTexture.js +1 -1
  705. package/Misc/copyTextureToTexture.js.map +1 -1
  706. package/Misc/decorators.serialization.js +2 -2
  707. package/Misc/decorators.serialization.js.map +1 -1
  708. package/Misc/depthReducer.d.ts +2 -2
  709. package/Misc/depthReducer.js +2 -2
  710. package/Misc/depthReducer.js.map +1 -1
  711. package/Misc/gradients.d.ts +1 -1
  712. package/Misc/gradients.js +1 -1
  713. package/Misc/gradients.js.map +1 -1
  714. package/Misc/greasedLineTools.d.ts +1 -1
  715. package/Misc/greasedLineTools.js +3 -3
  716. package/Misc/greasedLineTools.js.map +1 -1
  717. package/Misc/halfFloat.d.ts +17 -0
  718. package/Misc/halfFloat.js +131 -0
  719. package/Misc/halfFloat.js.map +1 -0
  720. package/Misc/khronosTextureContainer2.js +1 -1
  721. package/Misc/khronosTextureContainer2.js.map +1 -1
  722. package/Misc/meshExploder.js +1 -1
  723. package/Misc/meshExploder.js.map +1 -1
  724. package/Misc/pivotTools.js +1 -1
  725. package/Misc/pivotTools.js.map +1 -1
  726. package/Misc/rgbdTextureTools.js +1 -1
  727. package/Misc/rgbdTextureTools.js.map +1 -1
  728. package/Misc/sceneOptimizer.js +1 -1
  729. package/Misc/sceneOptimizer.js.map +1 -1
  730. package/Misc/sceneRecorder.js +7 -7
  731. package/Misc/sceneRecorder.js.map +1 -1
  732. package/Misc/sceneSerializer.js +3 -3
  733. package/Misc/sceneSerializer.js.map +1 -1
  734. package/Misc/snapshotRenderingHelper.js +1 -1
  735. package/Misc/snapshotRenderingHelper.js.map +1 -1
  736. package/Misc/textureTools.d.ts +3 -13
  737. package/Misc/textureTools.js +6 -64
  738. package/Misc/textureTools.js.map +1 -1
  739. package/Misc/thinMinMaxReducer.d.ts +1 -1
  740. package/Misc/thinMinMaxReducer.js +1 -1
  741. package/Misc/thinMinMaxReducer.js.map +1 -1
  742. package/Misc/tools.internals.js +1 -1
  743. package/Misc/tools.internals.js.map +1 -1
  744. package/Misc/tools.pure.js +1 -1
  745. package/Misc/tools.pure.js.map +1 -1
  746. package/Misc/trajectoryClassifier.d.ts +1 -1
  747. package/Misc/trajectoryClassifier.js +1 -1
  748. package/Misc/trajectoryClassifier.js.map +1 -1
  749. package/Misc/videoRecorder.js +1 -1
  750. package/Misc/videoRecorder.js.map +1 -1
  751. package/Misc/virtualJoystick.d.ts +1 -1
  752. package/Misc/virtualJoystick.js +1 -1
  753. package/Misc/virtualJoystick.js.map +1 -1
  754. package/Morph/morphTarget.js +1 -1
  755. package/Morph/morphTarget.js.map +1 -1
  756. package/Navigation/Plugins/recastJSPlugin.d.ts +1 -1
  757. package/Navigation/Plugins/recastJSPlugin.js +2 -2
  758. package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
  759. package/Particles/EmitterTypes/boxParticleEmitter.d.ts +1 -1
  760. package/Particles/EmitterTypes/boxParticleEmitter.js +1 -1
  761. package/Particles/EmitterTypes/boxParticleEmitter.js.map +1 -1
  762. package/Particles/EmitterTypes/coneParticleEmitter.d.ts +1 -1
  763. package/Particles/EmitterTypes/coneParticleEmitter.js +1 -1
  764. package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
  765. package/Particles/EmitterTypes/customParticleEmitter.d.ts +1 -1
  766. package/Particles/EmitterTypes/customParticleEmitter.js +1 -1
  767. package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
  768. package/Particles/EmitterTypes/cylinderParticleEmitter.d.ts +1 -1
  769. package/Particles/EmitterTypes/cylinderParticleEmitter.js +1 -1
  770. package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
  771. package/Particles/EmitterTypes/hemisphericParticleEmitter.d.ts +1 -1
  772. package/Particles/EmitterTypes/hemisphericParticleEmitter.js +1 -1
  773. package/Particles/EmitterTypes/hemisphericParticleEmitter.js.map +1 -1
  774. package/Particles/EmitterTypes/meshParticleEmitter.d.ts +1 -1
  775. package/Particles/EmitterTypes/meshParticleEmitter.js +2 -2
  776. package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
  777. package/Particles/EmitterTypes/pointParticleEmitter.d.ts +1 -1
  778. package/Particles/EmitterTypes/pointParticleEmitter.js +1 -1
  779. package/Particles/EmitterTypes/pointParticleEmitter.js.map +1 -1
  780. package/Particles/EmitterTypes/sphereParticleEmitter.d.ts +1 -1
  781. package/Particles/EmitterTypes/sphereParticleEmitter.js +1 -1
  782. package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
  783. package/Particles/Node/nodeParticleBuildState.d.ts +4 -4
  784. package/Particles/Node/nodeParticleBuildState.js +2 -2
  785. package/Particles/Node/nodeParticleBuildState.js.map +1 -1
  786. package/Particles/Node/nodeParticleSystemSet.d.ts +2 -2
  787. package/Particles/Node/nodeParticleSystemSet.helper.js +31 -31
  788. package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
  789. package/Particles/Node/nodeParticleSystemSet.js +8 -8
  790. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  791. package/Particles/attractor.d.ts +1 -1
  792. package/Particles/attractor.js +1 -1
  793. package/Particles/attractor.js.map +1 -1
  794. package/Particles/flowMap.d.ts +7 -1
  795. package/Particles/flowMap.js +7 -1
  796. package/Particles/flowMap.js.map +1 -1
  797. package/Particles/particle.d.ts +2 -2
  798. package/Particles/particle.js +2 -2
  799. package/Particles/particle.js.map +1 -1
  800. package/Particles/particleHelper.js +5 -5
  801. package/Particles/particleHelper.js.map +1 -1
  802. package/Particles/particleSystem.functions.d.ts +1 -1
  803. package/Particles/particleSystem.functions.js +1 -1
  804. package/Particles/particleSystem.functions.js.map +1 -1
  805. package/Particles/particleSystemSet.d.ts +1 -1
  806. package/Particles/particleSystemSet.js +5 -5
  807. package/Particles/particleSystemSet.js.map +1 -1
  808. package/Particles/pointsCloudSystem.d.ts +1 -1
  809. package/Particles/pointsCloudSystem.js +6 -6
  810. package/Particles/pointsCloudSystem.js.map +1 -1
  811. package/Particles/solidParticle.d.ts +2 -2
  812. package/Particles/solidParticle.js +3 -3
  813. package/Particles/solidParticle.js.map +1 -1
  814. package/Particles/solidParticleSystem.d.ts +4 -4
  815. package/Particles/solidParticleSystem.js +7 -7
  816. package/Particles/solidParticleSystem.js.map +1 -1
  817. package/Particles/subEmitter.js +1 -1
  818. package/Particles/subEmitter.js.map +1 -1
  819. package/Particles/thinParticleSystem.function.js +2 -2
  820. package/Particles/thinParticleSystem.function.js.map +1 -1
  821. package/Physics/Plugins/cannonJSPlugin.d.ts +1 -1
  822. package/Physics/Plugins/cannonJSPlugin.js +1 -1
  823. package/Physics/Plugins/cannonJSPlugin.js.map +1 -1
  824. package/Physics/castingResult.d.ts +1 -1
  825. package/Physics/castingResult.js +1 -1
  826. package/Physics/castingResult.js.map +1 -1
  827. package/Physics/physicsHelper.d.ts +1 -1
  828. package/Physics/physicsHelper.js +4 -4
  829. package/Physics/physicsHelper.js.map +1 -1
  830. package/Physics/physicsImpostor.d.ts +1 -1
  831. package/Physics/physicsImpostor.js +1 -1
  832. package/Physics/physicsImpostor.js.map +1 -1
  833. package/Physics/physicsRaycastResult.d.ts +1 -1
  834. package/Physics/physicsRaycastResult.js +1 -1
  835. package/Physics/physicsRaycastResult.js.map +1 -1
  836. package/Physics/v1/Plugins/ammoJSPlugin.d.ts +2 -2
  837. package/Physics/v1/Plugins/ammoJSPlugin.js +5 -5
  838. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  839. package/Physics/v1/Plugins/oimoJSPlugin.d.ts +2 -2
  840. package/Physics/v1/Plugins/oimoJSPlugin.js +2 -2
  841. package/Physics/v1/Plugins/oimoJSPlugin.js.map +1 -1
  842. package/Physics/v1/physicsEngine.d.ts +1 -1
  843. package/Physics/v1/physicsEngine.js +1 -1
  844. package/Physics/v1/physicsEngine.js.map +1 -1
  845. package/Physics/v2/Plugins/havokPlugin.d.ts +14 -2
  846. package/Physics/v2/Plugins/havokPlugin.js +45 -7
  847. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  848. package/Physics/v2/characterController.d.ts +1 -1
  849. package/Physics/v2/characterController.js +2 -2
  850. package/Physics/v2/characterController.js.map +1 -1
  851. package/Physics/v2/physicsAggregate.d.ts +3 -3
  852. package/Physics/v2/physicsAggregate.js +10 -6
  853. package/Physics/v2/physicsAggregate.js.map +1 -1
  854. package/Physics/v2/physicsBody.d.ts +1 -1
  855. package/Physics/v2/physicsBody.js +1 -1
  856. package/Physics/v2/physicsBody.js.map +1 -1
  857. package/Physics/v2/physicsEngine.d.ts +1 -1
  858. package/Physics/v2/physicsEngine.js +1 -1
  859. package/Physics/v2/physicsEngine.js.map +1 -1
  860. package/Physics/v2/physicsShape.d.ts +1 -1
  861. package/Physics/v2/physicsShape.js +1 -1
  862. package/Physics/v2/physicsShape.js.map +1 -1
  863. package/Physics/v2/ragdoll.d.ts +2 -2
  864. package/Physics/v2/ragdoll.js +2 -2
  865. package/Physics/v2/ragdoll.js.map +1 -1
  866. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.d.ts +1 -0
  867. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +8 -6
  868. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
  869. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js +1 -1
  870. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js.map +1 -1
  871. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
  872. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
  873. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +3 -2
  874. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  875. package/PostProcesses/bloomEffect.d.ts +1 -1
  876. package/PostProcesses/bloomEffect.js +4 -4
  877. package/PostProcesses/bloomEffect.js.map +1 -1
  878. package/PostProcesses/depthOfFieldEffect.d.ts +1 -1
  879. package/PostProcesses/depthOfFieldEffect.js +3 -3
  880. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  881. package/PostProcesses/depthOfFieldMergePostProcess.d.ts +1 -1
  882. package/PostProcesses/depthOfFieldMergePostProcess.js +1 -1
  883. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  884. package/PostProcesses/highlightsPostProcess.d.ts +1 -1
  885. package/PostProcesses/highlightsPostProcess.js +1 -1
  886. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  887. package/PostProcesses/imageProcessingPostProcess.d.ts +1 -1
  888. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  889. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  890. package/PostProcesses/postProcessManager.d.ts +3 -0
  891. package/PostProcesses/postProcessManager.js +4 -1
  892. package/PostProcesses/postProcessManager.js.map +1 -1
  893. package/PostProcesses/subSurfaceScatteringPostProcess.pure.d.ts +1 -0
  894. package/PostProcesses/subSurfaceScatteringPostProcess.pure.js +10 -0
  895. package/PostProcesses/subSurfaceScatteringPostProcess.pure.js.map +1 -1
  896. package/PostProcesses/thinAnaglyphPostProcess.d.ts +1 -1
  897. package/PostProcesses/thinAnaglyphPostProcess.js +1 -1
  898. package/PostProcesses/thinAnaglyphPostProcess.js.map +1 -1
  899. package/PostProcesses/thinBlackAndWhitePostProcess.d.ts +1 -1
  900. package/PostProcesses/thinBlackAndWhitePostProcess.js +1 -1
  901. package/PostProcesses/thinBlackAndWhitePostProcess.js.map +1 -1
  902. package/PostProcesses/thinBloomEffect.js +1 -1
  903. package/PostProcesses/thinBloomEffect.js.map +1 -1
  904. package/PostProcesses/thinBloomMergePostProcess.d.ts +1 -1
  905. package/PostProcesses/thinBloomMergePostProcess.js +1 -1
  906. package/PostProcesses/thinBloomMergePostProcess.js.map +1 -1
  907. package/PostProcesses/thinBlurPostProcess.d.ts +1 -1
  908. package/PostProcesses/thinBlurPostProcess.js +1 -1
  909. package/PostProcesses/thinBlurPostProcess.js.map +1 -1
  910. package/PostProcesses/thinChromaticAberrationPostProcess.d.ts +2 -2
  911. package/PostProcesses/thinChromaticAberrationPostProcess.js +2 -2
  912. package/PostProcesses/thinChromaticAberrationPostProcess.js.map +1 -1
  913. package/PostProcesses/thinCircleOfConfusionPostProcess.d.ts +1 -1
  914. package/PostProcesses/thinCircleOfConfusionPostProcess.js +1 -1
  915. package/PostProcesses/thinCircleOfConfusionPostProcess.js.map +1 -1
  916. package/PostProcesses/thinColorCorrectionPostProcess.d.ts +1 -1
  917. package/PostProcesses/thinColorCorrectionPostProcess.js +2 -2
  918. package/PostProcesses/thinColorCorrectionPostProcess.js.map +1 -1
  919. package/PostProcesses/thinConvolutionPostProcess.d.ts +1 -1
  920. package/PostProcesses/thinConvolutionPostProcess.js +1 -1
  921. package/PostProcesses/thinConvolutionPostProcess.js.map +1 -1
  922. package/PostProcesses/thinCustomPostProcess.d.ts +1 -1
  923. package/PostProcesses/thinCustomPostProcess.js +1 -1
  924. package/PostProcesses/thinCustomPostProcess.js.map +1 -1
  925. package/PostProcesses/thinDepthOfFieldEffect.d.ts +3 -0
  926. package/PostProcesses/thinDepthOfFieldEffect.js +4 -1
  927. package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -1
  928. package/PostProcesses/thinDepthOfFieldMergePostProcess.d.ts +1 -1
  929. package/PostProcesses/thinDepthOfFieldMergePostProcess.js +1 -1
  930. package/PostProcesses/thinDepthOfFieldMergePostProcess.js.map +1 -1
  931. package/PostProcesses/thinExtractHighlightsPostProcess.d.ts +1 -1
  932. package/PostProcesses/thinExtractHighlightsPostProcess.js +1 -1
  933. package/PostProcesses/thinExtractHighlightsPostProcess.js.map +1 -1
  934. package/PostProcesses/thinFXAAPostProcess.d.ts +2 -2
  935. package/PostProcesses/thinFXAAPostProcess.js +2 -2
  936. package/PostProcesses/thinFXAAPostProcess.js.map +1 -1
  937. package/PostProcesses/thinFilterPostProcess.d.ts +2 -2
  938. package/PostProcesses/thinFilterPostProcess.js +2 -2
  939. package/PostProcesses/thinFilterPostProcess.js.map +1 -1
  940. package/PostProcesses/thinGrainPostProcess.d.ts +1 -1
  941. package/PostProcesses/thinGrainPostProcess.js +1 -1
  942. package/PostProcesses/thinGrainPostProcess.js.map +1 -1
  943. package/PostProcesses/thinImageProcessingPostProcess.d.ts +2 -2
  944. package/PostProcesses/thinImageProcessingPostProcess.js +2 -2
  945. package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -1
  946. package/PostProcesses/thinMotionBlurPostProcess.d.ts +1 -1
  947. package/PostProcesses/thinMotionBlurPostProcess.js +2 -2
  948. package/PostProcesses/thinMotionBlurPostProcess.js.map +1 -1
  949. package/PostProcesses/thinPassPostProcess.d.ts +1 -1
  950. package/PostProcesses/thinPassPostProcess.js +1 -1
  951. package/PostProcesses/thinPassPostProcess.js.map +1 -1
  952. package/PostProcesses/thinSSAO2BlurPostProcess.d.ts +1 -1
  953. package/PostProcesses/thinSSAO2BlurPostProcess.js +1 -1
  954. package/PostProcesses/thinSSAO2BlurPostProcess.js.map +1 -1
  955. package/PostProcesses/thinSSAO2CombinePostProcess.d.ts +1 -1
  956. package/PostProcesses/thinSSAO2CombinePostProcess.js +2 -2
  957. package/PostProcesses/thinSSAO2CombinePostProcess.js.map +1 -1
  958. package/PostProcesses/thinSSAO2PostProcess.d.ts +7 -2
  959. package/PostProcesses/thinSSAO2PostProcess.js +36 -4
  960. package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
  961. package/PostProcesses/thinSSRBlurCombinerPostProcess.d.ts +1 -1
  962. package/PostProcesses/thinSSRBlurCombinerPostProcess.js +2 -2
  963. package/PostProcesses/thinSSRBlurCombinerPostProcess.js.map +1 -1
  964. package/PostProcesses/thinSSRBlurPostProcess.d.ts +2 -2
  965. package/PostProcesses/thinSSRBlurPostProcess.js +2 -2
  966. package/PostProcesses/thinSSRBlurPostProcess.js.map +1 -1
  967. package/PostProcesses/thinSSRPostProcess.d.ts +1 -1
  968. package/PostProcesses/thinSSRPostProcess.js +2 -2
  969. package/PostProcesses/thinSSRPostProcess.js.map +1 -1
  970. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.d.ts +1 -1
  971. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js +1 -1
  972. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js.map +1 -1
  973. package/PostProcesses/thinSharpenPostProcess.d.ts +1 -1
  974. package/PostProcesses/thinSharpenPostProcess.js +1 -1
  975. package/PostProcesses/thinSharpenPostProcess.js.map +1 -1
  976. package/PostProcesses/thinTAAPostProcess.d.ts +3 -3
  977. package/PostProcesses/thinTAAPostProcess.js +4 -4
  978. package/PostProcesses/thinTAAPostProcess.js.map +1 -1
  979. package/PostProcesses/thinTonemapPostProcess.d.ts +1 -1
  980. package/PostProcesses/thinTonemapPostProcess.js +1 -1
  981. package/PostProcesses/thinTonemapPostProcess.js.map +1 -1
  982. package/PostProcesses/vrDistortionCorrectionPostProcess.d.ts +1 -1
  983. package/PostProcesses/vrDistortionCorrectionPostProcess.js +3 -3
  984. package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
  985. package/Rendering/IBLShadows/iblShadowsAccumulationPass.d.ts +2 -2
  986. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js +4 -4
  987. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js.map +1 -1
  988. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.d.ts +2 -2
  989. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js +4 -4
  990. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js.map +1 -1
  991. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +3 -3
  992. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +4 -4
  993. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  994. package/Rendering/depthPeelingRenderer.d.ts +1 -1
  995. package/Rendering/depthPeelingRenderer.js +2 -2
  996. package/Rendering/depthPeelingRenderer.js.map +1 -1
  997. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +1 -1
  998. package/Rendering/fluidRenderer/fluidRenderingObject.js +1 -1
  999. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  1000. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +1 -1
  1001. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +2 -2
  1002. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  1003. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +3 -3
  1004. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -3
  1005. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  1006. package/Rendering/fluidRenderer/fluidRenderingTextures.d.ts +2 -2
  1007. package/Rendering/fluidRenderer/fluidRenderingTextures.js +3 -3
  1008. package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
  1009. package/Rendering/iblCdfGenerator.d.ts +3 -3
  1010. package/Rendering/iblCdfGenerator.js +5 -5
  1011. package/Rendering/iblCdfGenerator.js.map +1 -1
  1012. package/Rendering/renderingGroup.js +1 -1
  1013. package/Rendering/renderingGroup.js.map +1 -1
  1014. package/Rendering/subSurfaceConfiguration.d.ts +2 -2
  1015. package/Rendering/subSurfaceConfiguration.js +2 -2
  1016. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  1017. package/Rendering/utilityLayerRenderer.d.ts +2 -2
  1018. package/Rendering/utilityLayerRenderer.js +4 -4
  1019. package/Rendering/utilityLayerRenderer.js.map +1 -1
  1020. package/Shaders/greasedLine.vertex.js +19 -3
  1021. package/Shaders/greasedLine.vertex.js.map +1 -1
  1022. package/Shaders/ssao2.fragment.js +10 -2
  1023. package/Shaders/ssao2.fragment.js.map +1 -1
  1024. package/ShadersWGSL/ssao2.fragment.js +10 -2
  1025. package/ShadersWGSL/ssao2.fragment.js.map +1 -1
  1026. package/SmartAssets/smartAssetSerializer.js +1 -1
  1027. package/SmartAssets/smartAssetSerializer.js.map +1 -1
  1028. package/Sprites/sprite.d.ts +2 -2
  1029. package/Sprites/sprite.js +2 -2
  1030. package/Sprites/sprite.js.map +1 -1
  1031. package/Sprites/spriteManager.d.ts +2 -2
  1032. package/Sprites/spriteManager.js +4 -5
  1033. package/Sprites/spriteManager.js.map +1 -1
  1034. package/Sprites/spritePackedManager.js +1 -1
  1035. package/Sprites/spritePackedManager.js.map +1 -1
  1036. package/Sprites/spriteRenderer.js +2 -2
  1037. package/Sprites/spriteRenderer.js.map +1 -1
  1038. package/XR/features/WebXRHitTestLegacy.d.ts +1 -1
  1039. package/XR/features/WebXRHitTestLegacy.js +2 -2
  1040. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  1041. package/XR/motionController/webXRAbstractMotionController.js +2 -2
  1042. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  1043. package/XR/motionController/webXRGenericMotionController.js +2 -2
  1044. package/XR/motionController/webXRGenericMotionController.js.map +1 -1
  1045. package/XR/motionController/webXRProfiledMotionController.js +4 -4
  1046. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  1047. package/XR/webXRCamera.d.ts +3 -3
  1048. package/XR/webXRCamera.js +4 -4
  1049. package/XR/webXRCamera.js.map +1 -1
  1050. package/XR/webXRDefaultExperience.d.ts +4 -4
  1051. package/XR/webXRDefaultExperience.js +4 -4
  1052. package/XR/webXRDefaultExperience.js.map +1 -1
  1053. package/XR/webXREnterExitUI.js +1 -1
  1054. package/XR/webXREnterExitUI.js.map +1 -1
  1055. package/XR/webXRExperienceHelper.js +2 -2
  1056. package/XR/webXRExperienceHelper.js.map +1 -1
  1057. package/XR/webXRFeaturesManager.d.ts +47 -0
  1058. package/XR/webXRFeaturesManager.js +1 -1
  1059. package/XR/webXRFeaturesManager.js.map +1 -1
  1060. package/XR/webXRInput.js +1 -1
  1061. package/XR/webXRInput.js.map +1 -1
  1062. package/XR/webXRInputSource.js +4 -4
  1063. package/XR/webXRInputSource.js.map +1 -1
  1064. package/XR/webXRManagedOutputCanvas.js +1 -1
  1065. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  1066. package/XR/webXRRenderTargetTextureProvider.d.ts +1 -1
  1067. package/XR/webXRRenderTargetTextureProvider.js +1 -1
  1068. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  1069. package/assetContainer.d.ts +4 -4
  1070. package/assetContainer.js +6 -6
  1071. package/assetContainer.js.map +1 -1
  1072. package/node.d.ts +1 -1
  1073. package/node.js +6 -2
  1074. package/node.js.map +1 -1
  1075. package/package.json +46 -175
  1076. package/scene.pure.d.ts +12 -0
  1077. package/scene.pure.js +36 -0
  1078. package/scene.pure.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"packer.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Textures/Packer/packer.ts"],"names":[],"mappings":"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","sourcesContent":["import { type AbstractMesh } from \"../../../Meshes/abstractMesh\";\r\nimport { VertexBuffer } from \"../../../Buffers/buffer\";\r\nimport { type Scene } from \"../../../scene\";\r\nimport { type Material } from \"../../material\";\r\nimport { Texture } from \"../texture\";\r\nimport { DynamicTexture } from \"../dynamicTexture\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { Vector2 } from \"../../../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../../../Maths/math.color\";\r\nimport { TexturePackerFrame } from \"./frame\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { Tools } from \"../../../Misc/tools\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\n/**\r\n * Defines the basic options interface of a TexturePacker\r\n */\r\nexport interface ITexturePackerOptions {\r\n /**\r\n * Custom targets for the channels of a texture packer. Default is all the channels of the Standard Material\r\n */\r\n map?: string[];\r\n\r\n /**\r\n * the UV input targets, as a single value for all meshes. Defaults to VertexBuffer.UVKind\r\n */\r\n uvsIn?: string;\r\n\r\n /**\r\n * the UV output targets, as a single value for all meshes. Defaults to VertexBuffer.UVKind\r\n */\r\n uvsOut?: string;\r\n\r\n /**\r\n * number representing the layout style. Defaults to LAYOUT_STRIP\r\n */\r\n layout?: number;\r\n\r\n /**\r\n * number of columns if using custom column count layout(2). This defaults to 4.\r\n */\r\n colnum?: number;\r\n\r\n /**\r\n * flag to update the input meshes to the new packed texture after compilation. Defaults to true.\r\n */\r\n updateInputMeshes?: boolean;\r\n\r\n /**\r\n * boolean flag to dispose all the source textures. Defaults to true.\r\n */\r\n disposeSources?: boolean;\r\n\r\n /**\r\n * Fills the blank cells in a set to the customFillColor. Defaults to true.\r\n */\r\n fillBlanks?: boolean;\r\n\r\n /**\r\n * string value representing the context fill style color. Defaults to 'black'.\r\n */\r\n customFillColor?: string;\r\n\r\n /**\r\n * Width and Height Value of each Frame in the TexturePacker Sets\r\n */\r\n frameSize?: number;\r\n\r\n /**\r\n * Ratio of the value to add padding wise to each cell. Defaults to 0.0115\r\n */\r\n paddingRatio?: number;\r\n\r\n /**\r\n * Number that declares the fill method for the padding gutter.\r\n */\r\n paddingMode?: number;\r\n\r\n /**\r\n * If in SUBUV_COLOR padding mode what color to use.\r\n */\r\n paddingColor?: Color3 | Color4;\r\n}\r\n\r\n/**\r\n * Defines the basic interface of a TexturePacker JSON File\r\n */\r\nexport interface ITexturePackerJSON {\r\n /**\r\n * The frame ID\r\n */\r\n name: string;\r\n\r\n /**\r\n * The base64 channel data\r\n */\r\n sets: any;\r\n\r\n /**\r\n * The options of the Packer\r\n */\r\n options: ITexturePackerOptions;\r\n\r\n /**\r\n * The frame data of the Packer\r\n */\r\n frames: Array<number>;\r\n}\r\n\r\n/**\r\n * This is a support class that generates a series of packed texture sets.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction\r\n */\r\nexport class TexturePacker {\r\n /** Packer Layout Constant 0 */\r\n public static readonly LAYOUT_STRIP = 0;\r\n /** Packer Layout Constant 1 */\r\n public static readonly LAYOUT_POWER2 = 1;\r\n /** Packer Layout Constant 2 */\r\n public static readonly LAYOUT_COLNUM = 2;\r\n\r\n /** Packer Layout Constant 0 */\r\n public static readonly SUBUV_WRAP = 0;\r\n /** Packer Layout Constant 1 */\r\n public static readonly SUBUV_EXTEND = 1;\r\n /** Packer Layout Constant 2 */\r\n public static readonly SUBUV_COLOR = 2;\r\n\r\n /** The Name of the Texture Package */\r\n public name: string;\r\n\r\n /** The scene scope of the TexturePacker */\r\n public scene: Scene;\r\n\r\n /** The Meshes to target */\r\n public meshes: AbstractMesh[];\r\n\r\n /** Arguments passed with the Constructor */\r\n public options: ITexturePackerOptions;\r\n\r\n /** The promise that is started upon initialization */\r\n public promise: Nullable<Promise<TexturePacker | string>>;\r\n\r\n /** The Container object for the channel sets that are generated */\r\n public sets: object;\r\n\r\n /** The Container array for the frames that are generated */\r\n public frames: TexturePackerFrame[];\r\n\r\n /** The expected number of textures the system is parsing. */\r\n private _expecting: number;\r\n\r\n /** The padding value from Math.ceil(frameSize * paddingRatio) */\r\n private _paddingValue: number;\r\n\r\n /**\r\n * Initializes a texture package series from an array of meshes or a single mesh.\r\n * @param name The name of the package\r\n * @param meshes The target meshes to compose the package from\r\n * @param options The arguments that texture packer should follow while building.\r\n * @param scene The scene which the textures are scoped to.\r\n * @returns TexturePacker\r\n */\r\n constructor(name: string, meshes: AbstractMesh[], options: ITexturePackerOptions, scene: Scene) {\r\n this.name = name;\r\n this.meshes = meshes;\r\n this.scene = scene;\r\n\r\n /**\r\n * Run through the options and set what ever defaults are needed that where not declared.\r\n */\r\n this.options = options;\r\n this.options.map = this.options.map ?? [\r\n \"ambientTexture\",\r\n \"bumpTexture\",\r\n \"diffuseTexture\",\r\n \"emissiveTexture\",\r\n \"lightmapTexture\",\r\n \"opacityTexture\",\r\n \"reflectionTexture\",\r\n \"refractionTexture\",\r\n \"specularTexture\",\r\n ];\r\n\r\n this.options.uvsIn = this.options.uvsIn ?? VertexBuffer.UVKind;\r\n this.options.uvsOut = this.options.uvsOut ?? VertexBuffer.UVKind;\r\n this.options.layout = this.options.layout ?? TexturePacker.LAYOUT_STRIP;\r\n\r\n if (this.options.layout === TexturePacker.LAYOUT_COLNUM) {\r\n this.options.colnum = this.options.colnum ?? 8;\r\n }\r\n\r\n this.options.updateInputMeshes = this.options.updateInputMeshes ?? true;\r\n this.options.disposeSources = this.options.disposeSources ?? true;\r\n this._expecting = 0;\r\n\r\n this.options.fillBlanks = this.options.fillBlanks ?? true;\r\n\r\n if (this.options.fillBlanks === true) {\r\n this.options.customFillColor = this.options.customFillColor ?? \"black\";\r\n }\r\n\r\n this.options.frameSize = this.options.frameSize ?? 256;\r\n this.options.paddingRatio = this.options.paddingRatio ?? 0.0115;\r\n\r\n this._paddingValue = Math.ceil(this.options.frameSize * this.options.paddingRatio);\r\n\r\n //Make it an even padding Number.\r\n if (this._paddingValue % 2 !== 0) {\r\n this._paddingValue++;\r\n }\r\n\r\n this.options.paddingMode = this.options.paddingMode ?? TexturePacker.SUBUV_WRAP;\r\n\r\n if (this.options.paddingMode === TexturePacker.SUBUV_COLOR) {\r\n this.options.paddingColor = this.options.paddingColor ?? new Color4(0, 0, 0, 1.0);\r\n }\r\n\r\n this.sets = {};\r\n this.frames = [];\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Starts the package process\r\n * @param resolve The promises resolution function\r\n */\r\n private _createFrames(resolve: () => void) {\r\n const dtSize = this._calculateSize();\r\n const dtUnits = new Vector2(1, 1).divide(dtSize);\r\n let doneCount = 0;\r\n const expecting = this._expecting;\r\n const meshLength = this.meshes.length;\r\n\r\n const sKeys = Object.keys(this.sets);\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const setName = sKeys[i];\r\n\r\n const dt = new DynamicTexture(\r\n this.name + \".TexturePack.\" + setName + \"Set\",\r\n { width: dtSize.x, height: dtSize.y },\r\n this.scene,\r\n true, //Generate Mips\r\n Texture.TRILINEAR_SAMPLINGMODE,\r\n Constants.TEXTUREFORMAT_RGBA\r\n );\r\n\r\n const dtx = dt.getContext();\r\n dtx.fillStyle = \"rgba(0,0,0,0)\";\r\n dtx.fillRect(0, 0, dtSize.x, dtSize.y);\r\n dt.update(false);\r\n (this.sets as any)[setName] = dt;\r\n }\r\n\r\n const baseSize = this.options.frameSize || 256;\r\n const padding = this._paddingValue;\r\n const tcs = baseSize + 2 * padding;\r\n\r\n const done = () => {\r\n this._calculateMeshUVFrames(baseSize, padding, dtSize, dtUnits, this.options.updateInputMeshes || false);\r\n };\r\n\r\n //Update the Textures\r\n for (let i = 0; i < meshLength; i++) {\r\n const m = this.meshes[i];\r\n const mat = m.material;\r\n\r\n //Check if the material has the texture\r\n //Create a temporary canvas the same size as 1 frame\r\n //Then apply the texture to the center and the 8 offsets\r\n //Copy the Context and place in the correct frame on the DT\r\n\r\n for (let j = 0; j < sKeys.length; j++) {\r\n const tempTexture = new DynamicTexture(\"temp\", tcs, this.scene, true);\r\n const tcx = tempTexture.getContext();\r\n const offset = this._getFrameOffset(i);\r\n\r\n const updateDt = () => {\r\n doneCount++;\r\n tempTexture.update(false);\r\n const iDat = tcx.getImageData(0, 0, tcs, tcs);\r\n\r\n //Update Set\r\n const dt = (this.sets as any)[setName];\r\n const dtx = dt.getContext();\r\n dtx.putImageData(iDat, dtSize.x * offset.x, dtSize.y * offset.y);\r\n tempTexture.dispose();\r\n dt.update(false);\r\n if (doneCount == expecting) {\r\n done();\r\n resolve();\r\n return;\r\n }\r\n };\r\n\r\n const setName = sKeys[j] || \"_blank\";\r\n if (!mat || (mat as any)[setName] === null) {\r\n tcx.fillStyle = \"rgba(0,0,0,0)\";\r\n\r\n if (this.options.fillBlanks) {\r\n tcx.fillStyle = this.options.customFillColor as string;\r\n }\r\n\r\n tcx.fillRect(0, 0, tcs, tcs);\r\n\r\n updateDt();\r\n } else {\r\n const setTexture = (mat as any)[setName];\r\n const img = new Image();\r\n\r\n if (setTexture instanceof DynamicTexture) {\r\n img.src = setTexture.getContext().canvas.toDataURL(\"image/png\");\r\n } else {\r\n img.src = setTexture!.url;\r\n }\r\n Tools.SetCorsBehavior(img.src, img);\r\n\r\n img.onload = () => {\r\n tcx.fillStyle = \"rgba(0,0,0,0)\";\r\n tcx.fillRect(0, 0, tcs, tcs);\r\n tempTexture.update(false);\r\n\r\n tcx.setTransform(1, 0, 0, -1, 0, 0);\r\n const cellOffsets = [0, 0, 1, 0, 1, 1, 0, 1, -1, 1, -1, 0, -1 - 1, 0, -1, 1, -1];\r\n\r\n switch (this.options.paddingMode) {\r\n //Wrap Mode\r\n case 0:\r\n for (let i = 0; i < 9; i++) {\r\n tcx.drawImage(\r\n img,\r\n 0,\r\n 0,\r\n img.width,\r\n img.height,\r\n padding + baseSize * cellOffsets[i],\r\n padding + baseSize * cellOffsets[i + 1] - tcs,\r\n baseSize,\r\n baseSize\r\n );\r\n }\r\n break;\r\n //Extend Mode\r\n case 1:\r\n for (let i = 0; i < padding; i++) {\r\n tcx.drawImage(img, 0, 0, img.width, img.height, i + baseSize * cellOffsets[0], padding - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding * 2 - i, padding - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding, i - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding, padding * 2 - i - tcs, baseSize, baseSize);\r\n }\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding + baseSize * cellOffsets[0], padding + baseSize * cellOffsets[1] - tcs, baseSize, baseSize);\r\n\r\n break;\r\n //Color Mode\r\n case 2:\r\n tcx.fillStyle = (this.options.paddingColor || Color3.Black()).toHexString();\r\n tcx.fillRect(0, 0, tcs, -tcs);\r\n tcx.clearRect(padding, padding, baseSize, baseSize);\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding + baseSize * cellOffsets[0], padding + baseSize * cellOffsets[1] - tcs, baseSize, baseSize);\r\n\r\n break;\r\n }\r\n\r\n tcx.setTransform(1, 0, 0, 1, 0, 0);\r\n\r\n updateDt();\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the Size of the Channel Sets\r\n * @returns Vector2\r\n */\r\n private _calculateSize(): Vector2 {\r\n const meshLength: number = this.meshes.length || 0;\r\n const baseSize: number = this.options.frameSize || 0;\r\n const padding: number = this._paddingValue || 0;\r\n\r\n switch (this.options.layout) {\r\n case 0: {\r\n //STRIP_LAYOUT\r\n return new Vector2(baseSize * meshLength + 2 * padding * meshLength, baseSize + 2 * padding);\r\n }\r\n case 1: {\r\n //POWER2\r\n const sqrtCount = Math.max(2, Math.ceil(Math.sqrt(meshLength)));\r\n const size = baseSize * sqrtCount + 2 * padding * sqrtCount;\r\n return new Vector2(size, size);\r\n }\r\n case 2: {\r\n //COLNUM\r\n const cols = this.options.colnum || 1;\r\n const rowCnt = Math.max(1, Math.ceil(meshLength / cols));\r\n return new Vector2(baseSize * cols + 2 * padding * cols, baseSize * rowCnt + 2 * padding * rowCnt);\r\n }\r\n }\r\n\r\n return Vector2.Zero();\r\n }\r\n\r\n /**\r\n * Calculates the UV data for the frames.\r\n * @param baseSize the base frameSize\r\n * @param padding the base frame padding\r\n * @param dtSize size of the Dynamic Texture for that channel\r\n * @param dtUnits is 1/dtSize\r\n * @param update flag to update the input meshes\r\n */\r\n private _calculateMeshUVFrames(baseSize: number, padding: number, dtSize: Vector2, dtUnits: Vector2, update: boolean) {\r\n const meshLength = this.meshes.length;\r\n\r\n for (let i = 0; i < meshLength; i++) {\r\n const m = this.meshes[i];\r\n\r\n const scale = new Vector2(baseSize / dtSize.x, baseSize / dtSize.y);\r\n\r\n const pOffset: Vector2 = dtUnits.clone().scale(padding);\r\n const frameOffset: Vector2 = this._getFrameOffset(i);\r\n const offset: Vector2 = frameOffset.add(pOffset);\r\n\r\n const frame: TexturePackerFrame = new TexturePackerFrame(i, scale, offset);\r\n\r\n this.frames.push(frame);\r\n\r\n //Update Output UVs\r\n if (update) {\r\n this._updateMeshUV(m, i);\r\n this._updateTextureReferences(m);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the frames Offset.\r\n * @param index of the frame\r\n * @returns Vector2\r\n */\r\n private _getFrameOffset(index: number): Vector2 {\r\n const meshLength = this.meshes.length;\r\n let uvStep, yStep, xStep;\r\n\r\n switch (this.options.layout) {\r\n case 0: {\r\n //STRIP_LAYOUT\r\n uvStep = 1 / meshLength;\r\n return new Vector2(index * uvStep, 0);\r\n }\r\n case 1: {\r\n //POWER2\r\n const sqrtCount = Math.max(2, Math.ceil(Math.sqrt(meshLength)));\r\n yStep = Math.floor(index / sqrtCount);\r\n xStep = index - yStep * sqrtCount;\r\n uvStep = 1 / sqrtCount;\r\n return new Vector2(xStep * uvStep, yStep * uvStep);\r\n }\r\n case 2: {\r\n //COLNUM\r\n const cols = this.options.colnum || 1;\r\n const rowCnt = Math.max(1, Math.ceil(meshLength / cols));\r\n xStep = Math.floor(index / rowCnt);\r\n yStep = index - xStep * rowCnt;\r\n uvStep = new Vector2(1 / cols, 1 / rowCnt);\r\n return new Vector2(xStep * uvStep.x, yStep * uvStep.y);\r\n }\r\n }\r\n\r\n return Vector2.Zero();\r\n }\r\n\r\n /**\r\n * Updates a Mesh to the frame data\r\n * @param mesh that is the target\r\n * @param frameID or the frame index\r\n */\r\n private _updateMeshUV(mesh: AbstractMesh, frameID: number): void {\r\n const frame: TexturePackerFrame = (this.frames as any)[frameID];\r\n const uvIn = mesh.getVerticesData(this.options.uvsIn || VertexBuffer.UVKind);\r\n const uvOut = [];\r\n let toCount = 0;\r\n\r\n if (uvIn!.length) {\r\n toCount = uvIn!.length || 0;\r\n }\r\n\r\n for (let i = 0; i < toCount; i += 2) {\r\n uvOut.push((uvIn as any)[i] * frame.scale.x + frame.offset.x, (uvIn as any)[i + 1] * frame.scale.y + frame.offset.y);\r\n }\r\n\r\n mesh.setVerticesData(this.options.uvsOut || VertexBuffer.UVKind, uvOut);\r\n }\r\n\r\n /**\r\n * Updates a Meshes materials to use the texture packer channels\r\n * @param m is the mesh to target\r\n * @param force all channels on the packer to be set.\r\n */\r\n private _updateTextureReferences(m: AbstractMesh, force: boolean = false): void {\r\n const mat = m.material;\r\n const sKeys = Object.keys(this.sets);\r\n\r\n const _dispose = (_t: any) => {\r\n if (_t.dispose) {\r\n _t.dispose();\r\n }\r\n };\r\n\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const setName = sKeys[i];\r\n if (!force) {\r\n if (!mat) {\r\n return;\r\n }\r\n if ((mat as any)[setName] !== null) {\r\n _dispose((mat as any)[setName]);\r\n (mat as any)[setName] = (this.sets as any)[setName];\r\n }\r\n } else {\r\n if ((mat as any)[setName] !== null) {\r\n _dispose((mat as any)[setName]);\r\n }\r\n (mat as any)[setName] = (this.sets as any)[setName];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public method to set a Mesh to a frame\r\n * @param m that is the target\r\n * @param frameID or the frame index\r\n * @param updateMaterial trigger for if the Meshes attached Material be updated?\r\n */\r\n public setMeshToFrame(m: AbstractMesh, frameID: number, updateMaterial: boolean = false): void {\r\n this._updateMeshUV(m, frameID);\r\n if (updateMaterial) {\r\n this._updateTextureReferences(m, true);\r\n }\r\n }\r\n\r\n /**\r\n * Starts the async promise to compile the texture packer.\r\n * @returns Promise<void>\r\n */\r\n public async processAsync(): Promise<void> {\r\n return await new Promise((resolve, reject) => {\r\n try {\r\n if (this.meshes.length === 0) {\r\n //Must be a JSON load!\r\n resolve();\r\n return;\r\n }\r\n let done = 0;\r\n const doneCheck = (mat: Material) => {\r\n done++;\r\n //Check Status of all Textures on all meshes, till they are ready.\r\n if (this.options.map) {\r\n for (let j = 0; j < this.options.map.length; j++) {\r\n const index: string = this.options.map[j];\r\n const t: Texture | DynamicTexture = (mat as any)[index];\r\n\r\n if (t !== null) {\r\n if (!(this.sets as any)[this.options.map[j]]) {\r\n (this.sets as any)[this.options.map[j]] = true;\r\n }\r\n\r\n this._expecting++;\r\n }\r\n }\r\n\r\n if (done === this.meshes.length) {\r\n this._createFrames(resolve);\r\n }\r\n }\r\n };\r\n\r\n for (let i = 0; i < this.meshes.length; i++) {\r\n const mesh = this.meshes[i];\r\n const material: Nullable<Material> = mesh.material;\r\n\r\n if (!material) {\r\n done++;\r\n if (done === this.meshes.length) {\r\n return this._createFrames(resolve);\r\n }\r\n continue;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises, github/no-then\r\n material.forceCompilationAsync(mesh).then(() => {\r\n doneCheck(material);\r\n });\r\n }\r\n } catch (e) {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n return reject(e);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Disposes all textures associated with this packer\r\n */\r\n public dispose(): void {\r\n const sKeys = Object.keys(this.sets);\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const channel = sKeys[i];\r\n (this.sets as any)[channel].dispose();\r\n }\r\n }\r\n\r\n /**\r\n * Starts the download process for all the channels converting them to base64 data and embedding it all in a JSON file.\r\n * @param imageType is the image type to use.\r\n * @param quality of the image if downloading as jpeg, Ranges from >0 to 1.\r\n */\r\n public download(imageType: string = \"png\", quality: number = 1): void {\r\n setTimeout(() => {\r\n const pack = {\r\n name: this.name,\r\n sets: {},\r\n options: {},\r\n frames: [],\r\n };\r\n\r\n const sKeys = Object.keys(this.sets);\r\n const oKeys = Object.keys(this.options);\r\n try {\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const channel: string = sKeys[i];\r\n const dt = (this.sets as any)[channel];\r\n (pack.sets as any)[channel] = dt.getContext().canvas.toDataURL(\"image/\" + imageType, quality);\r\n }\r\n for (let i = 0; i < oKeys.length; i++) {\r\n const opt: string = oKeys[i];\r\n (pack.options as any)[opt] = (this.options as any)[opt];\r\n }\r\n for (let i = 0; i < this.frames.length; i++) {\r\n const _f = this.frames[i];\r\n (pack.frames as Array<number>).push(_f.scale.x, _f.scale.y, _f.offset.x, _f.offset.y);\r\n }\r\n } catch (err) {\r\n Logger.Warn(\"Unable to download: \" + err);\r\n return;\r\n }\r\n\r\n const data = \"data:text/json;charset=utf-8,\" + encodeURIComponent(JSON.stringify(pack, null, 4));\r\n const _a = document.createElement(\"a\");\r\n _a.setAttribute(\"href\", data);\r\n _a.setAttribute(\"download\", this.name + \"_texurePackage.json\");\r\n document.body.appendChild(_a);\r\n _a.click();\r\n _a.remove();\r\n }, 0);\r\n }\r\n\r\n /**\r\n * Public method to load a texturePacker JSON file.\r\n * @param data of the JSON file in string format.\r\n */\r\n public updateFromJSON(data: string): void {\r\n try {\r\n const parsedData: ITexturePackerJSON = JSON.parse(data);\r\n this.name = parsedData.name;\r\n const _options = Object.keys(parsedData.options);\r\n\r\n for (let i = 0; i < _options.length; i++) {\r\n (this.options as any)[_options[i]] = (parsedData.options as any)[_options[i]];\r\n }\r\n\r\n for (let i = 0; i < parsedData.frames.length; i += 4) {\r\n const frame: TexturePackerFrame = new TexturePackerFrame(\r\n i / 4,\r\n new Vector2(parsedData.frames[i], parsedData.frames[i + 1]),\r\n new Vector2(parsedData.frames[i + 2], parsedData.frames[i + 3])\r\n );\r\n this.frames.push(frame);\r\n }\r\n\r\n const channels = Object.keys(parsedData.sets);\r\n\r\n for (let i = 0; i < channels.length; i++) {\r\n const _t = new Texture(parsedData.sets[channels[i]], this.scene, false, false);\r\n (this.sets as any)[channels[i]] = _t;\r\n }\r\n } catch (err) {\r\n Logger.Warn(\"Unable to update from JSON: \" + err);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"packer.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Textures/Packer/packer.ts"],"names":[],"mappings":"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","sourcesContent":["import { type AbstractMesh } from \"../../../Meshes/abstractMesh\";\r\nimport { VertexBuffer } from \"../../../Buffers/buffer.pure\";\r\nimport { type Scene } from \"../../../scene\";\r\nimport { type Material } from \"../../material\";\r\nimport { Texture } from \"../texture.pure\";\r\nimport { DynamicTexture } from \"../dynamicTexture.pure\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { Vector2 } from \"../../../Maths/math.vector.pure\";\r\nimport { Color3, Color4 } from \"../../../Maths/math.color.pure\";\r\nimport { TexturePackerFrame } from \"./frame\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { Tools } from \"../../../Misc/tools.pure\";\r\nimport { Constants } from \"core/Engines/constants\";\r\n\r\n/**\r\n * Defines the basic options interface of a TexturePacker\r\n */\r\nexport interface ITexturePackerOptions {\r\n /**\r\n * Custom targets for the channels of a texture packer. Default is all the channels of the Standard Material\r\n */\r\n map?: string[];\r\n\r\n /**\r\n * the UV input targets, as a single value for all meshes. Defaults to VertexBuffer.UVKind\r\n */\r\n uvsIn?: string;\r\n\r\n /**\r\n * the UV output targets, as a single value for all meshes. Defaults to VertexBuffer.UVKind\r\n */\r\n uvsOut?: string;\r\n\r\n /**\r\n * number representing the layout style. Defaults to LAYOUT_STRIP\r\n */\r\n layout?: number;\r\n\r\n /**\r\n * number of columns if using custom column count layout(2). This defaults to 4.\r\n */\r\n colnum?: number;\r\n\r\n /**\r\n * flag to update the input meshes to the new packed texture after compilation. Defaults to true.\r\n */\r\n updateInputMeshes?: boolean;\r\n\r\n /**\r\n * boolean flag to dispose all the source textures. Defaults to true.\r\n */\r\n disposeSources?: boolean;\r\n\r\n /**\r\n * Fills the blank cells in a set to the customFillColor. Defaults to true.\r\n */\r\n fillBlanks?: boolean;\r\n\r\n /**\r\n * string value representing the context fill style color. Defaults to 'black'.\r\n */\r\n customFillColor?: string;\r\n\r\n /**\r\n * Width and Height Value of each Frame in the TexturePacker Sets\r\n */\r\n frameSize?: number;\r\n\r\n /**\r\n * Ratio of the value to add padding wise to each cell. Defaults to 0.0115\r\n */\r\n paddingRatio?: number;\r\n\r\n /**\r\n * Number that declares the fill method for the padding gutter.\r\n */\r\n paddingMode?: number;\r\n\r\n /**\r\n * If in SUBUV_COLOR padding mode what color to use.\r\n */\r\n paddingColor?: Color3 | Color4;\r\n}\r\n\r\n/**\r\n * Defines the basic interface of a TexturePacker JSON File\r\n */\r\nexport interface ITexturePackerJSON {\r\n /**\r\n * The frame ID\r\n */\r\n name: string;\r\n\r\n /**\r\n * The base64 channel data\r\n */\r\n sets: any;\r\n\r\n /**\r\n * The options of the Packer\r\n */\r\n options: ITexturePackerOptions;\r\n\r\n /**\r\n * The frame data of the Packer\r\n */\r\n frames: Array<number>;\r\n}\r\n\r\n/**\r\n * This is a support class that generates a series of packed texture sets.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction\r\n */\r\nexport class TexturePacker {\r\n /** Packer Layout Constant 0 */\r\n public static readonly LAYOUT_STRIP = 0;\r\n /** Packer Layout Constant 1 */\r\n public static readonly LAYOUT_POWER2 = 1;\r\n /** Packer Layout Constant 2 */\r\n public static readonly LAYOUT_COLNUM = 2;\r\n\r\n /** Packer Layout Constant 0 */\r\n public static readonly SUBUV_WRAP = 0;\r\n /** Packer Layout Constant 1 */\r\n public static readonly SUBUV_EXTEND = 1;\r\n /** Packer Layout Constant 2 */\r\n public static readonly SUBUV_COLOR = 2;\r\n\r\n /** The Name of the Texture Package */\r\n public name: string;\r\n\r\n /** The scene scope of the TexturePacker */\r\n public scene: Scene;\r\n\r\n /** The Meshes to target */\r\n public meshes: AbstractMesh[];\r\n\r\n /** Arguments passed with the Constructor */\r\n public options: ITexturePackerOptions;\r\n\r\n /** The promise that is started upon initialization */\r\n public promise: Nullable<Promise<TexturePacker | string>>;\r\n\r\n /** The Container object for the channel sets that are generated */\r\n public sets: object;\r\n\r\n /** The Container array for the frames that are generated */\r\n public frames: TexturePackerFrame[];\r\n\r\n /** The expected number of textures the system is parsing. */\r\n private _expecting: number;\r\n\r\n /** The padding value from Math.ceil(frameSize * paddingRatio) */\r\n private _paddingValue: number;\r\n\r\n /**\r\n * Initializes a texture package series from an array of meshes or a single mesh.\r\n * @param name The name of the package\r\n * @param meshes The target meshes to compose the package from\r\n * @param options The arguments that texture packer should follow while building.\r\n * @param scene The scene which the textures are scoped to.\r\n * @returns TexturePacker\r\n */\r\n constructor(name: string, meshes: AbstractMesh[], options: ITexturePackerOptions, scene: Scene) {\r\n this.name = name;\r\n this.meshes = meshes;\r\n this.scene = scene;\r\n\r\n /**\r\n * Run through the options and set what ever defaults are needed that where not declared.\r\n */\r\n this.options = options;\r\n this.options.map = this.options.map ?? [\r\n \"ambientTexture\",\r\n \"bumpTexture\",\r\n \"diffuseTexture\",\r\n \"emissiveTexture\",\r\n \"lightmapTexture\",\r\n \"opacityTexture\",\r\n \"reflectionTexture\",\r\n \"refractionTexture\",\r\n \"specularTexture\",\r\n ];\r\n\r\n this.options.uvsIn = this.options.uvsIn ?? VertexBuffer.UVKind;\r\n this.options.uvsOut = this.options.uvsOut ?? VertexBuffer.UVKind;\r\n this.options.layout = this.options.layout ?? TexturePacker.LAYOUT_STRIP;\r\n\r\n if (this.options.layout === TexturePacker.LAYOUT_COLNUM) {\r\n this.options.colnum = this.options.colnum ?? 8;\r\n }\r\n\r\n this.options.updateInputMeshes = this.options.updateInputMeshes ?? true;\r\n this.options.disposeSources = this.options.disposeSources ?? true;\r\n this._expecting = 0;\r\n\r\n this.options.fillBlanks = this.options.fillBlanks ?? true;\r\n\r\n if (this.options.fillBlanks === true) {\r\n this.options.customFillColor = this.options.customFillColor ?? \"black\";\r\n }\r\n\r\n this.options.frameSize = this.options.frameSize ?? 256;\r\n this.options.paddingRatio = this.options.paddingRatio ?? 0.0115;\r\n\r\n this._paddingValue = Math.ceil(this.options.frameSize * this.options.paddingRatio);\r\n\r\n //Make it an even padding Number.\r\n if (this._paddingValue % 2 !== 0) {\r\n this._paddingValue++;\r\n }\r\n\r\n this.options.paddingMode = this.options.paddingMode ?? TexturePacker.SUBUV_WRAP;\r\n\r\n if (this.options.paddingMode === TexturePacker.SUBUV_COLOR) {\r\n this.options.paddingColor = this.options.paddingColor ?? new Color4(0, 0, 0, 1.0);\r\n }\r\n\r\n this.sets = {};\r\n this.frames = [];\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Starts the package process\r\n * @param resolve The promises resolution function\r\n */\r\n private _createFrames(resolve: () => void) {\r\n const dtSize = this._calculateSize();\r\n const dtUnits = new Vector2(1, 1).divide(dtSize);\r\n let doneCount = 0;\r\n const expecting = this._expecting;\r\n const meshLength = this.meshes.length;\r\n\r\n const sKeys = Object.keys(this.sets);\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const setName = sKeys[i];\r\n\r\n const dt = new DynamicTexture(\r\n this.name + \".TexturePack.\" + setName + \"Set\",\r\n { width: dtSize.x, height: dtSize.y },\r\n this.scene,\r\n true, //Generate Mips\r\n Texture.TRILINEAR_SAMPLINGMODE,\r\n Constants.TEXTUREFORMAT_RGBA\r\n );\r\n\r\n const dtx = dt.getContext();\r\n dtx.fillStyle = \"rgba(0,0,0,0)\";\r\n dtx.fillRect(0, 0, dtSize.x, dtSize.y);\r\n dt.update(false);\r\n (this.sets as any)[setName] = dt;\r\n }\r\n\r\n const baseSize = this.options.frameSize || 256;\r\n const padding = this._paddingValue;\r\n const tcs = baseSize + 2 * padding;\r\n\r\n const done = () => {\r\n this._calculateMeshUVFrames(baseSize, padding, dtSize, dtUnits, this.options.updateInputMeshes || false);\r\n };\r\n\r\n //Update the Textures\r\n for (let i = 0; i < meshLength; i++) {\r\n const m = this.meshes[i];\r\n const mat = m.material;\r\n\r\n //Check if the material has the texture\r\n //Create a temporary canvas the same size as 1 frame\r\n //Then apply the texture to the center and the 8 offsets\r\n //Copy the Context and place in the correct frame on the DT\r\n\r\n for (let j = 0; j < sKeys.length; j++) {\r\n const tempTexture = new DynamicTexture(\"temp\", tcs, this.scene, true);\r\n const tcx = tempTexture.getContext();\r\n const offset = this._getFrameOffset(i);\r\n\r\n const updateDt = () => {\r\n doneCount++;\r\n tempTexture.update(false);\r\n const iDat = tcx.getImageData(0, 0, tcs, tcs);\r\n\r\n //Update Set\r\n const dt = (this.sets as any)[setName];\r\n const dtx = dt.getContext();\r\n dtx.putImageData(iDat, dtSize.x * offset.x, dtSize.y * offset.y);\r\n tempTexture.dispose();\r\n dt.update(false);\r\n if (doneCount == expecting) {\r\n done();\r\n resolve();\r\n return;\r\n }\r\n };\r\n\r\n const setName = sKeys[j] || \"_blank\";\r\n if (!mat || (mat as any)[setName] === null) {\r\n tcx.fillStyle = \"rgba(0,0,0,0)\";\r\n\r\n if (this.options.fillBlanks) {\r\n tcx.fillStyle = this.options.customFillColor as string;\r\n }\r\n\r\n tcx.fillRect(0, 0, tcs, tcs);\r\n\r\n updateDt();\r\n } else {\r\n const setTexture = (mat as any)[setName];\r\n const img = new Image();\r\n\r\n if (setTexture instanceof DynamicTexture) {\r\n img.src = setTexture.getContext().canvas.toDataURL(\"image/png\");\r\n } else {\r\n img.src = setTexture!.url;\r\n }\r\n Tools.SetCorsBehavior(img.src, img);\r\n\r\n img.onload = () => {\r\n tcx.fillStyle = \"rgba(0,0,0,0)\";\r\n tcx.fillRect(0, 0, tcs, tcs);\r\n tempTexture.update(false);\r\n\r\n tcx.setTransform(1, 0, 0, -1, 0, 0);\r\n const cellOffsets = [0, 0, 1, 0, 1, 1, 0, 1, -1, 1, -1, 0, -1 - 1, 0, -1, 1, -1];\r\n\r\n switch (this.options.paddingMode) {\r\n //Wrap Mode\r\n case 0:\r\n for (let i = 0; i < 9; i++) {\r\n tcx.drawImage(\r\n img,\r\n 0,\r\n 0,\r\n img.width,\r\n img.height,\r\n padding + baseSize * cellOffsets[i],\r\n padding + baseSize * cellOffsets[i + 1] - tcs,\r\n baseSize,\r\n baseSize\r\n );\r\n }\r\n break;\r\n //Extend Mode\r\n case 1:\r\n for (let i = 0; i < padding; i++) {\r\n tcx.drawImage(img, 0, 0, img.width, img.height, i + baseSize * cellOffsets[0], padding - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding * 2 - i, padding - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding, i - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding, padding * 2 - i - tcs, baseSize, baseSize);\r\n }\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding + baseSize * cellOffsets[0], padding + baseSize * cellOffsets[1] - tcs, baseSize, baseSize);\r\n\r\n break;\r\n //Color Mode\r\n case 2:\r\n tcx.fillStyle = (this.options.paddingColor || Color3.Black()).toHexString();\r\n tcx.fillRect(0, 0, tcs, -tcs);\r\n tcx.clearRect(padding, padding, baseSize, baseSize);\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding + baseSize * cellOffsets[0], padding + baseSize * cellOffsets[1] - tcs, baseSize, baseSize);\r\n\r\n break;\r\n }\r\n\r\n tcx.setTransform(1, 0, 0, 1, 0, 0);\r\n\r\n updateDt();\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the Size of the Channel Sets\r\n * @returns Vector2\r\n */\r\n private _calculateSize(): Vector2 {\r\n const meshLength: number = this.meshes.length || 0;\r\n const baseSize: number = this.options.frameSize || 0;\r\n const padding: number = this._paddingValue || 0;\r\n\r\n switch (this.options.layout) {\r\n case 0: {\r\n //STRIP_LAYOUT\r\n return new Vector2(baseSize * meshLength + 2 * padding * meshLength, baseSize + 2 * padding);\r\n }\r\n case 1: {\r\n //POWER2\r\n const sqrtCount = Math.max(2, Math.ceil(Math.sqrt(meshLength)));\r\n const size = baseSize * sqrtCount + 2 * padding * sqrtCount;\r\n return new Vector2(size, size);\r\n }\r\n case 2: {\r\n //COLNUM\r\n const cols = this.options.colnum || 1;\r\n const rowCnt = Math.max(1, Math.ceil(meshLength / cols));\r\n return new Vector2(baseSize * cols + 2 * padding * cols, baseSize * rowCnt + 2 * padding * rowCnt);\r\n }\r\n }\r\n\r\n return Vector2.Zero();\r\n }\r\n\r\n /**\r\n * Calculates the UV data for the frames.\r\n * @param baseSize the base frameSize\r\n * @param padding the base frame padding\r\n * @param dtSize size of the Dynamic Texture for that channel\r\n * @param dtUnits is 1/dtSize\r\n * @param update flag to update the input meshes\r\n */\r\n private _calculateMeshUVFrames(baseSize: number, padding: number, dtSize: Vector2, dtUnits: Vector2, update: boolean) {\r\n const meshLength = this.meshes.length;\r\n\r\n for (let i = 0; i < meshLength; i++) {\r\n const m = this.meshes[i];\r\n\r\n const scale = new Vector2(baseSize / dtSize.x, baseSize / dtSize.y);\r\n\r\n const pOffset: Vector2 = dtUnits.clone().scale(padding);\r\n const frameOffset: Vector2 = this._getFrameOffset(i);\r\n const offset: Vector2 = frameOffset.add(pOffset);\r\n\r\n const frame: TexturePackerFrame = new TexturePackerFrame(i, scale, offset);\r\n\r\n this.frames.push(frame);\r\n\r\n //Update Output UVs\r\n if (update) {\r\n this._updateMeshUV(m, i);\r\n this._updateTextureReferences(m);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the frames Offset.\r\n * @param index of the frame\r\n * @returns Vector2\r\n */\r\n private _getFrameOffset(index: number): Vector2 {\r\n const meshLength = this.meshes.length;\r\n let uvStep, yStep, xStep;\r\n\r\n switch (this.options.layout) {\r\n case 0: {\r\n //STRIP_LAYOUT\r\n uvStep = 1 / meshLength;\r\n return new Vector2(index * uvStep, 0);\r\n }\r\n case 1: {\r\n //POWER2\r\n const sqrtCount = Math.max(2, Math.ceil(Math.sqrt(meshLength)));\r\n yStep = Math.floor(index / sqrtCount);\r\n xStep = index - yStep * sqrtCount;\r\n uvStep = 1 / sqrtCount;\r\n return new Vector2(xStep * uvStep, yStep * uvStep);\r\n }\r\n case 2: {\r\n //COLNUM\r\n const cols = this.options.colnum || 1;\r\n const rowCnt = Math.max(1, Math.ceil(meshLength / cols));\r\n xStep = Math.floor(index / rowCnt);\r\n yStep = index - xStep * rowCnt;\r\n uvStep = new Vector2(1 / cols, 1 / rowCnt);\r\n return new Vector2(xStep * uvStep.x, yStep * uvStep.y);\r\n }\r\n }\r\n\r\n return Vector2.Zero();\r\n }\r\n\r\n /**\r\n * Updates a Mesh to the frame data\r\n * @param mesh that is the target\r\n * @param frameID or the frame index\r\n */\r\n private _updateMeshUV(mesh: AbstractMesh, frameID: number): void {\r\n const frame: TexturePackerFrame = (this.frames as any)[frameID];\r\n const uvIn = mesh.getVerticesData(this.options.uvsIn || VertexBuffer.UVKind);\r\n const uvOut = [];\r\n let toCount = 0;\r\n\r\n if (uvIn!.length) {\r\n toCount = uvIn!.length || 0;\r\n }\r\n\r\n for (let i = 0; i < toCount; i += 2) {\r\n uvOut.push((uvIn as any)[i] * frame.scale.x + frame.offset.x, (uvIn as any)[i + 1] * frame.scale.y + frame.offset.y);\r\n }\r\n\r\n mesh.setVerticesData(this.options.uvsOut || VertexBuffer.UVKind, uvOut);\r\n }\r\n\r\n /**\r\n * Updates a Meshes materials to use the texture packer channels\r\n * @param m is the mesh to target\r\n * @param force all channels on the packer to be set.\r\n */\r\n private _updateTextureReferences(m: AbstractMesh, force: boolean = false): void {\r\n const mat = m.material;\r\n const sKeys = Object.keys(this.sets);\r\n\r\n const _dispose = (_t: any) => {\r\n if (_t.dispose) {\r\n _t.dispose();\r\n }\r\n };\r\n\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const setName = sKeys[i];\r\n if (!force) {\r\n if (!mat) {\r\n return;\r\n }\r\n if ((mat as any)[setName] !== null) {\r\n _dispose((mat as any)[setName]);\r\n (mat as any)[setName] = (this.sets as any)[setName];\r\n }\r\n } else {\r\n if ((mat as any)[setName] !== null) {\r\n _dispose((mat as any)[setName]);\r\n }\r\n (mat as any)[setName] = (this.sets as any)[setName];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public method to set a Mesh to a frame\r\n * @param m that is the target\r\n * @param frameID or the frame index\r\n * @param updateMaterial trigger for if the Meshes attached Material be updated?\r\n */\r\n public setMeshToFrame(m: AbstractMesh, frameID: number, updateMaterial: boolean = false): void {\r\n this._updateMeshUV(m, frameID);\r\n if (updateMaterial) {\r\n this._updateTextureReferences(m, true);\r\n }\r\n }\r\n\r\n /**\r\n * Starts the async promise to compile the texture packer.\r\n * @returns Promise<void>\r\n */\r\n public async processAsync(): Promise<void> {\r\n return await new Promise((resolve, reject) => {\r\n try {\r\n if (this.meshes.length === 0) {\r\n //Must be a JSON load!\r\n resolve();\r\n return;\r\n }\r\n let done = 0;\r\n const doneCheck = (mat: Material) => {\r\n done++;\r\n //Check Status of all Textures on all meshes, till they are ready.\r\n if (this.options.map) {\r\n for (let j = 0; j < this.options.map.length; j++) {\r\n const index: string = this.options.map[j];\r\n const t: Texture | DynamicTexture = (mat as any)[index];\r\n\r\n if (t !== null) {\r\n if (!(this.sets as any)[this.options.map[j]]) {\r\n (this.sets as any)[this.options.map[j]] = true;\r\n }\r\n\r\n this._expecting++;\r\n }\r\n }\r\n\r\n if (done === this.meshes.length) {\r\n this._createFrames(resolve);\r\n }\r\n }\r\n };\r\n\r\n for (let i = 0; i < this.meshes.length; i++) {\r\n const mesh = this.meshes[i];\r\n const material: Nullable<Material> = mesh.material;\r\n\r\n if (!material) {\r\n done++;\r\n if (done === this.meshes.length) {\r\n return this._createFrames(resolve);\r\n }\r\n continue;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises, github/no-then\r\n material.forceCompilationAsync(mesh).then(() => {\r\n doneCheck(material);\r\n });\r\n }\r\n } catch (e) {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n return reject(e);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Disposes all textures associated with this packer\r\n */\r\n public dispose(): void {\r\n const sKeys = Object.keys(this.sets);\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const channel = sKeys[i];\r\n (this.sets as any)[channel].dispose();\r\n }\r\n }\r\n\r\n /**\r\n * Starts the download process for all the channels converting them to base64 data and embedding it all in a JSON file.\r\n * @param imageType is the image type to use.\r\n * @param quality of the image if downloading as jpeg, Ranges from >0 to 1.\r\n */\r\n public download(imageType: string = \"png\", quality: number = 1): void {\r\n setTimeout(() => {\r\n const pack = {\r\n name: this.name,\r\n sets: {},\r\n options: {},\r\n frames: [],\r\n };\r\n\r\n const sKeys = Object.keys(this.sets);\r\n const oKeys = Object.keys(this.options);\r\n try {\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const channel: string = sKeys[i];\r\n const dt = (this.sets as any)[channel];\r\n (pack.sets as any)[channel] = dt.getContext().canvas.toDataURL(\"image/\" + imageType, quality);\r\n }\r\n for (let i = 0; i < oKeys.length; i++) {\r\n const opt: string = oKeys[i];\r\n (pack.options as any)[opt] = (this.options as any)[opt];\r\n }\r\n for (let i = 0; i < this.frames.length; i++) {\r\n const _f = this.frames[i];\r\n (pack.frames as Array<number>).push(_f.scale.x, _f.scale.y, _f.offset.x, _f.offset.y);\r\n }\r\n } catch (err) {\r\n Logger.Warn(\"Unable to download: \" + err);\r\n return;\r\n }\r\n\r\n const data = \"data:text/json;charset=utf-8,\" + encodeURIComponent(JSON.stringify(pack, null, 4));\r\n const _a = document.createElement(\"a\");\r\n _a.setAttribute(\"href\", data);\r\n _a.setAttribute(\"download\", this.name + \"_texurePackage.json\");\r\n document.body.appendChild(_a);\r\n _a.click();\r\n _a.remove();\r\n }, 0);\r\n }\r\n\r\n /**\r\n * Public method to load a texturePacker JSON file.\r\n * @param data of the JSON file in string format.\r\n */\r\n public updateFromJSON(data: string): void {\r\n try {\r\n const parsedData: ITexturePackerJSON = JSON.parse(data);\r\n this.name = parsedData.name;\r\n const _options = Object.keys(parsedData.options);\r\n\r\n for (let i = 0; i < _options.length; i++) {\r\n (this.options as any)[_options[i]] = (parsedData.options as any)[_options[i]];\r\n }\r\n\r\n for (let i = 0; i < parsedData.frames.length; i += 4) {\r\n const frame: TexturePackerFrame = new TexturePackerFrame(\r\n i / 4,\r\n new Vector2(parsedData.frames[i], parsedData.frames[i + 1]),\r\n new Vector2(parsedData.frames[i + 2], parsedData.frames[i + 3])\r\n );\r\n this.frames.push(frame);\r\n }\r\n\r\n const channels = Object.keys(parsedData.sets);\r\n\r\n for (let i = 0; i < channels.length; i++) {\r\n const _t = new Texture(parsedData.sets[channels[i]], this.scene, false, false);\r\n (this.sets as any)[channels[i]] = _t;\r\n }\r\n } catch (err) {\r\n Logger.Warn(\"Unable to update from JSON: \" + err);\r\n }\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
1
  import { type Scene } from "../../../scene.js";
2
- import { Texture } from "../../../Materials/Textures/texture.js";
3
- import { type IProceduralTextureCreationOptions, ProceduralTexture } from "./proceduralTexture.js";
2
+ import { Texture } from "../../../Materials/Textures/texture.pure.js";
3
+ import { type IProceduralTextureCreationOptions, ProceduralTexture } from "./proceduralTexture.pure.js";
4
4
  import { type TextureSize } from "../../../Materials/Textures/textureCreationOptions.js";
5
5
  /**
6
6
  * Options to create a Custom Procedural Texture.
@@ -1,8 +1,8 @@
1
1
  import { Logger } from "../../../Misc/logger.js";
2
- import { Vector3, Vector2 } from "../../../Maths/math.vector.js";
3
- import { Color4, Color3 } from "../../../Maths/math.color.js";
4
- import { Texture } from "../../../Materials/Textures/texture.js";
5
- import { ProceduralTexture } from "./proceduralTexture.js";
2
+ import { Vector3, Vector2 } from "../../../Maths/math.vector.pure.js";
3
+ import { Color4, Color3 } from "../../../Maths/math.color.pure.js";
4
+ import { Texture } from "../../../Materials/Textures/texture.pure.js";
5
+ import { ProceduralTexture } from "./proceduralTexture.pure.js";
6
6
  import { WebRequest } from "../../../Misc/webRequest.js";
7
7
  /**
8
8
  * Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes called 'refMaps' or 'sampler' images.
@@ -1 +1 @@
1
- {"version":3,"file":"customProceduralTexture.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Textures/Procedurals/customProceduralTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../../../Misc/logger\";\r\nimport { type Scene } from \"../../../scene\";\r\nimport { Vector3, Vector2 } from \"../../../Maths/math.vector\";\r\nimport { Color4, Color3 } from \"../../../Maths/math.color\";\r\nimport { Texture } from \"../../../Materials/Textures/texture\";\r\nimport { type IProceduralTextureCreationOptions, ProceduralTexture } from \"./proceduralTexture\";\r\nimport { WebRequest } from \"../../../Misc/webRequest\";\r\nimport { type TextureSize } from \"../../../Materials/Textures/textureCreationOptions\";\r\n\r\n/**\r\n * Options to create a Custom Procedural Texture.\r\n */\r\nexport interface ICustomProceduralTextureCreationOptions extends IProceduralTextureCreationOptions {\r\n /**\r\n * Define a boolena indicating that there is no json config file to load\r\n */\r\n skipJson?: boolean;\r\n}\r\n\r\n/**\r\n * Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes called 'refMaps' or 'sampler' images.\r\n * Custom Procedural textures are the easiest way to create your own procedural in your application.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/proceduralTextures#creating-custom-procedural-textures\r\n */\r\nexport class CustomProceduralTexture extends ProceduralTexture {\r\n private _animate: boolean = true;\r\n private _time: number = 0;\r\n private _config: any;\r\n private _texturePath: string;\r\n\r\n /**\r\n * Instantiates a new Custom Procedural Texture.\r\n * Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes called 'refMaps' or 'sampler' images.\r\n * Custom Procedural textures are the easiest way to create your own procedural in your application.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/proceduralTextures#creating-custom-procedural-textures\r\n * @param name Define the name of the texture\r\n * @param texturePath Define the folder path containing all the custom texture related files (config, shaders...)\r\n * @param size Define the size of the texture to create\r\n * @param scene Define the scene the texture belongs to\r\n * @param fallbackTexture Define a fallback texture in case there were issues to create the custom texture\r\n * @param generateMipMaps Define if the texture should creates mip maps or not\r\n * @param skipJson Define a boolena indicating that there is no json config file to load\r\n */\r\n constructor(\r\n name: string,\r\n texturePath: string,\r\n size: TextureSize,\r\n scene: Scene,\r\n fallbackTexture?: Texture | ICustomProceduralTextureCreationOptions,\r\n generateMipMaps?: boolean,\r\n skipJson?: boolean\r\n ) {\r\n super(name, size, null, scene, fallbackTexture, generateMipMaps);\r\n this._texturePath = texturePath;\r\n\r\n if (fallbackTexture && !(fallbackTexture instanceof Texture)) {\r\n skipJson = !!fallbackTexture.skipJson;\r\n }\r\n\r\n if (!skipJson) {\r\n //Try to load json\r\n this._loadJson(texturePath);\r\n } else {\r\n this.setFragment(this._texturePath);\r\n }\r\n this.refreshRate = 1;\r\n }\r\n\r\n private _loadJson(jsonUrl: string): void {\r\n const noConfigFile = () => {\r\n try {\r\n this.setFragment(this._texturePath);\r\n } catch (ex) {\r\n Logger.Log(\"No json or ShaderStore or DOM element found for CustomProceduralTexture\");\r\n }\r\n };\r\n\r\n const configFileUrl = jsonUrl + \"/config.json\";\r\n const xhr = new WebRequest();\r\n\r\n xhr.open(\"GET\", configFileUrl);\r\n xhr.addEventListener(\r\n \"load\",\r\n () => {\r\n if (xhr.status === 200 || (xhr.responseText && xhr.responseText.length > 0)) {\r\n try {\r\n this._config = JSON.parse(xhr.response);\r\n\r\n this.updateShaderUniforms();\r\n this.updateTextures();\r\n this.setFragment(this._texturePath + \"/custom\");\r\n\r\n this._animate = this._config.animate;\r\n this.refreshRate = this._config.refreshrate;\r\n } catch (ex) {\r\n noConfigFile();\r\n }\r\n } else {\r\n noConfigFile();\r\n }\r\n },\r\n false\r\n );\r\n\r\n xhr.addEventListener(\r\n \"error\",\r\n () => {\r\n noConfigFile();\r\n },\r\n false\r\n );\r\n\r\n try {\r\n xhr.send();\r\n } catch (ex) {\r\n Logger.Error(\"CustomProceduralTexture: Error on XHR send request.\");\r\n }\r\n }\r\n\r\n /**\r\n * Is the texture ready to be used ? (rendered at least once)\r\n * @returns true if ready, otherwise, false.\r\n */\r\n public override isReady(): boolean {\r\n if (!super.isReady()) {\r\n return false;\r\n }\r\n\r\n for (const name in this._textures) {\r\n const texture = this._textures[name];\r\n\r\n if (!texture.isReady()) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Render the texture to its associated render target.\r\n * @param useCameraPostProcess Define if camera post process should be applied to the texture\r\n */\r\n public override render(useCameraPostProcess?: boolean): void {\r\n const scene = this.getScene();\r\n if (this._animate && scene) {\r\n this._time += scene.getAnimationRatio() * 0.03;\r\n this.updateShaderUniforms();\r\n }\r\n\r\n super.render(useCameraPostProcess);\r\n }\r\n\r\n /**\r\n * Update the list of dependant textures samplers in the shader.\r\n */\r\n public updateTextures(): void {\r\n for (let i = 0; i < this._config.sampler2Ds.length; i++) {\r\n this.setTexture(this._config.sampler2Ds[i].sample2Dname, new Texture(this._texturePath + \"/\" + this._config.sampler2Ds[i].textureRelativeUrl, this.getScene()));\r\n }\r\n }\r\n\r\n /**\r\n * Update the uniform values of the procedural texture in the shader.\r\n */\r\n public updateShaderUniforms(): void {\r\n if (this._config) {\r\n for (let j = 0; j < this._config.uniforms.length; j++) {\r\n const uniform = this._config.uniforms[j];\r\n\r\n switch (uniform.type) {\r\n case \"float\":\r\n this.setFloat(uniform.name, uniform.value);\r\n break;\r\n case \"color3\":\r\n this.setColor3(uniform.name, new Color3(uniform.r, uniform.g, uniform.b));\r\n break;\r\n case \"color4\":\r\n this.setColor4(uniform.name, new Color4(uniform.r, uniform.g, uniform.b, uniform.a));\r\n break;\r\n case \"vector2\":\r\n this.setVector2(uniform.name, new Vector2(uniform.x, uniform.y));\r\n break;\r\n case \"vector3\":\r\n this.setVector3(uniform.name, new Vector3(uniform.x, uniform.y, uniform.z));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.setFloat(\"time\", this._time);\r\n }\r\n\r\n /**\r\n * Define if the texture animates or not.\r\n */\r\n public get animate(): boolean {\r\n return this._animate;\r\n }\r\n\r\n public set animate(value: boolean) {\r\n this._animate = value;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"customProceduralTexture.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Textures/Procedurals/customProceduralTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../../../Misc/logger\";\r\nimport { type Scene } from \"../../../scene\";\r\nimport { Vector3, Vector2 } from \"../../../Maths/math.vector.pure\";\r\nimport { Color4, Color3 } from \"../../../Maths/math.color.pure\";\r\nimport { Texture } from \"../../../Materials/Textures/texture.pure\";\r\nimport { type IProceduralTextureCreationOptions, ProceduralTexture } from \"./proceduralTexture.pure\";\r\nimport { WebRequest } from \"../../../Misc/webRequest\";\r\nimport { type TextureSize } from \"../../../Materials/Textures/textureCreationOptions\";\r\n\r\n/**\r\n * Options to create a Custom Procedural Texture.\r\n */\r\nexport interface ICustomProceduralTextureCreationOptions extends IProceduralTextureCreationOptions {\r\n /**\r\n * Define a boolena indicating that there is no json config file to load\r\n */\r\n skipJson?: boolean;\r\n}\r\n\r\n/**\r\n * Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes called 'refMaps' or 'sampler' images.\r\n * Custom Procedural textures are the easiest way to create your own procedural in your application.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/proceduralTextures#creating-custom-procedural-textures\r\n */\r\nexport class CustomProceduralTexture extends ProceduralTexture {\r\n private _animate: boolean = true;\r\n private _time: number = 0;\r\n private _config: any;\r\n private _texturePath: string;\r\n\r\n /**\r\n * Instantiates a new Custom Procedural Texture.\r\n * Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes called 'refMaps' or 'sampler' images.\r\n * Custom Procedural textures are the easiest way to create your own procedural in your application.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/proceduralTextures#creating-custom-procedural-textures\r\n * @param name Define the name of the texture\r\n * @param texturePath Define the folder path containing all the custom texture related files (config, shaders...)\r\n * @param size Define the size of the texture to create\r\n * @param scene Define the scene the texture belongs to\r\n * @param fallbackTexture Define a fallback texture in case there were issues to create the custom texture\r\n * @param generateMipMaps Define if the texture should creates mip maps or not\r\n * @param skipJson Define a boolena indicating that there is no json config file to load\r\n */\r\n constructor(\r\n name: string,\r\n texturePath: string,\r\n size: TextureSize,\r\n scene: Scene,\r\n fallbackTexture?: Texture | ICustomProceduralTextureCreationOptions,\r\n generateMipMaps?: boolean,\r\n skipJson?: boolean\r\n ) {\r\n super(name, size, null, scene, fallbackTexture, generateMipMaps);\r\n this._texturePath = texturePath;\r\n\r\n if (fallbackTexture && !(fallbackTexture instanceof Texture)) {\r\n skipJson = !!fallbackTexture.skipJson;\r\n }\r\n\r\n if (!skipJson) {\r\n //Try to load json\r\n this._loadJson(texturePath);\r\n } else {\r\n this.setFragment(this._texturePath);\r\n }\r\n this.refreshRate = 1;\r\n }\r\n\r\n private _loadJson(jsonUrl: string): void {\r\n const noConfigFile = () => {\r\n try {\r\n this.setFragment(this._texturePath);\r\n } catch (ex) {\r\n Logger.Log(\"No json or ShaderStore or DOM element found for CustomProceduralTexture\");\r\n }\r\n };\r\n\r\n const configFileUrl = jsonUrl + \"/config.json\";\r\n const xhr = new WebRequest();\r\n\r\n xhr.open(\"GET\", configFileUrl);\r\n xhr.addEventListener(\r\n \"load\",\r\n () => {\r\n if (xhr.status === 200 || (xhr.responseText && xhr.responseText.length > 0)) {\r\n try {\r\n this._config = JSON.parse(xhr.response);\r\n\r\n this.updateShaderUniforms();\r\n this.updateTextures();\r\n this.setFragment(this._texturePath + \"/custom\");\r\n\r\n this._animate = this._config.animate;\r\n this.refreshRate = this._config.refreshrate;\r\n } catch (ex) {\r\n noConfigFile();\r\n }\r\n } else {\r\n noConfigFile();\r\n }\r\n },\r\n false\r\n );\r\n\r\n xhr.addEventListener(\r\n \"error\",\r\n () => {\r\n noConfigFile();\r\n },\r\n false\r\n );\r\n\r\n try {\r\n xhr.send();\r\n } catch (ex) {\r\n Logger.Error(\"CustomProceduralTexture: Error on XHR send request.\");\r\n }\r\n }\r\n\r\n /**\r\n * Is the texture ready to be used ? (rendered at least once)\r\n * @returns true if ready, otherwise, false.\r\n */\r\n public override isReady(): boolean {\r\n if (!super.isReady()) {\r\n return false;\r\n }\r\n\r\n for (const name in this._textures) {\r\n const texture = this._textures[name];\r\n\r\n if (!texture.isReady()) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Render the texture to its associated render target.\r\n * @param useCameraPostProcess Define if camera post process should be applied to the texture\r\n */\r\n public override render(useCameraPostProcess?: boolean): void {\r\n const scene = this.getScene();\r\n if (this._animate && scene) {\r\n this._time += scene.getAnimationRatio() * 0.03;\r\n this.updateShaderUniforms();\r\n }\r\n\r\n super.render(useCameraPostProcess);\r\n }\r\n\r\n /**\r\n * Update the list of dependant textures samplers in the shader.\r\n */\r\n public updateTextures(): void {\r\n for (let i = 0; i < this._config.sampler2Ds.length; i++) {\r\n this.setTexture(this._config.sampler2Ds[i].sample2Dname, new Texture(this._texturePath + \"/\" + this._config.sampler2Ds[i].textureRelativeUrl, this.getScene()));\r\n }\r\n }\r\n\r\n /**\r\n * Update the uniform values of the procedural texture in the shader.\r\n */\r\n public updateShaderUniforms(): void {\r\n if (this._config) {\r\n for (let j = 0; j < this._config.uniforms.length; j++) {\r\n const uniform = this._config.uniforms[j];\r\n\r\n switch (uniform.type) {\r\n case \"float\":\r\n this.setFloat(uniform.name, uniform.value);\r\n break;\r\n case \"color3\":\r\n this.setColor3(uniform.name, new Color3(uniform.r, uniform.g, uniform.b));\r\n break;\r\n case \"color4\":\r\n this.setColor4(uniform.name, new Color4(uniform.r, uniform.g, uniform.b, uniform.a));\r\n break;\r\n case \"vector2\":\r\n this.setVector2(uniform.name, new Vector2(uniform.x, uniform.y));\r\n break;\r\n case \"vector3\":\r\n this.setVector3(uniform.name, new Vector3(uniform.x, uniform.y, uniform.z));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.setFloat(\"time\", this._time);\r\n }\r\n\r\n /**\r\n * Define if the texture animates or not.\r\n */\r\n public get animate(): boolean {\r\n return this._animate;\r\n }\r\n\r\n public set animate(value: boolean) {\r\n this._animate = value;\r\n }\r\n}\r\n"]}
@@ -243,7 +243,10 @@ export class ProceduralTexture extends Texture {
243
243
  isReady() {
244
244
  const engine = this._fullEngine;
245
245
  if (this.nodeMaterialSource) {
246
- return this._drawWrapper.effect.isReady();
246
+ // When sourced from a node material, the effect is created asynchronously once the material
247
+ // build completes (some node material blocks load their shader code asynchronously). Until
248
+ // then there is no effect yet, so the texture is simply not ready.
249
+ return this._drawWrapper.effect?.isReady() ?? false;
247
250
  }
248
251
  if (!this._fragment) {
249
252
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"proceduralTexture.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Textures/Procedurals/proceduralTexture.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { serialize } from \"../../../Misc/decorators\";\r\nimport { Observable } from \"../../../Misc/observable.pure\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { type Scene } from \"../../../scene.pure\";\r\nimport { type Matrix, type Vector4, type Vector3, type Vector2 } from \"../../../Maths/math.vector.pure\";\r\nimport { type Color4, type Color3 } from \"../../../Maths/math.color.pure\";\r\nimport { type AbstractEngine } from \"../../../Engines/abstractEngine.pure\";\r\nimport { VertexBuffer } from \"../../../Buffers/buffer.pure\";\r\nimport { SceneComponentConstants } from \"../../../sceneComponent\";\r\n\r\nimport { Material } from \"../../../Materials/material.pure\";\r\nimport { type Effect } from \"../../../Materials/effect.pure\";\r\nimport { Texture } from \"../../../Materials/Textures/texture.pure\";\r\nimport { type RenderTargetTextureOptions, RenderTargetTexture } from \"../../../Materials/Textures/renderTargetTexture.pure\";\r\nimport { ProceduralTextureSceneComponent } from \"./proceduralTextureSceneComponent\";\r\n\r\nimport { type DataBuffer } from \"../../../Buffers/dataBuffer\";\r\nimport { type NodeMaterial } from \"../../Node/nodeMaterial.pure\";\r\nimport { type TextureSize } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { EngineStore } from \"../../../Engines/engineStore\";\r\nimport { Constants } from \"../../../Engines/constants\";\r\nimport { DrawWrapper } from \"../../drawWrapper\";\r\nimport { type RenderTargetWrapper } from \"../../../Engines/renderTargetWrapper\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { type ThinTexture } from \"core/Materials/Textures/thinTexture\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\n\r\n/**\r\n * Options to create a procedural texture\r\n */\r\nexport interface IProceduralTextureCreationOptions extends RenderTargetTextureOptions {\r\n /**\r\n * Defines a fallback texture in case there were issues to create the custom texture\r\n */\r\n fallbackTexture?: Nullable<Texture>;\r\n /**\r\n * The shader language of the shader. (default: GLSL)\r\n */\r\n shaderLanguage?: ShaderLanguage;\r\n /**\r\n * Additional async code to run before preparing the effect\r\n */\r\n extraInitializationsAsync?: () => Promise<void>;\r\n /**\r\n * When true the texture will not be pushed onto scene.proceduralTextures and will\r\n * therefore never be rendered automatically by the scene render loop. Use this for\r\n * one-shot or manually-driven textures that manage their own render lifecycle.\r\n */\r\n skipSceneRegistration?: boolean;\r\n}\r\n\r\n/**\r\n * Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes calmpler' images.\r\n * This is the base class of any Procedural texture and contains most of the shareable code.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/proceduralTextures\r\n */\r\nexport class ProceduralTexture extends Texture {\r\n /**\r\n * Define if the texture is enabled or not (disabled texture will not render)\r\n */\r\n @serialize()\r\n public isEnabled = true;\r\n\r\n /**\r\n * Define if the texture must be cleared before rendering (default is true)\r\n */\r\n @serialize()\r\n public autoClear = true;\r\n\r\n /**\r\n * Callback called when the texture is generated\r\n */\r\n public onGenerated: () => void;\r\n\r\n /**\r\n * Event raised when the texture is generated\r\n */\r\n public onGeneratedObservable = new Observable<ProceduralTexture>();\r\n\r\n /**\r\n * Event raised before the texture is generated\r\n */\r\n public onBeforeGenerationObservable = new Observable<ProceduralTexture>();\r\n\r\n /**\r\n * Gets or sets the node material used to create this texture (null if the texture was manually created)\r\n */\r\n public nodeMaterialSource: Nullable<NodeMaterial> = null;\r\n\r\n /**\r\n * Define the list of custom preprocessor defines used in the shader\r\n */\r\n public defines: string = \"\";\r\n\r\n /** @internal */\r\n @serialize()\r\n public _generateMipMaps: boolean;\r\n\r\n private _drawWrapper: DrawWrapper;\r\n\r\n /** @internal */\r\n public _textures: { [key: string]: ThinTexture } = {};\r\n\r\n /** @internal */\r\n protected _fallbackTexture: Nullable<Texture>;\r\n\r\n /** @internal */\r\n private _shaderLanguage: ShaderLanguage;\r\n\r\n /**\r\n * Gets the shader language type used to generate vertex and fragment source code.\r\n */\r\n public get shaderLanguage(): ShaderLanguage {\r\n return this._shaderLanguage;\r\n }\r\n\r\n @serialize()\r\n private _size: TextureSize;\r\n private _textureType: number;\r\n private _currentRefreshId = -1;\r\n private _frameId = -1;\r\n private _refreshRate = 1;\r\n private _vertexBuffers: { [key: string]: Nullable<VertexBuffer> } = {};\r\n private _indexBuffer: Nullable<DataBuffer>;\r\n private _uniforms = new Array<string>();\r\n private _samplers = new Array<string>();\r\n private _fragment: any;\r\n\r\n private _floats: { [key: string]: number } = {};\r\n private _ints: { [key: string]: number } = {};\r\n private _floatsArrays: { [key: string]: number[] } = {};\r\n private _colors3: { [key: string]: Color3 } = {};\r\n private _colors4: { [key: string]: Color4 } = {};\r\n private _vectors2: { [key: string]: Vector2 } = {};\r\n private _vectors3: { [key: string]: Vector3 } = {};\r\n private _vectors4: { [key: string]: Vector4 } = {};\r\n private _matrices: { [key: string]: Matrix } = {};\r\n\r\n private _fallbackTextureUsed = false;\r\n private _fullEngine: AbstractEngine;\r\n\r\n private _cachedDefines: Nullable<string> = null;\r\n\r\n private _contentUpdateId = -1;\r\n private _contentData: Nullable<Promise<ArrayBufferView>>;\r\n\r\n private _rtWrapper: Nullable<RenderTargetWrapper> = null;\r\n private _options: IProceduralTextureCreationOptions;\r\n\r\n /**\r\n * Instantiates a new procedural texture.\r\n * Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes called 'refMaps' or 'sampler' images.\r\n * This is the base class of any Procedural texture and contains most of the shareable code.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/proceduralTextures\r\n * @param name Define the name of the texture\r\n * @param size Define the size of the texture to create\r\n * @param fragment Define the fragment shader to use to generate the texture or null if it is defined later:\r\n * * object: \\{ fragmentElement: \"fragmentShaderCode\" \\}, used with shader code in script tags\r\n * * object: \\{ fragmentSource: \"fragment shader code string\" \\}, the string contains the shader code\r\n * * string: the string contains a name \"XXX\" to lookup in Effect.ShadersStore[\"XXXFragmentShader\"]\r\n * @param scene Define the scene the texture belongs to\r\n * @param fallbackTexture Define a fallback texture in case there were issues to create the custom texture\r\n * @param generateMipMaps Define if the texture should creates mip maps or not\r\n * @param isCube Define if the texture is a cube texture or not (this will render each faces of the cube)\r\n * @param textureType The FBO internal texture type\r\n */\r\n constructor(\r\n name: string,\r\n size: TextureSize,\r\n fragment: any,\r\n scene: Nullable<Scene>,\r\n fallbackTexture: Nullable<Texture> | IProceduralTextureCreationOptions = null,\r\n generateMipMaps = true,\r\n isCube = false,\r\n textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE\r\n ) {\r\n super(null, scene, !generateMipMaps);\r\n\r\n if (fallbackTexture !== null && !(fallbackTexture instanceof Texture)) {\r\n this._options = fallbackTexture;\r\n this._fallbackTexture = fallbackTexture.fallbackTexture ?? null;\r\n } else {\r\n this._options = {};\r\n this._fallbackTexture = fallbackTexture;\r\n }\r\n\r\n this._shaderLanguage = this._options.shaderLanguage ?? ShaderLanguage.GLSL;\r\n\r\n scene = this.getScene() || EngineStore.LastCreatedScene!;\r\n let component = scene._getComponent(SceneComponentConstants.NAME_PROCEDURALTEXTURE);\r\n if (!component) {\r\n component = new ProceduralTextureSceneComponent(scene);\r\n scene._addComponent(component);\r\n }\r\n if (!this._options.skipSceneRegistration) {\r\n scene.proceduralTextures.push(this);\r\n }\r\n\r\n this._fullEngine = scene.getEngine();\r\n\r\n this.name = name;\r\n this.isRenderTarget = true;\r\n this._size = size;\r\n this._textureType = textureType;\r\n this._generateMipMaps = generateMipMaps;\r\n this._drawWrapper = new DrawWrapper(this._fullEngine);\r\n\r\n this.setFragment(fragment);\r\n\r\n const rtWrapper = this._createRtWrapper(isCube, size, generateMipMaps, textureType);\r\n this._texture = rtWrapper.texture;\r\n\r\n // VBO\r\n const vertices = [];\r\n vertices.push(1, 1);\r\n vertices.push(-1, 1);\r\n vertices.push(-1, -1);\r\n vertices.push(1, -1);\r\n\r\n this._vertexBuffers[VertexBuffer.PositionKind] = new VertexBuffer(this._fullEngine, vertices, VertexBuffer.PositionKind, false, false, 2);\r\n\r\n this._createIndexBuffer();\r\n }\r\n\r\n private _createRtWrapper(isCube: boolean, size: TextureSize, generateMipMaps: boolean, textureType: number) {\r\n if (isCube) {\r\n this._rtWrapper = this._fullEngine.createRenderTargetCubeTexture(size as number, {\r\n generateMipMaps: generateMipMaps,\r\n generateDepthBuffer: false,\r\n generateStencilBuffer: false,\r\n type: textureType,\r\n ...this._options,\r\n });\r\n this.setFloat(\"face\", 0);\r\n } else {\r\n this._rtWrapper = this._fullEngine.createRenderTargetTexture(size, {\r\n generateMipMaps: generateMipMaps,\r\n generateDepthBuffer: false,\r\n generateStencilBuffer: false,\r\n type: textureType,\r\n ...this._options,\r\n });\r\n if (this._rtWrapper.is3D) {\r\n this.setFloat(\"layer\", 0);\r\n this.setInt(\"layerNum\", 0);\r\n }\r\n }\r\n return this._rtWrapper;\r\n }\r\n\r\n /**\r\n * The effect that is created when initializing the post process.\r\n * @returns The created effect corresponding the postprocess.\r\n */\r\n public getEffect(): Effect {\r\n return this._drawWrapper.effect!;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _setEffect(effect: Effect) {\r\n this._drawWrapper.effect = effect;\r\n }\r\n\r\n /**\r\n * Gets texture content (Use this function wisely as reading from a texture can be slow)\r\n * @returns an ArrayBufferView promise (Uint8Array or Float32Array)\r\n */\r\n public getContent(): Nullable<Promise<ArrayBufferView>> {\r\n if (this._contentData && this._frameId === this._contentUpdateId) {\r\n return this._contentData;\r\n }\r\n\r\n if (this._contentData) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises, github/no-then\r\n this._contentData.then((buffer) => {\r\n this._contentData = this.readPixels(0, 0, buffer);\r\n this._contentUpdateId = this._frameId;\r\n });\r\n } else {\r\n this._contentData = this.readPixels(0, 0);\r\n this._contentUpdateId = this._frameId;\r\n }\r\n\r\n return this._contentData;\r\n }\r\n\r\n private _createIndexBuffer(): void {\r\n const engine = this._fullEngine;\r\n\r\n // Indices\r\n const indices = [];\r\n indices.push(0);\r\n indices.push(1);\r\n indices.push(2);\r\n\r\n indices.push(0);\r\n indices.push(2);\r\n indices.push(3);\r\n\r\n this._indexBuffer = engine.createIndexBuffer(indices);\r\n }\r\n\r\n /** @internal */\r\n public override _rebuild(): void {\r\n const vb = this._vertexBuffers[VertexBuffer.PositionKind];\r\n\r\n if (vb) {\r\n vb._rebuild();\r\n }\r\n\r\n this._createIndexBuffer();\r\n\r\n if (this.refreshRate === RenderTargetTexture.REFRESHRATE_RENDER_ONCE) {\r\n this.refreshRate = RenderTargetTexture.REFRESHRATE_RENDER_ONCE;\r\n }\r\n }\r\n\r\n /**\r\n * Resets the texture in order to recreate its associated resources.\r\n * This can be called in case of context loss or if you change the shader code and need to regenerate the texture with the new code\r\n */\r\n public reset(): void {\r\n this._drawWrapper.effect?.dispose();\r\n this._drawWrapper.effect = null;\r\n this._cachedDefines = null;\r\n }\r\n\r\n protected _getDefines(): string {\r\n return this.defines;\r\n }\r\n\r\n /**\r\n * Executes a function when the texture will be ready to be drawn.\r\n * @param func The callback to be used.\r\n */\r\n public executeWhenReady(func: (texture: ProceduralTexture) => void): void {\r\n if (this.isReady()) {\r\n func(this);\r\n return;\r\n }\r\n\r\n const effect = this.getEffect();\r\n if (effect) {\r\n effect.executeWhenCompiled(() => {\r\n func(this);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Is the texture ready to be used ? (rendered at least once)\r\n * @returns true if ready, otherwise, false.\r\n */\r\n public override isReady(): boolean {\r\n const engine = this._fullEngine;\r\n\r\n if (this.nodeMaterialSource) {\r\n return this._drawWrapper.effect!.isReady();\r\n }\r\n\r\n if (!this._fragment) {\r\n return false;\r\n }\r\n\r\n if (this._fallbackTextureUsed) {\r\n return true;\r\n }\r\n\r\n if (!this._texture) {\r\n return false;\r\n }\r\n\r\n const defines = this._getDefines();\r\n if (this._drawWrapper.effect && defines === this._cachedDefines && this._drawWrapper.effect.isReady()) {\r\n return true;\r\n }\r\n\r\n const shaders = {\r\n vertex: \"procedural\",\r\n fragmentElement: this._fragment.fragmentElement,\r\n fragmentSource: this._fragment.fragmentSource,\r\n fragment: typeof this._fragment === \"string\" ? this._fragment : undefined,\r\n };\r\n\r\n if (this._cachedDefines !== defines) {\r\n this._cachedDefines = defines;\r\n\r\n this._drawWrapper.effect = engine.createEffect(\r\n shaders,\r\n [VertexBuffer.PositionKind],\r\n this._uniforms,\r\n this._samplers,\r\n defines,\r\n undefined,\r\n undefined,\r\n () => {\r\n this._rtWrapper?.dispose();\r\n this._rtWrapper = this._texture = null;\r\n\r\n if (this._fallbackTexture) {\r\n this._texture = this._fallbackTexture._texture;\r\n\r\n if (this._texture) {\r\n this._texture.incrementReferences();\r\n }\r\n }\r\n\r\n this._fallbackTextureUsed = true;\r\n },\r\n undefined,\r\n this._shaderLanguage,\r\n async () => {\r\n if (this._options.extraInitializationsAsync) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"../../../ShadersWGSL/procedural.vertex\"), this._options.extraInitializationsAsync()]);\r\n } else {\r\n await Promise.all([import(\"../../../Shaders/procedural.vertex\"), this._options.extraInitializationsAsync()]);\r\n }\r\n } else {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n await import(\"../../../ShadersWGSL/procedural.vertex\");\r\n } else {\r\n await import(\"../../../Shaders/procedural.vertex\");\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n return this._drawWrapper.effect!.isReady();\r\n }\r\n\r\n /**\r\n * Resets the refresh counter of the texture and start bak from scratch.\r\n * Could be useful to regenerate the texture if it is setup to render only once.\r\n */\r\n public resetRefreshCounter(): void {\r\n this._currentRefreshId = -1;\r\n }\r\n\r\n /**\r\n * Set the fragment shader to use in order to render the texture.\r\n * @param fragment This can be set to a path (into the shader store) or to a json object containing a fragmentElement property.\r\n */\r\n public setFragment(fragment: any) {\r\n this._fragment = fragment;\r\n }\r\n\r\n /**\r\n * Define the refresh rate of the texture or the rendering frequency.\r\n * Use 0 to render just once, 1 to render on every frame, 2 to render every two frames and so on...\r\n */\r\n @serialize()\r\n public get refreshRate(): number {\r\n return this._refreshRate;\r\n }\r\n\r\n public set refreshRate(value: number) {\r\n this._refreshRate = value;\r\n this.resetRefreshCounter();\r\n }\r\n\r\n /** @internal */\r\n public _shouldRender(): boolean {\r\n if (!this.isEnabled || !this.isReady() || !this._texture) {\r\n if (this._texture) {\r\n this._texture.isReady = false;\r\n }\r\n return false;\r\n }\r\n\r\n if (this._fallbackTextureUsed) {\r\n return false;\r\n }\r\n\r\n if (this._currentRefreshId === -1) {\r\n // At least render once\r\n this._currentRefreshId = 1;\r\n this._frameId++;\r\n return true;\r\n }\r\n\r\n if (this.refreshRate === this._currentRefreshId) {\r\n this._currentRefreshId = 1;\r\n this._frameId++;\r\n return true;\r\n }\r\n\r\n this._currentRefreshId++;\r\n return false;\r\n }\r\n\r\n /**\r\n * Get the size the texture is rendering at.\r\n * @returns the size (on cube texture it is always squared)\r\n */\r\n public getRenderSize(): TextureSize {\r\n return this._size;\r\n }\r\n\r\n /**\r\n * Resize the texture to new value.\r\n * @param size Define the new size the texture should have\r\n * @param generateMipMaps Define whether the new texture should create mip maps\r\n */\r\n public resize(size: TextureSize, generateMipMaps: boolean): void {\r\n if (this._fallbackTextureUsed || !this._rtWrapper || !this._texture) {\r\n return;\r\n }\r\n\r\n const isCube = this._texture.isCube;\r\n this._rtWrapper.dispose();\r\n\r\n const rtWrapper = this._createRtWrapper(isCube, size, generateMipMaps, this._textureType);\r\n this._texture = rtWrapper.texture;\r\n\r\n // Update properties\r\n this._size = size;\r\n this._generateMipMaps = generateMipMaps;\r\n }\r\n\r\n private _checkUniform(uniformName: string): void {\r\n if (this._uniforms.indexOf(uniformName) === -1) {\r\n this._uniforms.push(uniformName);\r\n }\r\n }\r\n\r\n /**\r\n * Set a texture in the shader program used to render.\r\n * @param name Define the name of the uniform samplers as defined in the shader\r\n * @param texture Define the texture to bind to this sampler\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setTexture(name: string, texture: ThinTexture): ProceduralTexture {\r\n if (this._samplers.indexOf(name) === -1) {\r\n this._samplers.push(name);\r\n }\r\n this._textures[name] = texture;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a float in the shader.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setFloat(name: string, value: number): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._floats[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a int in the shader.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setInt(name: string, value: number): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._ints[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set an array of floats in the shader.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setFloats(name: string, value: number[]): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._floatsArrays[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a vec3 in the shader from a Color3.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setColor3(name: string, value: Color3): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._colors3[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a vec4 in the shader from a Color4.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setColor4(name: string, value: Color4): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._colors4[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a vec2 in the shader from a Vector2.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setVector2(name: string, value: Vector2): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._vectors2[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a vec3 in the shader from a Vector3.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setVector3(name: string, value: Vector3): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._vectors3[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a vec4 in the shader from a Vector4.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setVector4(name: string, value: Vector4): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._vectors4[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a mat4 in the shader from a MAtrix.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setMatrix(name: string, value: Matrix): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._matrices[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Render the texture to its associated render target.\r\n * @param useCameraPostProcess Define if camera post process should be applied to the texture\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public render(useCameraPostProcess?: boolean): void {\r\n const scene = this.getScene();\r\n\r\n if (!scene) {\r\n return;\r\n }\r\n\r\n const engine = this._fullEngine;\r\n\r\n // Render\r\n engine.enableEffect(this._drawWrapper);\r\n this.onBeforeGenerationObservable.notifyObservers(this);\r\n engine.setState(false);\r\n\r\n if (!this.nodeMaterialSource) {\r\n // Texture\r\n for (const name in this._textures) {\r\n this._drawWrapper.effect!.setTexture(name, this._textures[name]);\r\n }\r\n\r\n // Float\r\n for (const name in this._ints) {\r\n this._drawWrapper.effect!.setInt(name, this._ints[name]);\r\n }\r\n\r\n // Float\r\n for (const name in this._floats) {\r\n this._drawWrapper.effect!.setFloat(name, this._floats[name]);\r\n }\r\n\r\n // Floats\r\n for (const name in this._floatsArrays) {\r\n this._drawWrapper.effect!.setArray(name, this._floatsArrays[name]);\r\n }\r\n\r\n // Color3\r\n for (const name in this._colors3) {\r\n this._drawWrapper.effect!.setColor3(name, this._colors3[name]);\r\n }\r\n\r\n // Color4\r\n for (const name in this._colors4) {\r\n const color = this._colors4[name];\r\n this._drawWrapper.effect!.setFloat4(name, color.r, color.g, color.b, color.a);\r\n }\r\n\r\n // Vector2\r\n for (const name in this._vectors2) {\r\n this._drawWrapper.effect!.setVector2(name, this._vectors2[name]);\r\n }\r\n\r\n // Vector3\r\n for (const name in this._vectors3) {\r\n this._drawWrapper.effect!.setVector3(name, this._vectors3[name]);\r\n }\r\n\r\n // Vector4\r\n for (const name in this._vectors4) {\r\n this._drawWrapper.effect!.setVector4(name, this._vectors4[name]);\r\n }\r\n\r\n // Matrix\r\n for (const name in this._matrices) {\r\n this._drawWrapper.effect!.setMatrix(name, this._matrices[name]);\r\n }\r\n }\r\n\r\n if (!this._texture || !this._rtWrapper) {\r\n return;\r\n }\r\n\r\n if (engine._enableGPUDebugMarkers) {\r\n engine._debugPushGroup?.(`procedural texture generation for ${this.name}`);\r\n }\r\n\r\n const viewPort = engine.currentViewport;\r\n if (this.isCube) {\r\n for (let face = 0; face < 6; face++) {\r\n engine.bindFramebuffer(this._rtWrapper, face, undefined, undefined, true);\r\n\r\n // VBOs\r\n engine.bindBuffers(this._vertexBuffers, this._indexBuffer, this._drawWrapper.effect!);\r\n\r\n this._drawWrapper.effect!.setFloat(\"face\", face);\r\n\r\n // Clear\r\n if (this.autoClear) {\r\n engine.clear(scene.clearColor, true, false, false);\r\n }\r\n\r\n // Draw order\r\n engine.drawElementsType(Material.TriangleFillMode, 0, 6);\r\n // Unbind and restore viewport\r\n engine.unBindFramebuffer(this._rtWrapper, true);\r\n }\r\n } else {\r\n let numLayers = 1;\r\n if (this._rtWrapper.is3D) {\r\n numLayers = this._rtWrapper.depth;\r\n } else if (this._rtWrapper.is2DArray) {\r\n numLayers = this._rtWrapper.layers;\r\n }\r\n for (let layer = 0; layer < numLayers; layer++) {\r\n engine.bindFramebuffer(this._rtWrapper, 0, undefined, undefined, true, 0, layer);\r\n\r\n // VBOs\r\n engine.bindBuffers(this._vertexBuffers, this._indexBuffer, this._drawWrapper.effect!);\r\n\r\n if (this._rtWrapper.is3D || this._rtWrapper.is2DArray) {\r\n this._drawWrapper.effect?.setFloat(\"layer\", numLayers !== 1 ? layer / (numLayers - 1) : 0);\r\n this._drawWrapper.effect?.setInt(\"layerNum\", layer);\r\n for (const name in this._textures) {\r\n this._drawWrapper.effect!.setTexture(name, this._textures[name]);\r\n }\r\n }\r\n\r\n // Clear\r\n if (this.autoClear) {\r\n engine.clear(scene.clearColor, true, false, false);\r\n }\r\n\r\n // Draw order\r\n engine.drawElementsType(Material.TriangleFillMode, 0, 6);\r\n // Unbind and restore viewport\r\n engine.unBindFramebuffer(this._rtWrapper, !this._generateMipMaps);\r\n }\r\n }\r\n\r\n if (viewPort) {\r\n engine.setViewport(viewPort);\r\n }\r\n\r\n // Mipmaps\r\n if (this.isCube) {\r\n engine.generateMipMapsForCubemap(this._texture, true);\r\n }\r\n\r\n if (engine._enableGPUDebugMarkers) {\r\n engine._debugPopGroup?.();\r\n }\r\n\r\n if (this.onGenerated) {\r\n this.onGenerated();\r\n }\r\n\r\n this.onGeneratedObservable.notifyObservers(this);\r\n }\r\n\r\n /**\r\n * Clone the texture.\r\n * @returns the cloned texture\r\n */\r\n public override clone(): ProceduralTexture {\r\n const textureSize = this.getSize();\r\n const newTexture = new ProceduralTexture(this.name, textureSize.width, this._fragment, <Scene>this.getScene(), this._fallbackTexture, this._generateMipMaps);\r\n\r\n // Base texture\r\n newTexture.hasAlpha = this.hasAlpha;\r\n newTexture.level = this.level;\r\n\r\n // RenderTarget Texture\r\n newTexture.coordinatesMode = this.coordinatesMode;\r\n\r\n return newTexture;\r\n }\r\n\r\n /**\r\n * Dispose the texture and release its associated resources.\r\n */\r\n public override dispose(): void {\r\n const scene = this.getScene();\r\n\r\n if (!scene) {\r\n return;\r\n }\r\n\r\n const index = scene.proceduralTextures.indexOf(this);\r\n\r\n if (index >= 0) {\r\n scene.proceduralTextures.splice(index, 1);\r\n }\r\n\r\n const vertexBuffer = this._vertexBuffers[VertexBuffer.PositionKind];\r\n if (vertexBuffer) {\r\n vertexBuffer.dispose();\r\n this._vertexBuffers[VertexBuffer.PositionKind] = null;\r\n }\r\n\r\n if (this._indexBuffer && this._fullEngine._releaseBuffer(this._indexBuffer)) {\r\n this._indexBuffer = null;\r\n }\r\n\r\n this.onGeneratedObservable.clear();\r\n this.onBeforeGenerationObservable.clear();\r\n\r\n super.dispose();\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for proceduralTexture.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterProceduralTexture(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.ProceduralTexture\", ProceduralTexture);\r\n}\r\n"]}
1
+ {"version":3,"file":"proceduralTexture.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Textures/Procedurals/proceduralTexture.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { serialize } from \"../../../Misc/decorators\";\r\nimport { Observable } from \"../../../Misc/observable.pure\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { type Scene } from \"../../../scene.pure\";\r\nimport { type Matrix, type Vector4, type Vector3, type Vector2 } from \"../../../Maths/math.vector.pure\";\r\nimport { type Color4, type Color3 } from \"../../../Maths/math.color.pure\";\r\nimport { type AbstractEngine } from \"../../../Engines/abstractEngine.pure\";\r\nimport { VertexBuffer } from \"../../../Buffers/buffer.pure\";\r\nimport { SceneComponentConstants } from \"../../../sceneComponent\";\r\n\r\nimport { Material } from \"../../../Materials/material.pure\";\r\nimport { type Effect } from \"../../../Materials/effect.pure\";\r\nimport { Texture } from \"../../../Materials/Textures/texture.pure\";\r\nimport { type RenderTargetTextureOptions, RenderTargetTexture } from \"../../../Materials/Textures/renderTargetTexture.pure\";\r\nimport { ProceduralTextureSceneComponent } from \"./proceduralTextureSceneComponent\";\r\n\r\nimport { type DataBuffer } from \"../../../Buffers/dataBuffer\";\r\nimport { type NodeMaterial } from \"../../Node/nodeMaterial.pure\";\r\nimport { type TextureSize } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { EngineStore } from \"../../../Engines/engineStore\";\r\nimport { Constants } from \"../../../Engines/constants\";\r\nimport { DrawWrapper } from \"../../drawWrapper\";\r\nimport { type RenderTargetWrapper } from \"../../../Engines/renderTargetWrapper\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { type ThinTexture } from \"core/Materials/Textures/thinTexture\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\n\r\n/**\r\n * Options to create a procedural texture\r\n */\r\nexport interface IProceduralTextureCreationOptions extends RenderTargetTextureOptions {\r\n /**\r\n * Defines a fallback texture in case there were issues to create the custom texture\r\n */\r\n fallbackTexture?: Nullable<Texture>;\r\n /**\r\n * The shader language of the shader. (default: GLSL)\r\n */\r\n shaderLanguage?: ShaderLanguage;\r\n /**\r\n * Additional async code to run before preparing the effect\r\n */\r\n extraInitializationsAsync?: () => Promise<void>;\r\n /**\r\n * When true the texture will not be pushed onto scene.proceduralTextures and will\r\n * therefore never be rendered automatically by the scene render loop. Use this for\r\n * one-shot or manually-driven textures that manage their own render lifecycle.\r\n */\r\n skipSceneRegistration?: boolean;\r\n}\r\n\r\n/**\r\n * Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes calmpler' images.\r\n * This is the base class of any Procedural texture and contains most of the shareable code.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/proceduralTextures\r\n */\r\nexport class ProceduralTexture extends Texture {\r\n /**\r\n * Define if the texture is enabled or not (disabled texture will not render)\r\n */\r\n @serialize()\r\n public isEnabled = true;\r\n\r\n /**\r\n * Define if the texture must be cleared before rendering (default is true)\r\n */\r\n @serialize()\r\n public autoClear = true;\r\n\r\n /**\r\n * Callback called when the texture is generated\r\n */\r\n public onGenerated: () => void;\r\n\r\n /**\r\n * Event raised when the texture is generated\r\n */\r\n public onGeneratedObservable = new Observable<ProceduralTexture>();\r\n\r\n /**\r\n * Event raised before the texture is generated\r\n */\r\n public onBeforeGenerationObservable = new Observable<ProceduralTexture>();\r\n\r\n /**\r\n * Gets or sets the node material used to create this texture (null if the texture was manually created)\r\n */\r\n public nodeMaterialSource: Nullable<NodeMaterial> = null;\r\n\r\n /**\r\n * Define the list of custom preprocessor defines used in the shader\r\n */\r\n public defines: string = \"\";\r\n\r\n /** @internal */\r\n @serialize()\r\n public _generateMipMaps: boolean;\r\n\r\n private _drawWrapper: DrawWrapper;\r\n\r\n /** @internal */\r\n public _textures: { [key: string]: ThinTexture } = {};\r\n\r\n /** @internal */\r\n protected _fallbackTexture: Nullable<Texture>;\r\n\r\n /** @internal */\r\n private _shaderLanguage: ShaderLanguage;\r\n\r\n /**\r\n * Gets the shader language type used to generate vertex and fragment source code.\r\n */\r\n public get shaderLanguage(): ShaderLanguage {\r\n return this._shaderLanguage;\r\n }\r\n\r\n @serialize()\r\n private _size: TextureSize;\r\n private _textureType: number;\r\n private _currentRefreshId = -1;\r\n private _frameId = -1;\r\n private _refreshRate = 1;\r\n private _vertexBuffers: { [key: string]: Nullable<VertexBuffer> } = {};\r\n private _indexBuffer: Nullable<DataBuffer>;\r\n private _uniforms = new Array<string>();\r\n private _samplers = new Array<string>();\r\n private _fragment: any;\r\n\r\n private _floats: { [key: string]: number } = {};\r\n private _ints: { [key: string]: number } = {};\r\n private _floatsArrays: { [key: string]: number[] } = {};\r\n private _colors3: { [key: string]: Color3 } = {};\r\n private _colors4: { [key: string]: Color4 } = {};\r\n private _vectors2: { [key: string]: Vector2 } = {};\r\n private _vectors3: { [key: string]: Vector3 } = {};\r\n private _vectors4: { [key: string]: Vector4 } = {};\r\n private _matrices: { [key: string]: Matrix } = {};\r\n\r\n private _fallbackTextureUsed = false;\r\n private _fullEngine: AbstractEngine;\r\n\r\n private _cachedDefines: Nullable<string> = null;\r\n\r\n private _contentUpdateId = -1;\r\n private _contentData: Nullable<Promise<ArrayBufferView>>;\r\n\r\n private _rtWrapper: Nullable<RenderTargetWrapper> = null;\r\n private _options: IProceduralTextureCreationOptions;\r\n\r\n /**\r\n * Instantiates a new procedural texture.\r\n * Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes called 'refMaps' or 'sampler' images.\r\n * This is the base class of any Procedural texture and contains most of the shareable code.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/proceduralTextures\r\n * @param name Define the name of the texture\r\n * @param size Define the size of the texture to create\r\n * @param fragment Define the fragment shader to use to generate the texture or null if it is defined later:\r\n * * object: \\{ fragmentElement: \"fragmentShaderCode\" \\}, used with shader code in script tags\r\n * * object: \\{ fragmentSource: \"fragment shader code string\" \\}, the string contains the shader code\r\n * * string: the string contains a name \"XXX\" to lookup in Effect.ShadersStore[\"XXXFragmentShader\"]\r\n * @param scene Define the scene the texture belongs to\r\n * @param fallbackTexture Define a fallback texture in case there were issues to create the custom texture\r\n * @param generateMipMaps Define if the texture should creates mip maps or not\r\n * @param isCube Define if the texture is a cube texture or not (this will render each faces of the cube)\r\n * @param textureType The FBO internal texture type\r\n */\r\n constructor(\r\n name: string,\r\n size: TextureSize,\r\n fragment: any,\r\n scene: Nullable<Scene>,\r\n fallbackTexture: Nullable<Texture> | IProceduralTextureCreationOptions = null,\r\n generateMipMaps = true,\r\n isCube = false,\r\n textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE\r\n ) {\r\n super(null, scene, !generateMipMaps);\r\n\r\n if (fallbackTexture !== null && !(fallbackTexture instanceof Texture)) {\r\n this._options = fallbackTexture;\r\n this._fallbackTexture = fallbackTexture.fallbackTexture ?? null;\r\n } else {\r\n this._options = {};\r\n this._fallbackTexture = fallbackTexture;\r\n }\r\n\r\n this._shaderLanguage = this._options.shaderLanguage ?? ShaderLanguage.GLSL;\r\n\r\n scene = this.getScene() || EngineStore.LastCreatedScene!;\r\n let component = scene._getComponent(SceneComponentConstants.NAME_PROCEDURALTEXTURE);\r\n if (!component) {\r\n component = new ProceduralTextureSceneComponent(scene);\r\n scene._addComponent(component);\r\n }\r\n if (!this._options.skipSceneRegistration) {\r\n scene.proceduralTextures.push(this);\r\n }\r\n\r\n this._fullEngine = scene.getEngine();\r\n\r\n this.name = name;\r\n this.isRenderTarget = true;\r\n this._size = size;\r\n this._textureType = textureType;\r\n this._generateMipMaps = generateMipMaps;\r\n this._drawWrapper = new DrawWrapper(this._fullEngine);\r\n\r\n this.setFragment(fragment);\r\n\r\n const rtWrapper = this._createRtWrapper(isCube, size, generateMipMaps, textureType);\r\n this._texture = rtWrapper.texture;\r\n\r\n // VBO\r\n const vertices = [];\r\n vertices.push(1, 1);\r\n vertices.push(-1, 1);\r\n vertices.push(-1, -1);\r\n vertices.push(1, -1);\r\n\r\n this._vertexBuffers[VertexBuffer.PositionKind] = new VertexBuffer(this._fullEngine, vertices, VertexBuffer.PositionKind, false, false, 2);\r\n\r\n this._createIndexBuffer();\r\n }\r\n\r\n private _createRtWrapper(isCube: boolean, size: TextureSize, generateMipMaps: boolean, textureType: number) {\r\n if (isCube) {\r\n this._rtWrapper = this._fullEngine.createRenderTargetCubeTexture(size as number, {\r\n generateMipMaps: generateMipMaps,\r\n generateDepthBuffer: false,\r\n generateStencilBuffer: false,\r\n type: textureType,\r\n ...this._options,\r\n });\r\n this.setFloat(\"face\", 0);\r\n } else {\r\n this._rtWrapper = this._fullEngine.createRenderTargetTexture(size, {\r\n generateMipMaps: generateMipMaps,\r\n generateDepthBuffer: false,\r\n generateStencilBuffer: false,\r\n type: textureType,\r\n ...this._options,\r\n });\r\n if (this._rtWrapper.is3D) {\r\n this.setFloat(\"layer\", 0);\r\n this.setInt(\"layerNum\", 0);\r\n }\r\n }\r\n return this._rtWrapper;\r\n }\r\n\r\n /**\r\n * The effect that is created when initializing the post process.\r\n * @returns The created effect corresponding the postprocess.\r\n */\r\n public getEffect(): Effect {\r\n return this._drawWrapper.effect!;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _setEffect(effect: Effect) {\r\n this._drawWrapper.effect = effect;\r\n }\r\n\r\n /**\r\n * Gets texture content (Use this function wisely as reading from a texture can be slow)\r\n * @returns an ArrayBufferView promise (Uint8Array or Float32Array)\r\n */\r\n public getContent(): Nullable<Promise<ArrayBufferView>> {\r\n if (this._contentData && this._frameId === this._contentUpdateId) {\r\n return this._contentData;\r\n }\r\n\r\n if (this._contentData) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises, github/no-then\r\n this._contentData.then((buffer) => {\r\n this._contentData = this.readPixels(0, 0, buffer);\r\n this._contentUpdateId = this._frameId;\r\n });\r\n } else {\r\n this._contentData = this.readPixels(0, 0);\r\n this._contentUpdateId = this._frameId;\r\n }\r\n\r\n return this._contentData;\r\n }\r\n\r\n private _createIndexBuffer(): void {\r\n const engine = this._fullEngine;\r\n\r\n // Indices\r\n const indices = [];\r\n indices.push(0);\r\n indices.push(1);\r\n indices.push(2);\r\n\r\n indices.push(0);\r\n indices.push(2);\r\n indices.push(3);\r\n\r\n this._indexBuffer = engine.createIndexBuffer(indices);\r\n }\r\n\r\n /** @internal */\r\n public override _rebuild(): void {\r\n const vb = this._vertexBuffers[VertexBuffer.PositionKind];\r\n\r\n if (vb) {\r\n vb._rebuild();\r\n }\r\n\r\n this._createIndexBuffer();\r\n\r\n if (this.refreshRate === RenderTargetTexture.REFRESHRATE_RENDER_ONCE) {\r\n this.refreshRate = RenderTargetTexture.REFRESHRATE_RENDER_ONCE;\r\n }\r\n }\r\n\r\n /**\r\n * Resets the texture in order to recreate its associated resources.\r\n * This can be called in case of context loss or if you change the shader code and need to regenerate the texture with the new code\r\n */\r\n public reset(): void {\r\n this._drawWrapper.effect?.dispose();\r\n this._drawWrapper.effect = null;\r\n this._cachedDefines = null;\r\n }\r\n\r\n protected _getDefines(): string {\r\n return this.defines;\r\n }\r\n\r\n /**\r\n * Executes a function when the texture will be ready to be drawn.\r\n * @param func The callback to be used.\r\n */\r\n public executeWhenReady(func: (texture: ProceduralTexture) => void): void {\r\n if (this.isReady()) {\r\n func(this);\r\n return;\r\n }\r\n\r\n const effect = this.getEffect();\r\n if (effect) {\r\n effect.executeWhenCompiled(() => {\r\n func(this);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Is the texture ready to be used ? (rendered at least once)\r\n * @returns true if ready, otherwise, false.\r\n */\r\n public override isReady(): boolean {\r\n const engine = this._fullEngine;\r\n\r\n if (this.nodeMaterialSource) {\r\n // When sourced from a node material, the effect is created asynchronously once the material\r\n // build completes (some node material blocks load their shader code asynchronously). Until\r\n // then there is no effect yet, so the texture is simply not ready.\r\n return this._drawWrapper.effect?.isReady() ?? false;\r\n }\r\n\r\n if (!this._fragment) {\r\n return false;\r\n }\r\n\r\n if (this._fallbackTextureUsed) {\r\n return true;\r\n }\r\n\r\n if (!this._texture) {\r\n return false;\r\n }\r\n\r\n const defines = this._getDefines();\r\n if (this._drawWrapper.effect && defines === this._cachedDefines && this._drawWrapper.effect.isReady()) {\r\n return true;\r\n }\r\n\r\n const shaders = {\r\n vertex: \"procedural\",\r\n fragmentElement: this._fragment.fragmentElement,\r\n fragmentSource: this._fragment.fragmentSource,\r\n fragment: typeof this._fragment === \"string\" ? this._fragment : undefined,\r\n };\r\n\r\n if (this._cachedDefines !== defines) {\r\n this._cachedDefines = defines;\r\n\r\n this._drawWrapper.effect = engine.createEffect(\r\n shaders,\r\n [VertexBuffer.PositionKind],\r\n this._uniforms,\r\n this._samplers,\r\n defines,\r\n undefined,\r\n undefined,\r\n () => {\r\n this._rtWrapper?.dispose();\r\n this._rtWrapper = this._texture = null;\r\n\r\n if (this._fallbackTexture) {\r\n this._texture = this._fallbackTexture._texture;\r\n\r\n if (this._texture) {\r\n this._texture.incrementReferences();\r\n }\r\n }\r\n\r\n this._fallbackTextureUsed = true;\r\n },\r\n undefined,\r\n this._shaderLanguage,\r\n async () => {\r\n if (this._options.extraInitializationsAsync) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"../../../ShadersWGSL/procedural.vertex\"), this._options.extraInitializationsAsync()]);\r\n } else {\r\n await Promise.all([import(\"../../../Shaders/procedural.vertex\"), this._options.extraInitializationsAsync()]);\r\n }\r\n } else {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n await import(\"../../../ShadersWGSL/procedural.vertex\");\r\n } else {\r\n await import(\"../../../Shaders/procedural.vertex\");\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n return this._drawWrapper.effect!.isReady();\r\n }\r\n\r\n /**\r\n * Resets the refresh counter of the texture and start bak from scratch.\r\n * Could be useful to regenerate the texture if it is setup to render only once.\r\n */\r\n public resetRefreshCounter(): void {\r\n this._currentRefreshId = -1;\r\n }\r\n\r\n /**\r\n * Set the fragment shader to use in order to render the texture.\r\n * @param fragment This can be set to a path (into the shader store) or to a json object containing a fragmentElement property.\r\n */\r\n public setFragment(fragment: any) {\r\n this._fragment = fragment;\r\n }\r\n\r\n /**\r\n * Define the refresh rate of the texture or the rendering frequency.\r\n * Use 0 to render just once, 1 to render on every frame, 2 to render every two frames and so on...\r\n */\r\n @serialize()\r\n public get refreshRate(): number {\r\n return this._refreshRate;\r\n }\r\n\r\n public set refreshRate(value: number) {\r\n this._refreshRate = value;\r\n this.resetRefreshCounter();\r\n }\r\n\r\n /** @internal */\r\n public _shouldRender(): boolean {\r\n if (!this.isEnabled || !this.isReady() || !this._texture) {\r\n if (this._texture) {\r\n this._texture.isReady = false;\r\n }\r\n return false;\r\n }\r\n\r\n if (this._fallbackTextureUsed) {\r\n return false;\r\n }\r\n\r\n if (this._currentRefreshId === -1) {\r\n // At least render once\r\n this._currentRefreshId = 1;\r\n this._frameId++;\r\n return true;\r\n }\r\n\r\n if (this.refreshRate === this._currentRefreshId) {\r\n this._currentRefreshId = 1;\r\n this._frameId++;\r\n return true;\r\n }\r\n\r\n this._currentRefreshId++;\r\n return false;\r\n }\r\n\r\n /**\r\n * Get the size the texture is rendering at.\r\n * @returns the size (on cube texture it is always squared)\r\n */\r\n public getRenderSize(): TextureSize {\r\n return this._size;\r\n }\r\n\r\n /**\r\n * Resize the texture to new value.\r\n * @param size Define the new size the texture should have\r\n * @param generateMipMaps Define whether the new texture should create mip maps\r\n */\r\n public resize(size: TextureSize, generateMipMaps: boolean): void {\r\n if (this._fallbackTextureUsed || !this._rtWrapper || !this._texture) {\r\n return;\r\n }\r\n\r\n const isCube = this._texture.isCube;\r\n this._rtWrapper.dispose();\r\n\r\n const rtWrapper = this._createRtWrapper(isCube, size, generateMipMaps, this._textureType);\r\n this._texture = rtWrapper.texture;\r\n\r\n // Update properties\r\n this._size = size;\r\n this._generateMipMaps = generateMipMaps;\r\n }\r\n\r\n private _checkUniform(uniformName: string): void {\r\n if (this._uniforms.indexOf(uniformName) === -1) {\r\n this._uniforms.push(uniformName);\r\n }\r\n }\r\n\r\n /**\r\n * Set a texture in the shader program used to render.\r\n * @param name Define the name of the uniform samplers as defined in the shader\r\n * @param texture Define the texture to bind to this sampler\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setTexture(name: string, texture: ThinTexture): ProceduralTexture {\r\n if (this._samplers.indexOf(name) === -1) {\r\n this._samplers.push(name);\r\n }\r\n this._textures[name] = texture;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a float in the shader.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setFloat(name: string, value: number): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._floats[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a int in the shader.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setInt(name: string, value: number): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._ints[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set an array of floats in the shader.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setFloats(name: string, value: number[]): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._floatsArrays[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a vec3 in the shader from a Color3.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setColor3(name: string, value: Color3): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._colors3[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a vec4 in the shader from a Color4.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setColor4(name: string, value: Color4): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._colors4[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a vec2 in the shader from a Vector2.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setVector2(name: string, value: Vector2): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._vectors2[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a vec3 in the shader from a Vector3.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setVector3(name: string, value: Vector3): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._vectors3[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a vec4 in the shader from a Vector4.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setVector4(name: string, value: Vector4): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._vectors4[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a mat4 in the shader from a MAtrix.\r\n * @param name Define the name of the uniform as defined in the shader\r\n * @param value Define the value to give to the uniform\r\n * @returns the texture itself allowing \"fluent\" like uniform updates\r\n */\r\n public setMatrix(name: string, value: Matrix): ProceduralTexture {\r\n this._checkUniform(name);\r\n this._matrices[name] = value;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Render the texture to its associated render target.\r\n * @param useCameraPostProcess Define if camera post process should be applied to the texture\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public render(useCameraPostProcess?: boolean): void {\r\n const scene = this.getScene();\r\n\r\n if (!scene) {\r\n return;\r\n }\r\n\r\n const engine = this._fullEngine;\r\n\r\n // Render\r\n engine.enableEffect(this._drawWrapper);\r\n this.onBeforeGenerationObservable.notifyObservers(this);\r\n engine.setState(false);\r\n\r\n if (!this.nodeMaterialSource) {\r\n // Texture\r\n for (const name in this._textures) {\r\n this._drawWrapper.effect!.setTexture(name, this._textures[name]);\r\n }\r\n\r\n // Float\r\n for (const name in this._ints) {\r\n this._drawWrapper.effect!.setInt(name, this._ints[name]);\r\n }\r\n\r\n // Float\r\n for (const name in this._floats) {\r\n this._drawWrapper.effect!.setFloat(name, this._floats[name]);\r\n }\r\n\r\n // Floats\r\n for (const name in this._floatsArrays) {\r\n this._drawWrapper.effect!.setArray(name, this._floatsArrays[name]);\r\n }\r\n\r\n // Color3\r\n for (const name in this._colors3) {\r\n this._drawWrapper.effect!.setColor3(name, this._colors3[name]);\r\n }\r\n\r\n // Color4\r\n for (const name in this._colors4) {\r\n const color = this._colors4[name];\r\n this._drawWrapper.effect!.setFloat4(name, color.r, color.g, color.b, color.a);\r\n }\r\n\r\n // Vector2\r\n for (const name in this._vectors2) {\r\n this._drawWrapper.effect!.setVector2(name, this._vectors2[name]);\r\n }\r\n\r\n // Vector3\r\n for (const name in this._vectors3) {\r\n this._drawWrapper.effect!.setVector3(name, this._vectors3[name]);\r\n }\r\n\r\n // Vector4\r\n for (const name in this._vectors4) {\r\n this._drawWrapper.effect!.setVector4(name, this._vectors4[name]);\r\n }\r\n\r\n // Matrix\r\n for (const name in this._matrices) {\r\n this._drawWrapper.effect!.setMatrix(name, this._matrices[name]);\r\n }\r\n }\r\n\r\n if (!this._texture || !this._rtWrapper) {\r\n return;\r\n }\r\n\r\n if (engine._enableGPUDebugMarkers) {\r\n engine._debugPushGroup?.(`procedural texture generation for ${this.name}`);\r\n }\r\n\r\n const viewPort = engine.currentViewport;\r\n if (this.isCube) {\r\n for (let face = 0; face < 6; face++) {\r\n engine.bindFramebuffer(this._rtWrapper, face, undefined, undefined, true);\r\n\r\n // VBOs\r\n engine.bindBuffers(this._vertexBuffers, this._indexBuffer, this._drawWrapper.effect!);\r\n\r\n this._drawWrapper.effect!.setFloat(\"face\", face);\r\n\r\n // Clear\r\n if (this.autoClear) {\r\n engine.clear(scene.clearColor, true, false, false);\r\n }\r\n\r\n // Draw order\r\n engine.drawElementsType(Material.TriangleFillMode, 0, 6);\r\n // Unbind and restore viewport\r\n engine.unBindFramebuffer(this._rtWrapper, true);\r\n }\r\n } else {\r\n let numLayers = 1;\r\n if (this._rtWrapper.is3D) {\r\n numLayers = this._rtWrapper.depth;\r\n } else if (this._rtWrapper.is2DArray) {\r\n numLayers = this._rtWrapper.layers;\r\n }\r\n for (let layer = 0; layer < numLayers; layer++) {\r\n engine.bindFramebuffer(this._rtWrapper, 0, undefined, undefined, true, 0, layer);\r\n\r\n // VBOs\r\n engine.bindBuffers(this._vertexBuffers, this._indexBuffer, this._drawWrapper.effect!);\r\n\r\n if (this._rtWrapper.is3D || this._rtWrapper.is2DArray) {\r\n this._drawWrapper.effect?.setFloat(\"layer\", numLayers !== 1 ? layer / (numLayers - 1) : 0);\r\n this._drawWrapper.effect?.setInt(\"layerNum\", layer);\r\n for (const name in this._textures) {\r\n this._drawWrapper.effect!.setTexture(name, this._textures[name]);\r\n }\r\n }\r\n\r\n // Clear\r\n if (this.autoClear) {\r\n engine.clear(scene.clearColor, true, false, false);\r\n }\r\n\r\n // Draw order\r\n engine.drawElementsType(Material.TriangleFillMode, 0, 6);\r\n // Unbind and restore viewport\r\n engine.unBindFramebuffer(this._rtWrapper, !this._generateMipMaps);\r\n }\r\n }\r\n\r\n if (viewPort) {\r\n engine.setViewport(viewPort);\r\n }\r\n\r\n // Mipmaps\r\n if (this.isCube) {\r\n engine.generateMipMapsForCubemap(this._texture, true);\r\n }\r\n\r\n if (engine._enableGPUDebugMarkers) {\r\n engine._debugPopGroup?.();\r\n }\r\n\r\n if (this.onGenerated) {\r\n this.onGenerated();\r\n }\r\n\r\n this.onGeneratedObservable.notifyObservers(this);\r\n }\r\n\r\n /**\r\n * Clone the texture.\r\n * @returns the cloned texture\r\n */\r\n public override clone(): ProceduralTexture {\r\n const textureSize = this.getSize();\r\n const newTexture = new ProceduralTexture(this.name, textureSize.width, this._fragment, <Scene>this.getScene(), this._fallbackTexture, this._generateMipMaps);\r\n\r\n // Base texture\r\n newTexture.hasAlpha = this.hasAlpha;\r\n newTexture.level = this.level;\r\n\r\n // RenderTarget Texture\r\n newTexture.coordinatesMode = this.coordinatesMode;\r\n\r\n return newTexture;\r\n }\r\n\r\n /**\r\n * Dispose the texture and release its associated resources.\r\n */\r\n public override dispose(): void {\r\n const scene = this.getScene();\r\n\r\n if (!scene) {\r\n return;\r\n }\r\n\r\n const index = scene.proceduralTextures.indexOf(this);\r\n\r\n if (index >= 0) {\r\n scene.proceduralTextures.splice(index, 1);\r\n }\r\n\r\n const vertexBuffer = this._vertexBuffers[VertexBuffer.PositionKind];\r\n if (vertexBuffer) {\r\n vertexBuffer.dispose();\r\n this._vertexBuffers[VertexBuffer.PositionKind] = null;\r\n }\r\n\r\n if (this._indexBuffer && this._fullEngine._releaseBuffer(this._indexBuffer)) {\r\n this._indexBuffer = null;\r\n }\r\n\r\n this.onGeneratedObservable.clear();\r\n this.onBeforeGenerationObservable.clear();\r\n\r\n super.dispose();\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for proceduralTexture.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterProceduralTexture(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.ProceduralTexture\", ProceduralTexture);\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { Tools } from "../../../Misc/tools.js";
1
+ import { Tools } from "../../../Misc/tools.pure.js";
2
2
  import { SceneComponentConstants } from "../../../sceneComponent.js";
3
3
  /**
4
4
  * Defines the Procedural Texture scene component responsible to manage any Procedural Texture