@onerjs/core 8.55.8 → 8.56.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 (423) hide show
  1. package/Animations/animation.pure.js +2 -2
  2. package/Animations/animation.pure.js.map +1 -1
  3. package/Animations/runtimeAnimation.js +4 -0
  4. package/Animations/runtimeAnimation.js.map +1 -1
  5. package/AudioV2/webAudio/webAudioEngine.d.ts +7 -0
  6. package/AudioV2/webAudio/webAudioEngine.js +6 -5
  7. package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
  8. package/Behaviors/Cameras/autoRotationBehavior.js +1 -1
  9. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  10. package/Behaviors/Meshes/followBehavior.js +1 -0
  11. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  12. package/Behaviors/Meshes/surfaceMagnetismBehavior.js +1 -0
  13. package/Behaviors/Meshes/surfaceMagnetismBehavior.js.map +1 -1
  14. package/Cameras/Inputs/followCameraMouseWheelInput.js +2 -2
  15. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  16. package/Cameras/Inputs/followCameraPointersInput.d.ts +15 -0
  17. package/Cameras/Inputs/followCameraPointersInput.js +18 -3
  18. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  19. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +1 -1
  20. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  21. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.pure.js +1 -1
  22. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.pure.js.map +1 -1
  23. package/Cameras/arcRotateCamera.pure.js +1 -1
  24. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  25. package/Collisions/gpuPicker.d.ts +1 -0
  26. package/Collisions/gpuPicker.js +5 -4
  27. package/Collisions/gpuPicker.js.map +1 -1
  28. package/Culling/Helper/boundingInfoHelper.js +9 -5
  29. package/Culling/Helper/boundingInfoHelper.js.map +1 -1
  30. package/Culling/boundingSphere.js +7 -4
  31. package/Culling/boundingSphere.js.map +1 -1
  32. package/Engines/AbstractEngine/abstractEngine.textureLoaders.d.ts +5 -1
  33. package/Engines/AbstractEngine/abstractEngine.textureLoaders.js +7 -3
  34. package/Engines/AbstractEngine/abstractEngine.textureLoaders.js.map +1 -1
  35. package/Engines/AbstractEngine/abstractEngine.textureLoaders.pure.d.ts +6 -0
  36. package/Engines/AbstractEngine/abstractEngine.textureLoaders.pure.js +16 -0
  37. package/Engines/AbstractEngine/abstractEngine.textureLoaders.pure.js.map +1 -0
  38. package/Engines/AbstractEngine/pure.d.ts +1 -0
  39. package/Engines/AbstractEngine/pure.js +1 -0
  40. package/Engines/AbstractEngine/pure.js.map +1 -1
  41. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +1 -1
  42. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
  43. package/Engines/IDrawContext.d.ts +2 -0
  44. package/Engines/IDrawContext.js.map +1 -1
  45. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +48 -6
  46. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
  47. package/Engines/Native/nativeInterfaces.d.ts +1 -1
  48. package/Engines/Native/nativeInterfaces.js.map +1 -1
  49. package/Engines/WebGPU/webgpuDrawContext.d.ts +8 -0
  50. package/Engines/WebGPU/webgpuDrawContext.js +15 -0
  51. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  52. package/Engines/abstractEngine.pure.js +2 -2
  53. package/Engines/abstractEngine.pure.js.map +1 -1
  54. package/Engines/engine.d.ts +21 -4
  55. package/Engines/thinNativeEngine.pure.d.ts +6 -1
  56. package/Engines/thinNativeEngine.pure.js +29 -2
  57. package/Engines/thinNativeEngine.pure.js.map +1 -1
  58. package/Engines/webgpuEngine.d.ts +1 -0
  59. package/Engines/webgpuEngine.js +1 -0
  60. package/Engines/webgpuEngine.js.map +1 -1
  61. package/Engines/webgpuEngine.pure.d.ts +10 -0
  62. package/Engines/webgpuEngine.pure.js +15 -1
  63. package/Engines/webgpuEngine.pure.js.map +1 -1
  64. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.d.ts +3 -63
  65. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.js +5 -71
  66. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.js.map +1 -1
  67. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.d.ts +71 -0
  68. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.js +86 -0
  69. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.js.map +1 -0
  70. package/FlowGraph/Blocks/Data/pure.d.ts +1 -0
  71. package/FlowGraph/Blocks/Data/pure.js +1 -0
  72. package/FlowGraph/Blocks/Data/pure.js.map +1 -1
  73. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.d.ts +3 -37
  74. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.js +5 -39
  75. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.js.map +1 -1
  76. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.d.ts +45 -0
  77. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.js +54 -0
  78. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.js.map +1 -0
  79. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.d.ts +3 -17
  80. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.js +5 -22
  81. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.js.map +1 -1
  82. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.d.ts +25 -0
  83. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.js +37 -0
  84. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.js.map +1 -0
  85. package/FlowGraph/Blocks/Event/pure.d.ts +2 -0
  86. package/FlowGraph/Blocks/Event/pure.js +2 -0
  87. package/FlowGraph/Blocks/Event/pure.js.map +1 -1
  88. package/FlowGraph/Blocks/flowGraphBlockFactory.d.ts +1 -1
  89. package/FlowGraph/Blocks/flowGraphBlockFactory.js +198 -172
  90. package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
  91. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +2 -5
  92. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
  93. package/FrameGraph/frameGraph.js +10 -1
  94. package/FrameGraph/frameGraph.js.map +1 -1
  95. package/Gamepads/gamepadManager.d.ts +1 -0
  96. package/Gamepads/gamepadManager.js +5 -2
  97. package/Gamepads/gamepadManager.js.map +1 -1
  98. package/Gizmos/scaleGizmo.js +1 -0
  99. package/Gizmos/scaleGizmo.js.map +1 -1
  100. package/Lights/IES/iesLoader.js +6 -8
  101. package/Lights/IES/iesLoader.js.map +1 -1
  102. package/Lights/Shadows/cascadedShadowGenerator.pure.js +4 -6
  103. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -1
  104. package/Lights/Shadows/shadowGenerator.js +2 -2
  105. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  106. package/Lights/light.js +3 -5
  107. package/Lights/light.js.map +1 -1
  108. package/Lights/spotLight.pure.js +1 -1
  109. package/Lights/spotLight.pure.js.map +1 -1
  110. package/Materials/Background/backgroundMaterial.pure.d.ts +1 -1
  111. package/Materials/Background/backgroundMaterial.pure.js +3 -12
  112. package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
  113. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +2 -0
  114. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  115. package/Materials/Node/Blocks/Fragment/TBNBlock.pure.js +1 -1
  116. package/Materials/Node/Blocks/Fragment/TBNBlock.pure.js.map +1 -1
  117. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +2 -0
  118. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
  119. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1 -0
  120. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
  121. package/Materials/Node/Blocks/powBlock.pure.js +2 -1
  122. package/Materials/Node/Blocks/powBlock.pure.js.map +1 -1
  123. package/Materials/Node/Blocks/triPlanarBlock.pure.js +14 -12
  124. package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
  125. package/Materials/Node/nodeMaterial.pure.d.ts +1 -0
  126. package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
  127. package/Materials/PBR/openpbrMaterial.pure.d.ts +2 -1
  128. package/Materials/PBR/openpbrMaterial.pure.js +3 -12
  129. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  130. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +2 -1
  131. package/Materials/PBR/pbrBaseMaterial.pure.js +3 -12
  132. package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
  133. package/Materials/Textures/index.d.ts +1 -0
  134. package/Materials/Textures/index.js +1 -0
  135. package/Materials/Textures/index.js.map +1 -1
  136. package/Materials/Textures/renderTargetTexture.pure.js +1 -1
  137. package/Materials/Textures/renderTargetTexture.pure.js.map +1 -1
  138. package/Materials/drawWrapper.js +3 -0
  139. package/Materials/drawWrapper.js.map +1 -1
  140. package/Materials/imageProcessingConfiguration.defines.d.ts +3 -0
  141. package/Materials/imageProcessingConfiguration.defines.js +2 -0
  142. package/Materials/imageProcessingConfiguration.defines.js.map +1 -1
  143. package/Materials/imageProcessingConfiguration.functions.js +3 -0
  144. package/Materials/imageProcessingConfiguration.functions.js.map +1 -1
  145. package/Materials/imageProcessingConfiguration.pure.d.ts +58 -0
  146. package/Materials/imageProcessingConfiguration.pure.js +123 -2
  147. package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
  148. package/Materials/material.pure.js +2 -2
  149. package/Materials/material.pure.js.map +1 -1
  150. package/Materials/standardMaterial.pure.d.ts +2 -1
  151. package/Materials/standardMaterial.pure.js +4 -13
  152. package/Materials/standardMaterial.pure.js.map +1 -1
  153. package/Materials/uniformBuffer.d.ts +29 -0
  154. package/Materials/uniformBuffer.js +146 -0
  155. package/Materials/uniformBuffer.js.map +1 -1
  156. package/Maths/colorTemperature.functions.d.ts +29 -0
  157. package/Maths/colorTemperature.functions.js +196 -0
  158. package/Maths/colorTemperature.functions.js.map +1 -0
  159. package/Maths/index.d.ts +1 -0
  160. package/Maths/index.js +1 -0
  161. package/Maths/index.js.map +1 -1
  162. package/Maths/math.path.js +1 -1
  163. package/Maths/math.path.js.map +1 -1
  164. package/Maths/math.polar.js +1 -1
  165. package/Maths/math.polar.js.map +1 -1
  166. package/Maths/math.vector.pure.js +4 -3
  167. package/Maths/math.vector.pure.js.map +1 -1
  168. package/Maths/pure.d.ts +1 -0
  169. package/Maths/pure.js +1 -0
  170. package/Maths/pure.js.map +1 -1
  171. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +72 -0
  172. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +164 -1
  173. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  174. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +2 -1
  175. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +36 -18
  176. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  177. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.d.ts +5 -4
  178. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js +25 -8
  179. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js.map +1 -1
  180. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
  181. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js.map +1 -1
  182. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +1 -1
  183. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
  184. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +2 -2
  185. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
  186. package/Meshes/Node/Blocks/mappingBlock.pure.js +2 -2
  187. package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
  188. package/Meshes/csg.js +5 -5
  189. package/Meshes/csg.js.map +1 -1
  190. package/Meshes/groundMesh.pure.js +1 -1
  191. package/Meshes/groundMesh.pure.js.map +1 -1
  192. package/Meshes/mesh.pure.js +2 -2
  193. package/Meshes/mesh.pure.js.map +1 -1
  194. package/Misc/deepMerger.js +1 -1
  195. package/Misc/deepMerger.js.map +1 -1
  196. package/Misc/dumpTools.pure.js +1 -1
  197. package/Misc/dumpTools.pure.js.map +1 -1
  198. package/Misc/index.d.ts +1 -0
  199. package/Misc/index.js +1 -0
  200. package/Misc/index.js.map +1 -1
  201. package/Misc/observable.pure.js +1 -3
  202. package/Misc/observable.pure.js.map +1 -1
  203. package/Misc/pure.d.ts +1 -0
  204. package/Misc/pure.js +1 -0
  205. package/Misc/pure.js.map +1 -1
  206. package/Misc/shaderImportLoader.d.ts +25 -0
  207. package/Misc/shaderImportLoader.js +54 -0
  208. package/Misc/shaderImportLoader.js.map +1 -0
  209. package/Misc/tools.pure.js +1 -1
  210. package/Misc/tools.pure.js.map +1 -1
  211. package/Particles/Node/Blocks/particleClampBlock.pure.d.ts +0 -1
  212. package/Particles/Node/Blocks/particleClampBlock.pure.js +1 -6
  213. package/Particles/Node/Blocks/particleClampBlock.pure.js.map +1 -1
  214. package/Particles/Node/Blocks/particleMathBlock.pure.js +1 -1
  215. package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
  216. package/Particles/Node/Blocks/particleNLerpBlock.pure.js +8 -3
  217. package/Particles/Node/Blocks/particleNLerpBlock.pure.js.map +1 -1
  218. package/Particles/Node/Blocks/particleSmoothStepBlock.pure.js +3 -2
  219. package/Particles/Node/Blocks/particleSmoothStepBlock.pure.js.map +1 -1
  220. package/Particles/Node/Blocks/particleStepBlock.pure.js +3 -2
  221. package/Particles/Node/Blocks/particleStepBlock.pure.js.map +1 -1
  222. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +1 -1
  223. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
  224. package/PostProcesses/depthOfFieldEffect.js +1 -1
  225. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  226. package/PostProcesses/imageProcessingPostProcess.d.ts +41 -1
  227. package/PostProcesses/imageProcessingPostProcess.js +41 -1
  228. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  229. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +1 -1
  230. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
  231. package/PostProcesses/sharpenPostProcess.pure.js +1 -1
  232. package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
  233. package/PostProcesses/thinImageProcessingPostProcess.d.ts +50 -0
  234. package/PostProcesses/thinImageProcessingPostProcess.js +65 -0
  235. package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -1
  236. package/Rendering/IBLShadows/iblShadowsMaterialCompatibility.pure.d.ts +12 -0
  237. package/Rendering/IBLShadows/iblShadowsMaterialCompatibility.pure.js +22 -0
  238. package/Rendering/IBLShadows/iblShadowsMaterialCompatibility.pure.js.map +1 -0
  239. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -0
  240. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +39 -0
  241. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
  242. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.d.ts +12 -0
  243. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +17 -5
  244. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  245. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +14 -0
  246. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +122 -6
  247. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  248. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +7 -0
  249. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +17 -0
  250. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  251. package/Rendering/IBLShadows/pure.d.ts +1 -0
  252. package/Rendering/IBLShadows/pure.js +1 -0
  253. package/Rendering/IBLShadows/pure.js.map +1 -1
  254. package/Rendering/boundingBoxRenderer.pure.js +3 -3
  255. package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
  256. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +11 -0
  257. package/Rendering/fluidRenderer/fluidRenderingObject.js +36 -14
  258. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  259. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +5 -0
  260. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +16 -3
  261. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  262. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +5 -0
  263. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +12 -0
  264. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  265. package/Rendering/iblCdfGenerator.js +10 -1
  266. package/Rendering/iblCdfGenerator.js.map +1 -1
  267. package/Rendering/outlineRenderer.pure.js +1 -0
  268. package/Rendering/outlineRenderer.pure.js.map +1 -1
  269. package/Rendering/subSurfaceConfiguration.js +1 -1
  270. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  271. package/Rendering/subSurfaceSceneComponent.pure.d.ts +1 -1
  272. package/Rendering/subSurfaceSceneComponent.pure.js +1 -1
  273. package/Rendering/subSurfaceSceneComponent.pure.js.map +1 -1
  274. package/Rendering/utilityLayerRenderer.js +1 -1
  275. package/Rendering/utilityLayerRenderer.js.map +1 -1
  276. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +1 -1
  277. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  278. package/Shaders/ShadersInclude/helperFunctions.js +2 -2
  279. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  280. package/Shaders/ShadersInclude/imageProcessingDeclaration.js +3 -0
  281. package/Shaders/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
  282. package/Shaders/ShadersInclude/imageProcessingFunctions.js +3 -0
  283. package/Shaders/ShadersInclude/imageProcessingFunctions.js.map +1 -1
  284. package/Shaders/ShadersInclude/openpbrDirectLighting.js +34 -4
  285. package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  286. package/Shaders/ShadersInclude/openpbrIblFunctions.js +8 -2
  287. package/Shaders/ShadersInclude/openpbrIblFunctions.js.map +1 -1
  288. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +5 -0
  289. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  290. package/Shaders/fluidRenderingParticleDepth.vertex.js +7 -1
  291. package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
  292. package/Shaders/fluidRenderingParticleDiffuse.vertex.js +7 -1
  293. package/Shaders/fluidRenderingParticleDiffuse.vertex.js.map +1 -1
  294. package/Shaders/fluidRenderingParticleThickness.vertex.js +7 -1
  295. package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
  296. package/Shaders/gaussianSplattingVoxel.fragment.js +4 -10
  297. package/Shaders/gaussianSplattingVoxel.fragment.js.map +1 -1
  298. package/Shaders/iblCombineVoxelGrids.fragment.js +1 -1
  299. package/Shaders/iblCombineVoxelGrids.fragment.js.map +1 -1
  300. package/Shaders/iblShadowVoxelTracing.fragment.js +24 -7
  301. package/Shaders/iblShadowVoxelTracing.fragment.js.map +1 -1
  302. package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.d.ts +5 -0
  303. package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.js +13 -0
  304. package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.js.map +1 -0
  305. package/ShadersWGSL/ShadersInclude/imageProcessingDeclaration.js +3 -0
  306. package/ShadersWGSL/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
  307. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js +3 -0
  308. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js.map +1 -1
  309. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +35 -5
  310. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  311. package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js +1 -1
  312. package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js.map +1 -1
  313. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +8 -2
  314. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
  315. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +5 -0
  316. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  317. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +16 -4
  318. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
  319. package/ShadersWGSL/fluidRenderingParticleDiffuse.vertex.js +15 -3
  320. package/ShadersWGSL/fluidRenderingParticleDiffuse.vertex.js.map +1 -1
  321. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +15 -3
  322. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
  323. package/ShadersWGSL/gaussianSplattingVoxel.fragment.js +15 -9
  324. package/ShadersWGSL/gaussianSplattingVoxel.fragment.js.map +1 -1
  325. package/ShadersWGSL/iblCombineVoxelGrids.fragment.js +1 -1
  326. package/ShadersWGSL/iblCombineVoxelGrids.fragment.js.map +1 -1
  327. package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.d.ts +5 -0
  328. package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.js +14 -0
  329. package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.js.map +1 -0
  330. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js +24 -7
  331. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js.map +1 -1
  332. package/ShadersWGSL/iblVoxelGrid.fragment.js +26 -6
  333. package/ShadersWGSL/iblVoxelGrid.fragment.js.map +1 -1
  334. package/SmartAssets/smartAssetManager.pure.js +1 -1
  335. package/SmartAssets/smartAssetManager.pure.js.map +1 -1
  336. package/Sprites/thinSprite.js +1 -1
  337. package/Sprites/thinSprite.js.map +1 -1
  338. package/XR/features/Layers/WebXRCompositionLayer.d.ts +182 -12
  339. package/XR/features/Layers/WebXRCompositionLayer.js +272 -3
  340. package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
  341. package/XR/features/Layers/WebXRFallbackLayer.d.ts +84 -0
  342. package/XR/features/Layers/WebXRFallbackLayer.js +137 -0
  343. package/XR/features/Layers/WebXRFallbackLayer.js.map +1 -0
  344. package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +4 -4
  345. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -1
  346. package/XR/features/WebXRAnchorSystem.pure.d.ts +45 -0
  347. package/XR/features/WebXRAnchorSystem.pure.js +153 -13
  348. package/XR/features/WebXRAnchorSystem.pure.js.map +1 -1
  349. package/XR/features/WebXRControllerPointerSelection.pure.js +2 -1
  350. package/XR/features/WebXRControllerPointerSelection.pure.js.map +1 -1
  351. package/XR/features/WebXRControllerTeleportation.pure.js +2 -1
  352. package/XR/features/WebXRControllerTeleportation.pure.js.map +1 -1
  353. package/XR/features/WebXRDepthSensing.pure.d.ts +21 -0
  354. package/XR/features/WebXRDepthSensing.pure.js +42 -0
  355. package/XR/features/WebXRDepthSensing.pure.js.map +1 -1
  356. package/XR/features/WebXRHandTracking.pure.js +2 -0
  357. package/XR/features/WebXRHandTracking.pure.js.map +1 -1
  358. package/XR/features/WebXRLayers.pure.d.ts +183 -8
  359. package/XR/features/WebXRLayers.pure.js +531 -99
  360. package/XR/features/WebXRLayers.pure.js.map +1 -1
  361. package/XR/features/WebXRLayersFallback.d.ts +5 -0
  362. package/XR/features/WebXRLayersFallback.js +8 -0
  363. package/XR/features/WebXRLayersFallback.js.map +1 -0
  364. package/XR/features/WebXRLayersFallback.pure.d.ts +6 -0
  365. package/XR/features/WebXRLayersFallback.pure.js +44 -0
  366. package/XR/features/WebXRLayersFallback.pure.js.map +1 -0
  367. package/XR/features/WebXRLightEstimation.pure.d.ts +3 -4
  368. package/XR/features/WebXRLightEstimation.pure.js +22 -21
  369. package/XR/features/WebXRLightEstimation.pure.js.map +1 -1
  370. package/XR/features/WebXRMeshDetector.pure.d.ts +5 -0
  371. package/XR/features/WebXRMeshDetector.pure.js +1 -0
  372. package/XR/features/WebXRMeshDetector.pure.js.map +1 -1
  373. package/XR/features/WebXRNearInteraction.pure.js +3 -3
  374. package/XR/features/WebXRNearInteraction.pure.js.map +1 -1
  375. package/XR/features/WebXRPlaneDetector.pure.d.ts +9 -5
  376. package/XR/features/WebXRPlaneDetector.pure.js +12 -8
  377. package/XR/features/WebXRPlaneDetector.pure.js.map +1 -1
  378. package/XR/features/WebXRTrackedSources.d.ts +5 -0
  379. package/XR/features/WebXRTrackedSources.js +8 -0
  380. package/XR/features/WebXRTrackedSources.js.map +1 -0
  381. package/XR/features/WebXRTrackedSources.pure.d.ts +70 -0
  382. package/XR/features/WebXRTrackedSources.pure.js +153 -0
  383. package/XR/features/WebXRTrackedSources.pure.js.map +1 -0
  384. package/XR/features/index.d.ts +1 -0
  385. package/XR/features/index.js +1 -0
  386. package/XR/features/index.js.map +1 -1
  387. package/XR/features/pure.d.ts +2 -0
  388. package/XR/features/pure.js +2 -0
  389. package/XR/features/pure.js.map +1 -1
  390. package/XR/motionController/webXRAbstractMotionController.d.ts +53 -1
  391. package/XR/motionController/webXRAbstractMotionController.js +61 -0
  392. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  393. package/XR/webXRCamera.d.ts +2 -0
  394. package/XR/webXRCamera.js +8 -2
  395. package/XR/webXRCamera.js.map +1 -1
  396. package/XR/webXRDefaultExperience.js +8 -4
  397. package/XR/webXRDefaultExperience.js.map +1 -1
  398. package/XR/webXRExperienceHelper.js +86 -44
  399. package/XR/webXRExperienceHelper.js.map +1 -1
  400. package/XR/webXRFeaturesManager.d.ts +9 -0
  401. package/XR/webXRFeaturesManager.js +4 -0
  402. package/XR/webXRFeaturesManager.js.map +1 -1
  403. package/XR/webXRGraphicsBinding.d.ts +29 -0
  404. package/XR/webXRGraphicsBinding.js +40 -0
  405. package/XR/webXRGraphicsBinding.js.map +1 -1
  406. package/XR/webXRInputSource.js +1 -1
  407. package/XR/webXRInputSource.js.map +1 -1
  408. package/XR/webXRLayerWrapper.d.ts +26 -10
  409. package/XR/webXRLayerWrapper.js +19 -7
  410. package/XR/webXRLayerWrapper.js.map +1 -1
  411. package/XR/webXRRenderTargetTextureProvider.d.ts +4 -4
  412. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  413. package/XR/webXRSessionManager.d.ts +45 -0
  414. package/XR/webXRSessionManager.js +174 -29
  415. package/XR/webXRSessionManager.js.map +1 -1
  416. package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +2 -1
  417. package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -1
  418. package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +3 -3
  419. package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -1
  420. package/package.json +1 -1
  421. package/scene.pure.d.ts +5 -0
  422. package/scene.pure.js +25 -0
  423. package/scene.pure.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"defaultRenderingPipeline.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\n\nimport { type Nullable } from \"../../../types\";\nimport { serialize } from \"../../../Misc/decorators\";\nimport { SerializationHelper } from \"../../../Misc/decorators.serialization\";\nimport { Observable } from \"../../../Misc/observable.pure\";\nimport { type Observer } from \"../../../Misc/observable\";\nimport { type IAnimatable } from \"../../../Animations/animatable.interface\";\nimport { Logger } from \"../../../Misc/logger\";\nimport { type Camera } from \"../../../Cameras/camera.pure\";\nimport { type ImageProcessingConfiguration } from \"../../../Materials/imageProcessingConfiguration.pure\";\nimport { Texture } from \"../../../Materials/Textures/texture.pure\";\nimport { type AbstractEngine } from \"../../../Engines/abstractEngine.pure\";\nimport { Constants } from \"../../../Engines/constants\";\nimport { type IDisposable, type Scene } from \"../../../scene.pure\";\nimport { GlowLayer } from \"../../../Layers/glowLayer.pure\";\nimport { type PostProcess } from \"../../../PostProcesses/postProcess.pure\";\nimport { SharpenPostProcess } from \"../../../PostProcesses/sharpenPostProcess.pure\";\nimport { ImageProcessingPostProcess } from \"../../../PostProcesses/imageProcessingPostProcess\";\nimport { ChromaticAberrationPostProcess } from \"../../../PostProcesses/chromaticAberrationPostProcess.pure\";\nimport { GrainPostProcess } from \"../../../PostProcesses/grainPostProcess.pure\";\nimport { FxaaPostProcess } from \"../../../PostProcesses/fxaaPostProcess.pure\";\nimport { PostProcessRenderPipeline } from \"../../../PostProcesses/RenderPipeline/postProcessRenderPipeline\";\nimport { PostProcessRenderEffect } from \"../../../PostProcesses/RenderPipeline/postProcessRenderEffect\";\nimport { DepthOfFieldEffect, DepthOfFieldEffectBlurLevel } from \"../../../PostProcesses/depthOfFieldEffect\";\nimport { BloomEffect } from \"../../../PostProcesses/bloomEffect\";\nimport { EngineStore } from \"../../../Engines/engineStore\";\nimport { TimingTools } from \"core/Misc/timingTools\";\nimport { type Animation } from \"../../../Animations/animation.pure\";\nimport { RegisterClass } from \"../../../Misc/typeStore\";\nimport { RegisterDepthRendererSceneComponent } from \"../../../Rendering/depthRendererSceneComponent.pure\";\nimport { DepthRenderer } from \"../../../Rendering/depthRenderer.pure\";\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\n/**\n * The default rendering pipeline can be added to a scene to apply common post processing effects such as anti-aliasing or depth of field.\n * See https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/defaultRenderingPipeline\n */\nexport class DefaultRenderingPipeline extends PostProcessRenderPipeline implements IDisposable, IAnimatable {\n private _scene: Scene;\n private _camerasToBeAttached: Array<Camera> = [];\n /**\n * ID of the sharpen post process,\n */\n private readonly SharpenPostProcessId = \"SharpenPostProcessEffect\";\n /**\n * @ignore\n * ID of the image processing post process;\n */\n readonly ImageProcessingPostProcessId = \"ImageProcessingPostProcessEffect\";\n /**\n * @ignore\n * ID of the Fast Approximate Anti-Aliasing post process;\n */\n readonly FxaaPostProcessId = \"FxaaPostProcessEffect\";\n /**\n * ID of the chromatic aberration post process,\n */\n private readonly ChromaticAberrationPostProcessId = \"ChromaticAberrationPostProcessEffect\";\n /**\n * ID of the grain post process\n */\n private readonly GrainPostProcessId = \"GrainPostProcessEffect\";\n\n // Post-processes\n /**\n * Sharpen post process which will apply a sharpen convolution to enhance edges\n */\n public sharpen: SharpenPostProcess;\n private _sharpenEffect: PostProcessRenderEffect;\n private bloom: BloomEffect;\n /**\n * Depth of field effect, applies a blur based on how far away objects are from the focus distance.\n */\n public depthOfField: DepthOfFieldEffect;\n /**\n * The Fast Approximate Anti-Aliasing post process which attempts to remove aliasing from an image.\n */\n public fxaa: FxaaPostProcess;\n /**\n * Image post processing pass used to perform operations such as tone mapping or color grading.\n */\n public imageProcessing: ImageProcessingPostProcess;\n /**\n * Chromatic aberration post process which will shift rgb colors in the image\n */\n public chromaticAberration: ChromaticAberrationPostProcess;\n private _chromaticAberrationEffect: PostProcessRenderEffect;\n /**\n * Grain post process which add noise to the image\n */\n public grain: GrainPostProcess;\n private _grainEffect: PostProcessRenderEffect;\n /**\n * Glow post process which adds a glow to emissive areas of the image\n */\n private _glowLayer: Nullable<GlowLayer> = null;\n\n /**\n * Animations which can be used to tweak settings over a period of time\n */\n public animations: Animation[] = [];\n\n private _imageProcessingConfigurationObserver: Nullable<Observer<ImageProcessingConfiguration>> = null;\n // Values\n private _sharpenEnabled: boolean = false;\n private _bloomEnabled: boolean = false;\n private _depthOfFieldEnabled: boolean = false;\n private _depthOfFieldBlurLevel = DepthOfFieldEffectBlurLevel.Low;\n private _fxaaEnabled: boolean = false;\n private _imageProcessingEnabled: boolean = true;\n private _defaultPipelineTextureType: number;\n private _bloomScale: number = 0.5;\n private _chromaticAberrationEnabled: boolean = false;\n private _grainEnabled: boolean = false;\n\n private _buildAllowed = true;\n\n /**\n * Enable or disable automatic building of the pipeline when effects are enabled and disabled.\n * If false, you will have to manually call prepare() to update the pipeline.\n */\n public get automaticBuild() {\n return this._buildAllowed;\n }\n public set automaticBuild(value: boolean) {\n this._buildAllowed = value;\n }\n\n /**\n * This is triggered each time the pipeline has been built.\n */\n public onBuildObservable = new Observable<DefaultRenderingPipeline>();\n\n /**\n * Gets active scene\n */\n public get scene(): Scene {\n return this._scene;\n }\n\n /**\n * Enable or disable the sharpen process from the pipeline\n */\n public set sharpenEnabled(enabled: boolean) {\n if (this._sharpenEnabled === enabled) {\n return;\n }\n this._sharpenEnabled = enabled;\n\n this._buildPipeline();\n }\n\n @serialize()\n public get sharpenEnabled(): boolean {\n return this._sharpenEnabled;\n }\n\n private _resizeObserver: Nullable<Observer<AbstractEngine>> = null;\n private _hardwareScaleLevel = 1.0;\n private _bloomKernel: number = 64;\n /**\n * Specifies the size of the bloom blur kernel, relative to the final output size\n */\n @serialize()\n public get bloomKernel(): number {\n return this._bloomKernel;\n }\n public set bloomKernel(value: number) {\n this._bloomKernel = value;\n this.bloom.kernel = value / this._hardwareScaleLevel;\n }\n\n /**\n * Specifies the weight of the bloom in the final rendering\n */\n @serialize()\n private _bloomWeight: number = 0.15;\n /**\n * Specifies the luma threshold for the area that will be blurred by the bloom\n */\n @serialize()\n private _bloomThreshold: number = 0.9;\n\n @serialize()\n private _hdr: boolean;\n\n /**\n * The strength of the bloom.\n */\n public set bloomWeight(value: number) {\n if (this._bloomWeight === value) {\n return;\n }\n this.bloom.weight = value;\n\n this._bloomWeight = value;\n }\n\n @serialize()\n public get bloomWeight(): number {\n return this._bloomWeight;\n }\n\n /**\n * The luminance threshold to find bright areas of the image to bloom.\n */\n public set bloomThreshold(value: number) {\n if (this._bloomThreshold === value) {\n return;\n }\n this.bloom.threshold = value;\n this._bloomThreshold = value;\n }\n\n @serialize()\n public get bloomThreshold(): number {\n return this._bloomThreshold;\n }\n\n /**\n * The scale of the bloom, lower value will provide better performance.\n */\n public set bloomScale(value: number) {\n if (this._bloomScale === value) {\n return;\n }\n this._bloomScale = value;\n\n // recreate bloom and dispose old as this setting is not dynamic\n this._rebuildBloom();\n\n this._buildPipeline();\n }\n\n @serialize()\n public get bloomScale(): number {\n return this._bloomScale;\n }\n\n /**\n * Enable or disable the bloom from the pipeline\n */\n public set bloomEnabled(enabled: boolean) {\n if (this._bloomEnabled === enabled) {\n return;\n }\n this._bloomEnabled = enabled;\n\n this._buildPipeline();\n }\n\n @serialize()\n public get bloomEnabled(): boolean {\n return this._bloomEnabled;\n }\n\n private _rebuildBloom() {\n // recreate bloom and dispose old as this setting is not dynamic\n const oldBloom = this.bloom;\n this.bloom = new BloomEffect(this._scene, this.bloomScale, this._bloomWeight, this.bloomKernel / this._hardwareScaleLevel, this._defaultPipelineTextureType, false);\n this.bloom.threshold = oldBloom.threshold;\n for (let i = 0; i < this._cameras.length; i++) {\n oldBloom.disposeEffects(this._cameras[i]);\n }\n }\n\n /**\n * If the depth of field is enabled.\n */\n @serialize()\n public get depthOfFieldEnabled(): boolean {\n return this._depthOfFieldEnabled;\n }\n\n public set depthOfFieldEnabled(enabled: boolean) {\n if (this._depthOfFieldEnabled === enabled) {\n return;\n }\n this._depthOfFieldEnabled = enabled;\n\n this._buildPipeline();\n }\n\n /**\n * Blur level of the depth of field effect. (Higher blur will effect performance)\n */\n @serialize()\n public get depthOfFieldBlurLevel(): DepthOfFieldEffectBlurLevel {\n return this._depthOfFieldBlurLevel;\n }\n\n public set depthOfFieldBlurLevel(value: DepthOfFieldEffectBlurLevel) {\n if (this._depthOfFieldBlurLevel === value) {\n return;\n }\n this._depthOfFieldBlurLevel = value;\n\n // recreate dof and dispose old as this setting is not dynamic\n const oldDof = this.depthOfField;\n\n this.depthOfField = new DepthOfFieldEffect(this._scene, null, this._depthOfFieldBlurLevel, this._defaultPipelineTextureType, false);\n this.depthOfField.focalLength = oldDof.focalLength;\n this.depthOfField.focusDistance = oldDof.focusDistance;\n this.depthOfField.fStop = oldDof.fStop;\n this.depthOfField.lensSize = oldDof.lensSize;\n\n for (let i = 0; i < this._cameras.length; i++) {\n oldDof.disposeEffects(this._cameras[i]);\n }\n\n this._buildPipeline();\n }\n\n /**\n * If the anti aliasing is enabled.\n */\n public set fxaaEnabled(enabled: boolean) {\n if (this._fxaaEnabled === enabled) {\n return;\n }\n this._fxaaEnabled = enabled;\n\n this._buildPipeline();\n }\n\n @serialize()\n public get fxaaEnabled(): boolean {\n return this._fxaaEnabled;\n }\n\n private _samples = 1;\n /**\n * MSAA sample count, setting this to 4 will provide 4x anti aliasing. (default: 1)\n */\n public set samples(sampleCount: number) {\n if (this._samples === sampleCount) {\n return;\n }\n this._samples = sampleCount;\n\n this._buildPipeline();\n }\n\n @serialize()\n public get samples(): number {\n return this._samples;\n }\n\n /**\n * If image processing is enabled.\n */\n public set imageProcessingEnabled(enabled: boolean) {\n if (this._imageProcessingEnabled === enabled) {\n return;\n }\n\n this._scene.imageProcessingConfiguration.isEnabled = enabled;\n }\n\n @serialize()\n public get imageProcessingEnabled(): boolean {\n return this._imageProcessingEnabled;\n }\n\n /**\n * If glow layer is enabled. (Adds a glow effect to emmissive materials)\n */\n public set glowLayerEnabled(enabled: boolean) {\n if (enabled && !this._glowLayer) {\n this._glowLayer = new GlowLayer(\"\", this._scene);\n } else if (!enabled && this._glowLayer) {\n this._glowLayer.dispose();\n this._glowLayer = null;\n }\n }\n\n @serialize()\n public get glowLayerEnabled(): boolean {\n return this._glowLayer != null;\n }\n\n /**\n * Gets the glow layer (or null if not defined)\n */\n public get glowLayer() {\n return this._glowLayer;\n }\n\n /**\n * Enable or disable the chromaticAberration process from the pipeline\n */\n public set chromaticAberrationEnabled(enabled: boolean) {\n if (this._chromaticAberrationEnabled === enabled) {\n return;\n }\n this._chromaticAberrationEnabled = enabled;\n\n this._buildPipeline();\n }\n\n @serialize()\n public get chromaticAberrationEnabled(): boolean {\n return this._chromaticAberrationEnabled;\n }\n /**\n * Enable or disable the grain process from the pipeline\n */\n public set grainEnabled(enabled: boolean) {\n if (this._grainEnabled === enabled) {\n return;\n }\n this._grainEnabled = enabled;\n\n this._buildPipeline();\n }\n\n @serialize()\n public get grainEnabled(): boolean {\n return this._grainEnabled;\n }\n\n /**\n * Instantiates a DefaultRenderingPipeline.\n * @param name The rendering pipeline name (default: \"\")\n * @param hdr If high dynamic range textures should be used (default: true)\n * @param scene The scene linked to this pipeline (default: the last created scene)\n * @param cameras The array of cameras that the rendering pipeline will be attached to (default: scene.cameras)\n * @param automaticBuild If false, you will have to manually call prepare() to update the pipeline (default: true)\n */\n constructor(name = \"\", hdr = true, scene: Scene = EngineStore.LastCreatedScene!, cameras?: Camera[], automaticBuild = true) {\n RegisterDepthRendererSceneComponent(DepthRenderer);\n super(scene.getEngine(), name);\n this._cameras = cameras || scene.cameras;\n this._cameras = this._cameras.slice();\n this._camerasToBeAttached = this._cameras.slice();\n\n this._buildAllowed = automaticBuild;\n\n // Initialize\n this._scene = scene;\n const caps = this._scene.getEngine().getCaps();\n this._hdr = hdr && (caps.textureHalfFloatRender || caps.textureFloatRender);\n\n // Misc\n if (this._hdr) {\n if (caps.textureHalfFloatRender) {\n this._defaultPipelineTextureType = Constants.TEXTURETYPE_HALF_FLOAT;\n } else if (caps.textureFloatRender) {\n this._defaultPipelineTextureType = Constants.TEXTURETYPE_FLOAT;\n }\n } else {\n this._defaultPipelineTextureType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\n }\n\n // Attach\n scene.postProcessRenderPipelineManager.addPipeline(this);\n\n const engine = this._scene.getEngine();\n\n // Create post processes before hand so they can be modified before enabled.\n // Block compilation flag is set to true to avoid compilation prior to use, these will be updated on first use in build pipeline.\n this.sharpen = new SharpenPostProcess(\"sharpen\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType, true);\n this._sharpenEffect = new PostProcessRenderEffect(\n engine,\n this.SharpenPostProcessId,\n () => {\n return this.sharpen;\n },\n true\n );\n\n this.depthOfField = new DepthOfFieldEffect(this._scene, null, this._depthOfFieldBlurLevel, this._defaultPipelineTextureType, true);\n\n // To keep the bloom sizes consistent across different display densities, factor in the hardware scaling level.\n this._hardwareScaleLevel = engine.getHardwareScalingLevel();\n this._resizeObserver = engine.onResizeObservable.add(() => {\n this._hardwareScaleLevel = engine.getHardwareScalingLevel();\n this.bloomKernel = this._bloomKernel;\n });\n\n this.bloom = new BloomEffect(this._scene, this._bloomScale, this._bloomWeight, this.bloomKernel / this._hardwareScaleLevel, this._defaultPipelineTextureType, true);\n\n this.chromaticAberration = new ChromaticAberrationPostProcess(\n \"ChromaticAberration\",\n engine.getRenderWidth(),\n engine.getRenderHeight(),\n 1.0,\n null,\n Texture.BILINEAR_SAMPLINGMODE,\n engine,\n false,\n this._defaultPipelineTextureType,\n true\n );\n this._chromaticAberrationEffect = new PostProcessRenderEffect(\n engine,\n this.ChromaticAberrationPostProcessId,\n () => {\n return this.chromaticAberration;\n },\n true\n );\n\n this.grain = new GrainPostProcess(\"Grain\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType, true);\n this._grainEffect = new PostProcessRenderEffect(\n engine,\n this.GrainPostProcessId,\n () => {\n return this.grain;\n },\n true\n );\n\n let avoidReentrancyAtConstructionTime = true;\n\n this._imageProcessingConfigurationObserver = this._scene.imageProcessingConfiguration.onUpdateParameters.add(() => {\n this.bloom._downscale._exposure = this._scene.imageProcessingConfiguration.exposure;\n\n if (this.imageProcessingEnabled !== this._scene.imageProcessingConfiguration.isEnabled) {\n this._imageProcessingEnabled = this._scene.imageProcessingConfiguration.isEnabled;\n // Avoid re-entrant problems by deferring the call to _buildPipeline because the call to _buildPipeline\n // at the end of the constructor could end up triggering imageProcessingConfiguration.onUpdateParameters!\n // Note that the pipeline could have been disposed before the deferred call was executed, but in that case\n // _buildAllowed will have been set to false, preventing _buildPipeline from being executed.\n if (avoidReentrancyAtConstructionTime) {\n TimingTools.SetImmediate(() => {\n this._buildPipeline();\n });\n } else {\n this._buildPipeline();\n }\n }\n });\n\n this._buildPipeline();\n\n avoidReentrancyAtConstructionTime = false;\n }\n\n /**\n * Get the class name\n * @returns \"DefaultRenderingPipeline\"\n */\n public override getClassName(): string {\n return \"DefaultRenderingPipeline\";\n }\n\n /**\n * Force the compilation of the entire pipeline.\n */\n public prepare(): void {\n const previousState = this._buildAllowed;\n this._buildAllowed = true;\n this._buildPipeline();\n this._buildAllowed = previousState;\n }\n\n private _hasCleared = false;\n private _prevPostProcess: Nullable<PostProcess> = null;\n private _prevPrevPostProcess: Nullable<PostProcess> = null;\n\n private _setAutoClearAndTextureSharing(postProcess: PostProcess, skipTextureSharing = false) {\n if (this._hasCleared) {\n postProcess.autoClear = false;\n } else {\n postProcess.autoClear = true;\n this._scene.autoClear = false;\n this._hasCleared = true;\n }\n\n if (!skipTextureSharing) {\n if (this._prevPrevPostProcess) {\n postProcess.shareOutputWith(this._prevPrevPostProcess);\n } else {\n postProcess.useOwnOutput();\n }\n\n if (this._prevPostProcess) {\n this._prevPrevPostProcess = this._prevPostProcess;\n }\n this._prevPostProcess = postProcess;\n }\n }\n\n private _depthOfFieldSceneObserver: Nullable<Observer<Scene>> = null;\n private _activeCameraChangedObserver: Nullable<Observer<Scene>> = null;\n private _activeCamerasChangedObserver: Nullable<Observer<Scene>> = null;\n\n private _buildPipeline() {\n if (!this._buildAllowed) {\n return;\n }\n this._scene.autoClear = true;\n\n const engine = this._scene.getEngine();\n\n this._disposePostProcesses();\n if (this._cameras !== null) {\n this._scene.postProcessRenderPipelineManager.detachCamerasFromRenderPipeline(this._name, this._cameras);\n // get back cameras to be used to reattach pipeline\n this._cameras = this._camerasToBeAttached.slice();\n }\n this._reset();\n this._prevPostProcess = null;\n this._prevPrevPostProcess = null;\n this._hasCleared = false;\n\n if (this.depthOfFieldEnabled) {\n // Multi camera suport\n if (this._cameras.length > 1) {\n for (const camera of this._cameras) {\n const depthRenderer = this._scene.enableDepthRenderer(camera);\n depthRenderer.useOnlyInActiveCamera = true;\n }\n\n this._depthOfFieldSceneObserver = this._scene.onAfterRenderTargetsRenderObservable.add((scene) => {\n if (this._cameras.indexOf(scene.activeCamera!) > -1) {\n this.depthOfField.depthTexture = scene.enableDepthRenderer(scene.activeCamera).getDepthMap();\n }\n });\n } else {\n this._scene.onAfterRenderTargetsRenderObservable.remove(this._depthOfFieldSceneObserver);\n const depthRenderer = this._scene.enableDepthRenderer(this._cameras[0]);\n this.depthOfField.depthTexture = depthRenderer.getDepthMap();\n }\n\n if (!this.depthOfField._isReady()) {\n this.depthOfField._updateEffects();\n }\n this.addEffect(this.depthOfField);\n this._setAutoClearAndTextureSharing(this.depthOfField._effects[0], true);\n } else {\n this._scene.onAfterRenderTargetsRenderObservable.remove(this._depthOfFieldSceneObserver);\n }\n\n if (this.bloomEnabled) {\n if (!this.bloom._isReady()) {\n this.bloom._updateEffects();\n }\n this.addEffect(this.bloom);\n this._setAutoClearAndTextureSharing(this.bloom._effects[0], true);\n }\n\n if (this._imageProcessingEnabled) {\n this.imageProcessing = new ImageProcessingPostProcess(\n \"imageProcessing\",\n 1.0,\n null,\n Texture.BILINEAR_SAMPLINGMODE,\n engine,\n false,\n this._defaultPipelineTextureType,\n this.scene.imageProcessingConfiguration\n );\n if (this._hdr) {\n this.addEffect(\n new PostProcessRenderEffect(\n engine,\n this.ImageProcessingPostProcessId,\n () => {\n return this.imageProcessing;\n },\n true\n )\n );\n this._setAutoClearAndTextureSharing(this.imageProcessing);\n } else {\n this._scene.imageProcessingConfiguration.applyByPostProcess = false;\n }\n\n if (!this._cameras || this._cameras.length === 0) {\n this._scene.imageProcessingConfiguration.applyByPostProcess = false;\n }\n\n if (!this.imageProcessing.getEffect()) {\n this.imageProcessing._updateParameters();\n }\n }\n\n if (this.sharpenEnabled) {\n if (!this.sharpen.isReady()) {\n this.sharpen.updateEffect();\n }\n this.addEffect(this._sharpenEffect);\n this._setAutoClearAndTextureSharing(this.sharpen);\n }\n\n if (this.grainEnabled) {\n if (!this.grain.isReady()) {\n this.grain.updateEffect();\n }\n this.addEffect(this._grainEffect);\n this._setAutoClearAndTextureSharing(this.grain);\n }\n\n if (this.chromaticAberrationEnabled) {\n if (!this.chromaticAberration.isReady()) {\n this.chromaticAberration.updateEffect();\n }\n this.addEffect(this._chromaticAberrationEffect);\n this._setAutoClearAndTextureSharing(this.chromaticAberration);\n }\n\n if (this.fxaaEnabled) {\n this.fxaa = new FxaaPostProcess(\"fxaa\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType);\n this.addEffect(\n new PostProcessRenderEffect(\n engine,\n this.FxaaPostProcessId,\n () => {\n return this.fxaa;\n },\n true\n )\n );\n this._setAutoClearAndTextureSharing(this.fxaa, true);\n }\n\n if (this._cameras !== null) {\n this._scene.postProcessRenderPipelineManager.attachCamerasToRenderPipeline(this._name, this._cameras);\n }\n\n // In multicamera mode, the scene needs to autoclear in between cameras.\n if ((this._scene.activeCameras && this._scene.activeCameras.length > 1) || (this._scene.activeCamera && this._cameras.indexOf(this._scene.activeCamera) === -1)) {\n this._scene.autoClear = true;\n }\n // The active camera on the scene can be changed anytime\n if (!this._activeCameraChangedObserver) {\n this._activeCameraChangedObserver = this._scene.onActiveCameraChanged.add(() => {\n if (this._scene.activeCamera && this._cameras.indexOf(this._scene.activeCamera) === -1) {\n this._scene.autoClear = true;\n }\n });\n }\n if (!this._activeCamerasChangedObserver) {\n this._activeCamerasChangedObserver = this._scene.onActiveCamerasChanged.add(() => {\n if (this._scene.activeCameras && this._scene.activeCameras.length > 1) {\n this._scene.autoClear = true;\n }\n });\n }\n\n this._adaptPostProcessesToViewPort();\n\n if (!this._enableMSAAOnFirstPostProcess(this.samples) && this.samples > 1) {\n Logger.Warn(\"MSAA failed to enable, MSAA is only supported in browsers that support webGL >= 2.0\");\n }\n\n this.onBuildObservable.notifyObservers(this);\n }\n\n private _disposePostProcesses(disposeNonRecreated = false): void {\n for (let i = 0; i < this._cameras.length; i++) {\n const camera = this._cameras[i];\n\n if (this.imageProcessing) {\n this.imageProcessing.dispose(camera);\n }\n\n if (this.fxaa) {\n this.fxaa.dispose(camera);\n }\n\n // These are created in the constructor and should not be disposed on every pipeline change\n if (disposeNonRecreated) {\n if (this.sharpen) {\n this.sharpen.dispose(camera);\n }\n\n if (this.depthOfField) {\n this._scene.onAfterRenderTargetsRenderObservable.remove(this._depthOfFieldSceneObserver);\n this.depthOfField.disposeEffects(camera);\n }\n\n if (this.bloom) {\n this.bloom.disposeEffects(camera);\n }\n\n if (this.chromaticAberration) {\n this.chromaticAberration.dispose(camera);\n }\n\n if (this.grain) {\n this.grain.dispose(camera);\n }\n if (this._glowLayer) {\n this._glowLayer.dispose();\n }\n }\n }\n\n (<any>this.imageProcessing) = null;\n (<any>this.fxaa) = null;\n\n if (disposeNonRecreated) {\n (<any>this.sharpen) = null;\n (<any>this._sharpenEffect) = null;\n (<any>this.depthOfField) = null;\n (<any>this.bloom) = null;\n (<any>this.chromaticAberration) = null;\n (<any>this._chromaticAberrationEffect) = null;\n (<any>this.grain) = null;\n (<any>this._grainEffect) = null;\n this._glowLayer = null;\n }\n }\n\n /**\n * Adds a camera to the pipeline\n * @param camera the camera to be added\n */\n public addCamera(camera: Camera): void {\n this._camerasToBeAttached.push(camera);\n this._buildPipeline();\n }\n\n /**\n * Removes a camera from the pipeline\n * @param camera the camera to remove\n */\n public removeCamera(camera: Camera): void {\n const index = this._camerasToBeAttached.indexOf(camera);\n this._camerasToBeAttached.splice(index, 1);\n this._buildPipeline();\n }\n\n /**\n * Dispose of the pipeline and stop all post processes\n */\n public override dispose(): void {\n this._buildAllowed = false;\n this.onBuildObservable.clear();\n this._disposePostProcesses(true);\n this._scene.postProcessRenderPipelineManager.detachCamerasFromRenderPipeline(this._name, this._cameras);\n this._scene._postProcessRenderPipelineManager.removePipeline(this.name);\n this._scene.autoClear = true;\n if (this._resizeObserver) {\n this._scene.getEngine().onResizeObservable.remove(this._resizeObserver);\n this._resizeObserver = null;\n }\n\n this._scene.onActiveCameraChanged.remove(this._activeCameraChangedObserver);\n this._scene.onActiveCamerasChanged.remove(this._activeCamerasChangedObserver);\n\n this._scene.imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingConfigurationObserver);\n super.dispose();\n }\n\n /**\n * Serialize the rendering pipeline (Used when exporting)\n * @returns the serialized object\n */\n public serialize(): any {\n const serializationObject = SerializationHelper.Serialize(this);\n serializationObject.customType = \"DefaultRenderingPipeline\";\n\n return serializationObject;\n }\n}\n\nlet _Registered = false;\n\n/**\n * Parse the serialized pipeline\n * @param source Source pipeline.\n * @param scene The scene to load the pipeline to.\n * @param rootUrl The URL of the serialized pipeline.\n * @returns An instantiated pipeline from the serialized object.\n */\nexport function DefaultRenderingPipelineParse(source: any, scene: Scene, rootUrl: string): DefaultRenderingPipeline {\n return SerializationHelper.Parse(() => new DefaultRenderingPipeline(source._name, source._name._hdr, scene), source, scene, rootUrl);\n}\n\n/**\n * Register side effects for defaultRenderingPipeline.\n * Safe to call multiple times; only the first call has an effect.\n */\nexport function RegisterDefaultRenderingPipeline(): void {\n if (_Registered) {\n return;\n }\n _Registered = true;\n\n DefaultRenderingPipeline.Parse = DefaultRenderingPipelineParse;\n\n RegisterClass(\"BABYLON.DefaultRenderingPipeline\", DefaultRenderingPipeline);\n}\n"]}
1
+ {"version":3,"file":"defaultRenderingPipeline.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\n\nimport { type Nullable } from \"../../../types\";\nimport { serialize } from \"../../../Misc/decorators\";\nimport { SerializationHelper } from \"../../../Misc/decorators.serialization\";\nimport { Observable } from \"../../../Misc/observable.pure\";\nimport { type Observer } from \"../../../Misc/observable\";\nimport { type IAnimatable } from \"../../../Animations/animatable.interface\";\nimport { Logger } from \"../../../Misc/logger\";\nimport { type Camera } from \"../../../Cameras/camera.pure\";\nimport { type ImageProcessingConfiguration } from \"../../../Materials/imageProcessingConfiguration.pure\";\nimport { Texture } from \"../../../Materials/Textures/texture.pure\";\nimport { type AbstractEngine } from \"../../../Engines/abstractEngine.pure\";\nimport { Constants } from \"../../../Engines/constants\";\nimport { type IDisposable, type Scene } from \"../../../scene.pure\";\nimport { GlowLayer } from \"../../../Layers/glowLayer.pure\";\nimport { type PostProcess } from \"../../../PostProcesses/postProcess.pure\";\nimport { SharpenPostProcess } from \"../../../PostProcesses/sharpenPostProcess.pure\";\nimport { ImageProcessingPostProcess } from \"../../../PostProcesses/imageProcessingPostProcess\";\nimport { ChromaticAberrationPostProcess } from \"../../../PostProcesses/chromaticAberrationPostProcess.pure\";\nimport { GrainPostProcess } from \"../../../PostProcesses/grainPostProcess.pure\";\nimport { FxaaPostProcess } from \"../../../PostProcesses/fxaaPostProcess.pure\";\nimport { PostProcessRenderPipeline } from \"../../../PostProcesses/RenderPipeline/postProcessRenderPipeline\";\nimport { PostProcessRenderEffect } from \"../../../PostProcesses/RenderPipeline/postProcessRenderEffect\";\nimport { DepthOfFieldEffect, DepthOfFieldEffectBlurLevel } from \"../../../PostProcesses/depthOfFieldEffect\";\nimport { BloomEffect } from \"../../../PostProcesses/bloomEffect\";\nimport { EngineStore } from \"../../../Engines/engineStore\";\nimport { TimingTools } from \"core/Misc/timingTools\";\nimport { type Animation } from \"../../../Animations/animation.pure\";\nimport { RegisterClass } from \"../../../Misc/typeStore\";\nimport { RegisterDepthRendererSceneComponent } from \"../../../Rendering/depthRendererSceneComponent.pure\";\nimport { DepthRenderer } from \"../../../Rendering/depthRenderer.pure\";\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\n/**\n * The default rendering pipeline can be added to a scene to apply common post processing effects such as anti-aliasing or depth of field.\n * See https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/defaultRenderingPipeline\n */\nexport class DefaultRenderingPipeline extends PostProcessRenderPipeline implements IDisposable, IAnimatable {\n private _scene: Scene;\n private _camerasToBeAttached: Array<Camera> = [];\n /**\n * ID of the sharpen post process,\n */\n private readonly SharpenPostProcessId = \"SharpenPostProcessEffect\";\n /**\n * @ignore\n * ID of the image processing post process;\n */\n readonly ImageProcessingPostProcessId = \"ImageProcessingPostProcessEffect\";\n /**\n * @ignore\n * ID of the Fast Approximate Anti-Aliasing post process;\n */\n readonly FxaaPostProcessId = \"FxaaPostProcessEffect\";\n /**\n * ID of the chromatic aberration post process,\n */\n private readonly ChromaticAberrationPostProcessId = \"ChromaticAberrationPostProcessEffect\";\n /**\n * ID of the grain post process\n */\n private readonly GrainPostProcessId = \"GrainPostProcessEffect\";\n\n // Post-processes\n /**\n * Sharpen post process which will apply a sharpen convolution to enhance edges\n */\n public sharpen: SharpenPostProcess;\n private _sharpenEffect: PostProcessRenderEffect;\n private bloom: BloomEffect;\n /**\n * Depth of field effect, applies a blur based on how far away objects are from the focus distance.\n */\n public depthOfField: DepthOfFieldEffect;\n /**\n * The Fast Approximate Anti-Aliasing post process which attempts to remove aliasing from an image.\n */\n public fxaa: FxaaPostProcess;\n /**\n * Image post processing pass used to perform operations such as tone mapping or color grading.\n */\n public imageProcessing: ImageProcessingPostProcess;\n /**\n * Chromatic aberration post process which will shift rgb colors in the image\n */\n public chromaticAberration: ChromaticAberrationPostProcess;\n private _chromaticAberrationEffect: PostProcessRenderEffect;\n /**\n * Grain post process which add noise to the image\n */\n public grain: GrainPostProcess;\n private _grainEffect: PostProcessRenderEffect;\n /**\n * Glow post process which adds a glow to emissive areas of the image\n */\n private _glowLayer: Nullable<GlowLayer> = null;\n\n /**\n * Animations which can be used to tweak settings over a period of time\n */\n public animations: Animation[] = [];\n\n private _imageProcessingConfigurationObserver: Nullable<Observer<ImageProcessingConfiguration>> = null;\n // Values\n private _sharpenEnabled: boolean = false;\n private _bloomEnabled: boolean = false;\n private _depthOfFieldEnabled: boolean = false;\n private _depthOfFieldBlurLevel = DepthOfFieldEffectBlurLevel.Low;\n private _fxaaEnabled: boolean = false;\n private _imageProcessingEnabled: boolean = true;\n private _defaultPipelineTextureType: number;\n private _bloomScale: number = 0.5;\n private _chromaticAberrationEnabled: boolean = false;\n private _grainEnabled: boolean = false;\n\n private _buildAllowed = true;\n\n /**\n * Enable or disable automatic building of the pipeline when effects are enabled and disabled.\n * If false, you will have to manually call prepare() to update the pipeline.\n */\n public get automaticBuild() {\n return this._buildAllowed;\n }\n public set automaticBuild(value: boolean) {\n this._buildAllowed = value;\n }\n\n /**\n * This is triggered each time the pipeline has been built.\n */\n public onBuildObservable = new Observable<DefaultRenderingPipeline>();\n\n /**\n * Gets active scene\n */\n public get scene(): Scene {\n return this._scene;\n }\n\n /**\n * Enable or disable the sharpen process from the pipeline\n */\n public set sharpenEnabled(enabled: boolean) {\n if (this._sharpenEnabled === enabled) {\n return;\n }\n this._sharpenEnabled = enabled;\n\n this._buildPipeline();\n }\n\n @serialize()\n public get sharpenEnabled(): boolean {\n return this._sharpenEnabled;\n }\n\n private _resizeObserver: Nullable<Observer<AbstractEngine>> = null;\n private _hardwareScaleLevel = 1.0;\n private _bloomKernel: number = 64;\n /**\n * Specifies the size of the bloom blur kernel, relative to the final output size\n */\n @serialize()\n public get bloomKernel(): number {\n return this._bloomKernel;\n }\n public set bloomKernel(value: number) {\n this._bloomKernel = value;\n this.bloom.kernel = value / this._hardwareScaleLevel;\n }\n\n /**\n * Specifies the weight of the bloom in the final rendering\n */\n @serialize()\n private _bloomWeight: number = 0.15;\n /**\n * Specifies the luma threshold for the area that will be blurred by the bloom\n */\n @serialize()\n private _bloomThreshold: number = 0.9;\n\n @serialize()\n private _hdr: boolean;\n\n /**\n * The strength of the bloom.\n */\n public set bloomWeight(value: number) {\n if (this._bloomWeight === value) {\n return;\n }\n this.bloom.weight = value;\n\n this._bloomWeight = value;\n }\n\n @serialize()\n public get bloomWeight(): number {\n return this._bloomWeight;\n }\n\n /**\n * The luminance threshold to find bright areas of the image to bloom.\n */\n public set bloomThreshold(value: number) {\n if (this._bloomThreshold === value) {\n return;\n }\n this.bloom.threshold = value;\n this._bloomThreshold = value;\n }\n\n @serialize()\n public get bloomThreshold(): number {\n return this._bloomThreshold;\n }\n\n /**\n * The scale of the bloom, lower value will provide better performance.\n */\n public set bloomScale(value: number) {\n if (this._bloomScale === value) {\n return;\n }\n this._bloomScale = value;\n\n // recreate bloom and dispose old as this setting is not dynamic\n this._rebuildBloom();\n\n this._buildPipeline();\n }\n\n @serialize()\n public get bloomScale(): number {\n return this._bloomScale;\n }\n\n /**\n * Enable or disable the bloom from the pipeline\n */\n public set bloomEnabled(enabled: boolean) {\n if (this._bloomEnabled === enabled) {\n return;\n }\n this._bloomEnabled = enabled;\n\n this._buildPipeline();\n }\n\n @serialize()\n public get bloomEnabled(): boolean {\n return this._bloomEnabled;\n }\n\n private _rebuildBloom() {\n // recreate bloom and dispose old as this setting is not dynamic\n const oldBloom = this.bloom;\n this.bloom = new BloomEffect(this._scene, this.bloomScale, this._bloomWeight, this.bloomKernel / this._hardwareScaleLevel, this._defaultPipelineTextureType, false);\n this.bloom.threshold = oldBloom.threshold;\n for (let i = 0; i < this._cameras.length; i++) {\n oldBloom.disposeEffects(this._cameras[i]);\n }\n }\n\n /**\n * If the depth of field is enabled.\n */\n @serialize()\n public get depthOfFieldEnabled(): boolean {\n return this._depthOfFieldEnabled;\n }\n\n public set depthOfFieldEnabled(enabled: boolean) {\n if (this._depthOfFieldEnabled === enabled) {\n return;\n }\n this._depthOfFieldEnabled = enabled;\n\n this._buildPipeline();\n }\n\n /**\n * Blur level of the depth of field effect. (Higher blur will effect performance)\n */\n @serialize()\n public get depthOfFieldBlurLevel(): DepthOfFieldEffectBlurLevel {\n return this._depthOfFieldBlurLevel;\n }\n\n public set depthOfFieldBlurLevel(value: DepthOfFieldEffectBlurLevel) {\n if (this._depthOfFieldBlurLevel === value) {\n return;\n }\n this._depthOfFieldBlurLevel = value;\n\n // recreate dof and dispose old as this setting is not dynamic\n const oldDof = this.depthOfField;\n\n this.depthOfField = new DepthOfFieldEffect(this._scene, null, this._depthOfFieldBlurLevel, this._defaultPipelineTextureType, false);\n this.depthOfField.focalLength = oldDof.focalLength;\n this.depthOfField.focusDistance = oldDof.focusDistance;\n this.depthOfField.fStop = oldDof.fStop;\n this.depthOfField.lensSize = oldDof.lensSize;\n\n for (let i = 0; i < this._cameras.length; i++) {\n oldDof.disposeEffects(this._cameras[i]);\n }\n\n this._buildPipeline();\n }\n\n /**\n * If the anti aliasing is enabled.\n */\n public set fxaaEnabled(enabled: boolean) {\n if (this._fxaaEnabled === enabled) {\n return;\n }\n this._fxaaEnabled = enabled;\n\n this._buildPipeline();\n }\n\n @serialize()\n public get fxaaEnabled(): boolean {\n return this._fxaaEnabled;\n }\n\n private _samples = 1;\n /**\n * MSAA sample count, setting this to 4 will provide 4x anti aliasing. (default: 1)\n */\n public set samples(sampleCount: number) {\n if (this._samples === sampleCount) {\n return;\n }\n this._samples = sampleCount;\n\n this._buildPipeline();\n }\n\n @serialize()\n public get samples(): number {\n return this._samples;\n }\n\n /**\n * If image processing is enabled.\n */\n public set imageProcessingEnabled(enabled: boolean) {\n if (this._imageProcessingEnabled === enabled) {\n return;\n }\n\n this._scene.imageProcessingConfiguration.isEnabled = enabled;\n }\n\n @serialize()\n public get imageProcessingEnabled(): boolean {\n return this._imageProcessingEnabled;\n }\n\n /**\n * If glow layer is enabled. (Adds a glow effect to emmissive materials)\n */\n public set glowLayerEnabled(enabled: boolean) {\n if (enabled && !this._glowLayer) {\n this._glowLayer = new GlowLayer(\"\", this._scene);\n } else if (!enabled && this._glowLayer) {\n this._glowLayer.dispose();\n this._glowLayer = null;\n }\n }\n\n @serialize()\n public get glowLayerEnabled(): boolean {\n return this._glowLayer != null;\n }\n\n /**\n * Gets the glow layer (or null if not defined)\n */\n public get glowLayer() {\n return this._glowLayer;\n }\n\n /**\n * Enable or disable the chromaticAberration process from the pipeline\n */\n public set chromaticAberrationEnabled(enabled: boolean) {\n if (this._chromaticAberrationEnabled === enabled) {\n return;\n }\n this._chromaticAberrationEnabled = enabled;\n\n this._buildPipeline();\n }\n\n @serialize()\n public get chromaticAberrationEnabled(): boolean {\n return this._chromaticAberrationEnabled;\n }\n /**\n * Enable or disable the grain process from the pipeline\n */\n public set grainEnabled(enabled: boolean) {\n if (this._grainEnabled === enabled) {\n return;\n }\n this._grainEnabled = enabled;\n\n this._buildPipeline();\n }\n\n @serialize()\n public get grainEnabled(): boolean {\n return this._grainEnabled;\n }\n\n /**\n * Instantiates a DefaultRenderingPipeline.\n * @param name The rendering pipeline name (default: \"\")\n * @param hdr If high dynamic range textures should be used (default: true)\n * @param scene The scene linked to this pipeline (default: the last created scene)\n * @param cameras The array of cameras that the rendering pipeline will be attached to (default: scene.cameras)\n * @param automaticBuild If false, you will have to manually call prepare() to update the pipeline (default: true)\n */\n constructor(name = \"\", hdr = true, scene: Scene = EngineStore.LastCreatedScene!, cameras?: Camera[], automaticBuild = true) {\n RegisterDepthRendererSceneComponent(DepthRenderer);\n super(scene.getEngine(), name);\n this._cameras = cameras || scene.cameras;\n this._cameras = this._cameras.slice();\n this._camerasToBeAttached = this._cameras.slice();\n\n this._buildAllowed = automaticBuild;\n\n // Initialize\n this._scene = scene;\n const caps = this._scene.getEngine().getCaps();\n this._hdr = hdr && (caps.textureHalfFloatRender || caps.textureFloatRender);\n\n // Misc\n if (this._hdr) {\n if (caps.textureHalfFloatRender) {\n this._defaultPipelineTextureType = Constants.TEXTURETYPE_HALF_FLOAT;\n } else if (caps.textureFloatRender) {\n this._defaultPipelineTextureType = Constants.TEXTURETYPE_FLOAT;\n }\n } else {\n this._defaultPipelineTextureType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\n }\n\n // Attach\n scene.postProcessRenderPipelineManager.addPipeline(this);\n\n const engine = this._scene.getEngine();\n\n // Create post processes before hand so they can be modified before enabled.\n // Block compilation flag is set to true to avoid compilation prior to use, these will be updated on first use in build pipeline.\n this.sharpen = new SharpenPostProcess(\"sharpen\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType, true);\n this._sharpenEffect = new PostProcessRenderEffect(\n engine,\n this.SharpenPostProcessId,\n () => {\n return this.sharpen;\n },\n true\n );\n\n this.depthOfField = new DepthOfFieldEffect(this._scene, null, this._depthOfFieldBlurLevel, this._defaultPipelineTextureType, true);\n\n // To keep the bloom sizes consistent across different display densities, factor in the hardware scaling level.\n this._hardwareScaleLevel = engine.getHardwareScalingLevel();\n this._resizeObserver = engine.onResizeObservable.add(() => {\n this._hardwareScaleLevel = engine.getHardwareScalingLevel();\n this.bloomKernel = this._bloomKernel;\n });\n\n this.bloom = new BloomEffect(this._scene, this._bloomScale, this._bloomWeight, this.bloomKernel / this._hardwareScaleLevel, this._defaultPipelineTextureType, true);\n\n this.chromaticAberration = new ChromaticAberrationPostProcess(\n \"ChromaticAberration\",\n engine.getRenderWidth(),\n engine.getRenderHeight(),\n 1.0,\n null,\n Texture.BILINEAR_SAMPLINGMODE,\n engine,\n false,\n this._defaultPipelineTextureType,\n true\n );\n this._chromaticAberrationEffect = new PostProcessRenderEffect(\n engine,\n this.ChromaticAberrationPostProcessId,\n () => {\n return this.chromaticAberration;\n },\n true\n );\n\n this.grain = new GrainPostProcess(\"Grain\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType, true);\n this._grainEffect = new PostProcessRenderEffect(\n engine,\n this.GrainPostProcessId,\n () => {\n return this.grain;\n },\n true\n );\n\n let avoidReentrancyAtConstructionTime = true;\n\n this._imageProcessingConfigurationObserver = this._scene.imageProcessingConfiguration.onUpdateParameters.add(() => {\n this.bloom._downscale._exposure = this._scene.imageProcessingConfiguration.exposure;\n\n if (this.imageProcessingEnabled !== this._scene.imageProcessingConfiguration.isEnabled) {\n this._imageProcessingEnabled = this._scene.imageProcessingConfiguration.isEnabled;\n // Avoid re-entrant problems by deferring the call to _buildPipeline because the call to _buildPipeline\n // at the end of the constructor could end up triggering imageProcessingConfiguration.onUpdateParameters!\n // Note that the pipeline could have been disposed before the deferred call was executed, but in that case\n // _buildAllowed will have been set to false, preventing _buildPipeline from being executed.\n if (avoidReentrancyAtConstructionTime) {\n TimingTools.SetImmediate(() => {\n this._buildPipeline();\n });\n } else {\n this._buildPipeline();\n }\n }\n });\n\n this._buildPipeline();\n\n avoidReentrancyAtConstructionTime = false;\n }\n\n /**\n * Get the class name\n * @returns \"DefaultRenderingPipeline\"\n */\n public override getClassName(): string {\n return \"DefaultRenderingPipeline\";\n }\n\n /**\n * Force the compilation of the entire pipeline.\n */\n public prepare(): void {\n const previousState = this._buildAllowed;\n this._buildAllowed = true;\n this._buildPipeline();\n this._buildAllowed = previousState;\n }\n\n private _hasCleared = false;\n private _prevPostProcess: Nullable<PostProcess> = null;\n private _prevPrevPostProcess: Nullable<PostProcess> = null;\n\n private _setAutoClearAndTextureSharing(postProcess: PostProcess, skipTextureSharing = false) {\n if (this._hasCleared) {\n postProcess.autoClear = false;\n } else {\n postProcess.autoClear = true;\n this._scene.autoClear = false;\n this._hasCleared = true;\n }\n\n if (!skipTextureSharing) {\n if (this._prevPrevPostProcess) {\n postProcess.shareOutputWith(this._prevPrevPostProcess);\n } else {\n postProcess.useOwnOutput();\n }\n\n if (this._prevPostProcess) {\n this._prevPrevPostProcess = this._prevPostProcess;\n }\n this._prevPostProcess = postProcess;\n }\n }\n\n private _depthOfFieldSceneObserver: Nullable<Observer<Scene>> = null;\n private _activeCameraChangedObserver: Nullable<Observer<Scene>> = null;\n private _activeCamerasChangedObserver: Nullable<Observer<Scene>> = null;\n\n private _buildPipeline() {\n if (!this._buildAllowed) {\n return;\n }\n this._scene.autoClear = true;\n\n const engine = this._scene.getEngine();\n\n this._disposePostProcesses();\n if (this._cameras !== null) {\n this._scene.postProcessRenderPipelineManager.detachCamerasFromRenderPipeline(this._name, this._cameras);\n // get back cameras to be used to reattach pipeline\n this._cameras = this._camerasToBeAttached.slice();\n }\n this._reset();\n this._prevPostProcess = null;\n this._prevPrevPostProcess = null;\n this._hasCleared = false;\n\n if (this.depthOfFieldEnabled) {\n // Multi camera suport\n if (this._cameras.length > 1) {\n for (const camera of this._cameras) {\n const depthRenderer = this._scene.enableDepthRenderer(camera);\n depthRenderer.useOnlyInActiveCamera = true;\n }\n\n this._depthOfFieldSceneObserver = this._scene.onAfterRenderTargetsRenderObservable.add((scene) => {\n if (this._cameras.indexOf(scene.activeCamera!) > -1) {\n this.depthOfField.depthTexture = scene.enableDepthRenderer(scene.activeCamera).getDepthMap();\n }\n });\n } else {\n this._scene.onAfterRenderTargetsRenderObservable.remove(this._depthOfFieldSceneObserver);\n const depthRenderer = this._scene.enableDepthRenderer(this._cameras[0]);\n this.depthOfField.depthTexture = depthRenderer.getDepthMap();\n }\n\n if (!this.depthOfField._isReady()) {\n this.depthOfField._updateEffects();\n }\n this.addEffect(this.depthOfField);\n this._setAutoClearAndTextureSharing(this.depthOfField._effects[0], true);\n } else {\n this._scene.onAfterRenderTargetsRenderObservable.remove(this._depthOfFieldSceneObserver);\n }\n\n if (this.bloomEnabled) {\n if (!this.bloom._isReady()) {\n this.bloom._updateEffects();\n }\n this.addEffect(this.bloom);\n this._setAutoClearAndTextureSharing(this.bloom._effects[0], true);\n }\n\n if (this._imageProcessingEnabled) {\n this.imageProcessing = new ImageProcessingPostProcess(\n \"imageProcessing\",\n 1.0,\n null,\n Texture.BILINEAR_SAMPLINGMODE,\n engine,\n false,\n this._defaultPipelineTextureType,\n this.scene.imageProcessingConfiguration\n );\n if (this._hdr) {\n this.addEffect(\n new PostProcessRenderEffect(\n engine,\n this.ImageProcessingPostProcessId,\n () => {\n return this.imageProcessing;\n },\n true\n )\n );\n this._setAutoClearAndTextureSharing(this.imageProcessing);\n } else {\n this._scene.imageProcessingConfiguration.applyByPostProcess = false;\n }\n\n if (!this._cameras || this._cameras.length === 0) {\n this._scene.imageProcessingConfiguration.applyByPostProcess = false;\n }\n\n if (!this.imageProcessing.getEffect()) {\n this.imageProcessing._updateParameters();\n }\n }\n\n if (this.sharpenEnabled) {\n if (!this.sharpen.isReady()) {\n this.sharpen.updateEffect();\n }\n this.addEffect(this._sharpenEffect);\n this._setAutoClearAndTextureSharing(this.sharpen);\n }\n\n if (this.grainEnabled) {\n if (!this.grain.isReady()) {\n this.grain.updateEffect();\n }\n this.addEffect(this._grainEffect);\n this._setAutoClearAndTextureSharing(this.grain);\n }\n\n if (this.chromaticAberrationEnabled) {\n if (!this.chromaticAberration.isReady()) {\n this.chromaticAberration.updateEffect();\n }\n this.addEffect(this._chromaticAberrationEffect);\n this._setAutoClearAndTextureSharing(this.chromaticAberration);\n }\n\n if (this.fxaaEnabled) {\n this.fxaa = new FxaaPostProcess(\"fxaa\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType);\n this.addEffect(\n new PostProcessRenderEffect(\n engine,\n this.FxaaPostProcessId,\n () => {\n return this.fxaa;\n },\n true\n )\n );\n this._setAutoClearAndTextureSharing(this.fxaa, true);\n }\n\n if (this._cameras !== null) {\n this._scene.postProcessRenderPipelineManager.attachCamerasToRenderPipeline(this._name, this._cameras);\n }\n\n // In multicamera mode, the scene needs to autoclear in between cameras.\n if ((this._scene.activeCameras && this._scene.activeCameras.length > 1) || (this._scene.activeCamera && this._cameras.indexOf(this._scene.activeCamera) === -1)) {\n this._scene.autoClear = true;\n }\n // The active camera on the scene can be changed anytime\n if (!this._activeCameraChangedObserver) {\n this._activeCameraChangedObserver = this._scene.onActiveCameraChanged.add(() => {\n if (this._scene.activeCamera && this._cameras.indexOf(this._scene.activeCamera) === -1) {\n this._scene.autoClear = true;\n }\n });\n }\n if (!this._activeCamerasChangedObserver) {\n this._activeCamerasChangedObserver = this._scene.onActiveCamerasChanged.add(() => {\n if (this._scene.activeCameras && this._scene.activeCameras.length > 1) {\n this._scene.autoClear = true;\n }\n });\n }\n\n this._adaptPostProcessesToViewPort();\n\n if (!this._enableMSAAOnFirstPostProcess(this.samples) && this.samples > 1) {\n Logger.Warn(\"MSAA failed to enable, MSAA is only supported in browsers that support webGL >= 2.0\");\n }\n\n this.onBuildObservable.notifyObservers(this);\n }\n\n private _disposePostProcesses(disposeNonRecreated = false): void {\n for (let i = 0; i < this._cameras.length; i++) {\n const camera = this._cameras[i];\n\n if (this.imageProcessing) {\n this.imageProcessing.dispose(camera);\n }\n\n if (this.fxaa) {\n this.fxaa.dispose(camera);\n }\n\n // These are created in the constructor and should not be disposed on every pipeline change\n if (disposeNonRecreated) {\n if (this.sharpen) {\n this.sharpen.dispose(camera);\n }\n\n if (this.depthOfField) {\n this._scene.onAfterRenderTargetsRenderObservable.remove(this._depthOfFieldSceneObserver);\n this.depthOfField.disposeEffects(camera);\n }\n\n if (this.bloom) {\n this.bloom.disposeEffects(camera);\n }\n\n if (this.chromaticAberration) {\n this.chromaticAberration.dispose(camera);\n }\n\n if (this.grain) {\n this.grain.dispose(camera);\n }\n if (this._glowLayer) {\n this._glowLayer.dispose();\n }\n }\n }\n\n (<any>this.imageProcessing) = null;\n (<any>this.fxaa) = null;\n\n if (disposeNonRecreated) {\n (<any>this.sharpen) = null;\n (<any>this._sharpenEffect) = null;\n (<any>this.depthOfField) = null;\n (<any>this.bloom) = null;\n (<any>this.chromaticAberration) = null;\n (<any>this._chromaticAberrationEffect) = null;\n (<any>this.grain) = null;\n (<any>this._grainEffect) = null;\n this._glowLayer = null;\n }\n }\n\n /**\n * Adds a camera to the pipeline\n * @param camera the camera to be added\n */\n public addCamera(camera: Camera): void {\n this._camerasToBeAttached.push(camera);\n this._buildPipeline();\n }\n\n /**\n * Removes a camera from the pipeline\n * @param camera the camera to remove\n */\n public removeCamera(camera: Camera): void {\n const index = this._camerasToBeAttached.indexOf(camera);\n this._camerasToBeAttached.splice(index, 1);\n this._buildPipeline();\n }\n\n /**\n * Dispose of the pipeline and stop all post processes\n */\n public override dispose(): void {\n this._buildAllowed = false;\n this.onBuildObservable.clear();\n this._disposePostProcesses(true);\n this._scene.postProcessRenderPipelineManager.detachCamerasFromRenderPipeline(this._name, this._cameras);\n this._scene._postProcessRenderPipelineManager.removePipeline(this.name);\n this._scene.autoClear = true;\n if (this._resizeObserver) {\n this._scene.getEngine().onResizeObservable.remove(this._resizeObserver);\n this._resizeObserver = null;\n }\n\n this._scene.onActiveCameraChanged.remove(this._activeCameraChangedObserver);\n this._scene.onActiveCamerasChanged.remove(this._activeCamerasChangedObserver);\n\n this._scene.imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingConfigurationObserver);\n super.dispose();\n }\n\n /**\n * Serialize the rendering pipeline (Used when exporting)\n * @returns the serialized object\n */\n public serialize(): any {\n const serializationObject = SerializationHelper.Serialize(this);\n serializationObject.customType = \"DefaultRenderingPipeline\";\n\n return serializationObject;\n }\n}\n\nlet _Registered = false;\n\n/**\n * Parse the serialized pipeline\n * @param source Source pipeline.\n * @param scene The scene to load the pipeline to.\n * @param rootUrl The URL of the serialized pipeline.\n * @returns An instantiated pipeline from the serialized object.\n */\nexport function DefaultRenderingPipelineParse(source: any, scene: Scene, rootUrl: string): DefaultRenderingPipeline {\n return SerializationHelper.Parse(() => new DefaultRenderingPipeline(source._name, source._hdr, scene), source, scene, rootUrl);\n}\n\n/**\n * Register side effects for defaultRenderingPipeline.\n * Safe to call multiple times; only the first call has an effect.\n */\nexport function RegisterDefaultRenderingPipeline(): void {\n if (_Registered) {\n return;\n }\n _Registered = true;\n\n DefaultRenderingPipeline.Parse = DefaultRenderingPipelineParse;\n\n RegisterClass(\"BABYLON.DefaultRenderingPipeline\", DefaultRenderingPipeline);\n}\n"]}
@@ -81,7 +81,7 @@ export class DepthOfFieldEffect extends PostProcessRenderEffect {
81
81
  * @internal Internal post processes in depth of field effect
82
82
  */
83
83
  this._effects = [];
84
- this._thinDepthOfFieldEffect = new ThinDepthOfFieldEffect("Depth of Field", engine, blurLevel, false, blockCompilation);
84
+ this._thinDepthOfFieldEffect = new ThinDepthOfFieldEffect("Depth of Field", engine, blurLevel, depthNotNormalized, blockCompilation);
85
85
  // Use R-only formats if supported to store the circle of confusion values.
86
86
  // This should be more space and bandwidth efficient than using RGBA.
87
87
  const circleOfConfusionTextureFormat = engine.isWebGPU || engine.version > 1 ? 6 : 5;
@@ -1 +1 @@
1
- {"version":3,"file":"depthOfFieldEffect.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/depthOfFieldEffect.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../types\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { Texture } from \"../Materials/Textures/texture.pure\";\r\nimport { type RenderTargetTexture } from \"../Materials/Textures/renderTargetTexture\";\r\nimport { type PostProcess } from \"./postProcess\";\r\nimport { PostProcessRenderEffect } from \"../PostProcesses/RenderPipeline/postProcessRenderEffect\";\r\nimport { CircleOfConfusionPostProcess } from \"./circleOfConfusionPostProcess.pure\";\r\nimport { DepthOfFieldBlurPostProcess } from \"./depthOfFieldBlurPostProcess.pure\";\r\nimport { DepthOfFieldMergePostProcess } from \"./depthOfFieldMergePostProcess\";\r\nimport { type Scene } from \"../scene\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { type AbstractEngine } from \"core/Engines/abstractEngine\";\r\nimport { type ThinDepthOfFieldEffectBlurLevel, ThinDepthOfFieldEffect } from \"./thinDepthOfFieldEffect\";\r\n\r\n/**\r\n * Specifies the level of max blur that should be applied when using the depth of field effect\r\n */\r\nexport const enum DepthOfFieldEffectBlurLevel {\r\n /**\r\n * Subtle blur\r\n */\r\n Low,\r\n /**\r\n * Medium blur\r\n */\r\n Medium,\r\n /**\r\n * Large blur\r\n */\r\n High,\r\n}\r\n\r\n/**\r\n * The depth of field effect applies a blur to objects that are closer or further from where the camera is focusing.\r\n */\r\nexport class DepthOfFieldEffect extends PostProcessRenderEffect {\r\n private _circleOfConfusion: CircleOfConfusionPostProcess;\r\n /**\r\n * @internal Internal, blurs from high to low\r\n */\r\n public _depthOfFieldBlurX: Array<DepthOfFieldBlurPostProcess>;\r\n private _depthOfFieldBlurY: Array<DepthOfFieldBlurPostProcess>;\r\n private _dofMerge: Nullable<DepthOfFieldMergePostProcess>;\r\n\r\n /**\r\n * @internal Internal post processes in depth of field effect\r\n */\r\n public _effects: Array<PostProcess> = [];\r\n\r\n /**\r\n * The focal the length of the camera used in the effect in scene units/1000 (eg. millimeter)\r\n */\r\n public set focalLength(value: number) {\r\n this._thinDepthOfFieldEffect.focalLength = value;\r\n }\r\n public get focalLength() {\r\n return this._thinDepthOfFieldEffect.focalLength;\r\n }\r\n /**\r\n * F-Stop of the effect's camera. The diameter of the resulting aperture can be computed by lensSize/fStop. (default: 1.4)\r\n */\r\n public set fStop(value: number) {\r\n this._thinDepthOfFieldEffect.fStop = value;\r\n }\r\n public get fStop() {\r\n return this._thinDepthOfFieldEffect.fStop;\r\n }\r\n /**\r\n * Distance away from the camera to focus on in scene units/1000 (eg. millimeter). (default: 2000)\r\n */\r\n public set focusDistance(value: number) {\r\n this._thinDepthOfFieldEffect.focusDistance = value;\r\n }\r\n public get focusDistance() {\r\n return this._thinDepthOfFieldEffect.focusDistance;\r\n }\r\n /**\r\n * Max lens size in scene units/1000 (eg. millimeter). Standard cameras are 50mm. (default: 50) The diameter of the resulting aperture can be computed by lensSize/fStop.\r\n */\r\n public set lensSize(value: number) {\r\n this._thinDepthOfFieldEffect.lensSize = value;\r\n }\r\n public get lensSize() {\r\n return this._thinDepthOfFieldEffect.lensSize;\r\n }\r\n\r\n private _thinDepthOfFieldEffect: ThinDepthOfFieldEffect;\r\n\r\n /**\r\n * Creates a new instance DepthOfFieldEffect\r\n * @param sceneOrEngine The scene or engine the effect belongs to.\r\n * @param depthTexture The depth texture of the scene to compute the circle of confusion.This must be set in order for this to function but may be set after initialization if needed.\r\n * @param blurLevel\r\n * @param pipelineTextureType The type of texture to be used when performing the post processing.\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n * @param depthNotNormalized If the depth from the depth texture is already normalized or if the normalization should be done at runtime in the shader (default: false)\r\n */\r\n constructor(\r\n sceneOrEngine: Scene | AbstractEngine,\r\n depthTexture: Nullable<RenderTargetTexture>,\r\n blurLevel: DepthOfFieldEffectBlurLevel = DepthOfFieldEffectBlurLevel.Low,\r\n pipelineTextureType = 0,\r\n blockCompilation = false,\r\n depthNotNormalized = false\r\n ) {\r\n const engine = (sceneOrEngine as Scene)._renderForCamera ? (sceneOrEngine as Scene).getEngine() : (sceneOrEngine as AbstractEngine);\r\n super(\r\n engine,\r\n \"depth of field\",\r\n () => {\r\n return this._effects;\r\n },\r\n true\r\n );\r\n\r\n this._thinDepthOfFieldEffect = new ThinDepthOfFieldEffect(\"Depth of Field\", engine, blurLevel as unknown as ThinDepthOfFieldEffectBlurLevel, false, blockCompilation);\r\n\r\n // Use R-only formats if supported to store the circle of confusion values.\r\n // This should be more space and bandwidth efficient than using RGBA.\r\n const circleOfConfusionTextureFormat = engine.isWebGPU || engine.version > 1 ? Constants.TEXTUREFORMAT_RED : Constants.TEXTUREFORMAT_RGBA;\r\n\r\n // Circle of confusion value for each pixel is used to determine how much to blur that pixel\r\n this._circleOfConfusion = new CircleOfConfusionPostProcess(\r\n \"circleOfConfusion\",\r\n depthTexture,\r\n {\r\n size: 1,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n depthNotNormalized,\r\n effectWrapper: this._thinDepthOfFieldEffect._circleOfConfusion,\r\n },\r\n null\r\n );\r\n\r\n // Create a pyramid of blurred images (eg. fullSize 1/4 blur, half size 1/2 blur, quarter size 3/4 blur, eith size 4/4 blur)\r\n // Blur the image but do not blur on sharp far to near distance changes to avoid bleeding artifacts\r\n // See section 2.6.2 http://fileadmin.cs.lth.se/cs/education/edan35/lectures/12dof.pdf\r\n this._depthOfFieldBlurY = [];\r\n this._depthOfFieldBlurX = [];\r\n\r\n const blurCount = this._thinDepthOfFieldEffect._depthOfFieldBlurX.length;\r\n\r\n for (let i = 0; i < blurCount; i++) {\r\n const [thinBlurY, ratioY] = this._thinDepthOfFieldEffect._depthOfFieldBlurY[i];\r\n const blurY = new DepthOfFieldBlurPostProcess(\r\n \"vertical blur\",\r\n null,\r\n thinBlurY.direction,\r\n thinBlurY.kernel,\r\n {\r\n size: ratioY,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n textureFormat: i == 0 ? circleOfConfusionTextureFormat : Constants.TEXTUREFORMAT_RGBA,\r\n effectWrapper: thinBlurY,\r\n },\r\n null,\r\n this._circleOfConfusion,\r\n i == 0 ? this._circleOfConfusion : null\r\n );\r\n blurY.autoClear = false;\r\n\r\n const [thinBlurX, ratioX] = this._thinDepthOfFieldEffect._depthOfFieldBlurX[i];\r\n const blurX = new DepthOfFieldBlurPostProcess(\r\n \"horizontal blur\",\r\n null,\r\n thinBlurX.direction,\r\n thinBlurX.kernel,\r\n {\r\n size: ratioX,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: thinBlurX,\r\n },\r\n null,\r\n this._circleOfConfusion,\r\n null\r\n );\r\n blurX.autoClear = false;\r\n this._depthOfFieldBlurY.push(blurY);\r\n this._depthOfFieldBlurX.push(blurX);\r\n }\r\n\r\n // Set all post processes on the effect.\r\n this._effects = [this._circleOfConfusion];\r\n for (let i = 0; i < this._depthOfFieldBlurX.length; i++) {\r\n this._effects.push(this._depthOfFieldBlurY[i]);\r\n this._effects.push(this._depthOfFieldBlurX[i]);\r\n }\r\n\r\n // Merge blurred images with original image based on circleOfConfusion\r\n this._dofMerge = new DepthOfFieldMergePostProcess(\r\n \"dofMerge\",\r\n this._circleOfConfusion,\r\n this._circleOfConfusion,\r\n this._depthOfFieldBlurX,\r\n {\r\n size: this._thinDepthOfFieldEffect._depthOfFieldBlurX[blurCount - 1][1],\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinDepthOfFieldEffect._dofMerge,\r\n },\r\n null\r\n );\r\n this._dofMerge.autoClear = false;\r\n this._effects.push(this._dofMerge);\r\n }\r\n\r\n /**\r\n * Get the current class name of the current effect\r\n * @returns \"DepthOfFieldEffect\"\r\n */\r\n public getClassName(): string {\r\n return \"DepthOfFieldEffect\";\r\n }\r\n\r\n /**\r\n * Depth texture to be used to compute the circle of confusion. This must be set here or in the constructor in order for the post process to function.\r\n */\r\n public set depthTexture(value: RenderTargetTexture) {\r\n this._circleOfConfusion.depthTexture = value;\r\n }\r\n\r\n /**\r\n * Disposes each of the internal effects for a given camera.\r\n * @param camera The camera to dispose the effect on.\r\n */\r\n public disposeEffects(camera: Camera) {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].dispose(camera);\r\n }\r\n }\r\n\r\n /**\r\n * @internal Internal\r\n */\r\n public _updateEffects() {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].updateEffect();\r\n }\r\n }\r\n\r\n /**\r\n * Internal\r\n * @returns if all the contained post processes are ready.\r\n * @internal\r\n */\r\n public _isReady() {\r\n return this._thinDepthOfFieldEffect.isReady();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"depthOfFieldEffect.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/depthOfFieldEffect.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../types\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { Texture } from \"../Materials/Textures/texture.pure\";\r\nimport { type RenderTargetTexture } from \"../Materials/Textures/renderTargetTexture\";\r\nimport { type PostProcess } from \"./postProcess\";\r\nimport { PostProcessRenderEffect } from \"../PostProcesses/RenderPipeline/postProcessRenderEffect\";\r\nimport { CircleOfConfusionPostProcess } from \"./circleOfConfusionPostProcess.pure\";\r\nimport { DepthOfFieldBlurPostProcess } from \"./depthOfFieldBlurPostProcess.pure\";\r\nimport { DepthOfFieldMergePostProcess } from \"./depthOfFieldMergePostProcess\";\r\nimport { type Scene } from \"../scene\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { type AbstractEngine } from \"core/Engines/abstractEngine\";\r\nimport { type ThinDepthOfFieldEffectBlurLevel, ThinDepthOfFieldEffect } from \"./thinDepthOfFieldEffect\";\r\n\r\n/**\r\n * Specifies the level of max blur that should be applied when using the depth of field effect\r\n */\r\nexport const enum DepthOfFieldEffectBlurLevel {\r\n /**\r\n * Subtle blur\r\n */\r\n Low,\r\n /**\r\n * Medium blur\r\n */\r\n Medium,\r\n /**\r\n * Large blur\r\n */\r\n High,\r\n}\r\n\r\n/**\r\n * The depth of field effect applies a blur to objects that are closer or further from where the camera is focusing.\r\n */\r\nexport class DepthOfFieldEffect extends PostProcessRenderEffect {\r\n private _circleOfConfusion: CircleOfConfusionPostProcess;\r\n /**\r\n * @internal Internal, blurs from high to low\r\n */\r\n public _depthOfFieldBlurX: Array<DepthOfFieldBlurPostProcess>;\r\n private _depthOfFieldBlurY: Array<DepthOfFieldBlurPostProcess>;\r\n private _dofMerge: Nullable<DepthOfFieldMergePostProcess>;\r\n\r\n /**\r\n * @internal Internal post processes in depth of field effect\r\n */\r\n public _effects: Array<PostProcess> = [];\r\n\r\n /**\r\n * The focal the length of the camera used in the effect in scene units/1000 (eg. millimeter)\r\n */\r\n public set focalLength(value: number) {\r\n this._thinDepthOfFieldEffect.focalLength = value;\r\n }\r\n public get focalLength() {\r\n return this._thinDepthOfFieldEffect.focalLength;\r\n }\r\n /**\r\n * F-Stop of the effect's camera. The diameter of the resulting aperture can be computed by lensSize/fStop. (default: 1.4)\r\n */\r\n public set fStop(value: number) {\r\n this._thinDepthOfFieldEffect.fStop = value;\r\n }\r\n public get fStop() {\r\n return this._thinDepthOfFieldEffect.fStop;\r\n }\r\n /**\r\n * Distance away from the camera to focus on in scene units/1000 (eg. millimeter). (default: 2000)\r\n */\r\n public set focusDistance(value: number) {\r\n this._thinDepthOfFieldEffect.focusDistance = value;\r\n }\r\n public get focusDistance() {\r\n return this._thinDepthOfFieldEffect.focusDistance;\r\n }\r\n /**\r\n * Max lens size in scene units/1000 (eg. millimeter). Standard cameras are 50mm. (default: 50) The diameter of the resulting aperture can be computed by lensSize/fStop.\r\n */\r\n public set lensSize(value: number) {\r\n this._thinDepthOfFieldEffect.lensSize = value;\r\n }\r\n public get lensSize() {\r\n return this._thinDepthOfFieldEffect.lensSize;\r\n }\r\n\r\n private _thinDepthOfFieldEffect: ThinDepthOfFieldEffect;\r\n\r\n /**\r\n * Creates a new instance DepthOfFieldEffect\r\n * @param sceneOrEngine The scene or engine the effect belongs to.\r\n * @param depthTexture The depth texture of the scene to compute the circle of confusion.This must be set in order for this to function but may be set after initialization if needed.\r\n * @param blurLevel\r\n * @param pipelineTextureType The type of texture to be used when performing the post processing.\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n * @param depthNotNormalized If the depth from the depth texture is already normalized or if the normalization should be done at runtime in the shader (default: false)\r\n */\r\n constructor(\r\n sceneOrEngine: Scene | AbstractEngine,\r\n depthTexture: Nullable<RenderTargetTexture>,\r\n blurLevel: DepthOfFieldEffectBlurLevel = DepthOfFieldEffectBlurLevel.Low,\r\n pipelineTextureType = 0,\r\n blockCompilation = false,\r\n depthNotNormalized = false\r\n ) {\r\n const engine = (sceneOrEngine as Scene)._renderForCamera ? (sceneOrEngine as Scene).getEngine() : (sceneOrEngine as AbstractEngine);\r\n super(\r\n engine,\r\n \"depth of field\",\r\n () => {\r\n return this._effects;\r\n },\r\n true\r\n );\r\n\r\n this._thinDepthOfFieldEffect = new ThinDepthOfFieldEffect(\r\n \"Depth of Field\",\r\n engine,\r\n blurLevel as unknown as ThinDepthOfFieldEffectBlurLevel,\r\n depthNotNormalized,\r\n blockCompilation\r\n );\r\n\r\n // Use R-only formats if supported to store the circle of confusion values.\r\n // This should be more space and bandwidth efficient than using RGBA.\r\n const circleOfConfusionTextureFormat = engine.isWebGPU || engine.version > 1 ? Constants.TEXTUREFORMAT_RED : Constants.TEXTUREFORMAT_RGBA;\r\n\r\n // Circle of confusion value for each pixel is used to determine how much to blur that pixel\r\n this._circleOfConfusion = new CircleOfConfusionPostProcess(\r\n \"circleOfConfusion\",\r\n depthTexture,\r\n {\r\n size: 1,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n depthNotNormalized,\r\n effectWrapper: this._thinDepthOfFieldEffect._circleOfConfusion,\r\n },\r\n null\r\n );\r\n\r\n // Create a pyramid of blurred images (eg. fullSize 1/4 blur, half size 1/2 blur, quarter size 3/4 blur, eith size 4/4 blur)\r\n // Blur the image but do not blur on sharp far to near distance changes to avoid bleeding artifacts\r\n // See section 2.6.2 http://fileadmin.cs.lth.se/cs/education/edan35/lectures/12dof.pdf\r\n this._depthOfFieldBlurY = [];\r\n this._depthOfFieldBlurX = [];\r\n\r\n const blurCount = this._thinDepthOfFieldEffect._depthOfFieldBlurX.length;\r\n\r\n for (let i = 0; i < blurCount; i++) {\r\n const [thinBlurY, ratioY] = this._thinDepthOfFieldEffect._depthOfFieldBlurY[i];\r\n const blurY = new DepthOfFieldBlurPostProcess(\r\n \"vertical blur\",\r\n null,\r\n thinBlurY.direction,\r\n thinBlurY.kernel,\r\n {\r\n size: ratioY,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n textureFormat: i == 0 ? circleOfConfusionTextureFormat : Constants.TEXTUREFORMAT_RGBA,\r\n effectWrapper: thinBlurY,\r\n },\r\n null,\r\n this._circleOfConfusion,\r\n i == 0 ? this._circleOfConfusion : null\r\n );\r\n blurY.autoClear = false;\r\n\r\n const [thinBlurX, ratioX] = this._thinDepthOfFieldEffect._depthOfFieldBlurX[i];\r\n const blurX = new DepthOfFieldBlurPostProcess(\r\n \"horizontal blur\",\r\n null,\r\n thinBlurX.direction,\r\n thinBlurX.kernel,\r\n {\r\n size: ratioX,\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: thinBlurX,\r\n },\r\n null,\r\n this._circleOfConfusion,\r\n null\r\n );\r\n blurX.autoClear = false;\r\n this._depthOfFieldBlurY.push(blurY);\r\n this._depthOfFieldBlurX.push(blurX);\r\n }\r\n\r\n // Set all post processes on the effect.\r\n this._effects = [this._circleOfConfusion];\r\n for (let i = 0; i < this._depthOfFieldBlurX.length; i++) {\r\n this._effects.push(this._depthOfFieldBlurY[i]);\r\n this._effects.push(this._depthOfFieldBlurX[i]);\r\n }\r\n\r\n // Merge blurred images with original image based on circleOfConfusion\r\n this._dofMerge = new DepthOfFieldMergePostProcess(\r\n \"dofMerge\",\r\n this._circleOfConfusion,\r\n this._circleOfConfusion,\r\n this._depthOfFieldBlurX,\r\n {\r\n size: this._thinDepthOfFieldEffect._depthOfFieldBlurX[blurCount - 1][1],\r\n samplingMode: Texture.BILINEAR_SAMPLINGMODE,\r\n engine,\r\n textureType: pipelineTextureType,\r\n blockCompilation,\r\n effectWrapper: this._thinDepthOfFieldEffect._dofMerge,\r\n },\r\n null\r\n );\r\n this._dofMerge.autoClear = false;\r\n this._effects.push(this._dofMerge);\r\n }\r\n\r\n /**\r\n * Get the current class name of the current effect\r\n * @returns \"DepthOfFieldEffect\"\r\n */\r\n public getClassName(): string {\r\n return \"DepthOfFieldEffect\";\r\n }\r\n\r\n /**\r\n * Depth texture to be used to compute the circle of confusion. This must be set here or in the constructor in order for the post process to function.\r\n */\r\n public set depthTexture(value: RenderTargetTexture) {\r\n this._circleOfConfusion.depthTexture = value;\r\n }\r\n\r\n /**\r\n * Disposes each of the internal effects for a given camera.\r\n * @param camera The camera to dispose the effect on.\r\n */\r\n public disposeEffects(camera: Camera) {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].dispose(camera);\r\n }\r\n }\r\n\r\n /**\r\n * @internal Internal\r\n */\r\n public _updateEffects() {\r\n for (let effectIndex = 0; effectIndex < this._effects.length; effectIndex++) {\r\n this._effects[effectIndex].updateEffect();\r\n }\r\n }\r\n\r\n /**\r\n * Internal\r\n * @returns if all the contained post processes are ready.\r\n * @internal\r\n */\r\n public _isReady() {\r\n return this._thinDepthOfFieldEffect.isReady();\r\n }\r\n}\r\n"]}
@@ -7,6 +7,22 @@ import { type ImageProcessingConfiguration } from "../Materials/imageProcessingC
7
7
  import { type PostProcessOptions, PostProcess } from "./postProcess.pure.js";
8
8
  import { type AbstractEngine } from "../Engines/abstractEngine.js";
9
9
  import { ThinImageProcessingPostProcess } from "./thinImageProcessingPostProcess.js";
10
+ /**
11
+ * Options used to create an `ImageProcessingPostProcess`.
12
+ */
13
+ export type ImageProcessingPostProcessOptions = PostProcessOptions & {
14
+ /**
15
+ * The correlated color temperature, in Kelvin, of the illuminant to neutralize via white balance - see
16
+ * `ImageProcessingConfiguration.temperature`. Providing this (or `tint`) also enables white balance.
17
+ * Defaults to 6500 K.
18
+ */
19
+ temperature?: number;
20
+ /**
21
+ * The white balance tint offset to apply, on the green/magenta axis - see `ImageProcessingConfiguration.tint`.
22
+ * Providing this (or `temperature`) also enables white balance. Defaults to 0 (no tint offset).
23
+ */
24
+ tint?: number;
25
+ };
10
26
  /**
11
27
  * ImageProcessingPostProcess
12
28
  * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses#imageprocessing
@@ -91,6 +107,30 @@ export declare class ImageProcessingPostProcess extends PostProcess {
91
107
  * Sets contrast used in the effect.
92
108
  */
93
109
  set contrast(value: number);
110
+ /**
111
+ * Gets whether the white balance effect is enabled.
112
+ */
113
+ get whiteBalanceEnabled(): boolean;
114
+ /**
115
+ * Sets whether the white balance effect is enabled.
116
+ */
117
+ set whiteBalanceEnabled(value: boolean);
118
+ /**
119
+ * Gets the white balance correlated color temperature, in Kelvin, used in the effect.
120
+ */
121
+ get temperature(): number;
122
+ /**
123
+ * Sets the white balance correlated color temperature, in Kelvin, used in the effect.
124
+ */
125
+ set temperature(value: number);
126
+ /**
127
+ * Gets the white balance tint offset used in the effect.
128
+ */
129
+ get tint(): number;
130
+ /**
131
+ * Sets the white balance tint offset used in the effect.
132
+ */
133
+ set tint(value: number);
94
134
  /**
95
135
  * Gets Vignette stretch size.
96
136
  */
@@ -196,7 +236,7 @@ export declare class ImageProcessingPostProcess extends PostProcess {
196
236
  */
197
237
  set fromLinearSpace(value: boolean);
198
238
  protected _effectWrapper: ThinImageProcessingPostProcess;
199
- constructor(name: string, options: number | PostProcessOptions, camera?: Nullable<Camera>, samplingMode?: number, engine?: AbstractEngine, reusable?: boolean, textureType?: number, imageProcessingConfiguration?: ImageProcessingConfiguration);
239
+ constructor(name: string, options: number | ImageProcessingPostProcessOptions, camera?: Nullable<Camera>, samplingMode?: number, engine?: AbstractEngine, reusable?: boolean, textureType?: number, imageProcessingConfiguration?: ImageProcessingConfiguration);
200
240
  /**
201
241
  * "ImageProcessingPostProcess"
202
242
  * @returns "ImageProcessingPostProcess"
@@ -2,7 +2,7 @@ import { __esDecorate, __runInitializers } from "../tslib.es6.js";
2
2
  import { serialize } from "../Misc/decorators.js";
3
3
  import { PostProcess } from "./postProcess.pure.js";
4
4
 
5
- import { ThinImageProcessingPostProcess } from "./thinImageProcessingPostProcess.js";
5
+ import { _ApplyWhiteBalanceOptions, ThinImageProcessingPostProcess } from "./thinImageProcessingPostProcess.js";
6
6
  /**
7
7
  * ImageProcessingPostProcess
8
8
  * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses#imageprocessing
@@ -133,6 +133,42 @@ let ImageProcessingPostProcess = (() => {
133
133
  set contrast(value) {
134
134
  this.imageProcessingConfiguration.contrast = value;
135
135
  }
136
+ /**
137
+ * Gets whether the white balance effect is enabled.
138
+ */
139
+ get whiteBalanceEnabled() {
140
+ return this.imageProcessingConfiguration.whiteBalanceEnabled;
141
+ }
142
+ /**
143
+ * Sets whether the white balance effect is enabled.
144
+ */
145
+ set whiteBalanceEnabled(value) {
146
+ this.imageProcessingConfiguration.whiteBalanceEnabled = value;
147
+ }
148
+ /**
149
+ * Gets the white balance correlated color temperature, in Kelvin, used in the effect.
150
+ */
151
+ get temperature() {
152
+ return this.imageProcessingConfiguration.temperature;
153
+ }
154
+ /**
155
+ * Sets the white balance correlated color temperature, in Kelvin, used in the effect.
156
+ */
157
+ set temperature(value) {
158
+ this.imageProcessingConfiguration.temperature = value;
159
+ }
160
+ /**
161
+ * Gets the white balance tint offset used in the effect.
162
+ */
163
+ get tint() {
164
+ return this.imageProcessingConfiguration.tint;
165
+ }
166
+ /**
167
+ * Sets the white balance tint offset used in the effect.
168
+ */
169
+ set tint(value) {
170
+ this.imageProcessingConfiguration.tint = value;
171
+ }
136
172
  /**
137
173
  * Gets Vignette stretch size.
138
174
  */
@@ -307,6 +343,10 @@ let ImageProcessingPostProcess = (() => {
307
343
  ...localOptions,
308
344
  });
309
345
  __runInitializers(this, _instanceExtraInitializers);
346
+ // Applied here (not just inside ThinImageProcessingPostProcess's own constructor) so that `temperature`/
347
+ // `tint` are honored even when a caller supplies their own pre-built `effectWrapper`, in which case the
348
+ // thin wrapper above is never constructed and its own application of these options never runs.
349
+ _ApplyWhiteBalanceOptions(this.imageProcessingConfiguration, options);
310
350
  this.onApply = () => {
311
351
  this._effectWrapper.overrideAspectRatio = this.aspectRatio;
312
352
  };
@@ -1 +1 @@
1
- {"version":3,"file":"imageProcessingPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/imageProcessingPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type Nullable } from \"../types\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { type Color4 } from \"../Maths/math.color\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { type BaseTexture } from \"../Materials/Textures/baseTexture\";\r\nimport { type ColorCurves } from \"../Materials/colorCurves\";\r\nimport { type ImageProcessingConfiguration } from \"../Materials/imageProcessingConfiguration\";\r\nimport { type PostProcessOptions, PostProcess } from \"./postProcess.pure\";\r\nimport { type AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { ThinImageProcessingPostProcess } from \"./thinImageProcessingPostProcess\";\r\n\r\n/**\r\n * ImageProcessingPostProcess\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses#imageprocessing\r\n */\r\nexport class ImageProcessingPostProcess extends PostProcess {\r\n protected get _imageProcessingConfiguration(): ImageProcessingConfiguration {\r\n return this._effectWrapper.imageProcessingConfiguration;\r\n }\r\n\r\n /**\r\n * Gets the image processing configuration used either in this material.\r\n */\r\n public get imageProcessingConfiguration(): ImageProcessingConfiguration {\r\n return this._effectWrapper.imageProcessingConfiguration;\r\n }\r\n\r\n /**\r\n * Sets the Default image processing configuration used either in the this material.\r\n *\r\n * If sets to null, the scene one is in use.\r\n */\r\n public set imageProcessingConfiguration(value: ImageProcessingConfiguration) {\r\n this._effectWrapper.imageProcessingConfiguration = value;\r\n }\r\n\r\n /**\r\n * If the post process is supported.\r\n */\r\n public override get isSupported(): boolean {\r\n const effect = this.getEffect();\r\n return !effect || effect.isSupported;\r\n }\r\n\r\n /**\r\n * Gets Color curves setup used in the effect if colorCurvesEnabled is set to true .\r\n */\r\n public get colorCurves(): Nullable<ColorCurves> {\r\n return this.imageProcessingConfiguration.colorCurves;\r\n }\r\n /**\r\n * Sets Color curves setup used in the effect if colorCurvesEnabled is set to true .\r\n */\r\n public set colorCurves(value: Nullable<ColorCurves>) {\r\n this.imageProcessingConfiguration.colorCurves = value;\r\n }\r\n\r\n /**\r\n * Gets whether the color curves effect is enabled.\r\n */\r\n public get colorCurvesEnabled(): boolean {\r\n return this.imageProcessingConfiguration.colorCurvesEnabled;\r\n }\r\n /**\r\n * Sets whether the color curves effect is enabled.\r\n */\r\n public set colorCurvesEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.colorCurvesEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets Color grading LUT texture used in the effect if colorGradingEnabled is set to true.\r\n */\r\n public get colorGradingTexture(): Nullable<BaseTexture> {\r\n return this.imageProcessingConfiguration.colorGradingTexture;\r\n }\r\n /**\r\n * Sets Color grading LUT texture used in the effect if colorGradingEnabled is set to true.\r\n */\r\n public set colorGradingTexture(value: Nullable<BaseTexture>) {\r\n this.imageProcessingConfiguration.colorGradingTexture = value;\r\n }\r\n\r\n /**\r\n * Gets whether the color grading effect is enabled.\r\n */\r\n public get colorGradingEnabled(): boolean {\r\n return this.imageProcessingConfiguration.colorGradingEnabled;\r\n }\r\n /**\r\n * Gets whether the color grading effect is enabled.\r\n */\r\n public set colorGradingEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.colorGradingEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets exposure used in the effect.\r\n */\r\n public get exposure(): number {\r\n return this.imageProcessingConfiguration.exposure;\r\n }\r\n /**\r\n * Sets exposure used in the effect.\r\n */\r\n public set exposure(value: number) {\r\n this.imageProcessingConfiguration.exposure = value;\r\n }\r\n\r\n /**\r\n * Gets whether tonemapping is enabled or not.\r\n */\r\n public get toneMappingEnabled(): boolean {\r\n return this._imageProcessingConfiguration.toneMappingEnabled;\r\n }\r\n /**\r\n * Sets whether tonemapping is enabled or not\r\n */\r\n public set toneMappingEnabled(value: boolean) {\r\n this._imageProcessingConfiguration.toneMappingEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets the type of tone mapping effect.\r\n */\r\n public get toneMappingType(): number {\r\n return this._imageProcessingConfiguration.toneMappingType;\r\n }\r\n /**\r\n * Sets the type of tone mapping effect.\r\n */\r\n public set toneMappingType(value: number) {\r\n this._imageProcessingConfiguration.toneMappingType = value;\r\n }\r\n\r\n /**\r\n * Gets contrast used in the effect.\r\n */\r\n public get contrast(): number {\r\n return this.imageProcessingConfiguration.contrast;\r\n }\r\n /**\r\n * Sets contrast used in the effect.\r\n */\r\n public set contrast(value: number) {\r\n this.imageProcessingConfiguration.contrast = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette stretch size.\r\n */\r\n public get vignetteStretch(): number {\r\n return this.imageProcessingConfiguration.vignetteStretch;\r\n }\r\n /**\r\n * Sets Vignette stretch size.\r\n */\r\n public set vignetteStretch(value: number) {\r\n this.imageProcessingConfiguration.vignetteStretch = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette center X Offset.\r\n * @deprecated use vignetteCenterX instead\r\n */\r\n public get vignetteCentreX(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterX;\r\n }\r\n /**\r\n * Sets Vignette center X Offset.\r\n * @deprecated use vignetteCenterX instead\r\n */\r\n public set vignetteCentreX(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterX = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette center Y Offset.\r\n * @deprecated use vignetteCenterY instead\r\n */\r\n public get vignetteCentreY(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterY;\r\n }\r\n /**\r\n * Sets Vignette center Y Offset.\r\n * @deprecated use vignetteCenterY instead\r\n */\r\n public set vignetteCentreY(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterY = value;\r\n }\r\n\r\n /**\r\n * Vignette center Y Offset.\r\n */\r\n public get vignetteCenterY(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterY;\r\n }\r\n public set vignetteCenterY(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterY = value;\r\n }\r\n\r\n /**\r\n * Vignette center X Offset.\r\n */\r\n public get vignetteCenterX(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterX;\r\n }\r\n public set vignetteCenterX(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterX = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette weight or intensity of the vignette effect.\r\n */\r\n public get vignetteWeight(): number {\r\n return this.imageProcessingConfiguration.vignetteWeight;\r\n }\r\n /**\r\n * Sets Vignette weight or intensity of the vignette effect.\r\n */\r\n public set vignetteWeight(value: number) {\r\n this.imageProcessingConfiguration.vignetteWeight = value;\r\n }\r\n\r\n /**\r\n * Gets Color of the vignette applied on the screen through the chosen blend mode (vignetteBlendMode)\r\n * if vignetteEnabled is set to true.\r\n */\r\n public get vignetteColor(): Color4 {\r\n return this.imageProcessingConfiguration.vignetteColor;\r\n }\r\n /**\r\n * Sets Color of the vignette applied on the screen through the chosen blend mode (vignetteBlendMode)\r\n * if vignetteEnabled is set to true.\r\n */\r\n public set vignetteColor(value: Color4) {\r\n this.imageProcessingConfiguration.vignetteColor = value;\r\n }\r\n\r\n /**\r\n * Gets Camera field of view used by the Vignette effect.\r\n */\r\n public get vignetteCameraFov(): number {\r\n return this.imageProcessingConfiguration.vignetteCameraFov;\r\n }\r\n /**\r\n * Sets Camera field of view used by the Vignette effect.\r\n */\r\n public set vignetteCameraFov(value: number) {\r\n this.imageProcessingConfiguration.vignetteCameraFov = value;\r\n }\r\n\r\n /**\r\n * Gets the vignette blend mode allowing different kind of effect.\r\n */\r\n public get vignetteBlendMode(): number {\r\n return this.imageProcessingConfiguration.vignetteBlendMode;\r\n }\r\n /**\r\n * Sets the vignette blend mode allowing different kind of effect.\r\n */\r\n public set vignetteBlendMode(value: number) {\r\n this.imageProcessingConfiguration.vignetteBlendMode = value;\r\n }\r\n\r\n /**\r\n * Gets whether the vignette effect is enabled.\r\n */\r\n public get vignetteEnabled(): boolean {\r\n return this.imageProcessingConfiguration.vignetteEnabled;\r\n }\r\n /**\r\n * Sets whether the vignette effect is enabled.\r\n */\r\n public set vignetteEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.vignetteEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets intensity of the dithering effect.\r\n */\r\n public get ditheringIntensity(): number {\r\n return this.imageProcessingConfiguration.ditheringIntensity;\r\n }\r\n /**\r\n * Sets intensity of the dithering effect.\r\n */\r\n public set ditheringIntensity(value: number) {\r\n this.imageProcessingConfiguration.ditheringIntensity = value;\r\n }\r\n\r\n /**\r\n * Gets whether the dithering effect is enabled.\r\n */\r\n public get ditheringEnabled(): boolean {\r\n return this.imageProcessingConfiguration.ditheringEnabled;\r\n }\r\n /**\r\n * Sets whether the dithering effect is enabled.\r\n */\r\n public set ditheringEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.ditheringEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets whether the input of the processing is in Gamma or Linear Space.\r\n */\r\n @serialize()\r\n public get fromLinearSpace(): boolean {\r\n return this._effectWrapper.fromLinearSpace;\r\n }\r\n /**\r\n * Sets whether the input of the processing is in Gamma or Linear Space.\r\n */\r\n public set fromLinearSpace(value: boolean) {\r\n this._effectWrapper.fromLinearSpace = value;\r\n }\r\n\r\n declare protected _effectWrapper: ThinImageProcessingPostProcess;\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_BYTE,\r\n imageProcessingConfiguration?: ImageProcessingConfiguration\r\n ) {\r\n const localOptions = {\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 imageProcessingConfiguration,\r\n scene: camera?.getScene(),\r\n ...(options as PostProcessOptions),\r\n blockCompilation: true,\r\n };\r\n\r\n super(name, ThinImageProcessingPostProcess.FragmentUrl, {\r\n effectWrapper: typeof options === \"number\" || !options.effectWrapper ? new ThinImageProcessingPostProcess(name, engine, localOptions) : undefined,\r\n ...localOptions,\r\n });\r\n\r\n this.onApply = () => {\r\n this._effectWrapper.overrideAspectRatio = this.aspectRatio;\r\n };\r\n }\r\n\r\n /**\r\n * \"ImageProcessingPostProcess\"\r\n * @returns \"ImageProcessingPostProcess\"\r\n */\r\n public override getClassName(): string {\r\n return \"ImageProcessingPostProcess\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _updateParameters(): void {\r\n this._effectWrapper._updateParameters();\r\n }\r\n public override dispose(camera?: Camera): void {\r\n super.dispose(camera);\r\n\r\n if (this._imageProcessingConfiguration) {\r\n this.imageProcessingConfiguration.applyByPostProcess = false;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"imageProcessingPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/imageProcessingPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type Nullable } from \"../types\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { type Color4 } from \"../Maths/math.color\";\r\nimport { type Camera } from \"../Cameras/camera\";\r\nimport { type BaseTexture } from \"../Materials/Textures/baseTexture\";\r\nimport { type ColorCurves } from \"../Materials/colorCurves\";\r\nimport { type ImageProcessingConfiguration } from \"../Materials/imageProcessingConfiguration\";\r\nimport { type PostProcessOptions, PostProcess } from \"./postProcess.pure\";\r\nimport { type AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { _ApplyWhiteBalanceOptions, ThinImageProcessingPostProcess } from \"./thinImageProcessingPostProcess\";\r\n\r\n/**\r\n * Options used to create an `ImageProcessingPostProcess`.\r\n */\r\nexport type ImageProcessingPostProcessOptions = PostProcessOptions & {\r\n /**\r\n * The correlated color temperature, in Kelvin, of the illuminant to neutralize via white balance - see\r\n * `ImageProcessingConfiguration.temperature`. Providing this (or `tint`) also enables white balance.\r\n * Defaults to 6500 K.\r\n */\r\n temperature?: number;\r\n\r\n /**\r\n * The white balance tint offset to apply, on the green/magenta axis - see `ImageProcessingConfiguration.tint`.\r\n * Providing this (or `temperature`) also enables white balance. Defaults to 0 (no tint offset).\r\n */\r\n tint?: number;\r\n};\r\n\r\n/**\r\n * ImageProcessingPostProcess\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses#imageprocessing\r\n */\r\nexport class ImageProcessingPostProcess extends PostProcess {\r\n protected get _imageProcessingConfiguration(): ImageProcessingConfiguration {\r\n return this._effectWrapper.imageProcessingConfiguration;\r\n }\r\n\r\n /**\r\n * Gets the image processing configuration used either in this material.\r\n */\r\n public get imageProcessingConfiguration(): ImageProcessingConfiguration {\r\n return this._effectWrapper.imageProcessingConfiguration;\r\n }\r\n\r\n /**\r\n * Sets the Default image processing configuration used either in the this material.\r\n *\r\n * If sets to null, the scene one is in use.\r\n */\r\n public set imageProcessingConfiguration(value: ImageProcessingConfiguration) {\r\n this._effectWrapper.imageProcessingConfiguration = value;\r\n }\r\n\r\n /**\r\n * If the post process is supported.\r\n */\r\n public override get isSupported(): boolean {\r\n const effect = this.getEffect();\r\n return !effect || effect.isSupported;\r\n }\r\n\r\n /**\r\n * Gets Color curves setup used in the effect if colorCurvesEnabled is set to true .\r\n */\r\n public get colorCurves(): Nullable<ColorCurves> {\r\n return this.imageProcessingConfiguration.colorCurves;\r\n }\r\n /**\r\n * Sets Color curves setup used in the effect if colorCurvesEnabled is set to true .\r\n */\r\n public set colorCurves(value: Nullable<ColorCurves>) {\r\n this.imageProcessingConfiguration.colorCurves = value;\r\n }\r\n\r\n /**\r\n * Gets whether the color curves effect is enabled.\r\n */\r\n public get colorCurvesEnabled(): boolean {\r\n return this.imageProcessingConfiguration.colorCurvesEnabled;\r\n }\r\n /**\r\n * Sets whether the color curves effect is enabled.\r\n */\r\n public set colorCurvesEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.colorCurvesEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets Color grading LUT texture used in the effect if colorGradingEnabled is set to true.\r\n */\r\n public get colorGradingTexture(): Nullable<BaseTexture> {\r\n return this.imageProcessingConfiguration.colorGradingTexture;\r\n }\r\n /**\r\n * Sets Color grading LUT texture used in the effect if colorGradingEnabled is set to true.\r\n */\r\n public set colorGradingTexture(value: Nullable<BaseTexture>) {\r\n this.imageProcessingConfiguration.colorGradingTexture = value;\r\n }\r\n\r\n /**\r\n * Gets whether the color grading effect is enabled.\r\n */\r\n public get colorGradingEnabled(): boolean {\r\n return this.imageProcessingConfiguration.colorGradingEnabled;\r\n }\r\n /**\r\n * Gets whether the color grading effect is enabled.\r\n */\r\n public set colorGradingEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.colorGradingEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets exposure used in the effect.\r\n */\r\n public get exposure(): number {\r\n return this.imageProcessingConfiguration.exposure;\r\n }\r\n /**\r\n * Sets exposure used in the effect.\r\n */\r\n public set exposure(value: number) {\r\n this.imageProcessingConfiguration.exposure = value;\r\n }\r\n\r\n /**\r\n * Gets whether tonemapping is enabled or not.\r\n */\r\n public get toneMappingEnabled(): boolean {\r\n return this._imageProcessingConfiguration.toneMappingEnabled;\r\n }\r\n /**\r\n * Sets whether tonemapping is enabled or not\r\n */\r\n public set toneMappingEnabled(value: boolean) {\r\n this._imageProcessingConfiguration.toneMappingEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets the type of tone mapping effect.\r\n */\r\n public get toneMappingType(): number {\r\n return this._imageProcessingConfiguration.toneMappingType;\r\n }\r\n /**\r\n * Sets the type of tone mapping effect.\r\n */\r\n public set toneMappingType(value: number) {\r\n this._imageProcessingConfiguration.toneMappingType = value;\r\n }\r\n\r\n /**\r\n * Gets contrast used in the effect.\r\n */\r\n public get contrast(): number {\r\n return this.imageProcessingConfiguration.contrast;\r\n }\r\n /**\r\n * Sets contrast used in the effect.\r\n */\r\n public set contrast(value: number) {\r\n this.imageProcessingConfiguration.contrast = value;\r\n }\r\n\r\n /**\r\n * Gets whether the white balance effect is enabled.\r\n */\r\n public get whiteBalanceEnabled(): boolean {\r\n return this.imageProcessingConfiguration.whiteBalanceEnabled;\r\n }\r\n /**\r\n * Sets whether the white balance effect is enabled.\r\n */\r\n public set whiteBalanceEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.whiteBalanceEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets the white balance correlated color temperature, in Kelvin, used in the effect.\r\n */\r\n public get temperature(): number {\r\n return this.imageProcessingConfiguration.temperature;\r\n }\r\n /**\r\n * Sets the white balance correlated color temperature, in Kelvin, used in the effect.\r\n */\r\n public set temperature(value: number) {\r\n this.imageProcessingConfiguration.temperature = value;\r\n }\r\n\r\n /**\r\n * Gets the white balance tint offset used in the effect.\r\n */\r\n public get tint(): number {\r\n return this.imageProcessingConfiguration.tint;\r\n }\r\n /**\r\n * Sets the white balance tint offset used in the effect.\r\n */\r\n public set tint(value: number) {\r\n this.imageProcessingConfiguration.tint = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette stretch size.\r\n */\r\n public get vignetteStretch(): number {\r\n return this.imageProcessingConfiguration.vignetteStretch;\r\n }\r\n /**\r\n * Sets Vignette stretch size.\r\n */\r\n public set vignetteStretch(value: number) {\r\n this.imageProcessingConfiguration.vignetteStretch = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette center X Offset.\r\n * @deprecated use vignetteCenterX instead\r\n */\r\n public get vignetteCentreX(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterX;\r\n }\r\n /**\r\n * Sets Vignette center X Offset.\r\n * @deprecated use vignetteCenterX instead\r\n */\r\n public set vignetteCentreX(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterX = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette center Y Offset.\r\n * @deprecated use vignetteCenterY instead\r\n */\r\n public get vignetteCentreY(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterY;\r\n }\r\n /**\r\n * Sets Vignette center Y Offset.\r\n * @deprecated use vignetteCenterY instead\r\n */\r\n public set vignetteCentreY(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterY = value;\r\n }\r\n\r\n /**\r\n * Vignette center Y Offset.\r\n */\r\n public get vignetteCenterY(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterY;\r\n }\r\n public set vignetteCenterY(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterY = value;\r\n }\r\n\r\n /**\r\n * Vignette center X Offset.\r\n */\r\n public get vignetteCenterX(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterX;\r\n }\r\n public set vignetteCenterX(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterX = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette weight or intensity of the vignette effect.\r\n */\r\n public get vignetteWeight(): number {\r\n return this.imageProcessingConfiguration.vignetteWeight;\r\n }\r\n /**\r\n * Sets Vignette weight or intensity of the vignette effect.\r\n */\r\n public set vignetteWeight(value: number) {\r\n this.imageProcessingConfiguration.vignetteWeight = value;\r\n }\r\n\r\n /**\r\n * Gets Color of the vignette applied on the screen through the chosen blend mode (vignetteBlendMode)\r\n * if vignetteEnabled is set to true.\r\n */\r\n public get vignetteColor(): Color4 {\r\n return this.imageProcessingConfiguration.vignetteColor;\r\n }\r\n /**\r\n * Sets Color of the vignette applied on the screen through the chosen blend mode (vignetteBlendMode)\r\n * if vignetteEnabled is set to true.\r\n */\r\n public set vignetteColor(value: Color4) {\r\n this.imageProcessingConfiguration.vignetteColor = value;\r\n }\r\n\r\n /**\r\n * Gets Camera field of view used by the Vignette effect.\r\n */\r\n public get vignetteCameraFov(): number {\r\n return this.imageProcessingConfiguration.vignetteCameraFov;\r\n }\r\n /**\r\n * Sets Camera field of view used by the Vignette effect.\r\n */\r\n public set vignetteCameraFov(value: number) {\r\n this.imageProcessingConfiguration.vignetteCameraFov = value;\r\n }\r\n\r\n /**\r\n * Gets the vignette blend mode allowing different kind of effect.\r\n */\r\n public get vignetteBlendMode(): number {\r\n return this.imageProcessingConfiguration.vignetteBlendMode;\r\n }\r\n /**\r\n * Sets the vignette blend mode allowing different kind of effect.\r\n */\r\n public set vignetteBlendMode(value: number) {\r\n this.imageProcessingConfiguration.vignetteBlendMode = value;\r\n }\r\n\r\n /**\r\n * Gets whether the vignette effect is enabled.\r\n */\r\n public get vignetteEnabled(): boolean {\r\n return this.imageProcessingConfiguration.vignetteEnabled;\r\n }\r\n /**\r\n * Sets whether the vignette effect is enabled.\r\n */\r\n public set vignetteEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.vignetteEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets intensity of the dithering effect.\r\n */\r\n public get ditheringIntensity(): number {\r\n return this.imageProcessingConfiguration.ditheringIntensity;\r\n }\r\n /**\r\n * Sets intensity of the dithering effect.\r\n */\r\n public set ditheringIntensity(value: number) {\r\n this.imageProcessingConfiguration.ditheringIntensity = value;\r\n }\r\n\r\n /**\r\n * Gets whether the dithering effect is enabled.\r\n */\r\n public get ditheringEnabled(): boolean {\r\n return this.imageProcessingConfiguration.ditheringEnabled;\r\n }\r\n /**\r\n * Sets whether the dithering effect is enabled.\r\n */\r\n public set ditheringEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.ditheringEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets whether the input of the processing is in Gamma or Linear Space.\r\n */\r\n @serialize()\r\n public get fromLinearSpace(): boolean {\r\n return this._effectWrapper.fromLinearSpace;\r\n }\r\n /**\r\n * Sets whether the input of the processing is in Gamma or Linear Space.\r\n */\r\n public set fromLinearSpace(value: boolean) {\r\n this._effectWrapper.fromLinearSpace = value;\r\n }\r\n\r\n declare protected _effectWrapper: ThinImageProcessingPostProcess;\r\n\r\n constructor(\r\n name: string,\r\n options: number | ImageProcessingPostProcessOptions,\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_BYTE,\r\n imageProcessingConfiguration?: ImageProcessingConfiguration\r\n ) {\r\n const localOptions = {\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 imageProcessingConfiguration,\r\n scene: camera?.getScene(),\r\n ...(options as ImageProcessingPostProcessOptions),\r\n blockCompilation: true,\r\n };\r\n\r\n super(name, ThinImageProcessingPostProcess.FragmentUrl, {\r\n effectWrapper: typeof options === \"number\" || !options.effectWrapper ? new ThinImageProcessingPostProcess(name, engine, localOptions) : undefined,\r\n ...localOptions,\r\n });\r\n\r\n // Applied here (not just inside ThinImageProcessingPostProcess's own constructor) so that `temperature`/\r\n // `tint` are honored even when a caller supplies their own pre-built `effectWrapper`, in which case the\r\n // thin wrapper above is never constructed and its own application of these options never runs.\r\n _ApplyWhiteBalanceOptions(this.imageProcessingConfiguration, options);\r\n\r\n this.onApply = () => {\r\n this._effectWrapper.overrideAspectRatio = this.aspectRatio;\r\n };\r\n }\r\n\r\n /**\r\n * \"ImageProcessingPostProcess\"\r\n * @returns \"ImageProcessingPostProcess\"\r\n */\r\n public override getClassName(): string {\r\n return \"ImageProcessingPostProcess\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _updateParameters(): void {\r\n this._effectWrapper._updateParameters();\r\n }\r\n public override dispose(camera?: Camera): void {\r\n super.dispose(camera);\r\n\r\n if (this._imageProcessingConfiguration) {\r\n this.imageProcessingConfiguration.applyByPostProcess = false;\r\n }\r\n }\r\n}\r\n"]}
@@ -104,7 +104,7 @@ let ScreenSpaceCurvaturePostProcess = (() => {
104
104
  */
105
105
  static _Parse(parsedPostProcess, targetCamera, scene, rootUrl) {
106
106
  return SerializationHelper.Parse(() => {
107
- return new _a(parsedPostProcess.name, scene, parsedPostProcess.options, targetCamera, parsedPostProcess.renderTargetSamplingMode, scene.getEngine(), parsedPostProcess.textureType, parsedPostProcess.reusable);
107
+ return new _a(parsedPostProcess.name, scene, parsedPostProcess.options, targetCamera, parsedPostProcess.renderTargetSamplingMode, scene.getEngine(), parsedPostProcess.reusable, parsedPostProcess.textureType);
108
108
  }, parsedPostProcess, scene, rootUrl);
109
109
  }
110
110
  },