@babylonjs/core 9.11.0 → 9.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1078) hide show
  1. package/Actions/actionManager.d.ts +1 -1
  2. package/Actions/actionManager.js +8 -5
  3. package/Actions/actionManager.js.map +1 -1
  4. package/Animations/animatable.core.d.ts +1 -1
  5. package/Animations/animatable.core.js +2 -2
  6. package/Animations/animatable.core.js.map +1 -1
  7. package/Animations/animationPropertiesOverride.js +1 -1
  8. package/Animations/animationPropertiesOverride.js.map +1 -1
  9. package/Animations/animatorAvatar.d.ts +2 -2
  10. package/Animations/animatorAvatar.js +3 -3
  11. package/Animations/animatorAvatar.js.map +1 -1
  12. package/Animations/pathCursor.d.ts +1 -1
  13. package/Animations/pathCursor.js +1 -1
  14. package/Animations/pathCursor.js.map +1 -1
  15. package/Animations/runtimeAnimation.d.ts +1 -1
  16. package/Animations/runtimeAnimation.js +2 -2
  17. package/Animations/runtimeAnimation.js.map +1 -1
  18. package/Audio/analyser.js +1 -1
  19. package/Audio/analyser.js.map +1 -1
  20. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js +1 -1
  21. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js.map +1 -1
  22. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.d.ts +1 -1
  23. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js +1 -1
  24. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js.map +1 -1
  25. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.d.ts +1 -1
  26. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js +1 -1
  27. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js.map +1 -1
  28. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +1 -1
  29. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +1 -1
  30. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
  31. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +1 -1
  32. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
  33. package/AudioV2/webAudio/webAudioStreamingSound.js +1 -1
  34. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  35. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
  36. package/BakedVertexAnimation/bakedVertexAnimationManager.js +1 -1
  37. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  38. package/BakedVertexAnimation/vertexAnimationBaker.js +1 -1
  39. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -1
  40. package/Behaviors/Cameras/bouncingBehavior.js +1 -1
  41. package/Behaviors/Cameras/bouncingBehavior.js.map +1 -1
  42. package/Behaviors/Cameras/framingBehavior.d.ts +1 -1
  43. package/Behaviors/Cameras/framingBehavior.js +2 -2
  44. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  45. package/Behaviors/Cameras/interpolatingBehavior.d.ts +28 -1
  46. package/Behaviors/Cameras/interpolatingBehavior.js +64 -22
  47. package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
  48. package/Behaviors/Meshes/attachToBoxBehavior.js +1 -1
  49. package/Behaviors/Meshes/attachToBoxBehavior.js.map +1 -1
  50. package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +3 -3
  51. package/Behaviors/Meshes/baseSixDofDragBehavior.js +4 -4
  52. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  53. package/Behaviors/Meshes/followBehavior.js +1 -1
  54. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  55. package/Behaviors/Meshes/handConstraintBehavior.js +2 -2
  56. package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
  57. package/Behaviors/Meshes/multiPointerScaleBehavior.js +1 -1
  58. package/Behaviors/Meshes/multiPointerScaleBehavior.js.map +1 -1
  59. package/Behaviors/Meshes/pointerDragBehavior.d.ts +3 -3
  60. package/Behaviors/Meshes/pointerDragBehavior.js +5 -5
  61. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  62. package/Behaviors/Meshes/sixDofDragBehavior.d.ts +1 -1
  63. package/Behaviors/Meshes/sixDofDragBehavior.js +2 -2
  64. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  65. package/Behaviors/Meshes/surfaceMagnetismBehavior.js +1 -1
  66. package/Behaviors/Meshes/surfaceMagnetismBehavior.js.map +1 -1
  67. package/Bones/boneIKController.d.ts +1 -1
  68. package/Bones/boneIKController.js +1 -1
  69. package/Bones/boneIKController.js.map +1 -1
  70. package/Bones/boneLookController.d.ts +1 -1
  71. package/Bones/boneLookController.js +1 -1
  72. package/Bones/boneLookController.js.map +1 -1
  73. package/Bones/skeleton.d.ts +2 -2
  74. package/Bones/skeleton.functions.d.ts +1 -1
  75. package/Bones/skeleton.functions.js +3 -3
  76. package/Bones/skeleton.functions.js.map +1 -1
  77. package/Bones/skeleton.js +3 -4
  78. package/Bones/skeleton.js.map +1 -1
  79. package/Buffers/buffer.align.pure.js +6 -0
  80. package/Buffers/buffer.align.pure.js.map +1 -1
  81. package/Buffers/buffer.nonFloatVertexBuffers.js +2 -1
  82. package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
  83. package/Buffers/buffer.pure.d.ts +8 -0
  84. package/Buffers/buffer.pure.js +31 -2
  85. package/Buffers/buffer.pure.js.map +1 -1
  86. package/Buffers/bufferUtils.js +17 -5
  87. package/Buffers/bufferUtils.js.map +1 -1
  88. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +1 -1
  89. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  90. package/Cameras/Inputs/BaseCameraPointersInput.js +1 -1
  91. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  92. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +1 -1
  93. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  94. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +2 -2
  95. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  96. package/Cameras/Inputs/flyCameraKeyboardInput.js +11 -3
  97. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  98. package/Cameras/Inputs/flyCameraMouseInput.d.ts +2 -0
  99. package/Cameras/Inputs/flyCameraMouseInput.js +16 -4
  100. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  101. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +1 -1
  102. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  103. package/Cameras/Inputs/followCameraMouseWheelInput.js +1 -1
  104. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  105. package/Cameras/Inputs/freeCameraGamepadInput.js +1 -1
  106. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  107. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +27 -7
  108. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  109. package/Cameras/Inputs/freeCameraMouseInput.d.ts +14 -0
  110. package/Cameras/Inputs/freeCameraMouseInput.js +27 -5
  111. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  112. package/Cameras/Inputs/freeCameraMouseWheelInput.js +1 -1
  113. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  114. package/Cameras/Inputs/freeCameraTouchInput.js +18 -7
  115. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  116. package/Cameras/Inputs/geospatialCameraKeyboardInput.js +9 -2
  117. package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
  118. package/Cameras/Limits/geospatialLimits.d.ts +1 -1
  119. package/Cameras/Limits/geospatialLimits.js +1 -1
  120. package/Cameras/Limits/geospatialLimits.js.map +1 -1
  121. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js +2 -2
  122. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js.map +1 -1
  123. package/Cameras/RigModes/stereoscopicRigMode.d.ts +1 -1
  124. package/Cameras/RigModes/stereoscopicRigMode.js +3 -3
  125. package/Cameras/RigModes/stereoscopicRigMode.js.map +1 -1
  126. package/Cameras/RigModes/vrRigMode.js +2 -2
  127. package/Cameras/RigModes/vrRigMode.js.map +1 -1
  128. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +3 -3
  129. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +5 -5
  130. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  131. package/Cameras/VR/vrCameraMetrics.d.ts +1 -1
  132. package/Cameras/VR/vrCameraMetrics.js +1 -1
  133. package/Cameras/VR/vrCameraMetrics.js.map +1 -1
  134. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  135. package/Cameras/cameraInputsManager.d.ts +1 -1
  136. package/Cameras/cameraInputsManager.js +1 -1
  137. package/Cameras/cameraInputsManager.js.map +1 -1
  138. package/Cameras/flyCamera.pure.d.ts +8 -0
  139. package/Cameras/flyCamera.pure.js.map +1 -1
  140. package/Cameras/freeCamera.pure.d.ts +8 -0
  141. package/Cameras/freeCamera.pure.js.map +1 -1
  142. package/Cameras/geospatialCamera.pure.d.ts +30 -7
  143. package/Cameras/geospatialCamera.pure.js +39 -14
  144. package/Cameras/geospatialCamera.pure.js.map +1 -1
  145. package/Cameras/geospatialCameraMovement.js +2 -2
  146. package/Cameras/geospatialCameraMovement.js.map +1 -1
  147. package/Cameras/index.d.ts +1 -0
  148. package/Cameras/index.js +1 -0
  149. package/Cameras/index.js.map +1 -1
  150. package/Cameras/pure.d.ts +1 -0
  151. package/Cameras/pure.js +1 -0
  152. package/Cameras/pure.js.map +1 -1
  153. package/Cameras/targetCamera.pure.d.ts +25 -0
  154. package/Cameras/targetCamera.pure.js +83 -25
  155. package/Cameras/targetCamera.pure.js.map +1 -1
  156. package/Cameras/targetCameraMovement.d.ts +56 -0
  157. package/Cameras/targetCameraMovement.js +63 -0
  158. package/Cameras/targetCameraMovement.js.map +1 -0
  159. package/Collisions/collider.d.ts +1 -1
  160. package/Collisions/collider.js +1 -1
  161. package/Collisions/collider.js.map +1 -1
  162. package/Collisions/gpuPicker.d.ts +1 -1
  163. package/Collisions/gpuPicker.js +5 -5
  164. package/Collisions/gpuPicker.js.map +1 -1
  165. package/Collisions/meshCollisionData.d.ts +1 -1
  166. package/Collisions/meshCollisionData.js +1 -1
  167. package/Collisions/meshCollisionData.js.map +1 -1
  168. package/Collisions/pickingInfo.d.ts +1 -1
  169. package/Collisions/pickingInfo.js +2 -2
  170. package/Collisions/pickingInfo.js.map +1 -1
  171. package/Culling/Octrees/octreeBlock.d.ts +1 -1
  172. package/Culling/Octrees/octreeBlock.js +1 -1
  173. package/Culling/Octrees/octreeBlock.js.map +1 -1
  174. package/Culling/boundingBox.d.ts +1 -1
  175. package/Culling/boundingBox.js +1 -1
  176. package/Culling/boundingBox.js.map +1 -1
  177. package/Culling/boundingInfo.d.ts +1 -1
  178. package/Culling/boundingInfo.js +1 -1
  179. package/Culling/boundingInfo.js.map +1 -1
  180. package/Culling/boundingSphere.d.ts +1 -1
  181. package/Culling/boundingSphere.js +1 -1
  182. package/Culling/boundingSphere.js.map +1 -1
  183. package/Culling/ray.core.d.ts +1 -1
  184. package/Culling/ray.core.js +1 -1
  185. package/Culling/ray.core.js.map +1 -1
  186. package/Debug/axesViewer.d.ts +1 -1
  187. package/Debug/axesViewer.js +3 -3
  188. package/Debug/axesViewer.js.map +1 -1
  189. package/Debug/boneAxesViewer.d.ts +1 -1
  190. package/Debug/boneAxesViewer.js +1 -1
  191. package/Debug/boneAxesViewer.js.map +1 -1
  192. package/Debug/directionalLightFrustumViewer.d.ts +1 -1
  193. package/Debug/directionalLightFrustumViewer.js +6 -6
  194. package/Debug/directionalLightFrustumViewer.js.map +1 -1
  195. package/Debug/rayHelper.d.ts +1 -1
  196. package/Debug/rayHelper.js +2 -2
  197. package/Debug/rayHelper.js.map +1 -1
  198. package/Debug/skeletonViewer.d.ts +2 -2
  199. package/Debug/skeletonViewer.js +10 -10
  200. package/Debug/skeletonViewer.js.map +1 -1
  201. package/DeviceInput/internalDeviceSourceManager.d.ts +1 -1
  202. package/DeviceInput/internalDeviceSourceManager.js +0 -1
  203. package/DeviceInput/internalDeviceSourceManager.js.map +1 -1
  204. package/DeviceInput/webDeviceInputSystem.js +1 -1
  205. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  206. package/Engines/AbstractEngine/abstractEngine.scissor.d.ts +18 -0
  207. package/Engines/AbstractEngine/abstractEngine.scissor.js +2 -0
  208. package/Engines/AbstractEngine/abstractEngine.scissor.js.map +1 -0
  209. package/Engines/Extensions/engine.views.d.ts +1 -1
  210. package/Engines/Extensions/engine.views.js +1 -1
  211. package/Engines/Extensions/engine.views.js.map +1 -1
  212. package/Engines/Native/nativeHelpers.js +4 -1
  213. package/Engines/Native/nativeHelpers.js.map +1 -1
  214. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -1
  215. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +11 -1
  216. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  217. package/Engines/WebGPU/webgpuComputeContext.d.ts +1 -1
  218. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  219. package/Engines/WebGPU/webgpuTintWASM.js +1 -1
  220. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  221. package/Engines/abstractEngine.pure.js +2 -2
  222. package/Engines/abstractEngine.pure.js.map +1 -1
  223. package/Engines/constants.d.ts +4 -0
  224. package/Engines/constants.js +4 -0
  225. package/Engines/constants.js.map +1 -1
  226. package/Engines/engine.d.ts +1 -0
  227. package/Engines/engine.js +1 -0
  228. package/Engines/engine.js.map +1 -1
  229. package/Engines/engine.pure.d.ts +0 -12
  230. package/Engines/engine.pure.js +0 -20
  231. package/Engines/engine.pure.js.map +1 -1
  232. package/Engines/engineFactory.d.ts +2 -2
  233. package/Engines/engineFactory.js +3 -3
  234. package/Engines/engineFactory.js.map +1 -1
  235. package/Engines/nullEngine.pure.d.ts +66 -0
  236. package/Engines/nullEngine.pure.js +93 -0
  237. package/Engines/nullEngine.pure.js.map +1 -1
  238. package/Engines/pure.d.ts +1 -0
  239. package/Engines/pure.js +1 -0
  240. package/Engines/pure.js.map +1 -1
  241. package/Engines/thinEngine.scissor.d.ts +6 -0
  242. package/Engines/thinEngine.scissor.js +9 -0
  243. package/Engines/thinEngine.scissor.js.map +1 -0
  244. package/Engines/thinEngine.scissor.pure.d.ts +6 -0
  245. package/Engines/thinEngine.scissor.pure.js +24 -0
  246. package/Engines/thinEngine.scissor.pure.js.map +1 -0
  247. package/Engines/thinNativeEngine.d.ts +0 -1
  248. package/Engines/thinNativeEngine.js +0 -1
  249. package/Engines/thinNativeEngine.js.map +1 -1
  250. package/Engines/thinNativeEngine.pure.js +7 -0
  251. package/Engines/thinNativeEngine.pure.js.map +1 -1
  252. package/Engines/webgpuEngine.pure.js.map +1 -1
  253. package/Events/pointerEvents.d.ts +1 -1
  254. package/Events/pointerEvents.js +1 -1
  255. package/Events/pointerEvents.js.map +1 -1
  256. package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js +1 -1
  257. package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js.map +1 -1
  258. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +1 -1
  259. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +1 -1
  260. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  261. package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js +1 -1
  262. package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js.map +1 -1
  263. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.d.ts +1 -1
  264. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js +3 -3
  265. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js.map +1 -1
  266. package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +1 -1
  267. package/FlowGraph/CustomTypes/flowGraphMatrix.js +1 -1
  268. package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
  269. package/FlowGraph/flowGraphBlock.d.ts +1 -1
  270. package/FlowGraph/flowGraphBlock.js +1 -1
  271. package/FlowGraph/flowGraphBlock.js.map +1 -1
  272. package/FlowGraph/flowGraphExecutionBlock.d.ts +1 -1
  273. package/FlowGraph/flowGraphExecutionBlock.js +1 -1
  274. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  275. package/FlowGraph/flowGraphMath.d.ts +1 -1
  276. package/FlowGraph/flowGraphMath.js +1 -1
  277. package/FlowGraph/flowGraphMath.js.map +1 -1
  278. package/FlowGraph/flowGraphParser.js +1 -1
  279. package/FlowGraph/flowGraphParser.js.map +1 -1
  280. package/FlowGraph/flowGraphPathConverterComponent.d.ts +1 -1
  281. package/FlowGraph/flowGraphPathConverterComponent.js +2 -2
  282. package/FlowGraph/flowGraphPathConverterComponent.js.map +1 -1
  283. package/FlowGraph/flowGraphValidator.js.map +1 -1
  284. package/FlowGraph/serialization.js +4 -4
  285. package/FlowGraph/serialization.js.map +1 -1
  286. package/FlowGraph/utils.js.map +1 -1
  287. package/FrameGraph/Node/nodeRenderGraph.d.ts +2 -2
  288. package/FrameGraph/Node/nodeRenderGraph.js +7 -7
  289. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  290. package/FrameGraph/Tasks/Layers/baseLayerTask.d.ts +30 -0
  291. package/FrameGraph/Tasks/Layers/baseLayerTask.js +28 -1
  292. package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
  293. package/FrameGraph/Tasks/Misc/computeShaderTask.d.ts +2 -2
  294. package/FrameGraph/Tasks/Misc/computeShaderTask.js +2 -2
  295. package/FrameGraph/Tasks/Misc/computeShaderTask.js.map +1 -1
  296. package/FrameGraph/Tasks/Misc/lightingVolumeTask.d.ts +1 -1
  297. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +2 -2
  298. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
  299. package/FrameGraph/Tasks/PostProcesses/blurTask.d.ts +7 -0
  300. package/FrameGraph/Tasks/PostProcesses/blurTask.js +8 -1
  301. package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -1
  302. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +1 -1
  303. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
  304. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js +1 -1
  305. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js.map +1 -1
  306. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.d.ts +1 -1
  307. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js +1 -1
  308. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js.map +1 -1
  309. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.d.ts +2 -2
  310. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js +3 -3
  311. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js.map +1 -1
  312. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +1 -1
  313. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +2 -2
  314. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
  315. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +6 -0
  316. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +14 -5
  317. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  318. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +1 -1
  319. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +1 -1
  320. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
  321. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.d.ts +1 -1
  322. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js +1 -1
  323. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js.map +1 -1
  324. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.d.ts +1 -1
  325. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js +2 -2
  326. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js.map +1 -1
  327. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.d.ts +1 -1
  328. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js +2 -2
  329. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js.map +1 -1
  330. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +7 -1
  331. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +7 -1
  332. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  333. package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +1 -1
  334. package/FrameGraph/Tasks/Texture/clearTextureTask.js +1 -1
  335. package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
  336. package/FrameGraph/frameGraphRenderContext.js +1 -1
  337. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  338. package/FrameGraph/frameGraphTextureManager.d.ts +1 -1
  339. package/FrameGraph/frameGraphTextureManager.js +1 -1
  340. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  341. package/Gamepads/gamepadManager.js +1 -1
  342. package/Gamepads/gamepadManager.js.map +1 -1
  343. package/Gizmos/axisDragGizmo.d.ts +5 -5
  344. package/Gizmos/axisDragGizmo.js +6 -6
  345. package/Gizmos/axisDragGizmo.js.map +1 -1
  346. package/Gizmos/axisScaleGizmo.d.ts +4 -4
  347. package/Gizmos/axisScaleGizmo.js +6 -6
  348. package/Gizmos/axisScaleGizmo.js.map +1 -1
  349. package/Gizmos/boundingBoxGizmo.d.ts +5 -5
  350. package/Gizmos/boundingBoxGizmo.js +7 -7
  351. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  352. package/Gizmos/cameraGizmo.d.ts +3 -3
  353. package/Gizmos/cameraGizmo.js +7 -7
  354. package/Gizmos/cameraGizmo.js.map +1 -1
  355. package/Gizmos/gizmo.d.ts +2 -2
  356. package/Gizmos/gizmo.js +3 -3
  357. package/Gizmos/gizmo.js.map +1 -1
  358. package/Gizmos/gizmoManager.d.ts +2 -2
  359. package/Gizmos/gizmoManager.js +2 -2
  360. package/Gizmos/gizmoManager.js.map +1 -1
  361. package/Gizmos/lightGizmo.d.ts +4 -4
  362. package/Gizmos/lightGizmo.js +11 -11
  363. package/Gizmos/lightGizmo.js.map +1 -1
  364. package/Gizmos/planeDragGizmo.d.ts +4 -4
  365. package/Gizmos/planeDragGizmo.js +5 -5
  366. package/Gizmos/planeDragGizmo.js.map +1 -1
  367. package/Gizmos/positionGizmo.d.ts +1 -1
  368. package/Gizmos/positionGizmo.js +2 -2
  369. package/Gizmos/positionGizmo.js.map +1 -1
  370. package/Gizmos/rotationGizmo.d.ts +3 -3
  371. package/Gizmos/rotationGizmo.js +3 -3
  372. package/Gizmos/rotationGizmo.js.map +1 -1
  373. package/Gizmos/scaleGizmo.d.ts +2 -2
  374. package/Gizmos/scaleGizmo.js +4 -4
  375. package/Gizmos/scaleGizmo.js.map +1 -1
  376. package/Gizmos/spatialAudioGizmo.d.ts +2 -2
  377. package/Gizmos/spatialAudioGizmo.js +6 -6
  378. package/Gizmos/spatialAudioGizmo.js.map +1 -1
  379. package/Helpers/environmentHelper.d.ts +6 -6
  380. package/Helpers/environmentHelper.js +12 -12
  381. package/Helpers/environmentHelper.js.map +1 -1
  382. package/Helpers/materialConversionHelper.d.ts +1 -1
  383. package/Helpers/materialConversionHelper.js +1 -1
  384. package/Helpers/materialConversionHelper.js.map +1 -1
  385. package/Helpers/photoDome.d.ts +1 -1
  386. package/Helpers/photoDome.js +1 -1
  387. package/Helpers/photoDome.js.map +1 -1
  388. package/Helpers/textureDome.d.ts +4 -4
  389. package/Helpers/textureDome.js +6 -6
  390. package/Helpers/textureDome.js.map +1 -1
  391. package/Helpers/videoDome.d.ts +1 -1
  392. package/Helpers/videoDome.js +2 -2
  393. package/Helpers/videoDome.js.map +1 -1
  394. package/Inputs/scene.inputManager.d.ts +1 -1
  395. package/Inputs/scene.inputManager.js +1 -1
  396. package/Inputs/scene.inputManager.js.map +1 -1
  397. package/Instrumentation/sceneInstrumentation.js +1 -1
  398. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  399. package/Layers/effectLayer.d.ts +1 -1
  400. package/Layers/effectLayer.js +3 -3
  401. package/Layers/effectLayer.js.map +1 -1
  402. package/Layers/layer.d.ts +2 -2
  403. package/Layers/layer.js +4 -4
  404. package/Layers/layer.js.map +1 -1
  405. package/Layers/thinEffectLayer.d.ts +2 -2
  406. package/Layers/thinEffectLayer.js +3 -3
  407. package/Layers/thinEffectLayer.js.map +1 -1
  408. package/Layers/thinGlowLayer.d.ts +1 -1
  409. package/Layers/thinGlowLayer.js +3 -3
  410. package/Layers/thinGlowLayer.js.map +1 -1
  411. package/Layers/thinHighlightLayer.d.ts +1 -1
  412. package/Layers/thinHighlightLayer.js +3 -3
  413. package/Layers/thinHighlightLayer.js.map +1 -1
  414. package/Layers/thinSelectionOutlineLayer.d.ts +1 -1
  415. package/Layers/thinSelectionOutlineLayer.js +3 -3
  416. package/Layers/thinSelectionOutlineLayer.js.map +1 -1
  417. package/Legacy/legacy.js +12 -1
  418. package/Legacy/legacy.js.map +1 -1
  419. package/LensFlares/lensFlare.d.ts +2 -2
  420. package/LensFlares/lensFlare.js +3 -3
  421. package/LensFlares/lensFlare.js.map +1 -1
  422. package/LensFlares/lensFlareSystem.d.ts +1 -1
  423. package/LensFlares/lensFlareSystem.js +6 -6
  424. package/LensFlares/lensFlareSystem.js.map +1 -1
  425. package/Lights/LTC/ltcTextureTool.js +1 -1
  426. package/Lights/LTC/ltcTextureTool.js.map +1 -1
  427. package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -285
  428. package/Lights/Shadows/cascadedShadowGenerator.js +3 -857
  429. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  430. package/Lights/Shadows/cascadedShadowGenerator.pure.d.ts +290 -0
  431. package/Lights/Shadows/cascadedShadowGenerator.pure.js +868 -0
  432. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -0
  433. package/Lights/Shadows/pure.d.ts +1 -0
  434. package/Lights/Shadows/pure.js +1 -0
  435. package/Lights/Shadows/pure.js.map +1 -1
  436. package/Lights/Shadows/shadowGenerator.d.ts +3 -3
  437. package/Lights/Shadows/shadowGenerator.js +7 -7
  438. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  439. package/Lights/areaLight.d.ts +1 -1
  440. package/Lights/areaLight.js +0 -1
  441. package/Lights/areaLight.js.map +1 -1
  442. package/Lights/light.d.ts +2 -2
  443. package/Lights/light.js +2 -2
  444. package/Lights/light.js.map +1 -1
  445. package/Lights/shadowLight.d.ts +1 -1
  446. package/Lights/shadowLight.js +1 -1
  447. package/Lights/shadowLight.js.map +1 -1
  448. package/Loading/sceneLoader.d.ts +2 -2
  449. package/Loading/sceneLoader.js +3 -3
  450. package/Loading/sceneLoader.js.map +1 -1
  451. package/Materials/GreasedLine/greasedLineMaterialDefaults.d.ts +1 -1
  452. package/Materials/GreasedLine/greasedLineMaterialDefaults.js +1 -1
  453. package/Materials/GreasedLine/greasedLineMaterialDefaults.js.map +1 -1
  454. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js +10 -3
  455. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js.map +1 -1
  456. package/Materials/GreasedLine/greasedLineSimpleMaterial.d.ts +3 -3
  457. package/Materials/GreasedLine/greasedLineSimpleMaterial.js +3 -3
  458. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  459. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +6 -6
  460. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
  461. package/Materials/Node/nodeMaterial.pure.d.ts +12 -0
  462. package/Materials/Node/nodeMaterial.pure.js +68 -13
  463. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  464. package/Materials/Node/nodeMaterialDefault.js +14 -14
  465. package/Materials/Node/nodeMaterialDefault.js.map +1 -1
  466. package/Materials/PBR/openpbrMaterial.pure.js +19 -4
  467. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  468. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +40 -2
  469. package/Materials/PBR/pbrAnisotropicConfiguration.js +41 -3
  470. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  471. package/Materials/PBR/pbrBRDFConfiguration.d.ts +5 -1
  472. package/Materials/PBR/pbrBRDFConfiguration.js +5 -1
  473. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  474. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +2 -2
  475. package/Materials/PBR/pbrBaseSimpleMaterial.js +2 -2
  476. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  477. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +42 -2
  478. package/Materials/PBR/pbrClearCoatConfiguration.js +42 -2
  479. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  480. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +38 -1
  481. package/Materials/PBR/pbrIridescenceConfiguration.js +38 -1
  482. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  483. package/Materials/PBR/pbrSheenConfiguration.d.ts +41 -2
  484. package/Materials/PBR/pbrSheenConfiguration.js +41 -2
  485. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  486. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +41 -2
  487. package/Materials/PBR/pbrSubSurfaceConfiguration.js +42 -3
  488. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  489. package/Materials/Textures/Filtering/hdrFiltering.js +1 -1
  490. package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
  491. package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +1 -1
  492. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +2 -2
  493. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
  494. package/Materials/Textures/Loaders/EXR/exrLoader.core.d.ts +1 -1
  495. package/Materials/Textures/Loaders/EXR/exrLoader.core.js +5 -109
  496. package/Materials/Textures/Loaders/EXR/exrLoader.core.js.map +1 -1
  497. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js +1 -1
  498. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js.map +1 -1
  499. package/Materials/Textures/Loaders/basisTextureLoader.js +2 -2
  500. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  501. package/Materials/Textures/Loaders/ddsTextureLoader.js +1 -1
  502. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  503. package/Materials/Textures/Loaders/envTextureLoader.js +3 -1
  504. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  505. package/Materials/Textures/Loaders/ktxTextureLoader.js +11 -2
  506. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  507. package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -1
  508. package/Materials/Textures/MultiviewRenderTarget.js +1 -1
  509. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  510. package/Materials/Textures/Packer/packer.d.ts +1 -1
  511. package/Materials/Textures/Packer/packer.js +6 -6
  512. package/Materials/Textures/Packer/packer.js.map +1 -1
  513. package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +2 -2
  514. package/Materials/Textures/Procedurals/customProceduralTexture.js +4 -4
  515. package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
  516. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +4 -1
  517. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  518. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js +1 -1
  519. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js.map +1 -1
  520. package/Materials/Textures/prePassRenderTarget.d.ts +1 -1
  521. package/Materials/Textures/prePassRenderTarget.js +1 -1
  522. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  523. package/Materials/Textures/rawCubeTexture.d.ts +1 -1
  524. package/Materials/Textures/rawCubeTexture.js +2 -2
  525. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  526. package/Materials/Textures/rawTexture.d.ts +1 -1
  527. package/Materials/Textures/rawTexture.js +1 -1
  528. package/Materials/Textures/rawTexture.js.map +1 -1
  529. package/Materials/Textures/rawTexture2DArray.d.ts +1 -1
  530. package/Materials/Textures/rawTexture2DArray.js +1 -1
  531. package/Materials/Textures/rawTexture2DArray.js.map +1 -1
  532. package/Materials/Textures/rawTexture3D.d.ts +1 -1
  533. package/Materials/Textures/rawTexture3D.js +1 -1
  534. package/Materials/Textures/rawTexture3D.js.map +1 -1
  535. package/Materials/Textures/refractionTexture.d.ts +1 -1
  536. package/Materials/Textures/refractionTexture.js +1 -1
  537. package/Materials/Textures/refractionTexture.js.map +1 -1
  538. package/Materials/Textures/textureMerger.d.ts +1 -1
  539. package/Materials/Textures/textureMerger.js +1 -1
  540. package/Materials/Textures/textureMerger.js.map +1 -1
  541. package/Materials/Textures/textureProcessor.d.ts +1 -1
  542. package/Materials/Textures/textureProcessor.js +2 -2
  543. package/Materials/Textures/textureProcessor.js.map +1 -1
  544. package/Materials/Textures/thinRenderTargetTexture.d.ts +4 -4
  545. package/Materials/Textures/thinRenderTargetTexture.js +2 -2
  546. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  547. package/Materials/clipPlaneMaterialHelper.js +1 -1
  548. package/Materials/clipPlaneMaterialHelper.js.map +1 -1
  549. package/Materials/effectRenderer.pure.js +4 -2
  550. package/Materials/effectRenderer.pure.js.map +1 -1
  551. package/Materials/floatingOriginMatrixOverrides.d.ts +1 -1
  552. package/Materials/floatingOriginMatrixOverrides.js +1 -1
  553. package/Materials/floatingOriginMatrixOverrides.js.map +1 -1
  554. package/Materials/material.detailMapConfiguration.d.ts +39 -1
  555. package/Materials/material.detailMapConfiguration.js +39 -1
  556. package/Materials/material.detailMapConfiguration.js.map +1 -1
  557. package/Materials/materialHelper.functions.js +45 -1
  558. package/Materials/materialHelper.functions.js.map +1 -1
  559. package/Materials/materialHelper.geometryrendering.d.ts +1 -1
  560. package/Materials/materialHelper.geometryrendering.js +1 -1
  561. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  562. package/Materials/materialPluginFactoryExport.js +2 -2
  563. package/Materials/materialPluginFactoryExport.js.map +1 -1
  564. package/Materials/pushMaterial.d.ts +7 -1
  565. package/Materials/pushMaterial.js +7 -1
  566. package/Materials/pushMaterial.js.map +1 -1
  567. package/Materials/uniformBuffer.js +1 -1
  568. package/Materials/uniformBuffer.js.map +1 -1
  569. package/Maths/math.axis.d.ts +1 -1
  570. package/Maths/math.axis.js +1 -1
  571. package/Maths/math.axis.js.map +1 -1
  572. package/Maths/math.d.ts +2 -2
  573. package/Maths/math.functions.d.ts +1 -1
  574. package/Maths/math.functions.js +1 -1
  575. package/Maths/math.functions.js.map +1 -1
  576. package/Maths/math.isovector.d.ts +1 -1
  577. package/Maths/math.isovector.js +1 -1
  578. package/Maths/math.isovector.js.map +1 -1
  579. package/Maths/math.js +2 -2
  580. package/Maths/math.js.map +1 -1
  581. package/Maths/math.path.d.ts +1 -1
  582. package/Maths/math.path.js +1 -1
  583. package/Maths/math.path.js.map +1 -1
  584. package/Maths/math.plane.d.ts +1 -1
  585. package/Maths/math.plane.js +1 -1
  586. package/Maths/math.plane.js.map +1 -1
  587. package/Maths/math.polar.d.ts +1 -1
  588. package/Maths/math.polar.js +1 -1
  589. package/Maths/math.polar.js.map +1 -1
  590. package/Maths/math.vertexFormat.d.ts +1 -1
  591. package/Maths/math.vertexFormat.js +1 -1
  592. package/Maths/math.vertexFormat.js.map +1 -1
  593. package/Maths/pure.d.ts +1 -0
  594. package/Maths/pure.js +1 -0
  595. package/Maths/pure.js.map +1 -1
  596. package/Meshes/Builders/geodesicBuilder.js +1 -1
  597. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  598. package/Meshes/Builders/goldbergBuilder.d.ts +1 -1
  599. package/Meshes/Builders/goldbergBuilder.js +4 -4
  600. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  601. package/Meshes/Builders/greasedLineBuilder.d.ts +4 -4
  602. package/Meshes/Builders/greasedLineBuilder.js +5 -5
  603. package/Meshes/Builders/greasedLineBuilder.js.map +1 -1
  604. package/Meshes/Builders/textBuilder.d.ts +2 -2
  605. package/Meshes/Builders/textBuilder.js +4 -4
  606. package/Meshes/Builders/textBuilder.js.map +1 -1
  607. package/Meshes/Builders/tiledBoxBuilder.d.ts +3 -3
  608. package/Meshes/Builders/tiledBoxBuilder.js +3 -3
  609. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  610. package/Meshes/Builders/tiledPlaneBuilder.d.ts +1 -1
  611. package/Meshes/Builders/tiledPlaneBuilder.js +1 -1
  612. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  613. package/Meshes/Compression/dracoCodec.js +1 -1
  614. package/Meshes/Compression/dracoCodec.js.map +1 -1
  615. package/Meshes/Compression/dracoDecoder.js +1 -1
  616. package/Meshes/Compression/dracoDecoder.js.map +1 -1
  617. package/Meshes/Compression/dracoEncoder.d.ts +1 -1
  618. package/Meshes/Compression/dracoEncoder.js +2 -2
  619. package/Meshes/Compression/dracoEncoder.js.map +1 -1
  620. package/Meshes/Compression/meshoptCompression.js +1 -1
  621. package/Meshes/Compression/meshoptCompression.js.map +1 -1
  622. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
  623. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  624. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +50 -1
  625. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +263 -107
  626. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  627. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +37 -0
  628. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +160 -0
  629. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
  630. package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +2 -2
  631. package/Meshes/GreasedLine/greasedLineBaseMesh.js +3 -3
  632. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  633. package/Meshes/Node/nodeGeometry.d.ts +2 -2
  634. package/Meshes/Node/nodeGeometry.js +4 -4
  635. package/Meshes/Node/nodeGeometry.js.map +1 -1
  636. package/Meshes/Node/nodeGeometryBuildState.d.ts +1 -1
  637. package/Meshes/Node/nodeGeometryBuildState.js +1 -1
  638. package/Meshes/Node/nodeGeometryBuildState.js.map +1 -1
  639. package/Meshes/abstractMesh.hotSpot.d.ts +1 -1
  640. package/Meshes/abstractMesh.hotSpot.js +2 -2
  641. package/Meshes/abstractMesh.hotSpot.js.map +1 -1
  642. package/Meshes/abstractMesh.pure.js +2 -13
  643. package/Meshes/abstractMesh.pure.js.map +1 -1
  644. package/Meshes/buffer.d.ts +1 -1
  645. package/Meshes/buffer.js +1 -1
  646. package/Meshes/buffer.js.map +1 -1
  647. package/Meshes/csg.d.ts +3 -3
  648. package/Meshes/csg.js +4 -4
  649. package/Meshes/csg.js.map +1 -1
  650. package/Meshes/csg2.d.ts +1 -1
  651. package/Meshes/csg2.js +38 -11
  652. package/Meshes/csg2.js.map +1 -1
  653. package/Meshes/geodesicMesh.d.ts +1 -1
  654. package/Meshes/geodesicMesh.js +1 -1
  655. package/Meshes/geodesicMesh.js.map +1 -1
  656. package/Meshes/geometry.d.ts +2 -2
  657. package/Meshes/geometry.js +34 -19
  658. package/Meshes/geometry.js.map +1 -1
  659. package/Meshes/lattice.d.ts +1 -1
  660. package/Meshes/lattice.js +1 -1
  661. package/Meshes/lattice.js.map +1 -1
  662. package/Meshes/lattice.material.d.ts +1 -1
  663. package/Meshes/lattice.material.js +1 -1
  664. package/Meshes/lattice.material.js.map +1 -1
  665. package/Meshes/mesh.pure.js +26 -14
  666. package/Meshes/mesh.pure.js.map +1 -1
  667. package/Meshes/mesh.vertexData.d.ts +2 -2
  668. package/Meshes/mesh.vertexData.js +3 -4
  669. package/Meshes/mesh.vertexData.js.map +1 -1
  670. package/Meshes/mesh.vertexData.subdivide.js +1 -1
  671. package/Meshes/mesh.vertexData.subdivide.js.map +1 -1
  672. package/Meshes/meshBuilder.d.ts +18 -18
  673. package/Meshes/meshBuilder.js +18 -18
  674. package/Meshes/meshBuilder.js.map +1 -1
  675. package/Meshes/meshSimplification.d.ts +1 -1
  676. package/Meshes/meshSimplification.js +4 -4
  677. package/Meshes/meshSimplification.js.map +1 -1
  678. package/Meshes/meshUVSpaceRenderer.d.ts +1 -1
  679. package/Meshes/meshUVSpaceRenderer.js +0 -1
  680. package/Meshes/meshUVSpaceRenderer.js.map +1 -1
  681. package/Meshes/meshUtils.d.ts +1 -1
  682. package/Meshes/meshUtils.js +2 -2
  683. package/Meshes/meshUtils.js.map +1 -1
  684. package/Meshes/polygonMesh.d.ts +2 -2
  685. package/Meshes/polygonMesh.js +3 -3
  686. package/Meshes/polygonMesh.js.map +1 -1
  687. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +2 -2
  688. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  689. package/Misc/HighDynamicRange/panoramaToCubemap.js +1 -1
  690. package/Misc/HighDynamicRange/panoramaToCubemap.js.map +1 -1
  691. package/Misc/PerformanceViewer/performanceViewerCollector.js +1 -1
  692. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  693. package/Misc/areaLightsTextureTools.d.ts +1 -1
  694. package/Misc/areaLightsTextureTools.js +3 -3
  695. package/Misc/areaLightsTextureTools.js.map +1 -1
  696. package/Misc/assetsManager.d.ts +4 -4
  697. package/Misc/assetsManager.js +5 -5
  698. package/Misc/assetsManager.js.map +1 -1
  699. package/Misc/basisWorker.js +1 -1
  700. package/Misc/basisWorker.js.map +1 -1
  701. package/Misc/brdfTextureTools.js +1 -1
  702. package/Misc/brdfTextureTools.js.map +1 -1
  703. package/Misc/copyTextureToTexture.d.ts +1 -1
  704. package/Misc/copyTextureToTexture.js +1 -1
  705. package/Misc/copyTextureToTexture.js.map +1 -1
  706. package/Misc/decorators.serialization.js +2 -2
  707. package/Misc/decorators.serialization.js.map +1 -1
  708. package/Misc/depthReducer.d.ts +2 -2
  709. package/Misc/depthReducer.js +2 -2
  710. package/Misc/depthReducer.js.map +1 -1
  711. package/Misc/gradients.d.ts +1 -1
  712. package/Misc/gradients.js +1 -1
  713. package/Misc/gradients.js.map +1 -1
  714. package/Misc/greasedLineTools.d.ts +1 -1
  715. package/Misc/greasedLineTools.js +3 -3
  716. package/Misc/greasedLineTools.js.map +1 -1
  717. package/Misc/halfFloat.d.ts +17 -0
  718. package/Misc/halfFloat.js +131 -0
  719. package/Misc/halfFloat.js.map +1 -0
  720. package/Misc/khronosTextureContainer2.js +1 -1
  721. package/Misc/khronosTextureContainer2.js.map +1 -1
  722. package/Misc/meshExploder.js +1 -1
  723. package/Misc/meshExploder.js.map +1 -1
  724. package/Misc/pivotTools.js +1 -1
  725. package/Misc/pivotTools.js.map +1 -1
  726. package/Misc/rgbdTextureTools.js +1 -1
  727. package/Misc/rgbdTextureTools.js.map +1 -1
  728. package/Misc/sceneOptimizer.js +1 -1
  729. package/Misc/sceneOptimizer.js.map +1 -1
  730. package/Misc/sceneRecorder.js +7 -7
  731. package/Misc/sceneRecorder.js.map +1 -1
  732. package/Misc/sceneSerializer.js +3 -3
  733. package/Misc/sceneSerializer.js.map +1 -1
  734. package/Misc/snapshotRenderingHelper.js +1 -1
  735. package/Misc/snapshotRenderingHelper.js.map +1 -1
  736. package/Misc/textureTools.d.ts +3 -13
  737. package/Misc/textureTools.js +6 -64
  738. package/Misc/textureTools.js.map +1 -1
  739. package/Misc/thinMinMaxReducer.d.ts +1 -1
  740. package/Misc/thinMinMaxReducer.js +1 -1
  741. package/Misc/thinMinMaxReducer.js.map +1 -1
  742. package/Misc/tools.internals.js +1 -1
  743. package/Misc/tools.internals.js.map +1 -1
  744. package/Misc/tools.pure.js +1 -1
  745. package/Misc/tools.pure.js.map +1 -1
  746. package/Misc/trajectoryClassifier.d.ts +1 -1
  747. package/Misc/trajectoryClassifier.js +1 -1
  748. package/Misc/trajectoryClassifier.js.map +1 -1
  749. package/Misc/videoRecorder.js +1 -1
  750. package/Misc/videoRecorder.js.map +1 -1
  751. package/Misc/virtualJoystick.d.ts +1 -1
  752. package/Misc/virtualJoystick.js +1 -1
  753. package/Misc/virtualJoystick.js.map +1 -1
  754. package/Morph/morphTarget.js +1 -1
  755. package/Morph/morphTarget.js.map +1 -1
  756. package/Navigation/Plugins/recastJSPlugin.d.ts +1 -1
  757. package/Navigation/Plugins/recastJSPlugin.js +2 -2
  758. package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
  759. package/Particles/EmitterTypes/boxParticleEmitter.d.ts +1 -1
  760. package/Particles/EmitterTypes/boxParticleEmitter.js +1 -1
  761. package/Particles/EmitterTypes/boxParticleEmitter.js.map +1 -1
  762. package/Particles/EmitterTypes/coneParticleEmitter.d.ts +1 -1
  763. package/Particles/EmitterTypes/coneParticleEmitter.js +1 -1
  764. package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
  765. package/Particles/EmitterTypes/customParticleEmitter.d.ts +1 -1
  766. package/Particles/EmitterTypes/customParticleEmitter.js +1 -1
  767. package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
  768. package/Particles/EmitterTypes/cylinderParticleEmitter.d.ts +1 -1
  769. package/Particles/EmitterTypes/cylinderParticleEmitter.js +1 -1
  770. package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
  771. package/Particles/EmitterTypes/hemisphericParticleEmitter.d.ts +1 -1
  772. package/Particles/EmitterTypes/hemisphericParticleEmitter.js +1 -1
  773. package/Particles/EmitterTypes/hemisphericParticleEmitter.js.map +1 -1
  774. package/Particles/EmitterTypes/meshParticleEmitter.d.ts +1 -1
  775. package/Particles/EmitterTypes/meshParticleEmitter.js +2 -2
  776. package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
  777. package/Particles/EmitterTypes/pointParticleEmitter.d.ts +1 -1
  778. package/Particles/EmitterTypes/pointParticleEmitter.js +1 -1
  779. package/Particles/EmitterTypes/pointParticleEmitter.js.map +1 -1
  780. package/Particles/EmitterTypes/sphereParticleEmitter.d.ts +1 -1
  781. package/Particles/EmitterTypes/sphereParticleEmitter.js +1 -1
  782. package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
  783. package/Particles/Node/nodeParticleBuildState.d.ts +4 -4
  784. package/Particles/Node/nodeParticleBuildState.js +2 -2
  785. package/Particles/Node/nodeParticleBuildState.js.map +1 -1
  786. package/Particles/Node/nodeParticleSystemSet.d.ts +2 -2
  787. package/Particles/Node/nodeParticleSystemSet.helper.js +31 -31
  788. package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
  789. package/Particles/Node/nodeParticleSystemSet.js +8 -8
  790. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  791. package/Particles/attractor.d.ts +1 -1
  792. package/Particles/attractor.js +1 -1
  793. package/Particles/attractor.js.map +1 -1
  794. package/Particles/flowMap.d.ts +7 -1
  795. package/Particles/flowMap.js +7 -1
  796. package/Particles/flowMap.js.map +1 -1
  797. package/Particles/particle.d.ts +2 -2
  798. package/Particles/particle.js +2 -2
  799. package/Particles/particle.js.map +1 -1
  800. package/Particles/particleHelper.js +5 -5
  801. package/Particles/particleHelper.js.map +1 -1
  802. package/Particles/particleSystem.functions.d.ts +1 -1
  803. package/Particles/particleSystem.functions.js +1 -1
  804. package/Particles/particleSystem.functions.js.map +1 -1
  805. package/Particles/particleSystemSet.d.ts +1 -1
  806. package/Particles/particleSystemSet.js +5 -5
  807. package/Particles/particleSystemSet.js.map +1 -1
  808. package/Particles/pointsCloudSystem.d.ts +1 -1
  809. package/Particles/pointsCloudSystem.js +6 -6
  810. package/Particles/pointsCloudSystem.js.map +1 -1
  811. package/Particles/solidParticle.d.ts +2 -2
  812. package/Particles/solidParticle.js +3 -3
  813. package/Particles/solidParticle.js.map +1 -1
  814. package/Particles/solidParticleSystem.d.ts +4 -4
  815. package/Particles/solidParticleSystem.js +7 -7
  816. package/Particles/solidParticleSystem.js.map +1 -1
  817. package/Particles/subEmitter.js +1 -1
  818. package/Particles/subEmitter.js.map +1 -1
  819. package/Particles/thinParticleSystem.function.js +2 -2
  820. package/Particles/thinParticleSystem.function.js.map +1 -1
  821. package/Physics/Plugins/cannonJSPlugin.d.ts +1 -1
  822. package/Physics/Plugins/cannonJSPlugin.js +1 -1
  823. package/Physics/Plugins/cannonJSPlugin.js.map +1 -1
  824. package/Physics/castingResult.d.ts +1 -1
  825. package/Physics/castingResult.js +1 -1
  826. package/Physics/castingResult.js.map +1 -1
  827. package/Physics/physicsHelper.d.ts +1 -1
  828. package/Physics/physicsHelper.js +4 -4
  829. package/Physics/physicsHelper.js.map +1 -1
  830. package/Physics/physicsImpostor.d.ts +1 -1
  831. package/Physics/physicsImpostor.js +1 -1
  832. package/Physics/physicsImpostor.js.map +1 -1
  833. package/Physics/physicsRaycastResult.d.ts +1 -1
  834. package/Physics/physicsRaycastResult.js +1 -1
  835. package/Physics/physicsRaycastResult.js.map +1 -1
  836. package/Physics/v1/Plugins/ammoJSPlugin.d.ts +2 -2
  837. package/Physics/v1/Plugins/ammoJSPlugin.js +5 -5
  838. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  839. package/Physics/v1/Plugins/oimoJSPlugin.d.ts +2 -2
  840. package/Physics/v1/Plugins/oimoJSPlugin.js +2 -2
  841. package/Physics/v1/Plugins/oimoJSPlugin.js.map +1 -1
  842. package/Physics/v1/physicsEngine.d.ts +1 -1
  843. package/Physics/v1/physicsEngine.js +1 -1
  844. package/Physics/v1/physicsEngine.js.map +1 -1
  845. package/Physics/v2/Plugins/havokPlugin.d.ts +14 -2
  846. package/Physics/v2/Plugins/havokPlugin.js +45 -7
  847. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  848. package/Physics/v2/characterController.d.ts +1 -1
  849. package/Physics/v2/characterController.js +2 -2
  850. package/Physics/v2/characterController.js.map +1 -1
  851. package/Physics/v2/physicsAggregate.d.ts +3 -3
  852. package/Physics/v2/physicsAggregate.js +10 -6
  853. package/Physics/v2/physicsAggregate.js.map +1 -1
  854. package/Physics/v2/physicsBody.d.ts +1 -1
  855. package/Physics/v2/physicsBody.js +1 -1
  856. package/Physics/v2/physicsBody.js.map +1 -1
  857. package/Physics/v2/physicsEngine.d.ts +1 -1
  858. package/Physics/v2/physicsEngine.js +1 -1
  859. package/Physics/v2/physicsEngine.js.map +1 -1
  860. package/Physics/v2/physicsShape.d.ts +1 -1
  861. package/Physics/v2/physicsShape.js +1 -1
  862. package/Physics/v2/physicsShape.js.map +1 -1
  863. package/Physics/v2/ragdoll.d.ts +2 -2
  864. package/Physics/v2/ragdoll.js +2 -2
  865. package/Physics/v2/ragdoll.js.map +1 -1
  866. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.d.ts +1 -0
  867. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +8 -6
  868. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
  869. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js +1 -1
  870. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js.map +1 -1
  871. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
  872. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
  873. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +3 -2
  874. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  875. package/PostProcesses/bloomEffect.d.ts +1 -1
  876. package/PostProcesses/bloomEffect.js +4 -4
  877. package/PostProcesses/bloomEffect.js.map +1 -1
  878. package/PostProcesses/depthOfFieldEffect.d.ts +1 -1
  879. package/PostProcesses/depthOfFieldEffect.js +3 -3
  880. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  881. package/PostProcesses/depthOfFieldMergePostProcess.d.ts +1 -1
  882. package/PostProcesses/depthOfFieldMergePostProcess.js +1 -1
  883. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  884. package/PostProcesses/highlightsPostProcess.d.ts +1 -1
  885. package/PostProcesses/highlightsPostProcess.js +1 -1
  886. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  887. package/PostProcesses/imageProcessingPostProcess.d.ts +1 -1
  888. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  889. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  890. package/PostProcesses/postProcessManager.d.ts +3 -0
  891. package/PostProcesses/postProcessManager.js +4 -1
  892. package/PostProcesses/postProcessManager.js.map +1 -1
  893. package/PostProcesses/subSurfaceScatteringPostProcess.pure.d.ts +1 -0
  894. package/PostProcesses/subSurfaceScatteringPostProcess.pure.js +10 -0
  895. package/PostProcesses/subSurfaceScatteringPostProcess.pure.js.map +1 -1
  896. package/PostProcesses/thinAnaglyphPostProcess.d.ts +1 -1
  897. package/PostProcesses/thinAnaglyphPostProcess.js +1 -1
  898. package/PostProcesses/thinAnaglyphPostProcess.js.map +1 -1
  899. package/PostProcesses/thinBlackAndWhitePostProcess.d.ts +1 -1
  900. package/PostProcesses/thinBlackAndWhitePostProcess.js +1 -1
  901. package/PostProcesses/thinBlackAndWhitePostProcess.js.map +1 -1
  902. package/PostProcesses/thinBloomEffect.js +1 -1
  903. package/PostProcesses/thinBloomEffect.js.map +1 -1
  904. package/PostProcesses/thinBloomMergePostProcess.d.ts +1 -1
  905. package/PostProcesses/thinBloomMergePostProcess.js +1 -1
  906. package/PostProcesses/thinBloomMergePostProcess.js.map +1 -1
  907. package/PostProcesses/thinBlurPostProcess.d.ts +1 -1
  908. package/PostProcesses/thinBlurPostProcess.js +1 -1
  909. package/PostProcesses/thinBlurPostProcess.js.map +1 -1
  910. package/PostProcesses/thinChromaticAberrationPostProcess.d.ts +2 -2
  911. package/PostProcesses/thinChromaticAberrationPostProcess.js +2 -2
  912. package/PostProcesses/thinChromaticAberrationPostProcess.js.map +1 -1
  913. package/PostProcesses/thinCircleOfConfusionPostProcess.d.ts +1 -1
  914. package/PostProcesses/thinCircleOfConfusionPostProcess.js +1 -1
  915. package/PostProcesses/thinCircleOfConfusionPostProcess.js.map +1 -1
  916. package/PostProcesses/thinColorCorrectionPostProcess.d.ts +1 -1
  917. package/PostProcesses/thinColorCorrectionPostProcess.js +2 -2
  918. package/PostProcesses/thinColorCorrectionPostProcess.js.map +1 -1
  919. package/PostProcesses/thinConvolutionPostProcess.d.ts +1 -1
  920. package/PostProcesses/thinConvolutionPostProcess.js +1 -1
  921. package/PostProcesses/thinConvolutionPostProcess.js.map +1 -1
  922. package/PostProcesses/thinCustomPostProcess.d.ts +1 -1
  923. package/PostProcesses/thinCustomPostProcess.js +1 -1
  924. package/PostProcesses/thinCustomPostProcess.js.map +1 -1
  925. package/PostProcesses/thinDepthOfFieldEffect.d.ts +3 -0
  926. package/PostProcesses/thinDepthOfFieldEffect.js +4 -1
  927. package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -1
  928. package/PostProcesses/thinDepthOfFieldMergePostProcess.d.ts +1 -1
  929. package/PostProcesses/thinDepthOfFieldMergePostProcess.js +1 -1
  930. package/PostProcesses/thinDepthOfFieldMergePostProcess.js.map +1 -1
  931. package/PostProcesses/thinExtractHighlightsPostProcess.d.ts +1 -1
  932. package/PostProcesses/thinExtractHighlightsPostProcess.js +1 -1
  933. package/PostProcesses/thinExtractHighlightsPostProcess.js.map +1 -1
  934. package/PostProcesses/thinFXAAPostProcess.d.ts +2 -2
  935. package/PostProcesses/thinFXAAPostProcess.js +2 -2
  936. package/PostProcesses/thinFXAAPostProcess.js.map +1 -1
  937. package/PostProcesses/thinFilterPostProcess.d.ts +2 -2
  938. package/PostProcesses/thinFilterPostProcess.js +2 -2
  939. package/PostProcesses/thinFilterPostProcess.js.map +1 -1
  940. package/PostProcesses/thinGrainPostProcess.d.ts +1 -1
  941. package/PostProcesses/thinGrainPostProcess.js +1 -1
  942. package/PostProcesses/thinGrainPostProcess.js.map +1 -1
  943. package/PostProcesses/thinImageProcessingPostProcess.d.ts +2 -2
  944. package/PostProcesses/thinImageProcessingPostProcess.js +2 -2
  945. package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -1
  946. package/PostProcesses/thinMotionBlurPostProcess.d.ts +1 -1
  947. package/PostProcesses/thinMotionBlurPostProcess.js +2 -2
  948. package/PostProcesses/thinMotionBlurPostProcess.js.map +1 -1
  949. package/PostProcesses/thinPassPostProcess.d.ts +1 -1
  950. package/PostProcesses/thinPassPostProcess.js +1 -1
  951. package/PostProcesses/thinPassPostProcess.js.map +1 -1
  952. package/PostProcesses/thinSSAO2BlurPostProcess.d.ts +1 -1
  953. package/PostProcesses/thinSSAO2BlurPostProcess.js +1 -1
  954. package/PostProcesses/thinSSAO2BlurPostProcess.js.map +1 -1
  955. package/PostProcesses/thinSSAO2CombinePostProcess.d.ts +1 -1
  956. package/PostProcesses/thinSSAO2CombinePostProcess.js +2 -2
  957. package/PostProcesses/thinSSAO2CombinePostProcess.js.map +1 -1
  958. package/PostProcesses/thinSSAO2PostProcess.d.ts +7 -2
  959. package/PostProcesses/thinSSAO2PostProcess.js +36 -4
  960. package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
  961. package/PostProcesses/thinSSRBlurCombinerPostProcess.d.ts +1 -1
  962. package/PostProcesses/thinSSRBlurCombinerPostProcess.js +2 -2
  963. package/PostProcesses/thinSSRBlurCombinerPostProcess.js.map +1 -1
  964. package/PostProcesses/thinSSRBlurPostProcess.d.ts +2 -2
  965. package/PostProcesses/thinSSRBlurPostProcess.js +2 -2
  966. package/PostProcesses/thinSSRBlurPostProcess.js.map +1 -1
  967. package/PostProcesses/thinSSRPostProcess.d.ts +1 -1
  968. package/PostProcesses/thinSSRPostProcess.js +2 -2
  969. package/PostProcesses/thinSSRPostProcess.js.map +1 -1
  970. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.d.ts +1 -1
  971. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js +1 -1
  972. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js.map +1 -1
  973. package/PostProcesses/thinSharpenPostProcess.d.ts +1 -1
  974. package/PostProcesses/thinSharpenPostProcess.js +1 -1
  975. package/PostProcesses/thinSharpenPostProcess.js.map +1 -1
  976. package/PostProcesses/thinTAAPostProcess.d.ts +3 -3
  977. package/PostProcesses/thinTAAPostProcess.js +4 -4
  978. package/PostProcesses/thinTAAPostProcess.js.map +1 -1
  979. package/PostProcesses/thinTonemapPostProcess.d.ts +1 -1
  980. package/PostProcesses/thinTonemapPostProcess.js +1 -1
  981. package/PostProcesses/thinTonemapPostProcess.js.map +1 -1
  982. package/PostProcesses/vrDistortionCorrectionPostProcess.d.ts +1 -1
  983. package/PostProcesses/vrDistortionCorrectionPostProcess.js +3 -3
  984. package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
  985. package/Rendering/IBLShadows/iblShadowsAccumulationPass.d.ts +2 -2
  986. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js +4 -4
  987. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js.map +1 -1
  988. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.d.ts +2 -2
  989. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js +4 -4
  990. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js.map +1 -1
  991. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +3 -3
  992. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +4 -4
  993. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  994. package/Rendering/depthPeelingRenderer.d.ts +1 -1
  995. package/Rendering/depthPeelingRenderer.js +2 -2
  996. package/Rendering/depthPeelingRenderer.js.map +1 -1
  997. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +1 -1
  998. package/Rendering/fluidRenderer/fluidRenderingObject.js +1 -1
  999. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  1000. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +1 -1
  1001. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +2 -2
  1002. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  1003. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +3 -3
  1004. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -3
  1005. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  1006. package/Rendering/fluidRenderer/fluidRenderingTextures.d.ts +2 -2
  1007. package/Rendering/fluidRenderer/fluidRenderingTextures.js +3 -3
  1008. package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
  1009. package/Rendering/iblCdfGenerator.d.ts +3 -3
  1010. package/Rendering/iblCdfGenerator.js +5 -5
  1011. package/Rendering/iblCdfGenerator.js.map +1 -1
  1012. package/Rendering/renderingGroup.js +1 -1
  1013. package/Rendering/renderingGroup.js.map +1 -1
  1014. package/Rendering/subSurfaceConfiguration.d.ts +2 -2
  1015. package/Rendering/subSurfaceConfiguration.js +2 -2
  1016. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  1017. package/Rendering/utilityLayerRenderer.d.ts +2 -2
  1018. package/Rendering/utilityLayerRenderer.js +4 -4
  1019. package/Rendering/utilityLayerRenderer.js.map +1 -1
  1020. package/Shaders/greasedLine.vertex.js +19 -3
  1021. package/Shaders/greasedLine.vertex.js.map +1 -1
  1022. package/Shaders/ssao2.fragment.js +10 -2
  1023. package/Shaders/ssao2.fragment.js.map +1 -1
  1024. package/ShadersWGSL/ssao2.fragment.js +10 -2
  1025. package/ShadersWGSL/ssao2.fragment.js.map +1 -1
  1026. package/SmartAssets/smartAssetSerializer.js +1 -1
  1027. package/SmartAssets/smartAssetSerializer.js.map +1 -1
  1028. package/Sprites/sprite.d.ts +2 -2
  1029. package/Sprites/sprite.js +2 -2
  1030. package/Sprites/sprite.js.map +1 -1
  1031. package/Sprites/spriteManager.d.ts +2 -2
  1032. package/Sprites/spriteManager.js +4 -5
  1033. package/Sprites/spriteManager.js.map +1 -1
  1034. package/Sprites/spritePackedManager.js +1 -1
  1035. package/Sprites/spritePackedManager.js.map +1 -1
  1036. package/Sprites/spriteRenderer.js +2 -2
  1037. package/Sprites/spriteRenderer.js.map +1 -1
  1038. package/XR/features/WebXRHitTestLegacy.d.ts +1 -1
  1039. package/XR/features/WebXRHitTestLegacy.js +2 -2
  1040. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  1041. package/XR/motionController/webXRAbstractMotionController.js +2 -2
  1042. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  1043. package/XR/motionController/webXRGenericMotionController.js +2 -2
  1044. package/XR/motionController/webXRGenericMotionController.js.map +1 -1
  1045. package/XR/motionController/webXRProfiledMotionController.js +4 -4
  1046. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  1047. package/XR/webXRCamera.d.ts +3 -3
  1048. package/XR/webXRCamera.js +4 -4
  1049. package/XR/webXRCamera.js.map +1 -1
  1050. package/XR/webXRDefaultExperience.d.ts +4 -4
  1051. package/XR/webXRDefaultExperience.js +4 -4
  1052. package/XR/webXRDefaultExperience.js.map +1 -1
  1053. package/XR/webXREnterExitUI.js +1 -1
  1054. package/XR/webXREnterExitUI.js.map +1 -1
  1055. package/XR/webXRExperienceHelper.js +2 -2
  1056. package/XR/webXRExperienceHelper.js.map +1 -1
  1057. package/XR/webXRFeaturesManager.d.ts +47 -0
  1058. package/XR/webXRFeaturesManager.js +1 -1
  1059. package/XR/webXRFeaturesManager.js.map +1 -1
  1060. package/XR/webXRInput.js +1 -1
  1061. package/XR/webXRInput.js.map +1 -1
  1062. package/XR/webXRInputSource.js +4 -4
  1063. package/XR/webXRInputSource.js.map +1 -1
  1064. package/XR/webXRManagedOutputCanvas.js +1 -1
  1065. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  1066. package/XR/webXRRenderTargetTextureProvider.d.ts +1 -1
  1067. package/XR/webXRRenderTargetTextureProvider.js +1 -1
  1068. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  1069. package/assetContainer.d.ts +4 -4
  1070. package/assetContainer.js +6 -6
  1071. package/assetContainer.js.map +1 -1
  1072. package/node.d.ts +1 -1
  1073. package/node.js +6 -2
  1074. package/node.js.map +1 -1
  1075. package/package.json +46 -175
  1076. package/scene.pure.d.ts +12 -0
  1077. package/scene.pure.js +36 -0
  1078. package/scene.pure.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"thinSSRRenderingPipeline.js","sourceRoot":"","sources":["../../../../../../dev/core/src/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable, type CubeTexture, type Scene, type Camera } from \"core/index\";\r\nimport { Vector2 } from \"core/Maths/math.vector\";\r\nimport { ThinSSRPostProcess } from \"core/PostProcesses/thinSSRPostProcess\";\r\nimport { ThinSSRBlurPostProcess } from \"core/PostProcesses/thinSSRBlurPostProcess\";\r\nimport { ThinSSRBlurCombinerPostProcess } from \"core/PostProcesses/thinSSRBlurCombinerPostProcess\";\r\n\r\n/**\r\n * The SSR rendering pipeline is used to generate a reflection based on a flat mirror model.\r\n */\r\nexport class ThinSSRRenderingPipeline {\r\n /** @internal */\r\n public readonly _ssrPostProcess: ThinSSRPostProcess;\r\n /** @internal */\r\n public readonly _ssrBlurXPostProcess: ThinSSRBlurPostProcess;\r\n /** @internal */\r\n public readonly _ssrBlurYPostProcess: ThinSSRBlurPostProcess;\r\n /** @internal */\r\n public readonly _ssrBlurCombinerPostProcess: ThinSSRBlurCombinerPostProcess;\r\n\r\n /**\r\n * Gets or sets the name of the rendering pipeline\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the SSR rendering pipeline is supported\r\n */\r\n public get isSSRSupported(): boolean {\r\n return this._ssrPostProcess.isSSRSupported;\r\n }\r\n\r\n public set isSSRSupported(supported: boolean) {\r\n this._ssrPostProcess.isSSRSupported = supported;\r\n }\r\n\r\n /**\r\n * Gets or sets the maxDistance used to define how far we look for reflection during the ray-marching on the reflected ray (default: 1000).\r\n * Note that this value is a view (camera) space distance (not pixels!).\r\n */\r\n public get maxDistance() {\r\n return this._ssrPostProcess.maxDistance;\r\n }\r\n\r\n public set maxDistance(distance: number) {\r\n this._ssrPostProcess.maxDistance = distance;\r\n }\r\n\r\n /**\r\n * Gets or sets the step size used to iterate until the effect finds the color of the reflection's pixel. Should be an integer \\>= 1 as it is the number of pixels we advance at each step (default: 1).\r\n * Use higher values to improve performances (but at the expense of quality).\r\n */\r\n public get step() {\r\n return this._ssrPostProcess.step;\r\n }\r\n\r\n public set step(step: number) {\r\n this._ssrPostProcess.step = step;\r\n }\r\n\r\n /**\r\n * Gets or sets the thickness value used as tolerance when computing the intersection between the reflected ray and the scene (default: 0.5).\r\n * If setting \"enableAutomaticThicknessComputation\" to true, you can use lower values for \"thickness\" (even 0), as the geometry thickness\r\n * is automatically computed thank to the regular depth buffer + the backface depth buffer\r\n */\r\n public get thickness() {\r\n return this._ssrPostProcess.thickness;\r\n }\r\n\r\n public set thickness(thickness: number) {\r\n this._ssrPostProcess.thickness = thickness;\r\n }\r\n\r\n /**\r\n * Gets or sets the current reflection strength. 1.0 is an ideal value but can be increased/decreased for particular results (default: 1).\r\n */\r\n public get strength() {\r\n return this._ssrPostProcess.strength;\r\n }\r\n\r\n public set strength(strength: number) {\r\n this._ssrPostProcess.strength = strength;\r\n this._ssrBlurCombinerPostProcess.strength = strength;\r\n }\r\n\r\n /**\r\n * Gets or sets the falloff exponent used to compute the reflection strength. Higher values lead to fainter reflections (default: 1).\r\n */\r\n public get reflectionSpecularFalloffExponent() {\r\n return this._ssrPostProcess.reflectionSpecularFalloffExponent;\r\n }\r\n\r\n public set reflectionSpecularFalloffExponent(exponent: number) {\r\n this._ssrPostProcess.reflectionSpecularFalloffExponent = exponent;\r\n this._ssrBlurCombinerPostProcess.reflectionSpecularFalloffExponent = exponent;\r\n }\r\n\r\n /**\r\n * Maximum number of steps during the ray marching process after which we consider an intersection could not be found (default: 1000).\r\n * Should be an integer value.\r\n */\r\n public get maxSteps() {\r\n return this._ssrPostProcess.maxSteps;\r\n }\r\n\r\n public set maxSteps(steps: number) {\r\n this._ssrPostProcess.maxSteps = steps;\r\n }\r\n\r\n /**\r\n * Gets or sets the factor applied when computing roughness. Default value is 0.2.\r\n * When blurring based on roughness is enabled (meaning blurDispersionStrength \\> 0), roughnessFactor is used as a global roughness factor applied on all objects.\r\n * If you want to disable this global roughness set it to 0.\r\n */\r\n public get roughnessFactor() {\r\n return this._ssrPostProcess.roughnessFactor;\r\n }\r\n\r\n public set roughnessFactor(factor: number) {\r\n this._ssrPostProcess.roughnessFactor = factor;\r\n }\r\n\r\n /**\r\n * Number of steps to skip at start when marching the ray to avoid self collisions (default: 1)\r\n * 1 should normally be a good value, depending on the scene you may need to use a higher value (2 or 3)\r\n */\r\n public get selfCollisionNumSkip() {\r\n return this._ssrPostProcess.selfCollisionNumSkip;\r\n }\r\n\r\n public set selfCollisionNumSkip(skip: number) {\r\n this._ssrPostProcess.selfCollisionNumSkip = skip;\r\n }\r\n\r\n /**\r\n * Gets or sets the minimum value for one of the reflectivity component of the material to consider it for SSR (default: 0.04).\r\n * If all r/g/b components of the reflectivity is below or equal this value, the pixel will not be considered reflective and SSR won't be applied.\r\n */\r\n public get reflectivityThreshold() {\r\n return this._ssrPostProcess.reflectivityThreshold;\r\n }\r\n\r\n public set reflectivityThreshold(threshold: number) {\r\n const currentThreshold = this._ssrPostProcess.reflectivityThreshold;\r\n\r\n if (threshold === currentThreshold) {\r\n return;\r\n }\r\n\r\n this._ssrPostProcess.reflectivityThreshold = threshold;\r\n this._ssrBlurCombinerPostProcess.reflectivityThreshold = threshold;\r\n }\r\n\r\n /**\r\n * Gets or sets the downsample factor used to reduce the size of the texture used to compute the SSR contribution (default: 0).\r\n * Use 0 to render the SSR contribution at full resolution, 1 to render at half resolution, 2 to render at 1/3 resolution, etc.\r\n * Note that it is used only when blurring is enabled (blurDispersionStrength \\> 0), because in that mode the SSR contribution is generated in a separate texture.\r\n */\r\n public ssrDownsample = 0;\r\n\r\n /**\r\n * Gets or sets the blur dispersion strength. Set this value to 0 to disable blurring (default: 0.03)\r\n * The reflections are blurred based on the roughness of the surface and the distance between the pixel shaded and the reflected pixel: the higher the distance the more blurry the reflection is.\r\n * blurDispersionStrength allows to increase or decrease this effect.\r\n */\r\n public get blurDispersionStrength() {\r\n return this._ssrBlurXPostProcess.blurStrength;\r\n }\r\n\r\n public set blurDispersionStrength(strength: number) {\r\n if (strength === this._ssrBlurXPostProcess.blurStrength) {\r\n return;\r\n }\r\n\r\n this._ssrPostProcess.useBlur = strength > 0;\r\n\r\n this._ssrBlurXPostProcess.blurStrength = strength;\r\n this._ssrBlurYPostProcess.blurStrength = strength;\r\n }\r\n\r\n /**\r\n * Gets or sets the downsample factor used to reduce the size of the textures used to blur the reflection effect (default: 0).\r\n * Use 0 to blur at full resolution, 1 to render at half resolution, 2 to render at 1/3 resolution, etc.\r\n */\r\n public blurDownsample = 0;\r\n\r\n /**\r\n * Gets or sets whether or not smoothing reflections is enabled (default: false)\r\n * Enabling smoothing will require more GPU power.\r\n * Note that this setting has no effect if step = 1: it's only used if step \\> 1.\r\n */\r\n public get enableSmoothReflections(): boolean {\r\n return this._ssrPostProcess.enableSmoothReflections;\r\n }\r\n\r\n public set enableSmoothReflections(enabled: boolean) {\r\n this._ssrPostProcess.enableSmoothReflections = enabled;\r\n }\r\n\r\n /**\r\n * Gets or sets the environment cube texture used to define the reflection when the reflected rays of SSR leave the view space or when the maxDistance/maxSteps is reached.\r\n */\r\n public get environmentTexture() {\r\n return this._ssrPostProcess.environmentTexture;\r\n }\r\n\r\n public set environmentTexture(texture: Nullable<CubeTexture>) {\r\n this._ssrPostProcess.environmentTexture = texture;\r\n }\r\n\r\n /**\r\n * Gets or sets the boolean defining if the environment texture is a standard cubemap (false) or a probe (true). Default value is false.\r\n * Note: a probe cube texture is treated differently than an ordinary cube texture because the Y axis is reversed.\r\n */\r\n public get environmentTextureIsProbe(): boolean {\r\n return this._ssrPostProcess.environmentTextureIsProbe;\r\n }\r\n\r\n public set environmentTextureIsProbe(isProbe: boolean) {\r\n this._ssrPostProcess.environmentTextureIsProbe = isProbe;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the reflections should be attenuated at the screen borders (default: true).\r\n */\r\n public get attenuateScreenBorders() {\r\n return this._ssrPostProcess.attenuateScreenBorders;\r\n }\r\n\r\n public set attenuateScreenBorders(attenuate: boolean) {\r\n this._ssrPostProcess.attenuateScreenBorders = attenuate;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the reflections should be attenuated according to the distance of the intersection (default: true).\r\n */\r\n public get attenuateIntersectionDistance() {\r\n return this._ssrPostProcess.attenuateIntersectionDistance;\r\n }\r\n\r\n public set attenuateIntersectionDistance(attenuate: boolean) {\r\n this._ssrPostProcess.attenuateIntersectionDistance = attenuate;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the reflections should be attenuated according to the number of iterations performed to find the intersection (default: true).\r\n */\r\n public get attenuateIntersectionIterations() {\r\n return this._ssrPostProcess.attenuateIntersectionIterations;\r\n }\r\n\r\n public set attenuateIntersectionIterations(attenuate: boolean) {\r\n this._ssrPostProcess.attenuateIntersectionIterations = attenuate;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the reflections should be attenuated when the reflection ray is facing the camera (the view direction) (default: false).\r\n */\r\n public get attenuateFacingCamera() {\r\n return this._ssrPostProcess.attenuateFacingCamera;\r\n }\r\n\r\n public set attenuateFacingCamera(attenuate: boolean) {\r\n this._ssrPostProcess.attenuateFacingCamera = attenuate;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the backface reflections should be attenuated (default: false).\r\n */\r\n public get attenuateBackfaceReflection() {\r\n return this._ssrPostProcess.attenuateBackfaceReflection;\r\n }\r\n\r\n public set attenuateBackfaceReflection(attenuate: boolean) {\r\n this._ssrPostProcess.attenuateBackfaceReflection = attenuate;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the ray should be clipped to the frustum (default: true).\r\n * You can try to set this parameter to false to save some performances: it may produce some artefacts in some cases, but generally they won't really be visible\r\n */\r\n public get clipToFrustum() {\r\n return this._ssrPostProcess.clipToFrustum;\r\n }\r\n\r\n public set clipToFrustum(clip: boolean) {\r\n this._ssrPostProcess.clipToFrustum = clip;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating whether the blending between the current color pixel and the reflection color should be done with a Fresnel coefficient (default: false).\r\n * It is more physically accurate to use the Fresnel coefficient (otherwise it uses the reflectivity of the material for blending), but it is also more expensive when you use blur (when blurDispersionStrength \\> 0).\r\n */\r\n public get useFresnel() {\r\n return this._ssrPostProcess.useFresnel;\r\n }\r\n\r\n public set useFresnel(fresnel: boolean) {\r\n this._ssrPostProcess.useFresnel = fresnel;\r\n this._ssrBlurCombinerPostProcess.useFresnel = fresnel;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean defining if geometry thickness should be computed automatically (default: false).\r\n * When enabled, a depth renderer is created which will render the back faces of the scene to a depth texture (meaning additional work for the GPU).\r\n * In that mode, the \"thickness\" property is still used as an offset to compute the ray intersection, but you can typically use a much lower\r\n * value than when enableAutomaticThicknessComputation is false (it's even possible to use a value of 0 when using low values for \"step\")\r\n * Note that for performance reasons, this option will only apply to the first camera to which the rendering pipeline is attached!\r\n */\r\n public get enableAutomaticThicknessComputation(): boolean {\r\n return this._ssrPostProcess.enableAutomaticThicknessComputation;\r\n }\r\n\r\n public set enableAutomaticThicknessComputation(automatic: boolean) {\r\n if (this._ssrPostProcess.enableAutomaticThicknessComputation === automatic) {\r\n return;\r\n }\r\n\r\n this._ssrPostProcess.enableAutomaticThicknessComputation = automatic;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean defining if the input color texture is in gamma space (default: true)\r\n * The SSR effect works in linear space, so if the input texture is in gamma space, we must convert the texture to linear space before applying the effect\r\n */\r\n public get inputTextureColorIsInGammaSpace(): boolean {\r\n return this._ssrPostProcess.inputTextureColorIsInGammaSpace;\r\n }\r\n\r\n public set inputTextureColorIsInGammaSpace(gammaSpace: boolean) {\r\n if (this._ssrPostProcess.inputTextureColorIsInGammaSpace === gammaSpace) {\r\n return;\r\n }\r\n\r\n this._ssrPostProcess.inputTextureColorIsInGammaSpace = gammaSpace;\r\n this._ssrBlurCombinerPostProcess.inputTextureColorIsInGammaSpace = gammaSpace;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean defining if the output color texture generated by the SSR pipeline should be in gamma space (default: true)\r\n * If you have a post-process that comes after the SSR and that post-process needs the input to be in a linear space, you must disable generateOutputInGammaSpace\r\n */\r\n public get generateOutputInGammaSpace(): boolean {\r\n return this._ssrPostProcess.generateOutputInGammaSpace;\r\n }\r\n\r\n public set generateOutputInGammaSpace(gammaSpace: boolean) {\r\n if (this._ssrPostProcess.generateOutputInGammaSpace === gammaSpace) {\r\n return;\r\n }\r\n\r\n this._ssrPostProcess.generateOutputInGammaSpace = gammaSpace;\r\n this._ssrBlurCombinerPostProcess.generateOutputInGammaSpace = gammaSpace;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the effect should be rendered in debug mode (default: false).\r\n * In this mode, colors have this meaning:\r\n * - blue: the ray hit the max distance (we reached maxDistance)\r\n * - red: the ray ran out of steps (we reached maxSteps)\r\n * - yellow: the ray went off screen\r\n * - green: the ray hit a surface. The brightness of the green color is proportional to the distance between the ray origin and the intersection point: A brighter green means more computation than a darker green.\r\n * In the first 3 cases, the final color is calculated by mixing the skybox color with the pixel color (if environmentTexture is defined), otherwise the pixel color is not modified\r\n * You should try to get as few blue/red/yellow pixels as possible, as this means that the ray has gone further than if it had hit a surface.\r\n */\r\n public get debug(): boolean {\r\n return this._ssrPostProcess.debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n if (this._ssrPostProcess.debug === value) {\r\n return;\r\n }\r\n\r\n this._ssrPostProcess.debug = value;\r\n this._ssrBlurCombinerPostProcess.debug = value;\r\n }\r\n\r\n /**\r\n * Gets or sets the camera to use to render the reflection\r\n */\r\n public get camera() {\r\n return this._ssrPostProcess.camera;\r\n }\r\n\r\n public set camera(camera: Nullable<Camera>) {\r\n this._ssrPostProcess.camera = camera;\r\n this._ssrBlurCombinerPostProcess.camera = camera;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the depth buffer stores screen space depth instead of camera view space depth.\r\n */\r\n public get useScreenspaceDepth() {\r\n return this._ssrPostProcess.useScreenspaceDepth;\r\n }\r\n\r\n public set useScreenspaceDepth(use: boolean) {\r\n this._ssrPostProcess.useScreenspaceDepth = use;\r\n this._ssrBlurCombinerPostProcess.useScreenspaceDepth = use;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the normals are in world space (false by default, meaning normals are in camera view space).\r\n */\r\n public get normalsAreInWorldSpace() {\r\n return this._ssrPostProcess.normalsAreInWorldSpace;\r\n }\r\n\r\n public set normalsAreInWorldSpace(normalsAreInWorldSpace: boolean) {\r\n this._ssrPostProcess.normalsAreInWorldSpace = normalsAreInWorldSpace;\r\n this._ssrBlurCombinerPostProcess.normalsAreInWorldSpace = normalsAreInWorldSpace;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the normals are encoded as unsigned, that is normalUnsigned = normal*0.5+0.5 (false by default).\r\n */\r\n public get normalsAreUnsigned() {\r\n return this._ssrPostProcess.normalsAreUnsigned;\r\n }\r\n\r\n public set normalsAreUnsigned(normalsAreUnsigned: boolean) {\r\n this._ssrPostProcess.normalsAreUnsigned = normalsAreUnsigned;\r\n this._ssrBlurCombinerPostProcess.normalsAreUnsigned = normalsAreUnsigned;\r\n }\r\n\r\n /**\r\n * Checks if all the post processes in the pipeline are ready.\r\n * @returns true if all the post processes in the pipeline are ready\r\n */\r\n public isReady(): boolean {\r\n return this._ssrPostProcess.isReady() && this._ssrBlurXPostProcess.isReady() && this._ssrBlurYPostProcess.isReady() && this._ssrBlurCombinerPostProcess.isReady();\r\n }\r\n\r\n private _scene: Scene;\r\n\r\n /**\r\n * Constructor of the SSR rendering pipeline\r\n * @param name The rendering pipeline name\r\n * @param scene The scene linked to this pipeline\r\n */\r\n constructor(name: string, scene: Scene) {\r\n this.name = name;\r\n this._scene = scene;\r\n\r\n this._ssrPostProcess = new ThinSSRPostProcess(this.name, this._scene);\r\n this._ssrBlurXPostProcess = new ThinSSRBlurPostProcess(this.name + \" BlurX\", this._scene.getEngine(), new Vector2(1, 0));\r\n this._ssrBlurYPostProcess = new ThinSSRBlurPostProcess(this.name + \" BlurY\", this._scene.getEngine(), new Vector2(0, 1));\r\n this._ssrBlurCombinerPostProcess = new ThinSSRBlurCombinerPostProcess(this.name + \" BlurCombiner\", this._scene.getEngine());\r\n\r\n this._ssrPostProcess.useBlur = this._ssrBlurXPostProcess.blurStrength > 0;\r\n }\r\n\r\n /**\r\n * Disposes of the pipeline\r\n */\r\n public dispose(): void {\r\n this._ssrPostProcess?.dispose();\r\n this._ssrBlurXPostProcess?.dispose();\r\n this._ssrBlurYPostProcess?.dispose();\r\n this._ssrBlurCombinerPostProcess?.dispose();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"thinSSRRenderingPipeline.js","sourceRoot":"","sources":["../../../../../../dev/core/src/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable, type CubeTexture, type Scene, type Camera } from \"core/index\";\r\nimport { Vector2 } from \"core/Maths/math.vector.pure\";\r\nimport { ThinSSRPostProcess } from \"core/PostProcesses/thinSSRPostProcess\";\r\nimport { ThinSSRBlurPostProcess } from \"core/PostProcesses/thinSSRBlurPostProcess\";\r\nimport { ThinSSRBlurCombinerPostProcess } from \"core/PostProcesses/thinSSRBlurCombinerPostProcess\";\r\n\r\n/**\r\n * The SSR rendering pipeline is used to generate a reflection based on a flat mirror model.\r\n */\r\nexport class ThinSSRRenderingPipeline {\r\n /** @internal */\r\n public readonly _ssrPostProcess: ThinSSRPostProcess;\r\n /** @internal */\r\n public readonly _ssrBlurXPostProcess: ThinSSRBlurPostProcess;\r\n /** @internal */\r\n public readonly _ssrBlurYPostProcess: ThinSSRBlurPostProcess;\r\n /** @internal */\r\n public readonly _ssrBlurCombinerPostProcess: ThinSSRBlurCombinerPostProcess;\r\n\r\n /**\r\n * Gets or sets the name of the rendering pipeline\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the SSR rendering pipeline is supported\r\n */\r\n public get isSSRSupported(): boolean {\r\n return this._ssrPostProcess.isSSRSupported;\r\n }\r\n\r\n public set isSSRSupported(supported: boolean) {\r\n this._ssrPostProcess.isSSRSupported = supported;\r\n }\r\n\r\n /**\r\n * Gets or sets the maxDistance used to define how far we look for reflection during the ray-marching on the reflected ray (default: 1000).\r\n * Note that this value is a view (camera) space distance (not pixels!).\r\n */\r\n public get maxDistance() {\r\n return this._ssrPostProcess.maxDistance;\r\n }\r\n\r\n public set maxDistance(distance: number) {\r\n this._ssrPostProcess.maxDistance = distance;\r\n }\r\n\r\n /**\r\n * Gets or sets the step size used to iterate until the effect finds the color of the reflection's pixel. Should be an integer \\>= 1 as it is the number of pixels we advance at each step (default: 1).\r\n * Use higher values to improve performances (but at the expense of quality).\r\n */\r\n public get step() {\r\n return this._ssrPostProcess.step;\r\n }\r\n\r\n public set step(step: number) {\r\n this._ssrPostProcess.step = step;\r\n }\r\n\r\n /**\r\n * Gets or sets the thickness value used as tolerance when computing the intersection between the reflected ray and the scene (default: 0.5).\r\n * If setting \"enableAutomaticThicknessComputation\" to true, you can use lower values for \"thickness\" (even 0), as the geometry thickness\r\n * is automatically computed thank to the regular depth buffer + the backface depth buffer\r\n */\r\n public get thickness() {\r\n return this._ssrPostProcess.thickness;\r\n }\r\n\r\n public set thickness(thickness: number) {\r\n this._ssrPostProcess.thickness = thickness;\r\n }\r\n\r\n /**\r\n * Gets or sets the current reflection strength. 1.0 is an ideal value but can be increased/decreased for particular results (default: 1).\r\n */\r\n public get strength() {\r\n return this._ssrPostProcess.strength;\r\n }\r\n\r\n public set strength(strength: number) {\r\n this._ssrPostProcess.strength = strength;\r\n this._ssrBlurCombinerPostProcess.strength = strength;\r\n }\r\n\r\n /**\r\n * Gets or sets the falloff exponent used to compute the reflection strength. Higher values lead to fainter reflections (default: 1).\r\n */\r\n public get reflectionSpecularFalloffExponent() {\r\n return this._ssrPostProcess.reflectionSpecularFalloffExponent;\r\n }\r\n\r\n public set reflectionSpecularFalloffExponent(exponent: number) {\r\n this._ssrPostProcess.reflectionSpecularFalloffExponent = exponent;\r\n this._ssrBlurCombinerPostProcess.reflectionSpecularFalloffExponent = exponent;\r\n }\r\n\r\n /**\r\n * Maximum number of steps during the ray marching process after which we consider an intersection could not be found (default: 1000).\r\n * Should be an integer value.\r\n */\r\n public get maxSteps() {\r\n return this._ssrPostProcess.maxSteps;\r\n }\r\n\r\n public set maxSteps(steps: number) {\r\n this._ssrPostProcess.maxSteps = steps;\r\n }\r\n\r\n /**\r\n * Gets or sets the factor applied when computing roughness. Default value is 0.2.\r\n * When blurring based on roughness is enabled (meaning blurDispersionStrength \\> 0), roughnessFactor is used as a global roughness factor applied on all objects.\r\n * If you want to disable this global roughness set it to 0.\r\n */\r\n public get roughnessFactor() {\r\n return this._ssrPostProcess.roughnessFactor;\r\n }\r\n\r\n public set roughnessFactor(factor: number) {\r\n this._ssrPostProcess.roughnessFactor = factor;\r\n }\r\n\r\n /**\r\n * Number of steps to skip at start when marching the ray to avoid self collisions (default: 1)\r\n * 1 should normally be a good value, depending on the scene you may need to use a higher value (2 or 3)\r\n */\r\n public get selfCollisionNumSkip() {\r\n return this._ssrPostProcess.selfCollisionNumSkip;\r\n }\r\n\r\n public set selfCollisionNumSkip(skip: number) {\r\n this._ssrPostProcess.selfCollisionNumSkip = skip;\r\n }\r\n\r\n /**\r\n * Gets or sets the minimum value for one of the reflectivity component of the material to consider it for SSR (default: 0.04).\r\n * If all r/g/b components of the reflectivity is below or equal this value, the pixel will not be considered reflective and SSR won't be applied.\r\n */\r\n public get reflectivityThreshold() {\r\n return this._ssrPostProcess.reflectivityThreshold;\r\n }\r\n\r\n public set reflectivityThreshold(threshold: number) {\r\n const currentThreshold = this._ssrPostProcess.reflectivityThreshold;\r\n\r\n if (threshold === currentThreshold) {\r\n return;\r\n }\r\n\r\n this._ssrPostProcess.reflectivityThreshold = threshold;\r\n this._ssrBlurCombinerPostProcess.reflectivityThreshold = threshold;\r\n }\r\n\r\n /**\r\n * Gets or sets the downsample factor used to reduce the size of the texture used to compute the SSR contribution (default: 0).\r\n * Use 0 to render the SSR contribution at full resolution, 1 to render at half resolution, 2 to render at 1/3 resolution, etc.\r\n * Note that it is used only when blurring is enabled (blurDispersionStrength \\> 0), because in that mode the SSR contribution is generated in a separate texture.\r\n */\r\n public ssrDownsample = 0;\r\n\r\n /**\r\n * Gets or sets the blur dispersion strength. Set this value to 0 to disable blurring (default: 0.03)\r\n * The reflections are blurred based on the roughness of the surface and the distance between the pixel shaded and the reflected pixel: the higher the distance the more blurry the reflection is.\r\n * blurDispersionStrength allows to increase or decrease this effect.\r\n */\r\n public get blurDispersionStrength() {\r\n return this._ssrBlurXPostProcess.blurStrength;\r\n }\r\n\r\n public set blurDispersionStrength(strength: number) {\r\n if (strength === this._ssrBlurXPostProcess.blurStrength) {\r\n return;\r\n }\r\n\r\n this._ssrPostProcess.useBlur = strength > 0;\r\n\r\n this._ssrBlurXPostProcess.blurStrength = strength;\r\n this._ssrBlurYPostProcess.blurStrength = strength;\r\n }\r\n\r\n /**\r\n * Gets or sets the downsample factor used to reduce the size of the textures used to blur the reflection effect (default: 0).\r\n * Use 0 to blur at full resolution, 1 to render at half resolution, 2 to render at 1/3 resolution, etc.\r\n */\r\n public blurDownsample = 0;\r\n\r\n /**\r\n * Gets or sets whether or not smoothing reflections is enabled (default: false)\r\n * Enabling smoothing will require more GPU power.\r\n * Note that this setting has no effect if step = 1: it's only used if step \\> 1.\r\n */\r\n public get enableSmoothReflections(): boolean {\r\n return this._ssrPostProcess.enableSmoothReflections;\r\n }\r\n\r\n public set enableSmoothReflections(enabled: boolean) {\r\n this._ssrPostProcess.enableSmoothReflections = enabled;\r\n }\r\n\r\n /**\r\n * Gets or sets the environment cube texture used to define the reflection when the reflected rays of SSR leave the view space or when the maxDistance/maxSteps is reached.\r\n */\r\n public get environmentTexture() {\r\n return this._ssrPostProcess.environmentTexture;\r\n }\r\n\r\n public set environmentTexture(texture: Nullable<CubeTexture>) {\r\n this._ssrPostProcess.environmentTexture = texture;\r\n }\r\n\r\n /**\r\n * Gets or sets the boolean defining if the environment texture is a standard cubemap (false) or a probe (true). Default value is false.\r\n * Note: a probe cube texture is treated differently than an ordinary cube texture because the Y axis is reversed.\r\n */\r\n public get environmentTextureIsProbe(): boolean {\r\n return this._ssrPostProcess.environmentTextureIsProbe;\r\n }\r\n\r\n public set environmentTextureIsProbe(isProbe: boolean) {\r\n this._ssrPostProcess.environmentTextureIsProbe = isProbe;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the reflections should be attenuated at the screen borders (default: true).\r\n */\r\n public get attenuateScreenBorders() {\r\n return this._ssrPostProcess.attenuateScreenBorders;\r\n }\r\n\r\n public set attenuateScreenBorders(attenuate: boolean) {\r\n this._ssrPostProcess.attenuateScreenBorders = attenuate;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the reflections should be attenuated according to the distance of the intersection (default: true).\r\n */\r\n public get attenuateIntersectionDistance() {\r\n return this._ssrPostProcess.attenuateIntersectionDistance;\r\n }\r\n\r\n public set attenuateIntersectionDistance(attenuate: boolean) {\r\n this._ssrPostProcess.attenuateIntersectionDistance = attenuate;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the reflections should be attenuated according to the number of iterations performed to find the intersection (default: true).\r\n */\r\n public get attenuateIntersectionIterations() {\r\n return this._ssrPostProcess.attenuateIntersectionIterations;\r\n }\r\n\r\n public set attenuateIntersectionIterations(attenuate: boolean) {\r\n this._ssrPostProcess.attenuateIntersectionIterations = attenuate;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the reflections should be attenuated when the reflection ray is facing the camera (the view direction) (default: false).\r\n */\r\n public get attenuateFacingCamera() {\r\n return this._ssrPostProcess.attenuateFacingCamera;\r\n }\r\n\r\n public set attenuateFacingCamera(attenuate: boolean) {\r\n this._ssrPostProcess.attenuateFacingCamera = attenuate;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the backface reflections should be attenuated (default: false).\r\n */\r\n public get attenuateBackfaceReflection() {\r\n return this._ssrPostProcess.attenuateBackfaceReflection;\r\n }\r\n\r\n public set attenuateBackfaceReflection(attenuate: boolean) {\r\n this._ssrPostProcess.attenuateBackfaceReflection = attenuate;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the ray should be clipped to the frustum (default: true).\r\n * You can try to set this parameter to false to save some performances: it may produce some artefacts in some cases, but generally they won't really be visible\r\n */\r\n public get clipToFrustum() {\r\n return this._ssrPostProcess.clipToFrustum;\r\n }\r\n\r\n public set clipToFrustum(clip: boolean) {\r\n this._ssrPostProcess.clipToFrustum = clip;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating whether the blending between the current color pixel and the reflection color should be done with a Fresnel coefficient (default: false).\r\n * It is more physically accurate to use the Fresnel coefficient (otherwise it uses the reflectivity of the material for blending), but it is also more expensive when you use blur (when blurDispersionStrength \\> 0).\r\n */\r\n public get useFresnel() {\r\n return this._ssrPostProcess.useFresnel;\r\n }\r\n\r\n public set useFresnel(fresnel: boolean) {\r\n this._ssrPostProcess.useFresnel = fresnel;\r\n this._ssrBlurCombinerPostProcess.useFresnel = fresnel;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean defining if geometry thickness should be computed automatically (default: false).\r\n * When enabled, a depth renderer is created which will render the back faces of the scene to a depth texture (meaning additional work for the GPU).\r\n * In that mode, the \"thickness\" property is still used as an offset to compute the ray intersection, but you can typically use a much lower\r\n * value than when enableAutomaticThicknessComputation is false (it's even possible to use a value of 0 when using low values for \"step\")\r\n * Note that for performance reasons, this option will only apply to the first camera to which the rendering pipeline is attached!\r\n */\r\n public get enableAutomaticThicknessComputation(): boolean {\r\n return this._ssrPostProcess.enableAutomaticThicknessComputation;\r\n }\r\n\r\n public set enableAutomaticThicknessComputation(automatic: boolean) {\r\n if (this._ssrPostProcess.enableAutomaticThicknessComputation === automatic) {\r\n return;\r\n }\r\n\r\n this._ssrPostProcess.enableAutomaticThicknessComputation = automatic;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean defining if the input color texture is in gamma space (default: true)\r\n * The SSR effect works in linear space, so if the input texture is in gamma space, we must convert the texture to linear space before applying the effect\r\n */\r\n public get inputTextureColorIsInGammaSpace(): boolean {\r\n return this._ssrPostProcess.inputTextureColorIsInGammaSpace;\r\n }\r\n\r\n public set inputTextureColorIsInGammaSpace(gammaSpace: boolean) {\r\n if (this._ssrPostProcess.inputTextureColorIsInGammaSpace === gammaSpace) {\r\n return;\r\n }\r\n\r\n this._ssrPostProcess.inputTextureColorIsInGammaSpace = gammaSpace;\r\n this._ssrBlurCombinerPostProcess.inputTextureColorIsInGammaSpace = gammaSpace;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean defining if the output color texture generated by the SSR pipeline should be in gamma space (default: true)\r\n * If you have a post-process that comes after the SSR and that post-process needs the input to be in a linear space, you must disable generateOutputInGammaSpace\r\n */\r\n public get generateOutputInGammaSpace(): boolean {\r\n return this._ssrPostProcess.generateOutputInGammaSpace;\r\n }\r\n\r\n public set generateOutputInGammaSpace(gammaSpace: boolean) {\r\n if (this._ssrPostProcess.generateOutputInGammaSpace === gammaSpace) {\r\n return;\r\n }\r\n\r\n this._ssrPostProcess.generateOutputInGammaSpace = gammaSpace;\r\n this._ssrBlurCombinerPostProcess.generateOutputInGammaSpace = gammaSpace;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the effect should be rendered in debug mode (default: false).\r\n * In this mode, colors have this meaning:\r\n * - blue: the ray hit the max distance (we reached maxDistance)\r\n * - red: the ray ran out of steps (we reached maxSteps)\r\n * - yellow: the ray went off screen\r\n * - green: the ray hit a surface. The brightness of the green color is proportional to the distance between the ray origin and the intersection point: A brighter green means more computation than a darker green.\r\n * In the first 3 cases, the final color is calculated by mixing the skybox color with the pixel color (if environmentTexture is defined), otherwise the pixel color is not modified\r\n * You should try to get as few blue/red/yellow pixels as possible, as this means that the ray has gone further than if it had hit a surface.\r\n */\r\n public get debug(): boolean {\r\n return this._ssrPostProcess.debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n if (this._ssrPostProcess.debug === value) {\r\n return;\r\n }\r\n\r\n this._ssrPostProcess.debug = value;\r\n this._ssrBlurCombinerPostProcess.debug = value;\r\n }\r\n\r\n /**\r\n * Gets or sets the camera to use to render the reflection\r\n */\r\n public get camera() {\r\n return this._ssrPostProcess.camera;\r\n }\r\n\r\n public set camera(camera: Nullable<Camera>) {\r\n this._ssrPostProcess.camera = camera;\r\n this._ssrBlurCombinerPostProcess.camera = camera;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the depth buffer stores screen space depth instead of camera view space depth.\r\n */\r\n public get useScreenspaceDepth() {\r\n return this._ssrPostProcess.useScreenspaceDepth;\r\n }\r\n\r\n public set useScreenspaceDepth(use: boolean) {\r\n this._ssrPostProcess.useScreenspaceDepth = use;\r\n this._ssrBlurCombinerPostProcess.useScreenspaceDepth = use;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the normals are in world space (false by default, meaning normals are in camera view space).\r\n */\r\n public get normalsAreInWorldSpace() {\r\n return this._ssrPostProcess.normalsAreInWorldSpace;\r\n }\r\n\r\n public set normalsAreInWorldSpace(normalsAreInWorldSpace: boolean) {\r\n this._ssrPostProcess.normalsAreInWorldSpace = normalsAreInWorldSpace;\r\n this._ssrBlurCombinerPostProcess.normalsAreInWorldSpace = normalsAreInWorldSpace;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the normals are encoded as unsigned, that is normalUnsigned = normal*0.5+0.5 (false by default).\r\n */\r\n public get normalsAreUnsigned() {\r\n return this._ssrPostProcess.normalsAreUnsigned;\r\n }\r\n\r\n public set normalsAreUnsigned(normalsAreUnsigned: boolean) {\r\n this._ssrPostProcess.normalsAreUnsigned = normalsAreUnsigned;\r\n this._ssrBlurCombinerPostProcess.normalsAreUnsigned = normalsAreUnsigned;\r\n }\r\n\r\n /**\r\n * Checks if all the post processes in the pipeline are ready.\r\n * @returns true if all the post processes in the pipeline are ready\r\n */\r\n public isReady(): boolean {\r\n return this._ssrPostProcess.isReady() && this._ssrBlurXPostProcess.isReady() && this._ssrBlurYPostProcess.isReady() && this._ssrBlurCombinerPostProcess.isReady();\r\n }\r\n\r\n private _scene: Scene;\r\n\r\n /**\r\n * Constructor of the SSR rendering pipeline\r\n * @param name The rendering pipeline name\r\n * @param scene The scene linked to this pipeline\r\n */\r\n constructor(name: string, scene: Scene) {\r\n this.name = name;\r\n this._scene = scene;\r\n\r\n this._ssrPostProcess = new ThinSSRPostProcess(this.name, this._scene);\r\n this._ssrBlurXPostProcess = new ThinSSRBlurPostProcess(this.name + \" BlurX\", this._scene.getEngine(), new Vector2(1, 0));\r\n this._ssrBlurYPostProcess = new ThinSSRBlurPostProcess(this.name + \" BlurY\", this._scene.getEngine(), new Vector2(0, 1));\r\n this._ssrBlurCombinerPostProcess = new ThinSSRBlurCombinerPostProcess(this.name + \" BlurCombiner\", this._scene.getEngine());\r\n\r\n this._ssrPostProcess.useBlur = this._ssrBlurXPostProcess.blurStrength > 0;\r\n }\r\n\r\n /**\r\n * Disposes of the pipeline\r\n */\r\n public dispose(): void {\r\n this._ssrPostProcess?.dispose();\r\n this._ssrBlurXPostProcess?.dispose();\r\n this._ssrBlurYPostProcess?.dispose();\r\n this._ssrBlurCombinerPostProcess?.dispose();\r\n }\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { Tools } from "../../Misc/tools.js";
1
+ import { Tools } from "../../Misc/tools.pure.js";
2
2
  /**
3
3
  * This represents a set of one or more post processes in Babylon.
4
4
  * A post process can be used to apply a shader to a texture after it is rendered.
@@ -1 +1 @@
1
- {"version":3,"file":"postProcessRenderEffect.js","sourceRoot":"","sources":["../../../../../dev/core/src/PostProcesses/RenderPipeline/postProcessRenderEffect.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { Tools } from \"../../Misc/tools\";\r\nimport { type Camera } from \"../../Cameras/camera\";\r\nimport { type PostProcess } from \"../../PostProcesses/postProcess\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine\";\r\n/**\r\n * This represents a set of one or more post processes in Babylon.\r\n * A post process can be used to apply a shader to a texture after it is rendered.\r\n * @example https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/postProcessRenderPipeline\r\n */\r\nexport class PostProcessRenderEffect {\r\n private _postProcesses: { [Key: string]: Array<PostProcess> };\r\n private _getPostProcesses: () => Nullable<PostProcess | Array<PostProcess>>;\r\n\r\n private _singleInstance: boolean;\r\n\r\n private _cameras: { [key: string]: Nullable<Camera> };\r\n private _indicesForCamera: { [key: string]: number[] };\r\n\r\n /**\r\n * Name of the effect\r\n * @internal\r\n */\r\n public _name: string;\r\n\r\n /**\r\n * Instantiates a post process render effect.\r\n * A post process can be used to apply a shader to a texture after it is rendered.\r\n * @param engine The engine the effect is tied to\r\n * @param name The name of the effect\r\n * @param getPostProcesses A function that returns a set of post processes which the effect will run in order to be run.\r\n * @param singleInstance False if this post process can be run on multiple cameras. (default: true)\r\n */\r\n constructor(engine: AbstractEngine, name: string, getPostProcesses: () => Nullable<PostProcess | Array<PostProcess>>, singleInstance = true) {\r\n this._name = name;\r\n this._singleInstance = singleInstance;\r\n\r\n this._getPostProcesses = getPostProcesses;\r\n\r\n this._cameras = {};\r\n this._indicesForCamera = {};\r\n\r\n this._postProcesses = {};\r\n }\r\n\r\n /**\r\n * Checks if all the post processes in the effect are supported.\r\n */\r\n public get isSupported(): boolean {\r\n for (const index in this._postProcesses) {\r\n if (Object.prototype.hasOwnProperty.call(this._postProcesses, index)) {\r\n const pps = this._postProcesses[index];\r\n for (let ppIndex = 0; ppIndex < pps.length; ppIndex++) {\r\n if (!pps[ppIndex].isSupported) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Updates the current state of the effect\r\n * @internal\r\n */\r\n public _update(): void {}\r\n\r\n /**\r\n * Attaches the effect on cameras\r\n * @param cameras The camera to attach to.\r\n * @internal\r\n */\r\n public _attachCameras(cameras: Camera): void;\r\n /**\r\n * Attaches the effect on cameras\r\n * @param cameras The camera to attach to.\r\n * @internal\r\n */\r\n public _attachCameras(cameras: Camera[]): void;\r\n /**\r\n * Attaches the effect on cameras\r\n * @param cameras The camera to attach to.\r\n * @internal\r\n */\r\n public _attachCameras(cameras: any): void {\r\n let cameraKey;\r\n\r\n const cams = Tools.MakeArray(cameras || this._cameras);\r\n\r\n if (!cams) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < cams.length; i++) {\r\n const camera = cams[i];\r\n if (!camera) {\r\n continue;\r\n }\r\n\r\n const cameraName = camera.name;\r\n\r\n if (this._singleInstance) {\r\n cameraKey = 0;\r\n } else {\r\n cameraKey = cameraName;\r\n }\r\n\r\n if (!this._postProcesses[cameraKey]) {\r\n const postProcess = this._getPostProcesses();\r\n if (postProcess) {\r\n this._postProcesses[cameraKey] = Array.isArray(postProcess) ? postProcess : [postProcess];\r\n }\r\n }\r\n\r\n if (!this._indicesForCamera[cameraName]) {\r\n this._indicesForCamera[cameraName] = [];\r\n }\r\n\r\n const pps = this._postProcesses[cameraKey];\r\n for (const postProcess of pps) {\r\n const index = camera.attachPostProcess(postProcess);\r\n\r\n this._indicesForCamera[cameraName].push(index);\r\n }\r\n\r\n if (!this._cameras[cameraName]) {\r\n this._cameras[cameraName] = camera;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Detaches the effect on cameras\r\n * @param cameras The camera to detach from.\r\n * @internal\r\n */\r\n public _detachCameras(cameras: Camera): void;\r\n /**\r\n * Detaches the effect on cameras\r\n * @param cameras The camera to detach from.\r\n * @internal\r\n */\r\n public _detachCameras(cameras: Camera[]): void;\r\n /**\r\n * Detaches the effect on cameras\r\n * @param cameras The camera to detach from.\r\n * @internal\r\n */\r\n public _detachCameras(cameras: any): void {\r\n const cams = Tools.MakeArray(cameras || this._cameras);\r\n\r\n if (!cams) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < cams.length; i++) {\r\n const camera: Camera = cams[i];\r\n const cameraName: string = camera.name;\r\n const postProcesses = this._postProcesses[this._singleInstance ? 0 : cameraName];\r\n\r\n if (postProcesses) {\r\n for (const postProcess of postProcesses) {\r\n camera.detachPostProcess(postProcess);\r\n }\r\n }\r\n\r\n if (this._cameras[cameraName]) {\r\n this._cameras[cameraName] = null;\r\n }\r\n\r\n delete this._indicesForCamera[cameraName];\r\n }\r\n }\r\n\r\n /**\r\n * Enables the effect on given cameras\r\n * @param cameras The camera to enable.\r\n * @internal\r\n */\r\n public _enable(cameras: Camera): void;\r\n /**\r\n * Enables the effect on given cameras\r\n * @param cameras The camera to enable.\r\n * @internal\r\n */\r\n public _enable(cameras: Nullable<Camera[]>): void;\r\n /**\r\n * Enables the effect on given cameras\r\n * @param cameras The camera to enable.\r\n * @internal\r\n */\r\n public _enable(cameras: any): void {\r\n const cams: Nullable<Array<Camera>> = Tools.MakeArray(cameras || this._cameras);\r\n\r\n if (!cams) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < cams.length; i++) {\r\n const camera = cams[i];\r\n const cameraName = camera.name;\r\n const cameraKey = this._singleInstance ? 0 : cameraName;\r\n\r\n for (let j = 0; j < this._indicesForCamera[cameraName].length; j++) {\r\n const index = this._indicesForCamera[cameraName][j];\r\n const postProcess = camera._postProcesses[index];\r\n if (postProcess === undefined || postProcess === null) {\r\n cams[i].attachPostProcess(this._postProcesses[cameraKey][j], index);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Disables the effect on the given cameras\r\n * @param cameras The camera to disable.\r\n * @internal\r\n */\r\n public _disable(cameras: Camera): void;\r\n /**\r\n * Disables the effect on the given cameras\r\n * @param cameras The camera to disable.\r\n * @internal\r\n */\r\n public _disable(cameras: Nullable<Camera[]>): void;\r\n /**\r\n * Disables the effect on the given cameras\r\n * @param cameras The camera to disable.\r\n * @internal\r\n */\r\n public _disable(cameras: any): void {\r\n const cams: Nullable<Array<Camera>> = Tools.MakeArray(cameras || this._cameras);\r\n\r\n if (!cams) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < cams.length; i++) {\r\n const camera = cams[i];\r\n const cameraName = camera.name;\r\n const pps = this._postProcesses[this._singleInstance ? 0 : cameraName];\r\n for (const postProcess of pps) {\r\n camera.detachPostProcess(postProcess);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets a list of the post processes contained in the effect.\r\n * @param camera The camera to get the post processes on.\r\n * @returns The list of the post processes in the effect.\r\n */\r\n public getPostProcesses(camera?: Camera): Nullable<Array<PostProcess>> {\r\n if (this._singleInstance) {\r\n return this._postProcesses[0];\r\n } else {\r\n if (!camera) {\r\n return null;\r\n }\r\n return this._postProcesses[camera.name];\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"postProcessRenderEffect.js","sourceRoot":"","sources":["../../../../../dev/core/src/PostProcesses/RenderPipeline/postProcessRenderEffect.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { Tools } from \"../../Misc/tools.pure\";\r\nimport { type Camera } from \"../../Cameras/camera\";\r\nimport { type PostProcess } from \"../../PostProcesses/postProcess\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine\";\r\n/**\r\n * This represents a set of one or more post processes in Babylon.\r\n * A post process can be used to apply a shader to a texture after it is rendered.\r\n * @example https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/postProcessRenderPipeline\r\n */\r\nexport class PostProcessRenderEffect {\r\n private _postProcesses: { [Key: string]: Array<PostProcess> };\r\n private _getPostProcesses: () => Nullable<PostProcess | Array<PostProcess>>;\r\n\r\n private _singleInstance: boolean;\r\n\r\n private _cameras: { [key: string]: Nullable<Camera> };\r\n private _indicesForCamera: { [key: string]: number[] };\r\n\r\n /**\r\n * Name of the effect\r\n * @internal\r\n */\r\n public _name: string;\r\n\r\n /**\r\n * Instantiates a post process render effect.\r\n * A post process can be used to apply a shader to a texture after it is rendered.\r\n * @param engine The engine the effect is tied to\r\n * @param name The name of the effect\r\n * @param getPostProcesses A function that returns a set of post processes which the effect will run in order to be run.\r\n * @param singleInstance False if this post process can be run on multiple cameras. (default: true)\r\n */\r\n constructor(engine: AbstractEngine, name: string, getPostProcesses: () => Nullable<PostProcess | Array<PostProcess>>, singleInstance = true) {\r\n this._name = name;\r\n this._singleInstance = singleInstance;\r\n\r\n this._getPostProcesses = getPostProcesses;\r\n\r\n this._cameras = {};\r\n this._indicesForCamera = {};\r\n\r\n this._postProcesses = {};\r\n }\r\n\r\n /**\r\n * Checks if all the post processes in the effect are supported.\r\n */\r\n public get isSupported(): boolean {\r\n for (const index in this._postProcesses) {\r\n if (Object.prototype.hasOwnProperty.call(this._postProcesses, index)) {\r\n const pps = this._postProcesses[index];\r\n for (let ppIndex = 0; ppIndex < pps.length; ppIndex++) {\r\n if (!pps[ppIndex].isSupported) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Updates the current state of the effect\r\n * @internal\r\n */\r\n public _update(): void {}\r\n\r\n /**\r\n * Attaches the effect on cameras\r\n * @param cameras The camera to attach to.\r\n * @internal\r\n */\r\n public _attachCameras(cameras: Camera): void;\r\n /**\r\n * Attaches the effect on cameras\r\n * @param cameras The camera to attach to.\r\n * @internal\r\n */\r\n public _attachCameras(cameras: Camera[]): void;\r\n /**\r\n * Attaches the effect on cameras\r\n * @param cameras The camera to attach to.\r\n * @internal\r\n */\r\n public _attachCameras(cameras: any): void {\r\n let cameraKey;\r\n\r\n const cams = Tools.MakeArray(cameras || this._cameras);\r\n\r\n if (!cams) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < cams.length; i++) {\r\n const camera = cams[i];\r\n if (!camera) {\r\n continue;\r\n }\r\n\r\n const cameraName = camera.name;\r\n\r\n if (this._singleInstance) {\r\n cameraKey = 0;\r\n } else {\r\n cameraKey = cameraName;\r\n }\r\n\r\n if (!this._postProcesses[cameraKey]) {\r\n const postProcess = this._getPostProcesses();\r\n if (postProcess) {\r\n this._postProcesses[cameraKey] = Array.isArray(postProcess) ? postProcess : [postProcess];\r\n }\r\n }\r\n\r\n if (!this._indicesForCamera[cameraName]) {\r\n this._indicesForCamera[cameraName] = [];\r\n }\r\n\r\n const pps = this._postProcesses[cameraKey];\r\n for (const postProcess of pps) {\r\n const index = camera.attachPostProcess(postProcess);\r\n\r\n this._indicesForCamera[cameraName].push(index);\r\n }\r\n\r\n if (!this._cameras[cameraName]) {\r\n this._cameras[cameraName] = camera;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Detaches the effect on cameras\r\n * @param cameras The camera to detach from.\r\n * @internal\r\n */\r\n public _detachCameras(cameras: Camera): void;\r\n /**\r\n * Detaches the effect on cameras\r\n * @param cameras The camera to detach from.\r\n * @internal\r\n */\r\n public _detachCameras(cameras: Camera[]): void;\r\n /**\r\n * Detaches the effect on cameras\r\n * @param cameras The camera to detach from.\r\n * @internal\r\n */\r\n public _detachCameras(cameras: any): void {\r\n const cams = Tools.MakeArray(cameras || this._cameras);\r\n\r\n if (!cams) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < cams.length; i++) {\r\n const camera: Camera = cams[i];\r\n const cameraName: string = camera.name;\r\n const postProcesses = this._postProcesses[this._singleInstance ? 0 : cameraName];\r\n\r\n if (postProcesses) {\r\n for (const postProcess of postProcesses) {\r\n camera.detachPostProcess(postProcess);\r\n }\r\n }\r\n\r\n if (this._cameras[cameraName]) {\r\n this._cameras[cameraName] = null;\r\n }\r\n\r\n delete this._indicesForCamera[cameraName];\r\n }\r\n }\r\n\r\n /**\r\n * Enables the effect on given cameras\r\n * @param cameras The camera to enable.\r\n * @internal\r\n */\r\n public _enable(cameras: Camera): void;\r\n /**\r\n * Enables the effect on given cameras\r\n * @param cameras The camera to enable.\r\n * @internal\r\n */\r\n public _enable(cameras: Nullable<Camera[]>): void;\r\n /**\r\n * Enables the effect on given cameras\r\n * @param cameras The camera to enable.\r\n * @internal\r\n */\r\n public _enable(cameras: any): void {\r\n const cams: Nullable<Array<Camera>> = Tools.MakeArray(cameras || this._cameras);\r\n\r\n if (!cams) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < cams.length; i++) {\r\n const camera = cams[i];\r\n const cameraName = camera.name;\r\n const cameraKey = this._singleInstance ? 0 : cameraName;\r\n\r\n for (let j = 0; j < this._indicesForCamera[cameraName].length; j++) {\r\n const index = this._indicesForCamera[cameraName][j];\r\n const postProcess = camera._postProcesses[index];\r\n if (postProcess === undefined || postProcess === null) {\r\n cams[i].attachPostProcess(this._postProcesses[cameraKey][j], index);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Disables the effect on the given cameras\r\n * @param cameras The camera to disable.\r\n * @internal\r\n */\r\n public _disable(cameras: Camera): void;\r\n /**\r\n * Disables the effect on the given cameras\r\n * @param cameras The camera to disable.\r\n * @internal\r\n */\r\n public _disable(cameras: Nullable<Camera[]>): void;\r\n /**\r\n * Disables the effect on the given cameras\r\n * @param cameras The camera to disable.\r\n * @internal\r\n */\r\n public _disable(cameras: any): void {\r\n const cams: Nullable<Array<Camera>> = Tools.MakeArray(cameras || this._cameras);\r\n\r\n if (!cams) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < cams.length; i++) {\r\n const camera = cams[i];\r\n const cameraName = camera.name;\r\n const pps = this._postProcesses[this._singleInstance ? 0 : cameraName];\r\n for (const postProcess of pps) {\r\n camera.detachPostProcess(postProcess);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets a list of the post processes contained in the effect.\r\n * @param camera The camera to get the post processes on.\r\n * @returns The list of the post processes in the effect.\r\n */\r\n public getPostProcesses(camera?: Camera): Nullable<Array<PostProcess>> {\r\n if (this._singleInstance) {\r\n return this._postProcesses[0];\r\n } else {\r\n if (!camera) {\r\n return null;\r\n }\r\n return this._postProcesses[camera.name];\r\n }\r\n }\r\n}\r\n"]}
@@ -1,8 +1,9 @@
1
1
  import { __decorate } from "../../tslib.es6.js";
2
- import { Tools } from "../../Misc/tools.js";
2
+ import { Tools } from "../../Misc/tools.pure.js";
3
3
  import { serialize } from "../../Misc/decorators.js";
4
4
  import { UniqueIdGenerator } from "../../Misc/uniqueIdGenerator.js";
5
5
  import { RegisterPostProcessRenderPipelineManagerSceneComponent } from "./postProcessRenderPipelineManagerSceneComponent.pure.js";
6
+ import { PostProcessRenderPipelineManager } from "./postProcessRenderPipelineManager.js";
6
7
  /**
7
8
  * PostProcessRenderPipeline
8
9
  * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/postProcessRenderPipeline
@@ -35,7 +36,7 @@ export class PostProcessRenderPipeline {
35
36
  * Gets the unique id of the post process rendering pipeline
36
37
  */
37
38
  this.uniqueId = UniqueIdGenerator.UniqueId;
38
- RegisterPostProcessRenderPipelineManagerSceneComponent();
39
+ RegisterPostProcessRenderPipelineManagerSceneComponent(PostProcessRenderPipelineManager);
39
40
  this._name = name;
40
41
  this._renderEffects = {};
41
42
  this._renderEffectsForIsolatedPass = new Array();
@@ -1 +1 @@
1
- {"version":3,"file":"postProcessRenderPipeline.js","sourceRoot":"","sources":["../../../../../dev/core/src/PostProcesses/RenderPipeline/postProcessRenderPipeline.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { Tools } from \"../../Misc/tools\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { UniqueIdGenerator } from \"core/Misc/uniqueIdGenerator\";\r\nimport { type Camera } from \"../../Cameras/camera\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine\";\r\nimport { type PostProcessRenderEffect } from \"./postProcessRenderEffect\";\r\nimport { type IInspectable } from \"../../Misc/iInspectable\";\r\nimport { RegisterPostProcessRenderPipelineManagerSceneComponent } from \"./postProcessRenderPipelineManagerSceneComponent.pure\";\r\n\r\nimport { type PrePassRenderer } from \"../../Rendering/prePassRenderer\";\r\n\r\n/**\r\n * PostProcessRenderPipeline\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/postProcessRenderPipeline\r\n */\r\nexport class PostProcessRenderPipeline {\r\n protected _renderEffects: { [key: string]: PostProcessRenderEffect };\r\n protected _renderEffectsForIsolatedPass: PostProcessRenderEffect[];\r\n\r\n /**\r\n * List of inspectable custom properties (used by the Inspector)\r\n * @see https://doc.babylonjs.com/toolsAndResources/inspector#extensibility\r\n */\r\n public inspectableCustomProperties: IInspectable[];\r\n\r\n /**\r\n * @internal\r\n */\r\n protected _cameras: Camera[];\r\n\r\n /** @internal */\r\n @serialize()\r\n public _name: string;\r\n\r\n /**\r\n * Gets pipeline name\r\n */\r\n public get name(): string {\r\n return this._name;\r\n }\r\n\r\n /**\r\n * Gets the unique id of the post process rendering pipeline\r\n */\r\n public readonly uniqueId = UniqueIdGenerator.UniqueId;\r\n\r\n /** Gets the list of attached cameras */\r\n public get cameras() {\r\n return this._cameras;\r\n }\r\n\r\n /**\r\n * Gets the active engine\r\n */\r\n public get engine(): AbstractEngine {\r\n return this._engine;\r\n }\r\n\r\n /**\r\n * Initializes a PostProcessRenderPipeline\r\n * @param _engine engine to add the pipeline to\r\n * @param name name of the pipeline\r\n */\r\n constructor(\r\n private _engine: AbstractEngine,\r\n name: string\r\n ) {\r\n RegisterPostProcessRenderPipelineManagerSceneComponent();\r\n this._name = name;\r\n\r\n this._renderEffects = {};\r\n this._renderEffectsForIsolatedPass = new Array<PostProcessRenderEffect>();\r\n\r\n this._cameras = [];\r\n }\r\n\r\n /**\r\n * Gets the class name\r\n * @returns \"PostProcessRenderPipeline\"\r\n */\r\n public getClassName(): string {\r\n return \"PostProcessRenderPipeline\";\r\n }\r\n\r\n /**\r\n * If all the render effects in the pipeline are supported\r\n */\r\n public get isSupported(): boolean {\r\n for (const renderEffectName in this._renderEffects) {\r\n if (Object.prototype.hasOwnProperty.call(this._renderEffects, renderEffectName)) {\r\n if (!this._renderEffects[renderEffectName].isSupported) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Adds an effect to the pipeline\r\n * @param renderEffect the effect to add\r\n */\r\n public addEffect(renderEffect: PostProcessRenderEffect): void {\r\n (<any>this._renderEffects)[renderEffect._name] = renderEffect;\r\n }\r\n\r\n // private\r\n\r\n /** @internal */\r\n public _rebuild() {}\r\n\r\n /** @internal */\r\n public _enableEffect(renderEffectName: string, cameras: Camera): void;\r\n /** @internal */\r\n public _enableEffect(renderEffectName: string, cameras: Camera[]): void;\r\n /**\r\n * @internal\r\n */\r\n public _enableEffect(renderEffectName: string, cameras: any): void {\r\n const renderEffects: PostProcessRenderEffect = (<any>this._renderEffects)[renderEffectName];\r\n\r\n if (!renderEffects) {\r\n return;\r\n }\r\n\r\n renderEffects._enable(Tools.MakeArray(cameras || this._cameras));\r\n }\r\n\r\n /** @internal */\r\n public _disableEffect(renderEffectName: string, cameras: Nullable<Camera[]>): void;\r\n /** @internal */\r\n public _disableEffect(renderEffectName: string, cameras: Nullable<Camera[]>): void;\r\n /**\r\n * @internal\r\n */\r\n public _disableEffect(renderEffectName: string, cameras: Nullable<Camera[]>): void {\r\n const renderEffects: PostProcessRenderEffect = (<any>this._renderEffects)[renderEffectName];\r\n\r\n if (!renderEffects) {\r\n return;\r\n }\r\n\r\n renderEffects._disable(Tools.MakeArray(cameras || this._cameras));\r\n }\r\n\r\n /** @internal */\r\n public _attachCameras(cameras: Camera, unique: boolean): void;\r\n /** @internal */\r\n public _attachCameras(cameras: Camera[], unique: boolean): void;\r\n /**\r\n * @internal\r\n */\r\n public _attachCameras(cameras: any, unique: boolean): void {\r\n const cams = Tools.MakeArray(cameras || this._cameras);\r\n\r\n if (!cams) {\r\n return;\r\n }\r\n\r\n const indicesToDelete = [];\r\n let i: number;\r\n for (i = 0; i < cams.length; i++) {\r\n const camera = cams[i];\r\n if (!camera) {\r\n continue;\r\n }\r\n\r\n if (this._cameras.indexOf(camera) === -1) {\r\n this._cameras.push(camera);\r\n } else if (unique) {\r\n indicesToDelete.push(i);\r\n }\r\n }\r\n\r\n for (i = 0; i < indicesToDelete.length; i++) {\r\n cams.splice(indicesToDelete[i], 1);\r\n }\r\n\r\n for (const renderEffectName in this._renderEffects) {\r\n if (Object.prototype.hasOwnProperty.call(this._renderEffects, renderEffectName)) {\r\n this._renderEffects[renderEffectName]._attachCameras(cams);\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _detachCameras(cameras: Camera): void;\r\n /** @internal */\r\n public _detachCameras(cameras: Nullable<Camera[]>): void;\r\n /**\r\n * @internal\r\n */\r\n public _detachCameras(cameras: any): void {\r\n const cams = Tools.MakeArray(cameras || this._cameras);\r\n\r\n if (!cams) {\r\n return;\r\n }\r\n\r\n for (const renderEffectName in this._renderEffects) {\r\n if (Object.prototype.hasOwnProperty.call(this._renderEffects, renderEffectName)) {\r\n this._renderEffects[renderEffectName]._detachCameras(cams);\r\n }\r\n }\r\n\r\n for (let i = 0; i < cams.length; i++) {\r\n this._cameras.splice(this._cameras.indexOf(cams[i]), 1);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _update(): void {\r\n for (const renderEffectName in this._renderEffects) {\r\n if (Object.prototype.hasOwnProperty.call(this._renderEffects, renderEffectName)) {\r\n this._renderEffects[renderEffectName]._update();\r\n }\r\n }\r\n\r\n for (let i = 0; i < this._cameras.length; i++) {\r\n if (!this._cameras[i]) {\r\n continue;\r\n }\r\n const cameraName = this._cameras[i].name;\r\n if ((<any>this._renderEffectsForIsolatedPass)[cameraName]) {\r\n (<any>this._renderEffectsForIsolatedPass)[cameraName]._update();\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _reset(): void {\r\n this._renderEffects = {};\r\n this._renderEffectsForIsolatedPass = new Array<PostProcessRenderEffect>();\r\n }\r\n\r\n protected _enableMSAAOnFirstPostProcess(sampleCount: number): boolean {\r\n if (!this._engine._features.supportMSAA) {\r\n return false;\r\n }\r\n\r\n // Set samples of the very first post process to 4 to enable native anti-aliasing in browsers that support webGL 2.0 (See: https://github.com/BabylonJS/Babylon.js/issues/3754)\r\n const effectKeys = Object.keys(this._renderEffects);\r\n if (effectKeys.length > 0) {\r\n const postProcesses = this._renderEffects[effectKeys[0]].getPostProcesses();\r\n if (postProcesses) {\r\n postProcesses[0].samples = sampleCount;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Ensures that all post processes in the pipeline are the correct size according to the\r\n * the viewport's required size\r\n */\r\n protected _adaptPostProcessesToViewPort(): void {\r\n const effectKeys = Object.keys(this._renderEffects);\r\n for (const effectKey of effectKeys) {\r\n const postProcesses = this._renderEffects[effectKey].getPostProcesses();\r\n if (postProcesses) {\r\n for (const postProcess of postProcesses) {\r\n postProcess.adaptScaleToCurrentViewport = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets the required values to the prepass renderer.\r\n * @param prePassRenderer defines the prepass renderer to setup.\r\n * @returns true if the pre pass is needed.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public setPrePassRenderer(prePassRenderer: PrePassRenderer): boolean {\r\n // Do Nothing by default\r\n return false;\r\n }\r\n\r\n /**\r\n * Disposes of the pipeline\r\n */\r\n public dispose() {\r\n // Must be implemented by children\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"postProcessRenderPipeline.js","sourceRoot":"","sources":["../../../../../dev/core/src/PostProcesses/RenderPipeline/postProcessRenderPipeline.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { Tools } from \"../../Misc/tools.pure\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { UniqueIdGenerator } from \"core/Misc/uniqueIdGenerator\";\r\nimport { type Camera } from \"../../Cameras/camera\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine\";\r\nimport { type PostProcessRenderEffect } from \"./postProcessRenderEffect\";\r\nimport { type IInspectable } from \"../../Misc/iInspectable\";\r\nimport { RegisterPostProcessRenderPipelineManagerSceneComponent } from \"./postProcessRenderPipelineManagerSceneComponent.pure\";\r\nimport { PostProcessRenderPipelineManager } from \"./postProcessRenderPipelineManager\";\r\n\r\nimport { type PrePassRenderer } from \"../../Rendering/prePassRenderer\";\r\n\r\n/**\r\n * PostProcessRenderPipeline\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/postProcessRenderPipeline\r\n */\r\nexport class PostProcessRenderPipeline {\r\n protected _renderEffects: { [key: string]: PostProcessRenderEffect };\r\n protected _renderEffectsForIsolatedPass: PostProcessRenderEffect[];\r\n\r\n /**\r\n * List of inspectable custom properties (used by the Inspector)\r\n * @see https://doc.babylonjs.com/toolsAndResources/inspector#extensibility\r\n */\r\n public inspectableCustomProperties: IInspectable[];\r\n\r\n /**\r\n * @internal\r\n */\r\n protected _cameras: Camera[];\r\n\r\n /** @internal */\r\n @serialize()\r\n public _name: string;\r\n\r\n /**\r\n * Gets pipeline name\r\n */\r\n public get name(): string {\r\n return this._name;\r\n }\r\n\r\n /**\r\n * Gets the unique id of the post process rendering pipeline\r\n */\r\n public readonly uniqueId = UniqueIdGenerator.UniqueId;\r\n\r\n /** Gets the list of attached cameras */\r\n public get cameras() {\r\n return this._cameras;\r\n }\r\n\r\n /**\r\n * Gets the active engine\r\n */\r\n public get engine(): AbstractEngine {\r\n return this._engine;\r\n }\r\n\r\n /**\r\n * Initializes a PostProcessRenderPipeline\r\n * @param _engine engine to add the pipeline to\r\n * @param name name of the pipeline\r\n */\r\n constructor(\r\n private _engine: AbstractEngine,\r\n name: string\r\n ) {\r\n RegisterPostProcessRenderPipelineManagerSceneComponent(PostProcessRenderPipelineManager);\r\n this._name = name;\r\n\r\n this._renderEffects = {};\r\n this._renderEffectsForIsolatedPass = new Array<PostProcessRenderEffect>();\r\n\r\n this._cameras = [];\r\n }\r\n\r\n /**\r\n * Gets the class name\r\n * @returns \"PostProcessRenderPipeline\"\r\n */\r\n public getClassName(): string {\r\n return \"PostProcessRenderPipeline\";\r\n }\r\n\r\n /**\r\n * If all the render effects in the pipeline are supported\r\n */\r\n public get isSupported(): boolean {\r\n for (const renderEffectName in this._renderEffects) {\r\n if (Object.prototype.hasOwnProperty.call(this._renderEffects, renderEffectName)) {\r\n if (!this._renderEffects[renderEffectName].isSupported) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Adds an effect to the pipeline\r\n * @param renderEffect the effect to add\r\n */\r\n public addEffect(renderEffect: PostProcessRenderEffect): void {\r\n (<any>this._renderEffects)[renderEffect._name] = renderEffect;\r\n }\r\n\r\n // private\r\n\r\n /** @internal */\r\n public _rebuild() {}\r\n\r\n /** @internal */\r\n public _enableEffect(renderEffectName: string, cameras: Camera): void;\r\n /** @internal */\r\n public _enableEffect(renderEffectName: string, cameras: Camera[]): void;\r\n /**\r\n * @internal\r\n */\r\n public _enableEffect(renderEffectName: string, cameras: any): void {\r\n const renderEffects: PostProcessRenderEffect = (<any>this._renderEffects)[renderEffectName];\r\n\r\n if (!renderEffects) {\r\n return;\r\n }\r\n\r\n renderEffects._enable(Tools.MakeArray(cameras || this._cameras));\r\n }\r\n\r\n /** @internal */\r\n public _disableEffect(renderEffectName: string, cameras: Nullable<Camera[]>): void;\r\n /** @internal */\r\n public _disableEffect(renderEffectName: string, cameras: Nullable<Camera[]>): void;\r\n /**\r\n * @internal\r\n */\r\n public _disableEffect(renderEffectName: string, cameras: Nullable<Camera[]>): void {\r\n const renderEffects: PostProcessRenderEffect = (<any>this._renderEffects)[renderEffectName];\r\n\r\n if (!renderEffects) {\r\n return;\r\n }\r\n\r\n renderEffects._disable(Tools.MakeArray(cameras || this._cameras));\r\n }\r\n\r\n /** @internal */\r\n public _attachCameras(cameras: Camera, unique: boolean): void;\r\n /** @internal */\r\n public _attachCameras(cameras: Camera[], unique: boolean): void;\r\n /**\r\n * @internal\r\n */\r\n public _attachCameras(cameras: any, unique: boolean): void {\r\n const cams = Tools.MakeArray(cameras || this._cameras);\r\n\r\n if (!cams) {\r\n return;\r\n }\r\n\r\n const indicesToDelete = [];\r\n let i: number;\r\n for (i = 0; i < cams.length; i++) {\r\n const camera = cams[i];\r\n if (!camera) {\r\n continue;\r\n }\r\n\r\n if (this._cameras.indexOf(camera) === -1) {\r\n this._cameras.push(camera);\r\n } else if (unique) {\r\n indicesToDelete.push(i);\r\n }\r\n }\r\n\r\n for (i = 0; i < indicesToDelete.length; i++) {\r\n cams.splice(indicesToDelete[i], 1);\r\n }\r\n\r\n for (const renderEffectName in this._renderEffects) {\r\n if (Object.prototype.hasOwnProperty.call(this._renderEffects, renderEffectName)) {\r\n this._renderEffects[renderEffectName]._attachCameras(cams);\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _detachCameras(cameras: Camera): void;\r\n /** @internal */\r\n public _detachCameras(cameras: Nullable<Camera[]>): void;\r\n /**\r\n * @internal\r\n */\r\n public _detachCameras(cameras: any): void {\r\n const cams = Tools.MakeArray(cameras || this._cameras);\r\n\r\n if (!cams) {\r\n return;\r\n }\r\n\r\n for (const renderEffectName in this._renderEffects) {\r\n if (Object.prototype.hasOwnProperty.call(this._renderEffects, renderEffectName)) {\r\n this._renderEffects[renderEffectName]._detachCameras(cams);\r\n }\r\n }\r\n\r\n for (let i = 0; i < cams.length; i++) {\r\n this._cameras.splice(this._cameras.indexOf(cams[i]), 1);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _update(): void {\r\n for (const renderEffectName in this._renderEffects) {\r\n if (Object.prototype.hasOwnProperty.call(this._renderEffects, renderEffectName)) {\r\n this._renderEffects[renderEffectName]._update();\r\n }\r\n }\r\n\r\n for (let i = 0; i < this._cameras.length; i++) {\r\n if (!this._cameras[i]) {\r\n continue;\r\n }\r\n const cameraName = this._cameras[i].name;\r\n if ((<any>this._renderEffectsForIsolatedPass)[cameraName]) {\r\n (<any>this._renderEffectsForIsolatedPass)[cameraName]._update();\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _reset(): void {\r\n this._renderEffects = {};\r\n this._renderEffectsForIsolatedPass = new Array<PostProcessRenderEffect>();\r\n }\r\n\r\n protected _enableMSAAOnFirstPostProcess(sampleCount: number): boolean {\r\n if (!this._engine._features.supportMSAA) {\r\n return false;\r\n }\r\n\r\n // Set samples of the very first post process to 4 to enable native anti-aliasing in browsers that support webGL 2.0 (See: https://github.com/BabylonJS/Babylon.js/issues/3754)\r\n const effectKeys = Object.keys(this._renderEffects);\r\n if (effectKeys.length > 0) {\r\n const postProcesses = this._renderEffects[effectKeys[0]].getPostProcesses();\r\n if (postProcesses) {\r\n postProcesses[0].samples = sampleCount;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Ensures that all post processes in the pipeline are the correct size according to the\r\n * the viewport's required size\r\n */\r\n protected _adaptPostProcessesToViewPort(): void {\r\n const effectKeys = Object.keys(this._renderEffects);\r\n for (const effectKey of effectKeys) {\r\n const postProcesses = this._renderEffects[effectKey].getPostProcesses();\r\n if (postProcesses) {\r\n for (const postProcess of postProcesses) {\r\n postProcess.adaptScaleToCurrentViewport = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets the required values to the prepass renderer.\r\n * @param prePassRenderer defines the prepass renderer to setup.\r\n * @returns true if the pre pass is needed.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public setPrePassRenderer(prePassRenderer: PrePassRenderer): boolean {\r\n // Do Nothing by default\r\n return false;\r\n }\r\n\r\n /**\r\n * Disposes of the pipeline\r\n */\r\n public dispose() {\r\n // Must be implemented by children\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
1
  import { PostProcessRenderEffect } from "../PostProcesses/RenderPipeline/postProcessRenderEffect.js";
2
2
  import { type PostProcess } from "./postProcess.js";
3
- import { ExtractHighlightsPostProcess } from "./extractHighlightsPostProcess.js";
3
+ import { ExtractHighlightsPostProcess } from "./extractHighlightsPostProcess.pure.js";
4
4
  import { type Camera } from "../Cameras/camera.js";
5
5
  import { type Scene } from "../scene.js";
6
6
  import { type AbstractEngine } from "../Engines/abstractEngine.js";
@@ -1,8 +1,8 @@
1
1
  import { PostProcessRenderEffect } from "../PostProcesses/RenderPipeline/postProcessRenderEffect.js";
2
- import { ExtractHighlightsPostProcess } from "./extractHighlightsPostProcess.js";
3
- import { BlurPostProcess } from "./blurPostProcess.js";
4
- import { BloomMergePostProcess } from "./bloomMergePostProcess.js";
5
- import { Texture } from "../Materials/Textures/texture.js";
2
+ import { ExtractHighlightsPostProcess } from "./extractHighlightsPostProcess.pure.js";
3
+ import { BlurPostProcess } from "./blurPostProcess.pure.js";
4
+ import { BloomMergePostProcess } from "./bloomMergePostProcess.pure.js";
5
+ import { Texture } from "../Materials/Textures/texture.pure.js";
6
6
  import { ThinBloomEffect } from "./thinBloomEffect.js";
7
7
  /**
8
8
  * The bloom effect spreads bright areas of an image to simulate artifacts seen in cameras
@@ -1 +1 @@
1
- {"version":3,"file":"bloomEffect.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/bloomEffect.ts"],"names":[],"mappings":"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","sourcesContent":["import { PostProcessRenderEffect } from \"../PostProcesses/RenderPipeline/postProcessRenderEffect\";\r\nimport { type PostProcess } from \"./postProcess\";\r\nimport { ExtractHighlightsPostProcess } from \"./extractHighlightsPostProcess\";\r\nimport { BlurPostProcess } from \"./blurPostProcess\";\r\nimport { BloomMergePostProcess } from \"./bloomMergePostProcess\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport { type Scene } from \"../scene\";\r\nimport { type AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport { ThinBloomEffect } from \"./thinBloomEffect\";\r\n\r\n/**\r\n * The bloom effect spreads bright areas of an image to simulate artifacts seen in cameras\r\n */\r\nexport class BloomEffect extends PostProcessRenderEffect {\r\n /**\r\n * @internal Internal\r\n */\r\n public _effects: Array<PostProcess> = [];\r\n\r\n /**\r\n * @internal Internal\r\n */\r\n public _downscale: ExtractHighlightsPostProcess;\r\n private _blurX: BlurPostProcess;\r\n private _blurY: BlurPostProcess;\r\n private _merge: BloomMergePostProcess;\r\n\r\n /**\r\n * The luminance threshold to find bright areas of the image to bloom.\r\n */\r\n public get threshold(): number {\r\n return this._thinBloomEffect.threshold;\r\n }\r\n public set threshold(value: number) {\r\n this._thinBloomEffect.threshold = value;\r\n }\r\n\r\n /**\r\n * The strength of the bloom.\r\n */\r\n public get weight(): number {\r\n return this._thinBloomEffect.weight;\r\n }\r\n public set weight(value: number) {\r\n this._thinBloomEffect.weight = value;\r\n }\r\n\r\n /**\r\n * Specifies the size of the bloom blur kernel, relative to the final output size\r\n */\r\n public get kernel(): number {\r\n return this._thinBloomEffect.kernel;\r\n }\r\n public set kernel(value: number) {\r\n this._thinBloomEffect.kernel = value;\r\n }\r\n\r\n public get bloomScale() {\r\n return this._thinBloomEffect.scale;\r\n }\r\n\r\n private _thinBloomEffect: ThinBloomEffect;\r\n\r\n /**\r\n * Creates a new instance of @see BloomEffect\r\n * @param sceneOrEngine The scene or engine the effect belongs to.\r\n * @param bloomScale The ratio of the blur texture to the input texture that should be used to compute the bloom.\r\n * @param bloomWeight The strength of bloom.\r\n * @param bloomKernel The size of the kernel to be used when applying the blur.\r\n * @param pipelineTextureType The type of texture to be used when performing the post processing.\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(sceneOrEngine: Scene | AbstractEngine, bloomScale: number, bloomWeight: number, bloomKernel: number, pipelineTextureType = 0, blockCompilation = false) {\r\n const engine = (sceneOrEngine as Scene)._renderForCamera ? (sceneOrEngine as Scene).getEngine() : (sceneOrEngine as AbstractEngine);\r\n super(\r\n engine,\r\n \"bloom\",\r\n () => {\r\n return this._effects;\r\n },\r\n true\r\n );\r\n\r\n this._thinBloomEffect = new ThinBloomEffect(\"bloom\", engine, bloomScale, blockCompilation);\r\n\r\n this._downscale = new ExtractHighlightsPostProcess(\"highlights\", {\r\n size: 1.0,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinBloomEffect._downscale,\r\n });\r\n\r\n this._blurX = new BlurPostProcess(\"horizontal blur\", this._thinBloomEffect._blurX.direction, this._thinBloomEffect._blurX.kernel, {\r\n size: bloomScale,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinBloomEffect._blurX,\r\n });\r\n this._blurX.alwaysForcePOT = true;\r\n this._blurX.autoClear = false;\r\n\r\n this._blurY = new BlurPostProcess(\"vertical blur\", this._thinBloomEffect._blurY.direction, this._thinBloomEffect._blurY.kernel, {\r\n size: bloomScale,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinBloomEffect._blurY,\r\n });\r\n this._blurY.alwaysForcePOT = true;\r\n this._blurY.autoClear = false;\r\n\r\n this.kernel = bloomKernel;\r\n\r\n this._effects = [this._downscale, this._blurX, this._blurY];\r\n\r\n this._merge = new BloomMergePostProcess(\"bloomMerge\", this._downscale, this._blurY, bloomWeight, {\r\n size: bloomScale,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinBloomEffect._merge,\r\n });\r\n this._merge.autoClear = false;\r\n this._effects.push(this._merge);\r\n }\r\n\r\n /**\r\n * Disposes each of the internal effects for a given camera.\r\n * @param camera The camera to dispose the effect on.\r\n */\r\n public disposeEffects(camera?: Camera) {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].dispose(camera);\r\n }\r\n }\r\n\r\n /**\r\n * @internal Internal\r\n */\r\n public _updateEffects() {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].updateEffect();\r\n }\r\n }\r\n\r\n /**\r\n * Internal\r\n * @returns if all the contained post processes are ready.\r\n * @internal\r\n */\r\n public _isReady() {\r\n return this._thinBloomEffect.isReady();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"bloomEffect.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/bloomEffect.ts"],"names":[],"mappings":"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","sourcesContent":["import { PostProcessRenderEffect } from \"../PostProcesses/RenderPipeline/postProcessRenderEffect\";\r\nimport { type PostProcess } from \"./postProcess\";\r\nimport { ExtractHighlightsPostProcess } from \"./extractHighlightsPostProcess.pure\";\r\nimport { BlurPostProcess } from \"./blurPostProcess.pure\";\r\nimport { BloomMergePostProcess } from \"./bloomMergePostProcess.pure\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { Texture } from \"../Materials/Textures/texture.pure\";\r\nimport { type Scene } from \"../scene\";\r\nimport { type AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport { ThinBloomEffect } from \"./thinBloomEffect\";\r\n\r\n/**\r\n * The bloom effect spreads bright areas of an image to simulate artifacts seen in cameras\r\n */\r\nexport class BloomEffect extends PostProcessRenderEffect {\r\n /**\r\n * @internal Internal\r\n */\r\n public _effects: Array<PostProcess> = [];\r\n\r\n /**\r\n * @internal Internal\r\n */\r\n public _downscale: ExtractHighlightsPostProcess;\r\n private _blurX: BlurPostProcess;\r\n private _blurY: BlurPostProcess;\r\n private _merge: BloomMergePostProcess;\r\n\r\n /**\r\n * The luminance threshold to find bright areas of the image to bloom.\r\n */\r\n public get threshold(): number {\r\n return this._thinBloomEffect.threshold;\r\n }\r\n public set threshold(value: number) {\r\n this._thinBloomEffect.threshold = value;\r\n }\r\n\r\n /**\r\n * The strength of the bloom.\r\n */\r\n public get weight(): number {\r\n return this._thinBloomEffect.weight;\r\n }\r\n public set weight(value: number) {\r\n this._thinBloomEffect.weight = value;\r\n }\r\n\r\n /**\r\n * Specifies the size of the bloom blur kernel, relative to the final output size\r\n */\r\n public get kernel(): number {\r\n return this._thinBloomEffect.kernel;\r\n }\r\n public set kernel(value: number) {\r\n this._thinBloomEffect.kernel = value;\r\n }\r\n\r\n public get bloomScale() {\r\n return this._thinBloomEffect.scale;\r\n }\r\n\r\n private _thinBloomEffect: ThinBloomEffect;\r\n\r\n /**\r\n * Creates a new instance of @see BloomEffect\r\n * @param sceneOrEngine The scene or engine the effect belongs to.\r\n * @param bloomScale The ratio of the blur texture to the input texture that should be used to compute the bloom.\r\n * @param bloomWeight The strength of bloom.\r\n * @param bloomKernel The size of the kernel to be used when applying the blur.\r\n * @param pipelineTextureType The type of texture to be used when performing the post processing.\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(sceneOrEngine: Scene | AbstractEngine, bloomScale: number, bloomWeight: number, bloomKernel: number, pipelineTextureType = 0, blockCompilation = false) {\r\n const engine = (sceneOrEngine as Scene)._renderForCamera ? (sceneOrEngine as Scene).getEngine() : (sceneOrEngine as AbstractEngine);\r\n super(\r\n engine,\r\n \"bloom\",\r\n () => {\r\n return this._effects;\r\n },\r\n true\r\n );\r\n\r\n this._thinBloomEffect = new ThinBloomEffect(\"bloom\", engine, bloomScale, blockCompilation);\r\n\r\n this._downscale = new ExtractHighlightsPostProcess(\"highlights\", {\r\n size: 1.0,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinBloomEffect._downscale,\r\n });\r\n\r\n this._blurX = new BlurPostProcess(\"horizontal blur\", this._thinBloomEffect._blurX.direction, this._thinBloomEffect._blurX.kernel, {\r\n size: bloomScale,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinBloomEffect._blurX,\r\n });\r\n this._blurX.alwaysForcePOT = true;\r\n this._blurX.autoClear = false;\r\n\r\n this._blurY = new BlurPostProcess(\"vertical blur\", this._thinBloomEffect._blurY.direction, this._thinBloomEffect._blurY.kernel, {\r\n size: bloomScale,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinBloomEffect._blurY,\r\n });\r\n this._blurY.alwaysForcePOT = true;\r\n this._blurY.autoClear = false;\r\n\r\n this.kernel = bloomKernel;\r\n\r\n this._effects = [this._downscale, this._blurX, this._blurY];\r\n\r\n this._merge = new BloomMergePostProcess(\"bloomMerge\", this._downscale, this._blurY, bloomWeight, {\r\n size: bloomScale,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinBloomEffect._merge,\r\n });\r\n this._merge.autoClear = false;\r\n this._effects.push(this._merge);\r\n }\r\n\r\n /**\r\n * Disposes each of the internal effects for a given camera.\r\n * @param camera The camera to dispose the effect on.\r\n */\r\n public disposeEffects(camera?: Camera) {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].dispose(camera);\r\n }\r\n }\r\n\r\n /**\r\n * @internal Internal\r\n */\r\n public _updateEffects() {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].updateEffect();\r\n }\r\n }\r\n\r\n /**\r\n * Internal\r\n * @returns if all the contained post processes are ready.\r\n * @internal\r\n */\r\n public _isReady() {\r\n return this._thinBloomEffect.isReady();\r\n }\r\n}\r\n"]}
@@ -3,7 +3,7 @@ import { type Camera } from "../Cameras/camera.js";
3
3
  import { type RenderTargetTexture } from "../Materials/Textures/renderTargetTexture.js";
4
4
  import { type PostProcess } from "./postProcess.js";
5
5
  import { PostProcessRenderEffect } from "../PostProcesses/RenderPipeline/postProcessRenderEffect.js";
6
- import { DepthOfFieldBlurPostProcess } from "./depthOfFieldBlurPostProcess.js";
6
+ import { DepthOfFieldBlurPostProcess } from "./depthOfFieldBlurPostProcess.pure.js";
7
7
  import { type Scene } from "../scene.js";
8
8
  import { type AbstractEngine } from "../Engines/abstractEngine.js";
9
9
  /**
@@ -1,7 +1,7 @@
1
- import { Texture } from "../Materials/Textures/texture.js";
1
+ import { Texture } from "../Materials/Textures/texture.pure.js";
2
2
  import { PostProcessRenderEffect } from "../PostProcesses/RenderPipeline/postProcessRenderEffect.js";
3
- import { CircleOfConfusionPostProcess } from "./circleOfConfusionPostProcess.js";
4
- import { DepthOfFieldBlurPostProcess } from "./depthOfFieldBlurPostProcess.js";
3
+ import { CircleOfConfusionPostProcess } from "./circleOfConfusionPostProcess.pure.js";
4
+ import { DepthOfFieldBlurPostProcess } from "./depthOfFieldBlurPostProcess.pure.js";
5
5
  import { DepthOfFieldMergePostProcess } from "./depthOfFieldMergePostProcess.js";
6
6
 
7
7
  import { ThinDepthOfFieldEffect } from "./thinDepthOfFieldEffect.js";
@@ -1 +1 @@
1
- {"version":3,"file":"depthOfFieldEffect.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/depthOfFieldEffect.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../types\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport { type RenderTargetTexture } from \"../Materials/Textures/renderTargetTexture\";\r\nimport { type PostProcess } from \"./postProcess\";\r\nimport { PostProcessRenderEffect } from \"../PostProcesses/RenderPipeline/postProcessRenderEffect\";\r\nimport { CircleOfConfusionPostProcess } from \"./circleOfConfusionPostProcess\";\r\nimport { DepthOfFieldBlurPostProcess } from \"./depthOfFieldBlurPostProcess\";\r\nimport { DepthOfFieldMergePostProcess } from \"./depthOfFieldMergePostProcess\";\r\nimport { type Scene } from \"../scene\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { type AbstractEngine } from \"core/Engines/abstractEngine\";\r\nimport { type ThinDepthOfFieldEffectBlurLevel, ThinDepthOfFieldEffect } from \"./thinDepthOfFieldEffect\";\r\n\r\n/**\r\n * Specifies the level of max blur that should be applied when using the depth of field effect\r\n */\r\nexport const enum DepthOfFieldEffectBlurLevel {\r\n /**\r\n * Subtle blur\r\n */\r\n Low,\r\n /**\r\n * Medium blur\r\n */\r\n Medium,\r\n /**\r\n * Large blur\r\n */\r\n High,\r\n}\r\n\r\n/**\r\n * The depth of field effect applies a blur to objects that are closer or further from where the camera is focusing.\r\n */\r\nexport class DepthOfFieldEffect extends PostProcessRenderEffect {\r\n private _circleOfConfusion: CircleOfConfusionPostProcess;\r\n /**\r\n * @internal Internal, blurs from high to low\r\n */\r\n public _depthOfFieldBlurX: Array<DepthOfFieldBlurPostProcess>;\r\n private _depthOfFieldBlurY: Array<DepthOfFieldBlurPostProcess>;\r\n private _dofMerge: Nullable<DepthOfFieldMergePostProcess>;\r\n\r\n /**\r\n * @internal Internal post processes in depth of field effect\r\n */\r\n public _effects: Array<PostProcess> = [];\r\n\r\n /**\r\n * The focal the length of the camera used in the effect in scene units/1000 (eg. millimeter)\r\n */\r\n public set focalLength(value: number) {\r\n this._thinDepthOfFieldEffect.focalLength = value;\r\n }\r\n public get focalLength() {\r\n return this._thinDepthOfFieldEffect.focalLength;\r\n }\r\n /**\r\n * F-Stop of the effect's camera. The diameter of the resulting aperture can be computed by lensSize/fStop. (default: 1.4)\r\n */\r\n public set fStop(value: number) {\r\n this._thinDepthOfFieldEffect.fStop = value;\r\n }\r\n public get fStop() {\r\n return this._thinDepthOfFieldEffect.fStop;\r\n }\r\n /**\r\n * Distance away from the camera to focus on in scene units/1000 (eg. millimeter). (default: 2000)\r\n */\r\n public set focusDistance(value: number) {\r\n this._thinDepthOfFieldEffect.focusDistance = value;\r\n }\r\n public get focusDistance() {\r\n return this._thinDepthOfFieldEffect.focusDistance;\r\n }\r\n /**\r\n * Max lens size in scene units/1000 (eg. millimeter). Standard cameras are 50mm. (default: 50) The diameter of the resulting aperture can be computed by lensSize/fStop.\r\n */\r\n public set lensSize(value: number) {\r\n this._thinDepthOfFieldEffect.lensSize = value;\r\n }\r\n public get lensSize() {\r\n return this._thinDepthOfFieldEffect.lensSize;\r\n }\r\n\r\n private _thinDepthOfFieldEffect: ThinDepthOfFieldEffect;\r\n\r\n /**\r\n * Creates a new instance DepthOfFieldEffect\r\n * @param sceneOrEngine The scene or engine the effect belongs to.\r\n * @param depthTexture The depth texture of the scene to compute the circle of confusion.This must be set in order for this to function but may be set after initialization if needed.\r\n * @param blurLevel\r\n * @param pipelineTextureType The type of texture to be used when performing the post processing.\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n * @param depthNotNormalized If the depth from the depth texture is already normalized or if the normalization should be done at runtime in the shader (default: false)\r\n */\r\n constructor(\r\n sceneOrEngine: Scene | AbstractEngine,\r\n depthTexture: Nullable<RenderTargetTexture>,\r\n blurLevel: DepthOfFieldEffectBlurLevel = DepthOfFieldEffectBlurLevel.Low,\r\n pipelineTextureType = 0,\r\n blockCompilation = false,\r\n depthNotNormalized = false\r\n ) {\r\n const engine = (sceneOrEngine as Scene)._renderForCamera ? (sceneOrEngine as Scene).getEngine() : (sceneOrEngine as AbstractEngine);\r\n super(\r\n engine,\r\n \"depth of field\",\r\n () => {\r\n return this._effects;\r\n },\r\n true\r\n );\r\n\r\n this._thinDepthOfFieldEffect = new ThinDepthOfFieldEffect(\"Depth of Field\", engine, blurLevel as unknown as ThinDepthOfFieldEffectBlurLevel, false, blockCompilation);\r\n\r\n // Use R-only formats if supported to store the circle of confusion values.\r\n // This should be more space and bandwidth efficient than using RGBA.\r\n const circleOfConfusionTextureFormat = engine.isWebGPU || engine.version > 1 ? Constants.TEXTUREFORMAT_RED : Constants.TEXTUREFORMAT_RGBA;\r\n\r\n // Circle of confusion value for each pixel is used to determine how much to blur that pixel\r\n this._circleOfConfusion = new CircleOfConfusionPostProcess(\r\n \"circleOfConfusion\",\r\n depthTexture,\r\n {\r\n size: 1,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n depthNotNormalized,\r\n effectWrapper: this._thinDepthOfFieldEffect._circleOfConfusion,\r\n },\r\n null\r\n );\r\n\r\n // Create a pyramid of blurred images (eg. fullSize 1/4 blur, half size 1/2 blur, quarter size 3/4 blur, eith size 4/4 blur)\r\n // Blur the image but do not blur on sharp far to near distance changes to avoid bleeding artifacts\r\n // See section 2.6.2 http://fileadmin.cs.lth.se/cs/education/edan35/lectures/12dof.pdf\r\n this._depthOfFieldBlurY = [];\r\n this._depthOfFieldBlurX = [];\r\n\r\n const blurCount = this._thinDepthOfFieldEffect._depthOfFieldBlurX.length;\r\n\r\n for (let i = 0; i < blurCount; i++) {\r\n const [thinBlurY, ratioY] = this._thinDepthOfFieldEffect._depthOfFieldBlurY[i];\r\n const blurY = new DepthOfFieldBlurPostProcess(\r\n \"vertical blur\",\r\n null,\r\n thinBlurY.direction,\r\n thinBlurY.kernel,\r\n {\r\n size: ratioY,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n textureFormat: i == 0 ? circleOfConfusionTextureFormat : Constants.TEXTUREFORMAT_RGBA,\r\n effectWrapper: thinBlurY,\r\n },\r\n null,\r\n this._circleOfConfusion,\r\n i == 0 ? this._circleOfConfusion : null\r\n );\r\n blurY.autoClear = false;\r\n\r\n const [thinBlurX, ratioX] = this._thinDepthOfFieldEffect._depthOfFieldBlurX[i];\r\n const blurX = new DepthOfFieldBlurPostProcess(\r\n \"horizontal blur\",\r\n null,\r\n thinBlurX.direction,\r\n thinBlurX.kernel,\r\n {\r\n size: ratioX,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: thinBlurX,\r\n },\r\n null,\r\n this._circleOfConfusion,\r\n null\r\n );\r\n blurX.autoClear = false;\r\n this._depthOfFieldBlurY.push(blurY);\r\n this._depthOfFieldBlurX.push(blurX);\r\n }\r\n\r\n // Set all post processes on the effect.\r\n this._effects = [this._circleOfConfusion];\r\n for (let i = 0; i < this._depthOfFieldBlurX.length; i++) {\r\n this._effects.push(this._depthOfFieldBlurY[i]);\r\n this._effects.push(this._depthOfFieldBlurX[i]);\r\n }\r\n\r\n // Merge blurred images with original image based on circleOfConfusion\r\n this._dofMerge = new DepthOfFieldMergePostProcess(\r\n \"dofMerge\",\r\n this._circleOfConfusion,\r\n this._circleOfConfusion,\r\n this._depthOfFieldBlurX,\r\n {\r\n size: this._thinDepthOfFieldEffect._depthOfFieldBlurX[blurCount - 1][1],\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinDepthOfFieldEffect._dofMerge,\r\n },\r\n null\r\n );\r\n this._dofMerge.autoClear = false;\r\n this._effects.push(this._dofMerge);\r\n }\r\n\r\n /**\r\n * Get the current class name of the current effect\r\n * @returns \"DepthOfFieldEffect\"\r\n */\r\n public getClassName(): string {\r\n return \"DepthOfFieldEffect\";\r\n }\r\n\r\n /**\r\n * Depth texture to be used to compute the circle of confusion. This must be set here or in the constructor in order for the post process to function.\r\n */\r\n public set depthTexture(value: RenderTargetTexture) {\r\n this._circleOfConfusion.depthTexture = value;\r\n }\r\n\r\n /**\r\n * Disposes each of the internal effects for a given camera.\r\n * @param camera The camera to dispose the effect on.\r\n */\r\n public disposeEffects(camera: Camera) {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].dispose(camera);\r\n }\r\n }\r\n\r\n /**\r\n * @internal Internal\r\n */\r\n public _updateEffects() {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].updateEffect();\r\n }\r\n }\r\n\r\n /**\r\n * Internal\r\n * @returns if all the contained post processes are ready.\r\n * @internal\r\n */\r\n public _isReady() {\r\n return this._thinDepthOfFieldEffect.isReady();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"depthOfFieldEffect.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/depthOfFieldEffect.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../types\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { Texture } from \"../Materials/Textures/texture.pure\";\r\nimport { type RenderTargetTexture } from \"../Materials/Textures/renderTargetTexture\";\r\nimport { type PostProcess } from \"./postProcess\";\r\nimport { PostProcessRenderEffect } from \"../PostProcesses/RenderPipeline/postProcessRenderEffect\";\r\nimport { CircleOfConfusionPostProcess } from \"./circleOfConfusionPostProcess.pure\";\r\nimport { DepthOfFieldBlurPostProcess } from \"./depthOfFieldBlurPostProcess.pure\";\r\nimport { DepthOfFieldMergePostProcess } from \"./depthOfFieldMergePostProcess\";\r\nimport { type Scene } from \"../scene\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { type AbstractEngine } from \"core/Engines/abstractEngine\";\r\nimport { type ThinDepthOfFieldEffectBlurLevel, ThinDepthOfFieldEffect } from \"./thinDepthOfFieldEffect\";\r\n\r\n/**\r\n * Specifies the level of max blur that should be applied when using the depth of field effect\r\n */\r\nexport const enum DepthOfFieldEffectBlurLevel {\r\n /**\r\n * Subtle blur\r\n */\r\n Low,\r\n /**\r\n * Medium blur\r\n */\r\n Medium,\r\n /**\r\n * Large blur\r\n */\r\n High,\r\n}\r\n\r\n/**\r\n * The depth of field effect applies a blur to objects that are closer or further from where the camera is focusing.\r\n */\r\nexport class DepthOfFieldEffect extends PostProcessRenderEffect {\r\n private _circleOfConfusion: CircleOfConfusionPostProcess;\r\n /**\r\n * @internal Internal, blurs from high to low\r\n */\r\n public _depthOfFieldBlurX: Array<DepthOfFieldBlurPostProcess>;\r\n private _depthOfFieldBlurY: Array<DepthOfFieldBlurPostProcess>;\r\n private _dofMerge: Nullable<DepthOfFieldMergePostProcess>;\r\n\r\n /**\r\n * @internal Internal post processes in depth of field effect\r\n */\r\n public _effects: Array<PostProcess> = [];\r\n\r\n /**\r\n * The focal the length of the camera used in the effect in scene units/1000 (eg. millimeter)\r\n */\r\n public set focalLength(value: number) {\r\n this._thinDepthOfFieldEffect.focalLength = value;\r\n }\r\n public get focalLength() {\r\n return this._thinDepthOfFieldEffect.focalLength;\r\n }\r\n /**\r\n * F-Stop of the effect's camera. The diameter of the resulting aperture can be computed by lensSize/fStop. (default: 1.4)\r\n */\r\n public set fStop(value: number) {\r\n this._thinDepthOfFieldEffect.fStop = value;\r\n }\r\n public get fStop() {\r\n return this._thinDepthOfFieldEffect.fStop;\r\n }\r\n /**\r\n * Distance away from the camera to focus on in scene units/1000 (eg. millimeter). (default: 2000)\r\n */\r\n public set focusDistance(value: number) {\r\n this._thinDepthOfFieldEffect.focusDistance = value;\r\n }\r\n public get focusDistance() {\r\n return this._thinDepthOfFieldEffect.focusDistance;\r\n }\r\n /**\r\n * Max lens size in scene units/1000 (eg. millimeter). Standard cameras are 50mm. (default: 50) The diameter of the resulting aperture can be computed by lensSize/fStop.\r\n */\r\n public set lensSize(value: number) {\r\n this._thinDepthOfFieldEffect.lensSize = value;\r\n }\r\n public get lensSize() {\r\n return this._thinDepthOfFieldEffect.lensSize;\r\n }\r\n\r\n private _thinDepthOfFieldEffect: ThinDepthOfFieldEffect;\r\n\r\n /**\r\n * Creates a new instance DepthOfFieldEffect\r\n * @param sceneOrEngine The scene or engine the effect belongs to.\r\n * @param depthTexture The depth texture of the scene to compute the circle of confusion.This must be set in order for this to function but may be set after initialization if needed.\r\n * @param blurLevel\r\n * @param pipelineTextureType The type of texture to be used when performing the post processing.\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n * @param depthNotNormalized If the depth from the depth texture is already normalized or if the normalization should be done at runtime in the shader (default: false)\r\n */\r\n constructor(\r\n sceneOrEngine: Scene | AbstractEngine,\r\n depthTexture: Nullable<RenderTargetTexture>,\r\n blurLevel: DepthOfFieldEffectBlurLevel = DepthOfFieldEffectBlurLevel.Low,\r\n pipelineTextureType = 0,\r\n blockCompilation = false,\r\n depthNotNormalized = false\r\n ) {\r\n const engine = (sceneOrEngine as Scene)._renderForCamera ? (sceneOrEngine as Scene).getEngine() : (sceneOrEngine as AbstractEngine);\r\n super(\r\n engine,\r\n \"depth of field\",\r\n () => {\r\n return this._effects;\r\n },\r\n true\r\n );\r\n\r\n this._thinDepthOfFieldEffect = new ThinDepthOfFieldEffect(\"Depth of Field\", engine, blurLevel as unknown as ThinDepthOfFieldEffectBlurLevel, false, blockCompilation);\r\n\r\n // Use R-only formats if supported to store the circle of confusion values.\r\n // This should be more space and bandwidth efficient than using RGBA.\r\n const circleOfConfusionTextureFormat = engine.isWebGPU || engine.version > 1 ? Constants.TEXTUREFORMAT_RED : Constants.TEXTUREFORMAT_RGBA;\r\n\r\n // Circle of confusion value for each pixel is used to determine how much to blur that pixel\r\n this._circleOfConfusion = new CircleOfConfusionPostProcess(\r\n \"circleOfConfusion\",\r\n depthTexture,\r\n {\r\n size: 1,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n depthNotNormalized,\r\n effectWrapper: this._thinDepthOfFieldEffect._circleOfConfusion,\r\n },\r\n null\r\n );\r\n\r\n // Create a pyramid of blurred images (eg. fullSize 1/4 blur, half size 1/2 blur, quarter size 3/4 blur, eith size 4/4 blur)\r\n // Blur the image but do not blur on sharp far to near distance changes to avoid bleeding artifacts\r\n // See section 2.6.2 http://fileadmin.cs.lth.se/cs/education/edan35/lectures/12dof.pdf\r\n this._depthOfFieldBlurY = [];\r\n this._depthOfFieldBlurX = [];\r\n\r\n const blurCount = this._thinDepthOfFieldEffect._depthOfFieldBlurX.length;\r\n\r\n for (let i = 0; i < blurCount; i++) {\r\n const [thinBlurY, ratioY] = this._thinDepthOfFieldEffect._depthOfFieldBlurY[i];\r\n const blurY = new DepthOfFieldBlurPostProcess(\r\n \"vertical blur\",\r\n null,\r\n thinBlurY.direction,\r\n thinBlurY.kernel,\r\n {\r\n size: ratioY,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n textureFormat: i == 0 ? circleOfConfusionTextureFormat : Constants.TEXTUREFORMAT_RGBA,\r\n effectWrapper: thinBlurY,\r\n },\r\n null,\r\n this._circleOfConfusion,\r\n i == 0 ? this._circleOfConfusion : null\r\n );\r\n blurY.autoClear = false;\r\n\r\n const [thinBlurX, ratioX] = this._thinDepthOfFieldEffect._depthOfFieldBlurX[i];\r\n const blurX = new DepthOfFieldBlurPostProcess(\r\n \"horizontal blur\",\r\n null,\r\n thinBlurX.direction,\r\n thinBlurX.kernel,\r\n {\r\n size: ratioX,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: thinBlurX,\r\n },\r\n null,\r\n this._circleOfConfusion,\r\n null\r\n );\r\n blurX.autoClear = false;\r\n this._depthOfFieldBlurY.push(blurY);\r\n this._depthOfFieldBlurX.push(blurX);\r\n }\r\n\r\n // Set all post processes on the effect.\r\n this._effects = [this._circleOfConfusion];\r\n for (let i = 0; i < this._depthOfFieldBlurX.length; i++) {\r\n this._effects.push(this._depthOfFieldBlurY[i]);\r\n this._effects.push(this._depthOfFieldBlurX[i]);\r\n }\r\n\r\n // Merge blurred images with original image based on circleOfConfusion\r\n this._dofMerge = new DepthOfFieldMergePostProcess(\r\n \"dofMerge\",\r\n this._circleOfConfusion,\r\n this._circleOfConfusion,\r\n this._depthOfFieldBlurX,\r\n {\r\n size: this._thinDepthOfFieldEffect._depthOfFieldBlurX[blurCount - 1][1],\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinDepthOfFieldEffect._dofMerge,\r\n },\r\n null\r\n );\r\n this._dofMerge.autoClear = false;\r\n this._effects.push(this._dofMerge);\r\n }\r\n\r\n /**\r\n * Get the current class name of the current effect\r\n * @returns \"DepthOfFieldEffect\"\r\n */\r\n public getClassName(): string {\r\n return \"DepthOfFieldEffect\";\r\n }\r\n\r\n /**\r\n * Depth texture to be used to compute the circle of confusion. This must be set here or in the constructor in order for the post process to function.\r\n */\r\n public set depthTexture(value: RenderTargetTexture) {\r\n this._circleOfConfusion.depthTexture = value;\r\n }\r\n\r\n /**\r\n * Disposes each of the internal effects for a given camera.\r\n * @param camera The camera to dispose the effect on.\r\n */\r\n public disposeEffects(camera: Camera) {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].dispose(camera);\r\n }\r\n }\r\n\r\n /**\r\n * @internal Internal\r\n */\r\n public _updateEffects() {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].updateEffect();\r\n }\r\n }\r\n\r\n /**\r\n * Internal\r\n * @returns if all the contained post processes are ready.\r\n * @internal\r\n */\r\n public _isReady() {\r\n return this._thinDepthOfFieldEffect.isReady();\r\n }\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
1
  import { type Nullable } from "../types.js";
2
2
  import { type Camera } from "../Cameras/camera.js";
3
3
  import { type Effect } from "../Materials/effect.js";
4
- import { type PostProcessOptions, PostProcess } from "./postProcess.js";
4
+ import { type PostProcessOptions, PostProcess } from "./postProcess.pure.js";
5
5
  import { type AbstractEngine } from "../Engines/abstractEngine.js";
6
6
  /**
7
7
  * The DepthOfFieldMergePostProcess merges blurred images with the original based on the values of the circle of confusion.
@@ -1,4 +1,4 @@
1
- import { PostProcess } from "./postProcess.js";
1
+ import { PostProcess } from "./postProcess.pure.js";
2
2
 
3
3
  import { ThinDepthOfFieldMergePostProcess } from "./thinDepthOfFieldMergePostProcess.js";
4
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"depthOfFieldMergePostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/depthOfFieldMergePostProcess.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,WAAW,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AAEtF;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,WAAW;IACzD;;;OAGG;IACa,YAAY;QACxB,OAAO,8BAA8B,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,YACI,IAAY,EACZ,iBAA8B,EAC9B,iBAA8B,EACtB,UAA8B,EACtC,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,WAAW,GAAG,SAAS,CAAC,yBAAyB,EACjD,gBAAgB,GAAG,KAAK;QAExB,MAAM,qBAAqB,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC1G,MAAM,YAAY,GAAG;YACjB,QAAQ,EAAE,gCAAgC,CAAC,QAAQ;YACnD,IAAI,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACvD,MAAM;YACN,YAAY;YACZ,MAAM;YACN,QAAQ;YACR,WAAW;YACX,GAAI,OAA8B;YAClC,gBAAgB,EAAE,IAAI;SACzB,CAAC;QAEF,KAAK,CAAC,IAAI,EAAE,gCAAgC,CAAC,WAAW,EAAE;YACtD,aAAa,EAAE,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YACnJ,GAAG,YAAY;SAClB,CAAC,CAAC;QAzBK,eAAU,GAAV,UAAU,CAAoB;QA2BtC,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;YAC1C,MAAM,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;YACtE,MAAM,CAAC,+BAA+B,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,CAAC;YACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM,CAAC,+BAA+B,CAAC,UAAU,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3F,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACa,YAAY,CACxB,UAA4B,IAAI,EAChC,WAA+B,IAAI,EACnC,WAA+B,IAAI,EACnC,eAAqB,EACrB,UAAqC,EACrC,OAAkD;QAElD,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAI,qBAAqB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QAC3E,CAAC;QACD,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1F,CAAC;CACJ","sourcesContent":["import { type Nullable } from \"../types\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { type Effect } from \"../Materials/effect\";\r\nimport { type PostProcessOptions, PostProcess } from \"./postProcess\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport { type AbstractEngine } from \"core/Engines/abstractEngine\";\r\nimport { ThinDepthOfFieldMergePostProcess } from \"./thinDepthOfFieldMergePostProcess\";\r\n\r\n/**\r\n * The DepthOfFieldMergePostProcess merges blurred images with the original based on the values of the circle of confusion.\r\n */\r\nexport class DepthOfFieldMergePostProcess extends PostProcess {\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"DepthOfFieldMergePostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"DepthOfFieldMergePostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance of DepthOfFieldMergePostProcess\r\n * @param name The name of the effect.\r\n * @param originalFromInput Post process which's input will be used for the merge.\r\n * @param circleOfConfusion Circle of confusion post process which's output will be used to blur each pixel.\r\n * @param _blurSteps Blur post processes from low to high which will be mixed with the original image.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n originalFromInput: PostProcess,\r\n circleOfConfusion: PostProcess,\r\n private _blurSteps: Array<PostProcess>,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n blockCompilation = false\r\n ) {\r\n const blockCompilationFinal = typeof options === \"number\" ? blockCompilation : !!options.blockCompilation;\r\n const localOptions = {\r\n samplers: ThinDepthOfFieldMergePostProcess.Samplers,\r\n size: typeof options === \"number\" ? options : undefined,\r\n camera,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n textureType,\r\n ...(options as PostProcessOptions),\r\n blockCompilation: true,\r\n };\r\n\r\n super(name, ThinDepthOfFieldMergePostProcess.FragmentUrl, {\r\n effectWrapper: typeof options === \"number\" || !options.effectWrapper ? new ThinDepthOfFieldMergePostProcess(name, engine, localOptions) : undefined,\r\n ...localOptions,\r\n });\r\n\r\n this.externalTextureSamplerBinding = true;\r\n this.onApplyObservable.add((effect: Effect) => {\r\n effect.setTextureFromPostProcess(\"textureSampler\", originalFromInput);\r\n effect.setTextureFromPostProcessOutput(\"circleOfConfusionSampler\", circleOfConfusion);\r\n for (let i = 0; i < _blurSteps.length; i++) {\r\n const step = _blurSteps[i];\r\n effect.setTextureFromPostProcessOutput(\"blurStep\" + (_blurSteps.length - i - 1), step);\r\n }\r\n });\r\n\r\n if (!blockCompilationFinal) {\r\n this.updateEffect();\r\n }\r\n }\r\n\r\n /**\r\n * Updates the effect with the current post process compile time values and recompiles the shader.\r\n * @param defines Define statements that should be added at the beginning of the shader. (default: null)\r\n * @param uniforms Set of uniform variables that will be passed to the shader. (default: null)\r\n * @param samplers Set of Texture2D variables that will be passed to the shader. (default: null)\r\n * @param indexParameters The index parameters to be used for babylons include syntax \"#include<kernelBlurVaryingDeclaration>[0..varyingCount]\". (default: undefined) See usage in babylon.blurPostProcess.ts and kernelBlur.vertex.fx\r\n * @param onCompiled Called when the shader has been compiled.\r\n * @param onError Called if there is an error when compiling a shader.\r\n */\r\n public override updateEffect(\r\n defines: Nullable<string> = null,\r\n uniforms: Nullable<string[]> = null,\r\n samplers: Nullable<string[]> = null,\r\n indexParameters?: any,\r\n onCompiled?: (effect: Effect) => void,\r\n onError?: (effect: Effect, errors: string) => void\r\n ) {\r\n if (!defines) {\r\n defines = \"\";\r\n defines += \"#define BLUR_LEVEL \" + (this._blurSteps.length - 1) + \"\\n\";\r\n }\r\n super.updateEffect(defines, uniforms, samplers, indexParameters, onCompiled, onError);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"depthOfFieldMergePostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/depthOfFieldMergePostProcess.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AAEtF;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,WAAW;IACzD;;;OAGG;IACa,YAAY;QACxB,OAAO,8BAA8B,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,YACI,IAAY,EACZ,iBAA8B,EAC9B,iBAA8B,EACtB,UAA8B,EACtC,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,WAAW,GAAG,SAAS,CAAC,yBAAyB,EACjD,gBAAgB,GAAG,KAAK;QAExB,MAAM,qBAAqB,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC1G,MAAM,YAAY,GAAG;YACjB,QAAQ,EAAE,gCAAgC,CAAC,QAAQ;YACnD,IAAI,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACvD,MAAM;YACN,YAAY;YACZ,MAAM;YACN,QAAQ;YACR,WAAW;YACX,GAAI,OAA8B;YAClC,gBAAgB,EAAE,IAAI;SACzB,CAAC;QAEF,KAAK,CAAC,IAAI,EAAE,gCAAgC,CAAC,WAAW,EAAE;YACtD,aAAa,EAAE,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YACnJ,GAAG,YAAY;SAClB,CAAC,CAAC;QAzBK,eAAU,GAAV,UAAU,CAAoB;QA2BtC,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;YAC1C,MAAM,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;YACtE,MAAM,CAAC,+BAA+B,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,CAAC;YACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM,CAAC,+BAA+B,CAAC,UAAU,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3F,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACa,YAAY,CACxB,UAA4B,IAAI,EAChC,WAA+B,IAAI,EACnC,WAA+B,IAAI,EACnC,eAAqB,EACrB,UAAqC,EACrC,OAAkD;QAElD,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAI,qBAAqB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QAC3E,CAAC;QACD,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1F,CAAC;CACJ","sourcesContent":["import { type Nullable } from \"../types\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { type Effect } from \"../Materials/effect\";\r\nimport { type PostProcessOptions, PostProcess } from \"./postProcess.pure\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport { type AbstractEngine } from \"core/Engines/abstractEngine\";\r\nimport { ThinDepthOfFieldMergePostProcess } from \"./thinDepthOfFieldMergePostProcess\";\r\n\r\n/**\r\n * The DepthOfFieldMergePostProcess merges blurred images with the original based on the values of the circle of confusion.\r\n */\r\nexport class DepthOfFieldMergePostProcess extends PostProcess {\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"DepthOfFieldMergePostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"DepthOfFieldMergePostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance of DepthOfFieldMergePostProcess\r\n * @param name The name of the effect.\r\n * @param originalFromInput Post process which's input will be used for the merge.\r\n * @param circleOfConfusion Circle of confusion post process which's output will be used to blur each pixel.\r\n * @param _blurSteps Blur post processes from low to high which will be mixed with the original image.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n originalFromInput: PostProcess,\r\n circleOfConfusion: PostProcess,\r\n private _blurSteps: Array<PostProcess>,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n blockCompilation = false\r\n ) {\r\n const blockCompilationFinal = typeof options === \"number\" ? blockCompilation : !!options.blockCompilation;\r\n const localOptions = {\r\n samplers: ThinDepthOfFieldMergePostProcess.Samplers,\r\n size: typeof options === \"number\" ? options : undefined,\r\n camera,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n textureType,\r\n ...(options as PostProcessOptions),\r\n blockCompilation: true,\r\n };\r\n\r\n super(name, ThinDepthOfFieldMergePostProcess.FragmentUrl, {\r\n effectWrapper: typeof options === \"number\" || !options.effectWrapper ? new ThinDepthOfFieldMergePostProcess(name, engine, localOptions) : undefined,\r\n ...localOptions,\r\n });\r\n\r\n this.externalTextureSamplerBinding = true;\r\n this.onApplyObservable.add((effect: Effect) => {\r\n effect.setTextureFromPostProcess(\"textureSampler\", originalFromInput);\r\n effect.setTextureFromPostProcessOutput(\"circleOfConfusionSampler\", circleOfConfusion);\r\n for (let i = 0; i < _blurSteps.length; i++) {\r\n const step = _blurSteps[i];\r\n effect.setTextureFromPostProcessOutput(\"blurStep\" + (_blurSteps.length - i - 1), step);\r\n }\r\n });\r\n\r\n if (!blockCompilationFinal) {\r\n this.updateEffect();\r\n }\r\n }\r\n\r\n /**\r\n * Updates the effect with the current post process compile time values and recompiles the shader.\r\n * @param defines Define statements that should be added at the beginning of the shader. (default: null)\r\n * @param uniforms Set of uniform variables that will be passed to the shader. (default: null)\r\n * @param samplers Set of Texture2D variables that will be passed to the shader. (default: null)\r\n * @param indexParameters The index parameters to be used for babylons include syntax \"#include<kernelBlurVaryingDeclaration>[0..varyingCount]\". (default: undefined) See usage in babylon.blurPostProcess.ts and kernelBlur.vertex.fx\r\n * @param onCompiled Called when the shader has been compiled.\r\n * @param onError Called if there is an error when compiling a shader.\r\n */\r\n public override updateEffect(\r\n defines: Nullable<string> = null,\r\n uniforms: Nullable<string[]> = null,\r\n samplers: Nullable<string[]> = null,\r\n indexParameters?: any,\r\n onCompiled?: (effect: Effect) => void,\r\n onError?: (effect: Effect, errors: string) => void\r\n ) {\r\n if (!defines) {\r\n defines = \"\";\r\n defines += \"#define BLUR_LEVEL \" + (this._blurSteps.length - 1) + \"\\n\";\r\n }\r\n super.updateEffect(defines, uniforms, samplers, indexParameters, onCompiled, onError);\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
1
  import { type Nullable } from "../types.js";
2
2
  import { type Camera } from "../Cameras/camera.js";
3
- import { type PostProcessOptions, PostProcess } from "./postProcess.js";
3
+ import { type PostProcessOptions, PostProcess } from "./postProcess.pure.js";
4
4
  import { type AbstractEngine } from "../Engines/abstractEngine.js";
5
5
  /**
6
6
  * Extracts highlights from the image
@@ -1,4 +1,4 @@
1
- import { PostProcess } from "./postProcess.js";
1
+ import { PostProcess } from "./postProcess.pure.js";
2
2
 
3
3
  /**
4
4
  * Extracts highlights from the image
@@ -1 +1 @@
1
- {"version":3,"file":"highlightsPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/highlightsPostProcess.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,WAAW,EAAE,MAAM,eAAe,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IAClD;;;OAGG;IACa,YAAY;QACxB,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAED;;;;;;;;;;OAUG;IACH,YACI,IAAY,EACZ,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,cAAsB,SAAS,CAAC,yBAAyB;QAEzD,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAC9G,CAAC;IAEkB,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;CACJ","sourcesContent":["import { type Nullable } from \"../types\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { type PostProcessOptions, PostProcess } from \"./postProcess\";\r\nimport { type AbstractEngine } from \"core/Engines/abstractEngine\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\n/**\r\n * Extracts highlights from the image\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses\r\n */\r\nexport class HighlightsPostProcess extends PostProcess {\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"HighlightsPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"HighlightsPostProcess\";\r\n }\r\n\r\n /**\r\n * Extracts highlights from the image\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses\r\n * @param name The name of the effect.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of texture for the post process (default: Engine.TEXTURETYPE_UNSIGNED_BYTE)\r\n */\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE\r\n ) {\r\n super(name, \"highlights\", null, null, options, camera, samplingMode, engine, reusable, null, textureType);\r\n }\r\n\r\n protected override _gatherImports(useWebGPU: boolean, list: Promise<any>[]) {\r\n if (useWebGPU) {\r\n this._webGPUReady = true;\r\n list.push(Promise.all([import(\"../ShadersWGSL/highlights.fragment\")]));\r\n } else {\r\n list.push(Promise.all([import(\"../Shaders/highlights.fragment\")]));\r\n }\r\n\r\n super._gatherImports(useWebGPU, list);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"highlightsPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/highlightsPostProcess.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IAClD;;;OAGG;IACa,YAAY;QACxB,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAED;;;;;;;;;;OAUG;IACH,YACI,IAAY,EACZ,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,cAAsB,SAAS,CAAC,yBAAyB;QAEzD,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAC9G,CAAC;IAEkB,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;CACJ","sourcesContent":["import { type Nullable } from \"../types\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { type PostProcessOptions, PostProcess } from \"./postProcess.pure\";\r\nimport { type AbstractEngine } from \"core/Engines/abstractEngine\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\n/**\r\n * Extracts highlights from the image\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses\r\n */\r\nexport class HighlightsPostProcess extends PostProcess {\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"HighlightsPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"HighlightsPostProcess\";\r\n }\r\n\r\n /**\r\n * Extracts highlights from the image\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses\r\n * @param name The name of the effect.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of texture for the post process (default: Engine.TEXTURETYPE_UNSIGNED_BYTE)\r\n */\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE\r\n ) {\r\n super(name, \"highlights\", null, null, options, camera, samplingMode, engine, reusable, null, textureType);\r\n }\r\n\r\n protected override _gatherImports(useWebGPU: boolean, list: Promise<any>[]) {\r\n if (useWebGPU) {\r\n this._webGPUReady = true;\r\n list.push(Promise.all([import(\"../ShadersWGSL/highlights.fragment\")]));\r\n } else {\r\n list.push(Promise.all([import(\"../Shaders/highlights.fragment\")]));\r\n }\r\n\r\n super._gatherImports(useWebGPU, list);\r\n }\r\n}\r\n"]}