@onerjs/core 8.53.5 → 8.53.6

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 (841) hide show
  1. package/Animations/animationGroup.d.ts +0 -1
  2. package/Animations/animationGroup.js +0 -1
  3. package/Animations/animationGroup.js.map +1 -1
  4. package/Animations/animationGroup.pure.js +2 -0
  5. package/Animations/animationGroup.pure.js.map +1 -1
  6. package/Animations/runtimeAnimation.js +11 -0
  7. package/Animations/runtimeAnimation.js.map +1 -1
  8. package/Audio/audioSceneComponent.pure.js +1 -1
  9. package/AudioV2/abstractAudio/abstractSound.d.ts +2 -1
  10. package/AudioV2/abstractAudio/abstractSound.js +7 -2
  11. package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
  12. package/AudioV2/abstractAudio/abstractSoundInstance.d.ts +3 -1
  13. package/AudioV2/abstractAudio/abstractSoundInstance.js.map +1 -1
  14. package/AudioV2/abstractAudio/staticSound.d.ts +6 -0
  15. package/AudioV2/abstractAudio/staticSound.js +17 -1
  16. package/AudioV2/abstractAudio/staticSound.js.map +1 -1
  17. package/AudioV2/abstractAudio/staticSoundInstance.d.ts +4 -2
  18. package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
  19. package/AudioV2/abstractAudio/streamingSound.d.ts +6 -0
  20. package/AudioV2/abstractAudio/streamingSound.js +9 -1
  21. package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
  22. package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -1
  23. package/AudioV2/webAudio/webAudioStaticSound.js +56 -8
  24. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  25. package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -1
  26. package/AudioV2/webAudio/webAudioStreamingSound.js +16 -4
  27. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  28. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +2 -2
  29. package/BakedVertexAnimation/bakedVertexAnimationManager.js +151 -121
  30. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  31. package/Behaviors/Cameras/interpolatingBehavior.d.ts +17 -2
  32. package/Behaviors/Cameras/interpolatingBehavior.js +53 -23
  33. package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
  34. package/Bones/bone.pure.js +3 -3
  35. package/Buffers/buffer.pure.js +0 -12
  36. package/Buffers/buffer.pure.js.map +1 -1
  37. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +141 -126
  38. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  39. package/Cameras/Inputs/BaseCameraPointersInput.d.ts +2 -1
  40. package/Cameras/Inputs/BaseCameraPointersInput.js +290 -277
  41. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  42. package/Cameras/Inputs/arcRotateCameraGamepadInput.js +115 -102
  43. package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
  44. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +3 -0
  45. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +334 -273
  46. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  47. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +273 -258
  48. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  49. package/Cameras/Inputs/arcRotateCameraPointersInput.js +237 -213
  50. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  51. package/Cameras/Inputs/flyCameraKeyboardInput.js +199 -168
  52. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  53. package/Cameras/Inputs/flyCameraMouseInput.js +243 -229
  54. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  55. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +311 -266
  56. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  57. package/Cameras/Inputs/followCameraMouseWheelInput.js +139 -119
  58. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  59. package/Cameras/Inputs/followCameraPointersInput.js +239 -203
  60. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  61. package/Cameras/Inputs/freeCameraGamepadInput.js +127 -114
  62. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  63. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +278 -244
  64. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  65. package/Cameras/Inputs/freeCameraMouseInput.js +216 -202
  66. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  67. package/Cameras/Inputs/freeCameraMouseWheelInput.js +368 -353
  68. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  69. package/Cameras/Inputs/freeCameraTouchInput.js +185 -172
  70. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  71. package/Cameras/Inputs/geospatialCameraKeyboardInput.d.ts +2 -0
  72. package/Cameras/Inputs/geospatialCameraKeyboardInput.js +291 -246
  73. package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
  74. package/Cameras/Inputs/geospatialCameraPointersInput.d.ts +11 -1
  75. package/Cameras/Inputs/geospatialCameraPointersInput.js +18 -2
  76. package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
  77. package/Cameras/Inputs/orbitCameraPointersInput.js +112 -96
  78. package/Cameras/Inputs/orbitCameraPointersInput.js.map +1 -1
  79. package/Cameras/VR/vrExperienceHelper.d.ts +0 -2
  80. package/Cameras/VR/vrExperienceHelper.js +0 -2
  81. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  82. package/Cameras/VR/vrExperienceHelper.pure.js +5 -0
  83. package/Cameras/VR/vrExperienceHelper.pure.js.map +1 -1
  84. package/Cameras/arcRotateCamera.pure.js +1559 -1479
  85. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  86. package/Cameras/camera.pure.js +1225 -1178
  87. package/Cameras/camera.pure.js.map +1 -1
  88. package/Cameras/flyCamera.pure.js +369 -351
  89. package/Cameras/flyCamera.pure.js.map +1 -1
  90. package/Cameras/followCamera.pure.js +229 -192
  91. package/Cameras/followCamera.pure.js.map +1 -1
  92. package/Cameras/freeCamera.pure.js +373 -351
  93. package/Cameras/freeCamera.pure.js.map +1 -1
  94. package/Cameras/geospatialCamera.pure.d.ts +30 -7
  95. package/Cameras/geospatialCamera.pure.js +502 -457
  96. package/Cameras/geospatialCamera.pure.js.map +1 -1
  97. package/Cameras/geospatialCameraMovement.js +2 -2
  98. package/Cameras/geospatialCameraMovement.js.map +1 -1
  99. package/Cameras/targetCamera.pure.d.ts +7 -0
  100. package/Cameras/targetCamera.pure.js +550 -509
  101. package/Cameras/targetCamera.pure.js.map +1 -1
  102. package/Cameras/universalCamera.pure.js +98 -85
  103. package/Cameras/universalCamera.pure.js.map +1 -1
  104. package/Collisions/gpuPicker.d.ts +111 -4
  105. package/Collisions/gpuPicker.js +696 -119
  106. package/Collisions/gpuPicker.js.map +1 -1
  107. package/Compute/computeShader.pure.js +372 -355
  108. package/Compute/computeShader.pure.js.map +1 -1
  109. package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +2 -2
  110. package/Decorators/nodeDecorator.d.ts +11 -1
  111. package/Decorators/nodeDecorator.js +43 -6
  112. package/Decorators/nodeDecorator.js.map +1 -1
  113. package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js +8 -0
  114. package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js.map +1 -1
  115. package/Engines/Native/nativeHelpers.js +15 -0
  116. package/Engines/Native/nativeHelpers.js.map +1 -1
  117. package/Engines/Native/nativeInterfaces.d.ts +7 -2
  118. package/Engines/Native/nativeInterfaces.js.map +1 -1
  119. package/Engines/Native/nativeRenderTargetWrapper.d.ts +5 -0
  120. package/Engines/Native/nativeRenderTargetWrapper.js +35 -1
  121. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  122. package/Engines/Processors/shaderProcessor.js +5 -3
  123. package/Engines/Processors/shaderProcessor.js.map +1 -1
  124. package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js +16 -3
  125. package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js.map +1 -1
  126. package/Engines/WebGPU/webgpuClearQuad.pure.js +7 -1
  127. package/Engines/WebGPU/webgpuClearQuad.pure.js.map +1 -1
  128. package/Engines/abstractEngine.functions.d.ts +8 -2
  129. package/Engines/abstractEngine.functions.js +12 -4
  130. package/Engines/abstractEngine.functions.js.map +1 -1
  131. package/Engines/abstractEngine.pure.d.ts +20 -1
  132. package/Engines/abstractEngine.pure.js +21 -134
  133. package/Engines/abstractEngine.pure.js.map +1 -1
  134. package/Engines/engine.d.ts +208 -0
  135. package/Engines/engine.pure.js +0 -15
  136. package/Engines/engine.pure.js.map +1 -1
  137. package/Engines/nullEngine.pure.d.ts +66 -0
  138. package/Engines/nullEngine.pure.js +97 -0
  139. package/Engines/nullEngine.pure.js.map +1 -1
  140. package/Engines/thinEngine.pure.d.ts +0 -13
  141. package/Engines/thinEngine.pure.js +4 -23
  142. package/Engines/thinEngine.pure.js.map +1 -1
  143. package/Engines/thinNativeEngine.d.ts +0 -1
  144. package/Engines/thinNativeEngine.js +0 -1
  145. package/Engines/thinNativeEngine.js.map +1 -1
  146. package/Engines/thinNativeEngine.pure.d.ts +27 -0
  147. package/Engines/thinNativeEngine.pure.js +383 -17
  148. package/Engines/thinNativeEngine.pure.js.map +1 -1
  149. package/Engines/webgpuEngine.d.ts +1 -0
  150. package/Engines/webgpuEngine.js +1 -0
  151. package/Engines/webgpuEngine.js.map +1 -1
  152. package/Engines/webgpuEngine.pure.d.ts +9 -0
  153. package/Engines/webgpuEngine.pure.js +7 -0
  154. package/Engines/webgpuEngine.pure.js.map +1 -1
  155. package/FlowGraph/flowGraph.js +9 -0
  156. package/FlowGraph/flowGraph.js.map +1 -1
  157. package/FlowGraph/flowGraphContext.js +597 -584
  158. package/FlowGraph/flowGraphContext.js.map +1 -1
  159. package/FlowGraph/flowGraphDataConnection.pure.d.ts +14 -0
  160. package/FlowGraph/flowGraphDataConnection.pure.js +38 -1
  161. package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
  162. package/FlowGraph/serialization.d.ts +11 -0
  163. package/FlowGraph/serialization.js +11 -1
  164. package/FlowGraph/serialization.js.map +1 -1
  165. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js +182 -170
  166. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js.map +1 -1
  167. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js +196 -184
  168. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js.map +1 -1
  169. package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js +222 -210
  170. package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js.map +1 -1
  171. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +123 -111
  172. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
  173. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +158 -146
  174. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -1
  175. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js +63 -51
  176. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js.map +1 -1
  177. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js +122 -110
  178. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js.map +1 -1
  179. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js +76 -64
  180. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js.map +1 -1
  181. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js +89 -77
  182. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js.map +1 -1
  183. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js +134 -122
  184. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js.map +1 -1
  185. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js +58 -46
  186. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js.map +1 -1
  187. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js +107 -95
  188. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js.map +1 -1
  189. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js +181 -169
  190. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js.map +1 -1
  191. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js +63 -51
  192. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js.map +1 -1
  193. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js +63 -51
  194. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js.map +1 -1
  195. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js +76 -64
  196. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js.map +1 -1
  197. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js +246 -234
  198. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js.map +1 -1
  199. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js +108 -96
  200. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js.map +1 -1
  201. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js +87 -75
  202. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js.map +1 -1
  203. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js +76 -64
  204. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js.map +1 -1
  205. package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js +313 -301
  206. package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js.map +1 -1
  207. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js +502 -490
  208. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js.map +1 -1
  209. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js +147 -135
  210. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js.map +1 -1
  211. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js +90 -78
  212. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js.map +1 -1
  213. package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js +179 -167
  214. package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js.map +1 -1
  215. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +462 -451
  216. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  217. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +265 -253
  218. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
  219. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js +204 -192
  220. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js.map +1 -1
  221. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +611 -550
  222. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
  223. package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js +320 -308
  224. package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js.map +1 -1
  225. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js +87 -75
  226. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js.map +1 -1
  227. package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js +154 -142
  228. package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js.map +1 -1
  229. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js +150 -138
  230. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js.map +1 -1
  231. package/FrameGraph/Node/Blocks/inputBlock.pure.js +270 -256
  232. package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
  233. package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js +95 -83
  234. package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js.map +1 -1
  235. package/FrameGraph/Node/nodeRenderGraph.js +715 -693
  236. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  237. package/FrameGraph/Node/nodeRenderGraphBlock.js +548 -533
  238. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  239. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +2 -2
  240. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +43 -51
  241. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
  242. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.d.ts +0 -1
  243. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js +0 -1
  244. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js.map +1 -1
  245. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.d.ts +0 -1
  246. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +66 -35
  247. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
  248. package/Helpers/environmentHelper.js +2 -2
  249. package/Helpers/environmentHelper.js.map +1 -1
  250. package/Layers/effectLayer.js +529 -519
  251. package/Layers/effectLayer.js.map +1 -1
  252. package/Layers/glowLayer.pure.js +428 -413
  253. package/Layers/glowLayer.pure.js.map +1 -1
  254. package/Layers/highlightLayer.pure.js +473 -458
  255. package/Layers/highlightLayer.pure.js.map +1 -1
  256. package/Layers/selectionOutlineLayer.pure.js +360 -345
  257. package/Layers/selectionOutlineLayer.pure.js.map +1 -1
  258. package/Lights/Clustered/clusteredLightContainer.pure.d.ts +1 -1
  259. package/Lights/Clustered/clusteredLightContainer.pure.js +583 -558
  260. package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
  261. package/Lights/Shadows/shadowGenerator.js +6 -1
  262. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  263. package/Lights/areaLight.pure.js +61 -39
  264. package/Lights/areaLight.pure.js.map +1 -1
  265. package/Lights/directionalLight.pure.js +308 -284
  266. package/Lights/directionalLight.pure.js.map +1 -1
  267. package/Lights/hemisphericLight.pure.js +123 -104
  268. package/Lights/hemisphericLight.pure.js.map +1 -1
  269. package/Lights/light.d.ts +5 -3
  270. package/Lights/light.js +869 -827
  271. package/Lights/light.js.map +1 -1
  272. package/Lights/pointLight.pure.js +185 -174
  273. package/Lights/pointLight.pure.js.map +1 -1
  274. package/Lights/rectAreaLight.pure.d.ts +17 -0
  275. package/Lights/rectAreaLight.pure.js +238 -159
  276. package/Lights/rectAreaLight.pure.js.map +1 -1
  277. package/Lights/shadowLight.js +280 -268
  278. package/Lights/shadowLight.js.map +1 -1
  279. package/Lights/spotLight.pure.js +460 -427
  280. package/Lights/spotLight.pure.js.map +1 -1
  281. package/Loading/Plugins/babylonFileLoader.pure.js +17 -5
  282. package/Loading/Plugins/babylonFileLoader.pure.js.map +1 -1
  283. package/Loading/sceneLoader.d.ts +5 -1
  284. package/Loading/sceneLoader.js +299 -402
  285. package/Loading/sceneLoader.js.map +1 -1
  286. package/Materials/Background/backgroundMaterial.pure.d.ts +18 -18
  287. package/Materials/Background/backgroundMaterial.pure.js +949 -794
  288. package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
  289. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.d.ts +15 -0
  290. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +34 -1
  291. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
  292. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +9 -0
  293. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +26 -2
  294. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  295. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.d.ts +2 -1
  296. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +169 -149
  297. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
  298. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +1 -1
  299. package/Materials/Node/Blocks/Dual/lightBlock.pure.js +442 -429
  300. package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
  301. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js +396 -383
  302. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js.map +1 -1
  303. package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js +237 -220
  304. package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js.map +1 -1
  305. package/Materials/Node/Blocks/Dual/textureBlock.pure.js +1 -1
  306. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js +150 -133
  307. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
  308. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +265 -250
  309. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
  310. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js +159 -142
  311. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js.map +1 -1
  312. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +214 -201
  313. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
  314. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js +419 -400
  315. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js.map +1 -1
  316. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +3 -1
  317. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
  318. package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js +302 -289
  319. package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js.map +1 -1
  320. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1327 -1272
  321. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
  322. package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js +352 -337
  323. package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js.map +1 -1
  324. package/Materials/Node/Blocks/PBR/refractionBlock.pure.js +297 -277
  325. package/Materials/Node/Blocks/PBR/refractionBlock.pure.js.map +1 -1
  326. package/Materials/Node/Blocks/PBR/sheenBlock.pure.js +146 -131
  327. package/Materials/Node/Blocks/PBR/sheenBlock.pure.js.map +1 -1
  328. package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js +158 -145
  329. package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js.map +1 -1
  330. package/Materials/Node/Blocks/clampBlock.pure.js +92 -77
  331. package/Materials/Node/Blocks/clampBlock.pure.js.map +1 -1
  332. package/Materials/Node/Blocks/cloudBlock.pure.js +145 -132
  333. package/Materials/Node/Blocks/cloudBlock.pure.js.map +1 -1
  334. package/Materials/Node/Blocks/conditionalBlock.pure.js +182 -169
  335. package/Materials/Node/Blocks/conditionalBlock.pure.js.map +1 -1
  336. package/Materials/Node/Blocks/curveBlock.pure.js +259 -246
  337. package/Materials/Node/Blocks/curveBlock.pure.js.map +1 -1
  338. package/Materials/Node/Blocks/debugBlock.pure.js +119 -106
  339. package/Materials/Node/Blocks/debugBlock.pure.js.map +1 -1
  340. package/Materials/Node/Blocks/loopBlock.pure.js +123 -110
  341. package/Materials/Node/Blocks/loopBlock.pure.js.map +1 -1
  342. package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js +185 -172
  343. package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js.map +1 -1
  344. package/Materials/Node/Blocks/remapBlock.pure.js +127 -112
  345. package/Materials/Node/Blocks/remapBlock.pure.js.map +1 -1
  346. package/Materials/Node/Blocks/transformBlock.pure.js +196 -185
  347. package/Materials/Node/Blocks/transformBlock.pure.js.map +1 -1
  348. package/Materials/Node/Blocks/triPlanarBlock.pure.js +451 -438
  349. package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
  350. package/Materials/Node/Blocks/trigonometryBlock.pure.js +184 -171
  351. package/Materials/Node/Blocks/trigonometryBlock.pure.js.map +1 -1
  352. package/Materials/Node/Blocks/waveBlock.pure.js +97 -84
  353. package/Materials/Node/Blocks/waveBlock.pure.js.map +1 -1
  354. package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js +276 -263
  355. package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js.map +1 -1
  356. package/Materials/Node/nodeMaterial.pure.js +1765 -1737
  357. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  358. package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
  359. package/Materials/PBR/openpbrMaterial.pure.d.ts +102 -102
  360. package/Materials/PBR/openpbrMaterial.pure.js +3115 -2243
  361. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  362. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -3
  363. package/Materials/PBR/pbrAnisotropicConfiguration.js +255 -227
  364. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  365. package/Materials/PBR/pbrBRDFConfiguration.d.ts +9 -9
  366. package/Materials/PBR/pbrBRDFConfiguration.js +203 -155
  367. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  368. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
  369. package/Materials/PBR/pbrBaseMaterial.pure.js +1751 -1736
  370. package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
  371. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +13 -13
  372. package/Materials/PBR/pbrBaseSimpleMaterial.js +205 -117
  373. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  374. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +9 -9
  375. package/Materials/PBR/pbrClearCoatConfiguration.js +464 -406
  376. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  377. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +3 -3
  378. package/Materials/PBR/pbrIridescenceConfiguration.js +271 -239
  379. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  380. package/Materials/PBR/pbrMaterial.pure.d.ts +66 -66
  381. package/Materials/PBR/pbrMaterial.pure.js +1041 -685
  382. package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
  383. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.d.ts +5 -5
  384. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js +176 -115
  385. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js.map +1 -1
  386. package/Materials/PBR/pbrSheenConfiguration.d.ts +7 -7
  387. package/Materials/PBR/pbrSheenConfiguration.js +314 -270
  388. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  389. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.d.ts +5 -5
  390. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js +172 -117
  391. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js.map +1 -1
  392. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +16 -16
  393. package/Materials/PBR/pbrSubSurfaceConfiguration.js +864 -764
  394. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  395. package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +43 -0
  396. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +64 -0
  397. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -0
  398. package/Materials/Textures/HTML/htmlInteractionManager.d.ts +69 -0
  399. package/Materials/Textures/HTML/htmlInteractionManager.js +130 -0
  400. package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -0
  401. package/Materials/Textures/HTML/htmlRaycastInteractionManager.d.ts +84 -0
  402. package/Materials/Textures/HTML/htmlRaycastInteractionManager.js +246 -0
  403. package/Materials/Textures/HTML/htmlRaycastInteractionManager.js.map +1 -0
  404. package/Materials/Textures/HTML/htmlTexture.d.ts +148 -0
  405. package/Materials/Textures/HTML/htmlTexture.js +455 -0
  406. package/Materials/Textures/HTML/htmlTexture.js.map +1 -0
  407. package/Materials/Textures/HTML/index.d.ts +4 -0
  408. package/Materials/Textures/HTML/index.js +5 -0
  409. package/Materials/Textures/HTML/index.js.map +1 -0
  410. package/Materials/Textures/HTML/pure.d.ts +5 -0
  411. package/Materials/Textures/HTML/pure.js +6 -0
  412. package/Materials/Textures/HTML/pure.js.map +1 -0
  413. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +671 -643
  414. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  415. package/Materials/Textures/baseTexture.pure.js +880 -825
  416. package/Materials/Textures/baseTexture.pure.js.map +1 -1
  417. package/Materials/Textures/cubeTexture.d.ts +0 -1
  418. package/Materials/Textures/cubeTexture.js +0 -1
  419. package/Materials/Textures/cubeTexture.js.map +1 -1
  420. package/Materials/Textures/cubeTexture.pure.js +368 -333
  421. package/Materials/Textures/cubeTexture.pure.js.map +1 -1
  422. package/Materials/Textures/dynamicTexture.d.ts +0 -1
  423. package/Materials/Textures/dynamicTexture.js +0 -1
  424. package/Materials/Textures/dynamicTexture.js.map +1 -1
  425. package/Materials/Textures/dynamicTexture.pure.js +2 -0
  426. package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
  427. package/Materials/Textures/htmlElementTexture.d.ts +0 -2
  428. package/Materials/Textures/htmlElementTexture.js +0 -2
  429. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  430. package/Materials/Textures/htmlElementTexture.pure.js +4 -0
  431. package/Materials/Textures/htmlElementTexture.pure.js.map +1 -1
  432. package/Materials/Textures/index.d.ts +1 -0
  433. package/Materials/Textures/index.js +1 -1
  434. package/Materials/Textures/index.js.map +1 -1
  435. package/Materials/Textures/multiRenderTarget.d.ts +0 -1
  436. package/Materials/Textures/multiRenderTarget.js +0 -1
  437. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  438. package/Materials/Textures/multiRenderTarget.pure.js +2 -0
  439. package/Materials/Textures/multiRenderTarget.pure.js.map +1 -1
  440. package/Materials/Textures/pure.d.ts +1 -0
  441. package/Materials/Textures/pure.js +1 -0
  442. package/Materials/Textures/pure.js.map +1 -1
  443. package/Materials/Textures/texture.pure.js +961 -923
  444. package/Materials/Textures/texture.pure.js.map +1 -1
  445. package/Materials/Textures/videoTexture.pure.d.ts +3 -0
  446. package/Materials/Textures/videoTexture.pure.js +450 -401
  447. package/Materials/Textures/videoTexture.pure.js.map +1 -1
  448. package/Materials/colorCurves.pure.js +510 -477
  449. package/Materials/colorCurves.pure.js.map +1 -1
  450. package/Materials/effect.pure.js +0 -7
  451. package/Materials/effect.pure.js.map +1 -1
  452. package/Materials/imageProcessing.js +12 -4
  453. package/Materials/imageProcessing.js.map +1 -1
  454. package/Materials/imageProcessingConfiguration.pure.js +647 -587
  455. package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
  456. package/Materials/material.decalMapConfiguration.pure.d.ts +2 -2
  457. package/Materials/material.decalMapConfiguration.pure.js +149 -130
  458. package/Materials/material.decalMapConfiguration.pure.js.map +1 -1
  459. package/Materials/material.detailMapConfiguration.d.ts +3 -3
  460. package/Materials/material.detailMapConfiguration.js +213 -175
  461. package/Materials/material.detailMapConfiguration.js.map +1 -1
  462. package/Materials/material.pure.js +1815 -1721
  463. package/Materials/material.pure.js.map +1 -1
  464. package/Materials/materialPluginBase.pure.js +270 -249
  465. package/Materials/materialPluginBase.pure.js.map +1 -1
  466. package/Materials/materialPluginManager.pure.js +18 -8
  467. package/Materials/materialPluginManager.pure.js.map +1 -1
  468. package/Materials/materialStencilState.js +211 -200
  469. package/Materials/materialStencilState.js.map +1 -1
  470. package/Materials/meshDebugPluginMaterial.pure.d.ts +2 -2
  471. package/Materials/meshDebugPluginMaterial.pure.js +397 -275
  472. package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
  473. package/Materials/standardMaterial.pure.d.ts +32 -32
  474. package/Materials/standardMaterial.pure.js +1804 -1394
  475. package/Materials/standardMaterial.pure.js.map +1 -1
  476. package/Maths/math.color.pure.js +5 -5
  477. package/Maths/math.functions.js +38 -30
  478. package/Maths/math.functions.js.map +1 -1
  479. package/Maths/math.vector.pure.js +25 -25
  480. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
  481. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  482. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +86 -1
  483. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +255 -104
  484. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  485. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +39 -0
  486. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +322 -0
  487. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
  488. package/Meshes/GreasedLine/greasedLineMesh.pure.js +4 -4
  489. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
  490. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +107 -94
  491. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
  492. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js +276 -263
  493. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js.map +1 -1
  494. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js +247 -232
  495. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js.map +1 -1
  496. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +299 -284
  497. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
  498. package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js +196 -181
  499. package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js.map +1 -1
  500. package/Meshes/Node/Blocks/Set/latticeBlock.pure.js +198 -179
  501. package/Meshes/Node/Blocks/Set/latticeBlock.pure.js.map +1 -1
  502. package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js +151 -138
  503. package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js.map +1 -1
  504. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js +107 -94
  505. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js.map +1 -1
  506. package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js +138 -125
  507. package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js.map +1 -1
  508. package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js +213 -200
  509. package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js.map +1 -1
  510. package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js +138 -125
  511. package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js.map +1 -1
  512. package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js +179 -164
  513. package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js.map +1 -1
  514. package/Meshes/Node/Blocks/Sources/boxBlock.pure.js +183 -170
  515. package/Meshes/Node/Blocks/Sources/boxBlock.pure.js.map +1 -1
  516. package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js +125 -112
  517. package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js.map +1 -1
  518. package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js +153 -140
  519. package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js.map +1 -1
  520. package/Meshes/Node/Blocks/Sources/discBlock.pure.js +112 -99
  521. package/Meshes/Node/Blocks/Sources/discBlock.pure.js.map +1 -1
  522. package/Meshes/Node/Blocks/Sources/gridBlock.pure.js +133 -120
  523. package/Meshes/Node/Blocks/Sources/gridBlock.pure.js.map +1 -1
  524. package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js +128 -115
  525. package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js.map +1 -1
  526. package/Meshes/Node/Blocks/Sources/meshBlock.pure.js +116 -103
  527. package/Meshes/Node/Blocks/Sources/meshBlock.pure.js.map +1 -1
  528. package/Meshes/Node/Blocks/Sources/planeBlock.pure.js +160 -147
  529. package/Meshes/Node/Blocks/Sources/planeBlock.pure.js.map +1 -1
  530. package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js +144 -131
  531. package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js.map +1 -1
  532. package/Meshes/Node/Blocks/Sources/torusBlock.pure.js +112 -99
  533. package/Meshes/Node/Blocks/Sources/torusBlock.pure.js.map +1 -1
  534. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js +200 -185
  535. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js.map +1 -1
  536. package/Meshes/Node/Blocks/bevelBlock.pure.js +111 -98
  537. package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
  538. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +182 -165
  539. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
  540. package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js +89 -76
  541. package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js.map +1 -1
  542. package/Meshes/Node/Blocks/conditionBlock.pure.js +184 -169
  543. package/Meshes/Node/Blocks/conditionBlock.pure.js.map +1 -1
  544. package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js +270 -255
  545. package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js.map +1 -1
  546. package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js +172 -159
  547. package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js.map +1 -1
  548. package/Meshes/Node/Blocks/geometryCurveBlock.pure.js +230 -217
  549. package/Meshes/Node/Blocks/geometryCurveBlock.pure.js.map +1 -1
  550. package/Meshes/Node/Blocks/geometryEaseBlock.pure.js +256 -245
  551. package/Meshes/Node/Blocks/geometryEaseBlock.pure.js.map +1 -1
  552. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +206 -189
  553. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
  554. package/Meshes/Node/Blocks/geometryTransformBlock.pure.js +166 -153
  555. package/Meshes/Node/Blocks/geometryTransformBlock.pure.js.map +1 -1
  556. package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js +221 -208
  557. package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js.map +1 -1
  558. package/Meshes/Node/Blocks/mappingBlock.pure.js +150 -137
  559. package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
  560. package/Meshes/Node/Blocks/mathBlock.pure.js +269 -256
  561. package/Meshes/Node/Blocks/mathBlock.pure.js.map +1 -1
  562. package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js +141 -128
  563. package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js.map +1 -1
  564. package/Meshes/Node/Blocks/randomBlock.pure.js +161 -148
  565. package/Meshes/Node/Blocks/randomBlock.pure.js.map +1 -1
  566. package/Meshes/Node/Blocks/subdivideBlock.pure.js +102 -87
  567. package/Meshes/Node/Blocks/subdivideBlock.pure.js.map +1 -1
  568. package/Meshes/Node/nodeGeometry.js +560 -538
  569. package/Meshes/Node/nodeGeometry.js.map +1 -1
  570. package/Meshes/Node/nodeGeometryBlock.js +473 -458
  571. package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
  572. package/Meshes/abstractMesh.pure.js +2218 -2207
  573. package/Meshes/abstractMesh.pure.js.map +1 -1
  574. package/Meshes/geometry.js +30 -15
  575. package/Meshes/geometry.js.map +1 -1
  576. package/Meshes/mesh.pure.js +26 -14
  577. package/Meshes/mesh.pure.js.map +1 -1
  578. package/Meshes/mesh.vertexData.js +1665 -1655
  579. package/Meshes/mesh.vertexData.js.map +1 -1
  580. package/Meshes/transformNode.pure.js +1400 -1372
  581. package/Meshes/transformNode.pure.js.map +1 -1
  582. package/Misc/decorators.d.ts +34 -19
  583. package/Misc/decorators.functions.d.ts +33 -2
  584. package/Misc/decorators.functions.js +114 -35
  585. package/Misc/decorators.functions.js.map +1 -1
  586. package/Misc/decorators.js +96 -68
  587. package/Misc/decorators.js.map +1 -1
  588. package/Misc/decorators.serialization.js +47 -40
  589. package/Misc/decorators.serialization.js.map +1 -1
  590. package/Misc/decorators.serializationUtilities.d.ts +24 -0
  591. package/Misc/decorators.serializationUtilities.js +20 -0
  592. package/Misc/decorators.serializationUtilities.js.map +1 -0
  593. package/Misc/dumpTools.pure.js +43 -33
  594. package/Misc/dumpTools.pure.js.map +1 -1
  595. package/Misc/fileTools.pure.js +8 -0
  596. package/Misc/fileTools.pure.js.map +1 -1
  597. package/Misc/observable.pure.js +0 -7
  598. package/Misc/observable.pure.js.map +1 -1
  599. package/Misc/snapshotRenderingHelper.d.ts +4 -1
  600. package/Misc/snapshotRenderingHelper.js.map +1 -1
  601. package/Misc/symbolMetadataPolyfill.d.ts +11 -0
  602. package/Misc/symbolMetadataPolyfill.js +22 -0
  603. package/Misc/symbolMetadataPolyfill.js.map +1 -0
  604. package/Misc/tools.pure.js +2 -2
  605. package/Misc/tools.pure.js.map +1 -1
  606. package/Morph/morphTarget.js +382 -365
  607. package/Morph/morphTarget.js.map +1 -1
  608. package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js +160 -145
  609. package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js.map +1 -1
  610. package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js +187 -174
  611. package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js.map +1 -1
  612. package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js +238 -219
  613. package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js.map +1 -1
  614. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js +140 -115
  615. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js.map +1 -1
  616. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js +157 -144
  617. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js.map +1 -1
  618. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js +133 -119
  619. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js.map +1 -1
  620. package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js +93 -80
  621. package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js.map +1 -1
  622. package/Particles/Node/Blocks/particleDebugBlock.pure.js +117 -105
  623. package/Particles/Node/Blocks/particleDebugBlock.pure.js.map +1 -1
  624. package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js +105 -92
  625. package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js.map +1 -1
  626. package/Particles/Node/Blocks/particleGradientValueBlock.pure.js +82 -69
  627. package/Particles/Node/Blocks/particleGradientValueBlock.pure.js.map +1 -1
  628. package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js +113 -101
  629. package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js.map +1 -1
  630. package/Particles/Node/Blocks/particleMathBlock.pure.js +278 -265
  631. package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
  632. package/Particles/Node/Blocks/particleNumberMathBlock.pure.js +155 -142
  633. package/Particles/Node/Blocks/particleNumberMathBlock.pure.js.map +1 -1
  634. package/Particles/Node/Blocks/particleRandomBlock.pure.js +156 -143
  635. package/Particles/Node/Blocks/particleRandomBlock.pure.js.map +1 -1
  636. package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js +217 -204
  637. package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js.map +1 -1
  638. package/Particles/Node/Blocks/particleVectorMathBlock.pure.js +106 -93
  639. package/Particles/Node/Blocks/particleVectorMathBlock.pure.js.map +1 -1
  640. package/Particles/Node/Blocks/systemBlock.pure.js +366 -330
  641. package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
  642. package/Particles/Node/nodeParticleBlock.js +339 -324
  643. package/Particles/Node/nodeParticleBlock.js.map +1 -1
  644. package/Particles/Node/nodeParticleSystemSet.js +494 -473
  645. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  646. package/Particles/gpuParticleSystem.d.ts +0 -1
  647. package/Particles/gpuParticleSystem.js +0 -1
  648. package/Particles/gpuParticleSystem.js.map +1 -1
  649. package/Particles/gpuParticleSystem.pure.d.ts +4 -3
  650. package/Particles/gpuParticleSystem.pure.js +27 -16
  651. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  652. package/Particles/particleSystem.pure.js +57 -2
  653. package/Particles/particleSystem.pure.js.map +1 -1
  654. package/Particles/thinParticleSystem.d.ts +0 -1
  655. package/Particles/thinParticleSystem.js +0 -1
  656. package/Particles/thinParticleSystem.js.map +1 -1
  657. package/Particles/thinParticleSystem.pure.js +2 -0
  658. package/Particles/thinParticleSystem.pure.js.map +1 -1
  659. package/Particles/webgl2ParticleSystem.pure.js +2 -0
  660. package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
  661. package/Physics/v1/physicsImpostor.pure.js +4 -4
  662. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +675 -656
  663. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
  664. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.d.ts +0 -1
  665. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +0 -1
  666. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
  667. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +521 -486
  668. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
  669. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +0 -1
  670. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +0 -1
  671. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  672. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js +241 -220
  673. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
  674. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js +852 -835
  675. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js.map +1 -1
  676. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js +1135 -1073
  677. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js.map +1 -1
  678. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js +319 -303
  679. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js.map +1 -1
  680. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +212 -199
  681. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  682. package/PostProcesses/blackAndWhitePostProcess.pure.js +67 -55
  683. package/PostProcesses/blackAndWhitePostProcess.pure.js.map +1 -1
  684. package/PostProcesses/bloomMergePostProcess.pure.js +74 -62
  685. package/PostProcesses/bloomMergePostProcess.pure.js.map +1 -1
  686. package/PostProcesses/blurPostProcess.pure.js +127 -115
  687. package/PostProcesses/blurPostProcess.pure.js.map +1 -1
  688. package/PostProcesses/chromaticAberrationPostProcess.pure.js +130 -118
  689. package/PostProcesses/chromaticAberrationPostProcess.pure.js.map +1 -1
  690. package/PostProcesses/circleOfConfusionPostProcess.pure.js +115 -104
  691. package/PostProcesses/circleOfConfusionPostProcess.pure.js.map +1 -1
  692. package/PostProcesses/colorCorrectionPostProcess.pure.js +55 -43
  693. package/PostProcesses/colorCorrectionPostProcess.pure.js.map +1 -1
  694. package/PostProcesses/convolutionPostProcess.pure.js +96 -84
  695. package/PostProcesses/convolutionPostProcess.pure.js.map +1 -1
  696. package/PostProcesses/extractHighlightsPostProcess.pure.js +68 -57
  697. package/PostProcesses/extractHighlightsPostProcess.pure.js.map +1 -1
  698. package/PostProcesses/filterPostProcess.pure.js +66 -54
  699. package/PostProcesses/filterPostProcess.pure.js.map +1 -1
  700. package/PostProcesses/fxaaPostProcess.pure.js.map +1 -1
  701. package/PostProcesses/grainPostProcess.pure.js +82 -70
  702. package/PostProcesses/grainPostProcess.pure.js.map +1 -1
  703. package/PostProcesses/imageProcessingPostProcess.js +334 -322
  704. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  705. package/PostProcesses/motionBlurPostProcess.pure.js +246 -235
  706. package/PostProcesses/motionBlurPostProcess.pure.js.map +1 -1
  707. package/PostProcesses/passPostProcess.pure.js +75 -63
  708. package/PostProcesses/passPostProcess.pure.js.map +1 -1
  709. package/PostProcesses/postProcess.pure.js +899 -835
  710. package/PostProcesses/postProcess.pure.js.map +1 -1
  711. package/PostProcesses/refractionPostProcess.pure.js +114 -87
  712. package/PostProcesses/refractionPostProcess.pure.js.map +1 -1
  713. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +108 -96
  714. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
  715. package/PostProcesses/screenSpaceReflectionPostProcess.pure.js +241 -220
  716. package/PostProcesses/screenSpaceReflectionPostProcess.pure.js.map +1 -1
  717. package/PostProcesses/sharpenPostProcess.pure.js +86 -74
  718. package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
  719. package/PostProcesses/tonemapPostProcess.pure.js +82 -70
  720. package/PostProcesses/tonemapPostProcess.pure.js.map +1 -1
  721. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +500 -465
  722. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
  723. package/PostProcesses/vrMultiviewToSingleviewPostProcess.d.ts +0 -1
  724. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +0 -1
  725. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
  726. package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js +2 -0
  727. package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js.map +1 -1
  728. package/Probes/reflectionProbe.pure.js +238 -224
  729. package/Probes/reflectionProbe.pure.js.map +1 -1
  730. package/Rendering/GlobalIllumination/giRSMManager.pure.d.ts +1 -1
  731. package/Rendering/GlobalIllumination/giRSMManager.pure.js +138 -105
  732. package/Rendering/GlobalIllumination/giRSMManager.pure.js.map +1 -1
  733. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -1
  734. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +155 -138
  735. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
  736. package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +0 -2
  737. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +0 -2
  738. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  739. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +5 -0
  740. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  741. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +0 -1
  742. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +0 -1
  743. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  744. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +1 -0
  745. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +34 -0
  746. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  747. package/Rendering/edgesRenderer.pure.js.map +1 -1
  748. package/Rendering/prePassRenderer.d.ts +0 -2
  749. package/Rendering/prePassRenderer.js +0 -2
  750. package/Rendering/prePassRenderer.js.map +1 -1
  751. package/Rendering/prePassRenderer.pure.js +2 -0
  752. package/Rendering/prePassRenderer.pure.js.map +1 -1
  753. package/Rendering/reflectiveShadowMap.pure.d.ts +1 -1
  754. package/Rendering/reflectiveShadowMap.pure.js +151 -130
  755. package/Rendering/reflectiveShadowMap.pure.js.map +1 -1
  756. package/Rendering/thinDepthPeelingRenderer.d.ts +0 -1
  757. package/Rendering/thinDepthPeelingRenderer.js +0 -1
  758. package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
  759. package/Shaders/ShadersInclude/gaussianSplatting.js +1 -0
  760. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  761. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +35 -5
  762. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  763. package/Shaders/gaussianSplatting.fragment.js +17 -1
  764. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  765. package/Shaders/gaussianSplatting.vertex.js +1 -1
  766. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  767. package/Shaders/gaussianSplattingDepth.vertex.js +1 -1
  768. package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -1
  769. package/Shaders/picking.fragment.js +39 -3
  770. package/Shaders/picking.fragment.js.map +1 -1
  771. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
  772. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
  773. package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
  774. package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
  775. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +39 -7
  776. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  777. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +4 -3
  778. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
  779. package/ShadersWGSL/gaussianSplatting.fragment.js +14 -1
  780. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  781. package/ShadersWGSL/gaussianSplatting.vertex.js +2 -2
  782. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  783. package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -2
  784. package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
  785. package/ShadersWGSL/lightingVolume.compute.js +2 -2
  786. package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
  787. package/ShadersWGSL/picking.fragment.js +22 -1
  788. package/ShadersWGSL/picking.fragment.js.map +1 -1
  789. package/XR/features/Layers/WebXRCompositionLayer.d.ts +3 -2
  790. package/XR/features/Layers/WebXRCompositionLayer.js +2 -2
  791. package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
  792. package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +59 -0
  793. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +120 -0
  794. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -0
  795. package/XR/features/Layers/WebXRWebGPUProjectionLayer.d.ts +25 -0
  796. package/XR/features/Layers/WebXRWebGPUProjectionLayer.js +69 -0
  797. package/XR/features/Layers/WebXRWebGPUProjectionLayer.js.map +1 -0
  798. package/XR/features/WebXRLayers.pure.d.ts +8 -0
  799. package/XR/features/WebXRLayers.pure.js +43 -6
  800. package/XR/features/WebXRLayers.pure.js.map +1 -1
  801. package/XR/native/nativeXRRenderTarget.d.ts +2 -2
  802. package/XR/native/nativeXRRenderTarget.js +2 -2
  803. package/XR/native/nativeXRRenderTarget.js.map +1 -1
  804. package/XR/webXRExperienceHelper.js +10 -1
  805. package/XR/webXRExperienceHelper.js.map +1 -1
  806. package/XR/webXRGraphicsBinding.d.ts +90 -0
  807. package/XR/webXRGraphicsBinding.js +85 -0
  808. package/XR/webXRGraphicsBinding.js.map +1 -0
  809. package/XR/webXRLayerRenderTargetTexture.d.ts +24 -0
  810. package/XR/webXRLayerRenderTargetTexture.js +30 -0
  811. package/XR/webXRLayerRenderTargetTexture.js.map +1 -0
  812. package/XR/webXRManagedOutputCanvas.d.ts +14 -0
  813. package/XR/webXRManagedOutputCanvas.js +24 -5
  814. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  815. package/XR/webXRRenderTargetTextureProvider.d.ts +25 -4
  816. package/XR/webXRRenderTargetTextureProvider.js +33 -35
  817. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  818. package/XR/webXRSessionManager.d.ts +11 -0
  819. package/XR/webXRSessionManager.js +37 -0
  820. package/XR/webXRSessionManager.js.map +1 -1
  821. package/XR/webXRTypes.d.ts +9 -6
  822. package/XR/webXRTypes.js.map +1 -1
  823. package/XR/webXRWebGLLayer.d.ts +2 -2
  824. package/XR/webXRWebGLLayer.js +2 -2
  825. package/XR/webXRWebGLLayer.js.map +1 -1
  826. package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +12 -0
  827. package/XR/webXRWebGLRenderTargetTextureProvider.js +58 -0
  828. package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -0
  829. package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +69 -0
  830. package/XR/webXRWebGPURenderTargetTextureProvider.js +148 -0
  831. package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -0
  832. package/index.d.ts +1 -0
  833. package/index.js +1 -0
  834. package/index.js.map +1 -1
  835. package/node.js +878 -845
  836. package/node.js.map +1 -1
  837. package/package.json +8 -14
  838. package/scene.pure.d.ts +12 -0
  839. package/scene.pure.js +36 -0
  840. package/scene.pure.js.map +1 -1
  841. package/tslib.es6.js +304 -150
@@ -1,5 +1,5 @@
1
1
  /** This file must only contain pure code and pure imports */
2
- import { __decorate } from "../tslib.es6.js";
2
+ import { __esDecorate, __runInitializers } from "../tslib.es6.js";
3
3
  import { SmartArray } from "../Misc/smartArray.js";
4
4
  import { Observable } from "../Misc/observable.pure.js";
5
5
  import { Vector2 } from "../Maths/math.vector.pure.js";
@@ -15,856 +15,920 @@ import { EffectWrapper } from "../Materials/effectRenderer.pure.js";
15
15
  * PostProcess can be used to apply a shader to a texture after it has been rendered
16
16
  * See https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses
17
17
  */
18
- export class PostProcess {
19
- /**
20
- * Force all the postprocesses to compile to glsl even on WebGPU engines.
21
- * False by default. This is mostly meant for backward compatibility.
22
- */
23
- static get ForceGLSL() {
24
- return EffectWrapper.ForceGLSL;
25
- }
26
- static set ForceGLSL(force) {
27
- EffectWrapper.ForceGLSL = force;
28
- }
29
- /**
30
- * Registers a shader code processing with a post process name.
31
- * @param postProcessName name of the post process. Use null for the fallback shader code processing. This is the shader code processing that will be used in case no specific shader code processing has been associated to a post process name
32
- * @param customShaderCodeProcessing shader code processing to associate to the post process name
33
- */
34
- static RegisterShaderCodeProcessing(postProcessName, customShaderCodeProcessing) {
35
- EffectWrapper.RegisterShaderCodeProcessing(postProcessName, customShaderCodeProcessing);
36
- }
37
- /** Name of the PostProcess. */
38
- get name() {
39
- return this._effectWrapper.name;
40
- }
41
- set name(value) {
42
- this._effectWrapper.name = value;
43
- }
44
- /**
45
- * Type of alpha mode to use when performing the post process (default: Engine.ALPHA_DISABLE)
46
- */
47
- get alphaMode() {
48
- return this._effectWrapper.alphaMode;
49
- }
50
- set alphaMode(value) {
51
- this._effectWrapper.alphaMode = value;
52
- }
53
- /**
54
- * Number of sample textures (default: 1)
55
- */
56
- get samples() {
57
- return this._samples;
58
- }
59
- set samples(n) {
60
- this._samples = Math.min(n, this._engine.getCaps().maxMSAASamples);
61
- this._textures.forEach((texture) => {
62
- texture.setSamples(this._samples);
63
- });
64
- }
65
- /**
66
- * Gets the shader language type used to generate vertex and fragment source code.
67
- */
68
- get shaderLanguage() {
69
- return this._shaderLanguage;
70
- }
71
- /**
72
- * Returns the fragment url or shader name used in the post process.
73
- * @returns the fragment url or name in the shader store.
74
- */
75
- getEffectName() {
76
- return this._fragmentUrl;
77
- }
78
- /**
79
- * A function that is added to the onActivateObservable
80
- */
81
- set onActivate(callback) {
82
- if (this._onActivateObserver) {
83
- this.onActivateObservable.remove(this._onActivateObserver);
84
- }
85
- if (callback) {
86
- this._onActivateObserver = this.onActivateObservable.add(callback);
87
- }
88
- }
89
- /**
90
- * A function that is added to the onSizeChangedObservable
91
- */
92
- set onSizeChanged(callback) {
93
- if (this._onSizeChangedObserver) {
94
- this.onSizeChangedObservable.remove(this._onSizeChangedObserver);
95
- }
96
- this._onSizeChangedObserver = this.onSizeChangedObservable.add(callback);
97
- }
98
- /**
99
- * A function that is added to the onApplyObservable
100
- */
101
- set onApply(callback) {
102
- if (this._onApplyObserver) {
103
- this.onApplyObservable.remove(this._onApplyObserver);
104
- }
105
- this._onApplyObserver = this.onApplyObservable.add(callback);
106
- }
107
- /**
108
- * A function that is added to the onBeforeRenderObservable
109
- */
110
- set onBeforeRender(callback) {
111
- if (this._onBeforeRenderObserver) {
112
- this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver);
113
- }
114
- this._onBeforeRenderObserver = this.onBeforeRenderObservable.add(callback);
115
- }
116
- /**
117
- * A function that is added to the onAfterRenderObservable
118
- */
119
- set onAfterRender(callback) {
120
- if (this._onAfterRenderObserver) {
121
- this.onAfterRenderObservable.remove(this._onAfterRenderObserver);
122
- }
123
- this._onAfterRenderObserver = this.onAfterRenderObservable.add(callback);
124
- }
125
- /**
126
- * The input texture for this post process and the output texture of the previous post process. When added to a pipeline the previous post process will
127
- * render it's output into this texture and this texture will be used as textureSampler in the fragment shader of this post process.
128
- */
129
- get inputTexture() {
130
- return this._textures.data[this._currentRenderTextureInd];
131
- }
132
- set inputTexture(value) {
133
- this._forcedOutputTexture = value;
134
- }
135
- /**
136
- * Since inputTexture should always be defined, if we previously manually set `inputTexture`,
137
- * the only way to unset it is to use this function to restore its internal state
138
- */
139
- restoreDefaultInputTexture() {
140
- if (this._forcedOutputTexture) {
141
- this._forcedOutputTexture = null;
142
- this.markTextureDirty();
143
- }
144
- }
145
- /**
146
- * Gets the camera which post process is applied to.
147
- * @returns The camera the post process is applied to.
148
- */
149
- getCamera() {
150
- return this._camera;
151
- }
152
- /**
153
- * Gets the texel size of the postprocess.
154
- * See https://en.wikipedia.org/wiki/Texel_(graphics)
155
- */
156
- get texelSize() {
157
- if (this._shareOutputWithPostProcess) {
158
- return this._shareOutputWithPostProcess.texelSize;
159
- }
160
- if (this._forcedOutputTexture) {
161
- this._texelSize.copyFromFloats(1.0 / this._forcedOutputTexture.width, 1.0 / this._forcedOutputTexture.height);
162
- }
163
- return this._texelSize;
164
- }
165
- /** @internal */
166
- constructor(name, fragmentUrl, parameters, samplers, _size, camera, samplingMode = 1, engine, reusable, defines = null, textureType = 0, vertexUrl = "postprocess", indexParameters, blockCompilation = false, textureFormat = 5, shaderLanguage, extraInitializations) {
167
- /** @internal */
168
- this._parentContainer = null;
169
- /**
170
- * Width of the texture to apply the post process on
171
- */
172
- this.width = -1;
173
- /**
174
- * Height of the texture to apply the post process on
175
- */
176
- this.height = -1;
177
- /**
178
- * Gets the node material used to create this postprocess (null if the postprocess was manually created)
179
- */
180
- this.nodeMaterialSource = null;
181
- /**
182
- * Internal, reference to the location where this postprocess was output to. (Typically the texture on the next postprocess in the chain)
183
- * @internal
184
- */
185
- this._outputTexture = null;
186
- /**
187
- * If the buffer needs to be cleared before applying the post process. (default: true)
188
- * Should be set to false if shader will overwrite all previous pixels.
189
- */
190
- this.autoClear = true;
191
- /**
192
- * If clearing the buffer should be forced in autoClear mode, even when alpha mode is enabled (default: false).
193
- * By default, the buffer will only be cleared if alpha mode is disabled (and autoClear is true).
194
- */
195
- this.forceAutoClearInAlphaMode = false;
196
- /**
197
- * Animations to be used for the post processing
198
- */
199
- this.animations = [];
200
- /**
201
- * Enable Pixel Perfect mode where texture is not scaled to be power of 2.
202
- * Can only be used on a single postprocess or on the last one of a chain. (default: false)
203
- */
204
- this.enablePixelPerfectMode = false;
205
- /**
206
- * Force the postprocess to be applied without taking in account viewport
207
- */
208
- this.forceFullscreenViewport = true;
209
- /**
210
- * Scale mode for the post process (default: Engine.SCALEMODE_FLOOR)
211
- *
212
- * | Value | Type | Description |
213
- * | ----- | ----------------------------------- | ----------- |
214
- * | 1 | SCALEMODE_FLOOR | [engine.scalemode_floor](https://doc.babylonjs.com/api/classes/babylon.engine#scalemode_floor) |
215
- * | 2 | SCALEMODE_NEAREST | [engine.scalemode_nearest](https://doc.babylonjs.com/api/classes/babylon.engine#scalemode_nearest) |
216
- * | 3 | SCALEMODE_CEILING | [engine.scalemode_ceiling](https://doc.babylonjs.com/api/classes/babylon.engine#scalemode_ceiling) |
217
- *
218
- */
219
- this.scaleMode = 1;
220
- /**
221
- * Force textures to be a power of two (default: false)
222
- */
223
- this.alwaysForcePOT = false;
224
- this._samples = 1;
225
- /**
226
- * Modify the scale of the post process to be the same as the viewport (default: false)
227
- */
228
- this.adaptScaleToCurrentViewport = false;
229
- /**
230
- * Specifies if the post process should be serialized
231
- */
232
- this.doNotSerialize = false;
233
- this._webGPUReady = false;
234
- this._reusable = false;
235
- this._renderId = 0;
236
- /**
237
- * if externalTextureSamplerBinding is true, the "apply" method won't bind the textureSampler texture, it is expected to be done by the "outside" (by the onApplyObservable observer most probably).
238
- * counter-productive in some cases because if the texture bound by "apply" is different from the currently texture bound, (the one set by the onApplyObservable observer, for eg) some
239
- * internal structures (materialContext) will be dirtified, which may impact performances
240
- */
241
- this.externalTextureSamplerBinding = false;
242
- /**
243
- * Smart array of input and output textures for the post process.
244
- * @internal
245
- */
246
- this._textures = new SmartArray(2);
247
- /**
248
- * Smart array of input and output textures for the post process.
249
- * @internal
250
- */
251
- this._textureCache = [];
252
- /**
253
- * The index in _textures that corresponds to the output texture.
254
- * @internal
255
- */
256
- this._currentRenderTextureInd = 0;
257
- this._scaleRatio = new Vector2(1, 1);
258
- this._texelSize = Vector2.Zero();
259
- // Events
260
- /**
261
- * An event triggered when the postprocess is activated.
262
- */
263
- this.onActivateObservable = new Observable();
264
- /**
265
- * An event triggered when the postprocess changes its size.
266
- */
267
- this.onSizeChangedObservable = new Observable();
268
- /**
269
- * An event triggered when the postprocess applies its effect.
270
- */
271
- this.onApplyObservable = new Observable();
272
- /**
273
- * An event triggered before rendering the postprocess
274
- */
275
- this.onBeforeRenderObservable = new Observable();
276
- /**
277
- * An event triggered after rendering the postprocess
278
- */
279
- this.onAfterRenderObservable = new Observable();
280
- /**
281
- * An event triggered when the post-process is disposed
282
- */
283
- this.onDisposeObservable = new Observable();
284
- let size = 1;
285
- let uniformBuffers = null;
286
- let effectWrapper;
287
- if (parameters && !Array.isArray(parameters)) {
288
- const options = parameters;
289
- parameters = options.uniforms ?? null;
290
- samplers = options.samplers ?? null;
291
- size = options.size ?? 1;
292
- camera = options.camera ?? null;
293
- samplingMode = options.samplingMode ?? 1;
294
- engine = options.engine;
295
- reusable = options.reusable;
296
- defines = Array.isArray(options.defines) ? options.defines.join("\n") : (options.defines ?? null);
297
- textureType = options.textureType ?? 0;
298
- vertexUrl = options.vertexUrl ?? "postprocess";
299
- indexParameters = options.indexParameters;
300
- blockCompilation = options.blockCompilation ?? false;
301
- textureFormat = options.textureFormat ?? 5;
302
- shaderLanguage = options.shaderLanguage ?? 0 /* ShaderLanguage.GLSL */;
303
- uniformBuffers = options.uniformBuffers ?? null;
304
- extraInitializations = options.extraInitializations;
305
- effectWrapper = options.effectWrapper;
306
- }
307
- else if (_size) {
308
- if (typeof _size === "number") {
309
- size = _size;
18
+ let PostProcess = (() => {
19
+ var _a;
20
+ let _instanceExtraInitializers = [];
21
+ let _uniqueId_decorators;
22
+ let _uniqueId_initializers = [];
23
+ let _uniqueId_extraInitializers = [];
24
+ let _get_name_decorators;
25
+ let _width_decorators;
26
+ let _width_initializers = [];
27
+ let _width_extraInitializers = [];
28
+ let _height_decorators;
29
+ let _height_initializers = [];
30
+ let _height_extraInitializers = [];
31
+ let _renderTargetSamplingMode_decorators;
32
+ let _renderTargetSamplingMode_initializers = [];
33
+ let _renderTargetSamplingMode_extraInitializers = [];
34
+ let _clearColor_decorators;
35
+ let _clearColor_initializers = [];
36
+ let _clearColor_extraInitializers = [];
37
+ let _autoClear_decorators;
38
+ let _autoClear_initializers = [];
39
+ let _autoClear_extraInitializers = [];
40
+ let _forceAutoClearInAlphaMode_decorators;
41
+ let _forceAutoClearInAlphaMode_initializers = [];
42
+ let _forceAutoClearInAlphaMode_extraInitializers = [];
43
+ let _get_alphaMode_decorators;
44
+ let _alphaConstants_decorators;
45
+ let _alphaConstants_initializers = [];
46
+ let _alphaConstants_extraInitializers = [];
47
+ let _enablePixelPerfectMode_decorators;
48
+ let _enablePixelPerfectMode_initializers = [];
49
+ let _enablePixelPerfectMode_extraInitializers = [];
50
+ let _forceFullscreenViewport_decorators;
51
+ let _forceFullscreenViewport_initializers = [];
52
+ let _forceFullscreenViewport_extraInitializers = [];
53
+ let _scaleMode_decorators;
54
+ let _scaleMode_initializers = [];
55
+ let _scaleMode_extraInitializers = [];
56
+ let _alwaysForcePOT_decorators;
57
+ let _alwaysForcePOT_initializers = [];
58
+ let _alwaysForcePOT_extraInitializers = [];
59
+ let __samples_decorators;
60
+ let __samples_initializers = [];
61
+ let __samples_extraInitializers = [];
62
+ let _adaptScaleToCurrentViewport_decorators;
63
+ let _adaptScaleToCurrentViewport_initializers = [];
64
+ let _adaptScaleToCurrentViewport_extraInitializers = [];
65
+ return _a = class PostProcess {
66
+ /**
67
+ * Force all the postprocesses to compile to glsl even on WebGPU engines.
68
+ * False by default. This is mostly meant for backward compatibility.
69
+ */
70
+ static get ForceGLSL() {
71
+ return EffectWrapper.ForceGLSL;
310
72
  }
311
- else {
312
- size = { width: _size.width, height: _size.height };
73
+ static set ForceGLSL(force) {
74
+ EffectWrapper.ForceGLSL = force;
313
75
  }
314
- }
315
- this._useExistingThinPostProcess = !!effectWrapper;
316
- this._effectWrapper =
317
- effectWrapper ??
318
- new EffectWrapper({
319
- name,
320
- useShaderStore: true,
321
- useAsPostProcess: true,
322
- fragmentShader: fragmentUrl,
323
- engine: engine || camera?.getScene().getEngine(),
324
- uniforms: parameters,
325
- samplers,
326
- uniformBuffers,
327
- defines,
328
- vertexUrl,
329
- indexParameters,
330
- blockCompilation: true,
331
- shaderLanguage,
332
- extraInitializations: undefined,
76
+ /**
77
+ * Registers a shader code processing with a post process name.
78
+ * @param postProcessName name of the post process. Use null for the fallback shader code processing. This is the shader code processing that will be used in case no specific shader code processing has been associated to a post process name
79
+ * @param customShaderCodeProcessing shader code processing to associate to the post process name
80
+ */
81
+ static RegisterShaderCodeProcessing(postProcessName, customShaderCodeProcessing) {
82
+ EffectWrapper.RegisterShaderCodeProcessing(postProcessName, customShaderCodeProcessing);
83
+ }
84
+ /** Name of the PostProcess. */
85
+ get name() {
86
+ return this._effectWrapper.name;
87
+ }
88
+ set name(value) {
89
+ this._effectWrapper.name = value;
90
+ }
91
+ /**
92
+ * Type of alpha mode to use when performing the post process (default: Engine.ALPHA_DISABLE)
93
+ */
94
+ get alphaMode() {
95
+ return this._effectWrapper.alphaMode;
96
+ }
97
+ set alphaMode(value) {
98
+ this._effectWrapper.alphaMode = value;
99
+ }
100
+ /**
101
+ * Number of sample textures (default: 1)
102
+ */
103
+ get samples() {
104
+ return this._samples;
105
+ }
106
+ set samples(n) {
107
+ this._samples = Math.min(n, this._engine.getCaps().maxMSAASamples);
108
+ this._textures.forEach((texture) => {
109
+ texture.setSamples(this._samples);
333
110
  });
334
- this.name = name;
335
- this.onEffectCreatedObservable = this._effectWrapper.onEffectCreatedObservable;
336
- if (camera != null) {
337
- this._camera = camera;
338
- this._scene = camera.getScene();
339
- camera.attachPostProcess(this);
340
- this._engine = this._scene.getEngine();
341
- this._scene.addPostProcess(this);
342
- this.uniqueId = this._scene.getUniqueId();
343
- }
344
- else if (engine) {
345
- this._engine = engine;
346
- this._engine.postProcesses.push(this);
347
- }
348
- this._options = size;
349
- this.renderTargetSamplingMode = samplingMode ? samplingMode : 1;
350
- this._reusable = reusable || false;
351
- this._textureType = textureType;
352
- this._textureFormat = textureFormat;
353
- this._shaderLanguage = shaderLanguage || 0 /* ShaderLanguage.GLSL */;
354
- this._samplers = samplers || [];
355
- if (this._samplers.indexOf("textureSampler") === -1) {
356
- this._samplers.push("textureSampler");
357
- }
358
- this._fragmentUrl = fragmentUrl;
359
- this._vertexUrl = vertexUrl;
360
- this._parameters = parameters || [];
361
- if (this._parameters.indexOf("scale") === -1) {
362
- this._parameters.push("scale");
363
- }
364
- this._uniformBuffers = uniformBuffers || [];
365
- this._indexParameters = indexParameters;
366
- if (!this._useExistingThinPostProcess) {
367
- this._webGPUReady = this._shaderLanguage === 1 /* ShaderLanguage.WGSL */;
368
- const importPromises = [];
369
- this._gatherImports(this._engine.isWebGPU && !PostProcess.ForceGLSL, importPromises);
370
- this._effectWrapper._webGPUReady = this._webGPUReady;
371
- this._effectWrapper._postConstructor(blockCompilation, defines, extraInitializations, importPromises);
372
- }
373
- }
374
- _gatherImports(useWebGPU = false, list) {
375
- // this._webGPUReady is used to detect when a postprocess is intended to be used with WebGPU
376
- if (useWebGPU && this._webGPUReady) {
377
- list.push(Promise.all([import("../ShadersWGSL/postprocess.vertex.js")]));
378
- }
379
- else {
380
- list.push(Promise.all([import("../Shaders/postprocess.vertex.js")]));
381
- }
382
- }
383
- /**
384
- * Gets a string identifying the name of the class
385
- * @returns "PostProcess" string
386
- */
387
- getClassName() {
388
- return "PostProcess";
389
- }
390
- /**
391
- * Gets the engine which this post process belongs to.
392
- * @returns The engine the post process was enabled with.
393
- */
394
- getEngine() {
395
- return this._engine;
396
- }
397
- /**
398
- * The effect that is created when initializing the post process.
399
- * @returns The created effect corresponding to the postprocess.
400
- */
401
- getEffect() {
402
- return this._effectWrapper.drawWrapper.effect;
403
- }
404
- /**
405
- * To avoid multiple redundant textures for multiple post process, the output the output texture for this post process can be shared with another.
406
- * @param postProcess The post process to share the output with.
407
- * @returns This post process.
408
- */
409
- shareOutputWith(postProcess) {
410
- this._disposeTextures();
411
- this._shareOutputWithPostProcess = postProcess;
412
- return this;
413
- }
414
- /**
415
- * Reverses the effect of calling shareOutputWith and returns the post process back to its original state.
416
- * This should be called if the post process that shares output with this post process is disabled/disposed.
417
- */
418
- useOwnOutput() {
419
- if (this._textures.length == 0) {
420
- this._textures = new SmartArray(2);
421
- }
422
- this._shareOutputWithPostProcess = null;
423
- }
424
- /**
425
- * Updates the effect with the current post process compile time values and recompiles the shader.
426
- * @param defines Define statements that should be added at the beginning of the shader. (default: null)
427
- * @param uniforms Set of uniform variables that will be passed to the shader. (default: null)
428
- * @param samplers Set of Texture2D variables that will be passed to the shader. (default: null)
429
- * @param indexParameters The index parameters to be used for babylons include syntax "#include<kernelBlurVaryingDeclaration>[0..varyingCount]". (default: undefined) See usage in babylon.blurPostProcess.ts and kernelBlur.vertex.fx
430
- * @param onCompiled Called when the shader has been compiled.
431
- * @param onError Called if there is an error when compiling a shader.
432
- * @param vertexUrl The url of the vertex shader to be used (default: the one given at construction time)
433
- * @param fragmentUrl The url of the fragment shader to be used (default: the one given at construction time)
434
- */
435
- updateEffect(defines = null, uniforms = null, samplers = null, indexParameters, onCompiled, onError, vertexUrl, fragmentUrl) {
436
- this._effectWrapper.updateEffect(defines, uniforms, samplers, indexParameters, onCompiled, onError, vertexUrl, fragmentUrl);
437
- this._postProcessDefines = Array.isArray(this._effectWrapper.options.defines) ? this._effectWrapper.options.defines.join("\n") : this._effectWrapper.options.defines;
438
- }
439
- /**
440
- * The post process is reusable if it can be used multiple times within one frame.
441
- * @returns If the post process is reusable
442
- */
443
- isReusable() {
444
- return this._reusable;
445
- }
446
- /** invalidate frameBuffer to hint the postprocess to create a depth buffer */
447
- markTextureDirty() {
448
- this.width = -1;
449
- }
450
- _createRenderTargetTexture(textureSize, textureOptions, channel = 0) {
451
- for (let i = 0; i < this._textureCache.length; i++) {
452
- if (this._textureCache[i].texture.width === textureSize.width &&
453
- this._textureCache[i].texture.height === textureSize.height &&
454
- this._textureCache[i].postProcessChannel === channel &&
455
- this._textureCache[i].texture._generateDepthBuffer === textureOptions.generateDepthBuffer &&
456
- this._textureCache[i].texture.samples === textureOptions.samples) {
457
- return this._textureCache[i].texture;
458
111
  }
459
- }
460
- const tex = this._engine.createRenderTargetTexture(textureSize, textureOptions);
461
- this._textureCache.push({ texture: tex, postProcessChannel: channel, lastUsedRenderId: -1 });
462
- return tex;
463
- }
464
- _flushTextureCache() {
465
- const currentRenderId = this._renderId;
466
- for (let i = this._textureCache.length - 1; i >= 0; i--) {
467
- if (currentRenderId - this._textureCache[i].lastUsedRenderId > 100) {
468
- let currentlyUsed = false;
469
- for (let j = 0; j < this._textures.length; j++) {
470
- if (this._textures.data[j] === this._textureCache[i].texture) {
471
- currentlyUsed = true;
472
- break;
112
+ /**
113
+ * Gets the shader language type used to generate vertex and fragment source code.
114
+ */
115
+ get shaderLanguage() {
116
+ return this._shaderLanguage;
117
+ }
118
+ /**
119
+ * Returns the fragment url or shader name used in the post process.
120
+ * @returns the fragment url or name in the shader store.
121
+ */
122
+ getEffectName() {
123
+ return this._fragmentUrl;
124
+ }
125
+ /**
126
+ * A function that is added to the onActivateObservable
127
+ */
128
+ set onActivate(callback) {
129
+ if (this._onActivateObserver) {
130
+ this.onActivateObservable.remove(this._onActivateObserver);
131
+ }
132
+ if (callback) {
133
+ this._onActivateObserver = this.onActivateObservable.add(callback);
134
+ }
135
+ }
136
+ /**
137
+ * A function that is added to the onSizeChangedObservable
138
+ */
139
+ set onSizeChanged(callback) {
140
+ if (this._onSizeChangedObserver) {
141
+ this.onSizeChangedObservable.remove(this._onSizeChangedObserver);
142
+ }
143
+ this._onSizeChangedObserver = this.onSizeChangedObservable.add(callback);
144
+ }
145
+ /**
146
+ * A function that is added to the onApplyObservable
147
+ */
148
+ set onApply(callback) {
149
+ if (this._onApplyObserver) {
150
+ this.onApplyObservable.remove(this._onApplyObserver);
151
+ }
152
+ this._onApplyObserver = this.onApplyObservable.add(callback);
153
+ }
154
+ /**
155
+ * A function that is added to the onBeforeRenderObservable
156
+ */
157
+ set onBeforeRender(callback) {
158
+ if (this._onBeforeRenderObserver) {
159
+ this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver);
160
+ }
161
+ this._onBeforeRenderObserver = this.onBeforeRenderObservable.add(callback);
162
+ }
163
+ /**
164
+ * A function that is added to the onAfterRenderObservable
165
+ */
166
+ set onAfterRender(callback) {
167
+ if (this._onAfterRenderObserver) {
168
+ this.onAfterRenderObservable.remove(this._onAfterRenderObserver);
169
+ }
170
+ this._onAfterRenderObserver = this.onAfterRenderObservable.add(callback);
171
+ }
172
+ /**
173
+ * The input texture for this post process and the output texture of the previous post process. When added to a pipeline the previous post process will
174
+ * render it's output into this texture and this texture will be used as textureSampler in the fragment shader of this post process.
175
+ */
176
+ get inputTexture() {
177
+ return this._textures.data[this._currentRenderTextureInd];
178
+ }
179
+ set inputTexture(value) {
180
+ this._forcedOutputTexture = value;
181
+ }
182
+ /**
183
+ * Since inputTexture should always be defined, if we previously manually set `inputTexture`,
184
+ * the only way to unset it is to use this function to restore its internal state
185
+ */
186
+ restoreDefaultInputTexture() {
187
+ if (this._forcedOutputTexture) {
188
+ this._forcedOutputTexture = null;
189
+ this.markTextureDirty();
190
+ }
191
+ }
192
+ /**
193
+ * Gets the camera which post process is applied to.
194
+ * @returns The camera the post process is applied to.
195
+ */
196
+ getCamera() {
197
+ return this._camera;
198
+ }
199
+ /**
200
+ * Gets the texel size of the postprocess.
201
+ * See https://en.wikipedia.org/wiki/Texel_(graphics)
202
+ */
203
+ get texelSize() {
204
+ if (this._shareOutputWithPostProcess) {
205
+ return this._shareOutputWithPostProcess.texelSize;
206
+ }
207
+ if (this._forcedOutputTexture) {
208
+ this._texelSize.copyFromFloats(1.0 / this._forcedOutputTexture.width, 1.0 / this._forcedOutputTexture.height);
209
+ }
210
+ return this._texelSize;
211
+ }
212
+ /** @internal */
213
+ constructor(name, fragmentUrl, parameters, samplers, _size, camera, samplingMode = 1, engine, reusable, defines = null, textureType = 0, vertexUrl = "postprocess", indexParameters, blockCompilation = false, textureFormat = 5, shaderLanguage, extraInitializations) {
214
+ /** @internal */
215
+ this._parentContainer = (__runInitializers(this, _instanceExtraInitializers), null);
216
+ /**
217
+ * Gets or sets the unique id of the post process
218
+ */
219
+ this.uniqueId = __runInitializers(this, _uniqueId_initializers, void 0);
220
+ /**
221
+ * Width of the texture to apply the post process on
222
+ */
223
+ this.width = (__runInitializers(this, _uniqueId_extraInitializers), __runInitializers(this, _width_initializers, -1));
224
+ /**
225
+ * Height of the texture to apply the post process on
226
+ */
227
+ this.height = (__runInitializers(this, _width_extraInitializers), __runInitializers(this, _height_initializers, -1));
228
+ /**
229
+ * Gets the node material used to create this postprocess (null if the postprocess was manually created)
230
+ */
231
+ this.nodeMaterialSource = (__runInitializers(this, _height_extraInitializers), null);
232
+ /**
233
+ * Internal, reference to the location where this postprocess was output to. (Typically the texture on the next postprocess in the chain)
234
+ * @internal
235
+ */
236
+ this._outputTexture = null;
237
+ /**
238
+ * Sampling mode used by the shader
239
+ */
240
+ this.renderTargetSamplingMode = __runInitializers(this, _renderTargetSamplingMode_initializers, void 0);
241
+ /**
242
+ * Clear color to use when screen clearing
243
+ */
244
+ this.clearColor = (__runInitializers(this, _renderTargetSamplingMode_extraInitializers), __runInitializers(this, _clearColor_initializers, void 0));
245
+ /**
246
+ * If the buffer needs to be cleared before applying the post process. (default: true)
247
+ * Should be set to false if shader will overwrite all previous pixels.
248
+ */
249
+ this.autoClear = (__runInitializers(this, _clearColor_extraInitializers), __runInitializers(this, _autoClear_initializers, true));
250
+ /**
251
+ * If clearing the buffer should be forced in autoClear mode, even when alpha mode is enabled (default: false).
252
+ * By default, the buffer will only be cleared if alpha mode is disabled (and autoClear is true).
253
+ */
254
+ this.forceAutoClearInAlphaMode = (__runInitializers(this, _autoClear_extraInitializers), __runInitializers(this, _forceAutoClearInAlphaMode_initializers, false));
255
+ /**
256
+ * Sets the setAlphaBlendConstants of the babylon engine
257
+ */
258
+ this.alphaConstants = (__runInitializers(this, _forceAutoClearInAlphaMode_extraInitializers), __runInitializers(this, _alphaConstants_initializers, void 0));
259
+ /**
260
+ * Animations to be used for the post processing
261
+ */
262
+ this.animations = (__runInitializers(this, _alphaConstants_extraInitializers), []);
263
+ /**
264
+ * Enable Pixel Perfect mode where texture is not scaled to be power of 2.
265
+ * Can only be used on a single postprocess or on the last one of a chain. (default: false)
266
+ */
267
+ this.enablePixelPerfectMode = __runInitializers(this, _enablePixelPerfectMode_initializers, false);
268
+ /**
269
+ * Force the postprocess to be applied without taking in account viewport
270
+ */
271
+ this.forceFullscreenViewport = (__runInitializers(this, _enablePixelPerfectMode_extraInitializers), __runInitializers(this, _forceFullscreenViewport_initializers, true));
272
+ /**
273
+ * List of inspectable custom properties (used by the Inspector)
274
+ * @see https://doc.babylonjs.com/toolsAndResources/inspector#extensibility
275
+ */
276
+ this.inspectableCustomProperties = __runInitializers(this, _forceFullscreenViewport_extraInitializers);
277
+ /**
278
+ * Scale mode for the post process (default: Engine.SCALEMODE_FLOOR)
279
+ *
280
+ * | Value | Type | Description |
281
+ * | ----- | ----------------------------------- | ----------- |
282
+ * | 1 | SCALEMODE_FLOOR | [engine.scalemode_floor](https://doc.babylonjs.com/api/classes/babylon.engine#scalemode_floor) |
283
+ * | 2 | SCALEMODE_NEAREST | [engine.scalemode_nearest](https://doc.babylonjs.com/api/classes/babylon.engine#scalemode_nearest) |
284
+ * | 3 | SCALEMODE_CEILING | [engine.scalemode_ceiling](https://doc.babylonjs.com/api/classes/babylon.engine#scalemode_ceiling) |
285
+ *
286
+ */
287
+ this.scaleMode = __runInitializers(this, _scaleMode_initializers, 1);
288
+ /**
289
+ * Force textures to be a power of two (default: false)
290
+ */
291
+ this.alwaysForcePOT = (__runInitializers(this, _scaleMode_extraInitializers), __runInitializers(this, _alwaysForcePOT_initializers, false));
292
+ this._samples = (__runInitializers(this, _alwaysForcePOT_extraInitializers), __runInitializers(this, __samples_initializers, 1));
293
+ /**
294
+ * Modify the scale of the post process to be the same as the viewport (default: false)
295
+ */
296
+ this.adaptScaleToCurrentViewport = (__runInitializers(this, __samples_extraInitializers), __runInitializers(this, _adaptScaleToCurrentViewport_initializers, false));
297
+ /**
298
+ * Specifies if the post process should be serialized
299
+ */
300
+ this.doNotSerialize = (__runInitializers(this, _adaptScaleToCurrentViewport_extraInitializers), false);
301
+ this._webGPUReady = false;
302
+ this._reusable = false;
303
+ this._renderId = 0;
304
+ /**
305
+ * if externalTextureSamplerBinding is true, the "apply" method won't bind the textureSampler texture, it is expected to be done by the "outside" (by the onApplyObservable observer most probably).
306
+ * counter-productive in some cases because if the texture bound by "apply" is different from the currently texture bound, (the one set by the onApplyObservable observer, for eg) some
307
+ * internal structures (materialContext) will be dirtified, which may impact performances
308
+ */
309
+ this.externalTextureSamplerBinding = false;
310
+ /**
311
+ * Smart array of input and output textures for the post process.
312
+ * @internal
313
+ */
314
+ this._textures = new SmartArray(2);
315
+ /**
316
+ * Smart array of input and output textures for the post process.
317
+ * @internal
318
+ */
319
+ this._textureCache = [];
320
+ /**
321
+ * The index in _textures that corresponds to the output texture.
322
+ * @internal
323
+ */
324
+ this._currentRenderTextureInd = 0;
325
+ this._scaleRatio = new Vector2(1, 1);
326
+ this._texelSize = Vector2.Zero();
327
+ // Events
328
+ /**
329
+ * An event triggered when the postprocess is activated.
330
+ */
331
+ this.onActivateObservable = new Observable();
332
+ /**
333
+ * An event triggered when the postprocess changes its size.
334
+ */
335
+ this.onSizeChangedObservable = new Observable();
336
+ /**
337
+ * An event triggered when the postprocess applies its effect.
338
+ */
339
+ this.onApplyObservable = new Observable();
340
+ /**
341
+ * An event triggered before rendering the postprocess
342
+ */
343
+ this.onBeforeRenderObservable = new Observable();
344
+ /**
345
+ * An event triggered after rendering the postprocess
346
+ */
347
+ this.onAfterRenderObservable = new Observable();
348
+ /**
349
+ * An event triggered when the post-process is disposed
350
+ */
351
+ this.onDisposeObservable = new Observable();
352
+ // PostProcess pipelines that chain textures (SSAO2, bloom, depth of field, ...) rely on the
353
+ // setTextureFromPostProcess / setTextureFromPostProcessOutput engine/effect methods, which are
354
+ // registered as a side effect. Register them at construction time so these methods work in
355
+ // tree-shaken builds that import the pure module without the side-effect wrapper. Idempotent.
356
+ RegisterPostProcess();
357
+ let size = 1;
358
+ let uniformBuffers = null;
359
+ let effectWrapper;
360
+ if (parameters && !Array.isArray(parameters)) {
361
+ const options = parameters;
362
+ parameters = options.uniforms ?? null;
363
+ samplers = options.samplers ?? null;
364
+ size = options.size ?? 1;
365
+ camera = options.camera ?? null;
366
+ samplingMode = options.samplingMode ?? 1;
367
+ engine = options.engine;
368
+ reusable = options.reusable;
369
+ defines = Array.isArray(options.defines) ? options.defines.join("\n") : (options.defines ?? null);
370
+ textureType = options.textureType ?? 0;
371
+ vertexUrl = options.vertexUrl ?? "postprocess";
372
+ indexParameters = options.indexParameters;
373
+ blockCompilation = options.blockCompilation ?? false;
374
+ textureFormat = options.textureFormat ?? 5;
375
+ shaderLanguage = options.shaderLanguage ?? 0 /* ShaderLanguage.GLSL */;
376
+ uniformBuffers = options.uniformBuffers ?? null;
377
+ extraInitializations = options.extraInitializations;
378
+ effectWrapper = options.effectWrapper;
379
+ }
380
+ else if (_size) {
381
+ if (typeof _size === "number") {
382
+ size = _size;
473
383
  }
384
+ else {
385
+ size = { width: _size.width, height: _size.height };
386
+ }
387
+ }
388
+ this._useExistingThinPostProcess = !!effectWrapper;
389
+ this._effectWrapper =
390
+ effectWrapper ??
391
+ new EffectWrapper({
392
+ name,
393
+ useShaderStore: true,
394
+ useAsPostProcess: true,
395
+ fragmentShader: fragmentUrl,
396
+ engine: engine || camera?.getScene().getEngine(),
397
+ uniforms: parameters,
398
+ samplers,
399
+ uniformBuffers,
400
+ defines,
401
+ vertexUrl,
402
+ indexParameters,
403
+ blockCompilation: true,
404
+ shaderLanguage,
405
+ extraInitializations: undefined,
406
+ });
407
+ this.name = name;
408
+ this.onEffectCreatedObservable = this._effectWrapper.onEffectCreatedObservable;
409
+ if (camera != null) {
410
+ this._camera = camera;
411
+ this._scene = camera.getScene();
412
+ camera.attachPostProcess(this);
413
+ this._engine = this._scene.getEngine();
414
+ this._scene.addPostProcess(this);
415
+ this.uniqueId = this._scene.getUniqueId();
474
416
  }
475
- if (!currentlyUsed) {
417
+ else if (engine) {
418
+ this._engine = engine;
419
+ this._engine.postProcesses.push(this);
420
+ }
421
+ this._options = size;
422
+ this.renderTargetSamplingMode = samplingMode ? samplingMode : 1;
423
+ this._reusable = reusable || false;
424
+ this._textureType = textureType;
425
+ this._textureFormat = textureFormat;
426
+ this._shaderLanguage = shaderLanguage || 0 /* ShaderLanguage.GLSL */;
427
+ this._samplers = samplers || [];
428
+ if (this._samplers.indexOf("textureSampler") === -1) {
429
+ this._samplers.push("textureSampler");
430
+ }
431
+ this._fragmentUrl = fragmentUrl;
432
+ this._vertexUrl = vertexUrl;
433
+ this._parameters = parameters || [];
434
+ if (this._parameters.indexOf("scale") === -1) {
435
+ this._parameters.push("scale");
436
+ }
437
+ this._uniformBuffers = uniformBuffers || [];
438
+ this._indexParameters = indexParameters;
439
+ if (!this._useExistingThinPostProcess) {
440
+ this._webGPUReady = this._shaderLanguage === 1 /* ShaderLanguage.WGSL */;
441
+ const importPromises = [];
442
+ this._gatherImports(this._engine.isWebGPU && !_a.ForceGLSL, importPromises);
443
+ this._effectWrapper._webGPUReady = this._webGPUReady;
444
+ this._effectWrapper._postConstructor(blockCompilation, defines, extraInitializations, importPromises);
445
+ }
446
+ }
447
+ _gatherImports(useWebGPU = false, list) {
448
+ // this._webGPUReady is used to detect when a postprocess is intended to be used with WebGPU
449
+ if (useWebGPU && this._webGPUReady) {
450
+ list.push(Promise.all([import("../ShadersWGSL/postprocess.vertex.js")]));
451
+ }
452
+ else {
453
+ list.push(Promise.all([import("../Shaders/postprocess.vertex.js")]));
454
+ }
455
+ }
456
+ /**
457
+ * Gets a string identifying the name of the class
458
+ * @returns "PostProcess" string
459
+ */
460
+ getClassName() {
461
+ return "PostProcess";
462
+ }
463
+ /**
464
+ * Gets the engine which this post process belongs to.
465
+ * @returns The engine the post process was enabled with.
466
+ */
467
+ getEngine() {
468
+ return this._engine;
469
+ }
470
+ /**
471
+ * The effect that is created when initializing the post process.
472
+ * @returns The created effect corresponding to the postprocess.
473
+ */
474
+ getEffect() {
475
+ return this._effectWrapper.drawWrapper.effect;
476
+ }
477
+ /**
478
+ * To avoid multiple redundant textures for multiple post process, the output the output texture for this post process can be shared with another.
479
+ * @param postProcess The post process to share the output with.
480
+ * @returns This post process.
481
+ */
482
+ shareOutputWith(postProcess) {
483
+ this._disposeTextures();
484
+ this._shareOutputWithPostProcess = postProcess;
485
+ return this;
486
+ }
487
+ /**
488
+ * Reverses the effect of calling shareOutputWith and returns the post process back to its original state.
489
+ * This should be called if the post process that shares output with this post process is disabled/disposed.
490
+ */
491
+ useOwnOutput() {
492
+ if (this._textures.length == 0) {
493
+ this._textures = new SmartArray(2);
494
+ }
495
+ this._shareOutputWithPostProcess = null;
496
+ }
497
+ /**
498
+ * Updates the effect with the current post process compile time values and recompiles the shader.
499
+ * @param defines Define statements that should be added at the beginning of the shader. (default: null)
500
+ * @param uniforms Set of uniform variables that will be passed to the shader. (default: null)
501
+ * @param samplers Set of Texture2D variables that will be passed to the shader. (default: null)
502
+ * @param indexParameters The index parameters to be used for babylons include syntax "#include<kernelBlurVaryingDeclaration>[0..varyingCount]". (default: undefined) See usage in babylon.blurPostProcess.ts and kernelBlur.vertex.fx
503
+ * @param onCompiled Called when the shader has been compiled.
504
+ * @param onError Called if there is an error when compiling a shader.
505
+ * @param vertexUrl The url of the vertex shader to be used (default: the one given at construction time)
506
+ * @param fragmentUrl The url of the fragment shader to be used (default: the one given at construction time)
507
+ */
508
+ updateEffect(defines = null, uniforms = null, samplers = null, indexParameters, onCompiled, onError, vertexUrl, fragmentUrl) {
509
+ this._effectWrapper.updateEffect(defines, uniforms, samplers, indexParameters, onCompiled, onError, vertexUrl, fragmentUrl);
510
+ this._postProcessDefines = Array.isArray(this._effectWrapper.options.defines) ? this._effectWrapper.options.defines.join("\n") : this._effectWrapper.options.defines;
511
+ }
512
+ /**
513
+ * The post process is reusable if it can be used multiple times within one frame.
514
+ * @returns If the post process is reusable
515
+ */
516
+ isReusable() {
517
+ return this._reusable;
518
+ }
519
+ /** invalidate frameBuffer to hint the postprocess to create a depth buffer */
520
+ markTextureDirty() {
521
+ this.width = -1;
522
+ }
523
+ _createRenderTargetTexture(textureSize, textureOptions, channel = 0) {
524
+ for (let i = 0; i < this._textureCache.length; i++) {
525
+ if (this._textureCache[i].texture.width === textureSize.width &&
526
+ this._textureCache[i].texture.height === textureSize.height &&
527
+ this._textureCache[i].postProcessChannel === channel &&
528
+ this._textureCache[i].texture._generateDepthBuffer === textureOptions.generateDepthBuffer &&
529
+ this._textureCache[i].texture.samples === textureOptions.samples) {
530
+ return this._textureCache[i].texture;
531
+ }
532
+ }
533
+ const tex = this._engine.createRenderTargetTexture(textureSize, textureOptions);
534
+ this._textureCache.push({ texture: tex, postProcessChannel: channel, lastUsedRenderId: -1 });
535
+ return tex;
536
+ }
537
+ _flushTextureCache() {
538
+ const currentRenderId = this._renderId;
539
+ for (let i = this._textureCache.length - 1; i >= 0; i--) {
540
+ if (currentRenderId - this._textureCache[i].lastUsedRenderId > 100) {
541
+ let currentlyUsed = false;
542
+ for (let j = 0; j < this._textures.length; j++) {
543
+ if (this._textures.data[j] === this._textureCache[i].texture) {
544
+ currentlyUsed = true;
545
+ break;
546
+ }
547
+ }
548
+ if (!currentlyUsed) {
549
+ this._textureCache[i].texture.dispose();
550
+ this._textureCache.splice(i, 1);
551
+ }
552
+ }
553
+ }
554
+ }
555
+ /**
556
+ * Resizes the post-process texture
557
+ * @param width Width of the texture
558
+ * @param height Height of the texture
559
+ * @param camera The camera this post-process is applied to. Pass null if the post-process is used outside the context of a camera post-process chain (default: null)
560
+ * @param needMipMaps True if mip maps need to be generated after render (default: false)
561
+ * @param forceDepthStencil True to force post-process texture creation with stencil depth and buffer (default: false)
562
+ */
563
+ resize(width, height, camera = null, needMipMaps = false, forceDepthStencil = false) {
564
+ if (this._textures.length > 0) {
565
+ this._textures.reset();
566
+ }
567
+ this.width = width;
568
+ this.height = height;
569
+ let firstPP = null;
570
+ if (camera) {
571
+ for (let i = 0; i < camera._postProcesses.length; i++) {
572
+ if (camera._postProcesses[i] !== null) {
573
+ firstPP = camera._postProcesses[i];
574
+ break;
575
+ }
576
+ }
577
+ }
578
+ const textureSize = { width: this.width, height: this.height };
579
+ const textureOptions = {
580
+ generateMipMaps: needMipMaps,
581
+ generateDepthBuffer: forceDepthStencil || firstPP === this,
582
+ generateStencilBuffer: (forceDepthStencil || firstPP === this) && this._engine.isStencilEnable,
583
+ samplingMode: this.renderTargetSamplingMode,
584
+ type: this._textureType,
585
+ format: this._textureFormat,
586
+ samples: this._samples,
587
+ label: "PostProcessRTT-" + this.name,
588
+ };
589
+ this._textures.push(this._createRenderTargetTexture(textureSize, textureOptions, 0));
590
+ if (this._reusable) {
591
+ this._textures.push(this._createRenderTargetTexture(textureSize, textureOptions, 1));
592
+ }
593
+ this._texelSize.copyFromFloats(1.0 / this.width, 1.0 / this.height);
594
+ this.onSizeChangedObservable.notifyObservers(this);
595
+ }
596
+ _getTarget() {
597
+ let target;
598
+ if (this._shareOutputWithPostProcess) {
599
+ target = this._shareOutputWithPostProcess.inputTexture;
600
+ }
601
+ else if (this._forcedOutputTexture) {
602
+ target = this._forcedOutputTexture;
603
+ this.width = this._forcedOutputTexture.width;
604
+ this.height = this._forcedOutputTexture.height;
605
+ }
606
+ else {
607
+ target = this.inputTexture;
608
+ let cache;
609
+ for (let i = 0; i < this._textureCache.length; i++) {
610
+ if (this._textureCache[i].texture === target) {
611
+ cache = this._textureCache[i];
612
+ break;
613
+ }
614
+ }
615
+ if (cache) {
616
+ cache.lastUsedRenderId = this._renderId;
617
+ }
618
+ }
619
+ return target;
620
+ }
621
+ /**
622
+ * Activates the post process by intializing the textures to be used when executed. Notifies onActivateObservable.
623
+ * When this post process is used in a pipeline, this is call will bind the input texture of this post process to the output of the previous.
624
+ * @param cameraOrScene The camera that will be used in the post process. This camera will be used when calling onActivateObservable. You can also pass the scene if no camera is available.
625
+ * @param sourceTexture The source texture to be inspected to get the width and height if not specified in the post process constructor. (default: null)
626
+ * @param forceDepthStencil If true, a depth and stencil buffer will be generated. (default: false)
627
+ * @returns The render target wrapper that was bound to be written to.
628
+ */
629
+ activate(cameraOrScene, sourceTexture = null, forceDepthStencil) {
630
+ const camera = cameraOrScene === null || cameraOrScene.cameraRigMode !== undefined ? cameraOrScene || this._camera : null;
631
+ const scene = camera?.getScene() ?? cameraOrScene;
632
+ const engine = scene.getEngine();
633
+ const maxSize = engine.getCaps().maxTextureSize;
634
+ const requiredWidth = ((sourceTexture ? sourceTexture.width : this._engine.getRenderWidth(true)) * this._options) | 0;
635
+ const requiredHeight = ((sourceTexture ? sourceTexture.height : this._engine.getRenderHeight(true)) * this._options) | 0;
636
+ let desiredWidth = this._options.width || requiredWidth;
637
+ let desiredHeight = this._options.height || requiredHeight;
638
+ const needMipMaps = this.renderTargetSamplingMode !== 7 &&
639
+ this.renderTargetSamplingMode !== 1 &&
640
+ this.renderTargetSamplingMode !== 2;
641
+ let target = null;
642
+ if (!this._shareOutputWithPostProcess && !this._forcedOutputTexture) {
643
+ if (this.adaptScaleToCurrentViewport) {
644
+ const currentViewport = engine.currentViewport;
645
+ if (currentViewport) {
646
+ desiredWidth *= currentViewport.width;
647
+ desiredHeight *= currentViewport.height;
648
+ }
649
+ }
650
+ if (needMipMaps || this.alwaysForcePOT) {
651
+ if (!this._options.width) {
652
+ desiredWidth = engine.needPOTTextures ? GetExponentOfTwo(desiredWidth, maxSize, this.scaleMode) : desiredWidth;
653
+ }
654
+ if (!this._options.height) {
655
+ desiredHeight = engine.needPOTTextures ? GetExponentOfTwo(desiredHeight, maxSize, this.scaleMode) : desiredHeight;
656
+ }
657
+ }
658
+ if (this.width !== desiredWidth || this.height !== desiredHeight || !(target = this._getTarget())) {
659
+ this.resize(desiredWidth, desiredHeight, camera, needMipMaps, forceDepthStencil);
660
+ }
661
+ this._textures.forEach((texture) => {
662
+ if (texture.samples !== this.samples) {
663
+ this._engine.updateRenderTargetTextureSampleCount(texture, this.samples);
664
+ }
665
+ });
666
+ this._flushTextureCache();
667
+ this._renderId++;
668
+ }
669
+ if (!target) {
670
+ target = this._getTarget();
671
+ }
672
+ // Bind the input of this post process to be used as the output of the previous post process.
673
+ if (this.enablePixelPerfectMode) {
674
+ this._scaleRatio.copyFromFloats(requiredWidth / desiredWidth, requiredHeight / desiredHeight);
675
+ this._engine.bindFramebuffer(target, 0, requiredWidth, requiredHeight, this.forceFullscreenViewport);
676
+ }
677
+ else {
678
+ this._scaleRatio.copyFromFloats(1, 1);
679
+ this._engine.bindFramebuffer(target, 0, undefined, undefined, this.forceFullscreenViewport);
680
+ }
681
+ this._engine._debugInsertMarker?.(`post process ${this.name} input`);
682
+ this.onActivateObservable.notifyObservers(camera);
683
+ // Clear
684
+ if (this.autoClear && (this.alphaMode === 0 || this.forceAutoClearInAlphaMode)) {
685
+ this._engine.clear(this.clearColor ? this.clearColor : scene.clearColor, scene._allowPostProcessClearColor, true, true);
686
+ }
687
+ if (this._reusable) {
688
+ this._currentRenderTextureInd = (this._currentRenderTextureInd + 1) % 2;
689
+ }
690
+ return target;
691
+ }
692
+ /**
693
+ * If the post process is supported.
694
+ */
695
+ get isSupported() {
696
+ return this._effectWrapper.drawWrapper.effect.isSupported;
697
+ }
698
+ /**
699
+ * The aspect ratio of the output texture.
700
+ */
701
+ get aspectRatio() {
702
+ if (this._shareOutputWithPostProcess) {
703
+ return this._shareOutputWithPostProcess.aspectRatio;
704
+ }
705
+ if (this._forcedOutputTexture) {
706
+ return this._forcedOutputTexture.width / this._forcedOutputTexture.height;
707
+ }
708
+ return this.width / this.height;
709
+ }
710
+ /**
711
+ * Get a value indicating if the post-process is ready to be used
712
+ * @returns true if the post-process is ready (shader is compiled)
713
+ */
714
+ isReady() {
715
+ return this._effectWrapper.isReady();
716
+ }
717
+ /**
718
+ * Binds all textures and uniforms to the shader, this will be run on every pass.
719
+ * @returns the effect corresponding to this post process. Null if not compiled or not ready.
720
+ */
721
+ apply() {
722
+ // Check
723
+ if (!this._effectWrapper.isReady()) {
724
+ return null;
725
+ }
726
+ // States
727
+ this._engine.enableEffect(this._effectWrapper.drawWrapper);
728
+ this._engine.setState(false);
729
+ this._engine.setDepthBuffer(false);
730
+ this._engine.setDepthWrite(false);
731
+ // Alpha
732
+ if (this.alphaConstants) {
733
+ this.getEngine().setAlphaConstants(this.alphaConstants.r, this.alphaConstants.g, this.alphaConstants.b, this.alphaConstants.a);
734
+ }
735
+ this._engine.setAlphaMode(this.alphaMode);
736
+ // Bind the output texture of the preivous post process as the input to this post process.
737
+ let source;
738
+ if (this._shareOutputWithPostProcess) {
739
+ source = this._shareOutputWithPostProcess.inputTexture;
740
+ }
741
+ else if (this._forcedOutputTexture) {
742
+ source = this._forcedOutputTexture;
743
+ }
744
+ else {
745
+ source = this.inputTexture;
746
+ }
747
+ if (!this.externalTextureSamplerBinding) {
748
+ this._effectWrapper.drawWrapper.effect._bindTexture("textureSampler", source?.texture);
749
+ }
750
+ // Parameters
751
+ this._effectWrapper.drawWrapper.effect.setVector2("scale", this._scaleRatio);
752
+ this.onApplyObservable.notifyObservers(this._effectWrapper.drawWrapper.effect);
753
+ this._effectWrapper.bind(true);
754
+ return this._effectWrapper.drawWrapper.effect;
755
+ }
756
+ _disposeTextures() {
757
+ if (this._shareOutputWithPostProcess || this._forcedOutputTexture) {
758
+ this._disposeTextureCache();
759
+ return;
760
+ }
761
+ this._disposeTextureCache();
762
+ this._textures.dispose();
763
+ }
764
+ _disposeTextureCache() {
765
+ for (let i = this._textureCache.length - 1; i >= 0; i--) {
476
766
  this._textureCache[i].texture.dispose();
477
- this._textureCache.splice(i, 1);
478
767
  }
768
+ this._textureCache.length = 0;
479
769
  }
480
- }
481
- }
482
- /**
483
- * Resizes the post-process texture
484
- * @param width Width of the texture
485
- * @param height Height of the texture
486
- * @param camera The camera this post-process is applied to. Pass null if the post-process is used outside the context of a camera post-process chain (default: null)
487
- * @param needMipMaps True if mip maps need to be generated after render (default: false)
488
- * @param forceDepthStencil True to force post-process texture creation with stencil depth and buffer (default: false)
489
- */
490
- resize(width, height, camera = null, needMipMaps = false, forceDepthStencil = false) {
491
- if (this._textures.length > 0) {
492
- this._textures.reset();
493
- }
494
- this.width = width;
495
- this.height = height;
496
- let firstPP = null;
497
- if (camera) {
498
- for (let i = 0; i < camera._postProcesses.length; i++) {
499
- if (camera._postProcesses[i] !== null) {
500
- firstPP = camera._postProcesses[i];
501
- break;
770
+ /**
771
+ * Sets the required values to the prepass renderer.
772
+ * @param prePassRenderer defines the prepass renderer to setup.
773
+ * @returns true if the pre pass is needed.
774
+ */
775
+ setPrePassRenderer(prePassRenderer) {
776
+ if (this._prePassEffectConfiguration) {
777
+ this._prePassEffectConfiguration = prePassRenderer.addEffectConfiguration(this._prePassEffectConfiguration);
778
+ this._prePassEffectConfiguration.enabled = true;
779
+ return true;
502
780
  }
781
+ return false;
503
782
  }
504
- }
505
- const textureSize = { width: this.width, height: this.height };
506
- const textureOptions = {
507
- generateMipMaps: needMipMaps,
508
- generateDepthBuffer: forceDepthStencil || firstPP === this,
509
- generateStencilBuffer: (forceDepthStencil || firstPP === this) && this._engine.isStencilEnable,
510
- samplingMode: this.renderTargetSamplingMode,
511
- type: this._textureType,
512
- format: this._textureFormat,
513
- samples: this._samples,
514
- label: "PostProcessRTT-" + this.name,
515
- };
516
- this._textures.push(this._createRenderTargetTexture(textureSize, textureOptions, 0));
517
- if (this._reusable) {
518
- this._textures.push(this._createRenderTargetTexture(textureSize, textureOptions, 1));
519
- }
520
- this._texelSize.copyFromFloats(1.0 / this.width, 1.0 / this.height);
521
- this.onSizeChangedObservable.notifyObservers(this);
522
- }
523
- _getTarget() {
524
- let target;
525
- if (this._shareOutputWithPostProcess) {
526
- target = this._shareOutputWithPostProcess.inputTexture;
527
- }
528
- else if (this._forcedOutputTexture) {
529
- target = this._forcedOutputTexture;
530
- this.width = this._forcedOutputTexture.width;
531
- this.height = this._forcedOutputTexture.height;
532
- }
533
- else {
534
- target = this.inputTexture;
535
- let cache;
536
- for (let i = 0; i < this._textureCache.length; i++) {
537
- if (this._textureCache[i].texture === target) {
538
- cache = this._textureCache[i];
539
- break;
783
+ /**
784
+ * Disposes the post process.
785
+ * @param camera The camera to dispose the post process on.
786
+ */
787
+ dispose(camera) {
788
+ camera = camera || this._camera;
789
+ if (!this._useExistingThinPostProcess) {
790
+ this._effectWrapper.dispose();
791
+ }
792
+ this._disposeTextures();
793
+ if (this._scene) {
794
+ this._scene.removePostProcess(this);
795
+ }
796
+ let index;
797
+ if (this._parentContainer) {
798
+ index = this._parentContainer.postProcesses.indexOf(this);
799
+ if (index > -1) {
800
+ this._parentContainer.postProcesses.splice(index, 1);
801
+ }
802
+ this._parentContainer = null;
803
+ }
804
+ index = this._engine.postProcesses.indexOf(this);
805
+ if (index !== -1) {
806
+ this._engine.postProcesses.splice(index, 1);
807
+ }
808
+ this.onDisposeObservable.notifyObservers();
809
+ if (!camera) {
810
+ return;
811
+ }
812
+ camera.detachPostProcess(this);
813
+ index = camera._postProcesses.indexOf(this);
814
+ if (index === 0 && camera._postProcesses.length > 0) {
815
+ const firstPostProcess = this._camera._getFirstPostProcess();
816
+ if (firstPostProcess) {
817
+ firstPostProcess.markTextureDirty();
818
+ }
540
819
  }
820
+ this.onActivateObservable.clear();
821
+ this.onAfterRenderObservable.clear();
822
+ this.onApplyObservable.clear();
823
+ this.onBeforeRenderObservable.clear();
824
+ this.onSizeChangedObservable.clear();
825
+ this.onEffectCreatedObservable.clear();
541
826
  }
542
- if (cache) {
543
- cache.lastUsedRenderId = this._renderId;
827
+ /**
828
+ * Serializes the post process to a JSON object
829
+ * @returns the JSON object
830
+ */
831
+ serialize() {
832
+ const serializationObject = SerializationHelper.Serialize(this);
833
+ const camera = this.getCamera() || (this._scene && this._scene.activeCamera);
834
+ serializationObject.customType = "BABYLON." + this.getClassName();
835
+ serializationObject.cameraId = camera ? camera.id : null;
836
+ serializationObject.reusable = this._reusable;
837
+ serializationObject.textureType = this._textureType;
838
+ serializationObject.fragmentUrl = this._fragmentUrl;
839
+ serializationObject.parameters = this._parameters;
840
+ serializationObject.samplers = this._samplers;
841
+ serializationObject.uniformBuffers = this._uniformBuffers;
842
+ serializationObject.options = this._options;
843
+ serializationObject.defines = this._postProcessDefines;
844
+ serializationObject.textureFormat = this._textureFormat;
845
+ serializationObject.vertexUrl = this._vertexUrl;
846
+ serializationObject.indexParameters = this._indexParameters;
847
+ return serializationObject;
544
848
  }
545
- }
546
- return target;
547
- }
548
- /**
549
- * Activates the post process by intializing the textures to be used when executed. Notifies onActivateObservable.
550
- * When this post process is used in a pipeline, this is call will bind the input texture of this post process to the output of the previous.
551
- * @param cameraOrScene The camera that will be used in the post process. This camera will be used when calling onActivateObservable. You can also pass the scene if no camera is available.
552
- * @param sourceTexture The source texture to be inspected to get the width and height if not specified in the post process constructor. (default: null)
553
- * @param forceDepthStencil If true, a depth and stencil buffer will be generated. (default: false)
554
- * @returns The render target wrapper that was bound to be written to.
555
- */
556
- activate(cameraOrScene, sourceTexture = null, forceDepthStencil) {
557
- const camera = cameraOrScene === null || cameraOrScene.cameraRigMode !== undefined ? cameraOrScene || this._camera : null;
558
- const scene = camera?.getScene() ?? cameraOrScene;
559
- const engine = scene.getEngine();
560
- const maxSize = engine.getCaps().maxTextureSize;
561
- const requiredWidth = ((sourceTexture ? sourceTexture.width : this._engine.getRenderWidth(true)) * this._options) | 0;
562
- const requiredHeight = ((sourceTexture ? sourceTexture.height : this._engine.getRenderHeight(true)) * this._options) | 0;
563
- let desiredWidth = this._options.width || requiredWidth;
564
- let desiredHeight = this._options.height || requiredHeight;
565
- const needMipMaps = this.renderTargetSamplingMode !== 7 &&
566
- this.renderTargetSamplingMode !== 1 &&
567
- this.renderTargetSamplingMode !== 2;
568
- let target = null;
569
- if (!this._shareOutputWithPostProcess && !this._forcedOutputTexture) {
570
- if (this.adaptScaleToCurrentViewport) {
571
- const currentViewport = engine.currentViewport;
572
- if (currentViewport) {
573
- desiredWidth *= currentViewport.width;
574
- desiredHeight *= currentViewport.height;
575
- }
576
- }
577
- if (needMipMaps || this.alwaysForcePOT) {
578
- if (!this._options.width) {
579
- desiredWidth = engine.needPOTTextures ? GetExponentOfTwo(desiredWidth, maxSize, this.scaleMode) : desiredWidth;
580
- }
581
- if (!this._options.height) {
582
- desiredHeight = engine.needPOTTextures ? GetExponentOfTwo(desiredHeight, maxSize, this.scaleMode) : desiredHeight;
583
- }
584
- }
585
- if (this.width !== desiredWidth || this.height !== desiredHeight || !(target = this._getTarget())) {
586
- this.resize(desiredWidth, desiredHeight, camera, needMipMaps, forceDepthStencil);
587
- }
588
- this._textures.forEach((texture) => {
589
- if (texture.samples !== this.samples) {
590
- this._engine.updateRenderTargetTextureSampleCount(texture, this.samples);
591
- }
592
- });
593
- this._flushTextureCache();
594
- this._renderId++;
595
- }
596
- if (!target) {
597
- target = this._getTarget();
598
- }
599
- // Bind the input of this post process to be used as the output of the previous post process.
600
- if (this.enablePixelPerfectMode) {
601
- this._scaleRatio.copyFromFloats(requiredWidth / desiredWidth, requiredHeight / desiredHeight);
602
- this._engine.bindFramebuffer(target, 0, requiredWidth, requiredHeight, this.forceFullscreenViewport);
603
- }
604
- else {
605
- this._scaleRatio.copyFromFloats(1, 1);
606
- this._engine.bindFramebuffer(target, 0, undefined, undefined, this.forceFullscreenViewport);
607
- }
608
- this._engine._debugInsertMarker?.(`post process ${this.name} input`);
609
- this.onActivateObservable.notifyObservers(camera);
610
- // Clear
611
- if (this.autoClear && (this.alphaMode === 0 || this.forceAutoClearInAlphaMode)) {
612
- this._engine.clear(this.clearColor ? this.clearColor : scene.clearColor, scene._allowPostProcessClearColor, true, true);
613
- }
614
- if (this._reusable) {
615
- this._currentRenderTextureInd = (this._currentRenderTextureInd + 1) % 2;
616
- }
617
- return target;
618
- }
619
- /**
620
- * If the post process is supported.
621
- */
622
- get isSupported() {
623
- return this._effectWrapper.drawWrapper.effect.isSupported;
624
- }
625
- /**
626
- * The aspect ratio of the output texture.
627
- */
628
- get aspectRatio() {
629
- if (this._shareOutputWithPostProcess) {
630
- return this._shareOutputWithPostProcess.aspectRatio;
631
- }
632
- if (this._forcedOutputTexture) {
633
- return this._forcedOutputTexture.width / this._forcedOutputTexture.height;
634
- }
635
- return this.width / this.height;
636
- }
637
- /**
638
- * Get a value indicating if the post-process is ready to be used
639
- * @returns true if the post-process is ready (shader is compiled)
640
- */
641
- isReady() {
642
- return this._effectWrapper.isReady();
643
- }
644
- /**
645
- * Binds all textures and uniforms to the shader, this will be run on every pass.
646
- * @returns the effect corresponding to this post process. Null if not compiled or not ready.
647
- */
648
- apply() {
649
- // Check
650
- if (!this._effectWrapper.isReady()) {
651
- return null;
652
- }
653
- // States
654
- this._engine.enableEffect(this._effectWrapper.drawWrapper);
655
- this._engine.setState(false);
656
- this._engine.setDepthBuffer(false);
657
- this._engine.setDepthWrite(false);
658
- // Alpha
659
- if (this.alphaConstants) {
660
- this.getEngine().setAlphaConstants(this.alphaConstants.r, this.alphaConstants.g, this.alphaConstants.b, this.alphaConstants.a);
661
- }
662
- this._engine.setAlphaMode(this.alphaMode);
663
- // Bind the output texture of the preivous post process as the input to this post process.
664
- let source;
665
- if (this._shareOutputWithPostProcess) {
666
- source = this._shareOutputWithPostProcess.inputTexture;
667
- }
668
- else if (this._forcedOutputTexture) {
669
- source = this._forcedOutputTexture;
670
- }
671
- else {
672
- source = this.inputTexture;
673
- }
674
- if (!this.externalTextureSamplerBinding) {
675
- this._effectWrapper.drawWrapper.effect._bindTexture("textureSampler", source?.texture);
676
- }
677
- // Parameters
678
- this._effectWrapper.drawWrapper.effect.setVector2("scale", this._scaleRatio);
679
- this.onApplyObservable.notifyObservers(this._effectWrapper.drawWrapper.effect);
680
- this._effectWrapper.bind(true);
681
- return this._effectWrapper.drawWrapper.effect;
682
- }
683
- _disposeTextures() {
684
- if (this._shareOutputWithPostProcess || this._forcedOutputTexture) {
685
- this._disposeTextureCache();
686
- return;
687
- }
688
- this._disposeTextureCache();
689
- this._textures.dispose();
690
- }
691
- _disposeTextureCache() {
692
- for (let i = this._textureCache.length - 1; i >= 0; i--) {
693
- this._textureCache[i].texture.dispose();
694
- }
695
- this._textureCache.length = 0;
696
- }
697
- /**
698
- * Sets the required values to the prepass renderer.
699
- * @param prePassRenderer defines the prepass renderer to setup.
700
- * @returns true if the pre pass is needed.
701
- */
702
- setPrePassRenderer(prePassRenderer) {
703
- if (this._prePassEffectConfiguration) {
704
- this._prePassEffectConfiguration = prePassRenderer.addEffectConfiguration(this._prePassEffectConfiguration);
705
- this._prePassEffectConfiguration.enabled = true;
706
- return true;
707
- }
708
- return false;
709
- }
710
- /**
711
- * Disposes the post process.
712
- * @param camera The camera to dispose the post process on.
713
- */
714
- dispose(camera) {
715
- camera = camera || this._camera;
716
- if (!this._useExistingThinPostProcess) {
717
- this._effectWrapper.dispose();
718
- }
719
- this._disposeTextures();
720
- if (this._scene) {
721
- this._scene.removePostProcess(this);
722
- }
723
- let index;
724
- if (this._parentContainer) {
725
- index = this._parentContainer.postProcesses.indexOf(this);
726
- if (index > -1) {
727
- this._parentContainer.postProcesses.splice(index, 1);
849
+ /**
850
+ * Clones this post process
851
+ * @returns a new post process similar to this one
852
+ */
853
+ clone() {
854
+ const serializationObject = this.serialize();
855
+ serializationObject._engine = this._engine;
856
+ serializationObject.cameraId = null;
857
+ const result = _a.Parse(serializationObject, this._scene, "");
858
+ if (!result) {
859
+ return null;
860
+ }
861
+ result.onActivateObservable = this.onActivateObservable.clone();
862
+ result.onSizeChangedObservable = this.onSizeChangedObservable.clone();
863
+ result.onApplyObservable = this.onApplyObservable.clone();
864
+ result.onBeforeRenderObservable = this.onBeforeRenderObservable.clone();
865
+ result.onAfterRenderObservable = this.onAfterRenderObservable.clone();
866
+ result._prePassEffectConfiguration = this._prePassEffectConfiguration;
867
+ return result;
728
868
  }
729
- this._parentContainer = null;
730
- }
731
- index = this._engine.postProcesses.indexOf(this);
732
- if (index !== -1) {
733
- this._engine.postProcesses.splice(index, 1);
734
- }
735
- this.onDisposeObservable.notifyObservers();
736
- if (!camera) {
737
- return;
738
- }
739
- camera.detachPostProcess(this);
740
- index = camera._postProcesses.indexOf(this);
741
- if (index === 0 && camera._postProcesses.length > 0) {
742
- const firstPostProcess = this._camera._getFirstPostProcess();
743
- if (firstPostProcess) {
744
- firstPostProcess.markTextureDirty();
869
+ /**
870
+ * Creates a material from parsed material data
871
+ * @param parsedPostProcess defines parsed post process data
872
+ * @param scene defines the hosting scene
873
+ * @param rootUrl defines the root URL to use to load textures
874
+ * @returns a new post process
875
+ */
876
+ static Parse(parsedPostProcess, scene, rootUrl) {
877
+ const postProcessType = GetClass(parsedPostProcess.customType);
878
+ if (!postProcessType || !postProcessType._Parse) {
879
+ return null;
880
+ }
881
+ const camera = scene ? scene.getCameraById(parsedPostProcess.cameraId) : null;
882
+ return postProcessType._Parse(parsedPostProcess, camera, scene, rootUrl);
745
883
  }
746
- }
747
- this.onActivateObservable.clear();
748
- this.onAfterRenderObservable.clear();
749
- this.onApplyObservable.clear();
750
- this.onBeforeRenderObservable.clear();
751
- this.onSizeChangedObservable.clear();
752
- this.onEffectCreatedObservable.clear();
753
- }
754
- /**
755
- * Serializes the post process to a JSON object
756
- * @returns the JSON object
757
- */
758
- serialize() {
759
- const serializationObject = SerializationHelper.Serialize(this);
760
- const camera = this.getCamera() || (this._scene && this._scene.activeCamera);
761
- serializationObject.customType = "BABYLON." + this.getClassName();
762
- serializationObject.cameraId = camera ? camera.id : null;
763
- serializationObject.reusable = this._reusable;
764
- serializationObject.textureType = this._textureType;
765
- serializationObject.fragmentUrl = this._fragmentUrl;
766
- serializationObject.parameters = this._parameters;
767
- serializationObject.samplers = this._samplers;
768
- serializationObject.uniformBuffers = this._uniformBuffers;
769
- serializationObject.options = this._options;
770
- serializationObject.defines = this._postProcessDefines;
771
- serializationObject.textureFormat = this._textureFormat;
772
- serializationObject.vertexUrl = this._vertexUrl;
773
- serializationObject.indexParameters = this._indexParameters;
774
- return serializationObject;
775
- }
776
- /**
777
- * Clones this post process
778
- * @returns a new post process similar to this one
779
- */
780
- clone() {
781
- const serializationObject = this.serialize();
782
- serializationObject._engine = this._engine;
783
- serializationObject.cameraId = null;
784
- const result = PostProcess.Parse(serializationObject, this._scene, "");
785
- if (!result) {
786
- return null;
787
- }
788
- result.onActivateObservable = this.onActivateObservable.clone();
789
- result.onSizeChangedObservable = this.onSizeChangedObservable.clone();
790
- result.onApplyObservable = this.onApplyObservable.clone();
791
- result.onBeforeRenderObservable = this.onBeforeRenderObservable.clone();
792
- result.onAfterRenderObservable = this.onAfterRenderObservable.clone();
793
- result._prePassEffectConfiguration = this._prePassEffectConfiguration;
794
- return result;
795
- }
796
- /**
797
- * Creates a material from parsed material data
798
- * @param parsedPostProcess defines parsed post process data
799
- * @param scene defines the hosting scene
800
- * @param rootUrl defines the root URL to use to load textures
801
- * @returns a new post process
802
- */
803
- static Parse(parsedPostProcess, scene, rootUrl) {
804
- const postProcessType = GetClass(parsedPostProcess.customType);
805
- if (!postProcessType || !postProcessType._Parse) {
806
- return null;
807
- }
808
- const camera = scene ? scene.getCameraById(parsedPostProcess.cameraId) : null;
809
- return postProcessType._Parse(parsedPostProcess, camera, scene, rootUrl);
810
- }
811
- /**
812
- * @internal
813
- */
814
- static _Parse(parsedPostProcess, targetCamera, scene, rootUrl) {
815
- return SerializationHelper.Parse(() => {
816
- return new PostProcess(parsedPostProcess.name, parsedPostProcess.fragmentUrl, parsedPostProcess.parameters, parsedPostProcess.samplers, parsedPostProcess.options, targetCamera, parsedPostProcess.renderTargetSamplingMode, parsedPostProcess._engine, parsedPostProcess.reusable, parsedPostProcess.defines, parsedPostProcess.textureType, parsedPostProcess.vertexUrl, parsedPostProcess.indexParameters, false, parsedPostProcess.textureFormat);
817
- }, parsedPostProcess, scene, rootUrl);
818
- }
819
- }
820
- __decorate([
821
- serialize()
822
- ], PostProcess.prototype, "uniqueId", void 0);
823
- __decorate([
824
- serialize()
825
- ], PostProcess.prototype, "name", null);
826
- __decorate([
827
- serialize()
828
- ], PostProcess.prototype, "width", void 0);
829
- __decorate([
830
- serialize()
831
- ], PostProcess.prototype, "height", void 0);
832
- __decorate([
833
- serialize()
834
- ], PostProcess.prototype, "renderTargetSamplingMode", void 0);
835
- __decorate([
836
- serializeAsColor4()
837
- ], PostProcess.prototype, "clearColor", void 0);
838
- __decorate([
839
- serialize()
840
- ], PostProcess.prototype, "autoClear", void 0);
841
- __decorate([
842
- serialize()
843
- ], PostProcess.prototype, "forceAutoClearInAlphaMode", void 0);
844
- __decorate([
845
- serialize()
846
- ], PostProcess.prototype, "alphaMode", null);
847
- __decorate([
848
- serialize()
849
- ], PostProcess.prototype, "alphaConstants", void 0);
850
- __decorate([
851
- serialize()
852
- ], PostProcess.prototype, "enablePixelPerfectMode", void 0);
853
- __decorate([
854
- serialize()
855
- ], PostProcess.prototype, "forceFullscreenViewport", void 0);
856
- __decorate([
857
- serialize()
858
- ], PostProcess.prototype, "scaleMode", void 0);
859
- __decorate([
860
- serialize()
861
- ], PostProcess.prototype, "alwaysForcePOT", void 0);
862
- __decorate([
863
- serialize("samples")
864
- ], PostProcess.prototype, "_samples", void 0);
865
- __decorate([
866
- serialize()
867
- ], PostProcess.prototype, "adaptScaleToCurrentViewport", void 0);
884
+ /**
885
+ * @internal
886
+ */
887
+ static _Parse(parsedPostProcess, targetCamera, scene, rootUrl) {
888
+ return SerializationHelper.Parse(() => {
889
+ return new _a(parsedPostProcess.name, parsedPostProcess.fragmentUrl, parsedPostProcess.parameters, parsedPostProcess.samplers, parsedPostProcess.options, targetCamera, parsedPostProcess.renderTargetSamplingMode, parsedPostProcess._engine, parsedPostProcess.reusable, parsedPostProcess.defines, parsedPostProcess.textureType, parsedPostProcess.vertexUrl, parsedPostProcess.indexParameters, false, parsedPostProcess.textureFormat);
890
+ }, parsedPostProcess, scene, rootUrl);
891
+ }
892
+ },
893
+ (() => {
894
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
895
+ _uniqueId_decorators = [serialize()];
896
+ _get_name_decorators = [serialize()];
897
+ _width_decorators = [serialize()];
898
+ _height_decorators = [serialize()];
899
+ _renderTargetSamplingMode_decorators = [serialize()];
900
+ _clearColor_decorators = [serializeAsColor4()];
901
+ _autoClear_decorators = [serialize()];
902
+ _forceAutoClearInAlphaMode_decorators = [serialize()];
903
+ _get_alphaMode_decorators = [serialize()];
904
+ _alphaConstants_decorators = [serialize()];
905
+ _enablePixelPerfectMode_decorators = [serialize()];
906
+ _forceFullscreenViewport_decorators = [serialize()];
907
+ _scaleMode_decorators = [serialize()];
908
+ _alwaysForcePOT_decorators = [serialize()];
909
+ __samples_decorators = [serialize("samples")];
910
+ _adaptScaleToCurrentViewport_decorators = [serialize()];
911
+ __esDecorate(_a, null, _get_name_decorators, { kind: "getter", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name }, metadata: _metadata }, null, _instanceExtraInitializers);
912
+ __esDecorate(_a, null, _get_alphaMode_decorators, { kind: "getter", name: "alphaMode", static: false, private: false, access: { has: obj => "alphaMode" in obj, get: obj => obj.alphaMode }, metadata: _metadata }, null, _instanceExtraInitializers);
913
+ __esDecorate(null, null, _uniqueId_decorators, { kind: "field", name: "uniqueId", static: false, private: false, access: { has: obj => "uniqueId" in obj, get: obj => obj.uniqueId, set: (obj, value) => { obj.uniqueId = value; } }, metadata: _metadata }, _uniqueId_initializers, _uniqueId_extraInitializers);
914
+ __esDecorate(null, null, _width_decorators, { kind: "field", name: "width", static: false, private: false, access: { has: obj => "width" in obj, get: obj => obj.width, set: (obj, value) => { obj.width = value; } }, metadata: _metadata }, _width_initializers, _width_extraInitializers);
915
+ __esDecorate(null, null, _height_decorators, { kind: "field", name: "height", static: false, private: false, access: { has: obj => "height" in obj, get: obj => obj.height, set: (obj, value) => { obj.height = value; } }, metadata: _metadata }, _height_initializers, _height_extraInitializers);
916
+ __esDecorate(null, null, _renderTargetSamplingMode_decorators, { kind: "field", name: "renderTargetSamplingMode", static: false, private: false, access: { has: obj => "renderTargetSamplingMode" in obj, get: obj => obj.renderTargetSamplingMode, set: (obj, value) => { obj.renderTargetSamplingMode = value; } }, metadata: _metadata }, _renderTargetSamplingMode_initializers, _renderTargetSamplingMode_extraInitializers);
917
+ __esDecorate(null, null, _clearColor_decorators, { kind: "field", name: "clearColor", static: false, private: false, access: { has: obj => "clearColor" in obj, get: obj => obj.clearColor, set: (obj, value) => { obj.clearColor = value; } }, metadata: _metadata }, _clearColor_initializers, _clearColor_extraInitializers);
918
+ __esDecorate(null, null, _autoClear_decorators, { kind: "field", name: "autoClear", static: false, private: false, access: { has: obj => "autoClear" in obj, get: obj => obj.autoClear, set: (obj, value) => { obj.autoClear = value; } }, metadata: _metadata }, _autoClear_initializers, _autoClear_extraInitializers);
919
+ __esDecorate(null, null, _forceAutoClearInAlphaMode_decorators, { kind: "field", name: "forceAutoClearInAlphaMode", static: false, private: false, access: { has: obj => "forceAutoClearInAlphaMode" in obj, get: obj => obj.forceAutoClearInAlphaMode, set: (obj, value) => { obj.forceAutoClearInAlphaMode = value; } }, metadata: _metadata }, _forceAutoClearInAlphaMode_initializers, _forceAutoClearInAlphaMode_extraInitializers);
920
+ __esDecorate(null, null, _alphaConstants_decorators, { kind: "field", name: "alphaConstants", static: false, private: false, access: { has: obj => "alphaConstants" in obj, get: obj => obj.alphaConstants, set: (obj, value) => { obj.alphaConstants = value; } }, metadata: _metadata }, _alphaConstants_initializers, _alphaConstants_extraInitializers);
921
+ __esDecorate(null, null, _enablePixelPerfectMode_decorators, { kind: "field", name: "enablePixelPerfectMode", static: false, private: false, access: { has: obj => "enablePixelPerfectMode" in obj, get: obj => obj.enablePixelPerfectMode, set: (obj, value) => { obj.enablePixelPerfectMode = value; } }, metadata: _metadata }, _enablePixelPerfectMode_initializers, _enablePixelPerfectMode_extraInitializers);
922
+ __esDecorate(null, null, _forceFullscreenViewport_decorators, { kind: "field", name: "forceFullscreenViewport", static: false, private: false, access: { has: obj => "forceFullscreenViewport" in obj, get: obj => obj.forceFullscreenViewport, set: (obj, value) => { obj.forceFullscreenViewport = value; } }, metadata: _metadata }, _forceFullscreenViewport_initializers, _forceFullscreenViewport_extraInitializers);
923
+ __esDecorate(null, null, _scaleMode_decorators, { kind: "field", name: "scaleMode", static: false, private: false, access: { has: obj => "scaleMode" in obj, get: obj => obj.scaleMode, set: (obj, value) => { obj.scaleMode = value; } }, metadata: _metadata }, _scaleMode_initializers, _scaleMode_extraInitializers);
924
+ __esDecorate(null, null, _alwaysForcePOT_decorators, { kind: "field", name: "alwaysForcePOT", static: false, private: false, access: { has: obj => "alwaysForcePOT" in obj, get: obj => obj.alwaysForcePOT, set: (obj, value) => { obj.alwaysForcePOT = value; } }, metadata: _metadata }, _alwaysForcePOT_initializers, _alwaysForcePOT_extraInitializers);
925
+ __esDecorate(null, null, __samples_decorators, { kind: "field", name: "_samples", static: false, private: false, access: { has: obj => "_samples" in obj, get: obj => obj._samples, set: (obj, value) => { obj._samples = value; } }, metadata: _metadata }, __samples_initializers, __samples_extraInitializers);
926
+ __esDecorate(null, null, _adaptScaleToCurrentViewport_decorators, { kind: "field", name: "adaptScaleToCurrentViewport", static: false, private: false, access: { has: obj => "adaptScaleToCurrentViewport" in obj, get: obj => obj.adaptScaleToCurrentViewport, set: (obj, value) => { obj.adaptScaleToCurrentViewport = value; } }, metadata: _metadata }, _adaptScaleToCurrentViewport_initializers, _adaptScaleToCurrentViewport_extraInitializers);
927
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
928
+ })(),
929
+ _a;
930
+ })();
931
+ export { PostProcess };
868
932
  let _Registered = false;
869
933
  /**
870
934
  * Register side effects for postProcess.