@babylonjs/core 7.32.0 → 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
@@ -2,8 +2,8 @@ import { PostProcessRenderEffect } from "../PostProcesses/RenderPipeline/postPro
2
2
  import { ExtractHighlightsPostProcess } from "./extractHighlightsPostProcess.js";
3
3
  import { BlurPostProcess } from "./blurPostProcess.js";
4
4
  import { BloomMergePostProcess } from "./bloomMergePostProcess.js";
5
- import { Vector2 } from "../Maths/math.vector.js";
6
5
  import { Texture } from "../Materials/Textures/texture.js";
6
+ import { ThinBloomEffect } from "./thinBloomEffect.js";
7
7
  /**
8
8
  * The bloom effect spreads bright areas of an image to simulate artifacts seen in cameras
9
9
  */
@@ -12,58 +12,89 @@ export class BloomEffect extends PostProcessRenderEffect {
12
12
  * The luminance threshold to find bright areas of the image to bloom.
13
13
  */
14
14
  get threshold() {
15
- return this._downscale.threshold;
15
+ return this._thinBloomEffect.threshold;
16
16
  }
17
17
  set threshold(value) {
18
- this._downscale.threshold = value;
18
+ this._thinBloomEffect.threshold = value;
19
19
  }
20
20
  /**
21
21
  * The strength of the bloom.
22
22
  */
23
23
  get weight() {
24
- return this._merge.weight;
24
+ return this._thinBloomEffect.weight;
25
25
  }
26
26
  set weight(value) {
27
- this._merge.weight = value;
27
+ this._thinBloomEffect.weight = value;
28
28
  }
29
29
  /**
30
30
  * Specifies the size of the bloom blur kernel, relative to the final output size
31
31
  */
32
32
  get kernel() {
33
- return this._blurX.kernel / this._bloomScale;
33
+ return this._thinBloomEffect.kernel;
34
34
  }
35
35
  set kernel(value) {
36
- this._blurX.kernel = value * this._bloomScale;
37
- this._blurY.kernel = value * this._bloomScale;
36
+ this._thinBloomEffect.kernel = value;
37
+ }
38
+ get bloomScale() {
39
+ return this._thinBloomEffect.scale;
38
40
  }
39
41
  /**
40
42
  * Creates a new instance of @see BloomEffect
41
- * @param scene The scene the effect belongs to.
42
- * @param _bloomScale The ratio of the blur texture to the input texture that should be used to compute the bloom.
43
+ * @param sceneOrEngine The scene or engine the effect belongs to.
44
+ * @param bloomScale The ratio of the blur texture to the input texture that should be used to compute the bloom.
43
45
  * @param bloomWeight The strength of bloom.
44
46
  * @param bloomKernel The size of the kernel to be used when applying the blur.
45
47
  * @param pipelineTextureType The type of texture to be used when performing the post processing.
46
48
  * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)
47
49
  */
48
- constructor(scene, _bloomScale, bloomWeight, bloomKernel, pipelineTextureType = 0, blockCompilation = false) {
49
- super(scene.getEngine(), "bloom", () => {
50
+ constructor(sceneOrEngine, bloomScale, bloomWeight, bloomKernel, pipelineTextureType = 0, blockCompilation = false) {
51
+ const engine = sceneOrEngine._renderForCamera ? sceneOrEngine.getEngine() : sceneOrEngine;
52
+ super(engine, "bloom", () => {
50
53
  return this._effects;
51
54
  }, true);
52
- this._bloomScale = _bloomScale;
53
55
  /**
54
56
  * @internal Internal
55
57
  */
56
58
  this._effects = [];
57
- this._downscale = new ExtractHighlightsPostProcess("highlights", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
58
- this._blurX = new BlurPostProcess("horizontal blur", new Vector2(1.0, 0), 10.0, _bloomScale, null, Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, undefined, blockCompilation);
59
+ this._thinBloomEffect = new ThinBloomEffect("bloom", engine, bloomScale, blockCompilation);
60
+ this._downscale = new ExtractHighlightsPostProcess("highlights", {
61
+ size: 1.0,
62
+ samplingMode: Texture.BILINEAR_SAMPLINGMODE,
63
+ engine,
64
+ textureType: pipelineTextureType,
65
+ blockCompilation,
66
+ effectWrapper: this._thinBloomEffect._downscale,
67
+ });
68
+ this._blurX = new BlurPostProcess("horizontal blur", this._thinBloomEffect._blurX.direction, this._thinBloomEffect._blurX.kernel, {
69
+ size: bloomScale,
70
+ samplingMode: Texture.BILINEAR_SAMPLINGMODE,
71
+ engine,
72
+ textureType: pipelineTextureType,
73
+ blockCompilation,
74
+ effectWrapper: this._thinBloomEffect._blurX,
75
+ });
59
76
  this._blurX.alwaysForcePOT = true;
60
77
  this._blurX.autoClear = false;
61
- this._blurY = new BlurPostProcess("vertical blur", new Vector2(0, 1.0), 10.0, _bloomScale, null, Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, undefined, blockCompilation);
78
+ this._blurY = new BlurPostProcess("vertical blur", this._thinBloomEffect._blurY.direction, this._thinBloomEffect._blurY.kernel, {
79
+ size: bloomScale,
80
+ samplingMode: Texture.BILINEAR_SAMPLINGMODE,
81
+ engine,
82
+ textureType: pipelineTextureType,
83
+ blockCompilation,
84
+ effectWrapper: this._thinBloomEffect._blurY,
85
+ });
62
86
  this._blurY.alwaysForcePOT = true;
63
87
  this._blurY.autoClear = false;
64
88
  this.kernel = bloomKernel;
65
89
  this._effects = [this._downscale, this._blurX, this._blurY];
66
- this._merge = new BloomMergePostProcess("bloomMerge", this._downscale, this._blurY, bloomWeight, _bloomScale, null, Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
90
+ this._merge = new BloomMergePostProcess("bloomMerge", this._downscale, this._blurY, bloomWeight, {
91
+ size: bloomScale,
92
+ samplingMode: Texture.BILINEAR_SAMPLINGMODE,
93
+ engine,
94
+ textureType: pipelineTextureType,
95
+ blockCompilation,
96
+ effectWrapper: this._thinBloomEffect._merge,
97
+ });
67
98
  this._merge.autoClear = false;
68
99
  this._effects.push(this._merge);
69
100
  }
@@ -90,12 +121,7 @@ export class BloomEffect extends PostProcessRenderEffect {
90
121
  * @internal
91
122
  */
92
123
  _isReady() {
93
- for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {
94
- if (!this._effects[effectIndex].isReady()) {
95
- return false;
96
- }
97
- }
98
- return true;
124
+ return this._thinBloomEffect.isReady();
99
125
  }
100
126
  }
101
127
  //# sourceMappingURL=bloomEffect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bloomEffect.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/bloomEffect.ts"],"names":[],"mappings":"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","sourcesContent":["import { PostProcessRenderEffect } from \"../PostProcesses/RenderPipeline/postProcessRenderEffect\";\r\nimport type { PostProcess } from \"./postProcess\";\r\nimport { ExtractHighlightsPostProcess } from \"./extractHighlightsPostProcess\";\r\nimport { BlurPostProcess } from \"./blurPostProcess\";\r\nimport { BloomMergePostProcess } from \"./bloomMergePostProcess\";\r\nimport { Vector2 } from \"../Maths/math.vector\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * The bloom effect spreads bright areas of an image to simulate artifacts seen in cameras\r\n */\r\nexport class BloomEffect extends PostProcessRenderEffect {\r\n /**\r\n * @internal Internal\r\n */\r\n public _effects: Array<PostProcess> = [];\r\n\r\n /**\r\n * @internal Internal\r\n */\r\n public _downscale: ExtractHighlightsPostProcess;\r\n private _blurX: BlurPostProcess;\r\n private _blurY: BlurPostProcess;\r\n private _merge: BloomMergePostProcess;\r\n\r\n /**\r\n * The luminance threshold to find bright areas of the image to bloom.\r\n */\r\n public get threshold(): number {\r\n return this._downscale.threshold;\r\n }\r\n public set threshold(value: number) {\r\n this._downscale.threshold = value;\r\n }\r\n\r\n /**\r\n * The strength of the bloom.\r\n */\r\n public get weight(): number {\r\n return this._merge.weight;\r\n }\r\n public set weight(value: number) {\r\n this._merge.weight = value;\r\n }\r\n\r\n /**\r\n * Specifies the size of the bloom blur kernel, relative to the final output size\r\n */\r\n public get kernel(): number {\r\n return this._blurX.kernel / this._bloomScale;\r\n }\r\n public set kernel(value: number) {\r\n this._blurX.kernel = value * this._bloomScale;\r\n this._blurY.kernel = value * this._bloomScale;\r\n }\r\n\r\n /**\r\n * Creates a new instance of @see BloomEffect\r\n * @param scene The scene the effect belongs to.\r\n * @param _bloomScale The ratio of the blur texture to the input texture that should be used to compute the bloom.\r\n * @param bloomWeight The strength of bloom.\r\n * @param bloomKernel The size of the kernel to be used when applying the blur.\r\n * @param pipelineTextureType The type of texture to be used when performing the post processing.\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n scene: Scene,\r\n private _bloomScale: number,\r\n bloomWeight: number,\r\n bloomKernel: number,\r\n pipelineTextureType = 0,\r\n blockCompilation = false\r\n ) {\r\n super(\r\n scene.getEngine(),\r\n \"bloom\",\r\n () => {\r\n return this._effects;\r\n },\r\n true\r\n );\r\n this._downscale = new ExtractHighlightsPostProcess(\"highlights\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);\r\n\r\n this._blurX = new BlurPostProcess(\r\n \"horizontal blur\",\r\n new Vector2(1.0, 0),\r\n 10.0,\r\n _bloomScale,\r\n null,\r\n Texture.BILINEAR_SAMPLINGMODE,\r\n scene.getEngine(),\r\n false,\r\n pipelineTextureType,\r\n undefined,\r\n blockCompilation\r\n );\r\n this._blurX.alwaysForcePOT = true;\r\n this._blurX.autoClear = false;\r\n\r\n this._blurY = new BlurPostProcess(\r\n \"vertical blur\",\r\n new Vector2(0, 1.0),\r\n 10.0,\r\n _bloomScale,\r\n null,\r\n Texture.BILINEAR_SAMPLINGMODE,\r\n scene.getEngine(),\r\n false,\r\n pipelineTextureType,\r\n undefined,\r\n blockCompilation\r\n );\r\n this._blurY.alwaysForcePOT = true;\r\n this._blurY.autoClear = false;\r\n\r\n this.kernel = bloomKernel;\r\n\r\n this._effects = [this._downscale, this._blurX, this._blurY];\r\n\r\n this._merge = new BloomMergePostProcess(\r\n \"bloomMerge\",\r\n this._downscale,\r\n this._blurY,\r\n bloomWeight,\r\n _bloomScale,\r\n null,\r\n Texture.BILINEAR_SAMPLINGMODE,\r\n scene.getEngine(),\r\n false,\r\n pipelineTextureType,\r\n blockCompilation\r\n );\r\n this._merge.autoClear = false;\r\n this._effects.push(this._merge);\r\n }\r\n\r\n /**\r\n * Disposes each of the internal effects for a given camera.\r\n * @param camera The camera to dispose the effect on.\r\n */\r\n public disposeEffects(camera: Camera) {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].dispose(camera);\r\n }\r\n }\r\n\r\n /**\r\n * @internal Internal\r\n */\r\n public _updateEffects() {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].updateEffect();\r\n }\r\n }\r\n\r\n /**\r\n * Internal\r\n * @returns if all the contained post processes are ready.\r\n * @internal\r\n */\r\n public _isReady() {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n if (!this._effects[effectIndex].isReady()) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"bloomEffect.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/bloomEffect.ts"],"names":[],"mappings":"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","sourcesContent":["import { PostProcessRenderEffect } from \"../PostProcesses/RenderPipeline/postProcessRenderEffect\";\r\nimport type { PostProcess } from \"./postProcess\";\r\nimport { ExtractHighlightsPostProcess } from \"./extractHighlightsPostProcess\";\r\nimport { BlurPostProcess } from \"./blurPostProcess\";\r\nimport { BloomMergePostProcess } from \"./bloomMergePostProcess\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport { ThinBloomEffect } from \"./thinBloomEffect\";\r\n\r\n/**\r\n * The bloom effect spreads bright areas of an image to simulate artifacts seen in cameras\r\n */\r\nexport class BloomEffect extends PostProcessRenderEffect {\r\n /**\r\n * @internal Internal\r\n */\r\n public _effects: Array<PostProcess> = [];\r\n\r\n /**\r\n * @internal Internal\r\n */\r\n public _downscale: ExtractHighlightsPostProcess;\r\n private _blurX: BlurPostProcess;\r\n private _blurY: BlurPostProcess;\r\n private _merge: BloomMergePostProcess;\r\n\r\n /**\r\n * The luminance threshold to find bright areas of the image to bloom.\r\n */\r\n public get threshold(): number {\r\n return this._thinBloomEffect.threshold;\r\n }\r\n public set threshold(value: number) {\r\n this._thinBloomEffect.threshold = value;\r\n }\r\n\r\n /**\r\n * The strength of the bloom.\r\n */\r\n public get weight(): number {\r\n return this._thinBloomEffect.weight;\r\n }\r\n public set weight(value: number) {\r\n this._thinBloomEffect.weight = value;\r\n }\r\n\r\n /**\r\n * Specifies the size of the bloom blur kernel, relative to the final output size\r\n */\r\n public get kernel(): number {\r\n return this._thinBloomEffect.kernel;\r\n }\r\n public set kernel(value: number) {\r\n this._thinBloomEffect.kernel = value;\r\n }\r\n\r\n public get bloomScale() {\r\n return this._thinBloomEffect.scale;\r\n }\r\n\r\n private _thinBloomEffect: ThinBloomEffect;\r\n\r\n /**\r\n * Creates a new instance of @see BloomEffect\r\n * @param sceneOrEngine The scene or engine the effect belongs to.\r\n * @param bloomScale The ratio of the blur texture to the input texture that should be used to compute the bloom.\r\n * @param bloomWeight The strength of bloom.\r\n * @param bloomKernel The size of the kernel to be used when applying the blur.\r\n * @param pipelineTextureType The type of texture to be used when performing the post processing.\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(sceneOrEngine: Scene | AbstractEngine, bloomScale: number, bloomWeight: number, bloomKernel: number, pipelineTextureType = 0, blockCompilation = false) {\r\n const engine = (sceneOrEngine as Scene)._renderForCamera ? (sceneOrEngine as Scene).getEngine() : (sceneOrEngine as AbstractEngine);\r\n super(\r\n engine,\r\n \"bloom\",\r\n () => {\r\n return this._effects;\r\n },\r\n true\r\n );\r\n\r\n this._thinBloomEffect = new ThinBloomEffect(\"bloom\", engine, bloomScale, blockCompilation);\r\n\r\n this._downscale = new ExtractHighlightsPostProcess(\"highlights\", {\r\n size: 1.0,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinBloomEffect._downscale,\r\n });\r\n\r\n this._blurX = new BlurPostProcess(\"horizontal blur\", this._thinBloomEffect._blurX.direction, this._thinBloomEffect._blurX.kernel, {\r\n size: bloomScale,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinBloomEffect._blurX,\r\n });\r\n this._blurX.alwaysForcePOT = true;\r\n this._blurX.autoClear = false;\r\n\r\n this._blurY = new BlurPostProcess(\"vertical blur\", this._thinBloomEffect._blurY.direction, this._thinBloomEffect._blurY.kernel, {\r\n size: bloomScale,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinBloomEffect._blurY,\r\n });\r\n this._blurY.alwaysForcePOT = true;\r\n this._blurY.autoClear = false;\r\n\r\n this.kernel = bloomKernel;\r\n\r\n this._effects = [this._downscale, this._blurX, this._blurY];\r\n\r\n this._merge = new BloomMergePostProcess(\"bloomMerge\", this._downscale, this._blurY, bloomWeight, {\r\n size: bloomScale,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinBloomEffect._merge,\r\n });\r\n this._merge.autoClear = false;\r\n this._effects.push(this._merge);\r\n }\r\n\r\n /**\r\n * Disposes each of the internal effects for a given camera.\r\n * @param camera The camera to dispose the effect on.\r\n */\r\n public disposeEffects(camera?: Camera) {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].dispose(camera);\r\n }\r\n }\r\n\r\n /**\r\n * @internal Internal\r\n */\r\n public _updateEffects() {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].updateEffect();\r\n }\r\n }\r\n\r\n /**\r\n * Internal\r\n * @returns if all the contained post processes are ready.\r\n * @internal\r\n */\r\n public _isReady() {\r\n return this._thinBloomEffect.isReady();\r\n }\r\n}\r\n"]}
@@ -3,17 +3,20 @@ import { PostProcess } from "./postProcess";
3
3
  import type { Nullable } from "../types";
4
4
  import type { AbstractEngine } from "../Engines/abstractEngine";
5
5
  import type { Camera } from "../Cameras/camera";
6
+ import { ThinBloomMergePostProcess } from "./thinBloomMergePostProcess";
6
7
  /**
7
8
  * The BloomMergePostProcess merges blurred images with the original based on the values of the circle of confusion.
8
9
  */
9
10
  export declare class BloomMergePostProcess extends PostProcess {
10
11
  /** Weight of the bloom to be added to the original input. */
11
- weight: number;
12
+ get weight(): number;
13
+ set weight(value: number);
12
14
  /**
13
15
  * Gets a string identifying the name of the class
14
16
  * @returns "BloomMergePostProcess" string
15
17
  */
16
18
  getClassName(): string;
19
+ protected _effectWrapper: ThinBloomMergePostProcess;
17
20
  /**
18
21
  * Creates a new instance of @see BloomMergePostProcess
19
22
  * @param name The name of the effect.
@@ -28,8 +31,5 @@ export declare class BloomMergePostProcess extends PostProcess {
28
31
  * @param textureType Type of textures used when performing the post process. (default: 0)
29
32
  * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)
30
33
  */
31
- constructor(name: string, originalFromInput: PostProcess, blurred: PostProcess,
32
- /** Weight of the bloom to be added to the original input. */
33
- weight: number, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: AbstractEngine, reusable?: boolean, textureType?: number, blockCompilation?: boolean);
34
- protected _gatherImports(useWebGPU: boolean, list: Promise<any>[]): void;
34
+ constructor(name: string, originalFromInput: PostProcess, blurred: PostProcess, weight: number, options: number | PostProcessOptions, camera?: Nullable<Camera>, samplingMode?: number, engine?: AbstractEngine, reusable?: boolean, textureType?: number, blockCompilation?: boolean);
35
35
  }
@@ -3,10 +3,18 @@ import { PostProcess } from "./postProcess.js";
3
3
 
4
4
  import { RegisterClass } from "../Misc/typeStore.js";
5
5
  import { serialize } from "../Misc/decorators.js";
6
+ import { ThinBloomMergePostProcess } from "./thinBloomMergePostProcess.js";
6
7
  /**
7
8
  * The BloomMergePostProcess merges blurred images with the original based on the values of the circle of confusion.
8
9
  */
9
10
  export class BloomMergePostProcess extends PostProcess {
11
+ /** Weight of the bloom to be added to the original input. */
12
+ get weight() {
13
+ return this._effectWrapper.weight;
14
+ }
15
+ set weight(value) {
16
+ this._effectWrapper.weight = value;
17
+ }
10
18
  /**
11
19
  * Gets a string identifying the name of the class
12
20
  * @returns "BloomMergePostProcess" string
@@ -28,36 +36,37 @@ export class BloomMergePostProcess extends PostProcess {
28
36
  * @param textureType Type of textures used when performing the post process. (default: 0)
29
37
  * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)
30
38
  */
31
- constructor(name, originalFromInput, blurred,
32
- /** Weight of the bloom to be added to the original input. */
33
- weight, options, camera, samplingMode, engine, reusable, textureType = 0, blockCompilation = false) {
34
- super(name, "bloomMerge", ["bloomWeight"], ["bloomBlur"], options, camera, samplingMode, engine, reusable, null, textureType, undefined, null, true);
35
- /** Weight of the bloom to be added to the original input. */
36
- this.weight = 1;
39
+ constructor(name, originalFromInput, blurred, weight, options, camera = null, samplingMode, engine, reusable, textureType = 0, blockCompilation = false) {
40
+ const blockCompilationFinal = typeof options === "number" ? blockCompilation : !!options.blockCompilation;
41
+ const localOptions = {
42
+ uniforms: ThinBloomMergePostProcess.Uniforms,
43
+ samplers: ThinBloomMergePostProcess.Samplers,
44
+ size: typeof options === "number" ? options : undefined,
45
+ camera,
46
+ samplingMode,
47
+ engine,
48
+ reusable,
49
+ textureType,
50
+ ...options,
51
+ blockCompilation: true,
52
+ };
53
+ super(name, ThinBloomMergePostProcess.FragmentUrl, {
54
+ effectWrapper: typeof options === "number" || !options.effectWrapper ? new ThinBloomMergePostProcess(name, engine, localOptions) : undefined,
55
+ ...localOptions,
56
+ });
37
57
  this.weight = weight;
38
58
  this.externalTextureSamplerBinding = true;
39
59
  this.onApplyObservable.add((effect) => {
40
60
  effect.setTextureFromPostProcess("textureSampler", originalFromInput);
41
61
  effect.setTextureFromPostProcessOutput("bloomBlur", blurred);
42
- effect.setFloat("bloomWeight", this.weight);
43
62
  });
44
- if (!blockCompilation) {
63
+ if (!blockCompilationFinal) {
45
64
  this.updateEffect();
46
65
  }
47
66
  }
48
- _gatherImports(useWebGPU, list) {
49
- if (useWebGPU) {
50
- this._webGPUReady = true;
51
- list.push(import("../ShadersWGSL/bloomMerge.fragment.js"));
52
- }
53
- else {
54
- list.push(import("../Shaders/bloomMerge.fragment.js"));
55
- }
56
- super._gatherImports(useWebGPU, list);
57
- }
58
67
  }
59
68
  __decorate([
60
69
  serialize()
61
- ], BloomMergePostProcess.prototype, "weight", void 0);
70
+ ], BloomMergePostProcess.prototype, "weight", null);
62
71
  RegisterClass("BABYLON.BloomMergePostProcess", BloomMergePostProcess);
63
72
  //# sourceMappingURL=bloomMergePostProcess.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bloomMergePostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/bloomMergePostProcess.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IAKlD;;;OAGG;IACa,YAAY;QACxB,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,YACI,IAAY,EACZ,iBAA8B,EAC9B,OAAoB;IACpB,6DAA6D;IAC7D,MAAc,EACd,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,cAAsB,SAAS,CAAC,wBAAwB,EACxD,gBAAgB,GAAG,KAAK;QAExB,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAxCzJ,6DAA6D;QAEtD,WAAM,GAAG,CAAC,CAAC;QAuCd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;YAC1C,MAAM,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;YACtE,MAAM,CAAC,+BAA+B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC7D,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,EAAE;YACnB,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;IACL,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,oCAAoC,CAAC,CAAC,CAAC;SAC3D;aAAM;YACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;SACvD;QAED,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;CACJ;AA9DU;IADN,SAAS,EAAE;qDACM;AAgEtB,aAAa,CAAC,+BAA+B,EAAE,qBAAqB,CAAC,CAAC","sourcesContent":["import type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { Nullable } from \"../types\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serialize } from \"../Misc/decorators\";\r\n\r\n/**\r\n * The BloomMergePostProcess merges blurred images with the original based on the values of the circle of confusion.\r\n */\r\nexport class BloomMergePostProcess extends PostProcess {\r\n /** Weight of the bloom to be added to the original input. */\r\n @serialize()\r\n public weight = 1;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"BloomMergePostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"BloomMergePostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance of @see BloomMergePostProcess\r\n * @param name The name of the effect.\r\n * @param originalFromInput Post process which's input will be used for the merge.\r\n * @param blurred Blurred highlights post process which's output will be used.\r\n * @param weight Weight of the bloom to be added to the original input.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n originalFromInput: PostProcess,\r\n blurred: PostProcess,\r\n /** Weight of the bloom to be added to the original input. */\r\n weight: number,\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, \"bloomMerge\", [\"bloomWeight\"], [\"bloomBlur\"], options, camera, samplingMode, engine, reusable, null, textureType, undefined, null, true);\r\n this.weight = weight;\r\n this.externalTextureSamplerBinding = true;\r\n this.onApplyObservable.add((effect: Effect) => {\r\n effect.setTextureFromPostProcess(\"textureSampler\", originalFromInput);\r\n effect.setTextureFromPostProcessOutput(\"bloomBlur\", blurred);\r\n effect.setFloat(\"bloomWeight\", this.weight);\r\n });\r\n\r\n if (!blockCompilation) {\r\n this.updateEffect();\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/bloomMerge.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/bloomMerge.fragment\"));\r\n }\r\n\r\n super._gatherImports(useWebGPU, list);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.BloomMergePostProcess\", BloomMergePostProcess);\r\n"]}
1
+ {"version":3,"file":"bloomMergePostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/bloomMergePostProcess.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IAClD,6DAA6D;IAE7D,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACtC,CAAC;IAED,IAAW,MAAM,CAAC,KAAa;QAC3B,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;IACvC,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAID;;;;;;;;;;;;;OAaG;IACH,YACI,IAAY,EACZ,iBAA8B,EAC9B,OAAoB,EACpB,MAAc,EACd,OAAoC,EACpC,SAA2B,IAAI,EAC/B,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,cAAsB,SAAS,CAAC,wBAAwB,EACxD,gBAAgB,GAAG,KAAK;QAExB,MAAM,qBAAqB,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC1G,MAAM,YAAY,GAAG;YACjB,QAAQ,EAAE,yBAAyB,CAAC,QAAQ;YAC5C,QAAQ,EAAE,yBAAyB,CAAC,QAAQ;YAC5C,IAAI,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACvD,MAAM;YACN,YAAY;YACZ,MAAM;YACN,QAAQ;YACR,WAAW;YACX,GAAI,OAA8B;YAClC,gBAAgB,EAAE,IAAI;SACzB,CAAC;QAEF,KAAK,CAAC,IAAI,EAAE,yBAAyB,CAAC,WAAW,EAAE;YAC/C,aAAa,EAAE,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YAC5I,GAAG,YAAY;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;YAC1C,MAAM,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;YACtE,MAAM,CAAC,+BAA+B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,EAAE;YACxB,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;IACL,CAAC;CACJ;AA3EG;IADC,SAAS,EAAE;mDAGX;AA2EL,aAAa,CAAC,+BAA+B,EAAE,qBAAqB,CAAC,CAAC","sourcesContent":["import type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { Nullable } from \"../types\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { ThinBloomMergePostProcess } from \"./thinBloomMergePostProcess\";\r\n\r\n/**\r\n * The BloomMergePostProcess merges blurred images with the original based on the values of the circle of confusion.\r\n */\r\nexport class BloomMergePostProcess extends PostProcess {\r\n /** Weight of the bloom to be added to the original input. */\r\n @serialize()\r\n public get weight() {\r\n return this._effectWrapper.weight;\r\n }\r\n\r\n public set weight(value: number) {\r\n this._effectWrapper.weight = value;\r\n }\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"BloomMergePostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"BloomMergePostProcess\";\r\n }\r\n\r\n protected override _effectWrapper: ThinBloomMergePostProcess;\r\n\r\n /**\r\n * Creates a new instance of @see BloomMergePostProcess\r\n * @param name The name of the effect.\r\n * @param originalFromInput Post process which's input will be used for the merge.\r\n * @param blurred Blurred highlights post process which's output will be used.\r\n * @param weight Weight of the bloom to be added to the original input.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n originalFromInput: PostProcess,\r\n blurred: PostProcess,\r\n weight: number,\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 blockCompilationFinal = typeof options === \"number\" ? blockCompilation : !!options.blockCompilation;\r\n const localOptions = {\r\n uniforms: ThinBloomMergePostProcess.Uniforms,\r\n samplers: ThinBloomMergePostProcess.Samplers,\r\n size: typeof options === \"number\" ? options : undefined,\r\n camera,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n textureType,\r\n ...(options as PostProcessOptions),\r\n blockCompilation: true,\r\n };\r\n\r\n super(name, ThinBloomMergePostProcess.FragmentUrl, {\r\n effectWrapper: typeof options === \"number\" || !options.effectWrapper ? new ThinBloomMergePostProcess(name, engine, localOptions) : undefined,\r\n ...localOptions,\r\n });\r\n\r\n this.weight = weight;\r\n this.externalTextureSamplerBinding = true;\r\n this.onApplyObservable.add((effect: Effect) => {\r\n effect.setTextureFromPostProcess(\"textureSampler\", originalFromInput);\r\n effect.setTextureFromPostProcessOutput(\"bloomBlur\", blurred);\r\n });\r\n\r\n if (!blockCompilationFinal) {\r\n this.updateEffect();\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.BloomMergePostProcess\", BloomMergePostProcess);\r\n"]}
@@ -6,18 +6,15 @@ import type { Camera } from "../Cameras/camera";
6
6
  import type { Effect } from "../Materials/effect";
7
7
  import type { Scene } from "../scene";
8
8
  import type { AbstractEngine } from "../Engines/abstractEngine.js";
9
+ import { ThinBlurPostProcess } from "./thinBlurPostProcess";
9
10
  /**
10
11
  * The Blur Post Process which blurs an image based on a kernel and direction.
11
12
  * Can be used twice in x and y directions to perform a gaussian blur in two passes.
12
13
  */
13
14
  export declare class BlurPostProcess extends PostProcess {
14
- private _blockCompilation;
15
- protected _kernel: number;
16
- protected _idealKernel: number;
17
- protected _packedFloat: boolean;
18
- private _staticDefines;
19
15
  /** The direction in which to blur the image. */
20
- direction: Vector2;
16
+ get direction(): Vector2;
17
+ set direction(value: Vector2);
21
18
  /**
22
19
  * Sets the length in pixels of the blur sample region
23
20
  */
@@ -39,6 +36,7 @@ export declare class BlurPostProcess extends PostProcess {
39
36
  * @returns "BlurPostProcess" string
40
37
  */
41
38
  getClassName(): string;
39
+ protected _effectWrapper: ThinBlurPostProcess;
42
40
  /**
43
41
  * Creates a new instance BlurPostProcess
44
42
  * @param name The name of the effect.
@@ -51,45 +49,11 @@ export declare class BlurPostProcess extends PostProcess {
51
49
  * @param reusable If the post process can be reused on the same frame. (default: false)
52
50
  * @param textureType Type of textures used when performing the post process. (default: 0)
53
51
  * @param defines
54
- * @param _blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)
52
+ * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)
55
53
  * @param textureFormat Format of textures used when performing the post process. (default: TEXTUREFORMAT_RGBA)
56
54
  */
57
- constructor(name: string, direction: Vector2, kernel: number, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: AbstractEngine, reusable?: boolean, textureType?: number, defines?: string, _blockCompilation?: boolean, textureFormat?: number);
58
- protected _gatherImports(useWebGPU: boolean, list: Promise<any>[]): void;
59
- /**
60
- * Updates the effect with the current post process compile time values and recompiles the shader.
61
- * @param defines Define statements that should be added at the beginning of the shader. (default: null)
62
- * @param uniforms Set of uniform variables that will be passed to the shader. (default: null)
63
- * @param samplers Set of Texture2D variables that will be passed to the shader. (default: null)
64
- * @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
65
- * @param onCompiled Called when the shader has been compiled.
66
- * @param onError Called if there is an error when compiling a shader.
67
- */
68
- updateEffect(defines?: Nullable<string>, uniforms?: Nullable<string[]>, samplers?: Nullable<string[]>, indexParameters?: any, onCompiled?: (effect: Effect) => void, onError?: (effect: Effect, errors: string) => void): void;
69
- protected _updateParameters(onCompiled?: (effect: Effect) => void, onError?: (effect: Effect, errors: string) => void): void;
70
- /**
71
- * Best kernels are odd numbers that when divided by 2, their integer part is even, so 5, 9 or 13.
72
- * Other odd kernels optimize correctly but require proportionally more samples, even kernels are
73
- * possible but will produce minor visual artifacts. Since each new kernel requires a new shader we
74
- * want to minimize kernel changes, having gaps between physical kernels is helpful in that regard.
75
- * The gaps between physical kernels are compensated for in the weighting of the samples
76
- * @param idealKernel Ideal blur kernel.
77
- * @returns Nearest best kernel.
78
- */
79
- protected _nearestBestKernel(idealKernel: number): number;
80
- /**
81
- * Calculates the value of a Gaussian distribution with sigma 3 at a given point.
82
- * @param x The point on the Gaussian distribution to sample.
83
- * @returns the value of the Gaussian function at x.
84
- */
85
- protected _gaussianWeight(x: number): number;
86
- /**
87
- * Generates a string that can be used as a floating point number in GLSL.
88
- * @param x Value to print.
89
- * @param decimalFigures Number of decimal places to print the number to (excluding trailing 0s).
90
- * @returns GLSL float string.
91
- */
92
- protected _glslFloat(x: number, decimalFigures?: number): string;
55
+ constructor(name: string, direction: Vector2, kernel: number, options: number | PostProcessOptions, camera?: Nullable<Camera>, samplingMode?: number, engine?: AbstractEngine, reusable?: boolean, textureType?: number, defines?: string, blockCompilation?: boolean, textureFormat?: number);
56
+ updateEffect(_defines?: Nullable<string>, _uniforms?: Nullable<string[]>, _samplers?: Nullable<string[]>, _indexParameters?: any, onCompiled?: (effect: Effect) => void, onError?: (effect: Effect, errors: string) => void): void;
93
57
  /**
94
58
  * @internal
95
59
  */