@babylonjs/core 7.31.2 → 7.32.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/Behaviors/Cameras/autoRotationBehavior.js +1 -0
  2. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  3. package/Cameras/camera.d.ts +5 -2
  4. package/Cameras/camera.js +1 -0
  5. package/Cameras/camera.js.map +1 -1
  6. package/Decorators/nodeDecorator.d.ts +9 -1
  7. package/Decorators/nodeDecorator.js +8 -0
  8. package/Decorators/nodeDecorator.js.map +1 -1
  9. package/Engines/Extensions/engine.multiRender.js +40 -53
  10. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  11. package/Engines/Extensions/engine.renderTarget.js +20 -8
  12. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  13. package/Engines/WebGPU/Extensions/engine.debugging.js +16 -7
  14. package/Engines/WebGPU/Extensions/engine.debugging.js.map +1 -1
  15. package/Engines/WebGPU/Extensions/engine.multiRender.js +43 -44
  16. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  17. package/Engines/WebGPU/Extensions/engine.renderTarget.js +8 -6
  18. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  19. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +3 -3
  20. package/Engines/WebGPU/webgpuHardwareTexture.js +12 -9
  21. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  22. package/Engines/WebGPU/webgpuTextureHelper.js +25 -19
  23. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  24. package/Engines/WebGPU/webgpuTextureManager.d.ts +1 -1
  25. package/Engines/WebGPU/webgpuTextureManager.js +5 -3
  26. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  27. package/Engines/abstractEngine.d.ts +6 -1
  28. package/Engines/abstractEngine.js +2 -2
  29. package/Engines/abstractEngine.js.map +1 -1
  30. package/Engines/constants.d.ts +6 -1
  31. package/Engines/constants.js +6 -1
  32. package/Engines/constants.js.map +1 -1
  33. package/Engines/renderTargetWrapper.d.ts +7 -0
  34. package/Engines/renderTargetWrapper.js +15 -0
  35. package/Engines/renderTargetWrapper.js.map +1 -1
  36. package/Engines/webgpuEngine.d.ts +3 -1
  37. package/Engines/webgpuEngine.js +9 -8
  38. package/Engines/webgpuEngine.js.map +1 -1
  39. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.d.ts +47 -0
  40. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js +113 -0
  41. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js.map +1 -0
  42. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.d.ts +62 -0
  43. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js +171 -0
  44. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js.map +1 -0
  45. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.d.ts +51 -0
  46. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js +127 -0
  47. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js.map +1 -0
  48. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.d.ts +67 -0
  49. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js +187 -0
  50. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js.map +1 -0
  51. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.d.ts +77 -0
  52. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js +232 -0
  53. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js.map +1 -0
  54. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.d.ts +47 -0
  55. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js +113 -0
  56. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js.map +1 -0
  57. package/FrameGraph/Node/Blocks/Rendering/cullObjectsBlock.d.ts +41 -0
  58. package/FrameGraph/Node/Blocks/Rendering/cullObjectsBlock.js +79 -0
  59. package/FrameGraph/Node/Blocks/Rendering/cullObjectsBlock.js.map +1 -0
  60. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.d.ts +119 -0
  61. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +451 -0
  62. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -0
  63. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.d.ts +63 -0
  64. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js +154 -0
  65. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js.map +1 -0
  66. package/FrameGraph/Node/Blocks/Teleport/teleportInBlock.d.ts +59 -0
  67. package/FrameGraph/Node/Blocks/Teleport/teleportInBlock.js +131 -0
  68. package/FrameGraph/Node/Blocks/Teleport/teleportInBlock.js.map +1 -0
  69. package/FrameGraph/Node/Blocks/Teleport/teleportOutBlock.d.ts +49 -0
  70. package/FrameGraph/Node/Blocks/Teleport/teleportOutBlock.js +107 -0
  71. package/FrameGraph/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -0
  72. package/FrameGraph/Node/Blocks/Textures/clearBlock.d.ts +50 -0
  73. package/FrameGraph/Node/Blocks/Textures/clearBlock.js +125 -0
  74. package/FrameGraph/Node/Blocks/Textures/clearBlock.js.map +1 -0
  75. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.d.ts +38 -0
  76. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js +71 -0
  77. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js.map +1 -0
  78. package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.d.ts +34 -0
  79. package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.js +59 -0
  80. package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.js.map +1 -0
  81. package/FrameGraph/Node/Blocks/elbowBlock.d.ts +28 -0
  82. package/FrameGraph/Node/Blocks/elbowBlock.js +47 -0
  83. package/FrameGraph/Node/Blocks/elbowBlock.js.map +1 -0
  84. package/FrameGraph/Node/Blocks/index.d.ts +17 -0
  85. package/FrameGraph/Node/Blocks/index.js +18 -0
  86. package/FrameGraph/Node/Blocks/index.js.map +1 -0
  87. package/FrameGraph/Node/Blocks/inputBlock.d.ts +94 -0
  88. package/FrameGraph/Node/Blocks/inputBlock.js +270 -0
  89. package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -0
  90. package/FrameGraph/Node/Blocks/outputBlock.d.ts +30 -0
  91. package/FrameGraph/Node/Blocks/outputBlock.js +51 -0
  92. package/FrameGraph/Node/Blocks/outputBlock.js.map +1 -0
  93. package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +110 -0
  94. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +78 -0
  95. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -0
  96. package/FrameGraph/Node/nodeRenderGraph.d.ts +196 -0
  97. package/FrameGraph/Node/nodeRenderGraph.js +614 -0
  98. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -0
  99. package/FrameGraph/Node/nodeRenderGraphBlock.d.ts +190 -0
  100. package/FrameGraph/Node/nodeRenderGraphBlock.js +495 -0
  101. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -0
  102. package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.d.ts +143 -0
  103. package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.js +275 -0
  104. package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.js.map +1 -0
  105. package/FrameGraph/Node/nodeRenderGraphBuildState.d.ts +21 -0
  106. package/FrameGraph/Node/nodeRenderGraphBuildState.js +35 -0
  107. package/FrameGraph/Node/nodeRenderGraphBuildState.js.map +1 -0
  108. package/FrameGraph/Passes/cullPass.d.ts +28 -0
  109. package/FrameGraph/Passes/cullPass.js +38 -0
  110. package/FrameGraph/Passes/cullPass.js.map +1 -0
  111. package/FrameGraph/Passes/pass.d.ts +14 -0
  112. package/FrameGraph/Passes/pass.js +20 -0
  113. package/FrameGraph/Passes/pass.js.map +1 -0
  114. package/FrameGraph/Passes/renderPass.d.ts +49 -0
  115. package/FrameGraph/Passes/renderPass.js +72 -0
  116. package/FrameGraph/Passes/renderPass.js.map +1 -0
  117. package/FrameGraph/Tasks/PostProcesses/blackAndWhiteTask.d.ts +16 -0
  118. package/FrameGraph/Tasks/PostProcesses/blackAndWhiteTask.js +17 -0
  119. package/FrameGraph/Tasks/PostProcesses/blackAndWhiteTask.js.map +1 -0
  120. package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.d.ts +12 -0
  121. package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js +21 -0
  122. package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js.map +1 -0
  123. package/FrameGraph/Tasks/PostProcesses/bloomTask.d.ts +54 -0
  124. package/FrameGraph/Tasks/PostProcesses/bloomTask.js +114 -0
  125. package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -0
  126. package/FrameGraph/Tasks/PostProcesses/blurTask.d.ts +17 -0
  127. package/FrameGraph/Tasks/PostProcesses/blurTask.js +24 -0
  128. package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -0
  129. package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.d.ts +30 -0
  130. package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js +35 -0
  131. package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js.map +1 -0
  132. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.d.ts +12 -0
  133. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +26 -0
  134. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -0
  135. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.d.ts +12 -0
  136. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js +29 -0
  137. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js.map +1 -0
  138. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.d.ts +65 -0
  139. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +134 -0
  140. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -0
  141. package/FrameGraph/Tasks/PostProcesses/extractHighlightsTask.d.ts +16 -0
  142. package/FrameGraph/Tasks/PostProcesses/extractHighlightsTask.js +17 -0
  143. package/FrameGraph/Tasks/PostProcesses/extractHighlightsTask.js.map +1 -0
  144. package/FrameGraph/Tasks/PostProcesses/postProcessTask.d.ts +41 -0
  145. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +64 -0
  146. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -0
  147. package/FrameGraph/Tasks/Rendering/cullObjectsTask.d.ts +28 -0
  148. package/FrameGraph/Tasks/Rendering/cullObjectsTask.js +52 -0
  149. package/FrameGraph/Tasks/Rendering/cullObjectsTask.js.map +1 -0
  150. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +145 -0
  151. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +259 -0
  152. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -0
  153. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +66 -0
  154. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +127 -0
  155. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -0
  156. package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +34 -0
  157. package/FrameGraph/Tasks/Texture/clearTextureTask.js +42 -0
  158. package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -0
  159. package/FrameGraph/Tasks/Texture/copyToBackbufferColorTask.d.ts +12 -0
  160. package/FrameGraph/Tasks/Texture/copyToBackbufferColorTask.js +23 -0
  161. package/FrameGraph/Tasks/Texture/copyToBackbufferColorTask.js.map +1 -0
  162. package/FrameGraph/Tasks/Texture/copyToTextureTask.d.ts +26 -0
  163. package/FrameGraph/Tasks/Texture/copyToTextureTask.js +31 -0
  164. package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -0
  165. package/FrameGraph/Tasks/Texture/generateMipMapsTask.d.ts +22 -0
  166. package/FrameGraph/Tasks/Texture/generateMipMapsTask.js +34 -0
  167. package/FrameGraph/Tasks/Texture/generateMipMapsTask.js.map +1 -0
  168. package/FrameGraph/frameGraph.d.ts +143 -0
  169. package/FrameGraph/frameGraph.js +275 -0
  170. package/FrameGraph/frameGraph.js.map +1 -0
  171. package/FrameGraph/frameGraphContext.d.ts +5 -0
  172. package/FrameGraph/frameGraphContext.js +6 -0
  173. package/FrameGraph/frameGraphContext.js.map +1 -0
  174. package/FrameGraph/frameGraphObjectList.d.ts +15 -0
  175. package/FrameGraph/frameGraphObjectList.js +7 -0
  176. package/FrameGraph/frameGraphObjectList.js.map +1 -0
  177. package/FrameGraph/frameGraphRenderContext.d.ts +110 -0
  178. package/FrameGraph/frameGraphRenderContext.js +237 -0
  179. package/FrameGraph/frameGraphRenderContext.js.map +1 -0
  180. package/FrameGraph/frameGraphTask.d.ts +49 -0
  181. package/FrameGraph/frameGraphTask.js +117 -0
  182. package/FrameGraph/frameGraphTask.js.map +1 -0
  183. package/FrameGraph/frameGraphTextureManager.d.ts +50 -0
  184. package/FrameGraph/frameGraphTextureManager.js +277 -0
  185. package/FrameGraph/frameGraphTextureManager.js.map +1 -0
  186. package/FrameGraph/frameGraphTypes.d.ts +59 -0
  187. package/FrameGraph/frameGraphTypes.js +9 -0
  188. package/FrameGraph/frameGraphTypes.js.map +1 -0
  189. package/FrameGraph/index.d.ts +28 -0
  190. package/FrameGraph/index.js +30 -0
  191. package/FrameGraph/index.js.map +1 -0
  192. package/Gamepads/gamepadSceneComponent.d.ts +0 -1
  193. package/Gamepads/gamepadSceneComponent.js +1 -7
  194. package/Gamepads/gamepadSceneComponent.js.map +1 -1
  195. package/Gizmos/boundingBoxGizmo.d.ts +7 -0
  196. package/Gizmos/boundingBoxGizmo.js +19 -6
  197. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  198. package/Inputs/scene.inputManager.d.ts +3 -1
  199. package/Inputs/scene.inputManager.js +20 -8
  200. package/Inputs/scene.inputManager.js.map +1 -1
  201. package/Layers/layer.d.ts +1 -1
  202. package/Layers/layer.js +1 -1
  203. package/Layers/layer.js.map +1 -1
  204. package/Materials/PBR/pbrBaseMaterial.d.ts +4 -0
  205. package/Materials/PBR/pbrBaseMaterial.js +8 -0
  206. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  207. package/Materials/Textures/dynamicTexture.d.ts +32 -2
  208. package/Materials/Textures/dynamicTexture.js +13 -18
  209. package/Materials/Textures/dynamicTexture.js.map +1 -1
  210. package/Materials/Textures/index.d.ts +1 -0
  211. package/Materials/Textures/index.js +1 -0
  212. package/Materials/Textures/index.js.map +1 -1
  213. package/Materials/Textures/mirrorTexture.js +0 -6
  214. package/Materials/Textures/mirrorTexture.js.map +1 -1
  215. package/Materials/Textures/multiRenderTarget.d.ts +20 -8
  216. package/Materials/Textures/multiRenderTarget.js +2 -0
  217. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  218. package/Materials/Textures/renderTargetTexture.d.ts +8 -1
  219. package/Materials/Textures/renderTargetTexture.js +28 -10
  220. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  221. package/Materials/Textures/textureCreationOptions.d.ts +20 -2
  222. package/Materials/Textures/textureCreationOptions.js +20 -1
  223. package/Materials/Textures/textureCreationOptions.js.map +1 -1
  224. package/Materials/effectRenderer.d.ts +132 -14
  225. package/Materials/effectRenderer.js +229 -33
  226. package/Materials/effectRenderer.js.map +1 -1
  227. package/Materials/index.d.ts +1 -0
  228. package/Materials/index.js +1 -0
  229. package/Materials/index.js.map +1 -1
  230. package/Materials/materialHelper.functions.js +2 -0
  231. package/Materials/materialHelper.functions.js.map +1 -1
  232. package/Materials/materialHelper.geometryrendering.d.ts +122 -0
  233. package/Materials/materialHelper.geometryrendering.js +259 -0
  234. package/Materials/materialHelper.geometryrendering.js.map +1 -0
  235. package/Materials/standardMaterial.d.ts +4 -0
  236. package/Materials/standardMaterial.js +8 -0
  237. package/Materials/standardMaterial.js.map +1 -1
  238. package/Maths/index.d.ts +1 -0
  239. package/Maths/index.js +1 -0
  240. package/Maths/index.js.map +1 -1
  241. package/Meshes/Builders/greasedLineBuilder.d.ts +1 -1
  242. package/Meshes/Node/Blocks/geometryOptimizeBlock.d.ts +22 -1
  243. package/Meshes/Node/Blocks/geometryOptimizeBlock.js +39 -0
  244. package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
  245. package/Misc/copyTextureToTexture.d.ts +3 -2
  246. package/Misc/copyTextureToTexture.js +11 -5
  247. package/Misc/copyTextureToTexture.js.map +1 -1
  248. package/PostProcesses/blackAndWhitePostProcess.d.ts +5 -3
  249. package/PostProcesses/blackAndWhitePostProcess.js +24 -19
  250. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  251. package/PostProcesses/bloomEffect.d.ts +7 -5
  252. package/PostProcesses/bloomEffect.js +49 -23
  253. package/PostProcesses/bloomEffect.js.map +1 -1
  254. package/PostProcesses/bloomMergePostProcess.d.ts +5 -5
  255. package/PostProcesses/bloomMergePostProcess.js +28 -19
  256. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  257. package/PostProcesses/blurPostProcess.d.ts +7 -43
  258. package/PostProcesses/blurPostProcess.js +47 -185
  259. package/PostProcesses/blurPostProcess.js.map +1 -1
  260. package/PostProcesses/circleOfConfusionPostProcess.d.ts +13 -6
  261. package/PostProcesses/circleOfConfusionPostProcess.js +59 -38
  262. package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
  263. package/PostProcesses/depthOfFieldBlurPostProcess.d.ts +2 -6
  264. package/PostProcesses/depthOfFieldBlurPostProcess.js +14 -11
  265. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  266. package/PostProcesses/depthOfFieldEffect.d.ts +5 -2
  267. package/PostProcesses/depthOfFieldEffect.js +53 -45
  268. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  269. package/PostProcesses/depthOfFieldMergePostProcess.d.ts +0 -1
  270. package/PostProcesses/depthOfFieldMergePostProcess.js +18 -12
  271. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  272. package/PostProcesses/extractHighlightsPostProcess.d.ts +8 -4
  273. package/PostProcesses/extractHighlightsPostProcess.js +35 -22
  274. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  275. package/PostProcesses/index.d.ts +6 -0
  276. package/PostProcesses/index.js +6 -0
  277. package/PostProcesses/index.js.map +1 -1
  278. package/PostProcesses/postProcess.d.ts +15 -70
  279. package/PostProcesses/postProcess.js +80 -97
  280. package/PostProcesses/postProcess.js.map +1 -1
  281. package/PostProcesses/thinBlackAndWhitePostProcess.d.ts +28 -0
  282. package/PostProcesses/thinBlackAndWhitePostProcess.js +50 -0
  283. package/PostProcesses/thinBlackAndWhitePostProcess.js.map +1 -0
  284. package/PostProcesses/thinBloomEffect.d.ts +49 -0
  285. package/PostProcesses/thinBloomEffect.js +59 -0
  286. package/PostProcesses/thinBloomEffect.js.map +1 -0
  287. package/PostProcesses/thinBloomMergePostProcess.d.ts +15 -0
  288. package/PostProcesses/thinBloomMergePostProcess.js +38 -0
  289. package/PostProcesses/thinBloomMergePostProcess.js.map +1 -0
  290. package/PostProcesses/thinBlurPostProcess.d.ts +89 -0
  291. package/PostProcesses/thinBlurPostProcess.js +242 -0
  292. package/PostProcesses/thinBlurPostProcess.js.map +1 -0
  293. package/PostProcesses/thinCircleOfConfusionPostProcess.d.ts +62 -0
  294. package/PostProcesses/thinCircleOfConfusionPostProcess.js +81 -0
  295. package/PostProcesses/thinCircleOfConfusionPostProcess.js.map +1 -0
  296. package/PostProcesses/thinDepthOfFieldBlurPostProcess.d.ts +8 -0
  297. package/PostProcesses/thinDepthOfFieldBlurPostProcess.js +13 -0
  298. package/PostProcesses/thinDepthOfFieldBlurPostProcess.js.map +1 -0
  299. package/PostProcesses/thinDepthOfFieldEffect.d.ts +70 -0
  300. package/PostProcesses/thinDepthOfFieldEffect.js +115 -0
  301. package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -0
  302. package/PostProcesses/thinDepthOfFieldMergePostProcess.d.ts +11 -0
  303. package/PostProcesses/thinDepthOfFieldMergePostProcess.js +30 -0
  304. package/PostProcesses/thinDepthOfFieldMergePostProcess.js.map +1 -0
  305. package/PostProcesses/thinExtractHighlightsPostProcess.d.ts +30 -0
  306. package/PostProcesses/thinExtractHighlightsPostProcess.js +55 -0
  307. package/PostProcesses/thinExtractHighlightsPostProcess.js.map +1 -0
  308. package/Rendering/depthPeelingRenderer.js +2 -2
  309. package/Rendering/depthPeelingRenderer.js.map +1 -1
  310. package/Rendering/fluidRenderer/fluidRenderingObject.js +4 -4
  311. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  312. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +1 -1
  313. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  314. package/Shaders/ShadersInclude/pbrBlockPrePass.d.ts +5 -0
  315. package/Shaders/ShadersInclude/pbrBlockPrePass.js +75 -0
  316. package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -0
  317. package/Shaders/ShadersInclude/prePassVertex.js +1 -2
  318. package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
  319. package/Shaders/circleOfConfusion.fragment.js +9 -1
  320. package/Shaders/circleOfConfusion.fragment.js.map +1 -1
  321. package/Shaders/colorCorrection.fragment.js +1 -0
  322. package/Shaders/colorCorrection.fragment.js.map +1 -1
  323. package/Shaders/default.fragment.js +17 -25
  324. package/Shaders/default.fragment.js.map +1 -1
  325. package/Shaders/default.vertex.js +4 -6
  326. package/Shaders/default.vertex.js.map +1 -1
  327. package/Shaders/pbr.fragment.d.ts +1 -0
  328. package/Shaders/pbr.fragment.js +2 -74
  329. package/Shaders/pbr.fragment.js.map +1 -1
  330. package/Shaders/pbr.vertex.js +3 -3
  331. package/Shaders/pbr.vertex.js.map +1 -1
  332. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.d.ts +5 -0
  333. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +100 -0
  334. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -0
  335. package/ShadersWGSL/ShadersInclude/prePassVertex.js +1 -2
  336. package/ShadersWGSL/ShadersInclude/prePassVertex.js.map +1 -1
  337. package/ShadersWGSL/background.vertex.js +1 -1
  338. package/ShadersWGSL/background.vertex.js.map +1 -1
  339. package/ShadersWGSL/circleOfConfusion.fragment.js +10 -2
  340. package/ShadersWGSL/circleOfConfusion.fragment.js.map +1 -1
  341. package/ShadersWGSL/default.fragment.js +20 -31
  342. package/ShadersWGSL/default.fragment.js.map +1 -1
  343. package/ShadersWGSL/default.vertex.js +4 -5
  344. package/ShadersWGSL/default.vertex.js.map +1 -1
  345. package/ShadersWGSL/glowMapGeneration.fragment.js +1 -1
  346. package/ShadersWGSL/glowMapGeneration.fragment.js.map +1 -1
  347. package/ShadersWGSL/glowMapGeneration.vertex.js +1 -1
  348. package/ShadersWGSL/glowMapGeneration.vertex.js.map +1 -1
  349. package/ShadersWGSL/pbr.fragment.d.ts +1 -0
  350. package/ShadersWGSL/pbr.fragment.js +2 -100
  351. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  352. package/ShadersWGSL/pbr.vertex.js +4 -2
  353. package/ShadersWGSL/pbr.vertex.js.map +1 -1
  354. package/XR/features/WebXRRawCameraAccess.js +1 -1
  355. package/XR/features/WebXRRawCameraAccess.js.map +1 -1
  356. package/index.d.ts +1 -0
  357. package/index.js +1 -0
  358. package/index.js.map +1 -1
  359. package/package.json +1 -1
  360. package/scene.d.ts +19 -2
  361. package/scene.js +110 -13
  362. package/scene.js.map +1 -1
  363. package/sceneComponent.d.ts +0 -1
  364. package/sceneComponent.js +0 -1
  365. package/sceneComponent.js.map +1 -1
  366. package/types.d.ts +12 -0
  367. package/types.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"extractHighlightsPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/extractHighlightsPostProcess.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,WAAW;IAgBzD;;;OAGG;IACa,YAAY;QACxB,OAAO,8BAA8B,CAAC;IAC1C,CAAC;IAED,YACI,IAAY,EACZ,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,cAAsB,SAAS,CAAC,wBAAwB,EACxD,gBAAgB,GAAG,KAAK;QAExB,KAAK,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAjC7K;;WAEG;QAEI,cAAS,GAAG,GAAG,CAAC;QAEvB,gBAAgB;QACT,cAAS,GAAG,CAAC,CAAC;QAErB;;;WAGG;QACI,sBAAiB,GAA0B,IAAI,CAAC;QAqBnD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;YAC1C,IAAI,CAAC,6BAA6B,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC9D,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACxB,MAAM,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aAC9E;YACD,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;YACrE,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC;IAEkB,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC,CAAC;SAClE;aAAM;YACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;SAC9D;QAED,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;CACJ;AAlDU;IADN,SAAS,EAAE;+DACW;AAoD3B,aAAa,CAAC,sCAAsC,EAAE,4BAA4B,CAAC,CAAC","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport { ToGammaSpace } from \"../Maths/math.constants\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\n/**\r\n * The extract highlights post process sets all pixels to black except pixels above the specified luminance threshold. Used as the first step for a bloom effect.\r\n */\r\nexport class ExtractHighlightsPostProcess extends PostProcess {\r\n /**\r\n * The luminance threshold, pixels below this value will be set to black.\r\n */\r\n @serialize()\r\n public threshold = 0.9;\r\n\r\n /** @internal */\r\n public _exposure = 1;\r\n\r\n /**\r\n * Post process which has the input texture to be used when performing highlight extraction\r\n * @internal\r\n */\r\n public _inputPostProcess: Nullable<PostProcess> = null;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"ExtractHighlightsPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"ExtractHighlightsPostProcess\";\r\n }\r\n\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false\r\n ) {\r\n super(name, \"extractHighlights\", [\"threshold\", \"exposure\"], null, options, camera, samplingMode, engine, reusable, null, textureType, undefined, null, blockCompilation);\r\n this.onApplyObservable.add((effect: Effect) => {\r\n this.externalTextureSamplerBinding = !!this._inputPostProcess;\r\n if (this._inputPostProcess) {\r\n effect.setTextureFromPostProcess(\"textureSampler\", this._inputPostProcess);\r\n }\r\n effect.setFloat(\"threshold\", Math.pow(this.threshold, ToGammaSpace));\r\n effect.setFloat(\"exposure\", this._exposure);\r\n });\r\n }\r\n\r\n protected override _gatherImports(useWebGPU: boolean, list: Promise<any>[]) {\r\n if (useWebGPU) {\r\n this._webGPUReady = true;\r\n list.push(import(\"../ShadersWGSL/extractHighlights.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/extractHighlights.fragment\"));\r\n }\r\n\r\n super._gatherImports(useWebGPU, list);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ExtractHighlightsPostProcess\", ExtractHighlightsPostProcess);\r\n"]}
1
+ {"version":3,"file":"extractHighlightsPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/extractHighlightsPostProcess.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AAEtF;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,WAAW;IACzD;;OAEG;IAEH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;IACzC,CAAC;IAED,IAAW,SAAS,CAAC,KAAa;QAC9B,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC;IAC1C,CAAC;IAED,gBAAgB;IAChB,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;IACzC,CAAC;IAED,gBAAgB;IAChB,IAAW,SAAS,CAAC,KAAa;QAC9B,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC;IAC1C,CAAC;IAQD;;;OAGG;IACa,YAAY;QACxB,OAAO,8BAA8B,CAAC;IAC1C,CAAC;IAID,YACI,IAAY,EACZ,OAAoC,EACpC,SAA2B,IAAI,EAC/B,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,cAAsB,SAAS,CAAC,wBAAwB,EACxD,gBAAgB,GAAG,KAAK;QAExB,MAAM,YAAY,GAAG;YACjB,QAAQ,EAAE,gCAAgC,CAAC,QAAQ;YACnD,IAAI,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACvD,MAAM;YACN,YAAY;YACZ,MAAM;YACN,QAAQ;YACR,WAAW;YACX,gBAAgB;YAChB,GAAI,OAA8B;SACrC,CAAC;QAEF,KAAK,CAAC,IAAI,EAAE,gCAAgC,CAAC,WAAW,EAAE;YACtD,aAAa,EAAE,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YACnJ,GAAG,YAAY;SAClB,CAAC,CAAC;QAzCP;;;WAGG;QACI,sBAAiB,GAA0B,IAAI,CAAC;QAuCnD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;YAC1C,IAAI,CAAC,6BAA6B,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC9D,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACxB,MAAM,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aAC9E;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AApEG;IADC,SAAS,EAAE;6DAGX;AAoEL,aAAa,CAAC,sCAAsC,EAAE,4BAA4B,CAAC,CAAC","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { ThinExtractHighlightsPostProcess } from \"./thinExtractHighlightsPostProcess\";\r\n\r\n/**\r\n * The extract highlights post process sets all pixels to black except pixels above the specified luminance threshold. Used as the first step for a bloom effect.\r\n */\r\nexport class ExtractHighlightsPostProcess extends PostProcess {\r\n /**\r\n * The luminance threshold, pixels below this value will be set to black.\r\n */\r\n @serialize()\r\n public get threshold() {\r\n return this._effectWrapper.threshold;\r\n }\r\n\r\n public set threshold(value: number) {\r\n this._effectWrapper.threshold = value;\r\n }\r\n\r\n /** @internal */\r\n public get _exposure() {\r\n return this._effectWrapper._exposure;\r\n }\r\n\r\n /** @internal */\r\n public set _exposure(value: number) {\r\n this._effectWrapper._exposure = value;\r\n }\r\n\r\n /**\r\n * Post process which has the input texture to be used when performing highlight extraction\r\n * @internal\r\n */\r\n public _inputPostProcess: Nullable<PostProcess> = null;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"ExtractHighlightsPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"ExtractHighlightsPostProcess\";\r\n }\r\n\r\n protected override _effectWrapper: ThinExtractHighlightsPostProcess;\r\n\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera> = null,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false\r\n ) {\r\n const localOptions = {\r\n uniforms: ThinExtractHighlightsPostProcess.Uniforms,\r\n size: typeof options === \"number\" ? options : undefined,\r\n camera,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n textureType,\r\n blockCompilation,\r\n ...(options as PostProcessOptions),\r\n };\r\n\r\n super(name, ThinExtractHighlightsPostProcess.FragmentUrl, {\r\n effectWrapper: typeof options === \"number\" || !options.effectWrapper ? new ThinExtractHighlightsPostProcess(name, engine, localOptions) : undefined,\r\n ...localOptions,\r\n });\r\n\r\n this.onApplyObservable.add((effect: Effect) => {\r\n this.externalTextureSamplerBinding = !!this._inputPostProcess;\r\n if (this._inputPostProcess) {\r\n effect.setTextureFromPostProcess(\"textureSampler\", this._inputPostProcess);\r\n }\r\n });\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ExtractHighlightsPostProcess\", ExtractHighlightsPostProcess);\r\n"]}
@@ -31,6 +31,12 @@ export * from "./vrDistortionCorrectionPostProcess";
31
31
  export * from "./vrMultiviewToSingleviewPostProcess";
32
32
  export * from "./screenSpaceReflectionPostProcess";
33
33
  export * from "./screenSpaceCurvaturePostProcess";
34
+ export * from "./thinBlackAndWhitePostProcess";
35
+ export * from "./thinBloomEffect";
36
+ export * from "./thinBlurPostProcess";
37
+ export * from "./thinCircleOfConfusionPostProcess";
38
+ export * from "./thinDepthOfFieldEffect";
39
+ export * from "./thinExtractHighlightsPostProcess";
34
40
  export * from "../Shaders/postprocess.vertex";
35
41
  export * from "../ShadersWGSL/postprocess.vertex";
36
42
  export * from "../Shaders/kernelBlur.fragment";
@@ -32,6 +32,12 @@ export * from "./vrDistortionCorrectionPostProcess.js";
32
32
  export * from "./vrMultiviewToSingleviewPostProcess.js";
33
33
  export * from "./screenSpaceReflectionPostProcess.js";
34
34
  export * from "./screenSpaceCurvaturePostProcess.js";
35
+ export * from "./thinBlackAndWhitePostProcess.js";
36
+ export * from "./thinBloomEffect.js";
37
+ export * from "./thinBlurPostProcess.js";
38
+ export * from "./thinCircleOfConfusionPostProcess.js";
39
+ export * from "./thinDepthOfFieldEffect.js";
40
+ export * from "./thinExtractHighlightsPostProcess.js";
35
41
  // Postprocess
36
42
  export * from "../Shaders/postprocess.vertex.js";
37
43
  export * from "../ShadersWGSL/postprocess.vertex.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nexport * from \"./anaglyphPostProcess\";\r\nexport * from \"./blackAndWhitePostProcess\";\r\nexport * from \"./bloomEffect\";\r\nexport * from \"./bloomMergePostProcess\";\r\nexport * from \"./blurPostProcess\";\r\nexport * from \"./chromaticAberrationPostProcess\";\r\nexport * from \"./circleOfConfusionPostProcess\";\r\nexport * from \"./colorCorrectionPostProcess\";\r\nexport * from \"./convolutionPostProcess\";\r\nexport * from \"./depthOfFieldBlurPostProcess\";\r\nexport * from \"./depthOfFieldEffect\";\r\nexport * from \"./depthOfFieldMergePostProcess\";\r\nexport * from \"./displayPassPostProcess\";\r\nexport * from \"./extractHighlightsPostProcess\";\r\nexport * from \"./filterPostProcess\";\r\nexport * from \"./fxaaPostProcess\";\r\nexport * from \"./grainPostProcess\";\r\nexport * from \"./highlightsPostProcess\";\r\nexport * from \"./imageProcessingPostProcess\";\r\nexport * from \"./motionBlurPostProcess\";\r\nexport * from \"./passPostProcess\";\r\nexport * from \"./postProcess\";\r\nexport * from \"./postProcessManager\";\r\nexport * from \"./refractionPostProcess\";\r\nexport * from \"./RenderPipeline/index\";\r\nexport * from \"./sharpenPostProcess\";\r\nexport * from \"./stereoscopicInterlacePostProcess\";\r\nexport * from \"./tonemapPostProcess\";\r\nexport * from \"./volumetricLightScatteringPostProcess\";\r\nexport * from \"./vrDistortionCorrectionPostProcess\";\r\nexport * from \"./vrMultiviewToSingleviewPostProcess\";\r\nexport * from \"./screenSpaceReflectionPostProcess\";\r\nexport * from \"./screenSpaceCurvaturePostProcess\";\r\n\r\n// Postprocess\r\nexport * from \"../Shaders/postprocess.vertex\";\r\nexport * from \"../ShadersWGSL/postprocess.vertex\";\r\n\r\n// Blur postprocess\r\nexport * from \"../Shaders/kernelBlur.fragment\";\r\nexport * from \"../Shaders/kernelBlur.vertex\";\r\nexport * from \"../ShadersWGSL/kernelBlur.fragment\";\r\nexport * from \"../ShadersWGSL/kernelBlur.vertex\";\r\n\r\n// Pass postprocess\r\nexport * from \"../Shaders/pass.fragment\";\r\nexport * from \"../Shaders/passCube.fragment\";\r\nexport * from \"../ShadersWGSL/pass.fragment\";\r\nexport * from \"../ShadersWGSL/passCube.fragment\";\r\n\r\n// vrDFistortionCorrection postprocess\r\nexport * from \"../Shaders/vrDistortionCorrection.fragment\";\r\nexport * from \"../ShadersWGSL/vrDistortionCorrection.fragment\";\r\n\r\n// Image processing postprocess\r\nexport * from \"../ShadersWGSL/imageProcessing.fragment\";\r\nexport * from \"../Shaders/imageProcessing.fragment\";\r\n\r\n// Sharpen\r\nexport * from \"../Shaders/sharpen.fragment\";\r\nexport * from \"../ShadersWGSL/sharpen.fragment\";\r\n\r\n// Grain\r\nexport * from \"../Shaders/grain.fragment\";\r\nexport * from \"../ShadersWGSL/grain.fragment\";\r\n\r\n// Chromatic Aberration\r\nexport * from \"../Shaders/chromaticAberration.fragment\";\r\nexport * from \"../ShadersWGSL/chromaticAberration.fragment\";\r\n\r\n// Depth of field merge\r\nexport * from \"../Shaders/depthOfFieldMerge.fragment\";\r\nexport * from \"../ShadersWGSL/depthOfFieldMerge.fragment\";\r\n\r\n// Circle of confusion\r\nexport * from \"../Shaders/circleOfConfusion.fragment\";\r\nexport * from \"../ShadersWGSL/circleOfConfusion.fragment\";\r\n\r\n// Bloom\r\nexport * from \"../Shaders/bloomMerge.fragment\";\r\nexport * from \"../ShadersWGSL/bloomMerge.fragment\";\r\n\r\n// Extract highlights\r\nexport * from \"../Shaders/extractHighlights.fragment\";\r\nexport * from \"../ShadersWGSL/extractHighlights.fragment\";\r\n\r\n// FXAA\r\nexport * from \"../Shaders/fxaa.fragment\";\r\nexport * from \"../Shaders/fxaa.vertex\";\r\nexport * from \"../ShadersWGSL/fxaa.fragment\";\r\nexport * from \"../ShadersWGSL/fxaa.vertex\";\r\n\r\n// B&W\r\nexport * from \"../Shaders/blackAndWhite.fragment\";\r\nexport * from \"../ShadersWGSL/blackAndWhite.fragment\";\r\n\r\n// Anaglyph\r\nexport * from \"../Shaders/anaglyph.fragment\";\r\nexport * from \"../ShadersWGSL/anaglyph.fragment\";\r\n\r\n// Convolution\r\nexport * from \"../Shaders/convolution.fragment\";\r\nexport * from \"../ShadersWGSL/convolution.fragment\";\r\n\r\n// Color correction\r\nexport * from \"../Shaders/colorCorrection.fragment\";\r\nexport * from \"../ShadersWGSL/colorCorrection.fragment\";\r\n\r\n// Motion blur\r\nexport * from \"../Shaders/motionBlur.fragment\";\r\nexport * from \"../ShadersWGSL/motionBlur.fragment\";\r\n\r\n// Filter\r\nexport * from \"../Shaders/filter.fragment\";\r\nexport * from \"../ShadersWGSL/filter.fragment\";\r\n\r\n// Highlights\r\nexport * from \"../Shaders/highlights.fragment\";\r\nexport * from \"../ShadersWGSL/highlights.fragment\";\r\n\r\n// Display\r\nexport * from \"../Shaders/displayPass.fragment\";\r\nexport * from \"../ShadersWGSL/displayPass.fragment\";\r\n\r\n// Tonemap\r\nexport * from \"../Shaders/tonemap.fragment\";\r\nexport * from \"../ShadersWGSL/tonemap.fragment\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nexport * from \"./anaglyphPostProcess\";\r\nexport * from \"./blackAndWhitePostProcess\";\r\nexport * from \"./bloomEffect\";\r\nexport * from \"./bloomMergePostProcess\";\r\nexport * from \"./blurPostProcess\";\r\nexport * from \"./chromaticAberrationPostProcess\";\r\nexport * from \"./circleOfConfusionPostProcess\";\r\nexport * from \"./colorCorrectionPostProcess\";\r\nexport * from \"./convolutionPostProcess\";\r\nexport * from \"./depthOfFieldBlurPostProcess\";\r\nexport * from \"./depthOfFieldEffect\";\r\nexport * from \"./depthOfFieldMergePostProcess\";\r\nexport * from \"./displayPassPostProcess\";\r\nexport * from \"./extractHighlightsPostProcess\";\r\nexport * from \"./filterPostProcess\";\r\nexport * from \"./fxaaPostProcess\";\r\nexport * from \"./grainPostProcess\";\r\nexport * from \"./highlightsPostProcess\";\r\nexport * from \"./imageProcessingPostProcess\";\r\nexport * from \"./motionBlurPostProcess\";\r\nexport * from \"./passPostProcess\";\r\nexport * from \"./postProcess\";\r\nexport * from \"./postProcessManager\";\r\nexport * from \"./refractionPostProcess\";\r\nexport * from \"./RenderPipeline/index\";\r\nexport * from \"./sharpenPostProcess\";\r\nexport * from \"./stereoscopicInterlacePostProcess\";\r\nexport * from \"./tonemapPostProcess\";\r\nexport * from \"./volumetricLightScatteringPostProcess\";\r\nexport * from \"./vrDistortionCorrectionPostProcess\";\r\nexport * from \"./vrMultiviewToSingleviewPostProcess\";\r\nexport * from \"./screenSpaceReflectionPostProcess\";\r\nexport * from \"./screenSpaceCurvaturePostProcess\";\r\n\r\nexport * from \"./thinBlackAndWhitePostProcess\";\r\nexport * from \"./thinBloomEffect\";\r\nexport * from \"./thinBlurPostProcess\";\r\nexport * from \"./thinCircleOfConfusionPostProcess\";\r\nexport * from \"./thinDepthOfFieldEffect\";\r\nexport * from \"./thinExtractHighlightsPostProcess\";\r\n\r\n// Postprocess\r\nexport * from \"../Shaders/postprocess.vertex\";\r\nexport * from \"../ShadersWGSL/postprocess.vertex\";\r\n\r\n// Blur postprocess\r\nexport * from \"../Shaders/kernelBlur.fragment\";\r\nexport * from \"../Shaders/kernelBlur.vertex\";\r\nexport * from \"../ShadersWGSL/kernelBlur.fragment\";\r\nexport * from \"../ShadersWGSL/kernelBlur.vertex\";\r\n\r\n// Pass postprocess\r\nexport * from \"../Shaders/pass.fragment\";\r\nexport * from \"../Shaders/passCube.fragment\";\r\nexport * from \"../ShadersWGSL/pass.fragment\";\r\nexport * from \"../ShadersWGSL/passCube.fragment\";\r\n\r\n// vrDFistortionCorrection postprocess\r\nexport * from \"../Shaders/vrDistortionCorrection.fragment\";\r\nexport * from \"../ShadersWGSL/vrDistortionCorrection.fragment\";\r\n\r\n// Image processing postprocess\r\nexport * from \"../ShadersWGSL/imageProcessing.fragment\";\r\nexport * from \"../Shaders/imageProcessing.fragment\";\r\n\r\n// Sharpen\r\nexport * from \"../Shaders/sharpen.fragment\";\r\nexport * from \"../ShadersWGSL/sharpen.fragment\";\r\n\r\n// Grain\r\nexport * from \"../Shaders/grain.fragment\";\r\nexport * from \"../ShadersWGSL/grain.fragment\";\r\n\r\n// Chromatic Aberration\r\nexport * from \"../Shaders/chromaticAberration.fragment\";\r\nexport * from \"../ShadersWGSL/chromaticAberration.fragment\";\r\n\r\n// Depth of field merge\r\nexport * from \"../Shaders/depthOfFieldMerge.fragment\";\r\nexport * from \"../ShadersWGSL/depthOfFieldMerge.fragment\";\r\n\r\n// Circle of confusion\r\nexport * from \"../Shaders/circleOfConfusion.fragment\";\r\nexport * from \"../ShadersWGSL/circleOfConfusion.fragment\";\r\n\r\n// Bloom\r\nexport * from \"../Shaders/bloomMerge.fragment\";\r\nexport * from \"../ShadersWGSL/bloomMerge.fragment\";\r\n\r\n// Extract highlights\r\nexport * from \"../Shaders/extractHighlights.fragment\";\r\nexport * from \"../ShadersWGSL/extractHighlights.fragment\";\r\n\r\n// FXAA\r\nexport * from \"../Shaders/fxaa.fragment\";\r\nexport * from \"../Shaders/fxaa.vertex\";\r\nexport * from \"../ShadersWGSL/fxaa.fragment\";\r\nexport * from \"../ShadersWGSL/fxaa.vertex\";\r\n\r\n// B&W\r\nexport * from \"../Shaders/blackAndWhite.fragment\";\r\nexport * from \"../ShadersWGSL/blackAndWhite.fragment\";\r\n\r\n// Anaglyph\r\nexport * from \"../Shaders/anaglyph.fragment\";\r\nexport * from \"../ShadersWGSL/anaglyph.fragment\";\r\n\r\n// Convolution\r\nexport * from \"../Shaders/convolution.fragment\";\r\nexport * from \"../ShadersWGSL/convolution.fragment\";\r\n\r\n// Color correction\r\nexport * from \"../Shaders/colorCorrection.fragment\";\r\nexport * from \"../ShadersWGSL/colorCorrection.fragment\";\r\n\r\n// Motion blur\r\nexport * from \"../Shaders/motionBlur.fragment\";\r\nexport * from \"../ShadersWGSL/motionBlur.fragment\";\r\n\r\n// Filter\r\nexport * from \"../Shaders/filter.fragment\";\r\nexport * from \"../ShadersWGSL/filter.fragment\";\r\n\r\n// Highlights\r\nexport * from \"../Shaders/highlights.fragment\";\r\nexport * from \"../ShadersWGSL/highlights.fragment\";\r\n\r\n// Display\r\nexport * from \"../Shaders/displayPass.fragment\";\r\nexport * from \"../ShadersWGSL/displayPass.fragment\";\r\n\r\n// Tonemap\r\nexport * from \"../Shaders/tonemap.fragment\";\r\nexport * from \"../ShadersWGSL/tonemap.fragment\";\r\n"]}
@@ -16,6 +16,8 @@ import type { PrePassRenderer } from "../Rendering/prePassRenderer";
16
16
  import type { PrePassEffectConfiguration } from "../Rendering/prePassEffectConfiguration";
17
17
  import { AbstractEngine } from "../Engines/abstractEngine";
18
18
  import type { IAssetContainer } from "../IAssetContainer.js";
19
+ import type { EffectWrapperCustomShaderCodeProcessing, EffectWrapperCreationOptions } from "../Materials/effectRenderer";
20
+ import { EffectWrapper } from "../Materials/effectRenderer";
19
21
  declare module "../Engines/abstractEngine" {
20
22
  interface AbstractEngine {
21
23
  /**
@@ -51,31 +53,10 @@ declare module "../Materials/effect" {
51
53
  setTextureFromPostProcessOutput(channel: string, postProcess: Nullable<PostProcess>): void;
52
54
  }
53
55
  }
54
- /**
55
- * Allows for custom processing of the shader code used by a post process
56
- */
57
- export type PostProcessCustomShaderCodeProcessing = {
58
- /**
59
- * If provided, will be called two times with the vertex and fragment code so that this code can be updated after the #include have been processed
60
- */
61
- processCodeAfterIncludes?: (postProcessName: string, shaderType: string, code: string) => string;
62
- /**
63
- * If provided, will be called two times with the vertex and fragment code so that this code can be updated before it is compiled by the GPU
64
- */
65
- processFinalCode?: (postProcessName: string, shaderType: string, code: string) => string;
66
- /**
67
- * If provided, will be called before creating the effect to collect additional custom bindings (defines, uniforms, samplers)
68
- */
69
- defineCustomBindings?: (postProcessName: string, defines: Nullable<string>, uniforms: string[], samplers: string[]) => Nullable<string>;
70
- /**
71
- * If provided, will be called when binding inputs to the shader code to allow the user to add custom bindings
72
- */
73
- bindCustomBindings?: (postProcessName: string, effect: Effect) => void;
74
- };
75
56
  /**
76
57
  * Options for the PostProcess constructor
77
58
  */
78
- export type PostProcessOptions = {
59
+ export type PostProcessOptions = EffectWrapperCreationOptions & {
79
60
  /**
80
61
  * The width of the texture created for this post process.
81
62
  * This parameter (and height) is only used when passing a value for the 5th parameter (options) to the PostProcess constructor function.
@@ -88,22 +69,6 @@ export type PostProcessOptions = {
88
69
  * If you use a PostProcessOptions for the 3rd parameter of the constructor, size is used instead of width and height.
89
70
  */
90
71
  height?: number;
91
- /**
92
- * The list of uniforms used in the shader (if any)
93
- */
94
- uniforms?: Nullable<string[]>;
95
- /**
96
- * The list of samplers used in the shader (if any)
97
- */
98
- samplers?: Nullable<string[]>;
99
- /**
100
- * The list of uniform buffers used in the shader (if any)
101
- */
102
- uniformBuffers?: Nullable<string[]>;
103
- /**
104
- * String of defines that will be set when running the fragment shader. (default: null)
105
- */
106
- defines?: Nullable<string>;
107
72
  /**
108
73
  * The size of the post process texture.
109
74
  * It is either a ratio to downscale or upscale the texture create for this post process, or an object containing width and height values.
@@ -133,31 +98,14 @@ export type PostProcessOptions = {
133
98
  * Type of the texture created for this post process (default: Constants.TEXTURETYPE_UNSIGNED_INT)
134
99
  */
135
100
  textureType?: number;
136
- /**
137
- * The url of the vertex shader to be used. (default: "postprocess")
138
- */
139
- vertexUrl?: string;
140
- /**
141
- * The index parameters to be used for babylons include syntax "#include<kernelBlurVaryingDeclaration>[0..varyingCount]". (default: undefined)
142
- * See usage in babylon.blurPostProcess.ts and kernelBlur.vertex.fx
143
- */
144
- indexParameters?: any;
145
- /**
146
- * If the shader should not be compiled immediately. (default: false)
147
- */
148
- blockCompilation?: boolean;
149
101
  /**
150
102
  * Format of the texture created for this post process (default: TEXTUREFORMAT_RGBA)
151
103
  */
152
104
  textureFormat?: number;
153
105
  /**
154
- * The shader language of the shader. (default: GLSL)
106
+ * The effect wrapper instance used by the post process. If not provided, a new one will be created.
155
107
  */
156
- shaderLanguage?: ShaderLanguage;
157
- /**
158
- * Defines additional code to call to prepare the shader code
159
- */
160
- extraInitializations?: (useWebGPU: boolean, list: Promise<any>[]) => void;
108
+ effectWrapper?: EffectWrapper;
161
109
  };
162
110
  /**
163
111
  * PostProcess can be used to apply a shader to a texture after it has been rendered
@@ -168,23 +116,23 @@ export declare class PostProcess {
168
116
  * Force all the postprocesses to compile to glsl even on WebGPU engines.
169
117
  * False by default. This is mostly meant for backward compatibility.
170
118
  */
171
- static ForceGLSL: boolean;
119
+ static get ForceGLSL(): boolean;
120
+ static set ForceGLSL(force: boolean);
172
121
  /** @internal */
173
122
  _parentContainer: Nullable<IAssetContainer>;
174
- private static _CustomShaderCodeProcessing;
175
123
  /**
176
124
  * Registers a shader code processing with a post process name.
177
125
  * @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
178
126
  * @param customShaderCodeProcessing shader code processing to associate to the post process name
179
127
  */
180
- static RegisterShaderCodeProcessing(postProcessName: Nullable<string>, customShaderCodeProcessing?: PostProcessCustomShaderCodeProcessing): void;
181
- private static _GetShaderCodeProcessing;
128
+ static RegisterShaderCodeProcessing(postProcessName: Nullable<string>, customShaderCodeProcessing?: EffectWrapperCustomShaderCodeProcessing): void;
182
129
  /**
183
130
  * Gets or sets the unique id of the post process
184
131
  */
185
132
  uniqueId: number;
186
133
  /** Name of the PostProcess. */
187
- name: string;
134
+ get name(): string;
135
+ set name(value: string);
188
136
  /**
189
137
  * Width of the texture to apply the post process on
190
138
  */
@@ -223,7 +171,8 @@ export declare class PostProcess {
223
171
  /**
224
172
  * Type of alpha mode to use when performing the post process (default: Engine.ALPHA_DISABLE)
225
173
  */
226
- alphaMode: number;
174
+ get alphaMode(): number;
175
+ set alphaMode(value: number);
227
176
  /**
228
177
  * Sets the setAlphaBlendConstants of the babylon engine
229
178
  */
@@ -274,7 +223,6 @@ export declare class PostProcess {
274
223
  private _camera;
275
224
  protected _scene: Scene;
276
225
  private _engine;
277
- private _shadersLoaded;
278
226
  protected _webGPUReady: boolean;
279
227
  private _options;
280
228
  private _reusable;
@@ -308,7 +256,6 @@ export declare class PostProcess {
308
256
  * @internal
309
257
  */
310
258
  _currentRenderTextureInd: number;
311
- private _drawWrapper;
312
259
  private _samplers;
313
260
  private _fragmentUrl;
314
261
  private _vertexUrl;
@@ -402,6 +349,7 @@ export declare class PostProcess {
402
349
  * See https://en.wikipedia.org/wiki/Texel_(graphics)
403
350
  */
404
351
  get texelSize(): Vector2;
352
+ protected readonly _effectWrapper: EffectWrapper;
405
353
  /**
406
354
  * Creates a new instance PostProcess
407
355
  * @param name The name of the PostProcess.
@@ -430,10 +378,7 @@ export declare class PostProcess {
430
378
  * @param extraInitializations Defines additional code to call to prepare the shader code
431
379
  */
432
380
  constructor(name: string, fragmentUrl: string, parameters: Nullable<string[]>, samplers: Nullable<string[]>, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: AbstractEngine, reusable?: boolean, defines?: Nullable<string>, textureType?: number, vertexUrl?: string, indexParameters?: any, blockCompilation?: boolean, textureFormat?: number, shaderLanguage?: ShaderLanguage, extraInitializations?: (useWebGPU: boolean, list: Promise<any>[]) => void);
433
- /** @internal */
434
381
  protected _gatherImports(useWebGPU: boolean | undefined, list: Promise<any>[]): void;
435
- private _importPromises;
436
- private _postConstructor;
437
382
  /**
438
383
  * Gets a string identifying the name of the class
439
384
  * @returns "PostProcess" string
@@ -446,7 +391,7 @@ export declare class PostProcess {
446
391
  getEngine(): AbstractEngine;
447
392
  /**
448
393
  * The effect that is created when initializing the post process.
449
- * @returns The created effect corresponding the postprocess.
394
+ * @returns The created effect corresponding to the postprocess.
450
395
  */
451
396
  getEffect(): Effect;
452
397
  /**
@@ -552,5 +497,5 @@ export declare class PostProcess {
552
497
  /**
553
498
  * @internal
554
499
  */
555
- static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string): Nullable<PostProcess>;
500
+ static _Parse(parsedPostProcess: any, targetCamera: Nullable<Camera>, scene: Nullable<Scene>, rootUrl: string): Nullable<PostProcess>;
556
501
  }
@@ -7,9 +7,9 @@ import { Effect } from "../Materials/effect.js";
7
7
  import { serialize, serializeAsColor4 } from "../Misc/decorators.js";
8
8
  import { SerializationHelper } from "../Misc/decorators.serialization.js";
9
9
  import { GetClass, RegisterClass } from "../Misc/typeStore.js";
10
- import { DrawWrapper } from "../Materials/drawWrapper.js";
11
10
  import { AbstractEngine } from "../Engines/abstractEngine.js";
12
11
  import { GetExponentOfTwo } from "../Misc/tools.functions.js";
12
+ import { EffectWrapper } from "../Materials/effectRenderer.js";
13
13
  AbstractEngine.prototype.setTextureFromPostProcess = function (channel, postProcess, name) {
14
14
  let postProcessInput = null;
15
15
  if (postProcess) {
@@ -47,20 +47,39 @@ Effect.prototype.setTextureFromPostProcessOutput = function (channel, postProces
47
47
  * See https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses
48
48
  */
49
49
  export class PostProcess {
50
+ /**
51
+ * Force all the postprocesses to compile to glsl even on WebGPU engines.
52
+ * False by default. This is mostly meant for backward compatibility.
53
+ */
54
+ static get ForceGLSL() {
55
+ return EffectWrapper.ForceGLSL;
56
+ }
57
+ static set ForceGLSL(force) {
58
+ EffectWrapper.ForceGLSL = force;
59
+ }
50
60
  /**
51
61
  * Registers a shader code processing with a post process name.
52
62
  * @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
53
63
  * @param customShaderCodeProcessing shader code processing to associate to the post process name
54
64
  */
55
65
  static RegisterShaderCodeProcessing(postProcessName, customShaderCodeProcessing) {
56
- if (!customShaderCodeProcessing) {
57
- delete PostProcess._CustomShaderCodeProcessing[postProcessName ?? ""];
58
- return;
59
- }
60
- PostProcess._CustomShaderCodeProcessing[postProcessName ?? ""] = customShaderCodeProcessing;
66
+ EffectWrapper.RegisterShaderCodeProcessing(postProcessName, customShaderCodeProcessing);
67
+ }
68
+ /** Name of the PostProcess. */
69
+ get name() {
70
+ return this._effectWrapper.name;
61
71
  }
62
- static _GetShaderCodeProcessing(postProcessName) {
63
- return PostProcess._CustomShaderCodeProcessing[postProcessName] ?? PostProcess._CustomShaderCodeProcessing[""];
72
+ set name(value) {
73
+ this._effectWrapper.name = value;
74
+ }
75
+ /**
76
+ * Type of alpha mode to use when performing the post process (default: Engine.ALPHA_DISABLE)
77
+ */
78
+ get alphaMode() {
79
+ return this._effectWrapper.alphaMode;
80
+ }
81
+ set alphaMode(value) {
82
+ this._effectWrapper.alphaMode = value;
64
83
  }
65
84
  /**
66
85
  * Number of sample textures (default: 1)
@@ -205,10 +224,6 @@ export class PostProcess {
205
224
  * By default, the buffer will only be cleared if alpha mode is disabled (and autoClear is true).
206
225
  */
207
226
  this.forceAutoClearInAlphaMode = false;
208
- /**
209
- * Type of alpha mode to use when performing the post process (default: Engine.ALPHA_DISABLE)
210
- */
211
- this.alphaMode = 0;
212
227
  /**
213
228
  * Animations to be used for the post processing
214
229
  */
@@ -242,7 +257,6 @@ export class PostProcess {
242
257
  * Modify the scale of the post process to be the same as the viewport (default: false)
243
258
  */
244
259
  this.adaptScaleToCurrentViewport = false;
245
- this._shadersLoaded = false;
246
260
  this._webGPUReady = false;
247
261
  this._reusable = false;
248
262
  this._renderId = 0;
@@ -269,11 +283,6 @@ export class PostProcess {
269
283
  this._currentRenderTextureInd = 0;
270
284
  this._scaleRatio = new Vector2(1, 1);
271
285
  this._texelSize = Vector2.Zero();
272
- /**
273
- * Executed when the effect was created
274
- * @returns effect that was created for this post process
275
- */
276
- this.onEffectCreatedObservable = new Observable(undefined, true);
277
286
  // Events
278
287
  /**
279
288
  * An event triggered when the postprocess is activated.
@@ -295,10 +304,9 @@ export class PostProcess {
295
304
  * An event triggered after rendering the postprocess
296
305
  */
297
306
  this.onAfterRenderObservable = new Observable();
298
- this._importPromises = [];
299
- this.name = name;
300
307
  let size = 1;
301
308
  let uniformBuffers = null;
309
+ let effectWrapper;
302
310
  if (parameters && !Array.isArray(parameters)) {
303
311
  const options = parameters;
304
312
  parameters = options.uniforms ?? null;
@@ -308,7 +316,7 @@ export class PostProcess {
308
316
  samplingMode = options.samplingMode ?? 1;
309
317
  engine = options.engine;
310
318
  reusable = options.reusable;
311
- defines = options.defines ?? null;
319
+ defines = Array.isArray(options.defines) ? options.defines.join("\n") : (options.defines ?? null);
312
320
  textureType = options.textureType ?? 0;
313
321
  vertexUrl = options.vertexUrl ?? "postprocess";
314
322
  indexParameters = options.indexParameters;
@@ -317,6 +325,7 @@ export class PostProcess {
317
325
  shaderLanguage = options.shaderLanguage ?? 0 /* ShaderLanguage.GLSL */;
318
326
  uniformBuffers = options.uniformBuffers ?? null;
319
327
  extraInitializations = options.extraInitializations;
328
+ effectWrapper = options.effectWrapper;
320
329
  }
321
330
  else if (_size) {
322
331
  if (typeof _size === "number") {
@@ -326,6 +335,27 @@ export class PostProcess {
326
335
  size = { width: _size.width, height: _size.height };
327
336
  }
328
337
  }
338
+ const useExistingThinPostProcess = !!effectWrapper;
339
+ this._effectWrapper =
340
+ effectWrapper ??
341
+ new EffectWrapper({
342
+ name,
343
+ useShaderStore: true,
344
+ useAsPostProcess: true,
345
+ fragmentShader: fragmentUrl,
346
+ engine: engine || camera?.getScene().getEngine(),
347
+ uniforms: parameters,
348
+ samplers,
349
+ uniformBuffers,
350
+ defines,
351
+ vertexUrl,
352
+ indexParameters,
353
+ blockCompilation,
354
+ shaderLanguage,
355
+ extraInitializations,
356
+ });
357
+ this.name = name;
358
+ this.onEffectCreatedObservable = this._effectWrapper.onEffectCreatedObservable;
329
359
  if (camera != null) {
330
360
  this._camera = camera;
331
361
  this._scene = camera.getScene();
@@ -345,18 +375,25 @@ export class PostProcess {
345
375
  this._textureFormat = textureFormat;
346
376
  this._shaderLanguage = shaderLanguage || 0 /* ShaderLanguage.GLSL */;
347
377
  this._samplers = samplers || [];
348
- this._samplers.push("textureSampler");
378
+ if (this._samplers.indexOf("textureSampler") === -1) {
379
+ this._samplers.push("textureSampler");
380
+ }
349
381
  this._fragmentUrl = fragmentUrl;
350
382
  this._vertexUrl = vertexUrl;
351
383
  this._parameters = parameters || [];
352
- this._parameters.push("scale");
384
+ if (this._parameters.indexOf("scale") === -1) {
385
+ this._parameters.push("scale");
386
+ }
353
387
  this._uniformBuffers = uniformBuffers || [];
354
388
  this._indexParameters = indexParameters;
355
- this._drawWrapper = new DrawWrapper(this._engine);
356
- this._webGPUReady = this._shaderLanguage === 1 /* ShaderLanguage.WGSL */;
357
- this._postConstructor(blockCompilation, defines, extraInitializations);
389
+ if (!useExistingThinPostProcess) {
390
+ this._webGPUReady = this._shaderLanguage === 1 /* ShaderLanguage.WGSL */;
391
+ const importPromises = [];
392
+ this._gatherImports(this._engine.isWebGPU && !PostProcess.ForceGLSL, importPromises);
393
+ this._effectWrapper._webGPUReady = this._webGPUReady;
394
+ this._effectWrapper._postConstructor(blockCompilation, defines, extraInitializations, importPromises);
395
+ }
358
396
  }
359
- /** @internal */
360
397
  _gatherImports(useWebGPU = false, list) {
361
398
  // this._webGPUReady is used to detect when a postprocess is intended to be used with WebGPU
362
399
  if (useWebGPU && this._webGPUReady) {
@@ -366,20 +403,6 @@ export class PostProcess {
366
403
  list.push(Promise.all([import("../Shaders/postprocess.vertex.js")]));
367
404
  }
368
405
  }
369
- _postConstructor(blockCompilation, defines = null, extraInitializations) {
370
- const engine = this.getEngine();
371
- const useWebGPU = engine.isWebGPU && !PostProcess.ForceGLSL;
372
- this._gatherImports(useWebGPU, this._importPromises);
373
- if (extraInitializations) {
374
- extraInitializations(useWebGPU, this._importPromises);
375
- }
376
- if (useWebGPU && this._webGPUReady) {
377
- this._shaderLanguage = 1 /* ShaderLanguage.WGSL */;
378
- }
379
- if (!blockCompilation) {
380
- this.updateEffect(defines);
381
- }
382
- }
383
406
  /**
384
407
  * Gets a string identifying the name of the class
385
408
  * @returns "PostProcess" string
@@ -396,10 +419,10 @@ export class PostProcess {
396
419
  }
397
420
  /**
398
421
  * The effect that is created when initializing the post process.
399
- * @returns The created effect corresponding the postprocess.
422
+ * @returns The created effect corresponding to the postprocess.
400
423
  */
401
424
  getEffect() {
402
- return this._drawWrapper.effect;
425
+ return this._effectWrapper.drawWrapper.effect;
403
426
  }
404
427
  /**
405
428
  * To avoid multiple redundant textures for multiple post process, the output the output texture for this post process can be shared with another.
@@ -433,42 +456,8 @@ export class PostProcess {
433
456
  * @param fragmentUrl The url of the fragment shader to be used (default: the one given at construction time)
434
457
  */
435
458
  updateEffect(defines = null, uniforms = null, samplers = null, indexParameters, onCompiled, onError, vertexUrl, fragmentUrl) {
436
- const customShaderCodeProcessing = PostProcess._GetShaderCodeProcessing(this.name);
437
- if (customShaderCodeProcessing?.defineCustomBindings) {
438
- const newUniforms = uniforms?.slice() ?? [];
439
- newUniforms.push(...this._parameters);
440
- const newSamplers = samplers?.slice() ?? [];
441
- newSamplers.push(...this._samplers);
442
- defines = customShaderCodeProcessing.defineCustomBindings(this.name, defines, newUniforms, newSamplers);
443
- uniforms = newUniforms;
444
- samplers = newSamplers;
445
- }
446
- this._postProcessDefines = defines;
447
- this._drawWrapper.effect = this._engine.createEffect({ vertex: vertexUrl ?? this._vertexUrl, fragment: fragmentUrl ?? this._fragmentUrl }, {
448
- attributes: ["position"],
449
- uniformsNames: uniforms || this._parameters,
450
- uniformBuffersNames: this._uniformBuffers,
451
- samplers: samplers || this._samplers,
452
- defines: defines !== null ? defines : "",
453
- fallbacks: null,
454
- onCompiled: onCompiled ?? null,
455
- onError: onError ?? null,
456
- indexParameters: indexParameters || this._indexParameters,
457
- processCodeAfterIncludes: customShaderCodeProcessing?.processCodeAfterIncludes
458
- ? (shaderType, code) => customShaderCodeProcessing.processCodeAfterIncludes(this.name, shaderType, code)
459
- : null,
460
- processFinalCode: customShaderCodeProcessing?.processFinalCode
461
- ? (shaderType, code) => customShaderCodeProcessing.processFinalCode(this.name, shaderType, code)
462
- : null,
463
- shaderLanguage: this._shaderLanguage,
464
- extraInitializationsAsync: this._shadersLoaded
465
- ? undefined
466
- : async () => {
467
- await Promise.all(this._importPromises);
468
- this._shadersLoaded = true;
469
- },
470
- }, this._engine);
471
- this.onEffectCreatedObservable.notifyObservers(this._drawWrapper.effect);
459
+ this._effectWrapper.updateEffect(defines, uniforms, samplers, indexParameters, onCompiled, onError, vertexUrl, fragmentUrl);
460
+ this._postProcessDefines = Array.isArray(this._effectWrapper.options.defines) ? this._effectWrapper.options.defines.join("\n") : this._effectWrapper.options.defines;
472
461
  }
473
462
  /**
474
463
  * The post process is reusable if it can be used multiple times within one frame.
@@ -654,7 +643,7 @@ export class PostProcess {
654
643
  * If the post process is supported.
655
644
  */
656
645
  get isSupported() {
657
- return this._drawWrapper.effect.isSupported;
646
+ return this._effectWrapper.drawWrapper.effect.isSupported;
658
647
  }
659
648
  /**
660
649
  * The aspect ratio of the output texture.
@@ -673,7 +662,7 @@ export class PostProcess {
673
662
  * @returns true if the post-process is ready (shader is compiled)
674
663
  */
675
664
  isReady() {
676
- return this._drawWrapper.effect?.isReady() ?? false;
665
+ return this._effectWrapper.isReady();
677
666
  }
678
667
  /**
679
668
  * Binds all textures and uniforms to the shader, this will be run on every pass.
@@ -681,16 +670,15 @@ export class PostProcess {
681
670
  */
682
671
  apply() {
683
672
  // Check
684
- if (!this._drawWrapper.effect?.isReady()) {
673
+ if (!this._effectWrapper.isReady()) {
685
674
  return null;
686
675
  }
687
676
  // States
688
- this._engine.enableEffect(this._drawWrapper);
677
+ this._engine.enableEffect(this._effectWrapper.drawWrapper);
689
678
  this._engine.setState(false);
690
679
  this._engine.setDepthBuffer(false);
691
680
  this._engine.setDepthWrite(false);
692
681
  // Alpha
693
- this._engine.setAlphaMode(this.alphaMode);
694
682
  if (this.alphaConstants) {
695
683
  this.getEngine().setAlphaConstants(this.alphaConstants.r, this.alphaConstants.g, this.alphaConstants.b, this.alphaConstants.a);
696
684
  }
@@ -706,13 +694,13 @@ export class PostProcess {
706
694
  source = this.inputTexture;
707
695
  }
708
696
  if (!this.externalTextureSamplerBinding) {
709
- this._drawWrapper.effect._bindTexture("textureSampler", source?.texture);
697
+ this._effectWrapper.drawWrapper.effect._bindTexture("textureSampler", source?.texture);
710
698
  }
711
699
  // Parameters
712
- this._drawWrapper.effect.setVector2("scale", this._scaleRatio);
713
- this.onApplyObservable.notifyObservers(this._drawWrapper.effect);
714
- PostProcess._GetShaderCodeProcessing(this.name)?.bindCustomBindings?.(this.name, this._drawWrapper.effect);
715
- return this._drawWrapper.effect;
700
+ this._effectWrapper.drawWrapper.effect.setVector2("scale", this._scaleRatio);
701
+ this.onApplyObservable.notifyObservers(this._effectWrapper.drawWrapper.effect);
702
+ this._effectWrapper.bind();
703
+ return this._effectWrapper.drawWrapper.effect;
716
704
  }
717
705
  _disposeTextures() {
718
706
  if (this._shareOutputWithPostProcess || this._forcedOutputTexture) {
@@ -798,6 +786,7 @@ export class PostProcess {
798
786
  serializationObject.fragmentUrl = this._fragmentUrl;
799
787
  serializationObject.parameters = this._parameters;
800
788
  serializationObject.samplers = this._samplers;
789
+ serializationObject.uniformBuffers = this._uniformBuffers;
801
790
  serializationObject.options = this._options;
802
791
  serializationObject.defines = this._postProcessDefines;
803
792
  serializationObject.textureFormat = this._textureFormat;
@@ -849,18 +838,12 @@ export class PostProcess {
849
838
  }, parsedPostProcess, scene, rootUrl);
850
839
  }
851
840
  }
852
- /**
853
- * Force all the postprocesses to compile to glsl even on WebGPU engines.
854
- * False by default. This is mostly meant for backward compatibility.
855
- */
856
- PostProcess.ForceGLSL = false;
857
- PostProcess._CustomShaderCodeProcessing = {};
858
841
  __decorate([
859
842
  serialize()
860
843
  ], PostProcess.prototype, "uniqueId", void 0);
861
844
  __decorate([
862
845
  serialize()
863
- ], PostProcess.prototype, "name", void 0);
846
+ ], PostProcess.prototype, "name", null);
864
847
  __decorate([
865
848
  serialize()
866
849
  ], PostProcess.prototype, "width", void 0);
@@ -881,7 +864,7 @@ __decorate([
881
864
  ], PostProcess.prototype, "forceAutoClearInAlphaMode", void 0);
882
865
  __decorate([
883
866
  serialize()
884
- ], PostProcess.prototype, "alphaMode", void 0);
867
+ ], PostProcess.prototype, "alphaMode", null);
885
868
  __decorate([
886
869
  serialize()
887
870
  ], PostProcess.prototype, "alphaConstants", void 0);