@onerjs/core 8.52.8 → 8.52.9

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 (1058) 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/subNodes/audioAnalyzerSubNode.d.ts +2 -0
  23. package/AudioV2/abstractAudio/subNodes/audioAnalyzerSubNode.js.map +1 -1
  24. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.d.ts +13 -3
  25. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.js +16 -0
  26. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.js.map +1 -1
  27. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.d.ts +1 -1
  28. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js +1 -1
  29. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js.map +1 -1
  30. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.d.ts +1 -1
  31. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js +1 -1
  32. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js.map +1 -1
  33. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.d.ts +4 -0
  34. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js +22 -0
  35. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js.map +1 -1
  36. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +1 -1
  37. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +1 -1
  38. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
  39. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.d.ts +6 -0
  40. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js +22 -5
  41. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js.map +1 -1
  42. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +1 -1
  43. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
  44. package/AudioV2/webAudio/webAudioStreamingSound.js +1 -1
  45. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  46. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
  47. package/BakedVertexAnimation/bakedVertexAnimationManager.js +1 -1
  48. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  49. package/BakedVertexAnimation/vertexAnimationBaker.js +1 -1
  50. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -1
  51. package/Behaviors/Cameras/bouncingBehavior.js +1 -1
  52. package/Behaviors/Cameras/bouncingBehavior.js.map +1 -1
  53. package/Behaviors/Cameras/framingBehavior.d.ts +1 -1
  54. package/Behaviors/Cameras/framingBehavior.js +2 -2
  55. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  56. package/Behaviors/Cameras/interpolatingBehavior.d.ts +13 -1
  57. package/Behaviors/Cameras/interpolatingBehavior.js +13 -1
  58. package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
  59. package/Behaviors/Meshes/attachToBoxBehavior.js +1 -1
  60. package/Behaviors/Meshes/attachToBoxBehavior.js.map +1 -1
  61. package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +3 -3
  62. package/Behaviors/Meshes/baseSixDofDragBehavior.js +4 -4
  63. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  64. package/Behaviors/Meshes/followBehavior.js +1 -1
  65. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  66. package/Behaviors/Meshes/handConstraintBehavior.js +2 -2
  67. package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
  68. package/Behaviors/Meshes/multiPointerScaleBehavior.js +1 -1
  69. package/Behaviors/Meshes/multiPointerScaleBehavior.js.map +1 -1
  70. package/Behaviors/Meshes/pointerDragBehavior.d.ts +3 -3
  71. package/Behaviors/Meshes/pointerDragBehavior.js +5 -5
  72. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  73. package/Behaviors/Meshes/sixDofDragBehavior.d.ts +1 -1
  74. package/Behaviors/Meshes/sixDofDragBehavior.js +2 -2
  75. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  76. package/Behaviors/Meshes/surfaceMagnetismBehavior.js +1 -1
  77. package/Behaviors/Meshes/surfaceMagnetismBehavior.js.map +1 -1
  78. package/Bones/boneIKController.d.ts +1 -1
  79. package/Bones/boneIKController.js +1 -1
  80. package/Bones/boneIKController.js.map +1 -1
  81. package/Bones/boneLookController.d.ts +1 -1
  82. package/Bones/boneLookController.js +1 -1
  83. package/Bones/boneLookController.js.map +1 -1
  84. package/Bones/skeleton.d.ts +2 -2
  85. package/Bones/skeleton.functions.d.ts +1 -1
  86. package/Bones/skeleton.functions.js +3 -3
  87. package/Bones/skeleton.functions.js.map +1 -1
  88. package/Bones/skeleton.js +3 -4
  89. package/Bones/skeleton.js.map +1 -1
  90. package/Buffers/buffer.align.pure.js +6 -0
  91. package/Buffers/buffer.align.pure.js.map +1 -1
  92. package/Buffers/buffer.nonFloatVertexBuffers.js +2 -1
  93. package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
  94. package/Buffers/buffer.pure.d.ts +8 -0
  95. package/Buffers/buffer.pure.js +31 -2
  96. package/Buffers/buffer.pure.js.map +1 -1
  97. package/Buffers/bufferUtils.js +17 -5
  98. package/Buffers/bufferUtils.js.map +1 -1
  99. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +1 -1
  100. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  101. package/Cameras/Inputs/BaseCameraPointersInput.js +1 -1
  102. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  103. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +1 -1
  104. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  105. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +2 -2
  106. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  107. package/Cameras/Inputs/flyCameraKeyboardInput.js +2 -2
  108. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  109. package/Cameras/Inputs/flyCameraMouseInput.js +2 -2
  110. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  111. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +1 -1
  112. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  113. package/Cameras/Inputs/followCameraMouseWheelInput.js +1 -1
  114. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  115. package/Cameras/Inputs/freeCameraGamepadInput.js +1 -1
  116. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  117. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +2 -2
  118. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  119. package/Cameras/Inputs/freeCameraMouseInput.js +1 -1
  120. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  121. package/Cameras/Inputs/freeCameraMouseWheelInput.js +1 -1
  122. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  123. package/Cameras/Inputs/freeCameraTouchInput.js +2 -2
  124. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  125. package/Cameras/Inputs/geospatialCameraKeyboardInput.js +1 -1
  126. package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
  127. package/Cameras/Limits/geospatialLimits.d.ts +1 -1
  128. package/Cameras/Limits/geospatialLimits.js +1 -1
  129. package/Cameras/Limits/geospatialLimits.js.map +1 -1
  130. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js +2 -2
  131. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js.map +1 -1
  132. package/Cameras/RigModes/stereoscopicRigMode.d.ts +1 -1
  133. package/Cameras/RigModes/stereoscopicRigMode.js +3 -3
  134. package/Cameras/RigModes/stereoscopicRigMode.js.map +1 -1
  135. package/Cameras/RigModes/vrRigMode.js +2 -2
  136. package/Cameras/RigModes/vrRigMode.js.map +1 -1
  137. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +3 -3
  138. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +5 -5
  139. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  140. package/Cameras/VR/vrCameraMetrics.d.ts +1 -1
  141. package/Cameras/VR/vrCameraMetrics.js +1 -1
  142. package/Cameras/VR/vrCameraMetrics.js.map +1 -1
  143. package/Cameras/cameraInputsManager.d.ts +1 -1
  144. package/Cameras/cameraInputsManager.js +1 -1
  145. package/Cameras/cameraInputsManager.js.map +1 -1
  146. package/Collisions/collider.d.ts +1 -1
  147. package/Collisions/collider.js +1 -1
  148. package/Collisions/collider.js.map +1 -1
  149. package/Collisions/gpuPicker.d.ts +1 -1
  150. package/Collisions/gpuPicker.js +5 -5
  151. package/Collisions/gpuPicker.js.map +1 -1
  152. package/Collisions/meshCollisionData.d.ts +1 -1
  153. package/Collisions/meshCollisionData.js +1 -1
  154. package/Collisions/meshCollisionData.js.map +1 -1
  155. package/Collisions/pickingInfo.d.ts +1 -1
  156. package/Collisions/pickingInfo.js +2 -2
  157. package/Collisions/pickingInfo.js.map +1 -1
  158. package/Compute/computeEffect.d.ts +6 -0
  159. package/Compute/computeEffect.js +3 -0
  160. package/Compute/computeEffect.js.map +1 -1
  161. package/Compute/computeShader.pure.d.ts +4 -0
  162. package/Compute/computeShader.pure.js +1 -0
  163. package/Compute/computeShader.pure.js.map +1 -1
  164. package/Culling/Octrees/octreeBlock.d.ts +1 -1
  165. package/Culling/Octrees/octreeBlock.js +1 -1
  166. package/Culling/Octrees/octreeBlock.js.map +1 -1
  167. package/Culling/boundingBox.d.ts +1 -1
  168. package/Culling/boundingBox.js +1 -1
  169. package/Culling/boundingBox.js.map +1 -1
  170. package/Culling/boundingInfo.d.ts +1 -1
  171. package/Culling/boundingInfo.js +1 -1
  172. package/Culling/boundingInfo.js.map +1 -1
  173. package/Culling/boundingSphere.d.ts +1 -1
  174. package/Culling/boundingSphere.js +1 -1
  175. package/Culling/boundingSphere.js.map +1 -1
  176. package/Culling/ray.core.d.ts +1 -1
  177. package/Culling/ray.core.js +1 -1
  178. package/Culling/ray.core.js.map +1 -1
  179. package/Debug/axesViewer.d.ts +1 -1
  180. package/Debug/axesViewer.js +3 -3
  181. package/Debug/axesViewer.js.map +1 -1
  182. package/Debug/boneAxesViewer.d.ts +1 -1
  183. package/Debug/boneAxesViewer.js +1 -1
  184. package/Debug/boneAxesViewer.js.map +1 -1
  185. package/Debug/directionalLightFrustumViewer.d.ts +1 -1
  186. package/Debug/directionalLightFrustumViewer.js +6 -6
  187. package/Debug/directionalLightFrustumViewer.js.map +1 -1
  188. package/Debug/rayHelper.d.ts +1 -1
  189. package/Debug/rayHelper.js +2 -2
  190. package/Debug/rayHelper.js.map +1 -1
  191. package/Debug/skeletonViewer.d.ts +2 -2
  192. package/Debug/skeletonViewer.js +10 -10
  193. package/Debug/skeletonViewer.js.map +1 -1
  194. package/DeviceInput/internalDeviceSourceManager.d.ts +1 -1
  195. package/DeviceInput/internalDeviceSourceManager.js +0 -1
  196. package/DeviceInput/internalDeviceSourceManager.js.map +1 -1
  197. package/DeviceInput/webDeviceInputSystem.js +1 -1
  198. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  199. package/Engines/Extensions/engine.views.d.ts +1 -1
  200. package/Engines/Extensions/engine.views.js +1 -1
  201. package/Engines/Extensions/engine.views.js.map +1 -1
  202. package/Engines/Native/nativeHelpers.js +4 -1
  203. package/Engines/Native/nativeHelpers.js.map +1 -1
  204. package/Engines/WebGPU/Extensions/engine.computeShader.pure.js +154 -2
  205. package/Engines/WebGPU/Extensions/engine.computeShader.pure.js.map +1 -1
  206. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -1
  207. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +11 -1
  208. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  209. package/Engines/WebGPU/webgpuComputeContext.d.ts +1 -1
  210. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  211. package/Engines/WebGPU/webgpuTintWASM.js +1 -1
  212. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  213. package/Engines/abstractEngine.pure.d.ts +7 -1
  214. package/Engines/abstractEngine.pure.js +34 -4
  215. package/Engines/abstractEngine.pure.js.map +1 -1
  216. package/Engines/constants.d.ts +4 -0
  217. package/Engines/constants.js +4 -0
  218. package/Engines/constants.js.map +1 -1
  219. package/Engines/engine.pure.d.ts +0 -7
  220. package/Engines/engine.pure.js +0 -34
  221. package/Engines/engine.pure.js.map +1 -1
  222. package/Engines/engineFactory.d.ts +2 -2
  223. package/Engines/engineFactory.js +3 -3
  224. package/Engines/engineFactory.js.map +1 -1
  225. package/Engines/thinNativeEngine.pure.js +2 -2
  226. package/Engines/thinNativeEngine.pure.js.map +1 -1
  227. package/Events/pointerEvents.d.ts +1 -1
  228. package/Events/pointerEvents.js +1 -1
  229. package/Events/pointerEvents.js.map +1 -1
  230. package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js +1 -1
  231. package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js.map +1 -1
  232. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +1 -1
  233. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +1 -1
  234. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  235. package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js +1 -1
  236. package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js.map +1 -1
  237. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.d.ts +1 -1
  238. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js +3 -3
  239. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js.map +1 -1
  240. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js +1 -1
  241. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js.map +1 -1
  242. package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +1 -1
  243. package/FlowGraph/CustomTypes/flowGraphMatrix.js +1 -1
  244. package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
  245. package/FlowGraph/flowGraphBlock.d.ts +1 -1
  246. package/FlowGraph/flowGraphBlock.js +1 -1
  247. package/FlowGraph/flowGraphBlock.js.map +1 -1
  248. package/FlowGraph/flowGraphExecutionBlock.d.ts +1 -1
  249. package/FlowGraph/flowGraphExecutionBlock.js +1 -1
  250. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  251. package/FlowGraph/flowGraphMath.d.ts +1 -1
  252. package/FlowGraph/flowGraphMath.js +1 -1
  253. package/FlowGraph/flowGraphMath.js.map +1 -1
  254. package/FlowGraph/flowGraphParser.js +1 -1
  255. package/FlowGraph/flowGraphParser.js.map +1 -1
  256. package/FlowGraph/flowGraphPathConverterComponent.d.ts +1 -1
  257. package/FlowGraph/flowGraphPathConverterComponent.js +2 -2
  258. package/FlowGraph/flowGraphPathConverterComponent.js.map +1 -1
  259. package/FlowGraph/flowGraphValidator.js.map +1 -1
  260. package/FlowGraph/serialization.js +4 -4
  261. package/FlowGraph/serialization.js.map +1 -1
  262. package/FlowGraph/utils.js.map +1 -1
  263. package/FrameGraph/Node/nodeRenderGraph.d.ts +2 -2
  264. package/FrameGraph/Node/nodeRenderGraph.js +7 -7
  265. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  266. package/FrameGraph/Tasks/Layers/baseLayerTask.d.ts +30 -0
  267. package/FrameGraph/Tasks/Layers/baseLayerTask.js +28 -1
  268. package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
  269. package/FrameGraph/Tasks/Misc/computeShaderTask.d.ts +2 -2
  270. package/FrameGraph/Tasks/Misc/computeShaderTask.js +2 -2
  271. package/FrameGraph/Tasks/Misc/computeShaderTask.js.map +1 -1
  272. package/FrameGraph/Tasks/Misc/lightingVolumeTask.d.ts +1 -1
  273. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +2 -2
  274. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
  275. package/FrameGraph/Tasks/PostProcesses/blurTask.d.ts +7 -0
  276. package/FrameGraph/Tasks/PostProcesses/blurTask.js +8 -1
  277. package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -1
  278. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +1 -1
  279. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
  280. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js +1 -1
  281. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js.map +1 -1
  282. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.d.ts +1 -1
  283. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js +1 -1
  284. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js.map +1 -1
  285. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.d.ts +2 -2
  286. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js +3 -3
  287. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js.map +1 -1
  288. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +1 -1
  289. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +2 -2
  290. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
  291. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +6 -0
  292. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +14 -5
  293. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  294. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +1 -1
  295. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +1 -1
  296. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
  297. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.d.ts +1 -1
  298. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js +1 -1
  299. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js.map +1 -1
  300. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.d.ts +1 -1
  301. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js +2 -2
  302. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js.map +1 -1
  303. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.d.ts +1 -1
  304. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js +2 -2
  305. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js.map +1 -1
  306. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +7 -1
  307. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +7 -1
  308. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  309. package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +1 -1
  310. package/FrameGraph/Tasks/Texture/clearTextureTask.js +1 -1
  311. package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
  312. package/FrameGraph/frameGraphRenderContext.js +1 -1
  313. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  314. package/FrameGraph/frameGraphTextureManager.d.ts +1 -1
  315. package/FrameGraph/frameGraphTextureManager.js +1 -1
  316. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  317. package/Gamepads/gamepadManager.js +1 -1
  318. package/Gamepads/gamepadManager.js.map +1 -1
  319. package/Gizmos/axisDragGizmo.d.ts +5 -5
  320. package/Gizmos/axisDragGizmo.js +6 -6
  321. package/Gizmos/axisDragGizmo.js.map +1 -1
  322. package/Gizmos/axisScaleGizmo.d.ts +4 -4
  323. package/Gizmos/axisScaleGizmo.js +6 -6
  324. package/Gizmos/axisScaleGizmo.js.map +1 -1
  325. package/Gizmos/boundingBoxGizmo.d.ts +5 -5
  326. package/Gizmos/boundingBoxGizmo.js +7 -7
  327. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  328. package/Gizmos/cameraGizmo.d.ts +3 -3
  329. package/Gizmos/cameraGizmo.js +7 -7
  330. package/Gizmos/cameraGizmo.js.map +1 -1
  331. package/Gizmos/gizmo.d.ts +2 -2
  332. package/Gizmos/gizmo.js +3 -3
  333. package/Gizmos/gizmo.js.map +1 -1
  334. package/Gizmos/gizmoManager.d.ts +2 -2
  335. package/Gizmos/gizmoManager.js +2 -2
  336. package/Gizmos/gizmoManager.js.map +1 -1
  337. package/Gizmos/lightGizmo.d.ts +4 -4
  338. package/Gizmos/lightGizmo.js +11 -11
  339. package/Gizmos/lightGizmo.js.map +1 -1
  340. package/Gizmos/planeDragGizmo.d.ts +4 -4
  341. package/Gizmos/planeDragGizmo.js +5 -5
  342. package/Gizmos/planeDragGizmo.js.map +1 -1
  343. package/Gizmos/positionGizmo.d.ts +1 -1
  344. package/Gizmos/positionGizmo.js +2 -2
  345. package/Gizmos/positionGizmo.js.map +1 -1
  346. package/Gizmos/rotationGizmo.d.ts +3 -3
  347. package/Gizmos/rotationGizmo.js +3 -3
  348. package/Gizmos/rotationGizmo.js.map +1 -1
  349. package/Gizmos/scaleGizmo.d.ts +2 -2
  350. package/Gizmos/scaleGizmo.js +4 -4
  351. package/Gizmos/scaleGizmo.js.map +1 -1
  352. package/Gizmos/spatialAudioGizmo.d.ts +2 -2
  353. package/Gizmos/spatialAudioGizmo.js +6 -6
  354. package/Gizmos/spatialAudioGizmo.js.map +1 -1
  355. package/Helpers/environmentHelper.d.ts +6 -6
  356. package/Helpers/environmentHelper.js +12 -12
  357. package/Helpers/environmentHelper.js.map +1 -1
  358. package/Helpers/materialConversionHelper.d.ts +1 -1
  359. package/Helpers/materialConversionHelper.js +1 -1
  360. package/Helpers/materialConversionHelper.js.map +1 -1
  361. package/Helpers/photoDome.d.ts +1 -1
  362. package/Helpers/photoDome.js +1 -1
  363. package/Helpers/photoDome.js.map +1 -1
  364. package/Helpers/textureDome.d.ts +4 -4
  365. package/Helpers/textureDome.js +6 -6
  366. package/Helpers/textureDome.js.map +1 -1
  367. package/Helpers/videoDome.d.ts +1 -1
  368. package/Helpers/videoDome.js +2 -2
  369. package/Helpers/videoDome.js.map +1 -1
  370. package/Inputs/scene.inputManager.d.ts +1 -1
  371. package/Inputs/scene.inputManager.js +1 -1
  372. package/Inputs/scene.inputManager.js.map +1 -1
  373. package/Instrumentation/sceneInstrumentation.js +1 -1
  374. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  375. package/Layers/effectLayer.d.ts +1 -1
  376. package/Layers/effectLayer.js +3 -3
  377. package/Layers/effectLayer.js.map +1 -1
  378. package/Layers/layer.d.ts +2 -2
  379. package/Layers/layer.js +4 -4
  380. package/Layers/layer.js.map +1 -1
  381. package/Layers/thinEffectLayer.d.ts +2 -2
  382. package/Layers/thinEffectLayer.js +3 -3
  383. package/Layers/thinEffectLayer.js.map +1 -1
  384. package/Layers/thinGlowLayer.d.ts +1 -1
  385. package/Layers/thinGlowLayer.js +3 -3
  386. package/Layers/thinGlowLayer.js.map +1 -1
  387. package/Layers/thinHighlightLayer.d.ts +1 -1
  388. package/Layers/thinHighlightLayer.js +3 -3
  389. package/Layers/thinHighlightLayer.js.map +1 -1
  390. package/Layers/thinSelectionOutlineLayer.d.ts +1 -1
  391. package/Layers/thinSelectionOutlineLayer.js +3 -3
  392. package/Layers/thinSelectionOutlineLayer.js.map +1 -1
  393. package/Legacy/legacy.js +12 -1
  394. package/Legacy/legacy.js.map +1 -1
  395. package/LensFlares/lensFlare.d.ts +2 -2
  396. package/LensFlares/lensFlare.js +3 -3
  397. package/LensFlares/lensFlare.js.map +1 -1
  398. package/LensFlares/lensFlareSystem.d.ts +1 -1
  399. package/LensFlares/lensFlareSystem.js +6 -6
  400. package/LensFlares/lensFlareSystem.js.map +1 -1
  401. package/Lights/LTC/ltcTextureTool.js +1 -1
  402. package/Lights/LTC/ltcTextureTool.js.map +1 -1
  403. package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -285
  404. package/Lights/Shadows/cascadedShadowGenerator.js +3 -857
  405. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  406. package/Lights/Shadows/cascadedShadowGenerator.pure.d.ts +290 -0
  407. package/Lights/Shadows/cascadedShadowGenerator.pure.js +868 -0
  408. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -0
  409. package/Lights/Shadows/pure.d.ts +1 -0
  410. package/Lights/Shadows/pure.js +1 -0
  411. package/Lights/Shadows/pure.js.map +1 -1
  412. package/Lights/Shadows/shadowGenerator.d.ts +3 -3
  413. package/Lights/Shadows/shadowGenerator.js +7 -7
  414. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  415. package/Lights/areaLight.d.ts +1 -1
  416. package/Lights/areaLight.js +0 -1
  417. package/Lights/areaLight.js.map +1 -1
  418. package/Lights/light.d.ts +2 -2
  419. package/Lights/light.js +2 -2
  420. package/Lights/light.js.map +1 -1
  421. package/Lights/shadowLight.d.ts +1 -1
  422. package/Lights/shadowLight.js +1 -1
  423. package/Lights/shadowLight.js.map +1 -1
  424. package/Loading/sceneLoader.d.ts +2 -2
  425. package/Loading/sceneLoader.js +3 -3
  426. package/Loading/sceneLoader.js.map +1 -1
  427. package/Materials/GreasedLine/greasedLineMaterialDefaults.d.ts +1 -1
  428. package/Materials/GreasedLine/greasedLineMaterialDefaults.js +1 -1
  429. package/Materials/GreasedLine/greasedLineMaterialDefaults.js.map +1 -1
  430. package/Materials/GreasedLine/greasedLineSimpleMaterial.d.ts +3 -3
  431. package/Materials/GreasedLine/greasedLineSimpleMaterial.js +3 -3
  432. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  433. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +6 -6
  434. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
  435. package/Materials/Node/nodeMaterial.pure.d.ts +12 -0
  436. package/Materials/Node/nodeMaterial.pure.js +68 -13
  437. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  438. package/Materials/Node/nodeMaterialDefault.js +14 -14
  439. package/Materials/Node/nodeMaterialDefault.js.map +1 -1
  440. package/Materials/PBR/openpbrMaterial.pure.js +19 -4
  441. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  442. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +40 -2
  443. package/Materials/PBR/pbrAnisotropicConfiguration.js +41 -3
  444. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  445. package/Materials/PBR/pbrBRDFConfiguration.d.ts +5 -1
  446. package/Materials/PBR/pbrBRDFConfiguration.js +5 -1
  447. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  448. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +2 -2
  449. package/Materials/PBR/pbrBaseSimpleMaterial.js +2 -2
  450. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  451. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +42 -2
  452. package/Materials/PBR/pbrClearCoatConfiguration.js +42 -2
  453. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  454. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +38 -1
  455. package/Materials/PBR/pbrIridescenceConfiguration.js +38 -1
  456. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  457. package/Materials/PBR/pbrMaterial.pure.d.ts +6 -0
  458. package/Materials/PBR/pbrMaterial.pure.js +8 -0
  459. package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
  460. package/Materials/PBR/pbrSheenConfiguration.d.ts +41 -2
  461. package/Materials/PBR/pbrSheenConfiguration.js +41 -2
  462. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  463. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +41 -2
  464. package/Materials/PBR/pbrSubSurfaceConfiguration.js +42 -3
  465. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  466. package/Materials/Textures/Filtering/hdrFiltering.js +1 -1
  467. package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
  468. package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +1 -1
  469. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +2 -2
  470. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
  471. package/Materials/Textures/Loaders/EXR/exrLoader.core.d.ts +1 -1
  472. package/Materials/Textures/Loaders/EXR/exrLoader.core.js +5 -109
  473. package/Materials/Textures/Loaders/EXR/exrLoader.core.js.map +1 -1
  474. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js +1 -1
  475. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js.map +1 -1
  476. package/Materials/Textures/Loaders/basisTextureLoader.js +2 -2
  477. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  478. package/Materials/Textures/Loaders/ddsTextureLoader.js +1 -1
  479. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  480. package/Materials/Textures/Loaders/envTextureLoader.js +3 -1
  481. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  482. package/Materials/Textures/Loaders/ktxTextureLoader.js +11 -2
  483. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  484. package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -1
  485. package/Materials/Textures/MultiviewRenderTarget.js +1 -1
  486. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  487. package/Materials/Textures/Packer/packer.d.ts +1 -1
  488. package/Materials/Textures/Packer/packer.js +6 -6
  489. package/Materials/Textures/Packer/packer.js.map +1 -1
  490. package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +2 -2
  491. package/Materials/Textures/Procedurals/customProceduralTexture.js +4 -4
  492. package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
  493. package/Materials/Textures/Procedurals/noiseProceduralTexture.pure.js +17 -5
  494. package/Materials/Textures/Procedurals/noiseProceduralTexture.pure.js.map +1 -1
  495. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +4 -1
  496. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  497. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js +1 -1
  498. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js.map +1 -1
  499. package/Materials/Textures/prePassRenderTarget.d.ts +1 -1
  500. package/Materials/Textures/prePassRenderTarget.js +1 -1
  501. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  502. package/Materials/Textures/rawCubeTexture.d.ts +1 -1
  503. package/Materials/Textures/rawCubeTexture.js +2 -2
  504. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  505. package/Materials/Textures/rawTexture.d.ts +1 -1
  506. package/Materials/Textures/rawTexture.js +1 -1
  507. package/Materials/Textures/rawTexture.js.map +1 -1
  508. package/Materials/Textures/rawTexture2DArray.d.ts +1 -1
  509. package/Materials/Textures/rawTexture2DArray.js +1 -1
  510. package/Materials/Textures/rawTexture2DArray.js.map +1 -1
  511. package/Materials/Textures/rawTexture3D.d.ts +1 -1
  512. package/Materials/Textures/rawTexture3D.js +1 -1
  513. package/Materials/Textures/rawTexture3D.js.map +1 -1
  514. package/Materials/Textures/refractionTexture.d.ts +1 -1
  515. package/Materials/Textures/refractionTexture.js +1 -1
  516. package/Materials/Textures/refractionTexture.js.map +1 -1
  517. package/Materials/Textures/textureMerger.d.ts +1 -1
  518. package/Materials/Textures/textureMerger.js +1 -1
  519. package/Materials/Textures/textureMerger.js.map +1 -1
  520. package/Materials/Textures/textureProcessor.d.ts +1 -1
  521. package/Materials/Textures/textureProcessor.js +2 -2
  522. package/Materials/Textures/textureProcessor.js.map +1 -1
  523. package/Materials/clipPlaneMaterialHelper.js +1 -1
  524. package/Materials/clipPlaneMaterialHelper.js.map +1 -1
  525. package/Materials/effect.pure.d.ts +2 -2
  526. package/Materials/effect.pure.js +12 -6
  527. package/Materials/effect.pure.js.map +1 -1
  528. package/Materials/effectRenderer.pure.js +4 -2
  529. package/Materials/effectRenderer.pure.js.map +1 -1
  530. package/Materials/floatingOriginMatrixOverrides.d.ts +1 -1
  531. package/Materials/floatingOriginMatrixOverrides.js +1 -1
  532. package/Materials/floatingOriginMatrixOverrides.js.map +1 -1
  533. package/Materials/material.detailMapConfiguration.d.ts +39 -1
  534. package/Materials/material.detailMapConfiguration.js +39 -1
  535. package/Materials/material.detailMapConfiguration.js.map +1 -1
  536. package/Materials/materialHelper.geometryrendering.d.ts +1 -1
  537. package/Materials/materialHelper.geometryrendering.js +1 -1
  538. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  539. package/Materials/materialPluginFactoryExport.js +2 -2
  540. package/Materials/materialPluginFactoryExport.js.map +1 -1
  541. package/Materials/meshDebugPluginMaterial.pure.js +15 -13
  542. package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
  543. package/Materials/pushMaterial.d.ts +7 -1
  544. package/Materials/pushMaterial.js +7 -1
  545. package/Materials/pushMaterial.js.map +1 -1
  546. package/Materials/uniformBuffer.js +1 -1
  547. package/Materials/uniformBuffer.js.map +1 -1
  548. package/Maths/math.axis.d.ts +1 -1
  549. package/Maths/math.axis.js +1 -1
  550. package/Maths/math.axis.js.map +1 -1
  551. package/Maths/math.d.ts +2 -2
  552. package/Maths/math.functions.d.ts +1 -1
  553. package/Maths/math.functions.js +1 -1
  554. package/Maths/math.functions.js.map +1 -1
  555. package/Maths/math.isovector.d.ts +1 -1
  556. package/Maths/math.isovector.js +1 -1
  557. package/Maths/math.isovector.js.map +1 -1
  558. package/Maths/math.js +2 -2
  559. package/Maths/math.js.map +1 -1
  560. package/Maths/math.path.d.ts +1 -1
  561. package/Maths/math.path.js +1 -1
  562. package/Maths/math.path.js.map +1 -1
  563. package/Maths/math.plane.d.ts +1 -1
  564. package/Maths/math.plane.js +1 -1
  565. package/Maths/math.plane.js.map +1 -1
  566. package/Maths/math.polar.d.ts +1 -1
  567. package/Maths/math.polar.js +1 -1
  568. package/Maths/math.polar.js.map +1 -1
  569. package/Maths/math.vertexFormat.d.ts +1 -1
  570. package/Maths/math.vertexFormat.js +1 -1
  571. package/Maths/math.vertexFormat.js.map +1 -1
  572. package/Maths/pure.d.ts +1 -0
  573. package/Maths/pure.js +1 -0
  574. package/Maths/pure.js.map +1 -1
  575. package/Meshes/Builders/geodesicBuilder.js +1 -1
  576. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  577. package/Meshes/Builders/goldbergBuilder.d.ts +1 -1
  578. package/Meshes/Builders/goldbergBuilder.js +4 -4
  579. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  580. package/Meshes/Builders/greasedLineBuilder.d.ts +4 -4
  581. package/Meshes/Builders/greasedLineBuilder.js +5 -5
  582. package/Meshes/Builders/greasedLineBuilder.js.map +1 -1
  583. package/Meshes/Builders/textBuilder.d.ts +2 -2
  584. package/Meshes/Builders/textBuilder.js +4 -4
  585. package/Meshes/Builders/textBuilder.js.map +1 -1
  586. package/Meshes/Builders/tiledBoxBuilder.d.ts +3 -3
  587. package/Meshes/Builders/tiledBoxBuilder.js +3 -3
  588. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  589. package/Meshes/Builders/tiledPlaneBuilder.d.ts +1 -1
  590. package/Meshes/Builders/tiledPlaneBuilder.js +1 -1
  591. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  592. package/Meshes/Compression/dracoCodec.js +1 -1
  593. package/Meshes/Compression/dracoCodec.js.map +1 -1
  594. package/Meshes/Compression/dracoDecoder.js +1 -1
  595. package/Meshes/Compression/dracoDecoder.js.map +1 -1
  596. package/Meshes/Compression/dracoEncoder.d.ts +1 -1
  597. package/Meshes/Compression/dracoEncoder.js +2 -2
  598. package/Meshes/Compression/dracoEncoder.js.map +1 -1
  599. package/Meshes/Compression/meshoptCompression.js +1 -1
  600. package/Meshes/Compression/meshoptCompression.js.map +1 -1
  601. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +9 -3
  602. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  603. package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +2 -2
  604. package/Meshes/GreasedLine/greasedLineBaseMesh.js +3 -3
  605. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  606. package/Meshes/Node/nodeGeometry.d.ts +2 -2
  607. package/Meshes/Node/nodeGeometry.js +4 -4
  608. package/Meshes/Node/nodeGeometry.js.map +1 -1
  609. package/Meshes/Node/nodeGeometryBuildState.d.ts +1 -1
  610. package/Meshes/Node/nodeGeometryBuildState.js +1 -1
  611. package/Meshes/Node/nodeGeometryBuildState.js.map +1 -1
  612. package/Meshes/abstractMesh.hotSpot.d.ts +1 -1
  613. package/Meshes/abstractMesh.hotSpot.js +2 -2
  614. package/Meshes/abstractMesh.hotSpot.js.map +1 -1
  615. package/Meshes/abstractMesh.pure.js +2 -13
  616. package/Meshes/abstractMesh.pure.js.map +1 -1
  617. package/Meshes/buffer.d.ts +1 -1
  618. package/Meshes/buffer.js +1 -1
  619. package/Meshes/buffer.js.map +1 -1
  620. package/Meshes/csg.d.ts +3 -3
  621. package/Meshes/csg.js +4 -4
  622. package/Meshes/csg.js.map +1 -1
  623. package/Meshes/csg2.d.ts +1 -1
  624. package/Meshes/csg2.js +4 -4
  625. package/Meshes/csg2.js.map +1 -1
  626. package/Meshes/geodesicMesh.d.ts +1 -1
  627. package/Meshes/geodesicMesh.js +1 -1
  628. package/Meshes/geodesicMesh.js.map +1 -1
  629. package/Meshes/geometry.d.ts +2 -2
  630. package/Meshes/geometry.js +4 -4
  631. package/Meshes/geometry.js.map +1 -1
  632. package/Meshes/lattice.d.ts +1 -1
  633. package/Meshes/lattice.js +1 -1
  634. package/Meshes/lattice.js.map +1 -1
  635. package/Meshes/lattice.material.d.ts +1 -1
  636. package/Meshes/lattice.material.js +1 -1
  637. package/Meshes/lattice.material.js.map +1 -1
  638. package/Meshes/mesh.vertexData.d.ts +2 -2
  639. package/Meshes/mesh.vertexData.js +3 -4
  640. package/Meshes/mesh.vertexData.js.map +1 -1
  641. package/Meshes/mesh.vertexData.subdivide.js +1 -1
  642. package/Meshes/mesh.vertexData.subdivide.js.map +1 -1
  643. package/Meshes/meshBuilder.d.ts +18 -18
  644. package/Meshes/meshBuilder.js +18 -18
  645. package/Meshes/meshBuilder.js.map +1 -1
  646. package/Meshes/meshSimplification.d.ts +1 -1
  647. package/Meshes/meshSimplification.js +4 -4
  648. package/Meshes/meshSimplification.js.map +1 -1
  649. package/Meshes/meshUVSpaceRenderer.d.ts +1 -1
  650. package/Meshes/meshUVSpaceRenderer.js +0 -1
  651. package/Meshes/meshUVSpaceRenderer.js.map +1 -1
  652. package/Meshes/meshUtils.d.ts +1 -1
  653. package/Meshes/meshUtils.js +2 -2
  654. package/Meshes/meshUtils.js.map +1 -1
  655. package/Meshes/polygonMesh.d.ts +2 -2
  656. package/Meshes/polygonMesh.js +3 -3
  657. package/Meshes/polygonMesh.js.map +1 -1
  658. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +2 -2
  659. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  660. package/Misc/HighDynamicRange/panoramaToCubemap.js +1 -1
  661. package/Misc/HighDynamicRange/panoramaToCubemap.js.map +1 -1
  662. package/Misc/PerformanceViewer/performanceViewerCollector.js +1 -1
  663. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  664. package/Misc/areaLightsTextureTools.d.ts +1 -1
  665. package/Misc/areaLightsTextureTools.js +3 -3
  666. package/Misc/areaLightsTextureTools.js.map +1 -1
  667. package/Misc/assetsManager.d.ts +4 -4
  668. package/Misc/assetsManager.js +5 -5
  669. package/Misc/assetsManager.js.map +1 -1
  670. package/Misc/basisWorker.js +1 -1
  671. package/Misc/basisWorker.js.map +1 -1
  672. package/Misc/brdfTextureTools.js +1 -1
  673. package/Misc/brdfTextureTools.js.map +1 -1
  674. package/Misc/copyTextureToTexture.d.ts +1 -1
  675. package/Misc/copyTextureToTexture.js +1 -1
  676. package/Misc/copyTextureToTexture.js.map +1 -1
  677. package/Misc/decorators.serialization.js +2 -2
  678. package/Misc/decorators.serialization.js.map +1 -1
  679. package/Misc/depthReducer.d.ts +2 -2
  680. package/Misc/depthReducer.js +2 -2
  681. package/Misc/depthReducer.js.map +1 -1
  682. package/Misc/gradients.d.ts +1 -1
  683. package/Misc/gradients.js +1 -1
  684. package/Misc/gradients.js.map +1 -1
  685. package/Misc/greasedLineTools.d.ts +1 -1
  686. package/Misc/greasedLineTools.js +3 -3
  687. package/Misc/greasedLineTools.js.map +1 -1
  688. package/Misc/halfFloat.d.ts +17 -0
  689. package/Misc/halfFloat.js +131 -0
  690. package/Misc/halfFloat.js.map +1 -0
  691. package/Misc/khronosTextureContainer2.js +1 -1
  692. package/Misc/khronosTextureContainer2.js.map +1 -1
  693. package/Misc/meshExploder.js +1 -1
  694. package/Misc/meshExploder.js.map +1 -1
  695. package/Misc/pivotTools.js +1 -1
  696. package/Misc/pivotTools.js.map +1 -1
  697. package/Misc/rgbdTextureTools.js +1 -1
  698. package/Misc/rgbdTextureTools.js.map +1 -1
  699. package/Misc/sceneOptimizer.js +1 -1
  700. package/Misc/sceneOptimizer.js.map +1 -1
  701. package/Misc/sceneRecorder.js +7 -7
  702. package/Misc/sceneRecorder.js.map +1 -1
  703. package/Misc/sceneSerializer.js +3 -3
  704. package/Misc/sceneSerializer.js.map +1 -1
  705. package/Misc/snapshotRenderingHelper.js +1 -1
  706. package/Misc/snapshotRenderingHelper.js.map +1 -1
  707. package/Misc/textureTools.d.ts +3 -13
  708. package/Misc/textureTools.js +6 -64
  709. package/Misc/textureTools.js.map +1 -1
  710. package/Misc/thinMinMaxReducer.d.ts +1 -1
  711. package/Misc/thinMinMaxReducer.js +1 -1
  712. package/Misc/thinMinMaxReducer.js.map +1 -1
  713. package/Misc/tools.internals.js +1 -1
  714. package/Misc/tools.internals.js.map +1 -1
  715. package/Misc/tools.pure.js +11 -4
  716. package/Misc/tools.pure.js.map +1 -1
  717. package/Misc/trajectoryClassifier.d.ts +1 -1
  718. package/Misc/trajectoryClassifier.js +1 -1
  719. package/Misc/trajectoryClassifier.js.map +1 -1
  720. package/Misc/videoRecorder.js +1 -1
  721. package/Misc/videoRecorder.js.map +1 -1
  722. package/Misc/virtualJoystick.d.ts +1 -1
  723. package/Misc/virtualJoystick.js +1 -1
  724. package/Misc/virtualJoystick.js.map +1 -1
  725. package/Morph/morphTarget.js +1 -1
  726. package/Morph/morphTarget.js.map +1 -1
  727. package/Navigation/Plugins/recastJSPlugin.d.ts +1 -1
  728. package/Navigation/Plugins/recastJSPlugin.js +2 -2
  729. package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
  730. package/Particles/EmitterTypes/boxParticleEmitter.d.ts +1 -1
  731. package/Particles/EmitterTypes/boxParticleEmitter.js +1 -1
  732. package/Particles/EmitterTypes/boxParticleEmitter.js.map +1 -1
  733. package/Particles/EmitterTypes/coneParticleEmitter.d.ts +1 -1
  734. package/Particles/EmitterTypes/coneParticleEmitter.js +1 -1
  735. package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
  736. package/Particles/EmitterTypes/customParticleEmitter.d.ts +1 -1
  737. package/Particles/EmitterTypes/customParticleEmitter.js +1 -1
  738. package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
  739. package/Particles/EmitterTypes/cylinderParticleEmitter.d.ts +1 -1
  740. package/Particles/EmitterTypes/cylinderParticleEmitter.js +1 -1
  741. package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
  742. package/Particles/EmitterTypes/hemisphericParticleEmitter.d.ts +1 -1
  743. package/Particles/EmitterTypes/hemisphericParticleEmitter.js +1 -1
  744. package/Particles/EmitterTypes/hemisphericParticleEmitter.js.map +1 -1
  745. package/Particles/EmitterTypes/meshParticleEmitter.d.ts +1 -1
  746. package/Particles/EmitterTypes/meshParticleEmitter.js +2 -2
  747. package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
  748. package/Particles/EmitterTypes/pointParticleEmitter.d.ts +1 -1
  749. package/Particles/EmitterTypes/pointParticleEmitter.js +1 -1
  750. package/Particles/EmitterTypes/pointParticleEmitter.js.map +1 -1
  751. package/Particles/EmitterTypes/sphereParticleEmitter.d.ts +1 -1
  752. package/Particles/EmitterTypes/sphereParticleEmitter.js +1 -1
  753. package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
  754. package/Particles/Node/nodeParticleBuildState.d.ts +4 -4
  755. package/Particles/Node/nodeParticleBuildState.js +2 -2
  756. package/Particles/Node/nodeParticleBuildState.js.map +1 -1
  757. package/Particles/Node/nodeParticleSystemSet.d.ts +2 -2
  758. package/Particles/Node/nodeParticleSystemSet.helper.js +31 -31
  759. package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
  760. package/Particles/Node/nodeParticleSystemSet.js +8 -8
  761. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  762. package/Particles/attractor.d.ts +1 -1
  763. package/Particles/attractor.js +1 -1
  764. package/Particles/attractor.js.map +1 -1
  765. package/Particles/computeShaderParticleSystem.pure.js +5 -1
  766. package/Particles/computeShaderParticleSystem.pure.js.map +1 -1
  767. package/Particles/flowMap.d.ts +7 -1
  768. package/Particles/flowMap.js +7 -1
  769. package/Particles/flowMap.js.map +1 -1
  770. package/Particles/gpuParticleSystem.pure.d.ts +1 -0
  771. package/Particles/gpuParticleSystem.pure.js +17 -1
  772. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  773. package/Particles/particle.d.ts +2 -2
  774. package/Particles/particle.js +2 -2
  775. package/Particles/particle.js.map +1 -1
  776. package/Particles/particleHelper.js +5 -5
  777. package/Particles/particleHelper.js.map +1 -1
  778. package/Particles/particleSystem.functions.d.ts +1 -1
  779. package/Particles/particleSystem.functions.js +1 -1
  780. package/Particles/particleSystem.functions.js.map +1 -1
  781. package/Particles/particleSystemSet.d.ts +1 -1
  782. package/Particles/particleSystemSet.js +5 -5
  783. package/Particles/particleSystemSet.js.map +1 -1
  784. package/Particles/pointsCloudSystem.d.ts +1 -1
  785. package/Particles/pointsCloudSystem.js +6 -6
  786. package/Particles/pointsCloudSystem.js.map +1 -1
  787. package/Particles/solidParticle.d.ts +2 -2
  788. package/Particles/solidParticle.js +3 -3
  789. package/Particles/solidParticle.js.map +1 -1
  790. package/Particles/solidParticleSystem.d.ts +4 -4
  791. package/Particles/solidParticleSystem.js +7 -7
  792. package/Particles/solidParticleSystem.js.map +1 -1
  793. package/Particles/subEmitter.js +1 -1
  794. package/Particles/subEmitter.js.map +1 -1
  795. package/Particles/thinParticleSystem.function.js +2 -2
  796. package/Particles/thinParticleSystem.function.js.map +1 -1
  797. package/Physics/Plugins/cannonJSPlugin.d.ts +1 -1
  798. package/Physics/Plugins/cannonJSPlugin.js +1 -1
  799. package/Physics/Plugins/cannonJSPlugin.js.map +1 -1
  800. package/Physics/castingResult.d.ts +1 -1
  801. package/Physics/castingResult.js +1 -1
  802. package/Physics/castingResult.js.map +1 -1
  803. package/Physics/physicsHelper.d.ts +1 -1
  804. package/Physics/physicsHelper.js +4 -4
  805. package/Physics/physicsHelper.js.map +1 -1
  806. package/Physics/physicsImpostor.d.ts +1 -1
  807. package/Physics/physicsImpostor.js +1 -1
  808. package/Physics/physicsImpostor.js.map +1 -1
  809. package/Physics/physicsRaycastResult.d.ts +1 -1
  810. package/Physics/physicsRaycastResult.js +1 -1
  811. package/Physics/physicsRaycastResult.js.map +1 -1
  812. package/Physics/v1/Plugins/ammoJSPlugin.d.ts +2 -2
  813. package/Physics/v1/Plugins/ammoJSPlugin.js +5 -5
  814. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  815. package/Physics/v1/Plugins/oimoJSPlugin.d.ts +2 -2
  816. package/Physics/v1/Plugins/oimoJSPlugin.js +2 -2
  817. package/Physics/v1/Plugins/oimoJSPlugin.js.map +1 -1
  818. package/Physics/v1/physicsEngine.d.ts +1 -1
  819. package/Physics/v1/physicsEngine.js +1 -1
  820. package/Physics/v1/physicsEngine.js.map +1 -1
  821. package/Physics/v2/Plugins/havokPlugin.d.ts +14 -2
  822. package/Physics/v2/Plugins/havokPlugin.js +45 -7
  823. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  824. package/Physics/v2/characterController.d.ts +2 -2
  825. package/Physics/v2/characterController.js +2 -2
  826. package/Physics/v2/characterController.js.map +1 -1
  827. package/Physics/v2/physicsAggregate.d.ts +1 -1
  828. package/Physics/v2/physicsAggregate.js +1 -1
  829. package/Physics/v2/physicsAggregate.js.map +1 -1
  830. package/Physics/v2/physicsBody.d.ts +1 -1
  831. package/Physics/v2/physicsBody.js +1 -1
  832. package/Physics/v2/physicsBody.js.map +1 -1
  833. package/Physics/v2/physicsEngine.d.ts +1 -1
  834. package/Physics/v2/physicsEngine.js +1 -1
  835. package/Physics/v2/physicsEngine.js.map +1 -1
  836. package/Physics/v2/physicsShape.d.ts +1 -1
  837. package/Physics/v2/physicsShape.js +1 -1
  838. package/Physics/v2/physicsShape.js.map +1 -1
  839. package/Physics/v2/ragdoll.d.ts +2 -2
  840. package/Physics/v2/ragdoll.js +2 -2
  841. package/Physics/v2/ragdoll.js.map +1 -1
  842. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.d.ts +1 -0
  843. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +8 -6
  844. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
  845. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js +1 -1
  846. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js.map +1 -1
  847. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
  848. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
  849. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +3 -2
  850. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  851. package/PostProcesses/bloomEffect.d.ts +1 -1
  852. package/PostProcesses/bloomEffect.js +4 -4
  853. package/PostProcesses/bloomEffect.js.map +1 -1
  854. package/PostProcesses/depthOfFieldEffect.d.ts +1 -1
  855. package/PostProcesses/depthOfFieldEffect.js +3 -3
  856. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  857. package/PostProcesses/depthOfFieldMergePostProcess.d.ts +1 -1
  858. package/PostProcesses/depthOfFieldMergePostProcess.js +1 -1
  859. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  860. package/PostProcesses/highlightsPostProcess.d.ts +1 -1
  861. package/PostProcesses/highlightsPostProcess.js +1 -1
  862. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  863. package/PostProcesses/imageProcessingPostProcess.d.ts +1 -1
  864. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  865. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  866. package/PostProcesses/postProcessManager.d.ts +3 -0
  867. package/PostProcesses/postProcessManager.js +4 -1
  868. package/PostProcesses/postProcessManager.js.map +1 -1
  869. package/PostProcesses/subSurfaceScatteringPostProcess.pure.d.ts +1 -0
  870. package/PostProcesses/subSurfaceScatteringPostProcess.pure.js +10 -0
  871. package/PostProcesses/subSurfaceScatteringPostProcess.pure.js.map +1 -1
  872. package/PostProcesses/thinAnaglyphPostProcess.d.ts +1 -1
  873. package/PostProcesses/thinAnaglyphPostProcess.js +1 -1
  874. package/PostProcesses/thinAnaglyphPostProcess.js.map +1 -1
  875. package/PostProcesses/thinBlackAndWhitePostProcess.d.ts +1 -1
  876. package/PostProcesses/thinBlackAndWhitePostProcess.js +1 -1
  877. package/PostProcesses/thinBlackAndWhitePostProcess.js.map +1 -1
  878. package/PostProcesses/thinBloomEffect.js +1 -1
  879. package/PostProcesses/thinBloomEffect.js.map +1 -1
  880. package/PostProcesses/thinBloomMergePostProcess.d.ts +1 -1
  881. package/PostProcesses/thinBloomMergePostProcess.js +1 -1
  882. package/PostProcesses/thinBloomMergePostProcess.js.map +1 -1
  883. package/PostProcesses/thinBlurPostProcess.d.ts +1 -1
  884. package/PostProcesses/thinBlurPostProcess.js +1 -1
  885. package/PostProcesses/thinBlurPostProcess.js.map +1 -1
  886. package/PostProcesses/thinChromaticAberrationPostProcess.d.ts +2 -2
  887. package/PostProcesses/thinChromaticAberrationPostProcess.js +2 -2
  888. package/PostProcesses/thinChromaticAberrationPostProcess.js.map +1 -1
  889. package/PostProcesses/thinCircleOfConfusionPostProcess.d.ts +1 -1
  890. package/PostProcesses/thinCircleOfConfusionPostProcess.js +1 -1
  891. package/PostProcesses/thinCircleOfConfusionPostProcess.js.map +1 -1
  892. package/PostProcesses/thinColorCorrectionPostProcess.d.ts +1 -1
  893. package/PostProcesses/thinColorCorrectionPostProcess.js +2 -2
  894. package/PostProcesses/thinColorCorrectionPostProcess.js.map +1 -1
  895. package/PostProcesses/thinConvolutionPostProcess.d.ts +1 -1
  896. package/PostProcesses/thinConvolutionPostProcess.js +1 -1
  897. package/PostProcesses/thinConvolutionPostProcess.js.map +1 -1
  898. package/PostProcesses/thinCustomPostProcess.d.ts +1 -1
  899. package/PostProcesses/thinCustomPostProcess.js +1 -1
  900. package/PostProcesses/thinCustomPostProcess.js.map +1 -1
  901. package/PostProcesses/thinDepthOfFieldEffect.d.ts +3 -0
  902. package/PostProcesses/thinDepthOfFieldEffect.js +4 -1
  903. package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -1
  904. package/PostProcesses/thinDepthOfFieldMergePostProcess.d.ts +1 -1
  905. package/PostProcesses/thinDepthOfFieldMergePostProcess.js +1 -1
  906. package/PostProcesses/thinDepthOfFieldMergePostProcess.js.map +1 -1
  907. package/PostProcesses/thinExtractHighlightsPostProcess.d.ts +1 -1
  908. package/PostProcesses/thinExtractHighlightsPostProcess.js +1 -1
  909. package/PostProcesses/thinExtractHighlightsPostProcess.js.map +1 -1
  910. package/PostProcesses/thinFXAAPostProcess.d.ts +2 -2
  911. package/PostProcesses/thinFXAAPostProcess.js +2 -2
  912. package/PostProcesses/thinFXAAPostProcess.js.map +1 -1
  913. package/PostProcesses/thinFilterPostProcess.d.ts +2 -2
  914. package/PostProcesses/thinFilterPostProcess.js +2 -2
  915. package/PostProcesses/thinFilterPostProcess.js.map +1 -1
  916. package/PostProcesses/thinGrainPostProcess.d.ts +1 -1
  917. package/PostProcesses/thinGrainPostProcess.js +1 -1
  918. package/PostProcesses/thinGrainPostProcess.js.map +1 -1
  919. package/PostProcesses/thinImageProcessingPostProcess.d.ts +2 -2
  920. package/PostProcesses/thinImageProcessingPostProcess.js +2 -2
  921. package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -1
  922. package/PostProcesses/thinMotionBlurPostProcess.d.ts +1 -1
  923. package/PostProcesses/thinMotionBlurPostProcess.js +2 -2
  924. package/PostProcesses/thinMotionBlurPostProcess.js.map +1 -1
  925. package/PostProcesses/thinPassPostProcess.d.ts +1 -1
  926. package/PostProcesses/thinPassPostProcess.js +1 -1
  927. package/PostProcesses/thinPassPostProcess.js.map +1 -1
  928. package/PostProcesses/thinSSAO2BlurPostProcess.d.ts +1 -1
  929. package/PostProcesses/thinSSAO2BlurPostProcess.js +1 -1
  930. package/PostProcesses/thinSSAO2BlurPostProcess.js.map +1 -1
  931. package/PostProcesses/thinSSAO2CombinePostProcess.d.ts +1 -1
  932. package/PostProcesses/thinSSAO2CombinePostProcess.js +2 -2
  933. package/PostProcesses/thinSSAO2CombinePostProcess.js.map +1 -1
  934. package/PostProcesses/thinSSAO2PostProcess.d.ts +7 -2
  935. package/PostProcesses/thinSSAO2PostProcess.js +36 -4
  936. package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
  937. package/PostProcesses/thinSSRBlurCombinerPostProcess.d.ts +1 -1
  938. package/PostProcesses/thinSSRBlurCombinerPostProcess.js +2 -2
  939. package/PostProcesses/thinSSRBlurCombinerPostProcess.js.map +1 -1
  940. package/PostProcesses/thinSSRBlurPostProcess.d.ts +2 -2
  941. package/PostProcesses/thinSSRBlurPostProcess.js +2 -2
  942. package/PostProcesses/thinSSRBlurPostProcess.js.map +1 -1
  943. package/PostProcesses/thinSSRPostProcess.d.ts +1 -1
  944. package/PostProcesses/thinSSRPostProcess.js +2 -2
  945. package/PostProcesses/thinSSRPostProcess.js.map +1 -1
  946. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.d.ts +1 -1
  947. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js +1 -1
  948. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js.map +1 -1
  949. package/PostProcesses/thinSharpenPostProcess.d.ts +1 -1
  950. package/PostProcesses/thinSharpenPostProcess.js +1 -1
  951. package/PostProcesses/thinSharpenPostProcess.js.map +1 -1
  952. package/PostProcesses/thinTAAPostProcess.d.ts +3 -3
  953. package/PostProcesses/thinTAAPostProcess.js +4 -4
  954. package/PostProcesses/thinTAAPostProcess.js.map +1 -1
  955. package/PostProcesses/thinTonemapPostProcess.d.ts +1 -1
  956. package/PostProcesses/thinTonemapPostProcess.js +1 -1
  957. package/PostProcesses/thinTonemapPostProcess.js.map +1 -1
  958. package/PostProcesses/vrDistortionCorrectionPostProcess.d.ts +1 -1
  959. package/PostProcesses/vrDistortionCorrectionPostProcess.js +3 -3
  960. package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
  961. package/Rendering/IBLShadows/iblShadowsAccumulationPass.d.ts +2 -2
  962. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js +4 -4
  963. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js.map +1 -1
  964. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.d.ts +2 -2
  965. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js +4 -4
  966. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js.map +1 -1
  967. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +3 -3
  968. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +4 -4
  969. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  970. package/Rendering/depthPeelingRenderer.d.ts +1 -1
  971. package/Rendering/depthPeelingRenderer.js +2 -2
  972. package/Rendering/depthPeelingRenderer.js.map +1 -1
  973. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +1 -1
  974. package/Rendering/fluidRenderer/fluidRenderingObject.js +1 -1
  975. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  976. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +1 -1
  977. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +2 -2
  978. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  979. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +3 -3
  980. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -3
  981. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  982. package/Rendering/fluidRenderer/fluidRenderingTextures.d.ts +2 -2
  983. package/Rendering/fluidRenderer/fluidRenderingTextures.js +3 -3
  984. package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
  985. package/Rendering/iblCdfGenerator.d.ts +3 -3
  986. package/Rendering/iblCdfGenerator.js +5 -5
  987. package/Rendering/iblCdfGenerator.js.map +1 -1
  988. package/Rendering/renderingGroup.js +1 -1
  989. package/Rendering/renderingGroup.js.map +1 -1
  990. package/Rendering/subSurfaceConfiguration.d.ts +2 -2
  991. package/Rendering/subSurfaceConfiguration.js +2 -2
  992. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  993. package/Rendering/utilityLayerRenderer.d.ts +2 -2
  994. package/Rendering/utilityLayerRenderer.js +4 -4
  995. package/Rendering/utilityLayerRenderer.js.map +1 -1
  996. package/Shaders/ssao2.fragment.js +10 -2
  997. package/Shaders/ssao2.fragment.js.map +1 -1
  998. package/ShadersWGSL/gpuRenderParticles.fragment.d.ts +5 -0
  999. package/ShadersWGSL/gpuRenderParticles.fragment.js +50 -0
  1000. package/ShadersWGSL/gpuRenderParticles.fragment.js.map +1 -0
  1001. package/ShadersWGSL/gpuRenderParticles.vertex.d.ts +5 -0
  1002. package/ShadersWGSL/gpuRenderParticles.vertex.js +120 -0
  1003. package/ShadersWGSL/gpuRenderParticles.vertex.js.map +1 -0
  1004. package/ShadersWGSL/noise.fragment.d.ts +5 -0
  1005. package/ShadersWGSL/noise.fragment.js +18 -0
  1006. package/ShadersWGSL/noise.fragment.js.map +1 -0
  1007. package/ShadersWGSL/ssao2.fragment.js +10 -2
  1008. package/ShadersWGSL/ssao2.fragment.js.map +1 -1
  1009. package/SmartAssets/smartAssetSerializer.js +1 -1
  1010. package/SmartAssets/smartAssetSerializer.js.map +1 -1
  1011. package/Sprites/sprite.d.ts +2 -2
  1012. package/Sprites/sprite.js +2 -2
  1013. package/Sprites/sprite.js.map +1 -1
  1014. package/Sprites/spriteManager.d.ts +2 -2
  1015. package/Sprites/spriteManager.js +4 -5
  1016. package/Sprites/spriteManager.js.map +1 -1
  1017. package/Sprites/spritePackedManager.js +1 -1
  1018. package/Sprites/spritePackedManager.js.map +1 -1
  1019. package/Sprites/spriteRenderer.js +2 -2
  1020. package/Sprites/spriteRenderer.js.map +1 -1
  1021. package/XR/features/WebXRHitTestLegacy.d.ts +1 -1
  1022. package/XR/features/WebXRHitTestLegacy.js +2 -2
  1023. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  1024. package/XR/motionController/webXRAbstractMotionController.js +2 -2
  1025. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  1026. package/XR/motionController/webXRGenericMotionController.js +2 -2
  1027. package/XR/motionController/webXRGenericMotionController.js.map +1 -1
  1028. package/XR/motionController/webXRProfiledMotionController.js +4 -4
  1029. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  1030. package/XR/webXRCamera.d.ts +3 -3
  1031. package/XR/webXRCamera.js +4 -4
  1032. package/XR/webXRCamera.js.map +1 -1
  1033. package/XR/webXRDefaultExperience.d.ts +4 -4
  1034. package/XR/webXRDefaultExperience.js +4 -4
  1035. package/XR/webXRDefaultExperience.js.map +1 -1
  1036. package/XR/webXREnterExitUI.js +1 -1
  1037. package/XR/webXREnterExitUI.js.map +1 -1
  1038. package/XR/webXRExperienceHelper.js +2 -2
  1039. package/XR/webXRExperienceHelper.js.map +1 -1
  1040. package/XR/webXRFeaturesManager.d.ts +47 -0
  1041. package/XR/webXRFeaturesManager.js +1 -1
  1042. package/XR/webXRFeaturesManager.js.map +1 -1
  1043. package/XR/webXRInput.js +1 -1
  1044. package/XR/webXRInput.js.map +1 -1
  1045. package/XR/webXRInputSource.js +4 -4
  1046. package/XR/webXRInputSource.js.map +1 -1
  1047. package/XR/webXRManagedOutputCanvas.js +1 -1
  1048. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  1049. package/XR/webXRRenderTargetTextureProvider.d.ts +1 -1
  1050. package/XR/webXRRenderTargetTextureProvider.js +1 -1
  1051. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  1052. package/assetContainer.d.ts +4 -4
  1053. package/assetContainer.js +6 -6
  1054. package/assetContainer.js.map +1 -1
  1055. package/node.d.ts +1 -1
  1056. package/node.js +6 -2
  1057. package/node.js.map +1 -1
  1058. package/package.json +684 -3
@@ -1 +1 @@
1
- {"version":3,"file":"iblCdfGenerator.js","sourceRoot":"","sources":["../../../../dev/core/src/Rendering/iblCdfGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAA0C,MAAM,qDAAqD,CAAC;AAChI,OAAO,EAAE,WAAW,EAA2B,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,sCAAsC,CAAC;AAE7F;;GAEG;AACH,MAAM,OAAO,eAAe;IAgBxB;;OAEG;IACH,IAAW,WAAW;QAClB,MAAM,MAAM,GAAG,WAAW,CAAC,iBAAiB,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAW,SAAS,CAAC,MAA6B;QAC9C,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YAC7B,OAAO;QACX,CAAC;QAED,IAAI,CAAC,iCAAiC,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QAEzB,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,MAAM,iCAAiC,GAAG,GAAG,EAAE;YAC3C,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChE,OAAO;YACX,CAAC;YAED,IAAI,CAAC,iCAAiC,EAAE,CAAC;YACzC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACrC,CAAC,CAAC;QAEF,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,OAAO;QACX,CAAC;QAED,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;YACpF,IAAI,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,yBAAyB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpF,CAAC;QACL,CAAC;aAAM,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;YACpF,IAAI,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,yBAAyB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpF,CAAC;QACL,CAAC;QAED,IAAI,CAAC,4BAA4B,GAAG,kBAAkB,CAClD,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAClE,iCAAiC,EACjC,SAAS,EACT,EAAE,EACF,KAAK,EACL,KAAK,CACR,CAAC;IACN,CAAC;IAEO,iBAAiB,CAAC,MAAmB;QACzC,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACpD,OAAO,CAAC,CAAC,eAAe,IAAI,eAAe,CAAC,OAAO,CAAC;IACxD,CAAC;IAEO,iCAAiC;QACrC,IAAI,CAAC,4BAA4B,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;QAEzC,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAC1C,CAAC;IAEO,yBAAyB;QAC7B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,sDAAsD;YACtD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,cAAc;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IAC5D,CAAC;IAOD;;;;;;OAMG;IACI,qBAAqB,CAAC,CAAS,EAAE,CAAS,EAAE,UAAkB,EAAE,WAAmB;QACtF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAGD;;;OAGG;IACI,cAAc;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IASD;;;;OAIG;IACH,YAAY,aAA+C;QArKnD,8BAAyB,GAAyB,IAAI,CAAC;QACvD,iCAA4B,GAAyB,IAAI,CAAC;QAE1D,6BAAwB,GAAsB,IAAI,CAAC;QAmH3D,0CAA0C;QACnC,iBAAY,GAAY,KAAK,CAAC;QAE7B,qBAAgB,GAAY,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAmB5D,mBAAc,GAAW,WAAW,CAAC;QAkD7C;;WAEG;QACI,0BAAqB,GAAqB,IAAI,UAAU,EAAQ,CAAC;QAExE;;;;WAIG;QACI,+BAA0B,GAAqB,IAAI,UAAU,EAAQ,CAAC;QAlCzE,IAAI,aAAa,EAAE,CAAC;YAChB,IAAI,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;YACjC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,gBAAgB,CAAC;QAC/C,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YACpE,OAAO;QACX,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,kBAAkB,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC/J,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,qCAAqC,CAAC,eAAe,CAAC,CAAC;YACvD,eAAe,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IAcO,eAAe;QACnB,MAAM,IAAI,GAAgB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC3J,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,cAAc,CACvC,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EACrB,CAAC,EACD,CAAC,EACD,IAAI,CAAC,OAAO,EACZ,KAAK,EACL,KAAK,EACL,SAAS,CAAC,4BAA4B,EACtC,SAAS,CAAC,yBAAyB,CACtC,CAAC;YACF,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACpD,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAChB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACjB,iEAAiE;YACjE,qEAAqE;YACrE,yEAAyE;YACzE,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACvC,sFAAsF;QACtF,MAAM,UAAU,GAAsC;YAClD,mBAAmB,EAAE,KAAK;YAC1B,eAAe,EAAE,KAAK;YACtB,MAAM,EAAE,SAAS,CAAC,eAAe;YACjC,IAAI,EAAE,SAAS,CAAC,iBAAiB;YACjC,YAAY,EAAE,SAAS,CAAC,4BAA4B;YACpD,cAAc,EAAE,QAAQ,CAAC,CAAC,6BAAqB,CAAC,4BAAoB;YACpE,UAAU,EAAE,KAAK;YACjB,yBAAyB,EAAE,KAAK,IAAI,EAAE;gBAClC,IAAI,QAAQ,EAAE,CAAC;oBACX,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,iCAAiC,CAAC,EAAE,MAAM,CAAC,iCAAiC,CAAC,EAAE,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAC,CAAC;gBACpK,CAAC;qBAAM,CAAC;oBACJ,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,6BAA6B,CAAC,EAAE,MAAM,CAAC,6BAA6B,CAAC,EAAE,MAAM,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC;gBACxJ,CAAC;YACL,CAAC;SACJ,CAAC;QACF,MAAM,WAAW,GAAsC;YACnD,mBAAmB,EAAE,KAAK;YAC1B,eAAe,EAAE,KAAK;YACtB,MAAM,EAAE,SAAS,CAAC,kBAAkB;YACpC,IAAI,EAAE,SAAS,CAAC,sBAAsB;YACtC,YAAY,EAAE,SAAS,CAAC,4BAA4B;YACpD,cAAc,EAAE,QAAQ,CAAC,CAAC,6BAAqB,CAAC,4BAAoB;YACpE,UAAU,EAAE,KAAK;YACjB,yBAAyB,EAAE,KAAK,IAAI,EAAE;gBAClC,IAAI,QAAQ,EAAE,CAAC;oBACX,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,iCAAiC,CAAC,EAAE,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC,CAAC;gBAC3H,CAAC;qBAAM,CAAC;oBACJ,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,6BAA6B,CAAC,EAAE,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC,CAAC;gBACnH,CAAC;YACL,CAAC;SACJ,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACtJ,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,yBAAyB,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,4BAA4B,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5I,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,yBAAyB,CAAC;QAEzD,IAAI,CAAC,kBAAkB,GAAG,IAAI,iBAAiB,CAC3C,oBAAoB,EACpB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAC1C,oBAAoB,EACpB,IAAI,CAAC,MAAM,EACX,EAAE,GAAG,UAAU,EAAE,YAAY,EAAE,SAAS,CAAC,8BAA8B,EAAE,eAAe,EAAE,IAAI,EAAE,EAChG,IAAI,EACJ,KAAK,CACR,CAAC;QACF,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,KAAK,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,kBAAkB,CAAC,WAAW,GAAG,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,4BAA4B,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACnJ,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,wBAAwB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,yBAAyB,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,yBAAyB,CAAC;QACzD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,4BAA4B,CAAC;QACxD,CAAC;QACD,sEAAsE;QACtE,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE;YAC5C,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,GAAG,IAAI,iBAAiB,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,sBAAsB,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACnK,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,KAAK,CAAC;QAC5C,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,oBAAoB,CAAC,WAAW,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,2BAA2B,CAAC;QAEhE,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE,CAAC;IACtD,CAAC;IAEO,gBAAgB;QACpB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,oBAAoB,EAAE,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE,CAAC;IACtD,CAAC;IAEO,gBAAgB;QACpB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACvC,MAAM,YAAY,GAAuB;YACrC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YACpC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YACtC,YAAY,EAAE,OAAO,CAAC,qBAAqB;YAC3C,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,WAAW,EAAE,SAAS,CAAC,yBAAyB;YAChD,QAAQ,EAAE,CAAC,YAAY,CAAC;YACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;YAC/C,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE;YACpE,cAAc,EAAE,QAAQ,CAAC,CAAC,6BAAqB,CAAC,4BAAoB;YACpE,oBAAoB,EAAE,CAAC,SAAkB,EAAE,IAAoB,EAAE,EAAE;gBAC/D,IAAI,SAAS,EAAE,CAAC;oBACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;gBAC7D,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;gBACzD,CAAC;YACL,CAAC;SACJ,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QACpF,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAChD,IAAI,WAAW,EAAE,CAAC;YACd,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7C,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACvI,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACI,OAAO;QACV,OAAO,CACH,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,wBAAwB;YACjD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YACzB,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,kBAAkB;YACvB,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CACpC,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,qEAAqE;IAC9D,eAAe;QAClB,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACrC,+JAA+J;QAC/J,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClD,kBAAkB,CACd,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EACpB,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EACrB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CACjE,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,qFAAqF;QACrF,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE;YAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;YACjC,MAAM,QAAQ,GAAyB,EAAE,CAAC;YAC1C,MAAM,aAAa,GAA6B,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAY,CAAC,CAAC;YACpH,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,CACT,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBACpB,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;wBACnB,OAAO,EAAE,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACJ,MAAM,CAAC,SAAS,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE;4BACxC,OAAO,EAAE,CAAC;wBACd,CAAC,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC,CAAC,CACL,CAAC;YACN,CAAC;YACD,0CAA0C;YAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;oBACjC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACpB,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACH,qEAAqE;IAC9D,qBAAqB;QACxB,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE;gBACzD,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;gBACjC,mFAAmF;gBACnF,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAE,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC9D,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjE,IAAI,CAAC,wBAAwB,GAAG,iBAAiB,CAAC;oBAClD,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,EAAE,CAAC;oBACtC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE;wBAC3D,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;oBACvC,CAAC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE;oBACpC,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,EAAE,CAAC;wBACtC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;oBACvC,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE;4BAC3D,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;wBACvC,CAAC,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,OAAO;QACV,IAAI,CAAC,iCAAiC,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;IACvC,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,aAAqC;QACzD,OAAO,aAAa,CAAC,YAAY,EAAE,KAAK,OAAO,CAAC;IACpD,CAAC;;AAjVD;;GAEG;AACW,6CAA6B,GAA2B,CAAC,CAAC,EAAE,EAAE;IACxE,MAAM,WAAW,CAAC,6CAA6C,CAAC,CAAC;AACrE,CAAC,AAF0C,CAEzC","sourcesContent":["import { Constants } from \"../Engines/constants\";\r\nimport { type AbstractEngine } from \"../Engines/abstractEngine\";\r\n\r\nimport { type Scene } from \"../scene\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport { type TextureSize } from \"../Materials/Textures/textureCreationOptions\";\r\nimport { ProceduralTexture, type IProceduralTextureCreationOptions } from \"../Materials/Textures/Procedurals/proceduralTexture\";\r\nimport { PostProcess, type PostProcessOptions } from \"../PostProcesses/postProcess\";\r\nimport { Vector3, Vector4 } from \"../Maths/math.vector\";\r\nimport { RawTexture } from \"../Materials/Textures/rawTexture\";\r\nimport { type BaseTexture } from \"../Materials/Textures/baseTexture\";\r\nimport { Observable } from \"../Misc/observable\";\r\nimport { CubeTexture } from \"../Materials/Textures/cubeTexture\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { _WarnImport } from \"../Misc/devTools\";\r\nimport { type Nullable } from \"../types\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { _RetryWithInterval } from \"../Misc/timingTools\";\r\nimport { RegisterIblCdfGeneratorSceneComponent } from \"./iblCdfGeneratorSceneComponent.pure\";\r\n\r\n/**\r\n * Build cdf maps to be used for IBL importance sampling.\r\n */\r\nexport class IblCdfGenerator {\r\n private _scene: Nullable<Scene>;\r\n private _engine: AbstractEngine;\r\n\r\n private _cdfyPT: ProceduralTexture;\r\n private _cdfxPT: ProceduralTexture;\r\n private _icdfPT: Nullable<ProceduralTexture>;\r\n private _scaledLuminancePT: ProceduralTexture;\r\n private _dominantDirectionPT: ProceduralTexture;\r\n private _iblSource: Nullable<BaseTexture>;\r\n private _dummyTexture: RawTexture;\r\n private _iblSourceLoadUnsubscribe: Nullable<() => void> = null;\r\n private _iblSourceReadyRetryObserver: Nullable<() => void> = null;\r\n\r\n private _cachedDominantDirection: Nullable<Vector3> = null;\r\n\r\n /**\r\n * Returns whether the CDF renderer is supported by the current engine\r\n */\r\n public get isSupported(): boolean {\r\n const engine = EngineStore.LastCreatedEngine;\r\n if (!engine) {\r\n return false;\r\n }\r\n return engine.getCaps().texelFetch;\r\n }\r\n\r\n /**\r\n * Gets the IBL source texture being used by the CDF renderer\r\n */\r\n public get iblSource(): Nullable<BaseTexture> {\r\n return this._iblSource;\r\n }\r\n\r\n /**\r\n * Sets the IBL source texture to be used by the CDF renderer.\r\n * This will trigger recreation of the CDF assets.\r\n */\r\n public set iblSource(source: Nullable<BaseTexture>) {\r\n if (this._iblSource === source) {\r\n return;\r\n }\r\n\r\n this._clearIblSourceReadinessObservers();\r\n this._disposeTextures();\r\n this._iblSource = source;\r\n\r\n if (!source) {\r\n return;\r\n }\r\n\r\n const recreateFromObservedSourceIfReady = () => {\r\n if (this._iblSource !== source || !this._isIblSourceReady(source)) {\r\n return;\r\n }\r\n\r\n this._clearIblSourceReadinessObservers();\r\n this._recreateAssetsFromNewIbl();\r\n };\r\n\r\n if (this._isIblSourceReady(source)) {\r\n this._recreateAssetsFromNewIbl();\r\n return;\r\n }\r\n\r\n if (source instanceof Texture) {\r\n const observer = source.onLoadObservable.addOnce(recreateFromObservedSourceIfReady);\r\n if (observer) {\r\n this._iblSourceLoadUnsubscribe = () => source.onLoadObservable.remove(observer);\r\n }\r\n } else if (source instanceof CubeTexture) {\r\n const observer = source.onLoadObservable.addOnce(recreateFromObservedSourceIfReady);\r\n if (observer) {\r\n this._iblSourceLoadUnsubscribe = () => source.onLoadObservable.remove(observer);\r\n }\r\n }\r\n\r\n this._iblSourceReadyRetryObserver = _RetryWithInterval(\r\n () => this._iblSource !== source || this._isIblSourceReady(source),\r\n recreateFromObservedSourceIfReady,\r\n undefined,\r\n 16,\r\n 30000,\r\n false\r\n );\r\n }\r\n\r\n private _isIblSourceReady(source: BaseTexture): boolean {\r\n if (!source.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n if (!source.isCube) {\r\n return true;\r\n }\r\n\r\n const internalTexture = source.getInternalTexture();\r\n return !!internalTexture && internalTexture.isReady;\r\n }\r\n\r\n private _clearIblSourceReadinessObservers() {\r\n this._iblSourceReadyRetryObserver?.();\r\n this._iblSourceReadyRetryObserver = null;\r\n\r\n this._iblSourceLoadUnsubscribe?.();\r\n this._iblSourceLoadUnsubscribe = null;\r\n }\r\n\r\n private _recreateAssetsFromNewIbl() {\r\n if (this._debugPass) {\r\n this._debugPass.dispose();\r\n }\r\n\r\n this._createTextures();\r\n\r\n if (this._debugPass) {\r\n // Recreate the debug pass because of the new textures\r\n this._createDebugPass();\r\n }\r\n }\r\n\r\n /**\r\n * Return the cumulative distribution function (CDF) texture\r\n * @returns Return the cumulative distribution function (CDF) texture\r\n */\r\n public getIcdfTexture(): Texture {\r\n return this._icdfPT ? this._icdfPT : this._dummyTexture;\r\n }\r\n\r\n /** Enable the debug view for this pass */\r\n public debugEnabled: boolean = false;\r\n private _debugPass: PostProcess;\r\n private _debugSizeParams: Vector4 = new Vector4(0.0, 0.0, 1.0, 1.0);\r\n\r\n /**\r\n * Sets params that control the position and scaling of the debug display on the screen.\r\n * @param x Screen X offset of the debug display (0-1)\r\n * @param y Screen Y offset of the debug display (0-1)\r\n * @param widthScale X scale of the debug display (0-1)\r\n * @param heightScale Y scale of the debug display (0-1)\r\n */\r\n public setDebugDisplayParams(x: number, y: number, widthScale: number, heightScale: number) {\r\n this._debugSizeParams.set(x, y, widthScale, heightScale);\r\n }\r\n\r\n /**\r\n * The name of the debug pass post process\r\n */\r\n public get debugPassName(): string {\r\n return this._debugPassName;\r\n }\r\n private _debugPassName: string = \"CDF Debug\";\r\n\r\n /**\r\n * Gets the debug pass post process\r\n * @returns The post process\r\n */\r\n public getDebugPassPP(): PostProcess {\r\n if (!this._debugPass) {\r\n this._createDebugPass();\r\n }\r\n return this._debugPass;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static _SceneComponentInitialization: (scene: Scene) => void = (_) => {\r\n throw _WarnImport(\"IblCdfGeneratorSceneComponentSceneComponent\");\r\n };\r\n\r\n /**\r\n * Instanciates the CDF renderer\r\n * @param sceneOrEngine Scene to attach to\r\n * @returns The CDF renderer\r\n */\r\n constructor(sceneOrEngine: Nullable<Scene | AbstractEngine>) {\r\n if (sceneOrEngine) {\r\n if (IblCdfGenerator._IsScene(sceneOrEngine)) {\r\n this._scene = sceneOrEngine;\r\n } else {\r\n this._engine = sceneOrEngine;\r\n }\r\n } else {\r\n this._scene = EngineStore.LastCreatedScene;\r\n }\r\n if (this._scene) {\r\n this._engine = this._scene.getEngine();\r\n }\r\n if (!this.isSupported) {\r\n Logger.Warn(\"CDF renderer is not supported by the current engine.\");\r\n return;\r\n }\r\n const blackPixels = new Uint16Array([0, 0, 0, 255]);\r\n this._dummyTexture = new RawTexture(blackPixels, 1, 1, Constants.TEXTUREFORMAT_RGBA, sceneOrEngine, false, false, undefined, Constants.TEXTURETYPE_HALF_FLOAT);\r\n if (this._scene) {\r\n RegisterIblCdfGeneratorSceneComponent(IblCdfGenerator);\r\n IblCdfGenerator._SceneComponentInitialization(this._scene);\r\n }\r\n }\r\n\r\n /**\r\n * Observable that triggers when the CDF renderer is ready\r\n */\r\n public onGeneratedObservable: Observable<void> = new Observable<void>();\r\n\r\n /**\r\n * Observable that triggers when CDF texture references change.\r\n * It is raised after disposing textures (so fallback ICDF can be used)\r\n * and after creating new textures (so consumers can rebind immediately).\r\n */\r\n public onTextureChangedObservable: Observable<void> = new Observable<void>();\r\n\r\n private _createTextures() {\r\n const size: TextureSize = this._iblSource ? { width: this._iblSource.getSize().width, height: this._iblSource.getSize().height } : { width: 1, height: 1 };\r\n if (!this._iblSource) {\r\n this._iblSource = RawTexture.CreateRTexture(\r\n new Uint8Array([255]),\r\n 1,\r\n 1,\r\n this._engine,\r\n false,\r\n false,\r\n Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n Constants.TEXTURETYPE_UNSIGNED_BYTE\r\n );\r\n this._iblSource.name = \"Placeholder IBL Source\";\r\n }\r\n if (this._iblSource.isCube) {\r\n size.width *= 4;\r\n size.height *= 2;\r\n // Force the resolution to be a power of 2 because we rely on the\r\n // auto-mipmap generation for the scaled luminance texture to produce\r\n // a 1x1 mip that represents the true average pixel intensity of the IBL.\r\n size.width = 1 << Math.floor(Math.log2(size.width));\r\n size.height = 1 << Math.floor(Math.log2(size.height));\r\n }\r\n\r\n const isWebGPU = this._engine.isWebGPU;\r\n // Create CDF maps (Cumulative Distribution Function) to assist in importance sampling\r\n const cdfOptions: IProceduralTextureCreationOptions = {\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n format: Constants.TEXTUREFORMAT_R,\r\n type: Constants.TEXTURETYPE_FLOAT,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n gammaSpace: false,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../ShadersWGSL/iblCdfx.fragment\"), import(\"../ShadersWGSL/iblCdfy.fragment\"), import(\"../ShadersWGSL/iblScaledLuminance.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../Shaders/iblCdfx.fragment\"), import(\"../Shaders/iblCdfy.fragment\"), import(\"../Shaders/iblScaledLuminance.fragment\")]);\r\n }\r\n },\r\n };\r\n const icdfOptions: IProceduralTextureCreationOptions = {\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n type: Constants.TEXTURETYPE_HALF_FLOAT,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n gammaSpace: false,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../ShadersWGSL/iblIcdf.fragment\"), import(\"../ShadersWGSL/iblDominantDirection.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../Shaders/iblIcdf.fragment\"), import(\"../Shaders/iblDominantDirection.fragment\")]);\r\n }\r\n },\r\n };\r\n this._cdfyPT = new ProceduralTexture(\"cdfyTexture\", { width: size.width, height: size.height + 1 }, \"iblCdfy\", this._scene, cdfOptions, false, false);\r\n this._cdfyPT.autoClear = false;\r\n this._cdfyPT.setTexture(\"iblSource\", this._iblSource);\r\n this._cdfyPT.setInt(\"iblHeight\", size.height);\r\n this._cdfyPT.wrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this._cdfyPT.refreshRate = 0;\r\n if (this._iblSource.isCube) {\r\n this._cdfyPT.defines = \"#define IBL_USE_CUBE_MAP\\n\";\r\n }\r\n\r\n this._cdfxPT = new ProceduralTexture(\"cdfxTexture\", { width: size.width + 1, height: 1 }, \"iblCdfx\", this._scene, cdfOptions, false, false);\r\n this._cdfxPT.autoClear = false;\r\n this._cdfxPT.setTexture(\"cdfy\", this._cdfyPT);\r\n this._cdfxPT.refreshRate = 0;\r\n this._cdfxPT.wrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n\r\n this._scaledLuminancePT = new ProceduralTexture(\r\n \"iblScaledLuminance\",\r\n { width: size.width, height: size.height },\r\n \"iblScaledLuminance\",\r\n this._scene,\r\n { ...cdfOptions, samplingMode: Constants.TEXTURE_TRILINEAR_SAMPLINGMODE, generateMipMaps: true },\r\n true,\r\n false\r\n );\r\n this._scaledLuminancePT.autoClear = false;\r\n this._scaledLuminancePT.setTexture(\"iblSource\", this._iblSource);\r\n this._scaledLuminancePT.setInt(\"iblHeight\", size.height);\r\n this._scaledLuminancePT.setInt(\"iblWidth\", size.width);\r\n this._scaledLuminancePT.refreshRate = 0;\r\n if (this._iblSource.isCube) {\r\n this._scaledLuminancePT.defines = \"#define IBL_USE_CUBE_MAP\\n\";\r\n }\r\n this._icdfPT = new ProceduralTexture(\"icdfTexture\", { width: size.width, height: size.height }, \"iblIcdf\", this._scene, icdfOptions, false, false);\r\n this._icdfPT.autoClear = false;\r\n this._icdfPT.setTexture(\"cdfy\", this._cdfyPT);\r\n this._icdfPT.setTexture(\"cdfx\", this._cdfxPT);\r\n this._icdfPT.setTexture(\"iblSource\", this._iblSource);\r\n this._icdfPT.setTexture(\"scaledLuminanceSampler\", this._scaledLuminancePT);\r\n this._icdfPT.refreshRate = 0;\r\n this._icdfPT.wrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this._icdfPT.wrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n if (this._iblSource.isCube) {\r\n this._icdfPT.defines = \"#define IBL_USE_CUBE_MAP\\n\";\r\n }\r\n // Once the textures are generated, notify that they are ready to use.\r\n this._icdfPT.onGeneratedObservable.addOnce(() => {\r\n this.onGeneratedObservable.notifyObservers();\r\n });\r\n\r\n this._dominantDirectionPT = new ProceduralTexture(\"iblDominantDirection\", { width: 1, height: 1 }, \"iblDominantDirection\", this._scene, icdfOptions, false, false);\r\n this._dominantDirectionPT.autoClear = false;\r\n this._dominantDirectionPT.setTexture(\"icdfSampler\", this._icdfPT);\r\n this._dominantDirectionPT.refreshRate = 0;\r\n this._dominantDirectionPT.defines = \"#define NUM_SAMPLES 32u\\n\";\r\n\r\n this.onTextureChangedObservable.notifyObservers();\r\n }\r\n\r\n private _disposeTextures() {\r\n this._cdfyPT?.dispose();\r\n this._cdfxPT?.dispose();\r\n this._icdfPT?.dispose();\r\n this._scaledLuminancePT?.dispose();\r\n this._dominantDirectionPT?.dispose();\r\n this._icdfPT = null;\r\n\r\n this.onTextureChangedObservable.notifyObservers();\r\n }\r\n\r\n private _createDebugPass() {\r\n if (this._debugPass) {\r\n this._debugPass.dispose();\r\n }\r\n const isWebGPU = this._engine.isWebGPU;\r\n const debugOptions: PostProcessOptions = {\r\n width: this._engine.getRenderWidth(),\r\n height: this._engine.getRenderHeight(),\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine: this._engine,\r\n textureType: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n uniforms: [\"sizeParams\"],\r\n samplers: [\"cdfy\", \"icdf\", \"cdfx\", \"iblSource\"],\r\n defines: this._iblSource?.isCube ? \"#define IBL_USE_CUBE_MAP\\n\" : \"\",\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializations: (useWebGPU: boolean, list: Promise<any>[]) => {\r\n if (useWebGPU) {\r\n list.push(import(\"../ShadersWGSL/iblCdfDebug.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/iblCdfDebug.fragment\"));\r\n }\r\n },\r\n };\r\n this._debugPass = new PostProcess(this._debugPassName, \"iblCdfDebug\", debugOptions);\r\n const debugEffect = this._debugPass.getEffect();\r\n if (debugEffect) {\r\n debugEffect.defines = this._iblSource?.isCube ? \"#define IBL_USE_CUBE_MAP\\n\" : \"\";\r\n }\r\n if (this._iblSource?.isCube) {\r\n this._debugPass.updateEffect(\"#define IBL_USE_CUBE_MAP\\n\");\r\n }\r\n this._debugPass.onApplyObservable.add((effect) => {\r\n effect.setTexture(\"cdfy\", this._cdfyPT);\r\n effect.setTexture(\"icdf\", this._icdfPT);\r\n effect.setTexture(\"cdfx\", this._cdfxPT);\r\n effect.setTexture(\"iblSource\", this._iblSource);\r\n effect.setFloat4(\"sizeParams\", this._debugSizeParams.x, this._debugSizeParams.y, this._debugSizeParams.z, this._debugSizeParams.w);\r\n });\r\n }\r\n\r\n /**\r\n * Checks if the CDF renderer is ready\r\n * @returns true if the CDF renderer is ready\r\n */\r\n public isReady() {\r\n return (\r\n this._iblSource &&\r\n this._iblSource.name !== \"Placeholder IBL Source\" &&\r\n this._iblSource.isReady() &&\r\n this._cdfyPT &&\r\n this._cdfyPT.isReady() &&\r\n this._icdfPT &&\r\n this._icdfPT.isReady() &&\r\n this._cdfxPT &&\r\n this._cdfxPT.isReady() &&\r\n this._scaledLuminancePT &&\r\n this._scaledLuminancePT.isReady()\r\n );\r\n }\r\n\r\n /**\r\n * Explicitly trigger generation of CDF maps when they are ready to render.\r\n * @returns Promise that resolves when the CDF maps are rendered.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async\r\n public renderWhenReady(): Promise<void> {\r\n this._cachedDominantDirection = null;\r\n // Even if a IBL source must be set before calling this function, _icdfPT may not yet be created because the creation may be asynchronous (see @set iblSource).\r\n const icdfPTPromise = new Promise((resolve, reject) => {\r\n _RetryWithInterval(\r\n () => !!this._icdfPT,\r\n () => resolve(void 0),\r\n () => reject(new Error(\"Waiting for _icdfPT creation failed\"))\r\n );\r\n });\r\n\r\n // eslint-disable-next-line github/no-then, @typescript-eslint/promise-function-async\r\n return icdfPTPromise.then(() => {\r\n const icdfTexture = this._icdfPT;\r\n const promises: Array<Promise<void>> = [];\r\n const renderTargets: Array<ProceduralTexture> = [this._cdfyPT, this._cdfxPT, this._scaledLuminancePT, icdfTexture!];\r\n for (const target of renderTargets) {\r\n promises.push(\r\n new Promise((resolve) => {\r\n if (target.isReady()) {\r\n resolve();\r\n } else {\r\n target.getEffect().executeWhenCompiled(() => {\r\n resolve();\r\n });\r\n }\r\n })\r\n );\r\n }\r\n // eslint-disable-next-line github/no-then\r\n return Promise.all(promises).then(() => {\r\n for (const target of renderTargets) {\r\n target.render();\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Finds the average direction of the highest intensity areas of the IBL source\r\n * @returns Async promise that resolves to the dominant direction of the IBL source\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async\r\n public findDominantDirection(): Promise<Vector3> {\r\n if (this._cachedDominantDirection) {\r\n return Promise.resolve(this._cachedDominantDirection);\r\n }\r\n return new Promise((resolve) => {\r\n this._dominantDirectionPT.onGeneratedObservable.addOnce(() => {\r\n const data = new Float32Array(4);\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises, github/no-then\r\n this._dominantDirectionPT.readPixels(0, 0, data, true)!.then(() => {\r\n const dominantDirection = new Vector3(data[0], data[1], data[2]);\r\n this._cachedDominantDirection = dominantDirection;\r\n resolve(dominantDirection);\r\n });\r\n });\r\n if (this.isReady()) {\r\n if (this._dominantDirectionPT.isReady()) {\r\n this._dominantDirectionPT.render();\r\n } else {\r\n this._dominantDirectionPT.getEffect().executeWhenCompiled(() => {\r\n this._dominantDirectionPT.render();\r\n });\r\n }\r\n } else {\r\n this.onGeneratedObservable.addOnce(() => {\r\n if (this._dominantDirectionPT.isReady()) {\r\n this._dominantDirectionPT.render();\r\n } else {\r\n this._dominantDirectionPT.getEffect().executeWhenCompiled(() => {\r\n this._dominantDirectionPT.render();\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Disposes the CDF renderer and associated resources\r\n */\r\n public dispose() {\r\n this._clearIblSourceReadinessObservers();\r\n this._disposeTextures();\r\n this._dummyTexture.dispose();\r\n if (this._debugPass) {\r\n this._debugPass.dispose();\r\n }\r\n this.onGeneratedObservable.clear();\r\n }\r\n\r\n private static _IsScene(sceneOrEngine: Scene | AbstractEngine): sceneOrEngine is Scene {\r\n return sceneOrEngine.getClassName() === \"Scene\";\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"iblCdfGenerator.js","sourceRoot":"","sources":["../../../../dev/core/src/Rendering/iblCdfGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { Constants } from \"../Engines/constants\";\r\nimport { type AbstractEngine } from \"../Engines/abstractEngine\";\r\n\r\nimport { type Scene } from \"../scene\";\r\nimport { Texture } from \"../Materials/Textures/texture.pure\";\r\nimport { type TextureSize } from \"../Materials/Textures/textureCreationOptions\";\r\nimport { ProceduralTexture, type IProceduralTextureCreationOptions } from \"../Materials/Textures/Procedurals/proceduralTexture.pure\";\r\nimport { PostProcess, type PostProcessOptions } from \"../PostProcesses/postProcess.pure\";\r\nimport { Vector3, Vector4 } from \"../Maths/math.vector.pure\";\r\nimport { RawTexture } from \"../Materials/Textures/rawTexture\";\r\nimport { type BaseTexture } from \"../Materials/Textures/baseTexture\";\r\nimport { Observable } from \"../Misc/observable\";\r\nimport { CubeTexture } from \"../Materials/Textures/cubeTexture.pure\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { _WarnImport } from \"../Misc/devTools\";\r\nimport { type Nullable } from \"../types\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { _RetryWithInterval } from \"../Misc/timingTools\";\r\nimport { RegisterIblCdfGeneratorSceneComponent } from \"./iblCdfGeneratorSceneComponent.pure\";\r\n\r\n/**\r\n * Build cdf maps to be used for IBL importance sampling.\r\n */\r\nexport class IblCdfGenerator {\r\n private _scene: Nullable<Scene>;\r\n private _engine: AbstractEngine;\r\n\r\n private _cdfyPT: ProceduralTexture;\r\n private _cdfxPT: ProceduralTexture;\r\n private _icdfPT: Nullable<ProceduralTexture>;\r\n private _scaledLuminancePT: ProceduralTexture;\r\n private _dominantDirectionPT: ProceduralTexture;\r\n private _iblSource: Nullable<BaseTexture>;\r\n private _dummyTexture: RawTexture;\r\n private _iblSourceLoadUnsubscribe: Nullable<() => void> = null;\r\n private _iblSourceReadyRetryObserver: Nullable<() => void> = null;\r\n\r\n private _cachedDominantDirection: Nullable<Vector3> = null;\r\n\r\n /**\r\n * Returns whether the CDF renderer is supported by the current engine\r\n */\r\n public get isSupported(): boolean {\r\n const engine = EngineStore.LastCreatedEngine;\r\n if (!engine) {\r\n return false;\r\n }\r\n return engine.getCaps().texelFetch;\r\n }\r\n\r\n /**\r\n * Gets the IBL source texture being used by the CDF renderer\r\n */\r\n public get iblSource(): Nullable<BaseTexture> {\r\n return this._iblSource;\r\n }\r\n\r\n /**\r\n * Sets the IBL source texture to be used by the CDF renderer.\r\n * This will trigger recreation of the CDF assets.\r\n */\r\n public set iblSource(source: Nullable<BaseTexture>) {\r\n if (this._iblSource === source) {\r\n return;\r\n }\r\n\r\n this._clearIblSourceReadinessObservers();\r\n this._disposeTextures();\r\n this._iblSource = source;\r\n\r\n if (!source) {\r\n return;\r\n }\r\n\r\n const recreateFromObservedSourceIfReady = () => {\r\n if (this._iblSource !== source || !this._isIblSourceReady(source)) {\r\n return;\r\n }\r\n\r\n this._clearIblSourceReadinessObservers();\r\n this._recreateAssetsFromNewIbl();\r\n };\r\n\r\n if (this._isIblSourceReady(source)) {\r\n this._recreateAssetsFromNewIbl();\r\n return;\r\n }\r\n\r\n if (source instanceof Texture) {\r\n const observer = source.onLoadObservable.addOnce(recreateFromObservedSourceIfReady);\r\n if (observer) {\r\n this._iblSourceLoadUnsubscribe = () => source.onLoadObservable.remove(observer);\r\n }\r\n } else if (source instanceof CubeTexture) {\r\n const observer = source.onLoadObservable.addOnce(recreateFromObservedSourceIfReady);\r\n if (observer) {\r\n this._iblSourceLoadUnsubscribe = () => source.onLoadObservable.remove(observer);\r\n }\r\n }\r\n\r\n this._iblSourceReadyRetryObserver = _RetryWithInterval(\r\n () => this._iblSource !== source || this._isIblSourceReady(source),\r\n recreateFromObservedSourceIfReady,\r\n undefined,\r\n 16,\r\n 30000,\r\n false\r\n );\r\n }\r\n\r\n private _isIblSourceReady(source: BaseTexture): boolean {\r\n if (!source.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n if (!source.isCube) {\r\n return true;\r\n }\r\n\r\n const internalTexture = source.getInternalTexture();\r\n return !!internalTexture && internalTexture.isReady;\r\n }\r\n\r\n private _clearIblSourceReadinessObservers() {\r\n this._iblSourceReadyRetryObserver?.();\r\n this._iblSourceReadyRetryObserver = null;\r\n\r\n this._iblSourceLoadUnsubscribe?.();\r\n this._iblSourceLoadUnsubscribe = null;\r\n }\r\n\r\n private _recreateAssetsFromNewIbl() {\r\n if (this._debugPass) {\r\n this._debugPass.dispose();\r\n }\r\n\r\n this._createTextures();\r\n\r\n if (this._debugPass) {\r\n // Recreate the debug pass because of the new textures\r\n this._createDebugPass();\r\n }\r\n }\r\n\r\n /**\r\n * Return the cumulative distribution function (CDF) texture\r\n * @returns Return the cumulative distribution function (CDF) texture\r\n */\r\n public getIcdfTexture(): Texture {\r\n return this._icdfPT ? this._icdfPT : this._dummyTexture;\r\n }\r\n\r\n /** Enable the debug view for this pass */\r\n public debugEnabled: boolean = false;\r\n private _debugPass: PostProcess;\r\n private _debugSizeParams: Vector4 = new Vector4(0.0, 0.0, 1.0, 1.0);\r\n\r\n /**\r\n * Sets params that control the position and scaling of the debug display on the screen.\r\n * @param x Screen X offset of the debug display (0-1)\r\n * @param y Screen Y offset of the debug display (0-1)\r\n * @param widthScale X scale of the debug display (0-1)\r\n * @param heightScale Y scale of the debug display (0-1)\r\n */\r\n public setDebugDisplayParams(x: number, y: number, widthScale: number, heightScale: number) {\r\n this._debugSizeParams.set(x, y, widthScale, heightScale);\r\n }\r\n\r\n /**\r\n * The name of the debug pass post process\r\n */\r\n public get debugPassName(): string {\r\n return this._debugPassName;\r\n }\r\n private _debugPassName: string = \"CDF Debug\";\r\n\r\n /**\r\n * Gets the debug pass post process\r\n * @returns The post process\r\n */\r\n public getDebugPassPP(): PostProcess {\r\n if (!this._debugPass) {\r\n this._createDebugPass();\r\n }\r\n return this._debugPass;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static _SceneComponentInitialization: (scene: Scene) => void = (_) => {\r\n throw _WarnImport(\"IblCdfGeneratorSceneComponentSceneComponent\");\r\n };\r\n\r\n /**\r\n * Instanciates the CDF renderer\r\n * @param sceneOrEngine Scene to attach to\r\n * @returns The CDF renderer\r\n */\r\n constructor(sceneOrEngine: Nullable<Scene | AbstractEngine>) {\r\n if (sceneOrEngine) {\r\n if (IblCdfGenerator._IsScene(sceneOrEngine)) {\r\n this._scene = sceneOrEngine;\r\n } else {\r\n this._engine = sceneOrEngine;\r\n }\r\n } else {\r\n this._scene = EngineStore.LastCreatedScene;\r\n }\r\n if (this._scene) {\r\n this._engine = this._scene.getEngine();\r\n }\r\n if (!this.isSupported) {\r\n Logger.Warn(\"CDF renderer is not supported by the current engine.\");\r\n return;\r\n }\r\n const blackPixels = new Uint16Array([0, 0, 0, 255]);\r\n this._dummyTexture = new RawTexture(blackPixels, 1, 1, Constants.TEXTUREFORMAT_RGBA, sceneOrEngine, false, false, undefined, Constants.TEXTURETYPE_HALF_FLOAT);\r\n if (this._scene) {\r\n RegisterIblCdfGeneratorSceneComponent(IblCdfGenerator);\r\n IblCdfGenerator._SceneComponentInitialization(this._scene);\r\n }\r\n }\r\n\r\n /**\r\n * Observable that triggers when the CDF renderer is ready\r\n */\r\n public onGeneratedObservable: Observable<void> = new Observable<void>();\r\n\r\n /**\r\n * Observable that triggers when CDF texture references change.\r\n * It is raised after disposing textures (so fallback ICDF can be used)\r\n * and after creating new textures (so consumers can rebind immediately).\r\n */\r\n public onTextureChangedObservable: Observable<void> = new Observable<void>();\r\n\r\n private _createTextures() {\r\n const size: TextureSize = this._iblSource ? { width: this._iblSource.getSize().width, height: this._iblSource.getSize().height } : { width: 1, height: 1 };\r\n if (!this._iblSource) {\r\n this._iblSource = RawTexture.CreateRTexture(\r\n new Uint8Array([255]),\r\n 1,\r\n 1,\r\n this._engine,\r\n false,\r\n false,\r\n Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n Constants.TEXTURETYPE_UNSIGNED_BYTE\r\n );\r\n this._iblSource.name = \"Placeholder IBL Source\";\r\n }\r\n if (this._iblSource.isCube) {\r\n size.width *= 4;\r\n size.height *= 2;\r\n // Force the resolution to be a power of 2 because we rely on the\r\n // auto-mipmap generation for the scaled luminance texture to produce\r\n // a 1x1 mip that represents the true average pixel intensity of the IBL.\r\n size.width = 1 << Math.floor(Math.log2(size.width));\r\n size.height = 1 << Math.floor(Math.log2(size.height));\r\n }\r\n\r\n const isWebGPU = this._engine.isWebGPU;\r\n // Create CDF maps (Cumulative Distribution Function) to assist in importance sampling\r\n const cdfOptions: IProceduralTextureCreationOptions = {\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n format: Constants.TEXTUREFORMAT_R,\r\n type: Constants.TEXTURETYPE_FLOAT,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n gammaSpace: false,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../ShadersWGSL/iblCdfx.fragment\"), import(\"../ShadersWGSL/iblCdfy.fragment\"), import(\"../ShadersWGSL/iblScaledLuminance.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../Shaders/iblCdfx.fragment\"), import(\"../Shaders/iblCdfy.fragment\"), import(\"../Shaders/iblScaledLuminance.fragment\")]);\r\n }\r\n },\r\n };\r\n const icdfOptions: IProceduralTextureCreationOptions = {\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n type: Constants.TEXTURETYPE_HALF_FLOAT,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n gammaSpace: false,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../ShadersWGSL/iblIcdf.fragment\"), import(\"../ShadersWGSL/iblDominantDirection.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../Shaders/iblIcdf.fragment\"), import(\"../Shaders/iblDominantDirection.fragment\")]);\r\n }\r\n },\r\n };\r\n this._cdfyPT = new ProceduralTexture(\"cdfyTexture\", { width: size.width, height: size.height + 1 }, \"iblCdfy\", this._scene, cdfOptions, false, false);\r\n this._cdfyPT.autoClear = false;\r\n this._cdfyPT.setTexture(\"iblSource\", this._iblSource);\r\n this._cdfyPT.setInt(\"iblHeight\", size.height);\r\n this._cdfyPT.wrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this._cdfyPT.refreshRate = 0;\r\n if (this._iblSource.isCube) {\r\n this._cdfyPT.defines = \"#define IBL_USE_CUBE_MAP\\n\";\r\n }\r\n\r\n this._cdfxPT = new ProceduralTexture(\"cdfxTexture\", { width: size.width + 1, height: 1 }, \"iblCdfx\", this._scene, cdfOptions, false, false);\r\n this._cdfxPT.autoClear = false;\r\n this._cdfxPT.setTexture(\"cdfy\", this._cdfyPT);\r\n this._cdfxPT.refreshRate = 0;\r\n this._cdfxPT.wrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n\r\n this._scaledLuminancePT = new ProceduralTexture(\r\n \"iblScaledLuminance\",\r\n { width: size.width, height: size.height },\r\n \"iblScaledLuminance\",\r\n this._scene,\r\n { ...cdfOptions, samplingMode: Constants.TEXTURE_TRILINEAR_SAMPLINGMODE, generateMipMaps: true },\r\n true,\r\n false\r\n );\r\n this._scaledLuminancePT.autoClear = false;\r\n this._scaledLuminancePT.setTexture(\"iblSource\", this._iblSource);\r\n this._scaledLuminancePT.setInt(\"iblHeight\", size.height);\r\n this._scaledLuminancePT.setInt(\"iblWidth\", size.width);\r\n this._scaledLuminancePT.refreshRate = 0;\r\n if (this._iblSource.isCube) {\r\n this._scaledLuminancePT.defines = \"#define IBL_USE_CUBE_MAP\\n\";\r\n }\r\n this._icdfPT = new ProceduralTexture(\"icdfTexture\", { width: size.width, height: size.height }, \"iblIcdf\", this._scene, icdfOptions, false, false);\r\n this._icdfPT.autoClear = false;\r\n this._icdfPT.setTexture(\"cdfy\", this._cdfyPT);\r\n this._icdfPT.setTexture(\"cdfx\", this._cdfxPT);\r\n this._icdfPT.setTexture(\"iblSource\", this._iblSource);\r\n this._icdfPT.setTexture(\"scaledLuminanceSampler\", this._scaledLuminancePT);\r\n this._icdfPT.refreshRate = 0;\r\n this._icdfPT.wrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this._icdfPT.wrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n if (this._iblSource.isCube) {\r\n this._icdfPT.defines = \"#define IBL_USE_CUBE_MAP\\n\";\r\n }\r\n // Once the textures are generated, notify that they are ready to use.\r\n this._icdfPT.onGeneratedObservable.addOnce(() => {\r\n this.onGeneratedObservable.notifyObservers();\r\n });\r\n\r\n this._dominantDirectionPT = new ProceduralTexture(\"iblDominantDirection\", { width: 1, height: 1 }, \"iblDominantDirection\", this._scene, icdfOptions, false, false);\r\n this._dominantDirectionPT.autoClear = false;\r\n this._dominantDirectionPT.setTexture(\"icdfSampler\", this._icdfPT);\r\n this._dominantDirectionPT.refreshRate = 0;\r\n this._dominantDirectionPT.defines = \"#define NUM_SAMPLES 32u\\n\";\r\n\r\n this.onTextureChangedObservable.notifyObservers();\r\n }\r\n\r\n private _disposeTextures() {\r\n this._cdfyPT?.dispose();\r\n this._cdfxPT?.dispose();\r\n this._icdfPT?.dispose();\r\n this._scaledLuminancePT?.dispose();\r\n this._dominantDirectionPT?.dispose();\r\n this._icdfPT = null;\r\n\r\n this.onTextureChangedObservable.notifyObservers();\r\n }\r\n\r\n private _createDebugPass() {\r\n if (this._debugPass) {\r\n this._debugPass.dispose();\r\n }\r\n const isWebGPU = this._engine.isWebGPU;\r\n const debugOptions: PostProcessOptions = {\r\n width: this._engine.getRenderWidth(),\r\n height: this._engine.getRenderHeight(),\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine: this._engine,\r\n textureType: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n uniforms: [\"sizeParams\"],\r\n samplers: [\"cdfy\", \"icdf\", \"cdfx\", \"iblSource\"],\r\n defines: this._iblSource?.isCube ? \"#define IBL_USE_CUBE_MAP\\n\" : \"\",\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializations: (useWebGPU: boolean, list: Promise<any>[]) => {\r\n if (useWebGPU) {\r\n list.push(import(\"../ShadersWGSL/iblCdfDebug.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/iblCdfDebug.fragment\"));\r\n }\r\n },\r\n };\r\n this._debugPass = new PostProcess(this._debugPassName, \"iblCdfDebug\", debugOptions);\r\n const debugEffect = this._debugPass.getEffect();\r\n if (debugEffect) {\r\n debugEffect.defines = this._iblSource?.isCube ? \"#define IBL_USE_CUBE_MAP\\n\" : \"\";\r\n }\r\n if (this._iblSource?.isCube) {\r\n this._debugPass.updateEffect(\"#define IBL_USE_CUBE_MAP\\n\");\r\n }\r\n this._debugPass.onApplyObservable.add((effect) => {\r\n effect.setTexture(\"cdfy\", this._cdfyPT);\r\n effect.setTexture(\"icdf\", this._icdfPT);\r\n effect.setTexture(\"cdfx\", this._cdfxPT);\r\n effect.setTexture(\"iblSource\", this._iblSource);\r\n effect.setFloat4(\"sizeParams\", this._debugSizeParams.x, this._debugSizeParams.y, this._debugSizeParams.z, this._debugSizeParams.w);\r\n });\r\n }\r\n\r\n /**\r\n * Checks if the CDF renderer is ready\r\n * @returns true if the CDF renderer is ready\r\n */\r\n public isReady() {\r\n return (\r\n this._iblSource &&\r\n this._iblSource.name !== \"Placeholder IBL Source\" &&\r\n this._iblSource.isReady() &&\r\n this._cdfyPT &&\r\n this._cdfyPT.isReady() &&\r\n this._icdfPT &&\r\n this._icdfPT.isReady() &&\r\n this._cdfxPT &&\r\n this._cdfxPT.isReady() &&\r\n this._scaledLuminancePT &&\r\n this._scaledLuminancePT.isReady()\r\n );\r\n }\r\n\r\n /**\r\n * Explicitly trigger generation of CDF maps when they are ready to render.\r\n * @returns Promise that resolves when the CDF maps are rendered.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async\r\n public renderWhenReady(): Promise<void> {\r\n this._cachedDominantDirection = null;\r\n // Even if a IBL source must be set before calling this function, _icdfPT may not yet be created because the creation may be asynchronous (see @set iblSource).\r\n const icdfPTPromise = new Promise((resolve, reject) => {\r\n _RetryWithInterval(\r\n () => !!this._icdfPT,\r\n () => resolve(void 0),\r\n () => reject(new Error(\"Waiting for _icdfPT creation failed\"))\r\n );\r\n });\r\n\r\n // eslint-disable-next-line github/no-then, @typescript-eslint/promise-function-async\r\n return icdfPTPromise.then(() => {\r\n const icdfTexture = this._icdfPT;\r\n const promises: Array<Promise<void>> = [];\r\n const renderTargets: Array<ProceduralTexture> = [this._cdfyPT, this._cdfxPT, this._scaledLuminancePT, icdfTexture!];\r\n for (const target of renderTargets) {\r\n promises.push(\r\n new Promise((resolve) => {\r\n if (target.isReady()) {\r\n resolve();\r\n } else {\r\n target.getEffect().executeWhenCompiled(() => {\r\n resolve();\r\n });\r\n }\r\n })\r\n );\r\n }\r\n // eslint-disable-next-line github/no-then\r\n return Promise.all(promises).then(() => {\r\n for (const target of renderTargets) {\r\n target.render();\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Finds the average direction of the highest intensity areas of the IBL source\r\n * @returns Async promise that resolves to the dominant direction of the IBL source\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async\r\n public findDominantDirection(): Promise<Vector3> {\r\n if (this._cachedDominantDirection) {\r\n return Promise.resolve(this._cachedDominantDirection);\r\n }\r\n return new Promise((resolve) => {\r\n this._dominantDirectionPT.onGeneratedObservable.addOnce(() => {\r\n const data = new Float32Array(4);\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises, github/no-then\r\n this._dominantDirectionPT.readPixels(0, 0, data, true)!.then(() => {\r\n const dominantDirection = new Vector3(data[0], data[1], data[2]);\r\n this._cachedDominantDirection = dominantDirection;\r\n resolve(dominantDirection);\r\n });\r\n });\r\n if (this.isReady()) {\r\n if (this._dominantDirectionPT.isReady()) {\r\n this._dominantDirectionPT.render();\r\n } else {\r\n this._dominantDirectionPT.getEffect().executeWhenCompiled(() => {\r\n this._dominantDirectionPT.render();\r\n });\r\n }\r\n } else {\r\n this.onGeneratedObservable.addOnce(() => {\r\n if (this._dominantDirectionPT.isReady()) {\r\n this._dominantDirectionPT.render();\r\n } else {\r\n this._dominantDirectionPT.getEffect().executeWhenCompiled(() => {\r\n this._dominantDirectionPT.render();\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Disposes the CDF renderer and associated resources\r\n */\r\n public dispose() {\r\n this._clearIblSourceReadinessObservers();\r\n this._disposeTextures();\r\n this._dummyTexture.dispose();\r\n if (this._debugPass) {\r\n this._debugPass.dispose();\r\n }\r\n this.onGeneratedObservable.clear();\r\n }\r\n\r\n private static _IsScene(sceneOrEngine: Scene | AbstractEngine): sceneOrEngine is Scene {\r\n return sceneOrEngine.getClassName() === \"Scene\";\r\n }\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
1
  import { SmartArray, SmartArrayNoDuplicate } from "../Misc/smartArray.js";
2
- import { Vector3 } from "../Maths/math.vector.js";
2
+ import { Vector3 } from "../Maths/math.vector.pure.js";
3
3
 
4
4
  /**
5
5
  * This represents the object necessary to create a rendering group.
@@ -1 +1 @@
1
- {"version":3,"file":"renderingGroup.js","sourceRoot":"","sources":["../../../../dev/core/src/Rendering/renderingGroup.ts"],"names":[],"mappings":"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","sourcesContent":["import { SmartArray, SmartArrayNoDuplicate } from \"../Misc/smartArray\";\r\nimport { type SubMesh } from \"../Meshes/subMesh\";\r\nimport { type AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { type Nullable, type DeepImmutable } from \"../types\";\r\nimport { Vector3 } from \"../Maths/math.vector\";\r\nimport { type IParticleSystem } from \"../Particles/IParticleSystem\";\r\nimport { type IEdgesRenderer } from \"./edgesRenderer\";\r\nimport { type ISpriteManager } from \"../Sprites/spriteManager\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { type Material } from \"../Materials/material\";\r\nimport { type Scene } from \"../scene\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\n\r\n/**\r\n * This represents the object necessary to create a rendering group.\r\n * This is exclusively used and created by the rendering manager.\r\n * To modify the behavior, you use the available helpers in your scene or meshes.\r\n * @internal\r\n */\r\nexport class RenderingGroup {\r\n private static _ZeroVector: DeepImmutable<Vector3> = Vector3.Zero();\r\n private _scene: Scene;\r\n private _opaqueSubMeshes = new SmartArray<SubMesh>(256);\r\n /** @internal */\r\n public _transparentSubMeshes = new SmartArray<SubMesh>(256);\r\n private _alphaTestSubMeshes = new SmartArray<SubMesh>(256);\r\n private _depthOnlySubMeshes = new SmartArray<SubMesh>(256);\r\n private _particleSystems = new SmartArray<IParticleSystem>(256);\r\n private _spriteManagers = new SmartArray<ISpriteManager>(256);\r\n\r\n private _opaqueSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number>;\r\n private _alphaTestSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number>;\r\n private _transparentSortCompareFn: (a: SubMesh, b: SubMesh) => number;\r\n\r\n private _renderOpaque: (subMeshes: SmartArray<SubMesh>) => void;\r\n private _renderAlphaTest: (subMeshes: SmartArray<SubMesh>) => void;\r\n /** @internal */\r\n public _renderTransparent: (subMeshes: SmartArray<SubMesh>) => void;\r\n\r\n /** @internal */\r\n public _empty = true;\r\n\r\n /** @internal */\r\n public _edgesRenderers = new SmartArrayNoDuplicate<IEdgesRenderer>(16);\r\n\r\n public onBeforeTransparentRendering: () => void;\r\n\r\n public disableDepthPrePass = false;\r\n\r\n /**\r\n * Set the opaque sort comparison function.\r\n * If null the sub meshes will be render in the order they were created\r\n */\r\n public set opaqueSortCompareFn(value: Nullable<(a: SubMesh, b: SubMesh) => number>) {\r\n if (value) {\r\n this._opaqueSortCompareFn = value;\r\n } else {\r\n this._opaqueSortCompareFn = RenderingGroup.PainterSortCompare;\r\n }\r\n this._renderOpaque = this._renderOpaqueSorted;\r\n }\r\n\r\n /**\r\n * Set the alpha test sort comparison function.\r\n * If null the sub meshes will be render in the order they were created\r\n */\r\n public set alphaTestSortCompareFn(value: Nullable<(a: SubMesh, b: SubMesh) => number>) {\r\n if (value) {\r\n this._alphaTestSortCompareFn = value;\r\n } else {\r\n this._alphaTestSortCompareFn = RenderingGroup.PainterSortCompare;\r\n }\r\n this._renderAlphaTest = this._renderAlphaTestSorted;\r\n }\r\n\r\n /**\r\n * Set the transparent sort comparison function.\r\n * If null the sub meshes will be render in the order they were created\r\n */\r\n public set transparentSortCompareFn(value: Nullable<(a: SubMesh, b: SubMesh) => number>) {\r\n if (value) {\r\n this._transparentSortCompareFn = value;\r\n } else {\r\n this._transparentSortCompareFn = RenderingGroup.defaultTransparentSortCompare;\r\n }\r\n this._renderTransparent = this._renderTransparentSorted;\r\n }\r\n\r\n /**\r\n * Creates a new rendering group.\r\n * @param index The rendering group index\r\n * @param scene\r\n * @param opaqueSortCompareFn The opaque sort comparison function. If null no order is applied\r\n * @param alphaTestSortCompareFn The alpha test sort comparison function. If null no order is applied\r\n * @param transparentSortCompareFn The transparent sort comparison function. If null back to front + alpha index sort is applied\r\n */\r\n constructor(\r\n public index: number,\r\n scene: Scene,\r\n opaqueSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number> = null,\r\n alphaTestSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number> = null,\r\n transparentSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number> = null\r\n ) {\r\n this._scene = scene;\r\n\r\n this.opaqueSortCompareFn = opaqueSortCompareFn;\r\n this.alphaTestSortCompareFn = alphaTestSortCompareFn;\r\n this.transparentSortCompareFn = transparentSortCompareFn;\r\n }\r\n\r\n /**\r\n * Render all the sub meshes contained in the group.\r\n * @param customRenderFunction Used to override the default render behaviour of the group.\r\n * @param renderSprites\r\n * @param renderParticles\r\n * @param activeMeshes\r\n * @param renderDepthOnlyMeshes\r\n * @param renderOpaqueMeshes\r\n * @param renderAlphaTestMeshes\r\n * @param renderTransparentMeshes\r\n * @param customRenderTransparentSubMeshes\r\n */\r\n public render(\r\n customRenderFunction: Nullable<\r\n (\r\n opaqueSubMeshes: SmartArray<SubMesh>,\r\n transparentSubMeshes: SmartArray<SubMesh>,\r\n alphaTestSubMeshes: SmartArray<SubMesh>,\r\n depthOnlySubMeshes: SmartArray<SubMesh>\r\n ) => void\r\n >,\r\n renderSprites: boolean,\r\n renderParticles: boolean,\r\n activeMeshes: Nullable<AbstractMesh[]>,\r\n renderDepthOnlyMeshes: boolean = true,\r\n renderOpaqueMeshes: boolean = true,\r\n renderAlphaTestMeshes: boolean = true,\r\n renderTransparentMeshes: boolean = true,\r\n customRenderTransparentSubMeshes?: (transparentSubMeshes: SmartArray<SubMesh>, renderingGroup?: RenderingGroup) => void\r\n ): void {\r\n if (customRenderFunction) {\r\n customRenderFunction(this._opaqueSubMeshes, this._alphaTestSubMeshes, this._transparentSubMeshes, this._depthOnlySubMeshes);\r\n return;\r\n }\r\n\r\n const engine = this._scene.getEngine();\r\n\r\n // Depth only\r\n if (renderDepthOnlyMeshes && this._depthOnlySubMeshes.length !== 0) {\r\n engine.setColorWrite(false);\r\n this._renderAlphaTest(this._depthOnlySubMeshes);\r\n engine.setColorWrite(true);\r\n }\r\n\r\n // Opaque\r\n if (renderOpaqueMeshes && this._opaqueSubMeshes.length !== 0) {\r\n this._renderOpaque(this._opaqueSubMeshes);\r\n }\r\n\r\n // Alpha test\r\n if (renderAlphaTestMeshes && this._alphaTestSubMeshes.length !== 0) {\r\n this._renderAlphaTest(this._alphaTestSubMeshes);\r\n }\r\n\r\n const stencilState = engine.getStencilBuffer();\r\n engine.setStencilBuffer(false);\r\n\r\n // Sprites\r\n if (renderSprites) {\r\n this._renderSprites();\r\n }\r\n\r\n // Particles\r\n if (renderParticles) {\r\n this._renderParticles(activeMeshes);\r\n }\r\n\r\n if (this.onBeforeTransparentRendering) {\r\n this.onBeforeTransparentRendering();\r\n }\r\n\r\n // Transparent\r\n if (renderTransparentMeshes && (customRenderTransparentSubMeshes || this._transparentSubMeshes.length !== 0 || this._scene.useOrderIndependentTransparency)) {\r\n engine.setStencilBuffer(stencilState);\r\n if (customRenderTransparentSubMeshes) {\r\n customRenderTransparentSubMeshes(this._transparentSubMeshes, this);\r\n } else {\r\n if (this._scene.useOrderIndependentTransparency) {\r\n const excludedMeshes = this._scene.depthPeelingRenderer!.render(this._transparentSubMeshes);\r\n if (excludedMeshes.length) {\r\n // Render leftover meshes that could not be processed by depth peeling\r\n this._renderTransparent(excludedMeshes);\r\n }\r\n } else {\r\n this._renderTransparent(this._transparentSubMeshes);\r\n }\r\n }\r\n engine.setAlphaMode(Constants.ALPHA_DISABLE);\r\n }\r\n\r\n // Set back stencil to false in case it changes before the edge renderer.\r\n engine.setStencilBuffer(false);\r\n\r\n // Edges\r\n if (renderOpaqueMeshes && this._edgesRenderers.length) {\r\n for (let edgesRendererIndex = 0; edgesRendererIndex < this._edgesRenderers.length; edgesRendererIndex++) {\r\n this._edgesRenderers.data[edgesRendererIndex].render();\r\n }\r\n\r\n engine.setAlphaMode(Constants.ALPHA_DISABLE);\r\n }\r\n\r\n // Restore Stencil state.\r\n engine.setStencilBuffer(stencilState);\r\n }\r\n\r\n /**\r\n * Renders the opaque submeshes in the order from the opaqueSortCompareFn.\r\n * @param subMeshes The submeshes to render\r\n */\r\n private _renderOpaqueSorted(subMeshes: SmartArray<SubMesh>): void {\r\n RenderingGroup._RenderSorted(subMeshes, this._opaqueSortCompareFn, this._scene.activeCamera, false, this.disableDepthPrePass);\r\n }\r\n\r\n /**\r\n * Renders the opaque submeshes in the order from the alphatestSortCompareFn.\r\n * @param subMeshes The submeshes to render\r\n */\r\n private _renderAlphaTestSorted(subMeshes: SmartArray<SubMesh>): void {\r\n RenderingGroup._RenderSorted(subMeshes, this._alphaTestSortCompareFn, this._scene.activeCamera, false, this.disableDepthPrePass);\r\n }\r\n\r\n /**\r\n * Renders the opaque submeshes in the order from the transparentSortCompareFn.\r\n * @param subMeshes The submeshes to render\r\n */\r\n private _renderTransparentSorted(subMeshes: SmartArray<SubMesh>): void {\r\n RenderingGroup._RenderSorted(subMeshes, this._transparentSortCompareFn, this._scene.activeCamera, true, this.disableDepthPrePass);\r\n }\r\n\r\n /**\r\n * Renders the submeshes in a specified order.\r\n * @param subMeshes The submeshes to sort before render\r\n * @param sortCompareFn The comparison function use to sort\r\n * @param camera The camera position use to preprocess the submeshes to help sorting\r\n * @param transparent Specifies to activate blending if true\r\n * @param disableDepthPrePass Specifies to disable depth pre-pass if true (default: false)\r\n */\r\n private static _RenderSorted(\r\n subMeshes: SmartArray<SubMesh>,\r\n sortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number>,\r\n camera: Nullable<Camera>,\r\n transparent: boolean,\r\n disableDepthPrePass?: boolean\r\n ): void {\r\n let subIndex = 0;\r\n let subMesh: SubMesh;\r\n const cameraPosition = camera ? camera.globalPosition : RenderingGroup._ZeroVector;\r\n\r\n if (transparent) {\r\n for (; subIndex < subMeshes.length; subIndex++) {\r\n subMesh = subMeshes.data[subIndex];\r\n subMesh._alphaIndex = subMesh.getMesh().alphaIndex;\r\n subMesh._distanceToCamera = Vector3.Distance(subMesh.getBoundingInfo().boundingSphere.centerWorld, cameraPosition);\r\n }\r\n }\r\n\r\n const sortedArray = subMeshes.length === subMeshes.data.length ? subMeshes.data : subMeshes.data.slice(0, subMeshes.length);\r\n\r\n if (sortCompareFn) {\r\n sortedArray.sort(sortCompareFn);\r\n }\r\n\r\n const scene = sortedArray[0].getMesh().getScene();\r\n for (subIndex = 0; subIndex < sortedArray.length; subIndex++) {\r\n subMesh = sortedArray[subIndex];\r\n\r\n if (scene._activeMeshesFrozenButKeepClipping && !subMesh.isInFrustum(scene._frustumPlanes)) {\r\n continue;\r\n }\r\n\r\n if (transparent) {\r\n const material = subMesh.getMaterial();\r\n\r\n if (material && material.needDepthPrePass && !disableDepthPrePass) {\r\n const engine = material.getScene().getEngine();\r\n engine.setColorWrite(false);\r\n engine.setAlphaMode(Constants.ALPHA_DISABLE);\r\n subMesh.render(false);\r\n engine.setColorWrite(true);\r\n }\r\n }\r\n\r\n subMesh.render(transparent);\r\n }\r\n }\r\n\r\n /**\r\n * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)\r\n * are rendered back to front if in the same alpha index.\r\n *\r\n * @param a The first submesh\r\n * @param b The second submesh\r\n * @returns The result of the comparison\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static defaultTransparentSortCompare(a: SubMesh, b: SubMesh): number {\r\n // Alpha index first\r\n if (a._alphaIndex > b._alphaIndex) {\r\n return 1;\r\n }\r\n if (a._alphaIndex < b._alphaIndex) {\r\n return -1;\r\n }\r\n\r\n // Then distance to camera\r\n return RenderingGroup.backToFrontSortCompare(a, b);\r\n }\r\n\r\n /**\r\n * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)\r\n * are rendered back to front.\r\n *\r\n * @param a The first submesh\r\n * @param b The second submesh\r\n * @returns The result of the comparison\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static backToFrontSortCompare(a: SubMesh, b: SubMesh): number {\r\n // Then distance to camera\r\n if (a._distanceToCamera < b._distanceToCamera) {\r\n return 1;\r\n }\r\n if (a._distanceToCamera > b._distanceToCamera) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n /**\r\n * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)\r\n * are rendered front to back (prevent overdraw).\r\n *\r\n * @param a The first submesh\r\n * @param b The second submesh\r\n * @returns The result of the comparison\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static frontToBackSortCompare(a: SubMesh, b: SubMesh): number {\r\n // Then distance to camera\r\n if (a._distanceToCamera < b._distanceToCamera) {\r\n return -1;\r\n }\r\n if (a._distanceToCamera > b._distanceToCamera) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n /**\r\n * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)\r\n * are grouped by material then geometry.\r\n *\r\n * @param a The first submesh\r\n * @param b The second submesh\r\n * @returns The result of the comparison\r\n */\r\n public static PainterSortCompare(a: SubMesh, b: SubMesh): number {\r\n const meshA = a.getMesh();\r\n const meshB = b.getMesh();\r\n\r\n if (meshA.material && meshB.material) {\r\n return meshA.material.uniqueId - meshB.material.uniqueId;\r\n }\r\n\r\n return meshA.uniqueId - meshB.uniqueId;\r\n }\r\n\r\n /**\r\n * Resets the different lists of submeshes to prepare a new frame.\r\n */\r\n public prepare(): void {\r\n this._opaqueSubMeshes.reset();\r\n this._transparentSubMeshes.reset();\r\n this._alphaTestSubMeshes.reset();\r\n this._depthOnlySubMeshes.reset();\r\n this._particleSystems.reset();\r\n this.prepareSprites();\r\n this._edgesRenderers.reset();\r\n this._empty = true;\r\n }\r\n\r\n /**\r\n * Resets the different lists of sprites to prepare a new frame.\r\n */\r\n public prepareSprites(): void {\r\n this._spriteManagers.reset();\r\n }\r\n\r\n public dispose(): void {\r\n this._opaqueSubMeshes.dispose();\r\n this._transparentSubMeshes.dispose();\r\n this._alphaTestSubMeshes.dispose();\r\n this._depthOnlySubMeshes.dispose();\r\n this._particleSystems.dispose();\r\n this._spriteManagers.dispose();\r\n this._edgesRenderers.dispose();\r\n }\r\n\r\n /**\r\n * Inserts the submesh in its correct queue depending on its material.\r\n * @param subMesh The submesh to dispatch\r\n * @param [mesh] Optional reference to the submeshes's mesh. Provide if you have an exiting reference to improve performance.\r\n * @param [material] Optional reference to the submeshes's material. Provide if you have an exiting reference to improve performance.\r\n */\r\n public dispatch(subMesh: SubMesh, mesh?: AbstractMesh, material?: Nullable<Material>): void {\r\n // Get mesh and materials if not provided\r\n if (mesh === undefined) {\r\n mesh = subMesh.getMesh();\r\n }\r\n if (material === undefined) {\r\n material = subMesh.getMaterial();\r\n }\r\n\r\n if (material === null || material === undefined) {\r\n return;\r\n }\r\n\r\n if (material.needAlphaBlendingForMesh(mesh)) {\r\n // Transparent\r\n this._transparentSubMeshes.push(subMesh);\r\n } else if (material.needAlphaTestingForMesh(mesh)) {\r\n // Alpha test\r\n if (material.needDepthPrePass && !this.disableDepthPrePass) {\r\n this._depthOnlySubMeshes.push(subMesh);\r\n }\r\n\r\n this._alphaTestSubMeshes.push(subMesh);\r\n } else {\r\n if (material.needDepthPrePass && !this.disableDepthPrePass) {\r\n this._depthOnlySubMeshes.push(subMesh);\r\n }\r\n\r\n this._opaqueSubMeshes.push(subMesh); // Opaque\r\n }\r\n\r\n mesh._renderingGroup = this;\r\n\r\n if (mesh._edgesRenderer && mesh.isEnabled() && mesh.isVisible && mesh._edgesRenderer.isEnabled) {\r\n this._edgesRenderers.pushNoDuplicate(mesh._edgesRenderer);\r\n }\r\n\r\n this._empty = false;\r\n }\r\n\r\n public dispatchSprites(spriteManager: ISpriteManager) {\r\n this._spriteManagers.push(spriteManager);\r\n this._empty = false;\r\n }\r\n\r\n public dispatchParticles(particleSystem: IParticleSystem) {\r\n this._particleSystems.push(particleSystem);\r\n this._empty = false;\r\n }\r\n\r\n private _renderParticles(activeMeshes: Nullable<AbstractMesh[]>): void {\r\n if (this._particleSystems.length === 0) {\r\n return;\r\n }\r\n\r\n // Particles\r\n const activeCamera = this._scene.activeCamera;\r\n this._scene.onBeforeParticlesRenderingObservable.notifyObservers(this._scene);\r\n for (let particleIndex = 0; particleIndex < this._particleSystems.length; particleIndex++) {\r\n const particleSystem = this._particleSystems.data[particleIndex];\r\n\r\n if ((activeCamera && activeCamera.layerMask & particleSystem.layerMask) === 0) {\r\n continue;\r\n }\r\n\r\n const emitter: any = particleSystem.emitter;\r\n if (!emitter.position || !activeMeshes || activeMeshes.indexOf(emitter) !== -1) {\r\n this._scene._activeParticles.addCount(particleSystem.render(), false);\r\n }\r\n }\r\n this._scene.onAfterParticlesRenderingObservable.notifyObservers(this._scene);\r\n }\r\n\r\n private _renderSprites(): void {\r\n if (!this._scene.spritesEnabled || this._spriteManagers.length === 0) {\r\n return;\r\n }\r\n\r\n // Sprites\r\n const activeCamera = this._scene.activeCamera;\r\n this._scene.onBeforeSpritesRenderingObservable.notifyObservers(this._scene);\r\n for (let id = 0; id < this._spriteManagers.length; id++) {\r\n const spriteManager = this._spriteManagers.data[id];\r\n\r\n if ((activeCamera && activeCamera.layerMask & spriteManager.layerMask) !== 0) {\r\n spriteManager.render();\r\n }\r\n }\r\n this._scene.onAfterSpritesRenderingObservable.notifyObservers(this._scene);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"renderingGroup.js","sourceRoot":"","sources":["../../../../dev/core/src/Rendering/renderingGroup.ts"],"names":[],"mappings":"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","sourcesContent":["import { SmartArray, SmartArrayNoDuplicate } from \"../Misc/smartArray\";\r\nimport { type SubMesh } from \"../Meshes/subMesh\";\r\nimport { type AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { type Nullable, type DeepImmutable } from \"../types\";\r\nimport { Vector3 } from \"../Maths/math.vector.pure\";\r\nimport { type IParticleSystem } from \"../Particles/IParticleSystem\";\r\nimport { type IEdgesRenderer } from \"./edgesRenderer\";\r\nimport { type ISpriteManager } from \"../Sprites/spriteManager\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { type Material } from \"../Materials/material\";\r\nimport { type Scene } from \"../scene\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\n\r\n/**\r\n * This represents the object necessary to create a rendering group.\r\n * This is exclusively used and created by the rendering manager.\r\n * To modify the behavior, you use the available helpers in your scene or meshes.\r\n * @internal\r\n */\r\nexport class RenderingGroup {\r\n private static _ZeroVector: DeepImmutable<Vector3> = Vector3.Zero();\r\n private _scene: Scene;\r\n private _opaqueSubMeshes = new SmartArray<SubMesh>(256);\r\n /** @internal */\r\n public _transparentSubMeshes = new SmartArray<SubMesh>(256);\r\n private _alphaTestSubMeshes = new SmartArray<SubMesh>(256);\r\n private _depthOnlySubMeshes = new SmartArray<SubMesh>(256);\r\n private _particleSystems = new SmartArray<IParticleSystem>(256);\r\n private _spriteManagers = new SmartArray<ISpriteManager>(256);\r\n\r\n private _opaqueSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number>;\r\n private _alphaTestSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number>;\r\n private _transparentSortCompareFn: (a: SubMesh, b: SubMesh) => number;\r\n\r\n private _renderOpaque: (subMeshes: SmartArray<SubMesh>) => void;\r\n private _renderAlphaTest: (subMeshes: SmartArray<SubMesh>) => void;\r\n /** @internal */\r\n public _renderTransparent: (subMeshes: SmartArray<SubMesh>) => void;\r\n\r\n /** @internal */\r\n public _empty = true;\r\n\r\n /** @internal */\r\n public _edgesRenderers = new SmartArrayNoDuplicate<IEdgesRenderer>(16);\r\n\r\n public onBeforeTransparentRendering: () => void;\r\n\r\n public disableDepthPrePass = false;\r\n\r\n /**\r\n * Set the opaque sort comparison function.\r\n * If null the sub meshes will be render in the order they were created\r\n */\r\n public set opaqueSortCompareFn(value: Nullable<(a: SubMesh, b: SubMesh) => number>) {\r\n if (value) {\r\n this._opaqueSortCompareFn = value;\r\n } else {\r\n this._opaqueSortCompareFn = RenderingGroup.PainterSortCompare;\r\n }\r\n this._renderOpaque = this._renderOpaqueSorted;\r\n }\r\n\r\n /**\r\n * Set the alpha test sort comparison function.\r\n * If null the sub meshes will be render in the order they were created\r\n */\r\n public set alphaTestSortCompareFn(value: Nullable<(a: SubMesh, b: SubMesh) => number>) {\r\n if (value) {\r\n this._alphaTestSortCompareFn = value;\r\n } else {\r\n this._alphaTestSortCompareFn = RenderingGroup.PainterSortCompare;\r\n }\r\n this._renderAlphaTest = this._renderAlphaTestSorted;\r\n }\r\n\r\n /**\r\n * Set the transparent sort comparison function.\r\n * If null the sub meshes will be render in the order they were created\r\n */\r\n public set transparentSortCompareFn(value: Nullable<(a: SubMesh, b: SubMesh) => number>) {\r\n if (value) {\r\n this._transparentSortCompareFn = value;\r\n } else {\r\n this._transparentSortCompareFn = RenderingGroup.defaultTransparentSortCompare;\r\n }\r\n this._renderTransparent = this._renderTransparentSorted;\r\n }\r\n\r\n /**\r\n * Creates a new rendering group.\r\n * @param index The rendering group index\r\n * @param scene\r\n * @param opaqueSortCompareFn The opaque sort comparison function. If null no order is applied\r\n * @param alphaTestSortCompareFn The alpha test sort comparison function. If null no order is applied\r\n * @param transparentSortCompareFn The transparent sort comparison function. If null back to front + alpha index sort is applied\r\n */\r\n constructor(\r\n public index: number,\r\n scene: Scene,\r\n opaqueSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number> = null,\r\n alphaTestSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number> = null,\r\n transparentSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number> = null\r\n ) {\r\n this._scene = scene;\r\n\r\n this.opaqueSortCompareFn = opaqueSortCompareFn;\r\n this.alphaTestSortCompareFn = alphaTestSortCompareFn;\r\n this.transparentSortCompareFn = transparentSortCompareFn;\r\n }\r\n\r\n /**\r\n * Render all the sub meshes contained in the group.\r\n * @param customRenderFunction Used to override the default render behaviour of the group.\r\n * @param renderSprites\r\n * @param renderParticles\r\n * @param activeMeshes\r\n * @param renderDepthOnlyMeshes\r\n * @param renderOpaqueMeshes\r\n * @param renderAlphaTestMeshes\r\n * @param renderTransparentMeshes\r\n * @param customRenderTransparentSubMeshes\r\n */\r\n public render(\r\n customRenderFunction: Nullable<\r\n (\r\n opaqueSubMeshes: SmartArray<SubMesh>,\r\n transparentSubMeshes: SmartArray<SubMesh>,\r\n alphaTestSubMeshes: SmartArray<SubMesh>,\r\n depthOnlySubMeshes: SmartArray<SubMesh>\r\n ) => void\r\n >,\r\n renderSprites: boolean,\r\n renderParticles: boolean,\r\n activeMeshes: Nullable<AbstractMesh[]>,\r\n renderDepthOnlyMeshes: boolean = true,\r\n renderOpaqueMeshes: boolean = true,\r\n renderAlphaTestMeshes: boolean = true,\r\n renderTransparentMeshes: boolean = true,\r\n customRenderTransparentSubMeshes?: (transparentSubMeshes: SmartArray<SubMesh>, renderingGroup?: RenderingGroup) => void\r\n ): void {\r\n if (customRenderFunction) {\r\n customRenderFunction(this._opaqueSubMeshes, this._alphaTestSubMeshes, this._transparentSubMeshes, this._depthOnlySubMeshes);\r\n return;\r\n }\r\n\r\n const engine = this._scene.getEngine();\r\n\r\n // Depth only\r\n if (renderDepthOnlyMeshes && this._depthOnlySubMeshes.length !== 0) {\r\n engine.setColorWrite(false);\r\n this._renderAlphaTest(this._depthOnlySubMeshes);\r\n engine.setColorWrite(true);\r\n }\r\n\r\n // Opaque\r\n if (renderOpaqueMeshes && this._opaqueSubMeshes.length !== 0) {\r\n this._renderOpaque(this._opaqueSubMeshes);\r\n }\r\n\r\n // Alpha test\r\n if (renderAlphaTestMeshes && this._alphaTestSubMeshes.length !== 0) {\r\n this._renderAlphaTest(this._alphaTestSubMeshes);\r\n }\r\n\r\n const stencilState = engine.getStencilBuffer();\r\n engine.setStencilBuffer(false);\r\n\r\n // Sprites\r\n if (renderSprites) {\r\n this._renderSprites();\r\n }\r\n\r\n // Particles\r\n if (renderParticles) {\r\n this._renderParticles(activeMeshes);\r\n }\r\n\r\n if (this.onBeforeTransparentRendering) {\r\n this.onBeforeTransparentRendering();\r\n }\r\n\r\n // Transparent\r\n if (renderTransparentMeshes && (customRenderTransparentSubMeshes || this._transparentSubMeshes.length !== 0 || this._scene.useOrderIndependentTransparency)) {\r\n engine.setStencilBuffer(stencilState);\r\n if (customRenderTransparentSubMeshes) {\r\n customRenderTransparentSubMeshes(this._transparentSubMeshes, this);\r\n } else {\r\n if (this._scene.useOrderIndependentTransparency) {\r\n const excludedMeshes = this._scene.depthPeelingRenderer!.render(this._transparentSubMeshes);\r\n if (excludedMeshes.length) {\r\n // Render leftover meshes that could not be processed by depth peeling\r\n this._renderTransparent(excludedMeshes);\r\n }\r\n } else {\r\n this._renderTransparent(this._transparentSubMeshes);\r\n }\r\n }\r\n engine.setAlphaMode(Constants.ALPHA_DISABLE);\r\n }\r\n\r\n // Set back stencil to false in case it changes before the edge renderer.\r\n engine.setStencilBuffer(false);\r\n\r\n // Edges\r\n if (renderOpaqueMeshes && this._edgesRenderers.length) {\r\n for (let edgesRendererIndex = 0; edgesRendererIndex < this._edgesRenderers.length; edgesRendererIndex++) {\r\n this._edgesRenderers.data[edgesRendererIndex].render();\r\n }\r\n\r\n engine.setAlphaMode(Constants.ALPHA_DISABLE);\r\n }\r\n\r\n // Restore Stencil state.\r\n engine.setStencilBuffer(stencilState);\r\n }\r\n\r\n /**\r\n * Renders the opaque submeshes in the order from the opaqueSortCompareFn.\r\n * @param subMeshes The submeshes to render\r\n */\r\n private _renderOpaqueSorted(subMeshes: SmartArray<SubMesh>): void {\r\n RenderingGroup._RenderSorted(subMeshes, this._opaqueSortCompareFn, this._scene.activeCamera, false, this.disableDepthPrePass);\r\n }\r\n\r\n /**\r\n * Renders the opaque submeshes in the order from the alphatestSortCompareFn.\r\n * @param subMeshes The submeshes to render\r\n */\r\n private _renderAlphaTestSorted(subMeshes: SmartArray<SubMesh>): void {\r\n RenderingGroup._RenderSorted(subMeshes, this._alphaTestSortCompareFn, this._scene.activeCamera, false, this.disableDepthPrePass);\r\n }\r\n\r\n /**\r\n * Renders the opaque submeshes in the order from the transparentSortCompareFn.\r\n * @param subMeshes The submeshes to render\r\n */\r\n private _renderTransparentSorted(subMeshes: SmartArray<SubMesh>): void {\r\n RenderingGroup._RenderSorted(subMeshes, this._transparentSortCompareFn, this._scene.activeCamera, true, this.disableDepthPrePass);\r\n }\r\n\r\n /**\r\n * Renders the submeshes in a specified order.\r\n * @param subMeshes The submeshes to sort before render\r\n * @param sortCompareFn The comparison function use to sort\r\n * @param camera The camera position use to preprocess the submeshes to help sorting\r\n * @param transparent Specifies to activate blending if true\r\n * @param disableDepthPrePass Specifies to disable depth pre-pass if true (default: false)\r\n */\r\n private static _RenderSorted(\r\n subMeshes: SmartArray<SubMesh>,\r\n sortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number>,\r\n camera: Nullable<Camera>,\r\n transparent: boolean,\r\n disableDepthPrePass?: boolean\r\n ): void {\r\n let subIndex = 0;\r\n let subMesh: SubMesh;\r\n const cameraPosition = camera ? camera.globalPosition : RenderingGroup._ZeroVector;\r\n\r\n if (transparent) {\r\n for (; subIndex < subMeshes.length; subIndex++) {\r\n subMesh = subMeshes.data[subIndex];\r\n subMesh._alphaIndex = subMesh.getMesh().alphaIndex;\r\n subMesh._distanceToCamera = Vector3.Distance(subMesh.getBoundingInfo().boundingSphere.centerWorld, cameraPosition);\r\n }\r\n }\r\n\r\n const sortedArray = subMeshes.length === subMeshes.data.length ? subMeshes.data : subMeshes.data.slice(0, subMeshes.length);\r\n\r\n if (sortCompareFn) {\r\n sortedArray.sort(sortCompareFn);\r\n }\r\n\r\n const scene = sortedArray[0].getMesh().getScene();\r\n for (subIndex = 0; subIndex < sortedArray.length; subIndex++) {\r\n subMesh = sortedArray[subIndex];\r\n\r\n if (scene._activeMeshesFrozenButKeepClipping && !subMesh.isInFrustum(scene._frustumPlanes)) {\r\n continue;\r\n }\r\n\r\n if (transparent) {\r\n const material = subMesh.getMaterial();\r\n\r\n if (material && material.needDepthPrePass && !disableDepthPrePass) {\r\n const engine = material.getScene().getEngine();\r\n engine.setColorWrite(false);\r\n engine.setAlphaMode(Constants.ALPHA_DISABLE);\r\n subMesh.render(false);\r\n engine.setColorWrite(true);\r\n }\r\n }\r\n\r\n subMesh.render(transparent);\r\n }\r\n }\r\n\r\n /**\r\n * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)\r\n * are rendered back to front if in the same alpha index.\r\n *\r\n * @param a The first submesh\r\n * @param b The second submesh\r\n * @returns The result of the comparison\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static defaultTransparentSortCompare(a: SubMesh, b: SubMesh): number {\r\n // Alpha index first\r\n if (a._alphaIndex > b._alphaIndex) {\r\n return 1;\r\n }\r\n if (a._alphaIndex < b._alphaIndex) {\r\n return -1;\r\n }\r\n\r\n // Then distance to camera\r\n return RenderingGroup.backToFrontSortCompare(a, b);\r\n }\r\n\r\n /**\r\n * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)\r\n * are rendered back to front.\r\n *\r\n * @param a The first submesh\r\n * @param b The second submesh\r\n * @returns The result of the comparison\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static backToFrontSortCompare(a: SubMesh, b: SubMesh): number {\r\n // Then distance to camera\r\n if (a._distanceToCamera < b._distanceToCamera) {\r\n return 1;\r\n }\r\n if (a._distanceToCamera > b._distanceToCamera) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n /**\r\n * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)\r\n * are rendered front to back (prevent overdraw).\r\n *\r\n * @param a The first submesh\r\n * @param b The second submesh\r\n * @returns The result of the comparison\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static frontToBackSortCompare(a: SubMesh, b: SubMesh): number {\r\n // Then distance to camera\r\n if (a._distanceToCamera < b._distanceToCamera) {\r\n return -1;\r\n }\r\n if (a._distanceToCamera > b._distanceToCamera) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n /**\r\n * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)\r\n * are grouped by material then geometry.\r\n *\r\n * @param a The first submesh\r\n * @param b The second submesh\r\n * @returns The result of the comparison\r\n */\r\n public static PainterSortCompare(a: SubMesh, b: SubMesh): number {\r\n const meshA = a.getMesh();\r\n const meshB = b.getMesh();\r\n\r\n if (meshA.material && meshB.material) {\r\n return meshA.material.uniqueId - meshB.material.uniqueId;\r\n }\r\n\r\n return meshA.uniqueId - meshB.uniqueId;\r\n }\r\n\r\n /**\r\n * Resets the different lists of submeshes to prepare a new frame.\r\n */\r\n public prepare(): void {\r\n this._opaqueSubMeshes.reset();\r\n this._transparentSubMeshes.reset();\r\n this._alphaTestSubMeshes.reset();\r\n this._depthOnlySubMeshes.reset();\r\n this._particleSystems.reset();\r\n this.prepareSprites();\r\n this._edgesRenderers.reset();\r\n this._empty = true;\r\n }\r\n\r\n /**\r\n * Resets the different lists of sprites to prepare a new frame.\r\n */\r\n public prepareSprites(): void {\r\n this._spriteManagers.reset();\r\n }\r\n\r\n public dispose(): void {\r\n this._opaqueSubMeshes.dispose();\r\n this._transparentSubMeshes.dispose();\r\n this._alphaTestSubMeshes.dispose();\r\n this._depthOnlySubMeshes.dispose();\r\n this._particleSystems.dispose();\r\n this._spriteManagers.dispose();\r\n this._edgesRenderers.dispose();\r\n }\r\n\r\n /**\r\n * Inserts the submesh in its correct queue depending on its material.\r\n * @param subMesh The submesh to dispatch\r\n * @param [mesh] Optional reference to the submeshes's mesh. Provide if you have an exiting reference to improve performance.\r\n * @param [material] Optional reference to the submeshes's material. Provide if you have an exiting reference to improve performance.\r\n */\r\n public dispatch(subMesh: SubMesh, mesh?: AbstractMesh, material?: Nullable<Material>): void {\r\n // Get mesh and materials if not provided\r\n if (mesh === undefined) {\r\n mesh = subMesh.getMesh();\r\n }\r\n if (material === undefined) {\r\n material = subMesh.getMaterial();\r\n }\r\n\r\n if (material === null || material === undefined) {\r\n return;\r\n }\r\n\r\n if (material.needAlphaBlendingForMesh(mesh)) {\r\n // Transparent\r\n this._transparentSubMeshes.push(subMesh);\r\n } else if (material.needAlphaTestingForMesh(mesh)) {\r\n // Alpha test\r\n if (material.needDepthPrePass && !this.disableDepthPrePass) {\r\n this._depthOnlySubMeshes.push(subMesh);\r\n }\r\n\r\n this._alphaTestSubMeshes.push(subMesh);\r\n } else {\r\n if (material.needDepthPrePass && !this.disableDepthPrePass) {\r\n this._depthOnlySubMeshes.push(subMesh);\r\n }\r\n\r\n this._opaqueSubMeshes.push(subMesh); // Opaque\r\n }\r\n\r\n mesh._renderingGroup = this;\r\n\r\n if (mesh._edgesRenderer && mesh.isEnabled() && mesh.isVisible && mesh._edgesRenderer.isEnabled) {\r\n this._edgesRenderers.pushNoDuplicate(mesh._edgesRenderer);\r\n }\r\n\r\n this._empty = false;\r\n }\r\n\r\n public dispatchSprites(spriteManager: ISpriteManager) {\r\n this._spriteManagers.push(spriteManager);\r\n this._empty = false;\r\n }\r\n\r\n public dispatchParticles(particleSystem: IParticleSystem) {\r\n this._particleSystems.push(particleSystem);\r\n this._empty = false;\r\n }\r\n\r\n private _renderParticles(activeMeshes: Nullable<AbstractMesh[]>): void {\r\n if (this._particleSystems.length === 0) {\r\n return;\r\n }\r\n\r\n // Particles\r\n const activeCamera = this._scene.activeCamera;\r\n this._scene.onBeforeParticlesRenderingObservable.notifyObservers(this._scene);\r\n for (let particleIndex = 0; particleIndex < this._particleSystems.length; particleIndex++) {\r\n const particleSystem = this._particleSystems.data[particleIndex];\r\n\r\n if ((activeCamera && activeCamera.layerMask & particleSystem.layerMask) === 0) {\r\n continue;\r\n }\r\n\r\n const emitter: any = particleSystem.emitter;\r\n if (!emitter.position || !activeMeshes || activeMeshes.indexOf(emitter) !== -1) {\r\n this._scene._activeParticles.addCount(particleSystem.render(), false);\r\n }\r\n }\r\n this._scene.onAfterParticlesRenderingObservable.notifyObservers(this._scene);\r\n }\r\n\r\n private _renderSprites(): void {\r\n if (!this._scene.spritesEnabled || this._spriteManagers.length === 0) {\r\n return;\r\n }\r\n\r\n // Sprites\r\n const activeCamera = this._scene.activeCamera;\r\n this._scene.onBeforeSpritesRenderingObservable.notifyObservers(this._scene);\r\n for (let id = 0; id < this._spriteManagers.length; id++) {\r\n const spriteManager = this._spriteManagers.data[id];\r\n\r\n if ((activeCamera && activeCamera.layerMask & spriteManager.layerMask) !== 0) {\r\n spriteManager.render();\r\n }\r\n }\r\n this._scene.onAfterSpritesRenderingObservable.notifyObservers(this._scene);\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
1
  import { type Scene } from "../scene.js";
2
- import { Color3, Color4 } from "../Maths/math.color.js";
3
- import { SubSurfaceScatteringPostProcess } from "../PostProcesses/subSurfaceScatteringPostProcess.js";
2
+ import { Color3, Color4 } from "../Maths/math.color.pure.js";
3
+ import { SubSurfaceScatteringPostProcess } from "../PostProcesses/subSurfaceScatteringPostProcess.pure.js";
4
4
  import { type PrePassEffectConfiguration } from "./prePassEffectConfiguration.js";
5
5
  /**
6
6
  * Contains all parameters needed for the prepass to perform
@@ -1,6 +1,6 @@
1
1
  import { Logger } from "../Misc/logger.js";
2
- import { Color3, Color4 } from "../Maths/math.color.js";
3
- import { SubSurfaceScatteringPostProcess } from "../PostProcesses/subSurfaceScatteringPostProcess.js";
2
+ import { Color3, Color4 } from "../Maths/math.color.pure.js";
3
+ import { SubSurfaceScatteringPostProcess } from "../PostProcesses/subSurfaceScatteringPostProcess.pure.js";
4
4
  import { SceneComponentConstants } from "../sceneComponent.js";
5
5
  import { _WarnImport } from "../Misc/devTools.js";
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"subSurfaceConfiguration.js","sourceRoot":"","sources":["../../../../dev/core/src/Rendering/subSurfaceConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../Misc/logger\";\r\nimport { type Scene } from \"../scene\";\r\nimport { Color3, Color4 } from \"../Maths/math.color\";\r\nimport { SubSurfaceScatteringPostProcess } from \"../PostProcesses/subSurfaceScatteringPostProcess\";\r\nimport { SceneComponentConstants } from \"../sceneComponent\";\r\nimport { type PrePassEffectConfiguration } from \"./prePassEffectConfiguration\";\r\nimport { _WarnImport } from \"../Misc/devTools\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { RegisterSubSurfaceSceneComponent } from \"./subSurfaceSceneComponent.pure\";\r\n\r\n/**\r\n * Contains all parameters needed for the prepass to perform\r\n * screen space subsurface scattering\r\n */\r\nexport class SubSurfaceConfiguration implements PrePassEffectConfiguration {\r\n /**\r\n * @internal\r\n */\r\n public static _SceneComponentInitialization: (scene: Scene) => void = (_) => {\r\n throw _WarnImport(\"SubSurfaceSceneComponent\");\r\n };\r\n\r\n private _ssDiffusionS: number[] = [];\r\n private _ssFilterRadii: number[] = [];\r\n private _ssDiffusionD: number[] = [];\r\n\r\n /**\r\n * Post process to attach for screen space subsurface scattering\r\n */\r\n public postProcess: SubSurfaceScatteringPostProcess;\r\n\r\n /**\r\n * Diffusion profile color for subsurface scattering\r\n */\r\n public get ssDiffusionS() {\r\n return this._ssDiffusionS;\r\n }\r\n\r\n /**\r\n * Diffusion profile max color channel value for subsurface scattering\r\n */\r\n public get ssDiffusionD() {\r\n return this._ssDiffusionD;\r\n }\r\n\r\n /**\r\n * Diffusion profile filter radius for subsurface scattering\r\n */\r\n public get ssFilterRadii() {\r\n return this._ssFilterRadii;\r\n }\r\n\r\n /**\r\n * Is subsurface enabled\r\n */\r\n public enabled = false;\r\n\r\n /**\r\n * Does the output of this prepass need to go through imageprocessing\r\n */\r\n public needsImageProcessing = true;\r\n\r\n /**\r\n * Name of the configuration\r\n */\r\n public name = SceneComponentConstants.NAME_SUBSURFACE;\r\n\r\n /**\r\n * Diffusion profile colors for subsurface scattering\r\n * You can add one diffusion color using `addDiffusionProfile` on `scene.prePassRenderer`\r\n * See ...\r\n * Note that you can only store up to 5 of them\r\n */\r\n public ssDiffusionProfileColors: Color3[] = [];\r\n\r\n /**\r\n * Defines the ratio real world => scene units.\r\n * Used for subsurface scattering\r\n */\r\n public metersPerUnit: number = 1;\r\n\r\n /**\r\n * Textures that should be present in the MRT for this effect to work\r\n */\r\n public readonly texturesRequired: number[] = [\r\n Constants.PREPASS_DEPTH_TEXTURE_TYPE,\r\n Constants.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE,\r\n Constants.PREPASS_COLOR_TEXTURE_TYPE,\r\n Constants.PREPASS_IRRADIANCE_LEGACY_TEXTURE_TYPE,\r\n ];\r\n\r\n /**\r\n * The clear color of the render targets.\r\n * We need 1 for the alpha channel of the irradiance texture so that we early exit from the SSS post-process if the pixel should not be processed\r\n */\r\n public clearColor = new Color4(0, 0, 0, 1);\r\n\r\n private _scene: Scene;\r\n\r\n /**\r\n * Builds a subsurface configuration object\r\n * @param scene The scene\r\n */\r\n constructor(scene: Scene) {\r\n // Adding default diffusion profile\r\n this.addDiffusionProfile(new Color3(1, 1, 1));\r\n this._scene = scene;\r\n\r\n RegisterSubSurfaceSceneComponent(SubSurfaceConfiguration);\r\n SubSurfaceConfiguration._SceneComponentInitialization(this._scene);\r\n }\r\n\r\n /**\r\n * Adds a new diffusion profile.\r\n * Useful for more realistic subsurface scattering on diverse materials.\r\n * @param color The color of the diffusion profile. Should be the average color of the material.\r\n * @returns The index of the diffusion profile for the material subsurface configuration\r\n */\r\n public addDiffusionProfile(color: Color3): number {\r\n if (this.ssDiffusionD.length >= 5) {\r\n // We only suppport 5 diffusion profiles\r\n Logger.Error(\"You already reached the maximum number of diffusion profiles.\");\r\n return 0; // default profile\r\n }\r\n\r\n // Do not add doubles\r\n for (let i = 0; i < this._ssDiffusionS.length / 3; i++) {\r\n if (this._ssDiffusionS[i * 3] === color.r && this._ssDiffusionS[i * 3 + 1] === color.g && this._ssDiffusionS[i * 3 + 2] === color.b) {\r\n return i;\r\n }\r\n }\r\n\r\n this._ssDiffusionS.push(color.r, color.b, color.g);\r\n this._ssDiffusionD.push(Math.max(Math.max(color.r, color.b), color.g));\r\n this._ssFilterRadii.push(this.getDiffusionProfileParameters(color));\r\n this.ssDiffusionProfileColors.push(color);\r\n\r\n return this._ssDiffusionD.length - 1;\r\n }\r\n\r\n /**\r\n * Creates the sss post process\r\n * @returns The created post process\r\n */\r\n public createPostProcess(): SubSurfaceScatteringPostProcess {\r\n this.postProcess = new SubSurfaceScatteringPostProcess(\"subSurfaceScattering\", this._scene, {\r\n size: 1,\r\n engine: this._scene.getEngine(),\r\n shaderLanguage: this._scene.getEngine().isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n });\r\n this.postProcess.autoClear = false;\r\n\r\n return this.postProcess;\r\n }\r\n\r\n /**\r\n * Deletes all diffusion profiles.\r\n * Note that in order to render subsurface scattering, you should have at least 1 diffusion profile.\r\n */\r\n public clearAllDiffusionProfiles() {\r\n this._ssDiffusionD = [];\r\n this._ssDiffusionS = [];\r\n this._ssFilterRadii = [];\r\n this.ssDiffusionProfileColors = [];\r\n }\r\n\r\n /**\r\n * Disposes this object\r\n */\r\n public dispose() {\r\n this.clearAllDiffusionProfiles();\r\n if (this.postProcess) {\r\n this.postProcess.dispose();\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n * https://zero-radiance.github.io/post/sampling-diffusion/\r\n *\r\n * Importance sample the normalized diffuse reflectance profile for the computed value of 's'.\r\n * ------------------------------------------------------------------------------------\r\n * R[r, phi, s] = s * (Exp[-r * s] + Exp[-r * s / 3]) / (8 * Pi * r)\r\n * PDF[r, phi, s] = r * R[r, phi, s]\r\n * CDF[r, s] = 1 - 1/4 * Exp[-r * s] - 3/4 * Exp[-r * s / 3]\r\n * ------------------------------------------------------------------------------------\r\n * We importance sample the color channel with the widest scattering distance.\r\n */\r\n public getDiffusionProfileParameters(color: Color3) {\r\n const cdf = 0.997;\r\n const maxScatteringDistance = Math.max(color.r, color.g, color.b);\r\n\r\n return this._sampleBurleyDiffusionProfile(cdf, maxScatteringDistance);\r\n }\r\n\r\n /**\r\n * Performs sampling of a Normalized Burley diffusion profile in polar coordinates.\r\n * 'u' is the random number (the value of the CDF): [0, 1).\r\n * rcp(s) = 1 / ShapeParam = ScatteringDistance.\r\n * Returns the sampled radial distance, s.t. (u = 0 -> r = 0) and (u = 1 -> r = Inf).\r\n * @param u\r\n * @param rcpS\r\n * @returns The sampled radial distance\r\n */\r\n private _sampleBurleyDiffusionProfile(u: number, rcpS: number) {\r\n u = 1 - u; // Convert CDF to CCDF\r\n\r\n const g = 1 + 4 * u * (2 * u + Math.sqrt(1 + 4 * u * u));\r\n const n = Math.pow(g, -1.0 / 3.0); // g^(-1/3)\r\n const p = g * n * n; // g^(+1/3)\r\n const c = 1 + p + n; // 1 + g^(+1/3) + g^(-1/3)\r\n const x = 3 * Math.log(c / (4 * u));\r\n\r\n return x * rcpS;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"subSurfaceConfiguration.js","sourceRoot":"","sources":["../../../../dev/core/src/Rendering/subSurfaceConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../Misc/logger\";\r\nimport { type Scene } from \"../scene\";\r\nimport { Color3, Color4 } from \"../Maths/math.color.pure\";\r\nimport { SubSurfaceScatteringPostProcess } from \"../PostProcesses/subSurfaceScatteringPostProcess.pure\";\r\nimport { SceneComponentConstants } from \"../sceneComponent\";\r\nimport { type PrePassEffectConfiguration } from \"./prePassEffectConfiguration\";\r\nimport { _WarnImport } from \"../Misc/devTools\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { RegisterSubSurfaceSceneComponent } from \"./subSurfaceSceneComponent.pure\";\r\n\r\n/**\r\n * Contains all parameters needed for the prepass to perform\r\n * screen space subsurface scattering\r\n */\r\nexport class SubSurfaceConfiguration implements PrePassEffectConfiguration {\r\n /**\r\n * @internal\r\n */\r\n public static _SceneComponentInitialization: (scene: Scene) => void = (_) => {\r\n throw _WarnImport(\"SubSurfaceSceneComponent\");\r\n };\r\n\r\n private _ssDiffusionS: number[] = [];\r\n private _ssFilterRadii: number[] = [];\r\n private _ssDiffusionD: number[] = [];\r\n\r\n /**\r\n * Post process to attach for screen space subsurface scattering\r\n */\r\n public postProcess: SubSurfaceScatteringPostProcess;\r\n\r\n /**\r\n * Diffusion profile color for subsurface scattering\r\n */\r\n public get ssDiffusionS() {\r\n return this._ssDiffusionS;\r\n }\r\n\r\n /**\r\n * Diffusion profile max color channel value for subsurface scattering\r\n */\r\n public get ssDiffusionD() {\r\n return this._ssDiffusionD;\r\n }\r\n\r\n /**\r\n * Diffusion profile filter radius for subsurface scattering\r\n */\r\n public get ssFilterRadii() {\r\n return this._ssFilterRadii;\r\n }\r\n\r\n /**\r\n * Is subsurface enabled\r\n */\r\n public enabled = false;\r\n\r\n /**\r\n * Does the output of this prepass need to go through imageprocessing\r\n */\r\n public needsImageProcessing = true;\r\n\r\n /**\r\n * Name of the configuration\r\n */\r\n public name = SceneComponentConstants.NAME_SUBSURFACE;\r\n\r\n /**\r\n * Diffusion profile colors for subsurface scattering\r\n * You can add one diffusion color using `addDiffusionProfile` on `scene.prePassRenderer`\r\n * See ...\r\n * Note that you can only store up to 5 of them\r\n */\r\n public ssDiffusionProfileColors: Color3[] = [];\r\n\r\n /**\r\n * Defines the ratio real world => scene units.\r\n * Used for subsurface scattering\r\n */\r\n public metersPerUnit: number = 1;\r\n\r\n /**\r\n * Textures that should be present in the MRT for this effect to work\r\n */\r\n public readonly texturesRequired: number[] = [\r\n Constants.PREPASS_DEPTH_TEXTURE_TYPE,\r\n Constants.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE,\r\n Constants.PREPASS_COLOR_TEXTURE_TYPE,\r\n Constants.PREPASS_IRRADIANCE_LEGACY_TEXTURE_TYPE,\r\n ];\r\n\r\n /**\r\n * The clear color of the render targets.\r\n * We need 1 for the alpha channel of the irradiance texture so that we early exit from the SSS post-process if the pixel should not be processed\r\n */\r\n public clearColor = new Color4(0, 0, 0, 1);\r\n\r\n private _scene: Scene;\r\n\r\n /**\r\n * Builds a subsurface configuration object\r\n * @param scene The scene\r\n */\r\n constructor(scene: Scene) {\r\n // Adding default diffusion profile\r\n this.addDiffusionProfile(new Color3(1, 1, 1));\r\n this._scene = scene;\r\n\r\n RegisterSubSurfaceSceneComponent(SubSurfaceConfiguration);\r\n SubSurfaceConfiguration._SceneComponentInitialization(this._scene);\r\n }\r\n\r\n /**\r\n * Adds a new diffusion profile.\r\n * Useful for more realistic subsurface scattering on diverse materials.\r\n * @param color The color of the diffusion profile. Should be the average color of the material.\r\n * @returns The index of the diffusion profile for the material subsurface configuration\r\n */\r\n public addDiffusionProfile(color: Color3): number {\r\n if (this.ssDiffusionD.length >= 5) {\r\n // We only suppport 5 diffusion profiles\r\n Logger.Error(\"You already reached the maximum number of diffusion profiles.\");\r\n return 0; // default profile\r\n }\r\n\r\n // Do not add doubles\r\n for (let i = 0; i < this._ssDiffusionS.length / 3; i++) {\r\n if (this._ssDiffusionS[i * 3] === color.r && this._ssDiffusionS[i * 3 + 1] === color.g && this._ssDiffusionS[i * 3 + 2] === color.b) {\r\n return i;\r\n }\r\n }\r\n\r\n this._ssDiffusionS.push(color.r, color.b, color.g);\r\n this._ssDiffusionD.push(Math.max(Math.max(color.r, color.b), color.g));\r\n this._ssFilterRadii.push(this.getDiffusionProfileParameters(color));\r\n this.ssDiffusionProfileColors.push(color);\r\n\r\n return this._ssDiffusionD.length - 1;\r\n }\r\n\r\n /**\r\n * Creates the sss post process\r\n * @returns The created post process\r\n */\r\n public createPostProcess(): SubSurfaceScatteringPostProcess {\r\n this.postProcess = new SubSurfaceScatteringPostProcess(\"subSurfaceScattering\", this._scene, {\r\n size: 1,\r\n engine: this._scene.getEngine(),\r\n shaderLanguage: this._scene.getEngine().isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n });\r\n this.postProcess.autoClear = false;\r\n\r\n return this.postProcess;\r\n }\r\n\r\n /**\r\n * Deletes all diffusion profiles.\r\n * Note that in order to render subsurface scattering, you should have at least 1 diffusion profile.\r\n */\r\n public clearAllDiffusionProfiles() {\r\n this._ssDiffusionD = [];\r\n this._ssDiffusionS = [];\r\n this._ssFilterRadii = [];\r\n this.ssDiffusionProfileColors = [];\r\n }\r\n\r\n /**\r\n * Disposes this object\r\n */\r\n public dispose() {\r\n this.clearAllDiffusionProfiles();\r\n if (this.postProcess) {\r\n this.postProcess.dispose();\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n * https://zero-radiance.github.io/post/sampling-diffusion/\r\n *\r\n * Importance sample the normalized diffuse reflectance profile for the computed value of 's'.\r\n * ------------------------------------------------------------------------------------\r\n * R[r, phi, s] = s * (Exp[-r * s] + Exp[-r * s / 3]) / (8 * Pi * r)\r\n * PDF[r, phi, s] = r * R[r, phi, s]\r\n * CDF[r, s] = 1 - 1/4 * Exp[-r * s] - 3/4 * Exp[-r * s / 3]\r\n * ------------------------------------------------------------------------------------\r\n * We importance sample the color channel with the widest scattering distance.\r\n */\r\n public getDiffusionProfileParameters(color: Color3) {\r\n const cdf = 0.997;\r\n const maxScatteringDistance = Math.max(color.r, color.g, color.b);\r\n\r\n return this._sampleBurleyDiffusionProfile(cdf, maxScatteringDistance);\r\n }\r\n\r\n /**\r\n * Performs sampling of a Normalized Burley diffusion profile in polar coordinates.\r\n * 'u' is the random number (the value of the CDF): [0, 1).\r\n * rcp(s) = 1 / ShapeParam = ScatteringDistance.\r\n * Returns the sampled radial distance, s.t. (u = 0 -> r = 0) and (u = 1 -> r = Inf).\r\n * @param u\r\n * @param rcpS\r\n * @returns The sampled radial distance\r\n */\r\n private _sampleBurleyDiffusionProfile(u: number, rcpS: number) {\r\n u = 1 - u; // Convert CDF to CCDF\r\n\r\n const g = 1 + 4 * u * (2 * u + Math.sqrt(1 + 4 * u * u));\r\n const n = Math.pow(g, -1.0 / 3.0); // g^(-1/3)\r\n const p = g * n * n; // g^(+1/3)\r\n const c = 1 + p + n; // 1 + g^(+1/3) + g^(-1/3)\r\n const x = 3 * Math.log(c / (4 * u));\r\n\r\n return x * rcpS;\r\n }\r\n}\r\n"]}
@@ -1,8 +1,8 @@
1
- import { type IDisposable, Scene } from "../scene.js";
1
+ import { type IDisposable, Scene } from "../scene.pure.js";
2
2
  import { type Nullable } from "../types.js";
3
3
  import { Observable } from "../Misc/observable.js";
4
4
  import { type AbstractMesh } from "../Meshes/abstractMesh.js";
5
- import { HemisphericLight } from "../Lights/hemisphericLight.js";
5
+ import { HemisphericLight } from "../Lights/hemisphericLight.pure.js";
6
6
  import { type Camera } from "../Cameras/camera.js";
7
7
  /**
8
8
  * Renders a layer on top of an existing scene
@@ -1,11 +1,11 @@
1
- import { Scene } from "../scene.js";
1
+ import { Scene } from "../scene.pure.js";
2
2
  import { Observable } from "../Misc/observable.js";
3
3
  import { PointerInfo, PointerEventTypes } from "../Events/pointerEvents.js";
4
4
  import { PickingInfo } from "../Collisions/pickingInfo.js";
5
5
  import { EngineStore } from "../Engines/engineStore.js";
6
- import { HemisphericLight } from "../Lights/hemisphericLight.js";
7
- import { Vector3 } from "../Maths/math.vector.js";
8
- import { Color3 } from "../Maths/math.color.js";
6
+ import { HemisphericLight } from "../Lights/hemisphericLight.pure.js";
7
+ import { Vector3 } from "../Maths/math.vector.pure.js";
8
+ import { Color3 } from "../Maths/math.color.pure.js";
9
9
  /**
10
10
  * Renders a layer on top of an existing scene
11
11
  */