@onerjs/core 8.52.7 → 8.52.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1060) hide show
  1. package/Actions/actionManager.d.ts +1 -1
  2. package/Actions/actionManager.js +8 -5
  3. package/Actions/actionManager.js.map +1 -1
  4. package/Animations/animatable.core.d.ts +1 -1
  5. package/Animations/animatable.core.js +2 -2
  6. package/Animations/animatable.core.js.map +1 -1
  7. package/Animations/animationPropertiesOverride.js +1 -1
  8. package/Animations/animationPropertiesOverride.js.map +1 -1
  9. package/Animations/animatorAvatar.d.ts +2 -2
  10. package/Animations/animatorAvatar.js +3 -3
  11. package/Animations/animatorAvatar.js.map +1 -1
  12. package/Animations/pathCursor.d.ts +1 -1
  13. package/Animations/pathCursor.js +1 -1
  14. package/Animations/pathCursor.js.map +1 -1
  15. package/Animations/runtimeAnimation.d.ts +1 -1
  16. package/Animations/runtimeAnimation.js +2 -2
  17. package/Animations/runtimeAnimation.js.map +1 -1
  18. package/Audio/analyser.js +1 -1
  19. package/Audio/analyser.js.map +1 -1
  20. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js +1 -1
  21. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js.map +1 -1
  22. package/AudioV2/abstractAudio/subNodes/audioAnalyzerSubNode.d.ts +2 -0
  23. package/AudioV2/abstractAudio/subNodes/audioAnalyzerSubNode.js.map +1 -1
  24. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.d.ts +13 -3
  25. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.js +16 -0
  26. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.js.map +1 -1
  27. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.d.ts +1 -1
  28. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js +1 -1
  29. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js.map +1 -1
  30. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.d.ts +1 -1
  31. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js +1 -1
  32. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js.map +1 -1
  33. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.d.ts +4 -0
  34. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js +22 -0
  35. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js.map +1 -1
  36. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +1 -1
  37. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +1 -1
  38. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
  39. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.d.ts +6 -0
  40. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js +22 -5
  41. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js.map +1 -1
  42. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +1 -1
  43. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
  44. package/AudioV2/webAudio/webAudioStreamingSound.js +1 -1
  45. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  46. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
  47. package/BakedVertexAnimation/bakedVertexAnimationManager.js +1 -1
  48. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  49. package/BakedVertexAnimation/vertexAnimationBaker.js +1 -1
  50. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -1
  51. package/Behaviors/Cameras/bouncingBehavior.js +1 -1
  52. package/Behaviors/Cameras/bouncingBehavior.js.map +1 -1
  53. package/Behaviors/Cameras/framingBehavior.d.ts +1 -1
  54. package/Behaviors/Cameras/framingBehavior.js +2 -2
  55. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  56. package/Behaviors/Cameras/interpolatingBehavior.d.ts +13 -1
  57. package/Behaviors/Cameras/interpolatingBehavior.js +13 -1
  58. package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
  59. package/Behaviors/Meshes/attachToBoxBehavior.js +1 -1
  60. package/Behaviors/Meshes/attachToBoxBehavior.js.map +1 -1
  61. package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +3 -3
  62. package/Behaviors/Meshes/baseSixDofDragBehavior.js +4 -4
  63. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  64. package/Behaviors/Meshes/followBehavior.js +1 -1
  65. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  66. package/Behaviors/Meshes/handConstraintBehavior.js +2 -2
  67. package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
  68. package/Behaviors/Meshes/multiPointerScaleBehavior.js +1 -1
  69. package/Behaviors/Meshes/multiPointerScaleBehavior.js.map +1 -1
  70. package/Behaviors/Meshes/pointerDragBehavior.d.ts +3 -3
  71. package/Behaviors/Meshes/pointerDragBehavior.js +5 -5
  72. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  73. package/Behaviors/Meshes/sixDofDragBehavior.d.ts +1 -1
  74. package/Behaviors/Meshes/sixDofDragBehavior.js +2 -2
  75. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  76. package/Behaviors/Meshes/surfaceMagnetismBehavior.js +1 -1
  77. package/Behaviors/Meshes/surfaceMagnetismBehavior.js.map +1 -1
  78. package/Bones/boneIKController.d.ts +1 -1
  79. package/Bones/boneIKController.js +1 -1
  80. package/Bones/boneIKController.js.map +1 -1
  81. package/Bones/boneLookController.d.ts +1 -1
  82. package/Bones/boneLookController.js +1 -1
  83. package/Bones/boneLookController.js.map +1 -1
  84. package/Bones/skeleton.d.ts +2 -2
  85. package/Bones/skeleton.functions.d.ts +1 -1
  86. package/Bones/skeleton.functions.js +3 -3
  87. package/Bones/skeleton.functions.js.map +1 -1
  88. package/Bones/skeleton.js +3 -4
  89. package/Bones/skeleton.js.map +1 -1
  90. package/Buffers/buffer.align.pure.js +6 -0
  91. package/Buffers/buffer.align.pure.js.map +1 -1
  92. package/Buffers/buffer.nonFloatVertexBuffers.js +2 -1
  93. package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
  94. package/Buffers/buffer.pure.d.ts +8 -0
  95. package/Buffers/buffer.pure.js +31 -2
  96. package/Buffers/buffer.pure.js.map +1 -1
  97. package/Buffers/bufferUtils.js +17 -5
  98. package/Buffers/bufferUtils.js.map +1 -1
  99. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +1 -1
  100. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  101. package/Cameras/Inputs/BaseCameraPointersInput.js +1 -1
  102. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  103. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +1 -1
  104. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  105. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +2 -2
  106. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  107. package/Cameras/Inputs/flyCameraKeyboardInput.js +2 -2
  108. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  109. package/Cameras/Inputs/flyCameraMouseInput.js +2 -2
  110. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  111. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +1 -1
  112. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  113. package/Cameras/Inputs/followCameraMouseWheelInput.js +1 -1
  114. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  115. package/Cameras/Inputs/freeCameraGamepadInput.js +1 -1
  116. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  117. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +2 -2
  118. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  119. package/Cameras/Inputs/freeCameraMouseInput.js +1 -1
  120. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  121. package/Cameras/Inputs/freeCameraMouseWheelInput.js +1 -1
  122. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  123. package/Cameras/Inputs/freeCameraTouchInput.js +2 -2
  124. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  125. package/Cameras/Inputs/geospatialCameraKeyboardInput.js +1 -1
  126. package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
  127. package/Cameras/Limits/geospatialLimits.d.ts +1 -1
  128. package/Cameras/Limits/geospatialLimits.js +1 -1
  129. package/Cameras/Limits/geospatialLimits.js.map +1 -1
  130. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js +2 -2
  131. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js.map +1 -1
  132. package/Cameras/RigModes/stereoscopicRigMode.d.ts +1 -1
  133. package/Cameras/RigModes/stereoscopicRigMode.js +3 -3
  134. package/Cameras/RigModes/stereoscopicRigMode.js.map +1 -1
  135. package/Cameras/RigModes/vrRigMode.js +2 -2
  136. package/Cameras/RigModes/vrRigMode.js.map +1 -1
  137. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +3 -3
  138. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +5 -5
  139. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  140. package/Cameras/VR/vrCameraMetrics.d.ts +1 -1
  141. package/Cameras/VR/vrCameraMetrics.js +1 -1
  142. package/Cameras/VR/vrCameraMetrics.js.map +1 -1
  143. package/Cameras/cameraInputsManager.d.ts +1 -1
  144. package/Cameras/cameraInputsManager.js +1 -1
  145. package/Cameras/cameraInputsManager.js.map +1 -1
  146. package/Cameras/targetCamera.pure.js +3 -0
  147. package/Cameras/targetCamera.pure.js.map +1 -1
  148. package/Collisions/collider.d.ts +1 -1
  149. package/Collisions/collider.js +1 -1
  150. package/Collisions/collider.js.map +1 -1
  151. package/Collisions/gpuPicker.d.ts +1 -1
  152. package/Collisions/gpuPicker.js +5 -5
  153. package/Collisions/gpuPicker.js.map +1 -1
  154. package/Collisions/meshCollisionData.d.ts +1 -1
  155. package/Collisions/meshCollisionData.js +1 -1
  156. package/Collisions/meshCollisionData.js.map +1 -1
  157. package/Collisions/pickingInfo.d.ts +1 -1
  158. package/Collisions/pickingInfo.js +2 -2
  159. package/Collisions/pickingInfo.js.map +1 -1
  160. package/Compute/computeEffect.d.ts +6 -0
  161. package/Compute/computeEffect.js +3 -0
  162. package/Compute/computeEffect.js.map +1 -1
  163. package/Compute/computeShader.pure.d.ts +4 -0
  164. package/Compute/computeShader.pure.js +1 -0
  165. package/Compute/computeShader.pure.js.map +1 -1
  166. package/Culling/Octrees/octreeBlock.d.ts +1 -1
  167. package/Culling/Octrees/octreeBlock.js +1 -1
  168. package/Culling/Octrees/octreeBlock.js.map +1 -1
  169. package/Culling/boundingBox.d.ts +1 -1
  170. package/Culling/boundingBox.js +1 -1
  171. package/Culling/boundingBox.js.map +1 -1
  172. package/Culling/boundingInfo.d.ts +1 -1
  173. package/Culling/boundingInfo.js +1 -1
  174. package/Culling/boundingInfo.js.map +1 -1
  175. package/Culling/boundingSphere.d.ts +1 -1
  176. package/Culling/boundingSphere.js +1 -1
  177. package/Culling/boundingSphere.js.map +1 -1
  178. package/Culling/ray.core.d.ts +1 -1
  179. package/Culling/ray.core.js +1 -1
  180. package/Culling/ray.core.js.map +1 -1
  181. package/Debug/axesViewer.d.ts +1 -1
  182. package/Debug/axesViewer.js +3 -3
  183. package/Debug/axesViewer.js.map +1 -1
  184. package/Debug/boneAxesViewer.d.ts +1 -1
  185. package/Debug/boneAxesViewer.js +1 -1
  186. package/Debug/boneAxesViewer.js.map +1 -1
  187. package/Debug/directionalLightFrustumViewer.d.ts +1 -1
  188. package/Debug/directionalLightFrustumViewer.js +6 -6
  189. package/Debug/directionalLightFrustumViewer.js.map +1 -1
  190. package/Debug/rayHelper.d.ts +1 -1
  191. package/Debug/rayHelper.js +2 -2
  192. package/Debug/rayHelper.js.map +1 -1
  193. package/Debug/skeletonViewer.d.ts +2 -2
  194. package/Debug/skeletonViewer.js +10 -10
  195. package/Debug/skeletonViewer.js.map +1 -1
  196. package/DeviceInput/internalDeviceSourceManager.d.ts +1 -1
  197. package/DeviceInput/internalDeviceSourceManager.js +0 -1
  198. package/DeviceInput/internalDeviceSourceManager.js.map +1 -1
  199. package/DeviceInput/webDeviceInputSystem.js +1 -1
  200. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  201. package/Engines/Extensions/engine.views.d.ts +1 -1
  202. package/Engines/Extensions/engine.views.js +1 -1
  203. package/Engines/Extensions/engine.views.js.map +1 -1
  204. package/Engines/Native/nativeHelpers.js +4 -1
  205. package/Engines/Native/nativeHelpers.js.map +1 -1
  206. package/Engines/WebGPU/Extensions/engine.computeShader.pure.js +154 -2
  207. package/Engines/WebGPU/Extensions/engine.computeShader.pure.js.map +1 -1
  208. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -1
  209. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +11 -1
  210. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  211. package/Engines/WebGPU/webgpuComputeContext.d.ts +1 -1
  212. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  213. package/Engines/WebGPU/webgpuTintWASM.js +1 -1
  214. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  215. package/Engines/abstractEngine.pure.d.ts +7 -1
  216. package/Engines/abstractEngine.pure.js +34 -4
  217. package/Engines/abstractEngine.pure.js.map +1 -1
  218. package/Engines/constants.d.ts +4 -0
  219. package/Engines/constants.js +4 -0
  220. package/Engines/constants.js.map +1 -1
  221. package/Engines/engine.pure.d.ts +0 -7
  222. package/Engines/engine.pure.js +0 -34
  223. package/Engines/engine.pure.js.map +1 -1
  224. package/Engines/engineFactory.d.ts +2 -2
  225. package/Engines/engineFactory.js +3 -3
  226. package/Engines/engineFactory.js.map +1 -1
  227. package/Engines/thinNativeEngine.pure.js +2 -2
  228. package/Engines/thinNativeEngine.pure.js.map +1 -1
  229. package/Events/pointerEvents.d.ts +1 -1
  230. package/Events/pointerEvents.js +1 -1
  231. package/Events/pointerEvents.js.map +1 -1
  232. package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js +1 -1
  233. package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js.map +1 -1
  234. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +1 -1
  235. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +1 -1
  236. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  237. package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js +1 -1
  238. package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js.map +1 -1
  239. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.d.ts +1 -1
  240. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js +3 -3
  241. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js.map +1 -1
  242. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js +1 -1
  243. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js.map +1 -1
  244. package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +1 -1
  245. package/FlowGraph/CustomTypes/flowGraphMatrix.js +1 -1
  246. package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
  247. package/FlowGraph/flowGraphBlock.d.ts +1 -1
  248. package/FlowGraph/flowGraphBlock.js +1 -1
  249. package/FlowGraph/flowGraphBlock.js.map +1 -1
  250. package/FlowGraph/flowGraphExecutionBlock.d.ts +1 -1
  251. package/FlowGraph/flowGraphExecutionBlock.js +1 -1
  252. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  253. package/FlowGraph/flowGraphMath.d.ts +1 -1
  254. package/FlowGraph/flowGraphMath.js +1 -1
  255. package/FlowGraph/flowGraphMath.js.map +1 -1
  256. package/FlowGraph/flowGraphParser.js +1 -1
  257. package/FlowGraph/flowGraphParser.js.map +1 -1
  258. package/FlowGraph/flowGraphPathConverterComponent.d.ts +1 -1
  259. package/FlowGraph/flowGraphPathConverterComponent.js +2 -2
  260. package/FlowGraph/flowGraphPathConverterComponent.js.map +1 -1
  261. package/FlowGraph/flowGraphValidator.js.map +1 -1
  262. package/FlowGraph/serialization.js +4 -4
  263. package/FlowGraph/serialization.js.map +1 -1
  264. package/FlowGraph/utils.js.map +1 -1
  265. package/FrameGraph/Node/nodeRenderGraph.d.ts +2 -2
  266. package/FrameGraph/Node/nodeRenderGraph.js +7 -7
  267. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  268. package/FrameGraph/Tasks/Layers/baseLayerTask.d.ts +30 -0
  269. package/FrameGraph/Tasks/Layers/baseLayerTask.js +28 -1
  270. package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
  271. package/FrameGraph/Tasks/Misc/computeShaderTask.d.ts +2 -2
  272. package/FrameGraph/Tasks/Misc/computeShaderTask.js +2 -2
  273. package/FrameGraph/Tasks/Misc/computeShaderTask.js.map +1 -1
  274. package/FrameGraph/Tasks/Misc/lightingVolumeTask.d.ts +1 -1
  275. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +2 -2
  276. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
  277. package/FrameGraph/Tasks/PostProcesses/blurTask.d.ts +7 -0
  278. package/FrameGraph/Tasks/PostProcesses/blurTask.js +8 -1
  279. package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -1
  280. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +1 -1
  281. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
  282. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js +1 -1
  283. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js.map +1 -1
  284. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.d.ts +1 -1
  285. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js +1 -1
  286. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js.map +1 -1
  287. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.d.ts +2 -2
  288. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js +3 -3
  289. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js.map +1 -1
  290. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +1 -1
  291. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +2 -2
  292. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
  293. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +6 -0
  294. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +14 -5
  295. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  296. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +1 -1
  297. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +1 -1
  298. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
  299. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.d.ts +1 -1
  300. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js +1 -1
  301. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js.map +1 -1
  302. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.d.ts +1 -1
  303. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js +2 -2
  304. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js.map +1 -1
  305. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.d.ts +1 -1
  306. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js +2 -2
  307. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js.map +1 -1
  308. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +7 -1
  309. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +7 -1
  310. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  311. package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +1 -1
  312. package/FrameGraph/Tasks/Texture/clearTextureTask.js +1 -1
  313. package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
  314. package/FrameGraph/frameGraphRenderContext.js +1 -1
  315. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  316. package/FrameGraph/frameGraphTextureManager.d.ts +1 -1
  317. package/FrameGraph/frameGraphTextureManager.js +1 -1
  318. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  319. package/Gamepads/gamepadManager.js +1 -1
  320. package/Gamepads/gamepadManager.js.map +1 -1
  321. package/Gizmos/axisDragGizmo.d.ts +5 -5
  322. package/Gizmos/axisDragGizmo.js +6 -6
  323. package/Gizmos/axisDragGizmo.js.map +1 -1
  324. package/Gizmos/axisScaleGizmo.d.ts +4 -4
  325. package/Gizmos/axisScaleGizmo.js +6 -6
  326. package/Gizmos/axisScaleGizmo.js.map +1 -1
  327. package/Gizmos/boundingBoxGizmo.d.ts +5 -5
  328. package/Gizmos/boundingBoxGizmo.js +7 -7
  329. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  330. package/Gizmos/cameraGizmo.d.ts +3 -3
  331. package/Gizmos/cameraGizmo.js +7 -7
  332. package/Gizmos/cameraGizmo.js.map +1 -1
  333. package/Gizmos/gizmo.d.ts +2 -2
  334. package/Gizmos/gizmo.js +3 -3
  335. package/Gizmos/gizmo.js.map +1 -1
  336. package/Gizmos/gizmoManager.d.ts +2 -2
  337. package/Gizmos/gizmoManager.js +2 -2
  338. package/Gizmos/gizmoManager.js.map +1 -1
  339. package/Gizmos/lightGizmo.d.ts +4 -4
  340. package/Gizmos/lightGizmo.js +11 -11
  341. package/Gizmos/lightGizmo.js.map +1 -1
  342. package/Gizmos/planeDragGizmo.d.ts +4 -4
  343. package/Gizmos/planeDragGizmo.js +5 -5
  344. package/Gizmos/planeDragGizmo.js.map +1 -1
  345. package/Gizmos/positionGizmo.d.ts +1 -1
  346. package/Gizmos/positionGizmo.js +2 -2
  347. package/Gizmos/positionGizmo.js.map +1 -1
  348. package/Gizmos/rotationGizmo.d.ts +3 -3
  349. package/Gizmos/rotationGizmo.js +3 -3
  350. package/Gizmos/rotationGizmo.js.map +1 -1
  351. package/Gizmos/scaleGizmo.d.ts +2 -2
  352. package/Gizmos/scaleGizmo.js +4 -4
  353. package/Gizmos/scaleGizmo.js.map +1 -1
  354. package/Gizmos/spatialAudioGizmo.d.ts +2 -2
  355. package/Gizmos/spatialAudioGizmo.js +6 -6
  356. package/Gizmos/spatialAudioGizmo.js.map +1 -1
  357. package/Helpers/environmentHelper.d.ts +6 -6
  358. package/Helpers/environmentHelper.js +12 -12
  359. package/Helpers/environmentHelper.js.map +1 -1
  360. package/Helpers/materialConversionHelper.d.ts +1 -1
  361. package/Helpers/materialConversionHelper.js +1 -1
  362. package/Helpers/materialConversionHelper.js.map +1 -1
  363. package/Helpers/photoDome.d.ts +1 -1
  364. package/Helpers/photoDome.js +1 -1
  365. package/Helpers/photoDome.js.map +1 -1
  366. package/Helpers/textureDome.d.ts +4 -4
  367. package/Helpers/textureDome.js +6 -6
  368. package/Helpers/textureDome.js.map +1 -1
  369. package/Helpers/videoDome.d.ts +1 -1
  370. package/Helpers/videoDome.js +2 -2
  371. package/Helpers/videoDome.js.map +1 -1
  372. package/Inputs/scene.inputManager.d.ts +1 -1
  373. package/Inputs/scene.inputManager.js +1 -1
  374. package/Inputs/scene.inputManager.js.map +1 -1
  375. package/Instrumentation/sceneInstrumentation.js +1 -1
  376. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  377. package/Layers/effectLayer.d.ts +1 -1
  378. package/Layers/effectLayer.js +3 -3
  379. package/Layers/effectLayer.js.map +1 -1
  380. package/Layers/layer.d.ts +2 -2
  381. package/Layers/layer.js +4 -4
  382. package/Layers/layer.js.map +1 -1
  383. package/Layers/thinEffectLayer.d.ts +2 -2
  384. package/Layers/thinEffectLayer.js +3 -3
  385. package/Layers/thinEffectLayer.js.map +1 -1
  386. package/Layers/thinGlowLayer.d.ts +1 -1
  387. package/Layers/thinGlowLayer.js +3 -3
  388. package/Layers/thinGlowLayer.js.map +1 -1
  389. package/Layers/thinHighlightLayer.d.ts +1 -1
  390. package/Layers/thinHighlightLayer.js +3 -3
  391. package/Layers/thinHighlightLayer.js.map +1 -1
  392. package/Layers/thinSelectionOutlineLayer.d.ts +1 -1
  393. package/Layers/thinSelectionOutlineLayer.js +3 -3
  394. package/Layers/thinSelectionOutlineLayer.js.map +1 -1
  395. package/Legacy/legacy.js +12 -1
  396. package/Legacy/legacy.js.map +1 -1
  397. package/LensFlares/lensFlare.d.ts +2 -2
  398. package/LensFlares/lensFlare.js +3 -3
  399. package/LensFlares/lensFlare.js.map +1 -1
  400. package/LensFlares/lensFlareSystem.d.ts +1 -1
  401. package/LensFlares/lensFlareSystem.js +6 -6
  402. package/LensFlares/lensFlareSystem.js.map +1 -1
  403. package/Lights/LTC/ltcTextureTool.js +1 -1
  404. package/Lights/LTC/ltcTextureTool.js.map +1 -1
  405. package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -285
  406. package/Lights/Shadows/cascadedShadowGenerator.js +3 -857
  407. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  408. package/Lights/Shadows/cascadedShadowGenerator.pure.d.ts +290 -0
  409. package/Lights/Shadows/cascadedShadowGenerator.pure.js +868 -0
  410. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -0
  411. package/Lights/Shadows/pure.d.ts +1 -0
  412. package/Lights/Shadows/pure.js +1 -0
  413. package/Lights/Shadows/pure.js.map +1 -1
  414. package/Lights/Shadows/shadowGenerator.d.ts +3 -3
  415. package/Lights/Shadows/shadowGenerator.js +7 -7
  416. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  417. package/Lights/areaLight.d.ts +1 -1
  418. package/Lights/areaLight.js +0 -1
  419. package/Lights/areaLight.js.map +1 -1
  420. package/Lights/light.d.ts +2 -2
  421. package/Lights/light.js +2 -2
  422. package/Lights/light.js.map +1 -1
  423. package/Lights/shadowLight.d.ts +1 -1
  424. package/Lights/shadowLight.js +1 -1
  425. package/Lights/shadowLight.js.map +1 -1
  426. package/Loading/sceneLoader.d.ts +2 -2
  427. package/Loading/sceneLoader.js +3 -3
  428. package/Loading/sceneLoader.js.map +1 -1
  429. package/Materials/GreasedLine/greasedLineMaterialDefaults.d.ts +1 -1
  430. package/Materials/GreasedLine/greasedLineMaterialDefaults.js +1 -1
  431. package/Materials/GreasedLine/greasedLineMaterialDefaults.js.map +1 -1
  432. package/Materials/GreasedLine/greasedLineSimpleMaterial.d.ts +3 -3
  433. package/Materials/GreasedLine/greasedLineSimpleMaterial.js +3 -3
  434. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  435. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +6 -6
  436. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
  437. package/Materials/Node/nodeMaterial.pure.d.ts +12 -0
  438. package/Materials/Node/nodeMaterial.pure.js +68 -13
  439. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  440. package/Materials/Node/nodeMaterialDefault.js +14 -14
  441. package/Materials/Node/nodeMaterialDefault.js.map +1 -1
  442. package/Materials/PBR/openpbrMaterial.pure.js +19 -4
  443. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  444. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +40 -2
  445. package/Materials/PBR/pbrAnisotropicConfiguration.js +41 -3
  446. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  447. package/Materials/PBR/pbrBRDFConfiguration.d.ts +5 -1
  448. package/Materials/PBR/pbrBRDFConfiguration.js +5 -1
  449. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  450. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +2 -2
  451. package/Materials/PBR/pbrBaseSimpleMaterial.js +2 -2
  452. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  453. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +42 -2
  454. package/Materials/PBR/pbrClearCoatConfiguration.js +42 -2
  455. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  456. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +38 -1
  457. package/Materials/PBR/pbrIridescenceConfiguration.js +38 -1
  458. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  459. package/Materials/PBR/pbrMaterial.pure.d.ts +6 -0
  460. package/Materials/PBR/pbrMaterial.pure.js +8 -0
  461. package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
  462. package/Materials/PBR/pbrSheenConfiguration.d.ts +41 -2
  463. package/Materials/PBR/pbrSheenConfiguration.js +41 -2
  464. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  465. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +41 -2
  466. package/Materials/PBR/pbrSubSurfaceConfiguration.js +42 -3
  467. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  468. package/Materials/Textures/Filtering/hdrFiltering.js +1 -1
  469. package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
  470. package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +1 -1
  471. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +2 -2
  472. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
  473. package/Materials/Textures/Loaders/EXR/exrLoader.core.d.ts +1 -1
  474. package/Materials/Textures/Loaders/EXR/exrLoader.core.js +5 -109
  475. package/Materials/Textures/Loaders/EXR/exrLoader.core.js.map +1 -1
  476. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js +1 -1
  477. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js.map +1 -1
  478. package/Materials/Textures/Loaders/basisTextureLoader.js +2 -2
  479. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  480. package/Materials/Textures/Loaders/ddsTextureLoader.js +1 -1
  481. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  482. package/Materials/Textures/Loaders/envTextureLoader.js +3 -1
  483. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  484. package/Materials/Textures/Loaders/ktxTextureLoader.js +11 -2
  485. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  486. package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -1
  487. package/Materials/Textures/MultiviewRenderTarget.js +1 -1
  488. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  489. package/Materials/Textures/Packer/packer.d.ts +1 -1
  490. package/Materials/Textures/Packer/packer.js +6 -6
  491. package/Materials/Textures/Packer/packer.js.map +1 -1
  492. package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +2 -2
  493. package/Materials/Textures/Procedurals/customProceduralTexture.js +4 -4
  494. package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
  495. package/Materials/Textures/Procedurals/noiseProceduralTexture.pure.js +17 -5
  496. package/Materials/Textures/Procedurals/noiseProceduralTexture.pure.js.map +1 -1
  497. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +4 -1
  498. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  499. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js +1 -1
  500. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js.map +1 -1
  501. package/Materials/Textures/prePassRenderTarget.d.ts +1 -1
  502. package/Materials/Textures/prePassRenderTarget.js +1 -1
  503. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  504. package/Materials/Textures/rawCubeTexture.d.ts +1 -1
  505. package/Materials/Textures/rawCubeTexture.js +2 -2
  506. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  507. package/Materials/Textures/rawTexture.d.ts +1 -1
  508. package/Materials/Textures/rawTexture.js +1 -1
  509. package/Materials/Textures/rawTexture.js.map +1 -1
  510. package/Materials/Textures/rawTexture2DArray.d.ts +1 -1
  511. package/Materials/Textures/rawTexture2DArray.js +1 -1
  512. package/Materials/Textures/rawTexture2DArray.js.map +1 -1
  513. package/Materials/Textures/rawTexture3D.d.ts +1 -1
  514. package/Materials/Textures/rawTexture3D.js +1 -1
  515. package/Materials/Textures/rawTexture3D.js.map +1 -1
  516. package/Materials/Textures/refractionTexture.d.ts +1 -1
  517. package/Materials/Textures/refractionTexture.js +1 -1
  518. package/Materials/Textures/refractionTexture.js.map +1 -1
  519. package/Materials/Textures/textureMerger.d.ts +1 -1
  520. package/Materials/Textures/textureMerger.js +1 -1
  521. package/Materials/Textures/textureMerger.js.map +1 -1
  522. package/Materials/Textures/textureProcessor.d.ts +1 -1
  523. package/Materials/Textures/textureProcessor.js +2 -2
  524. package/Materials/Textures/textureProcessor.js.map +1 -1
  525. package/Materials/clipPlaneMaterialHelper.js +1 -1
  526. package/Materials/clipPlaneMaterialHelper.js.map +1 -1
  527. package/Materials/effect.pure.d.ts +2 -2
  528. package/Materials/effect.pure.js +12 -6
  529. package/Materials/effect.pure.js.map +1 -1
  530. package/Materials/effectRenderer.pure.js +4 -2
  531. package/Materials/effectRenderer.pure.js.map +1 -1
  532. package/Materials/floatingOriginMatrixOverrides.d.ts +1 -1
  533. package/Materials/floatingOriginMatrixOverrides.js +1 -1
  534. package/Materials/floatingOriginMatrixOverrides.js.map +1 -1
  535. package/Materials/material.detailMapConfiguration.d.ts +39 -1
  536. package/Materials/material.detailMapConfiguration.js +39 -1
  537. package/Materials/material.detailMapConfiguration.js.map +1 -1
  538. package/Materials/materialHelper.geometryrendering.d.ts +1 -1
  539. package/Materials/materialHelper.geometryrendering.js +1 -1
  540. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  541. package/Materials/materialPluginFactoryExport.js +2 -2
  542. package/Materials/materialPluginFactoryExport.js.map +1 -1
  543. package/Materials/meshDebugPluginMaterial.pure.js +15 -13
  544. package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
  545. package/Materials/pushMaterial.d.ts +7 -1
  546. package/Materials/pushMaterial.js +7 -1
  547. package/Materials/pushMaterial.js.map +1 -1
  548. package/Materials/uniformBuffer.js +1 -1
  549. package/Materials/uniformBuffer.js.map +1 -1
  550. package/Maths/math.axis.d.ts +1 -1
  551. package/Maths/math.axis.js +1 -1
  552. package/Maths/math.axis.js.map +1 -1
  553. package/Maths/math.d.ts +2 -2
  554. package/Maths/math.functions.d.ts +1 -1
  555. package/Maths/math.functions.js +1 -1
  556. package/Maths/math.functions.js.map +1 -1
  557. package/Maths/math.isovector.d.ts +1 -1
  558. package/Maths/math.isovector.js +1 -1
  559. package/Maths/math.isovector.js.map +1 -1
  560. package/Maths/math.js +2 -2
  561. package/Maths/math.js.map +1 -1
  562. package/Maths/math.path.d.ts +1 -1
  563. package/Maths/math.path.js +1 -1
  564. package/Maths/math.path.js.map +1 -1
  565. package/Maths/math.plane.d.ts +1 -1
  566. package/Maths/math.plane.js +1 -1
  567. package/Maths/math.plane.js.map +1 -1
  568. package/Maths/math.polar.d.ts +1 -1
  569. package/Maths/math.polar.js +1 -1
  570. package/Maths/math.polar.js.map +1 -1
  571. package/Maths/math.vertexFormat.d.ts +1 -1
  572. package/Maths/math.vertexFormat.js +1 -1
  573. package/Maths/math.vertexFormat.js.map +1 -1
  574. package/Maths/pure.d.ts +1 -0
  575. package/Maths/pure.js +1 -0
  576. package/Maths/pure.js.map +1 -1
  577. package/Meshes/Builders/geodesicBuilder.js +1 -1
  578. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  579. package/Meshes/Builders/goldbergBuilder.d.ts +1 -1
  580. package/Meshes/Builders/goldbergBuilder.js +4 -4
  581. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  582. package/Meshes/Builders/greasedLineBuilder.d.ts +4 -4
  583. package/Meshes/Builders/greasedLineBuilder.js +5 -5
  584. package/Meshes/Builders/greasedLineBuilder.js.map +1 -1
  585. package/Meshes/Builders/textBuilder.d.ts +2 -2
  586. package/Meshes/Builders/textBuilder.js +4 -4
  587. package/Meshes/Builders/textBuilder.js.map +1 -1
  588. package/Meshes/Builders/tiledBoxBuilder.d.ts +3 -3
  589. package/Meshes/Builders/tiledBoxBuilder.js +3 -3
  590. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  591. package/Meshes/Builders/tiledPlaneBuilder.d.ts +1 -1
  592. package/Meshes/Builders/tiledPlaneBuilder.js +1 -1
  593. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  594. package/Meshes/Compression/dracoCodec.js +1 -1
  595. package/Meshes/Compression/dracoCodec.js.map +1 -1
  596. package/Meshes/Compression/dracoDecoder.js +1 -1
  597. package/Meshes/Compression/dracoDecoder.js.map +1 -1
  598. package/Meshes/Compression/dracoEncoder.d.ts +1 -1
  599. package/Meshes/Compression/dracoEncoder.js +2 -2
  600. package/Meshes/Compression/dracoEncoder.js.map +1 -1
  601. package/Meshes/Compression/meshoptCompression.js +1 -1
  602. package/Meshes/Compression/meshoptCompression.js.map +1 -1
  603. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +9 -3
  604. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  605. package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +2 -2
  606. package/Meshes/GreasedLine/greasedLineBaseMesh.js +3 -3
  607. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  608. package/Meshes/Node/nodeGeometry.d.ts +2 -2
  609. package/Meshes/Node/nodeGeometry.js +4 -4
  610. package/Meshes/Node/nodeGeometry.js.map +1 -1
  611. package/Meshes/Node/nodeGeometryBuildState.d.ts +1 -1
  612. package/Meshes/Node/nodeGeometryBuildState.js +1 -1
  613. package/Meshes/Node/nodeGeometryBuildState.js.map +1 -1
  614. package/Meshes/abstractMesh.hotSpot.d.ts +1 -1
  615. package/Meshes/abstractMesh.hotSpot.js +2 -2
  616. package/Meshes/abstractMesh.hotSpot.js.map +1 -1
  617. package/Meshes/abstractMesh.pure.js +2 -13
  618. package/Meshes/abstractMesh.pure.js.map +1 -1
  619. package/Meshes/buffer.d.ts +1 -1
  620. package/Meshes/buffer.js +1 -1
  621. package/Meshes/buffer.js.map +1 -1
  622. package/Meshes/csg.d.ts +3 -3
  623. package/Meshes/csg.js +4 -4
  624. package/Meshes/csg.js.map +1 -1
  625. package/Meshes/csg2.d.ts +1 -1
  626. package/Meshes/csg2.js +4 -4
  627. package/Meshes/csg2.js.map +1 -1
  628. package/Meshes/geodesicMesh.d.ts +1 -1
  629. package/Meshes/geodesicMesh.js +1 -1
  630. package/Meshes/geodesicMesh.js.map +1 -1
  631. package/Meshes/geometry.d.ts +2 -2
  632. package/Meshes/geometry.js +4 -4
  633. package/Meshes/geometry.js.map +1 -1
  634. package/Meshes/lattice.d.ts +1 -1
  635. package/Meshes/lattice.js +1 -1
  636. package/Meshes/lattice.js.map +1 -1
  637. package/Meshes/lattice.material.d.ts +1 -1
  638. package/Meshes/lattice.material.js +1 -1
  639. package/Meshes/lattice.material.js.map +1 -1
  640. package/Meshes/mesh.vertexData.d.ts +2 -2
  641. package/Meshes/mesh.vertexData.js +3 -4
  642. package/Meshes/mesh.vertexData.js.map +1 -1
  643. package/Meshes/mesh.vertexData.subdivide.js +1 -1
  644. package/Meshes/mesh.vertexData.subdivide.js.map +1 -1
  645. package/Meshes/meshBuilder.d.ts +18 -18
  646. package/Meshes/meshBuilder.js +18 -18
  647. package/Meshes/meshBuilder.js.map +1 -1
  648. package/Meshes/meshSimplification.d.ts +1 -1
  649. package/Meshes/meshSimplification.js +4 -4
  650. package/Meshes/meshSimplification.js.map +1 -1
  651. package/Meshes/meshUVSpaceRenderer.d.ts +1 -1
  652. package/Meshes/meshUVSpaceRenderer.js +0 -1
  653. package/Meshes/meshUVSpaceRenderer.js.map +1 -1
  654. package/Meshes/meshUtils.d.ts +1 -1
  655. package/Meshes/meshUtils.js +2 -2
  656. package/Meshes/meshUtils.js.map +1 -1
  657. package/Meshes/polygonMesh.d.ts +2 -2
  658. package/Meshes/polygonMesh.js +3 -3
  659. package/Meshes/polygonMesh.js.map +1 -1
  660. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +2 -2
  661. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  662. package/Misc/HighDynamicRange/panoramaToCubemap.js +1 -1
  663. package/Misc/HighDynamicRange/panoramaToCubemap.js.map +1 -1
  664. package/Misc/PerformanceViewer/performanceViewerCollector.js +1 -1
  665. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  666. package/Misc/areaLightsTextureTools.d.ts +1 -1
  667. package/Misc/areaLightsTextureTools.js +3 -3
  668. package/Misc/areaLightsTextureTools.js.map +1 -1
  669. package/Misc/assetsManager.d.ts +4 -4
  670. package/Misc/assetsManager.js +5 -5
  671. package/Misc/assetsManager.js.map +1 -1
  672. package/Misc/basisWorker.js +1 -1
  673. package/Misc/basisWorker.js.map +1 -1
  674. package/Misc/brdfTextureTools.js +1 -1
  675. package/Misc/brdfTextureTools.js.map +1 -1
  676. package/Misc/copyTextureToTexture.d.ts +1 -1
  677. package/Misc/copyTextureToTexture.js +1 -1
  678. package/Misc/copyTextureToTexture.js.map +1 -1
  679. package/Misc/decorators.serialization.js +2 -2
  680. package/Misc/decorators.serialization.js.map +1 -1
  681. package/Misc/depthReducer.d.ts +2 -2
  682. package/Misc/depthReducer.js +2 -2
  683. package/Misc/depthReducer.js.map +1 -1
  684. package/Misc/gradients.d.ts +1 -1
  685. package/Misc/gradients.js +1 -1
  686. package/Misc/gradients.js.map +1 -1
  687. package/Misc/greasedLineTools.d.ts +1 -1
  688. package/Misc/greasedLineTools.js +3 -3
  689. package/Misc/greasedLineTools.js.map +1 -1
  690. package/Misc/halfFloat.d.ts +17 -0
  691. package/Misc/halfFloat.js +131 -0
  692. package/Misc/halfFloat.js.map +1 -0
  693. package/Misc/khronosTextureContainer2.js +1 -1
  694. package/Misc/khronosTextureContainer2.js.map +1 -1
  695. package/Misc/meshExploder.js +1 -1
  696. package/Misc/meshExploder.js.map +1 -1
  697. package/Misc/pivotTools.js +1 -1
  698. package/Misc/pivotTools.js.map +1 -1
  699. package/Misc/rgbdTextureTools.js +1 -1
  700. package/Misc/rgbdTextureTools.js.map +1 -1
  701. package/Misc/sceneOptimizer.js +1 -1
  702. package/Misc/sceneOptimizer.js.map +1 -1
  703. package/Misc/sceneRecorder.js +7 -7
  704. package/Misc/sceneRecorder.js.map +1 -1
  705. package/Misc/sceneSerializer.js +3 -3
  706. package/Misc/sceneSerializer.js.map +1 -1
  707. package/Misc/snapshotRenderingHelper.js +1 -1
  708. package/Misc/snapshotRenderingHelper.js.map +1 -1
  709. package/Misc/textureTools.d.ts +3 -13
  710. package/Misc/textureTools.js +6 -64
  711. package/Misc/textureTools.js.map +1 -1
  712. package/Misc/thinMinMaxReducer.d.ts +1 -1
  713. package/Misc/thinMinMaxReducer.js +1 -1
  714. package/Misc/thinMinMaxReducer.js.map +1 -1
  715. package/Misc/tools.internals.js +1 -1
  716. package/Misc/tools.internals.js.map +1 -1
  717. package/Misc/tools.pure.js +11 -4
  718. package/Misc/tools.pure.js.map +1 -1
  719. package/Misc/trajectoryClassifier.d.ts +1 -1
  720. package/Misc/trajectoryClassifier.js +1 -1
  721. package/Misc/trajectoryClassifier.js.map +1 -1
  722. package/Misc/videoRecorder.js +1 -1
  723. package/Misc/videoRecorder.js.map +1 -1
  724. package/Misc/virtualJoystick.d.ts +1 -1
  725. package/Misc/virtualJoystick.js +1 -1
  726. package/Misc/virtualJoystick.js.map +1 -1
  727. package/Morph/morphTarget.js +1 -1
  728. package/Morph/morphTarget.js.map +1 -1
  729. package/Navigation/Plugins/recastJSPlugin.d.ts +1 -1
  730. package/Navigation/Plugins/recastJSPlugin.js +2 -2
  731. package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
  732. package/Particles/EmitterTypes/boxParticleEmitter.d.ts +1 -1
  733. package/Particles/EmitterTypes/boxParticleEmitter.js +1 -1
  734. package/Particles/EmitterTypes/boxParticleEmitter.js.map +1 -1
  735. package/Particles/EmitterTypes/coneParticleEmitter.d.ts +1 -1
  736. package/Particles/EmitterTypes/coneParticleEmitter.js +1 -1
  737. package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
  738. package/Particles/EmitterTypes/customParticleEmitter.d.ts +1 -1
  739. package/Particles/EmitterTypes/customParticleEmitter.js +1 -1
  740. package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
  741. package/Particles/EmitterTypes/cylinderParticleEmitter.d.ts +1 -1
  742. package/Particles/EmitterTypes/cylinderParticleEmitter.js +1 -1
  743. package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
  744. package/Particles/EmitterTypes/hemisphericParticleEmitter.d.ts +1 -1
  745. package/Particles/EmitterTypes/hemisphericParticleEmitter.js +1 -1
  746. package/Particles/EmitterTypes/hemisphericParticleEmitter.js.map +1 -1
  747. package/Particles/EmitterTypes/meshParticleEmitter.d.ts +1 -1
  748. package/Particles/EmitterTypes/meshParticleEmitter.js +2 -2
  749. package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
  750. package/Particles/EmitterTypes/pointParticleEmitter.d.ts +1 -1
  751. package/Particles/EmitterTypes/pointParticleEmitter.js +1 -1
  752. package/Particles/EmitterTypes/pointParticleEmitter.js.map +1 -1
  753. package/Particles/EmitterTypes/sphereParticleEmitter.d.ts +1 -1
  754. package/Particles/EmitterTypes/sphereParticleEmitter.js +1 -1
  755. package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
  756. package/Particles/Node/nodeParticleBuildState.d.ts +4 -4
  757. package/Particles/Node/nodeParticleBuildState.js +2 -2
  758. package/Particles/Node/nodeParticleBuildState.js.map +1 -1
  759. package/Particles/Node/nodeParticleSystemSet.d.ts +2 -2
  760. package/Particles/Node/nodeParticleSystemSet.helper.js +31 -31
  761. package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
  762. package/Particles/Node/nodeParticleSystemSet.js +8 -8
  763. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  764. package/Particles/attractor.d.ts +1 -1
  765. package/Particles/attractor.js +1 -1
  766. package/Particles/attractor.js.map +1 -1
  767. package/Particles/computeShaderParticleSystem.pure.js +5 -1
  768. package/Particles/computeShaderParticleSystem.pure.js.map +1 -1
  769. package/Particles/flowMap.d.ts +7 -1
  770. package/Particles/flowMap.js +7 -1
  771. package/Particles/flowMap.js.map +1 -1
  772. package/Particles/gpuParticleSystem.pure.d.ts +1 -0
  773. package/Particles/gpuParticleSystem.pure.js +17 -1
  774. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  775. package/Particles/particle.d.ts +2 -2
  776. package/Particles/particle.js +2 -2
  777. package/Particles/particle.js.map +1 -1
  778. package/Particles/particleHelper.js +5 -5
  779. package/Particles/particleHelper.js.map +1 -1
  780. package/Particles/particleSystem.functions.d.ts +1 -1
  781. package/Particles/particleSystem.functions.js +1 -1
  782. package/Particles/particleSystem.functions.js.map +1 -1
  783. package/Particles/particleSystemSet.d.ts +1 -1
  784. package/Particles/particleSystemSet.js +5 -5
  785. package/Particles/particleSystemSet.js.map +1 -1
  786. package/Particles/pointsCloudSystem.d.ts +1 -1
  787. package/Particles/pointsCloudSystem.js +6 -6
  788. package/Particles/pointsCloudSystem.js.map +1 -1
  789. package/Particles/solidParticle.d.ts +2 -2
  790. package/Particles/solidParticle.js +3 -3
  791. package/Particles/solidParticle.js.map +1 -1
  792. package/Particles/solidParticleSystem.d.ts +4 -4
  793. package/Particles/solidParticleSystem.js +7 -7
  794. package/Particles/solidParticleSystem.js.map +1 -1
  795. package/Particles/subEmitter.js +1 -1
  796. package/Particles/subEmitter.js.map +1 -1
  797. package/Particles/thinParticleSystem.function.js +2 -2
  798. package/Particles/thinParticleSystem.function.js.map +1 -1
  799. package/Physics/Plugins/cannonJSPlugin.d.ts +1 -1
  800. package/Physics/Plugins/cannonJSPlugin.js +1 -1
  801. package/Physics/Plugins/cannonJSPlugin.js.map +1 -1
  802. package/Physics/castingResult.d.ts +1 -1
  803. package/Physics/castingResult.js +1 -1
  804. package/Physics/castingResult.js.map +1 -1
  805. package/Physics/physicsHelper.d.ts +1 -1
  806. package/Physics/physicsHelper.js +4 -4
  807. package/Physics/physicsHelper.js.map +1 -1
  808. package/Physics/physicsImpostor.d.ts +1 -1
  809. package/Physics/physicsImpostor.js +1 -1
  810. package/Physics/physicsImpostor.js.map +1 -1
  811. package/Physics/physicsRaycastResult.d.ts +1 -1
  812. package/Physics/physicsRaycastResult.js +1 -1
  813. package/Physics/physicsRaycastResult.js.map +1 -1
  814. package/Physics/v1/Plugins/ammoJSPlugin.d.ts +2 -2
  815. package/Physics/v1/Plugins/ammoJSPlugin.js +5 -5
  816. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  817. package/Physics/v1/Plugins/oimoJSPlugin.d.ts +2 -2
  818. package/Physics/v1/Plugins/oimoJSPlugin.js +2 -2
  819. package/Physics/v1/Plugins/oimoJSPlugin.js.map +1 -1
  820. package/Physics/v1/physicsEngine.d.ts +1 -1
  821. package/Physics/v1/physicsEngine.js +1 -1
  822. package/Physics/v1/physicsEngine.js.map +1 -1
  823. package/Physics/v2/Plugins/havokPlugin.d.ts +14 -2
  824. package/Physics/v2/Plugins/havokPlugin.js +45 -7
  825. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  826. package/Physics/v2/characterController.d.ts +2 -2
  827. package/Physics/v2/characterController.js +2 -2
  828. package/Physics/v2/characterController.js.map +1 -1
  829. package/Physics/v2/physicsAggregate.d.ts +1 -1
  830. package/Physics/v2/physicsAggregate.js +1 -1
  831. package/Physics/v2/physicsAggregate.js.map +1 -1
  832. package/Physics/v2/physicsBody.d.ts +1 -1
  833. package/Physics/v2/physicsBody.js +1 -1
  834. package/Physics/v2/physicsBody.js.map +1 -1
  835. package/Physics/v2/physicsEngine.d.ts +1 -1
  836. package/Physics/v2/physicsEngine.js +1 -1
  837. package/Physics/v2/physicsEngine.js.map +1 -1
  838. package/Physics/v2/physicsShape.d.ts +1 -1
  839. package/Physics/v2/physicsShape.js +1 -1
  840. package/Physics/v2/physicsShape.js.map +1 -1
  841. package/Physics/v2/ragdoll.d.ts +2 -2
  842. package/Physics/v2/ragdoll.js +2 -2
  843. package/Physics/v2/ragdoll.js.map +1 -1
  844. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.d.ts +1 -0
  845. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +8 -6
  846. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
  847. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js +1 -1
  848. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js.map +1 -1
  849. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
  850. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
  851. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +3 -2
  852. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  853. package/PostProcesses/bloomEffect.d.ts +1 -1
  854. package/PostProcesses/bloomEffect.js +4 -4
  855. package/PostProcesses/bloomEffect.js.map +1 -1
  856. package/PostProcesses/depthOfFieldEffect.d.ts +1 -1
  857. package/PostProcesses/depthOfFieldEffect.js +3 -3
  858. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  859. package/PostProcesses/depthOfFieldMergePostProcess.d.ts +1 -1
  860. package/PostProcesses/depthOfFieldMergePostProcess.js +1 -1
  861. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  862. package/PostProcesses/highlightsPostProcess.d.ts +1 -1
  863. package/PostProcesses/highlightsPostProcess.js +1 -1
  864. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  865. package/PostProcesses/imageProcessingPostProcess.d.ts +1 -1
  866. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  867. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  868. package/PostProcesses/postProcessManager.d.ts +3 -0
  869. package/PostProcesses/postProcessManager.js +4 -1
  870. package/PostProcesses/postProcessManager.js.map +1 -1
  871. package/PostProcesses/subSurfaceScatteringPostProcess.pure.d.ts +1 -0
  872. package/PostProcesses/subSurfaceScatteringPostProcess.pure.js +10 -0
  873. package/PostProcesses/subSurfaceScatteringPostProcess.pure.js.map +1 -1
  874. package/PostProcesses/thinAnaglyphPostProcess.d.ts +1 -1
  875. package/PostProcesses/thinAnaglyphPostProcess.js +1 -1
  876. package/PostProcesses/thinAnaglyphPostProcess.js.map +1 -1
  877. package/PostProcesses/thinBlackAndWhitePostProcess.d.ts +1 -1
  878. package/PostProcesses/thinBlackAndWhitePostProcess.js +1 -1
  879. package/PostProcesses/thinBlackAndWhitePostProcess.js.map +1 -1
  880. package/PostProcesses/thinBloomEffect.js +1 -1
  881. package/PostProcesses/thinBloomEffect.js.map +1 -1
  882. package/PostProcesses/thinBloomMergePostProcess.d.ts +1 -1
  883. package/PostProcesses/thinBloomMergePostProcess.js +1 -1
  884. package/PostProcesses/thinBloomMergePostProcess.js.map +1 -1
  885. package/PostProcesses/thinBlurPostProcess.d.ts +1 -1
  886. package/PostProcesses/thinBlurPostProcess.js +1 -1
  887. package/PostProcesses/thinBlurPostProcess.js.map +1 -1
  888. package/PostProcesses/thinChromaticAberrationPostProcess.d.ts +2 -2
  889. package/PostProcesses/thinChromaticAberrationPostProcess.js +2 -2
  890. package/PostProcesses/thinChromaticAberrationPostProcess.js.map +1 -1
  891. package/PostProcesses/thinCircleOfConfusionPostProcess.d.ts +1 -1
  892. package/PostProcesses/thinCircleOfConfusionPostProcess.js +1 -1
  893. package/PostProcesses/thinCircleOfConfusionPostProcess.js.map +1 -1
  894. package/PostProcesses/thinColorCorrectionPostProcess.d.ts +1 -1
  895. package/PostProcesses/thinColorCorrectionPostProcess.js +2 -2
  896. package/PostProcesses/thinColorCorrectionPostProcess.js.map +1 -1
  897. package/PostProcesses/thinConvolutionPostProcess.d.ts +1 -1
  898. package/PostProcesses/thinConvolutionPostProcess.js +1 -1
  899. package/PostProcesses/thinConvolutionPostProcess.js.map +1 -1
  900. package/PostProcesses/thinCustomPostProcess.d.ts +1 -1
  901. package/PostProcesses/thinCustomPostProcess.js +1 -1
  902. package/PostProcesses/thinCustomPostProcess.js.map +1 -1
  903. package/PostProcesses/thinDepthOfFieldEffect.d.ts +3 -0
  904. package/PostProcesses/thinDepthOfFieldEffect.js +4 -1
  905. package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -1
  906. package/PostProcesses/thinDepthOfFieldMergePostProcess.d.ts +1 -1
  907. package/PostProcesses/thinDepthOfFieldMergePostProcess.js +1 -1
  908. package/PostProcesses/thinDepthOfFieldMergePostProcess.js.map +1 -1
  909. package/PostProcesses/thinExtractHighlightsPostProcess.d.ts +1 -1
  910. package/PostProcesses/thinExtractHighlightsPostProcess.js +1 -1
  911. package/PostProcesses/thinExtractHighlightsPostProcess.js.map +1 -1
  912. package/PostProcesses/thinFXAAPostProcess.d.ts +2 -2
  913. package/PostProcesses/thinFXAAPostProcess.js +2 -2
  914. package/PostProcesses/thinFXAAPostProcess.js.map +1 -1
  915. package/PostProcesses/thinFilterPostProcess.d.ts +2 -2
  916. package/PostProcesses/thinFilterPostProcess.js +2 -2
  917. package/PostProcesses/thinFilterPostProcess.js.map +1 -1
  918. package/PostProcesses/thinGrainPostProcess.d.ts +1 -1
  919. package/PostProcesses/thinGrainPostProcess.js +1 -1
  920. package/PostProcesses/thinGrainPostProcess.js.map +1 -1
  921. package/PostProcesses/thinImageProcessingPostProcess.d.ts +2 -2
  922. package/PostProcesses/thinImageProcessingPostProcess.js +2 -2
  923. package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -1
  924. package/PostProcesses/thinMotionBlurPostProcess.d.ts +1 -1
  925. package/PostProcesses/thinMotionBlurPostProcess.js +2 -2
  926. package/PostProcesses/thinMotionBlurPostProcess.js.map +1 -1
  927. package/PostProcesses/thinPassPostProcess.d.ts +1 -1
  928. package/PostProcesses/thinPassPostProcess.js +1 -1
  929. package/PostProcesses/thinPassPostProcess.js.map +1 -1
  930. package/PostProcesses/thinSSAO2BlurPostProcess.d.ts +1 -1
  931. package/PostProcesses/thinSSAO2BlurPostProcess.js +1 -1
  932. package/PostProcesses/thinSSAO2BlurPostProcess.js.map +1 -1
  933. package/PostProcesses/thinSSAO2CombinePostProcess.d.ts +1 -1
  934. package/PostProcesses/thinSSAO2CombinePostProcess.js +2 -2
  935. package/PostProcesses/thinSSAO2CombinePostProcess.js.map +1 -1
  936. package/PostProcesses/thinSSAO2PostProcess.d.ts +7 -2
  937. package/PostProcesses/thinSSAO2PostProcess.js +36 -4
  938. package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
  939. package/PostProcesses/thinSSRBlurCombinerPostProcess.d.ts +1 -1
  940. package/PostProcesses/thinSSRBlurCombinerPostProcess.js +2 -2
  941. package/PostProcesses/thinSSRBlurCombinerPostProcess.js.map +1 -1
  942. package/PostProcesses/thinSSRBlurPostProcess.d.ts +2 -2
  943. package/PostProcesses/thinSSRBlurPostProcess.js +2 -2
  944. package/PostProcesses/thinSSRBlurPostProcess.js.map +1 -1
  945. package/PostProcesses/thinSSRPostProcess.d.ts +1 -1
  946. package/PostProcesses/thinSSRPostProcess.js +2 -2
  947. package/PostProcesses/thinSSRPostProcess.js.map +1 -1
  948. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.d.ts +1 -1
  949. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js +1 -1
  950. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js.map +1 -1
  951. package/PostProcesses/thinSharpenPostProcess.d.ts +1 -1
  952. package/PostProcesses/thinSharpenPostProcess.js +1 -1
  953. package/PostProcesses/thinSharpenPostProcess.js.map +1 -1
  954. package/PostProcesses/thinTAAPostProcess.d.ts +3 -3
  955. package/PostProcesses/thinTAAPostProcess.js +4 -4
  956. package/PostProcesses/thinTAAPostProcess.js.map +1 -1
  957. package/PostProcesses/thinTonemapPostProcess.d.ts +1 -1
  958. package/PostProcesses/thinTonemapPostProcess.js +1 -1
  959. package/PostProcesses/thinTonemapPostProcess.js.map +1 -1
  960. package/PostProcesses/vrDistortionCorrectionPostProcess.d.ts +1 -1
  961. package/PostProcesses/vrDistortionCorrectionPostProcess.js +3 -3
  962. package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
  963. package/Rendering/IBLShadows/iblShadowsAccumulationPass.d.ts +2 -2
  964. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js +4 -4
  965. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js.map +1 -1
  966. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.d.ts +2 -2
  967. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js +4 -4
  968. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js.map +1 -1
  969. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +3 -3
  970. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +4 -4
  971. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  972. package/Rendering/depthPeelingRenderer.d.ts +1 -1
  973. package/Rendering/depthPeelingRenderer.js +2 -2
  974. package/Rendering/depthPeelingRenderer.js.map +1 -1
  975. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +1 -1
  976. package/Rendering/fluidRenderer/fluidRenderingObject.js +1 -1
  977. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  978. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +1 -1
  979. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +2 -2
  980. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  981. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +3 -3
  982. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -3
  983. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  984. package/Rendering/fluidRenderer/fluidRenderingTextures.d.ts +2 -2
  985. package/Rendering/fluidRenderer/fluidRenderingTextures.js +3 -3
  986. package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
  987. package/Rendering/iblCdfGenerator.d.ts +3 -3
  988. package/Rendering/iblCdfGenerator.js +5 -5
  989. package/Rendering/iblCdfGenerator.js.map +1 -1
  990. package/Rendering/renderingGroup.js +1 -1
  991. package/Rendering/renderingGroup.js.map +1 -1
  992. package/Rendering/subSurfaceConfiguration.d.ts +2 -2
  993. package/Rendering/subSurfaceConfiguration.js +2 -2
  994. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  995. package/Rendering/utilityLayerRenderer.d.ts +2 -2
  996. package/Rendering/utilityLayerRenderer.js +4 -4
  997. package/Rendering/utilityLayerRenderer.js.map +1 -1
  998. package/Shaders/ssao2.fragment.js +10 -2
  999. package/Shaders/ssao2.fragment.js.map +1 -1
  1000. package/ShadersWGSL/gpuRenderParticles.fragment.d.ts +5 -0
  1001. package/ShadersWGSL/gpuRenderParticles.fragment.js +50 -0
  1002. package/ShadersWGSL/gpuRenderParticles.fragment.js.map +1 -0
  1003. package/ShadersWGSL/gpuRenderParticles.vertex.d.ts +5 -0
  1004. package/ShadersWGSL/gpuRenderParticles.vertex.js +120 -0
  1005. package/ShadersWGSL/gpuRenderParticles.vertex.js.map +1 -0
  1006. package/ShadersWGSL/noise.fragment.d.ts +5 -0
  1007. package/ShadersWGSL/noise.fragment.js +18 -0
  1008. package/ShadersWGSL/noise.fragment.js.map +1 -0
  1009. package/ShadersWGSL/ssao2.fragment.js +10 -2
  1010. package/ShadersWGSL/ssao2.fragment.js.map +1 -1
  1011. package/SmartAssets/smartAssetSerializer.js +1 -1
  1012. package/SmartAssets/smartAssetSerializer.js.map +1 -1
  1013. package/Sprites/sprite.d.ts +2 -2
  1014. package/Sprites/sprite.js +2 -2
  1015. package/Sprites/sprite.js.map +1 -1
  1016. package/Sprites/spriteManager.d.ts +2 -2
  1017. package/Sprites/spriteManager.js +4 -5
  1018. package/Sprites/spriteManager.js.map +1 -1
  1019. package/Sprites/spritePackedManager.js +1 -1
  1020. package/Sprites/spritePackedManager.js.map +1 -1
  1021. package/Sprites/spriteRenderer.js +2 -2
  1022. package/Sprites/spriteRenderer.js.map +1 -1
  1023. package/XR/features/WebXRHitTestLegacy.d.ts +1 -1
  1024. package/XR/features/WebXRHitTestLegacy.js +2 -2
  1025. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  1026. package/XR/motionController/webXRAbstractMotionController.js +2 -2
  1027. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  1028. package/XR/motionController/webXRGenericMotionController.js +2 -2
  1029. package/XR/motionController/webXRGenericMotionController.js.map +1 -1
  1030. package/XR/motionController/webXRProfiledMotionController.js +4 -4
  1031. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  1032. package/XR/webXRCamera.d.ts +3 -3
  1033. package/XR/webXRCamera.js +4 -4
  1034. package/XR/webXRCamera.js.map +1 -1
  1035. package/XR/webXRDefaultExperience.d.ts +4 -4
  1036. package/XR/webXRDefaultExperience.js +4 -4
  1037. package/XR/webXRDefaultExperience.js.map +1 -1
  1038. package/XR/webXREnterExitUI.js +1 -1
  1039. package/XR/webXREnterExitUI.js.map +1 -1
  1040. package/XR/webXRExperienceHelper.js +2 -2
  1041. package/XR/webXRExperienceHelper.js.map +1 -1
  1042. package/XR/webXRFeaturesManager.d.ts +47 -0
  1043. package/XR/webXRFeaturesManager.js +1 -1
  1044. package/XR/webXRFeaturesManager.js.map +1 -1
  1045. package/XR/webXRInput.js +1 -1
  1046. package/XR/webXRInput.js.map +1 -1
  1047. package/XR/webXRInputSource.js +4 -4
  1048. package/XR/webXRInputSource.js.map +1 -1
  1049. package/XR/webXRManagedOutputCanvas.js +1 -1
  1050. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  1051. package/XR/webXRRenderTargetTextureProvider.d.ts +1 -1
  1052. package/XR/webXRRenderTargetTextureProvider.js +1 -1
  1053. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  1054. package/assetContainer.d.ts +4 -4
  1055. package/assetContainer.js +6 -6
  1056. package/assetContainer.js.map +1 -1
  1057. package/node.d.ts +1 -1
  1058. package/node.js +6 -2
  1059. package/node.js.map +1 -1
  1060. package/package.json +684 -3
@@ -1 +1 @@
1
- {"version":3,"file":"thinScreenSpaceCurvaturePostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinScreenSpaceCurvaturePostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,mCAAoC,SAAQ,aAAa;IAgB/C,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,OAAsC;QACrG,KAAK,CAAC;YACF,GAAG,OAAO;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,iBAAkB;YAChD,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,mCAAmC,CAAC,WAAW;YAC/D,QAAQ,EAAE,mCAAmC,CAAC,QAAQ;YACtD,QAAQ,EAAE,mCAAmC,CAAC,QAAQ;SACzD,CAAC,CAAC;QAGP;;WAEG;QACI,UAAK,GAAW,CAAC,CAAC;QAEzB;;WAEG;QACI,WAAM,GAAW,CAAC,CAAC;IAV1B,CAAC;IAYe,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC;QAEzC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAClF,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACzF,CAAC;;AA5DD;;GAEG;AACoB,+CAAW,GAAG,sBAAsB,AAAzB,CAA0B;AAE5D;;GAEG;AACoB,4CAAQ,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,AAA1C,CAA2C;AAE1E;;GAEG;AACoB,4CAAQ,GAAG,CAAC,eAAe,CAAC,AAApB,CAAqB","sourcesContent":["import { type Nullable, type AbstractEngine, type EffectWrapperCreationOptions } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n/**\r\n * Post process used to apply a screen space curvature post process\r\n */\r\nexport class ThinScreenSpaceCurvaturePostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"screenSpaceCurvature\";\r\n\r\n /**\r\n * The list of uniforms used by the effect\r\n */\r\n public static readonly Uniforms = [\"curvature_ridge\", \"curvature_valley\"];\r\n\r\n /**\r\n * The list of samplers used by the effect\r\n */\r\n public static readonly Samplers = [\"normalSampler\"];\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(import(\"../ShadersWGSL/screenSpaceCurvature.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/screenSpaceCurvature.fragment\"));\r\n }\r\n }\r\n\r\n /**\r\n * Constructs a new screen space curvature post process\r\n * @param name Name of the effect\r\n * @param engine Engine to use to render the effect. If not provided, the last created engine will be used\r\n * @param options Options to configure the effect\r\n */\r\n constructor(name: string, engine: Nullable<AbstractEngine> = null, options?: EffectWrapperCreationOptions) {\r\n super({\r\n ...options,\r\n name,\r\n engine: engine || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinScreenSpaceCurvaturePostProcess.FragmentUrl,\r\n uniforms: ThinScreenSpaceCurvaturePostProcess.Uniforms,\r\n samplers: ThinScreenSpaceCurvaturePostProcess.Samplers,\r\n });\r\n }\r\n\r\n /**\r\n * Defines how much ridge the curvature effect displays.\r\n */\r\n public ridge: number = 1;\r\n\r\n /**\r\n * Defines how much valley the curvature effect displays.\r\n */\r\n public valley: number = 1;\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n\r\n const effect = this._drawWrapper.effect!;\r\n\r\n effect.setFloat(\"curvature_ridge\", 0.5 / Math.max(this.ridge * this.ridge, 1e-4));\r\n effect.setFloat(\"curvature_valley\", 0.7 / Math.max(this.valley * this.valley, 1e-4));\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"thinScreenSpaceCurvaturePostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinScreenSpaceCurvaturePostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,mCAAoC,SAAQ,aAAa;IAgB/C,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,OAAsC;QACrG,KAAK,CAAC;YACF,GAAG,OAAO;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,iBAAkB;YAChD,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,mCAAmC,CAAC,WAAW;YAC/D,QAAQ,EAAE,mCAAmC,CAAC,QAAQ;YACtD,QAAQ,EAAE,mCAAmC,CAAC,QAAQ;SACzD,CAAC,CAAC;QAGP;;WAEG;QACI,UAAK,GAAW,CAAC,CAAC;QAEzB;;WAEG;QACI,WAAM,GAAW,CAAC,CAAC;IAV1B,CAAC;IAYe,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC;QAEzC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAClF,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACzF,CAAC;;AA5DD;;GAEG;AACoB,+CAAW,GAAG,sBAAsB,AAAzB,CAA0B;AAE5D;;GAEG;AACoB,4CAAQ,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,AAA1C,CAA2C;AAE1E;;GAEG;AACoB,4CAAQ,GAAG,CAAC,eAAe,CAAC,AAApB,CAAqB","sourcesContent":["import { type Nullable, type AbstractEngine, type EffectWrapperCreationOptions } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer.pure\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n/**\r\n * Post process used to apply a screen space curvature post process\r\n */\r\nexport class ThinScreenSpaceCurvaturePostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"screenSpaceCurvature\";\r\n\r\n /**\r\n * The list of uniforms used by the effect\r\n */\r\n public static readonly Uniforms = [\"curvature_ridge\", \"curvature_valley\"];\r\n\r\n /**\r\n * The list of samplers used by the effect\r\n */\r\n public static readonly Samplers = [\"normalSampler\"];\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(import(\"../ShadersWGSL/screenSpaceCurvature.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/screenSpaceCurvature.fragment\"));\r\n }\r\n }\r\n\r\n /**\r\n * Constructs a new screen space curvature post process\r\n * @param name Name of the effect\r\n * @param engine Engine to use to render the effect. If not provided, the last created engine will be used\r\n * @param options Options to configure the effect\r\n */\r\n constructor(name: string, engine: Nullable<AbstractEngine> = null, options?: EffectWrapperCreationOptions) {\r\n super({\r\n ...options,\r\n name,\r\n engine: engine || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinScreenSpaceCurvaturePostProcess.FragmentUrl,\r\n uniforms: ThinScreenSpaceCurvaturePostProcess.Uniforms,\r\n samplers: ThinScreenSpaceCurvaturePostProcess.Samplers,\r\n });\r\n }\r\n\r\n /**\r\n * Defines how much ridge the curvature effect displays.\r\n */\r\n public ridge: number = 1;\r\n\r\n /**\r\n * Defines how much valley the curvature effect displays.\r\n */\r\n public valley: number = 1;\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n\r\n const effect = this._drawWrapper.effect!;\r\n\r\n effect.setFloat(\"curvature_ridge\", 0.5 / Math.max(this.ridge * this.ridge, 1e-4));\r\n effect.setFloat(\"curvature_valley\", 0.7 / Math.max(this.valley * this.valley, 1e-4));\r\n }\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
1
  import { type Nullable, type AbstractEngine, type EffectWrapperCreationOptions } from "../index.js";
2
- import { EffectWrapper } from "../Materials/effectRenderer.js";
2
+ import { EffectWrapper } from "../Materials/effectRenderer.pure.js";
3
3
  /**
4
4
  * Post process used to apply a sharpen effect
5
5
  */
@@ -1,4 +1,4 @@
1
- import { EffectWrapper } from "../Materials/effectRenderer.js";
1
+ import { EffectWrapper } from "../Materials/effectRenderer.pure.js";
2
2
  import { EngineStore } from "../Engines/engineStore.js";
3
3
  /**
4
4
  * Post process used to apply a sharpen effect
@@ -1 +1 @@
1
- {"version":3,"file":"thinSharpenPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinSharpenPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IAWlC,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,OAAsC;QACrG,KAAK,CAAC;YACF,GAAG,OAAO;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,iBAAkB;YAChD,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,sBAAsB,CAAC,WAAW;YAClD,QAAQ,EAAE,sBAAsB,CAAC,QAAQ;SAC5C,CAAC,CAAC;QAGP;;WAEG;QACI,gBAAW,GAAW,GAAG,CAAC;QACjC;;WAEG;QACI,eAAU,GAAW,GAAG,CAAC;QAEhC;;WAEG;QACI,iBAAY,GAAW,CAAC,CAAC;QAEhC;;WAEG;QACI,kBAAa,GAAW,CAAC,CAAC;IAnBjC,CAAC;IAqBe,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC;QAEzC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5E,CAAC;;AA/DD;;GAEG;AACoB,kCAAW,GAAG,SAAS,AAAZ,CAAa;AAE/C;;GAEG;AACoB,+BAAQ,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC,AAArC,CAAsC","sourcesContent":["import { type Nullable, type AbstractEngine, type EffectWrapperCreationOptions } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n/**\r\n * Post process used to apply a sharpen effect\r\n */\r\nexport class ThinSharpenPostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"sharpen\";\r\n\r\n /**\r\n * The list of uniforms used by the effect\r\n */\r\n public static readonly Uniforms = [\"sharpnessAmounts\", \"screenSize\"];\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(import(\"../ShadersWGSL/sharpen.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/sharpen.fragment\"));\r\n }\r\n }\r\n\r\n /**\r\n * Constructs a new sharpen post process\r\n * @param name Name of the effect\r\n * @param engine Engine to use to render the effect. If not provided, the last created engine will be used\r\n * @param options Options to configure the effect\r\n */\r\n constructor(name: string, engine: Nullable<AbstractEngine> = null, options?: EffectWrapperCreationOptions) {\r\n super({\r\n ...options,\r\n name,\r\n engine: engine || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinSharpenPostProcess.FragmentUrl,\r\n uniforms: ThinSharpenPostProcess.Uniforms,\r\n });\r\n }\r\n\r\n /**\r\n * How much of the original color should be applied. Setting this to 0 will display edge detection. (default: 1)\r\n */\r\n public colorAmount: number = 1.0;\r\n /**\r\n * How much sharpness should be applied (default: 0.3)\r\n */\r\n public edgeAmount: number = 0.3;\r\n\r\n /**\r\n * The width of the source texture\r\n */\r\n public textureWidth: number = 0;\r\n\r\n /**\r\n * The height of the source texture\r\n */\r\n public textureHeight: number = 0;\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n\r\n const effect = this._drawWrapper.effect!;\r\n\r\n effect.setFloat2(\"screenSize\", this.textureWidth, this.textureHeight);\r\n effect.setFloat2(\"sharpnessAmounts\", this.edgeAmount, this.colorAmount);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"thinSharpenPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinSharpenPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IAWlC,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,OAAsC;QACrG,KAAK,CAAC;YACF,GAAG,OAAO;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,iBAAkB;YAChD,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,sBAAsB,CAAC,WAAW;YAClD,QAAQ,EAAE,sBAAsB,CAAC,QAAQ;SAC5C,CAAC,CAAC;QAGP;;WAEG;QACI,gBAAW,GAAW,GAAG,CAAC;QACjC;;WAEG;QACI,eAAU,GAAW,GAAG,CAAC;QAEhC;;WAEG;QACI,iBAAY,GAAW,CAAC,CAAC;QAEhC;;WAEG;QACI,kBAAa,GAAW,CAAC,CAAC;IAnBjC,CAAC;IAqBe,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC;QAEzC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5E,CAAC;;AA/DD;;GAEG;AACoB,kCAAW,GAAG,SAAS,AAAZ,CAAa;AAE/C;;GAEG;AACoB,+BAAQ,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC,AAArC,CAAsC","sourcesContent":["import { type Nullable, type AbstractEngine, type EffectWrapperCreationOptions } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer.pure\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n/**\r\n * Post process used to apply a sharpen effect\r\n */\r\nexport class ThinSharpenPostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"sharpen\";\r\n\r\n /**\r\n * The list of uniforms used by the effect\r\n */\r\n public static readonly Uniforms = [\"sharpnessAmounts\", \"screenSize\"];\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(import(\"../ShadersWGSL/sharpen.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/sharpen.fragment\"));\r\n }\r\n }\r\n\r\n /**\r\n * Constructs a new sharpen post process\r\n * @param name Name of the effect\r\n * @param engine Engine to use to render the effect. If not provided, the last created engine will be used\r\n * @param options Options to configure the effect\r\n */\r\n constructor(name: string, engine: Nullable<AbstractEngine> = null, options?: EffectWrapperCreationOptions) {\r\n super({\r\n ...options,\r\n name,\r\n engine: engine || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinSharpenPostProcess.FragmentUrl,\r\n uniforms: ThinSharpenPostProcess.Uniforms,\r\n });\r\n }\r\n\r\n /**\r\n * How much of the original color should be applied. Setting this to 0 will display edge detection. (default: 1)\r\n */\r\n public colorAmount: number = 1.0;\r\n /**\r\n * How much sharpness should be applied (default: 0.3)\r\n */\r\n public edgeAmount: number = 0.3;\r\n\r\n /**\r\n * The width of the source texture\r\n */\r\n public textureWidth: number = 0;\r\n\r\n /**\r\n * The height of the source texture\r\n */\r\n public textureHeight: number = 0;\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n\r\n const effect = this._drawWrapper.effect!;\r\n\r\n effect.setFloat2(\"screenSize\", this.textureWidth, this.textureHeight);\r\n effect.setFloat2(\"sharpnessAmounts\", this.edgeAmount, this.colorAmount);\r\n }\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
1
  import { type Nullable, type EffectWrapperCreationOptions, type Scene } from "../index.js";
2
- import { Camera } from "../Cameras/camera.js";
3
- import { Vector2 } from "../Maths/math.vector.js";
4
- import { EffectWrapper } from "../Materials/effectRenderer.js";
2
+ import { Camera } from "../Cameras/camera.pure.js";
3
+ import { Vector2 } from "../Maths/math.vector.pure.js";
4
+ import { EffectWrapper } from "../Materials/effectRenderer.pure.js";
5
5
  /**
6
6
  * Simple implementation of Temporal Anti-Aliasing (TAA).
7
7
  * This can be used to improve image quality for still pictures (screenshots for e.g.).
@@ -1,8 +1,8 @@
1
- import { Camera } from "../Cameras/camera.js";
1
+ import { Camera } from "../Cameras/camera.pure.js";
2
2
  import { Halton2DSequence } from "../Maths/halton2DSequence.js";
3
- import { Vector2 } from "../Maths/math.vector.js";
4
- import { EffectWrapper } from "../Materials/effectRenderer.js";
5
- import { TAAMaterialManager } from "./RenderPipeline/Pipelines/taaMaterialManager.js";
3
+ import { Vector2 } from "../Maths/math.vector.pure.js";
4
+ import { EffectWrapper } from "../Materials/effectRenderer.pure.js";
5
+ import { TAAMaterialManager } from "./RenderPipeline/Pipelines/taaMaterialManager.pure.js";
6
6
  /**
7
7
  * Simple implementation of Temporal Anti-Aliasing (TAA).
8
8
  * This can be used to improve image quality for still pictures (screenshots for e.g.).
@@ -1 +1 @@
1
- {"version":3,"file":"thinTAAPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinTAAPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable, type EffectWrapperCreationOptions, type Scene } from \"core/index\";\r\nimport { Camera } from \"../Cameras/camera\";\r\nimport { Halton2DSequence } from \"core/Maths/halton2DSequence\";\r\nimport { Vector2 } from \"core/Maths/math.vector\";\r\nimport { EffectWrapper } from \"core/Materials/effectRenderer\";\r\nimport { TAAMaterialManager } from \"./RenderPipeline/Pipelines/taaMaterialManager\";\r\n\r\n/**\r\n * Simple implementation of Temporal Anti-Aliasing (TAA).\r\n * This can be used to improve image quality for still pictures (screenshots for e.g.).\r\n */\r\nexport class ThinTAAPostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"taa\";\r\n\r\n /**\r\n * The list of uniforms used by the effect\r\n */\r\n public static readonly Uniforms = [\"factor\"];\r\n\r\n /**\r\n * The list of samplers used by the effect\r\n */\r\n public static readonly Samplers = [\"historySampler\"];\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(import(\"../ShadersWGSL/taa.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/taa.fragment\"));\r\n }\r\n }\r\n\r\n private _samples = 8;\r\n /**\r\n * Number of accumulated samples (default: 8)\r\n */\r\n public set samples(samples: number) {\r\n if (this._samples === samples) {\r\n return;\r\n }\r\n\r\n this._samples = samples;\r\n this._hs.regenerate(samples);\r\n }\r\n\r\n public get samples(): number {\r\n return this._samples;\r\n }\r\n\r\n /**\r\n * The factor used to blend the history frame with current frame (default: 0.05)\r\n */\r\n public factor = 0.05;\r\n\r\n /**\r\n * The camera to use for the post process\r\n */\r\n public camera: Nullable<Camera>;\r\n\r\n private _disabled = false;\r\n /**\r\n * Whether the TAA is disabled\r\n */\r\n public get disabled() {\r\n return this._disabled;\r\n }\r\n\r\n public set disabled(value: boolean) {\r\n if (this._disabled === value) {\r\n return;\r\n }\r\n this._disabled = value;\r\n if (this._taaMaterialManager) {\r\n this._taaMaterialManager.isEnabled = !value && this.reprojectHistory;\r\n }\r\n this._reset();\r\n }\r\n\r\n private _textureWidth = 0;\r\n /**\r\n * The width of the texture in which to render\r\n */\r\n public get textureWidth() {\r\n return this._textureWidth;\r\n }\r\n\r\n public set textureWidth(width: number) {\r\n if (this._textureWidth === width) {\r\n return;\r\n }\r\n this._textureWidth = width;\r\n this._reset();\r\n }\r\n\r\n private _textureHeight = 0;\r\n /**\r\n * The height of the texture in which to render\r\n */\r\n public get textureHeight() {\r\n return this._textureHeight;\r\n }\r\n\r\n public set textureHeight(height: number) {\r\n if (this._textureHeight === height) {\r\n return;\r\n }\r\n this._textureHeight = height;\r\n this._reset();\r\n }\r\n\r\n /**\r\n * Disable TAA on camera move (default: true).\r\n * You generally want to keep this enabled, otherwise you will get a ghost effect when the camera moves (but if it's what you want, go for it!)\r\n */\r\n public disableOnCameraMove = true;\r\n\r\n private _reprojectHistory = false;\r\n /**\r\n * Enables reprojecting the history texture with a per-pixel velocity.\r\n * If set the \"velocitySampler\" has to be provided.\r\n */\r\n public get reprojectHistory(): boolean {\r\n return this._reprojectHistory;\r\n }\r\n\r\n public set reprojectHistory(reproject: boolean) {\r\n if (this._reprojectHistory === reproject) {\r\n return;\r\n }\r\n this._reprojectHistory = reproject;\r\n\r\n if (reproject) {\r\n if (!this._taaMaterialManager) {\r\n this._taaMaterialManager = new TAAMaterialManager(this._scene);\r\n }\r\n // The velocity buffer may be old so reset for one frame\r\n this._reset();\r\n }\r\n\r\n if (this._taaMaterialManager) {\r\n this._taaMaterialManager.isEnabled = reproject && !this._disabled;\r\n }\r\n\r\n this._updateEffect();\r\n }\r\n\r\n private _clampHistory = false;\r\n /**\r\n * Clamps the history pixel to the min and max of the 3x3 pixels surrounding the target pixel.\r\n * This can help further reduce ghosting and artifacts.\r\n */\r\n public get clampHistory(): boolean {\r\n return this._clampHistory;\r\n }\r\n\r\n public set clampHistory(clamp: boolean) {\r\n if (this._clampHistory === clamp) {\r\n return;\r\n }\r\n this._clampHistory = clamp;\r\n this._updateEffect();\r\n }\r\n\r\n private _scene: Scene;\r\n private _hs: Halton2DSequence;\r\n private _firstUpdate = true;\r\n private _taaMaterialManager: Nullable<TAAMaterialManager>;\r\n\r\n /**\r\n * Constructs a new TAA post process\r\n * @param name Name of the effect\r\n * @param scene The scene the post process belongs to\r\n * @param options Options to configure the effect\r\n */\r\n constructor(name: string, scene: Scene, options?: EffectWrapperCreationOptions) {\r\n super({\r\n ...options,\r\n name,\r\n engine: scene.getEngine(),\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinTAAPostProcess.FragmentUrl,\r\n uniforms: ThinTAAPostProcess.Uniforms,\r\n samplers: ThinTAAPostProcess.Samplers,\r\n });\r\n\r\n this._scene = scene;\r\n this._hs = new Halton2DSequence(this.samples);\r\n }\r\n\r\n /** @internal */\r\n public _reset(): void {\r\n this._hs.setDimensions(this._textureWidth / 2, this._textureHeight / 2);\r\n this._hs.next();\r\n this._firstUpdate = true;\r\n }\r\n\r\n /** @internal */\r\n public _updateJitter() {\r\n if (this.reprojectHistory && this._taaMaterialManager) {\r\n // Applying jitter to the projection matrix messes with the velocity buffer,\r\n // so we do it as a final vertex step in a material plugin instead\r\n this._nextJitterOffset(this._taaMaterialManager.jitter);\r\n } else {\r\n // Use the projection matrix by default since it supports most materials\r\n this._updateProjectionMatrix();\r\n }\r\n }\r\n\r\n protected _nextJitterOffset(output = new Vector2()): Vector2 {\r\n if (!this.camera || !this.camera.hasMoved || !this.disableOnCameraMove) {\r\n this._hs.next();\r\n }\r\n output.set(this._hs.x, this._hs.y);\r\n return output;\r\n }\r\n\r\n protected _updateProjectionMatrix(): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n if (this.camera && !this.camera.hasMoved) {\r\n if (this.camera.mode === Camera.PERSPECTIVE_CAMERA) {\r\n const projMat = this.camera.getProjectionMatrix();\r\n projMat.setRowFromFloats(2, this._hs.x, this._hs.y, projMat.m[10], projMat.m[11]);\r\n } else {\r\n // We must force the update of the projection matrix so that m[12] and m[13] are recomputed, as we modified them the previous frame\r\n const projMat = this.camera.getProjectionMatrix(true);\r\n projMat.setRowFromFloats(3, this._hs.x + projMat.m[12], this._hs.y + projMat.m[13], projMat.m[14], projMat.m[15]);\r\n }\r\n }\r\n\r\n this._hs.next();\r\n }\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n const effect = this._drawWrapper.effect!;\r\n\r\n effect.setFloat(\"factor\", (this.camera?.hasMoved && this.disableOnCameraMove) || this._firstUpdate ? 1 : this.factor);\r\n\r\n this._firstUpdate = false;\r\n }\r\n\r\n public override dispose() {\r\n this._taaMaterialManager?.dispose();\r\n super.dispose();\r\n }\r\n\r\n private _updateEffect(): void {\r\n const defines: string[] = [];\r\n // There seems to be an issue where `updateEffect` sometimes doesn't include the initial samplers\r\n const samplers = [\"textureSampler\", \"historySampler\"];\r\n if (this._reprojectHistory) {\r\n defines.push(\"#define TAA_REPROJECT_HISTORY\");\r\n samplers.push(\"velocitySampler\");\r\n }\r\n if (this._clampHistory) {\r\n defines.push(\"#define TAA_CLAMP_HISTORY\");\r\n }\r\n this.updateEffect(defines.join(\"\\n\"), null, samplers);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"thinTAAPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinTAAPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable, type EffectWrapperCreationOptions, type Scene } from \"core/index\";\r\nimport { Camera } from \"../Cameras/camera.pure\";\r\nimport { Halton2DSequence } from \"core/Maths/halton2DSequence\";\r\nimport { Vector2 } from \"core/Maths/math.vector.pure\";\r\nimport { EffectWrapper } from \"core/Materials/effectRenderer.pure\";\r\nimport { TAAMaterialManager } from \"./RenderPipeline/Pipelines/taaMaterialManager.pure\";\r\n\r\n/**\r\n * Simple implementation of Temporal Anti-Aliasing (TAA).\r\n * This can be used to improve image quality for still pictures (screenshots for e.g.).\r\n */\r\nexport class ThinTAAPostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"taa\";\r\n\r\n /**\r\n * The list of uniforms used by the effect\r\n */\r\n public static readonly Uniforms = [\"factor\"];\r\n\r\n /**\r\n * The list of samplers used by the effect\r\n */\r\n public static readonly Samplers = [\"historySampler\"];\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(import(\"../ShadersWGSL/taa.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/taa.fragment\"));\r\n }\r\n }\r\n\r\n private _samples = 8;\r\n /**\r\n * Number of accumulated samples (default: 8)\r\n */\r\n public set samples(samples: number) {\r\n if (this._samples === samples) {\r\n return;\r\n }\r\n\r\n this._samples = samples;\r\n this._hs.regenerate(samples);\r\n }\r\n\r\n public get samples(): number {\r\n return this._samples;\r\n }\r\n\r\n /**\r\n * The factor used to blend the history frame with current frame (default: 0.05)\r\n */\r\n public factor = 0.05;\r\n\r\n /**\r\n * The camera to use for the post process\r\n */\r\n public camera: Nullable<Camera>;\r\n\r\n private _disabled = false;\r\n /**\r\n * Whether the TAA is disabled\r\n */\r\n public get disabled() {\r\n return this._disabled;\r\n }\r\n\r\n public set disabled(value: boolean) {\r\n if (this._disabled === value) {\r\n return;\r\n }\r\n this._disabled = value;\r\n if (this._taaMaterialManager) {\r\n this._taaMaterialManager.isEnabled = !value && this.reprojectHistory;\r\n }\r\n this._reset();\r\n }\r\n\r\n private _textureWidth = 0;\r\n /**\r\n * The width of the texture in which to render\r\n */\r\n public get textureWidth() {\r\n return this._textureWidth;\r\n }\r\n\r\n public set textureWidth(width: number) {\r\n if (this._textureWidth === width) {\r\n return;\r\n }\r\n this._textureWidth = width;\r\n this._reset();\r\n }\r\n\r\n private _textureHeight = 0;\r\n /**\r\n * The height of the texture in which to render\r\n */\r\n public get textureHeight() {\r\n return this._textureHeight;\r\n }\r\n\r\n public set textureHeight(height: number) {\r\n if (this._textureHeight === height) {\r\n return;\r\n }\r\n this._textureHeight = height;\r\n this._reset();\r\n }\r\n\r\n /**\r\n * Disable TAA on camera move (default: true).\r\n * You generally want to keep this enabled, otherwise you will get a ghost effect when the camera moves (but if it's what you want, go for it!)\r\n */\r\n public disableOnCameraMove = true;\r\n\r\n private _reprojectHistory = false;\r\n /**\r\n * Enables reprojecting the history texture with a per-pixel velocity.\r\n * If set the \"velocitySampler\" has to be provided.\r\n */\r\n public get reprojectHistory(): boolean {\r\n return this._reprojectHistory;\r\n }\r\n\r\n public set reprojectHistory(reproject: boolean) {\r\n if (this._reprojectHistory === reproject) {\r\n return;\r\n }\r\n this._reprojectHistory = reproject;\r\n\r\n if (reproject) {\r\n if (!this._taaMaterialManager) {\r\n this._taaMaterialManager = new TAAMaterialManager(this._scene);\r\n }\r\n // The velocity buffer may be old so reset for one frame\r\n this._reset();\r\n }\r\n\r\n if (this._taaMaterialManager) {\r\n this._taaMaterialManager.isEnabled = reproject && !this._disabled;\r\n }\r\n\r\n this._updateEffect();\r\n }\r\n\r\n private _clampHistory = false;\r\n /**\r\n * Clamps the history pixel to the min and max of the 3x3 pixels surrounding the target pixel.\r\n * This can help further reduce ghosting and artifacts.\r\n */\r\n public get clampHistory(): boolean {\r\n return this._clampHistory;\r\n }\r\n\r\n public set clampHistory(clamp: boolean) {\r\n if (this._clampHistory === clamp) {\r\n return;\r\n }\r\n this._clampHistory = clamp;\r\n this._updateEffect();\r\n }\r\n\r\n private _scene: Scene;\r\n private _hs: Halton2DSequence;\r\n private _firstUpdate = true;\r\n private _taaMaterialManager: Nullable<TAAMaterialManager>;\r\n\r\n /**\r\n * Constructs a new TAA post process\r\n * @param name Name of the effect\r\n * @param scene The scene the post process belongs to\r\n * @param options Options to configure the effect\r\n */\r\n constructor(name: string, scene: Scene, options?: EffectWrapperCreationOptions) {\r\n super({\r\n ...options,\r\n name,\r\n engine: scene.getEngine(),\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinTAAPostProcess.FragmentUrl,\r\n uniforms: ThinTAAPostProcess.Uniforms,\r\n samplers: ThinTAAPostProcess.Samplers,\r\n });\r\n\r\n this._scene = scene;\r\n this._hs = new Halton2DSequence(this.samples);\r\n }\r\n\r\n /** @internal */\r\n public _reset(): void {\r\n this._hs.setDimensions(this._textureWidth / 2, this._textureHeight / 2);\r\n this._hs.next();\r\n this._firstUpdate = true;\r\n }\r\n\r\n /** @internal */\r\n public _updateJitter() {\r\n if (this.reprojectHistory && this._taaMaterialManager) {\r\n // Applying jitter to the projection matrix messes with the velocity buffer,\r\n // so we do it as a final vertex step in a material plugin instead\r\n this._nextJitterOffset(this._taaMaterialManager.jitter);\r\n } else {\r\n // Use the projection matrix by default since it supports most materials\r\n this._updateProjectionMatrix();\r\n }\r\n }\r\n\r\n protected _nextJitterOffset(output = new Vector2()): Vector2 {\r\n if (!this.camera || !this.camera.hasMoved || !this.disableOnCameraMove) {\r\n this._hs.next();\r\n }\r\n output.set(this._hs.x, this._hs.y);\r\n return output;\r\n }\r\n\r\n protected _updateProjectionMatrix(): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n if (this.camera && !this.camera.hasMoved) {\r\n if (this.camera.mode === Camera.PERSPECTIVE_CAMERA) {\r\n const projMat = this.camera.getProjectionMatrix();\r\n projMat.setRowFromFloats(2, this._hs.x, this._hs.y, projMat.m[10], projMat.m[11]);\r\n } else {\r\n // We must force the update of the projection matrix so that m[12] and m[13] are recomputed, as we modified them the previous frame\r\n const projMat = this.camera.getProjectionMatrix(true);\r\n projMat.setRowFromFloats(3, this._hs.x + projMat.m[12], this._hs.y + projMat.m[13], projMat.m[14], projMat.m[15]);\r\n }\r\n }\r\n\r\n this._hs.next();\r\n }\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n const effect = this._drawWrapper.effect!;\r\n\r\n effect.setFloat(\"factor\", (this.camera?.hasMoved && this.disableOnCameraMove) || this._firstUpdate ? 1 : this.factor);\r\n\r\n this._firstUpdate = false;\r\n }\r\n\r\n public override dispose() {\r\n this._taaMaterialManager?.dispose();\r\n super.dispose();\r\n }\r\n\r\n private _updateEffect(): void {\r\n const defines: string[] = [];\r\n // There seems to be an issue where `updateEffect` sometimes doesn't include the initial samplers\r\n const samplers = [\"textureSampler\", \"historySampler\"];\r\n if (this._reprojectHistory) {\r\n defines.push(\"#define TAA_REPROJECT_HISTORY\");\r\n samplers.push(\"velocitySampler\");\r\n }\r\n if (this._clampHistory) {\r\n defines.push(\"#define TAA_CLAMP_HISTORY\");\r\n }\r\n this.updateEffect(defines.join(\"\\n\"), null, samplers);\r\n }\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
1
  import { type Nullable, type AbstractEngine, type EffectWrapperCreationOptions } from "../index.js";
2
- import { EffectWrapper } from "../Materials/effectRenderer.js";
2
+ import { EffectWrapper } from "../Materials/effectRenderer.pure.js";
3
3
  /** Defines operator used for tonemapping */
4
4
  export declare enum TonemappingOperator {
5
5
  /** Hable */
@@ -1,4 +1,4 @@
1
- import { EffectWrapper } from "../Materials/effectRenderer.js";
1
+ import { EffectWrapper } from "../Materials/effectRenderer.pure.js";
2
2
  import { EngineStore } from "../Engines/engineStore.js";
3
3
  /** Defines operator used for tonemapping */
4
4
  export var TonemappingOperator;
@@ -1 +1 @@
1
- {"version":3,"file":"thinTonemapPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinTonemapPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,4CAA4C;AAC5C,MAAM,CAAN,IAAkB,mBASjB;AATD,WAAkB,mBAAmB;IACjC,YAAY;IACZ,+DAAS,CAAA;IACT,eAAe;IACf,qEAAY,CAAA;IACZ,iBAAiB;IACjB,yEAAc,CAAA;IACd,mBAAmB;IACnB,6EAAgB,CAAA;AACpB,CAAC,EATiB,mBAAmB,KAAnB,mBAAmB,QASpC;AAcD;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IAWlC,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,OAAuC;QACtG,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,wCAAgC,CAAC;QAEnE,IAAI,OAAO,GAAG,UAAU,CAAC;QAEzB,IAAI,QAAQ,sCAA8B,EAAE,CAAC;YACzC,OAAO,IAAI,mBAAmB,CAAC;QACnC,CAAC;aAAM,IAAI,QAAQ,yCAAiC,EAAE,CAAC;YACnD,OAAO,IAAI,sBAAsB,CAAC;QACtC,CAAC;aAAM,IAAI,QAAQ,2CAAmC,EAAE,CAAC;YACrD,OAAO,IAAI,kCAAkC,CAAC;QAClD,CAAC;aAAM,IAAI,QAAQ,6CAAqC,EAAE,CAAC;YACvD,OAAO,IAAI,0BAA0B,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC;YACF,GAAG,OAAO;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,iBAAkB;YAChD,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,sBAAsB,CAAC,WAAW;YAClD,QAAQ,EAAE,sBAAsB,CAAC,QAAQ;YACzC,OAAO;SACV,CAAC,CAAC;QAMP;;WAEG;QACa,aAAQ,wCAAqD;QAE7E;;WAEG;QACI,uBAAkB,GAAG,CAAC,CAAC;QAZ1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,OAAO,EAAE,kBAAkB,IAAI,CAAC,CAAC;IAC/D,CAAC;IAYe,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvF,CAAC;;AApED;;GAEG;AACoB,kCAAW,GAAG,SAAS,AAAZ,CAAa;AAE/C;;GAEG;AACoB,+BAAQ,GAAG,CAAC,qBAAqB,CAAC,AAA1B,CAA2B","sourcesContent":["import { type Nullable, type AbstractEngine, type EffectWrapperCreationOptions } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n/** Defines operator used for tonemapping */\r\nexport const enum TonemappingOperator {\r\n /** Hable */\r\n Hable = 0,\r\n /** Reinhard */\r\n Reinhard = 1,\r\n /** HejiDawson */\r\n HejiDawson = 2,\r\n /** Photographic */\r\n Photographic = 3,\r\n}\r\n\r\n/**\r\n * Options used to create a ThinTonemapPostProcess.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport interface ThinTonemapPostProcessOptions extends EffectWrapperCreationOptions {\r\n /** Defines the operator to use (default: Reinhard) */\r\n operator?: TonemappingOperator;\r\n\r\n /** Defines the required exposure adjustment (default: 1.0) */\r\n exposureAdjustment?: number;\r\n}\r\n\r\n/**\r\n * Post process used to apply a tone mapping operator\r\n */\r\nexport class ThinTonemapPostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"tonemap\";\r\n\r\n /**\r\n * The list of uniforms used by the effect\r\n */\r\n public static readonly Uniforms = [\"_ExposureAdjustment\"];\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(import(\"../ShadersWGSL/tonemap.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/tonemap.fragment\"));\r\n }\r\n }\r\n\r\n /**\r\n * Constructs a new tone mapping post process\r\n * @param name Name of the effect\r\n * @param engine Engine to use to render the effect. If not provided, the last created engine will be used\r\n * @param options Options to configure the effect\r\n */\r\n constructor(name: string, engine: Nullable<AbstractEngine> = null, options?: ThinTonemapPostProcessOptions) {\r\n const operator = options?.operator ?? TonemappingOperator.Reinhard;\r\n\r\n let defines = \"#define \";\r\n\r\n if (operator === TonemappingOperator.Hable) {\r\n defines += \"HABLE_TONEMAPPING\";\r\n } else if (operator === TonemappingOperator.Reinhard) {\r\n defines += \"REINHARD_TONEMAPPING\";\r\n } else if (operator === TonemappingOperator.HejiDawson) {\r\n defines += \"OPTIMIZED_HEJIDAWSON_TONEMAPPING\";\r\n } else if (operator === TonemappingOperator.Photographic) {\r\n defines += \"PHOTOGRAPHIC_TONEMAPPING\";\r\n }\r\n\r\n super({\r\n ...options,\r\n name,\r\n engine: engine || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinTonemapPostProcess.FragmentUrl,\r\n uniforms: ThinTonemapPostProcess.Uniforms,\r\n defines,\r\n });\r\n\r\n this.operator = operator;\r\n this.exposureAdjustment = options?.exposureAdjustment ?? 1;\r\n }\r\n\r\n /**\r\n * Gets the operator to use (default: Reinhard)\r\n */\r\n public readonly operator: TonemappingOperator = TonemappingOperator.Reinhard;\r\n\r\n /**\r\n * Defines the required exposure adjustment (default: 1.0)\r\n */\r\n public exposureAdjustment = 1;\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n this._drawWrapper.effect!.setFloat(\"_ExposureAdjustment\", this.exposureAdjustment);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"thinTonemapPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinTonemapPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,4CAA4C;AAC5C,MAAM,CAAN,IAAkB,mBASjB;AATD,WAAkB,mBAAmB;IACjC,YAAY;IACZ,+DAAS,CAAA;IACT,eAAe;IACf,qEAAY,CAAA;IACZ,iBAAiB;IACjB,yEAAc,CAAA;IACd,mBAAmB;IACnB,6EAAgB,CAAA;AACpB,CAAC,EATiB,mBAAmB,KAAnB,mBAAmB,QASpC;AAcD;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IAWlC,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,OAAuC;QACtG,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,wCAAgC,CAAC;QAEnE,IAAI,OAAO,GAAG,UAAU,CAAC;QAEzB,IAAI,QAAQ,sCAA8B,EAAE,CAAC;YACzC,OAAO,IAAI,mBAAmB,CAAC;QACnC,CAAC;aAAM,IAAI,QAAQ,yCAAiC,EAAE,CAAC;YACnD,OAAO,IAAI,sBAAsB,CAAC;QACtC,CAAC;aAAM,IAAI,QAAQ,2CAAmC,EAAE,CAAC;YACrD,OAAO,IAAI,kCAAkC,CAAC;QAClD,CAAC;aAAM,IAAI,QAAQ,6CAAqC,EAAE,CAAC;YACvD,OAAO,IAAI,0BAA0B,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC;YACF,GAAG,OAAO;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,iBAAkB;YAChD,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,sBAAsB,CAAC,WAAW;YAClD,QAAQ,EAAE,sBAAsB,CAAC,QAAQ;YACzC,OAAO;SACV,CAAC,CAAC;QAMP;;WAEG;QACa,aAAQ,wCAAqD;QAE7E;;WAEG;QACI,uBAAkB,GAAG,CAAC,CAAC;QAZ1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,OAAO,EAAE,kBAAkB,IAAI,CAAC,CAAC;IAC/D,CAAC;IAYe,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvF,CAAC;;AApED;;GAEG;AACoB,kCAAW,GAAG,SAAS,AAAZ,CAAa;AAE/C;;GAEG;AACoB,+BAAQ,GAAG,CAAC,qBAAqB,CAAC,AAA1B,CAA2B","sourcesContent":["import { type Nullable, type AbstractEngine, type EffectWrapperCreationOptions } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer.pure\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n/** Defines operator used for tonemapping */\r\nexport const enum TonemappingOperator {\r\n /** Hable */\r\n Hable = 0,\r\n /** Reinhard */\r\n Reinhard = 1,\r\n /** HejiDawson */\r\n HejiDawson = 2,\r\n /** Photographic */\r\n Photographic = 3,\r\n}\r\n\r\n/**\r\n * Options used to create a ThinTonemapPostProcess.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport interface ThinTonemapPostProcessOptions extends EffectWrapperCreationOptions {\r\n /** Defines the operator to use (default: Reinhard) */\r\n operator?: TonemappingOperator;\r\n\r\n /** Defines the required exposure adjustment (default: 1.0) */\r\n exposureAdjustment?: number;\r\n}\r\n\r\n/**\r\n * Post process used to apply a tone mapping operator\r\n */\r\nexport class ThinTonemapPostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"tonemap\";\r\n\r\n /**\r\n * The list of uniforms used by the effect\r\n */\r\n public static readonly Uniforms = [\"_ExposureAdjustment\"];\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(import(\"../ShadersWGSL/tonemap.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/tonemap.fragment\"));\r\n }\r\n }\r\n\r\n /**\r\n * Constructs a new tone mapping post process\r\n * @param name Name of the effect\r\n * @param engine Engine to use to render the effect. If not provided, the last created engine will be used\r\n * @param options Options to configure the effect\r\n */\r\n constructor(name: string, engine: Nullable<AbstractEngine> = null, options?: ThinTonemapPostProcessOptions) {\r\n const operator = options?.operator ?? TonemappingOperator.Reinhard;\r\n\r\n let defines = \"#define \";\r\n\r\n if (operator === TonemappingOperator.Hable) {\r\n defines += \"HABLE_TONEMAPPING\";\r\n } else if (operator === TonemappingOperator.Reinhard) {\r\n defines += \"REINHARD_TONEMAPPING\";\r\n } else if (operator === TonemappingOperator.HejiDawson) {\r\n defines += \"OPTIMIZED_HEJIDAWSON_TONEMAPPING\";\r\n } else if (operator === TonemappingOperator.Photographic) {\r\n defines += \"PHOTOGRAPHIC_TONEMAPPING\";\r\n }\r\n\r\n super({\r\n ...options,\r\n name,\r\n engine: engine || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinTonemapPostProcess.FragmentUrl,\r\n uniforms: ThinTonemapPostProcess.Uniforms,\r\n defines,\r\n });\r\n\r\n this.operator = operator;\r\n this.exposureAdjustment = options?.exposureAdjustment ?? 1;\r\n }\r\n\r\n /**\r\n * Gets the operator to use (default: Reinhard)\r\n */\r\n public readonly operator: TonemappingOperator = TonemappingOperator.Reinhard;\r\n\r\n /**\r\n * Defines the required exposure adjustment (default: 1.0)\r\n */\r\n public exposureAdjustment = 1;\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n this._drawWrapper.effect!.setFloat(\"_ExposureAdjustment\", this.exposureAdjustment);\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
1
  import { type Camera } from "../Cameras/camera.js";
2
2
  import { type VRCameraMetrics } from "../Cameras/VR/vrCameraMetrics.js";
3
- import { PostProcess } from "./postProcess.js";
3
+ import { PostProcess } from "./postProcess.pure.js";
4
4
  import { type Nullable } from "../types.js";
5
5
  /**
6
6
  * VRDistortionCorrectionPostProcess used for mobile VR
@@ -1,6 +1,6 @@
1
- import { Vector2 } from "../Maths/math.vector.js";
2
- import { Texture } from "../Materials/Textures/texture.js";
3
- import { PostProcess } from "./postProcess.js";
1
+ import { Vector2 } from "../Maths/math.vector.pure.js";
2
+ import { Texture } from "../Materials/Textures/texture.pure.js";
3
+ import { PostProcess } from "./postProcess.pure.js";
4
4
  /**
5
5
  * VRDistortionCorrectionPostProcess used for mobile VR
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"vrDistortionCorrectionPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/vrDistortionCorrectionPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector2 } from \"../Maths/math.vector\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { type VRCameraMetrics } from \"../Cameras/VR/vrCameraMetrics\";\r\nimport { type Effect } from \"../Materials/effect\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport { PostProcess } from \"./postProcess\";\r\n\r\nimport { type Nullable } from \"../types\";\r\n\r\n/**\r\n * VRDistortionCorrectionPostProcess used for mobile VR\r\n */\r\nexport class VRDistortionCorrectionPostProcess extends PostProcess {\r\n private _isRightEye: boolean;\r\n private _distortionFactors: number[];\r\n private _postProcessScaleFactor: number;\r\n private _lensCenterOffset: number;\r\n private _scaleIn: Vector2;\r\n private _scaleFactor: Vector2;\r\n private _lensCenter: Vector2;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"VRDistortionCorrectionPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"VRDistortionCorrectionPostProcess\";\r\n }\r\n\r\n /**\r\n * Initializes the VRDistortionCorrectionPostProcess\r\n * @param name The name of the effect.\r\n * @param camera The camera to apply the render pass to.\r\n * @param isRightEye If this is for the right eye distortion\r\n * @param vrMetrics All the required metrics for the VR camera\r\n */\r\n constructor(name: string, camera: Nullable<Camera>, isRightEye: boolean, vrMetrics: VRCameraMetrics) {\r\n super(name, \"vrDistortionCorrection\", [\"LensCenter\", \"Scale\", \"ScaleIn\", \"HmdWarpParam\"], null, vrMetrics.postProcessScaleFactor, camera, Texture.BILINEAR_SAMPLINGMODE);\r\n\r\n this._isRightEye = isRightEye;\r\n this._distortionFactors = vrMetrics.distortionK;\r\n this._postProcessScaleFactor = vrMetrics.postProcessScaleFactor;\r\n this._lensCenterOffset = vrMetrics.lensCenterOffset;\r\n this.adaptScaleToCurrentViewport = true;\r\n\r\n this.onSizeChangedObservable.add(() => {\r\n this._scaleIn = new Vector2(2, 2 / this.aspectRatio);\r\n this._scaleFactor = new Vector2(0.5 * (1 / this._postProcessScaleFactor), 0.5 * (1 / this._postProcessScaleFactor) * this.aspectRatio);\r\n this._lensCenter = new Vector2(this._isRightEye ? 0.5 - this._lensCenterOffset * 0.5 : 0.5 + this._lensCenterOffset * 0.5, 0.5);\r\n });\r\n this.onApplyObservable.add((effect: Effect) => {\r\n effect.setFloat2(\"LensCenter\", this._lensCenter.x, this._lensCenter.y);\r\n effect.setFloat2(\"Scale\", this._scaleFactor.x, this._scaleFactor.y);\r\n effect.setFloat2(\"ScaleIn\", this._scaleIn.x, this._scaleIn.y);\r\n effect.setFloat4(\"HmdWarpParam\", this._distortionFactors[0], this._distortionFactors[1], this._distortionFactors[2], this._distortionFactors[3]);\r\n });\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(import(\"../ShadersWGSL/vrDistortionCorrection.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/vrDistortionCorrection.fragment\"));\r\n }\r\n\r\n super._gatherImports(useWebGPU, list);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"vrDistortionCorrectionPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/vrDistortionCorrectionPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector2 } from \"../Maths/math.vector.pure\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { type VRCameraMetrics } from \"../Cameras/VR/vrCameraMetrics\";\r\nimport { type Effect } from \"../Materials/effect\";\r\nimport { Texture } from \"../Materials/Textures/texture.pure\";\r\nimport { PostProcess } from \"./postProcess.pure\";\r\n\r\nimport { type Nullable } from \"../types\";\r\n\r\n/**\r\n * VRDistortionCorrectionPostProcess used for mobile VR\r\n */\r\nexport class VRDistortionCorrectionPostProcess extends PostProcess {\r\n private _isRightEye: boolean;\r\n private _distortionFactors: number[];\r\n private _postProcessScaleFactor: number;\r\n private _lensCenterOffset: number;\r\n private _scaleIn: Vector2;\r\n private _scaleFactor: Vector2;\r\n private _lensCenter: Vector2;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"VRDistortionCorrectionPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"VRDistortionCorrectionPostProcess\";\r\n }\r\n\r\n /**\r\n * Initializes the VRDistortionCorrectionPostProcess\r\n * @param name The name of the effect.\r\n * @param camera The camera to apply the render pass to.\r\n * @param isRightEye If this is for the right eye distortion\r\n * @param vrMetrics All the required metrics for the VR camera\r\n */\r\n constructor(name: string, camera: Nullable<Camera>, isRightEye: boolean, vrMetrics: VRCameraMetrics) {\r\n super(name, \"vrDistortionCorrection\", [\"LensCenter\", \"Scale\", \"ScaleIn\", \"HmdWarpParam\"], null, vrMetrics.postProcessScaleFactor, camera, Texture.BILINEAR_SAMPLINGMODE);\r\n\r\n this._isRightEye = isRightEye;\r\n this._distortionFactors = vrMetrics.distortionK;\r\n this._postProcessScaleFactor = vrMetrics.postProcessScaleFactor;\r\n this._lensCenterOffset = vrMetrics.lensCenterOffset;\r\n this.adaptScaleToCurrentViewport = true;\r\n\r\n this.onSizeChangedObservable.add(() => {\r\n this._scaleIn = new Vector2(2, 2 / this.aspectRatio);\r\n this._scaleFactor = new Vector2(0.5 * (1 / this._postProcessScaleFactor), 0.5 * (1 / this._postProcessScaleFactor) * this.aspectRatio);\r\n this._lensCenter = new Vector2(this._isRightEye ? 0.5 - this._lensCenterOffset * 0.5 : 0.5 + this._lensCenterOffset * 0.5, 0.5);\r\n });\r\n this.onApplyObservable.add((effect: Effect) => {\r\n effect.setFloat2(\"LensCenter\", this._lensCenter.x, this._lensCenter.y);\r\n effect.setFloat2(\"Scale\", this._scaleFactor.x, this._scaleFactor.y);\r\n effect.setFloat2(\"ScaleIn\", this._scaleIn.x, this._scaleIn.y);\r\n effect.setFloat4(\"HmdWarpParam\", this._distortionFactors[0], this._distortionFactors[1], this._distortionFactors[2], this._distortionFactors[3]);\r\n });\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(import(\"../ShadersWGSL/vrDistortionCorrection.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/vrDistortionCorrection.fragment\"));\r\n }\r\n\r\n super._gatherImports(useWebGPU, list);\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
1
  import { type Scene } from "../../scene.js";
2
- import { PostProcess } from "../../PostProcesses/postProcess.js";
3
- import { ProceduralTexture } from "../../Materials/Textures/Procedurals/proceduralTexture.js";
2
+ import { PostProcess } from "../../PostProcesses/postProcess.pure.js";
3
+ import { ProceduralTexture } from "../../Materials/Textures/Procedurals/proceduralTexture.pure.js";
4
4
  import { type IblShadowsRenderPipeline } from "./iblShadowsRenderPipeline.js";
5
5
  import { Observable } from "../../Misc/observable.js";
6
6
  /**
@@ -1,8 +1,8 @@
1
1
 
2
- import { Vector4 } from "../../Maths/math.vector.js";
3
- import { PostProcess } from "../../PostProcesses/postProcess.js";
4
- import { GeometryBufferRenderer } from "../../Rendering/geometryBufferRenderer.js";
5
- import { ProceduralTexture } from "../../Materials/Textures/Procedurals/proceduralTexture.js";
2
+ import { Vector4 } from "../../Maths/math.vector.pure.js";
3
+ import { PostProcess } from "../../PostProcesses/postProcess.pure.js";
4
+ import { GeometryBufferRenderer } from "../../Rendering/geometryBufferRenderer.pure.js";
5
+ import { ProceduralTexture } from "../../Materials/Textures/Procedurals/proceduralTexture.pure.js";
6
6
  import { Observable } from "../../Misc/observable.js";
7
7
  /**
8
8
  * This should not be instantiated directly, as it is part of a scene component
@@ -1 +1 @@
1
- {"version":3,"file":"iblShadowsAccumulationPass.js","sourceRoot":"","sources":["../../../../../dev/core/src/Rendering/IBLShadows/iblShadowsAccumulationPass.ts"],"names":[],"mappings":"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","sourcesContent":["import { Constants } from \"../../Engines/constants\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine\";\r\nimport { type Scene } from \"../../scene\";\r\nimport { Vector4 } from \"../../Maths/math.vector\";\r\nimport { PostProcess, type PostProcessOptions } from \"../../PostProcesses/postProcess\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { GeometryBufferRenderer } from \"../../Rendering/geometryBufferRenderer\";\r\nimport { ProceduralTexture, type IProceduralTextureCreationOptions } from \"core/Materials/Textures/Procedurals/proceduralTexture\";\r\nimport { type IblShadowsRenderPipeline } from \"./iblShadowsRenderPipeline\";\r\nimport { Observable, type EventState } from \"../../Misc/observable\";\r\nimport { type Nullable } from \"../../types\";\r\n\r\n/**\r\n * This should not be instantiated directly, as it is part of a scene component\r\n * @internal\r\n */\r\nexport class _IblShadowsAccumulationPass {\r\n private _scene: Scene;\r\n private _engine: AbstractEngine;\r\n private _renderPipeline: IblShadowsRenderPipeline;\r\n\r\n // First, render the accumulation pass with both position buffers, motion buffer, shadow buffer, and the previous accumulation buffer\r\n private _outputTexture: ProceduralTexture;\r\n private _oldAccumulationCopy: ProceduralTexture;\r\n private _oldPositionCopy: ProceduralTexture;\r\n private _accumulationParams: Vector4 = new Vector4(0.0, 0.0, 0.0, 0.0);\r\n\r\n /** Enable the debug view for this pass */\r\n public debugEnabled: boolean = false;\r\n\r\n /**\r\n * Is the effect enabled\r\n */\r\n public enabled: boolean = true;\r\n\r\n /**\r\n * Returns the output texture of the pass.\r\n * @returns The output texture.\r\n */\r\n public getOutputTexture(): ProceduralTexture {\r\n return this._outputTexture;\r\n }\r\n\r\n /**\r\n * Observable that triggers when the accumulation texture is ready\r\n */\r\n public onReadyObservable: Observable<void> = new Observable<void>();\r\n\r\n /**\r\n * Gets the debug pass post process\r\n * @returns The post process\r\n */\r\n public getDebugPassPP(): PostProcess {\r\n if (!this._debugPassPP) {\r\n this._createDebugPass();\r\n }\r\n return this._debugPassPP;\r\n }\r\n\r\n private _debugPassName: string = \"Shadow Accumulation Debug Pass\";\r\n\r\n /**\r\n * Gets the name of the debug pass\r\n * @returns The name of the debug pass\r\n */\r\n public get debugPassName(): string {\r\n return this._debugPassName;\r\n }\r\n\r\n /**\r\n * A value that controls how much of the previous frame's accumulation to keep.\r\n * The higher the value, the faster the shadows accumulate but the more potential ghosting you'll see.\r\n */\r\n public get remanence(): number {\r\n return this._remanence;\r\n }\r\n\r\n /**\r\n * A value that controls how much of the previous frame's accumulation to keep.\r\n * The higher the value, the faster the shadows accumulate but the more potential ghosting you'll see.\r\n */\r\n public set remanence(value: number) {\r\n this._remanence = value;\r\n }\r\n private _remanence: number = 0.9;\r\n\r\n /**\r\n * Reset the accumulation.\r\n */\r\n public get reset(): boolean {\r\n return this._reset;\r\n }\r\n /**\r\n * Reset the accumulation.\r\n */\r\n public set reset(value: boolean) {\r\n this._reset = value;\r\n }\r\n private _reset: boolean = true;\r\n\r\n /**\r\n * Tell the pass that the camera is moving. This will cause the accumulation\r\n * rate to change.\r\n */\r\n public set isMoving(value: boolean) {\r\n this._isMoving = value;\r\n }\r\n private _isMoving: boolean = false;\r\n\r\n private _debugPassPP: PostProcess;\r\n private _debugSizeParams: Vector4 = new Vector4(0.0, 0.0, 0.0, 0.0);\r\n\r\n /**\r\n * Sets params that control the position and scaling of the debug display on the screen.\r\n * @param x Screen X offset of the debug display (0-1)\r\n * @param y Screen Y offset of the debug display (0-1)\r\n * @param widthScale X scale of the debug display (0-1)\r\n * @param heightScale Y scale of the debug display (0-1)\r\n */\r\n public setDebugDisplayParams(x: number, y: number, widthScale: number, heightScale: number) {\r\n this._debugSizeParams.set(x, y, widthScale, heightScale);\r\n }\r\n\r\n /**\r\n * Creates the debug post process effect for this pass\r\n */\r\n private _createDebugPass() {\r\n if (!this._debugPassPP) {\r\n const isWebGPU = this._engine.isWebGPU;\r\n const debugOptions: PostProcessOptions = {\r\n width: this._engine.getRenderWidth(),\r\n height: this._engine.getRenderHeight(),\r\n textureFormat: Constants.TEXTUREFORMAT_RGBA,\r\n textureType: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n uniforms: [\"sizeParams\"],\r\n samplers: [\"debugSampler\"],\r\n engine: this._engine,\r\n reusable: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializations: (useWebGPU: boolean, list: Promise<any>[]) => {\r\n if (useWebGPU) {\r\n list.push(import(\"../../ShadersWGSL/iblShadowDebug.fragment\"));\r\n } else {\r\n list.push(import(\"../../Shaders/iblShadowDebug.fragment\"));\r\n }\r\n },\r\n };\r\n this._debugPassPP = new PostProcess(this.debugPassName, \"iblShadowDebug\", debugOptions);\r\n this._debugPassPP.autoClear = false;\r\n this._debugPassPP.onApplyObservable.add((effect) => {\r\n // update the caustic texture with what we just rendered.\r\n effect.setTexture(\"debugSampler\", this._outputTexture);\r\n effect.setVector4(\"sizeParams\", this._debugSizeParams);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Instantiates the accumulation pass\r\n * @param scene Scene to attach to\r\n * @param iblShadowsRenderPipeline The IBL shadows render pipeline\r\n * @returns The accumulation pass\r\n */\r\n constructor(scene: Scene, iblShadowsRenderPipeline: IblShadowsRenderPipeline) {\r\n this._scene = scene;\r\n this._engine = scene.getEngine();\r\n this._renderPipeline = iblShadowsRenderPipeline;\r\n this._createTextures();\r\n }\r\n\r\n private _createTextures() {\r\n const isWebGPU = this._engine.isWebGPU;\r\n\r\n const outputTextureOptions: IProceduralTextureCreationOptions = {\r\n type: Constants.TEXTURETYPE_HALF_FLOAT,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../../ShadersWGSL/iblShadowAccumulation.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/iblShadowAccumulation.fragment\")]);\r\n }\r\n },\r\n };\r\n this._outputTexture = new ProceduralTexture(\r\n \"shadowAccumulationPass\",\r\n {\r\n width: this._engine.getRenderWidth(),\r\n height: this._engine.getRenderHeight(),\r\n },\r\n \"iblShadowAccumulation\",\r\n this._scene,\r\n outputTextureOptions\r\n );\r\n this._outputTexture.refreshRate = -1;\r\n this._outputTexture.autoClear = false;\r\n this._outputTexture.onGeneratedObservable.addOnce(() => {\r\n this.onReadyObservable.notifyObservers();\r\n });\r\n\r\n // Need to set all the textures first so that the effect gets created with the proper uniforms.\r\n this._setOutputTextureBindings();\r\n\r\n this._renderWhenGBufferReady = this._render.bind(this);\r\n // Don't start rendering until the first vozelization is done.\r\n this._renderPipeline.onVoxelizationCompleteObservable.addOnce(() => {\r\n if (this._scene.geometryBufferRenderer) {\r\n this._scene.geometryBufferRenderer.getGBuffer().onAfterRenderObservable.add(this._renderWhenGBufferReady);\r\n }\r\n });\r\n\r\n // Create the accumulation texture for the previous frame.\r\n // We'll copy the output of the accumulation pass to this texture at the start of every frame.\r\n const accumulationOptions: IProceduralTextureCreationOptions = {\r\n type: Constants.TEXTURETYPE_HALF_FLOAT,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../../ShadersWGSL/pass.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/pass.fragment\")]);\r\n }\r\n },\r\n };\r\n\r\n this._oldAccumulationCopy = new ProceduralTexture(\r\n \"oldAccumulationRT\",\r\n { width: this._engine.getRenderWidth(), height: this._engine.getRenderHeight() },\r\n \"pass\",\r\n this._scene,\r\n accumulationOptions,\r\n false\r\n );\r\n\r\n this._oldAccumulationCopy.autoClear = false;\r\n this._oldAccumulationCopy.refreshRate = 1;\r\n this._oldAccumulationCopy.onBeforeGenerationObservable.add(this._setAccumulationCopyBindings.bind(this));\r\n this._setAccumulationCopyBindings();\r\n\r\n // Create the local position texture for the previous frame.\r\n // We'll copy the previous local position texture to this texture at the start of every frame.\r\n const localPositionOptions: IProceduralTextureCreationOptions = {\r\n type: Constants.TEXTURETYPE_HALF_FLOAT,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../../ShadersWGSL/pass.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/pass.fragment\")]);\r\n }\r\n },\r\n };\r\n\r\n this._oldPositionCopy = new ProceduralTexture(\r\n \"oldLocalPositionRT\",\r\n { width: this._engine.getRenderWidth(), height: this._engine.getRenderHeight() },\r\n \"pass\",\r\n this._scene,\r\n localPositionOptions,\r\n false\r\n );\r\n this._updatePositionCopy();\r\n this._oldPositionCopy.autoClear = false;\r\n this._oldPositionCopy.refreshRate = 1;\r\n this._oldPositionCopy.onBeforeGenerationObservable.add(this._updatePositionCopy.bind(this));\r\n }\r\n\r\n private _setOutputTextureBindings(): boolean {\r\n const remanence = this._isMoving ? this.remanence : 0.99;\r\n this._accumulationParams.set(remanence, this.reset ? 1.0 : 0.0, this._renderPipeline.voxelGridSize, 0.0);\r\n this._outputTexture.setTexture(\"spatialBlurSampler\", this._renderPipeline._getSpatialBlurTexture());\r\n this._outputTexture.setVector4(\"accumulationParameters\", this._accumulationParams);\r\n this._outputTexture.setTexture(\"oldAccumulationSampler\", this._oldAccumulationCopy ? this._oldAccumulationCopy : this._renderPipeline._dummyTexture2d);\r\n this._outputTexture.setTexture(\"prevPositionSampler\", this._oldPositionCopy ? this._oldPositionCopy : this._renderPipeline._dummyTexture2d);\r\n\r\n const geometryBufferRenderer = this._scene.geometryBufferRenderer;\r\n if (!geometryBufferRenderer) {\r\n return false;\r\n }\r\n const velocityIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.VELOCITY_LINEAR_TEXTURE_TYPE);\r\n this._outputTexture.setTexture(\"motionSampler\", geometryBufferRenderer.getGBuffer().textures[velocityIndex]);\r\n const wPositionIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.POSITION_TEXTURE_TYPE);\r\n this._outputTexture.setTexture(\"positionSampler\", geometryBufferRenderer.getGBuffer().textures[wPositionIndex]);\r\n\r\n this.reset = false;\r\n this._isMoving = false;\r\n return true;\r\n }\r\n\r\n private _updatePositionCopy() {\r\n const geometryBufferRenderer = this._scene.geometryBufferRenderer;\r\n if (geometryBufferRenderer) {\r\n const index = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.POSITION_TEXTURE_TYPE);\r\n this._oldPositionCopy.setTexture(\"textureSampler\", geometryBufferRenderer.getGBuffer().textures[index]);\r\n }\r\n }\r\n\r\n private _setAccumulationCopyBindings() {\r\n this._oldAccumulationCopy.setTexture(\"textureSampler\", this._outputTexture);\r\n }\r\n\r\n private _render() {\r\n if (this.enabled && this._outputTexture.isReady() && this._outputTexture.getEffect()?.isReady()) {\r\n if (this._setOutputTextureBindings()) {\r\n this._outputTexture.render();\r\n }\r\n }\r\n }\r\n\r\n private _renderWhenGBufferReady: Nullable<(eventData: number, eventState: EventState) => void> = null;\r\n\r\n /**\r\n * Called by render pipeline when canvas resized.\r\n * @param scaleFactor The factor by which to scale the canvas size.\r\n */\r\n public resize(scaleFactor: number = 1.0) {\r\n const newSize = {\r\n width: Math.max(1.0, Math.floor(this._engine.getRenderWidth() * scaleFactor)),\r\n height: Math.max(1.0, Math.floor(this._engine.getRenderHeight() * scaleFactor)),\r\n };\r\n // Don't resize if the size is the same as the current size.\r\n if (this._outputTexture.getSize().width === newSize.width && this._outputTexture.getSize().height === newSize.height) {\r\n return;\r\n }\r\n this._outputTexture.resize(newSize, false);\r\n this._oldAccumulationCopy.resize(newSize, false);\r\n this._oldPositionCopy.resize({ width: this._engine.getRenderWidth(), height: this._engine.getRenderHeight() }, false);\r\n this.reset = true;\r\n }\r\n\r\n private _disposeTextures() {\r\n this._oldAccumulationCopy.dispose();\r\n this._oldPositionCopy.dispose();\r\n this._outputTexture.dispose();\r\n }\r\n\r\n /**\r\n * Checks if the pass is ready\r\n * @returns true if the pass is ready\r\n */\r\n public isReady() {\r\n return (\r\n this._oldAccumulationCopy &&\r\n this._oldAccumulationCopy.isReady() &&\r\n this._oldPositionCopy &&\r\n this._oldPositionCopy.isReady() &&\r\n this._outputTexture.isReady() &&\r\n !(this._debugPassPP && !this._debugPassPP.isReady())\r\n );\r\n }\r\n\r\n /**\r\n * Disposes the associated resources\r\n */\r\n public dispose() {\r\n if (this._scene.geometryBufferRenderer && this._renderWhenGBufferReady) {\r\n const gBuffer = this._scene.geometryBufferRenderer.getGBuffer();\r\n gBuffer.onAfterRenderObservable.removeCallback(this._renderWhenGBufferReady);\r\n }\r\n this._disposeTextures();\r\n if (this._debugPassPP) {\r\n this._debugPassPP.dispose();\r\n }\r\n this.onReadyObservable.clear();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"iblShadowsAccumulationPass.js","sourceRoot":"","sources":["../../../../../dev/core/src/Rendering/IBLShadows/iblShadowsAccumulationPass.ts"],"names":[],"mappings":"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","sourcesContent":["import { Constants } from \"../../Engines/constants\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine\";\r\nimport { type Scene } from \"../../scene\";\r\nimport { Vector4 } from \"../../Maths/math.vector.pure\";\r\nimport { PostProcess, type PostProcessOptions } from \"../../PostProcesses/postProcess.pure\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { GeometryBufferRenderer } from \"../../Rendering/geometryBufferRenderer.pure\";\r\nimport { ProceduralTexture, type IProceduralTextureCreationOptions } from \"core/Materials/Textures/Procedurals/proceduralTexture.pure\";\r\nimport { type IblShadowsRenderPipeline } from \"./iblShadowsRenderPipeline\";\r\nimport { Observable, type EventState } from \"../../Misc/observable\";\r\nimport { type Nullable } from \"../../types\";\r\n\r\n/**\r\n * This should not be instantiated directly, as it is part of a scene component\r\n * @internal\r\n */\r\nexport class _IblShadowsAccumulationPass {\r\n private _scene: Scene;\r\n private _engine: AbstractEngine;\r\n private _renderPipeline: IblShadowsRenderPipeline;\r\n\r\n // First, render the accumulation pass with both position buffers, motion buffer, shadow buffer, and the previous accumulation buffer\r\n private _outputTexture: ProceduralTexture;\r\n private _oldAccumulationCopy: ProceduralTexture;\r\n private _oldPositionCopy: ProceduralTexture;\r\n private _accumulationParams: Vector4 = new Vector4(0.0, 0.0, 0.0, 0.0);\r\n\r\n /** Enable the debug view for this pass */\r\n public debugEnabled: boolean = false;\r\n\r\n /**\r\n * Is the effect enabled\r\n */\r\n public enabled: boolean = true;\r\n\r\n /**\r\n * Returns the output texture of the pass.\r\n * @returns The output texture.\r\n */\r\n public getOutputTexture(): ProceduralTexture {\r\n return this._outputTexture;\r\n }\r\n\r\n /**\r\n * Observable that triggers when the accumulation texture is ready\r\n */\r\n public onReadyObservable: Observable<void> = new Observable<void>();\r\n\r\n /**\r\n * Gets the debug pass post process\r\n * @returns The post process\r\n */\r\n public getDebugPassPP(): PostProcess {\r\n if (!this._debugPassPP) {\r\n this._createDebugPass();\r\n }\r\n return this._debugPassPP;\r\n }\r\n\r\n private _debugPassName: string = \"Shadow Accumulation Debug Pass\";\r\n\r\n /**\r\n * Gets the name of the debug pass\r\n * @returns The name of the debug pass\r\n */\r\n public get debugPassName(): string {\r\n return this._debugPassName;\r\n }\r\n\r\n /**\r\n * A value that controls how much of the previous frame's accumulation to keep.\r\n * The higher the value, the faster the shadows accumulate but the more potential ghosting you'll see.\r\n */\r\n public get remanence(): number {\r\n return this._remanence;\r\n }\r\n\r\n /**\r\n * A value that controls how much of the previous frame's accumulation to keep.\r\n * The higher the value, the faster the shadows accumulate but the more potential ghosting you'll see.\r\n */\r\n public set remanence(value: number) {\r\n this._remanence = value;\r\n }\r\n private _remanence: number = 0.9;\r\n\r\n /**\r\n * Reset the accumulation.\r\n */\r\n public get reset(): boolean {\r\n return this._reset;\r\n }\r\n /**\r\n * Reset the accumulation.\r\n */\r\n public set reset(value: boolean) {\r\n this._reset = value;\r\n }\r\n private _reset: boolean = true;\r\n\r\n /**\r\n * Tell the pass that the camera is moving. This will cause the accumulation\r\n * rate to change.\r\n */\r\n public set isMoving(value: boolean) {\r\n this._isMoving = value;\r\n }\r\n private _isMoving: boolean = false;\r\n\r\n private _debugPassPP: PostProcess;\r\n private _debugSizeParams: Vector4 = new Vector4(0.0, 0.0, 0.0, 0.0);\r\n\r\n /**\r\n * Sets params that control the position and scaling of the debug display on the screen.\r\n * @param x Screen X offset of the debug display (0-1)\r\n * @param y Screen Y offset of the debug display (0-1)\r\n * @param widthScale X scale of the debug display (0-1)\r\n * @param heightScale Y scale of the debug display (0-1)\r\n */\r\n public setDebugDisplayParams(x: number, y: number, widthScale: number, heightScale: number) {\r\n this._debugSizeParams.set(x, y, widthScale, heightScale);\r\n }\r\n\r\n /**\r\n * Creates the debug post process effect for this pass\r\n */\r\n private _createDebugPass() {\r\n if (!this._debugPassPP) {\r\n const isWebGPU = this._engine.isWebGPU;\r\n const debugOptions: PostProcessOptions = {\r\n width: this._engine.getRenderWidth(),\r\n height: this._engine.getRenderHeight(),\r\n textureFormat: Constants.TEXTUREFORMAT_RGBA,\r\n textureType: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n uniforms: [\"sizeParams\"],\r\n samplers: [\"debugSampler\"],\r\n engine: this._engine,\r\n reusable: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializations: (useWebGPU: boolean, list: Promise<any>[]) => {\r\n if (useWebGPU) {\r\n list.push(import(\"../../ShadersWGSL/iblShadowDebug.fragment\"));\r\n } else {\r\n list.push(import(\"../../Shaders/iblShadowDebug.fragment\"));\r\n }\r\n },\r\n };\r\n this._debugPassPP = new PostProcess(this.debugPassName, \"iblShadowDebug\", debugOptions);\r\n this._debugPassPP.autoClear = false;\r\n this._debugPassPP.onApplyObservable.add((effect) => {\r\n // update the caustic texture with what we just rendered.\r\n effect.setTexture(\"debugSampler\", this._outputTexture);\r\n effect.setVector4(\"sizeParams\", this._debugSizeParams);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Instantiates the accumulation pass\r\n * @param scene Scene to attach to\r\n * @param iblShadowsRenderPipeline The IBL shadows render pipeline\r\n * @returns The accumulation pass\r\n */\r\n constructor(scene: Scene, iblShadowsRenderPipeline: IblShadowsRenderPipeline) {\r\n this._scene = scene;\r\n this._engine = scene.getEngine();\r\n this._renderPipeline = iblShadowsRenderPipeline;\r\n this._createTextures();\r\n }\r\n\r\n private _createTextures() {\r\n const isWebGPU = this._engine.isWebGPU;\r\n\r\n const outputTextureOptions: IProceduralTextureCreationOptions = {\r\n type: Constants.TEXTURETYPE_HALF_FLOAT,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../../ShadersWGSL/iblShadowAccumulation.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/iblShadowAccumulation.fragment\")]);\r\n }\r\n },\r\n };\r\n this._outputTexture = new ProceduralTexture(\r\n \"shadowAccumulationPass\",\r\n {\r\n width: this._engine.getRenderWidth(),\r\n height: this._engine.getRenderHeight(),\r\n },\r\n \"iblShadowAccumulation\",\r\n this._scene,\r\n outputTextureOptions\r\n );\r\n this._outputTexture.refreshRate = -1;\r\n this._outputTexture.autoClear = false;\r\n this._outputTexture.onGeneratedObservable.addOnce(() => {\r\n this.onReadyObservable.notifyObservers();\r\n });\r\n\r\n // Need to set all the textures first so that the effect gets created with the proper uniforms.\r\n this._setOutputTextureBindings();\r\n\r\n this._renderWhenGBufferReady = this._render.bind(this);\r\n // Don't start rendering until the first vozelization is done.\r\n this._renderPipeline.onVoxelizationCompleteObservable.addOnce(() => {\r\n if (this._scene.geometryBufferRenderer) {\r\n this._scene.geometryBufferRenderer.getGBuffer().onAfterRenderObservable.add(this._renderWhenGBufferReady);\r\n }\r\n });\r\n\r\n // Create the accumulation texture for the previous frame.\r\n // We'll copy the output of the accumulation pass to this texture at the start of every frame.\r\n const accumulationOptions: IProceduralTextureCreationOptions = {\r\n type: Constants.TEXTURETYPE_HALF_FLOAT,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../../ShadersWGSL/pass.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/pass.fragment\")]);\r\n }\r\n },\r\n };\r\n\r\n this._oldAccumulationCopy = new ProceduralTexture(\r\n \"oldAccumulationRT\",\r\n { width: this._engine.getRenderWidth(), height: this._engine.getRenderHeight() },\r\n \"pass\",\r\n this._scene,\r\n accumulationOptions,\r\n false\r\n );\r\n\r\n this._oldAccumulationCopy.autoClear = false;\r\n this._oldAccumulationCopy.refreshRate = 1;\r\n this._oldAccumulationCopy.onBeforeGenerationObservable.add(this._setAccumulationCopyBindings.bind(this));\r\n this._setAccumulationCopyBindings();\r\n\r\n // Create the local position texture for the previous frame.\r\n // We'll copy the previous local position texture to this texture at the start of every frame.\r\n const localPositionOptions: IProceduralTextureCreationOptions = {\r\n type: Constants.TEXTURETYPE_HALF_FLOAT,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../../ShadersWGSL/pass.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/pass.fragment\")]);\r\n }\r\n },\r\n };\r\n\r\n this._oldPositionCopy = new ProceduralTexture(\r\n \"oldLocalPositionRT\",\r\n { width: this._engine.getRenderWidth(), height: this._engine.getRenderHeight() },\r\n \"pass\",\r\n this._scene,\r\n localPositionOptions,\r\n false\r\n );\r\n this._updatePositionCopy();\r\n this._oldPositionCopy.autoClear = false;\r\n this._oldPositionCopy.refreshRate = 1;\r\n this._oldPositionCopy.onBeforeGenerationObservable.add(this._updatePositionCopy.bind(this));\r\n }\r\n\r\n private _setOutputTextureBindings(): boolean {\r\n const remanence = this._isMoving ? this.remanence : 0.99;\r\n this._accumulationParams.set(remanence, this.reset ? 1.0 : 0.0, this._renderPipeline.voxelGridSize, 0.0);\r\n this._outputTexture.setTexture(\"spatialBlurSampler\", this._renderPipeline._getSpatialBlurTexture());\r\n this._outputTexture.setVector4(\"accumulationParameters\", this._accumulationParams);\r\n this._outputTexture.setTexture(\"oldAccumulationSampler\", this._oldAccumulationCopy ? this._oldAccumulationCopy : this._renderPipeline._dummyTexture2d);\r\n this._outputTexture.setTexture(\"prevPositionSampler\", this._oldPositionCopy ? this._oldPositionCopy : this._renderPipeline._dummyTexture2d);\r\n\r\n const geometryBufferRenderer = this._scene.geometryBufferRenderer;\r\n if (!geometryBufferRenderer) {\r\n return false;\r\n }\r\n const velocityIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.VELOCITY_LINEAR_TEXTURE_TYPE);\r\n this._outputTexture.setTexture(\"motionSampler\", geometryBufferRenderer.getGBuffer().textures[velocityIndex]);\r\n const wPositionIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.POSITION_TEXTURE_TYPE);\r\n this._outputTexture.setTexture(\"positionSampler\", geometryBufferRenderer.getGBuffer().textures[wPositionIndex]);\r\n\r\n this.reset = false;\r\n this._isMoving = false;\r\n return true;\r\n }\r\n\r\n private _updatePositionCopy() {\r\n const geometryBufferRenderer = this._scene.geometryBufferRenderer;\r\n if (geometryBufferRenderer) {\r\n const index = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.POSITION_TEXTURE_TYPE);\r\n this._oldPositionCopy.setTexture(\"textureSampler\", geometryBufferRenderer.getGBuffer().textures[index]);\r\n }\r\n }\r\n\r\n private _setAccumulationCopyBindings() {\r\n this._oldAccumulationCopy.setTexture(\"textureSampler\", this._outputTexture);\r\n }\r\n\r\n private _render() {\r\n if (this.enabled && this._outputTexture.isReady() && this._outputTexture.getEffect()?.isReady()) {\r\n if (this._setOutputTextureBindings()) {\r\n this._outputTexture.render();\r\n }\r\n }\r\n }\r\n\r\n private _renderWhenGBufferReady: Nullable<(eventData: number, eventState: EventState) => void> = null;\r\n\r\n /**\r\n * Called by render pipeline when canvas resized.\r\n * @param scaleFactor The factor by which to scale the canvas size.\r\n */\r\n public resize(scaleFactor: number = 1.0) {\r\n const newSize = {\r\n width: Math.max(1.0, Math.floor(this._engine.getRenderWidth() * scaleFactor)),\r\n height: Math.max(1.0, Math.floor(this._engine.getRenderHeight() * scaleFactor)),\r\n };\r\n // Don't resize if the size is the same as the current size.\r\n if (this._outputTexture.getSize().width === newSize.width && this._outputTexture.getSize().height === newSize.height) {\r\n return;\r\n }\r\n this._outputTexture.resize(newSize, false);\r\n this._oldAccumulationCopy.resize(newSize, false);\r\n this._oldPositionCopy.resize({ width: this._engine.getRenderWidth(), height: this._engine.getRenderHeight() }, false);\r\n this.reset = true;\r\n }\r\n\r\n private _disposeTextures() {\r\n this._oldAccumulationCopy.dispose();\r\n this._oldPositionCopy.dispose();\r\n this._outputTexture.dispose();\r\n }\r\n\r\n /**\r\n * Checks if the pass is ready\r\n * @returns true if the pass is ready\r\n */\r\n public isReady() {\r\n return (\r\n this._oldAccumulationCopy &&\r\n this._oldAccumulationCopy.isReady() &&\r\n this._oldPositionCopy &&\r\n this._oldPositionCopy.isReady() &&\r\n this._outputTexture.isReady() &&\r\n !(this._debugPassPP && !this._debugPassPP.isReady())\r\n );\r\n }\r\n\r\n /**\r\n * Disposes the associated resources\r\n */\r\n public dispose() {\r\n if (this._scene.geometryBufferRenderer && this._renderWhenGBufferReady) {\r\n const gBuffer = this._scene.geometryBufferRenderer.getGBuffer();\r\n gBuffer.onAfterRenderObservable.removeCallback(this._renderWhenGBufferReady);\r\n }\r\n this._disposeTextures();\r\n if (this._debugPassPP) {\r\n this._debugPassPP.dispose();\r\n }\r\n this.onReadyObservable.clear();\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
1
  import { type Scene } from "../../scene.js";
2
- import { PostProcess } from "../../PostProcesses/postProcess.js";
3
- import { ProceduralTexture } from "../../Materials/Textures/Procedurals/proceduralTexture.js";
2
+ import { PostProcess } from "../../PostProcesses/postProcess.pure.js";
3
+ import { ProceduralTexture } from "../../Materials/Textures/Procedurals/proceduralTexture.pure.js";
4
4
  import { type IblShadowsRenderPipeline } from "./iblShadowsRenderPipeline.js";
5
5
  /**
6
6
  * This should not be instanciated directly, as it is part of a scene component
@@ -1,8 +1,8 @@
1
1
 
2
- import { Vector4 } from "../../Maths/math.vector.js";
3
- import { PostProcess } from "../../PostProcesses/postProcess.js";
4
- import { GeometryBufferRenderer } from "../../Rendering/geometryBufferRenderer.js";
5
- import { ProceduralTexture } from "../../Materials/Textures/Procedurals/proceduralTexture.js";
2
+ import { Vector4 } from "../../Maths/math.vector.pure.js";
3
+ import { PostProcess } from "../../PostProcesses/postProcess.pure.js";
4
+ import { GeometryBufferRenderer } from "../../Rendering/geometryBufferRenderer.pure.js";
5
+ import { ProceduralTexture } from "../../Materials/Textures/Procedurals/proceduralTexture.pure.js";
6
6
  /**
7
7
  * This should not be instanciated directly, as it is part of a scene component
8
8
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"iblShadowsSpatialBlurPass.js","sourceRoot":"","sources":["../../../../../dev/core/src/Rendering/IBLShadows/iblShadowsSpatialBlurPass.ts"],"names":[],"mappings":"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","sourcesContent":["import { Constants } from \"../../Engines/constants\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine\";\r\nimport { type Scene } from \"../../scene\";\r\nimport { Vector4 } from \"../../Maths/math.vector\";\r\nimport { PostProcess, type PostProcessOptions } from \"../../PostProcesses/postProcess\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { GeometryBufferRenderer } from \"../../Rendering/geometryBufferRenderer\";\r\nimport { ProceduralTexture, type IProceduralTextureCreationOptions } from \"core/Materials/Textures/Procedurals/proceduralTexture\";\r\nimport { type IblShadowsRenderPipeline } from \"./iblShadowsRenderPipeline\";\r\nimport { type EventState } from \"../../Misc/observable\";\r\nimport { type Nullable } from \"../../types\";\r\n\r\n/**\r\n * This should not be instanciated directly, as it is part of a scene component\r\n * @internal\r\n */\r\nexport class _IblShadowsSpatialBlurPass {\r\n private _scene: Scene;\r\n private _engine: AbstractEngine;\r\n private _renderPipeline: IblShadowsRenderPipeline;\r\n private _outputTexture: ProceduralTexture;\r\n private _worldScale: number = 1.0;\r\n private _blurParameters: Vector4 = new Vector4(0.0, 0.0, 0.0, 0.0);\r\n\r\n /**\r\n * Is the effect enabled\r\n */\r\n public enabled: boolean = true;\r\n\r\n /**\r\n * Returns the output texture of the pass.\r\n * @returns The output texture.\r\n */\r\n public getOutputTexture(): ProceduralTexture {\r\n return this._outputTexture;\r\n }\r\n\r\n /**\r\n * Gets the debug pass post process\r\n * @returns The post process\r\n */\r\n public getDebugPassPP(): PostProcess {\r\n if (!this._debugPassPP) {\r\n this._createDebugPass();\r\n }\r\n return this._debugPassPP;\r\n }\r\n private _debugPassName: string = \"Spatial Blur Debug Pass\";\r\n /**\r\n * Sets the name of the debug pass\r\n */\r\n public get debugPassName(): string {\r\n return this._debugPassName;\r\n }\r\n\r\n /**\r\n * The scale of the voxel grid in world space. This is used to scale the blur radius in world space.\r\n * @param scale The scale of the voxel grid in world space.\r\n */\r\n public setWorldScale(scale: number) {\r\n this._worldScale = scale;\r\n }\r\n\r\n /** Enable the debug view for this pass */\r\n public debugEnabled: boolean = false;\r\n private _debugPassPP: PostProcess;\r\n private _debugSizeParams: Vector4 = new Vector4(0.0, 0.0, 0.0, 0.0);\r\n\r\n /**\r\n * Sets params that control the position and scaling of the debug display on the screen.\r\n * @param x Screen X offset of the debug display (0-1)\r\n * @param y Screen Y offset of the debug display (0-1)\r\n * @param widthScale X scale of the debug display (0-1)\r\n * @param heightScale Y scale of the debug display (0-1)\r\n */\r\n public setDebugDisplayParams(x: number, y: number, widthScale: number, heightScale: number) {\r\n this._debugSizeParams.set(x, y, widthScale, heightScale);\r\n }\r\n\r\n /**\r\n * Creates the debug post process effect for this pass\r\n */\r\n private _createDebugPass() {\r\n if (!this._debugPassPP) {\r\n const isWebGPU = this._engine.isWebGPU;\r\n const debugOptions: PostProcessOptions = {\r\n width: this._engine.getRenderWidth(),\r\n height: this._engine.getRenderHeight(),\r\n textureFormat: Constants.TEXTUREFORMAT_RGBA,\r\n textureType: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n uniforms: [\"sizeParams\"],\r\n samplers: [\"debugSampler\"],\r\n engine: this._engine,\r\n reusable: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializations: (useWebGPU: boolean, list: Promise<any>[]) => {\r\n if (useWebGPU) {\r\n list.push(import(\"../../ShadersWGSL/iblShadowDebug.fragment\"));\r\n } else {\r\n list.push(import(\"../../Shaders/iblShadowDebug.fragment\"));\r\n }\r\n },\r\n };\r\n this._debugPassPP = new PostProcess(this.debugPassName, \"iblShadowDebug\", debugOptions);\r\n this._debugPassPP.autoClear = false;\r\n this._debugPassPP.onApplyObservable.add((effect) => {\r\n // update the caustic texture with what we just rendered.\r\n effect.setTexture(\"debugSampler\", this._outputTexture);\r\n effect.setVector4(\"sizeParams\", this._debugSizeParams);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Instanciates the importance sampling renderer\r\n * @param scene Scene to attach to\r\n * @param iblShadowsRenderPipeline The IBL shadows render pipeline\r\n * @returns The importance sampling renderer\r\n */\r\n constructor(scene: Scene, iblShadowsRenderPipeline: IblShadowsRenderPipeline) {\r\n this._scene = scene;\r\n this._engine = scene.getEngine();\r\n this._renderPipeline = iblShadowsRenderPipeline;\r\n this._createTextures();\r\n }\r\n\r\n private _createTextures() {\r\n const isWebGPU = this._engine.isWebGPU;\r\n const textureOptions: IProceduralTextureCreationOptions = {\r\n type: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../../ShadersWGSL/iblShadowSpatialBlur.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/iblShadowSpatialBlur.fragment\")]);\r\n }\r\n },\r\n };\r\n this._outputTexture = new ProceduralTexture(\r\n \"spatialBlurPass\",\r\n {\r\n width: this._engine.getRenderWidth(),\r\n height: this._engine.getRenderHeight(),\r\n },\r\n \"iblShadowSpatialBlur\",\r\n this._scene,\r\n textureOptions,\r\n false,\r\n false,\r\n Constants.TEXTURETYPE_UNSIGNED_BYTE\r\n );\r\n this._outputTexture.refreshRate = -1;\r\n this._outputTexture.autoClear = false;\r\n\r\n // Need to set all the textures first so that the effect gets created with the proper uniforms.\r\n this._setBindings();\r\n\r\n this._renderWhenGBufferReady = this._render.bind(this);\r\n // Don't start rendering until the first vozelization is done.\r\n this._renderPipeline.onVoxelizationCompleteObservable.addOnce(() => {\r\n if (this._scene.geometryBufferRenderer) {\r\n this._scene.geometryBufferRenderer.getGBuffer().onAfterRenderObservable.add(this._renderWhenGBufferReady);\r\n }\r\n });\r\n }\r\n\r\n private _setBindings(): boolean {\r\n this._outputTexture.setTexture(\"voxelTracingSampler\", this._renderPipeline._getVoxelTracingTexture());\r\n const iterationCount = 1;\r\n this._blurParameters.set(iterationCount, this._worldScale, 0.0, 0.0);\r\n this._outputTexture.setVector4(\"blurParameters\", this._blurParameters);\r\n const geometryBufferRenderer = this._scene.geometryBufferRenderer;\r\n if (!geometryBufferRenderer) {\r\n return false;\r\n }\r\n const depthIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.SCREENSPACE_DEPTH_TEXTURE_TYPE);\r\n this._outputTexture.setTexture(\"depthSampler\", geometryBufferRenderer.getGBuffer().textures[depthIndex]);\r\n const wnormalIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.NORMAL_TEXTURE_TYPE);\r\n this._outputTexture.setTexture(\"worldNormalSampler\", geometryBufferRenderer.getGBuffer().textures[wnormalIndex]);\r\n return true;\r\n }\r\n\r\n private _render() {\r\n if (this.enabled && this._outputTexture.isReady() && this._outputTexture.getEffect()?.isReady()) {\r\n if (this._setBindings()) {\r\n this._outputTexture.render();\r\n }\r\n }\r\n }\r\n\r\n private _renderWhenGBufferReady: Nullable<(eventData: number, eventState: EventState) => void> = null;\r\n\r\n /**\r\n * Called by render pipeline when canvas resized.\r\n * @param scaleFactor The factor by which to scale the canvas size.\r\n */\r\n public resize(scaleFactor: number = 1.0) {\r\n const newSize = {\r\n width: Math.max(1.0, Math.floor(this._engine.getRenderWidth() * scaleFactor)),\r\n height: Math.max(1.0, Math.floor(this._engine.getRenderHeight() * scaleFactor)),\r\n };\r\n // Don't resize if the size is the same as the current size.\r\n if (this._outputTexture.getSize().width === newSize.width && this._outputTexture.getSize().height === newSize.height) {\r\n return;\r\n }\r\n this._outputTexture.resize(newSize, false);\r\n }\r\n\r\n /**\r\n * Checks if the pass is ready\r\n * @returns true if the pass is ready\r\n */\r\n public isReady() {\r\n return this._outputTexture.isReady() && !(this._debugPassPP && !this._debugPassPP.isReady());\r\n }\r\n\r\n /**\r\n * Disposes the associated resources\r\n */\r\n public dispose() {\r\n if (this._scene.geometryBufferRenderer && this._renderWhenGBufferReady) {\r\n const gBuffer = this._scene.geometryBufferRenderer.getGBuffer();\r\n gBuffer.onAfterRenderObservable.removeCallback(this._renderWhenGBufferReady);\r\n }\r\n this._outputTexture.dispose();\r\n if (this._debugPassPP) {\r\n this._debugPassPP.dispose();\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"iblShadowsSpatialBlurPass.js","sourceRoot":"","sources":["../../../../../dev/core/src/Rendering/IBLShadows/iblShadowsSpatialBlurPass.ts"],"names":[],"mappings":"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","sourcesContent":["import { Constants } from \"../../Engines/constants\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine\";\r\nimport { type Scene } from \"../../scene\";\r\nimport { Vector4 } from \"../../Maths/math.vector.pure\";\r\nimport { PostProcess, type PostProcessOptions } from \"../../PostProcesses/postProcess.pure\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { GeometryBufferRenderer } from \"../../Rendering/geometryBufferRenderer.pure\";\r\nimport { ProceduralTexture, type IProceduralTextureCreationOptions } from \"core/Materials/Textures/Procedurals/proceduralTexture.pure\";\r\nimport { type IblShadowsRenderPipeline } from \"./iblShadowsRenderPipeline\";\r\nimport { type EventState } from \"../../Misc/observable\";\r\nimport { type Nullable } from \"../../types\";\r\n\r\n/**\r\n * This should not be instanciated directly, as it is part of a scene component\r\n * @internal\r\n */\r\nexport class _IblShadowsSpatialBlurPass {\r\n private _scene: Scene;\r\n private _engine: AbstractEngine;\r\n private _renderPipeline: IblShadowsRenderPipeline;\r\n private _outputTexture: ProceduralTexture;\r\n private _worldScale: number = 1.0;\r\n private _blurParameters: Vector4 = new Vector4(0.0, 0.0, 0.0, 0.0);\r\n\r\n /**\r\n * Is the effect enabled\r\n */\r\n public enabled: boolean = true;\r\n\r\n /**\r\n * Returns the output texture of the pass.\r\n * @returns The output texture.\r\n */\r\n public getOutputTexture(): ProceduralTexture {\r\n return this._outputTexture;\r\n }\r\n\r\n /**\r\n * Gets the debug pass post process\r\n * @returns The post process\r\n */\r\n public getDebugPassPP(): PostProcess {\r\n if (!this._debugPassPP) {\r\n this._createDebugPass();\r\n }\r\n return this._debugPassPP;\r\n }\r\n private _debugPassName: string = \"Spatial Blur Debug Pass\";\r\n /**\r\n * Sets the name of the debug pass\r\n */\r\n public get debugPassName(): string {\r\n return this._debugPassName;\r\n }\r\n\r\n /**\r\n * The scale of the voxel grid in world space. This is used to scale the blur radius in world space.\r\n * @param scale The scale of the voxel grid in world space.\r\n */\r\n public setWorldScale(scale: number) {\r\n this._worldScale = scale;\r\n }\r\n\r\n /** Enable the debug view for this pass */\r\n public debugEnabled: boolean = false;\r\n private _debugPassPP: PostProcess;\r\n private _debugSizeParams: Vector4 = new Vector4(0.0, 0.0, 0.0, 0.0);\r\n\r\n /**\r\n * Sets params that control the position and scaling of the debug display on the screen.\r\n * @param x Screen X offset of the debug display (0-1)\r\n * @param y Screen Y offset of the debug display (0-1)\r\n * @param widthScale X scale of the debug display (0-1)\r\n * @param heightScale Y scale of the debug display (0-1)\r\n */\r\n public setDebugDisplayParams(x: number, y: number, widthScale: number, heightScale: number) {\r\n this._debugSizeParams.set(x, y, widthScale, heightScale);\r\n }\r\n\r\n /**\r\n * Creates the debug post process effect for this pass\r\n */\r\n private _createDebugPass() {\r\n if (!this._debugPassPP) {\r\n const isWebGPU = this._engine.isWebGPU;\r\n const debugOptions: PostProcessOptions = {\r\n width: this._engine.getRenderWidth(),\r\n height: this._engine.getRenderHeight(),\r\n textureFormat: Constants.TEXTUREFORMAT_RGBA,\r\n textureType: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n uniforms: [\"sizeParams\"],\r\n samplers: [\"debugSampler\"],\r\n engine: this._engine,\r\n reusable: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializations: (useWebGPU: boolean, list: Promise<any>[]) => {\r\n if (useWebGPU) {\r\n list.push(import(\"../../ShadersWGSL/iblShadowDebug.fragment\"));\r\n } else {\r\n list.push(import(\"../../Shaders/iblShadowDebug.fragment\"));\r\n }\r\n },\r\n };\r\n this._debugPassPP = new PostProcess(this.debugPassName, \"iblShadowDebug\", debugOptions);\r\n this._debugPassPP.autoClear = false;\r\n this._debugPassPP.onApplyObservable.add((effect) => {\r\n // update the caustic texture with what we just rendered.\r\n effect.setTexture(\"debugSampler\", this._outputTexture);\r\n effect.setVector4(\"sizeParams\", this._debugSizeParams);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Instanciates the importance sampling renderer\r\n * @param scene Scene to attach to\r\n * @param iblShadowsRenderPipeline The IBL shadows render pipeline\r\n * @returns The importance sampling renderer\r\n */\r\n constructor(scene: Scene, iblShadowsRenderPipeline: IblShadowsRenderPipeline) {\r\n this._scene = scene;\r\n this._engine = scene.getEngine();\r\n this._renderPipeline = iblShadowsRenderPipeline;\r\n this._createTextures();\r\n }\r\n\r\n private _createTextures() {\r\n const isWebGPU = this._engine.isWebGPU;\r\n const textureOptions: IProceduralTextureCreationOptions = {\r\n type: Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n generateDepthBuffer: false,\r\n generateMipMaps: false,\r\n shaderLanguage: isWebGPU ? ShaderLanguage.WGSL : ShaderLanguage.GLSL,\r\n extraInitializationsAsync: async () => {\r\n if (isWebGPU) {\r\n await Promise.all([import(\"../../ShadersWGSL/iblShadowSpatialBlur.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/iblShadowSpatialBlur.fragment\")]);\r\n }\r\n },\r\n };\r\n this._outputTexture = new ProceduralTexture(\r\n \"spatialBlurPass\",\r\n {\r\n width: this._engine.getRenderWidth(),\r\n height: this._engine.getRenderHeight(),\r\n },\r\n \"iblShadowSpatialBlur\",\r\n this._scene,\r\n textureOptions,\r\n false,\r\n false,\r\n Constants.TEXTURETYPE_UNSIGNED_BYTE\r\n );\r\n this._outputTexture.refreshRate = -1;\r\n this._outputTexture.autoClear = false;\r\n\r\n // Need to set all the textures first so that the effect gets created with the proper uniforms.\r\n this._setBindings();\r\n\r\n this._renderWhenGBufferReady = this._render.bind(this);\r\n // Don't start rendering until the first vozelization is done.\r\n this._renderPipeline.onVoxelizationCompleteObservable.addOnce(() => {\r\n if (this._scene.geometryBufferRenderer) {\r\n this._scene.geometryBufferRenderer.getGBuffer().onAfterRenderObservable.add(this._renderWhenGBufferReady);\r\n }\r\n });\r\n }\r\n\r\n private _setBindings(): boolean {\r\n this._outputTexture.setTexture(\"voxelTracingSampler\", this._renderPipeline._getVoxelTracingTexture());\r\n const iterationCount = 1;\r\n this._blurParameters.set(iterationCount, this._worldScale, 0.0, 0.0);\r\n this._outputTexture.setVector4(\"blurParameters\", this._blurParameters);\r\n const geometryBufferRenderer = this._scene.geometryBufferRenderer;\r\n if (!geometryBufferRenderer) {\r\n return false;\r\n }\r\n const depthIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.SCREENSPACE_DEPTH_TEXTURE_TYPE);\r\n this._outputTexture.setTexture(\"depthSampler\", geometryBufferRenderer.getGBuffer().textures[depthIndex]);\r\n const wnormalIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.NORMAL_TEXTURE_TYPE);\r\n this._outputTexture.setTexture(\"worldNormalSampler\", geometryBufferRenderer.getGBuffer().textures[wnormalIndex]);\r\n return true;\r\n }\r\n\r\n private _render() {\r\n if (this.enabled && this._outputTexture.isReady() && this._outputTexture.getEffect()?.isReady()) {\r\n if (this._setBindings()) {\r\n this._outputTexture.render();\r\n }\r\n }\r\n }\r\n\r\n private _renderWhenGBufferReady: Nullable<(eventData: number, eventState: EventState) => void> = null;\r\n\r\n /**\r\n * Called by render pipeline when canvas resized.\r\n * @param scaleFactor The factor by which to scale the canvas size.\r\n */\r\n public resize(scaleFactor: number = 1.0) {\r\n const newSize = {\r\n width: Math.max(1.0, Math.floor(this._engine.getRenderWidth() * scaleFactor)),\r\n height: Math.max(1.0, Math.floor(this._engine.getRenderHeight() * scaleFactor)),\r\n };\r\n // Don't resize if the size is the same as the current size.\r\n if (this._outputTexture.getSize().width === newSize.width && this._outputTexture.getSize().height === newSize.height) {\r\n return;\r\n }\r\n this._outputTexture.resize(newSize, false);\r\n }\r\n\r\n /**\r\n * Checks if the pass is ready\r\n * @returns true if the pass is ready\r\n */\r\n public isReady() {\r\n return this._outputTexture.isReady() && !(this._debugPassPP && !this._debugPassPP.isReady());\r\n }\r\n\r\n /**\r\n * Disposes the associated resources\r\n */\r\n public dispose() {\r\n if (this._scene.geometryBufferRenderer && this._renderWhenGBufferReady) {\r\n const gBuffer = this._scene.geometryBufferRenderer.getGBuffer();\r\n gBuffer.onAfterRenderObservable.removeCallback(this._renderWhenGBufferReady);\r\n }\r\n this._outputTexture.dispose();\r\n if (this._debugPassPP) {\r\n this._debugPassPP.dispose();\r\n }\r\n }\r\n}\r\n"]}
@@ -1,8 +1,8 @@
1
1
  import { type Scene } from "../../scene.js";
2
- import { Matrix } from "../../Maths/math.vector.js";
3
- import { PostProcess } from "../../PostProcesses/postProcess.js";
2
+ import { Matrix } from "../../Maths/math.vector.pure.js";
3
+ import { PostProcess } from "../../PostProcesses/postProcess.pure.js";
4
4
  import { type IblShadowsRenderPipeline } from "./iblShadowsRenderPipeline.js";
5
- import { ProceduralTexture } from "../../Materials/Textures/Procedurals/proceduralTexture.js";
5
+ import { ProceduralTexture } from "../../Materials/Textures/Procedurals/proceduralTexture.pure.js";
6
6
  /**
7
7
  * Build cdf maps for IBL importance sampling during IBL shadow computation.
8
8
  * This should not be instantiated directly, as it is part of a scene component
@@ -1,8 +1,8 @@
1
1
 
2
- import { Matrix, Vector4 } from "../../Maths/math.vector.js";
3
- import { PostProcess } from "../../PostProcesses/postProcess.js";
4
- import { GeometryBufferRenderer } from "../../Rendering/geometryBufferRenderer.js";
5
- import { ProceduralTexture } from "../../Materials/Textures/Procedurals/proceduralTexture.js";
2
+ import { Matrix, Vector4 } from "../../Maths/math.vector.pure.js";
3
+ import { PostProcess } from "../../PostProcesses/postProcess.pure.js";
4
+ import { GeometryBufferRenderer } from "../../Rendering/geometryBufferRenderer.pure.js";
5
+ import { ProceduralTexture } from "../../Materials/Textures/Procedurals/proceduralTexture.pure.js";
6
6
  import { Logger } from "../../Misc/logger.js";
7
7
  /**
8
8
  * Build cdf maps for IBL importance sampling during IBL shadow computation.