@babylonjs/core 7.3.0 → 7.3.2

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 (454) hide show
  1. package/Actions/condition.js.map +1 -1
  2. package/Actions/directActions.js.map +1 -1
  3. package/Actions/directAudioActions.js.map +1 -1
  4. package/Actions/interpolateValueAction.js.map +1 -1
  5. package/Animations/easing.js.map +1 -1
  6. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  7. package/Bones/bone.js.map +1 -1
  8. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  9. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  10. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  11. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js.map +1 -1
  12. package/Cameras/Stereoscopic/anaglyphFreeCamera.js.map +1 -1
  13. package/Cameras/Stereoscopic/anaglyphGamepadCamera.js.map +1 -1
  14. package/Cameras/Stereoscopic/anaglyphUniversalCamera.js.map +1 -1
  15. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js.map +1 -1
  16. package/Cameras/Stereoscopic/stereoscopicFreeCamera.js.map +1 -1
  17. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js.map +1 -1
  18. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  19. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js.map +1 -1
  20. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  21. package/Cameras/VR/vrDeviceOrientationFreeCamera.js.map +1 -1
  22. package/Cameras/VR/vrDeviceOrientationGamepadCamera.js.map +1 -1
  23. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  24. package/Cameras/arcRotateCamera.js.map +1 -1
  25. package/Cameras/camera.js.map +1 -1
  26. package/Cameras/deviceOrientationCamera.js.map +1 -1
  27. package/Cameras/flyCamera.js.map +1 -1
  28. package/Cameras/followCamera.js.map +1 -1
  29. package/Cameras/freeCamera.js.map +1 -1
  30. package/Cameras/freeCameraInputsManager.js.map +1 -1
  31. package/Cameras/gamepadCamera.js.map +1 -1
  32. package/Cameras/targetCamera.js.map +1 -1
  33. package/Cameras/touchCamera.js.map +1 -1
  34. package/Cameras/universalCamera.js.map +1 -1
  35. package/Cameras/virtualJoysticksCamera.js.map +1 -1
  36. package/Debug/boneAxesViewer.js.map +1 -1
  37. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  38. package/Engines/Processors/Expressions/Operators/shaderDefineAndOperator.js.map +1 -1
  39. package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js.map +1 -1
  40. package/Engines/Processors/Expressions/Operators/shaderDefineIsDefinedOperator.js.map +1 -1
  41. package/Engines/Processors/Expressions/Operators/shaderDefineOrOperator.js.map +1 -1
  42. package/Engines/Processors/shaderCodeConditionNode.js.map +1 -1
  43. package/Engines/Processors/shaderCodeTestNode.js.map +1 -1
  44. package/Engines/WebGL/webGLRenderTargetWrapper.js.map +1 -1
  45. package/Engines/WebGPU/Extensions/engine.rawTexture.js +10 -10
  46. package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
  47. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
  48. package/Engines/WebGPU/webgpuDepthCullingState.js.map +1 -1
  49. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +2 -0
  50. package/Engines/WebGPU/webgpuHardwareTexture.js +2 -0
  51. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  52. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  53. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  54. package/Engines/WebGPU/webgpuStencilStateComposer.js.map +1 -1
  55. package/Engines/abstractEngine.js +14 -2
  56. package/Engines/abstractEngine.js.map +1 -1
  57. package/Engines/engine.d.ts +0 -8
  58. package/Engines/engine.js +0 -28
  59. package/Engines/engine.js.map +1 -1
  60. package/Engines/nativeEngine.js.map +1 -1
  61. package/Engines/nullEngine.js.map +1 -1
  62. package/Engines/thinEngine.js.map +1 -1
  63. package/Engines/webgpuEngine.d.ts +4 -0
  64. package/Engines/webgpuEngine.js +4 -0
  65. package/Engines/webgpuEngine.js.map +1 -1
  66. package/Events/keyboardEvents.js.map +1 -1
  67. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js.map +1 -1
  68. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  69. package/FlowGraph/Blocks/Data/flowGraphConditionalDataBlock.js.map +1 -1
  70. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js.map +1 -1
  71. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.js.map +1 -1
  72. package/FlowGraph/Blocks/Data/flowGraphCoordinateTransformBlock.js.map +1 -1
  73. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js.map +1 -1
  74. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js.map +1 -1
  75. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js.map +1 -1
  76. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.js.map +1 -1
  77. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js.map +1 -1
  78. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
  79. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js.map +1 -1
  80. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js.map +1 -1
  81. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js.map +1 -1
  82. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
  83. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js.map +1 -1
  84. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.js.map +1 -1
  85. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.js.map +1 -1
  86. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphBranchBlock.js.map +1 -1
  87. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js.map +1 -1
  88. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js.map +1 -1
  89. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js.map +1 -1
  90. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.js.map +1 -1
  91. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js.map +1 -1
  92. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.js.map +1 -1
  93. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js.map +1 -1
  94. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.js.map +1 -1
  95. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js.map +1 -1
  96. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js.map +1 -1
  97. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js.map +1 -1
  98. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js.map +1 -1
  99. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -1
  100. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js.map +1 -1
  101. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js.map +1 -1
  102. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js.map +1 -1
  103. package/FlowGraph/flowGraphDataConnection.js.map +1 -1
  104. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  105. package/FlowGraph/flowGraphSignalConnection.js.map +1 -1
  106. package/Gamepads/dualShockGamepad.js.map +1 -1
  107. package/Gamepads/gamepad.js.map +1 -1
  108. package/Gamepads/xboxGamepad.js.map +1 -1
  109. package/Gizmos/axisDragGizmo.js.map +1 -1
  110. package/Gizmos/axisScaleGizmo.js.map +1 -1
  111. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  112. package/Gizmos/cameraGizmo.js.map +1 -1
  113. package/Gizmos/lightGizmo.js.map +1 -1
  114. package/Gizmos/planeDragGizmo.js.map +1 -1
  115. package/Gizmos/planeRotationGizmo.js.map +1 -1
  116. package/Gizmos/positionGizmo.js.map +1 -1
  117. package/Gizmos/rotationGizmo.js.map +1 -1
  118. package/Gizmos/scaleGizmo.js.map +1 -1
  119. package/Helpers/photoDome.js.map +1 -1
  120. package/Helpers/textureDome.js.map +1 -1
  121. package/Helpers/videoDome.js.map +1 -1
  122. package/Layers/glowLayer.js.map +1 -1
  123. package/Layers/highlightLayer.js.map +1 -1
  124. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  125. package/Lights/directionalLight.js.map +1 -1
  126. package/Lights/hemisphericLight.js.map +1 -1
  127. package/Lights/light.js.map +1 -1
  128. package/Lights/pointLight.js.map +1 -1
  129. package/Lights/shadowLight.js.map +1 -1
  130. package/Lights/spotLight.js.map +1 -1
  131. package/Materials/Background/backgroundMaterial.js.map +1 -1
  132. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
  133. package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
  134. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  135. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
  136. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  137. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  138. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  139. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  140. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  141. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  142. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  143. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  144. package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
  145. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  146. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  147. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  148. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
  149. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  150. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  151. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  152. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  153. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  154. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.js.map +1 -1
  155. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  156. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  157. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js.map +1 -1
  158. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  159. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  160. package/Materials/Node/Blocks/Input/prePassTextureBlock.js.map +1 -1
  161. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  162. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  163. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
  164. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  165. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  166. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  167. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  168. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  169. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
  170. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
  171. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  172. package/Materials/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
  173. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
  174. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  175. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  176. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  177. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  178. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  179. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  180. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  181. package/Materials/Node/Blocks/biPlanarBlock.js.map +1 -1
  182. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  183. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  184. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  185. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  186. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  187. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  188. package/Materials/Node/Blocks/curveBlock.js.map +1 -1
  189. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  190. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  191. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  192. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  193. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  194. package/Materials/Node/Blocks/elbowBlock.js.map +1 -1
  195. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  196. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  197. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  198. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  199. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  200. package/Materials/Node/Blocks/matrixDeterminantBlock.js.map +1 -1
  201. package/Materials/Node/Blocks/matrixTransposeBlock.js.map +1 -1
  202. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  203. package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
  204. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  205. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  206. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  207. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  208. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  209. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  210. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  211. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  212. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  213. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  214. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  215. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  216. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  217. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  218. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  219. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  220. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  221. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  222. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  223. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  224. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  225. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  226. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  227. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  228. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  229. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  230. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  231. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  232. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  233. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  234. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  235. package/Materials/Node/nodeMaterial.js.map +1 -1
  236. package/Materials/Node/nodeMaterialConnectionPointCustomObject.js.map +1 -1
  237. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  238. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  239. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  240. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  241. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  242. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  243. package/Materials/PBR/pbrMaterial.js.map +1 -1
  244. package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
  245. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  246. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  247. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  248. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  249. package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
  250. package/Materials/Textures/Procedurals/noiseProceduralTexture.js.map +1 -1
  251. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  252. package/Materials/Textures/baseTexture.js.map +1 -1
  253. package/Materials/Textures/colorGradingTexture.js.map +1 -1
  254. package/Materials/Textures/cubeTexture.js.map +1 -1
  255. package/Materials/Textures/dynamicTexture.js.map +1 -1
  256. package/Materials/Textures/equiRectangularCubeTexture.js +1 -1
  257. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  258. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  259. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  260. package/Materials/Textures/internalTexture.js.map +1 -1
  261. package/Materials/Textures/mirrorTexture.js.map +1 -1
  262. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  263. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  264. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  265. package/Materials/Textures/refractionTexture.js.map +1 -1
  266. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  267. package/Materials/Textures/texture.js.map +1 -1
  268. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  269. package/Materials/Textures/videoTexture.js.map +1 -1
  270. package/Materials/material.decalMapConfiguration.js.map +1 -1
  271. package/Materials/material.detailMapConfiguration.js.map +1 -1
  272. package/Materials/materialHelper.d.ts +2 -2
  273. package/Materials/materialHelper.js.map +1 -1
  274. package/Materials/meshDebugPluginMaterial.js.map +1 -1
  275. package/Materials/multiMaterial.js.map +1 -1
  276. package/Materials/pushMaterial.js.map +1 -1
  277. package/Materials/shaderMaterial.js.map +1 -1
  278. package/Materials/standardMaterial.js.map +1 -1
  279. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  280. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  281. package/Meshes/GreasedLine/greasedLineMesh.js.map +1 -1
  282. package/Meshes/GreasedLine/greasedLineRibbonMesh.js.map +1 -1
  283. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
  284. package/Meshes/Node/Blocks/Instances/instantiateBlock.js.map +1 -1
  285. package/Meshes/Node/Blocks/Instances/instantiateLinearBlock.js.map +1 -1
  286. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -1
  287. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js.map +1 -1
  288. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js.map +1 -1
  289. package/Meshes/Node/Blocks/Instances/instantiateRadialBlock.js.map +1 -1
  290. package/Meshes/Node/Blocks/Matrices/alignBlock.js.map +1 -1
  291. package/Meshes/Node/Blocks/Matrices/rotationXBlock.js.map +1 -1
  292. package/Meshes/Node/Blocks/Matrices/rotationYBlock.js.map +1 -1
  293. package/Meshes/Node/Blocks/Matrices/rotationZBlock.js.map +1 -1
  294. package/Meshes/Node/Blocks/Matrices/scalingBlock.js.map +1 -1
  295. package/Meshes/Node/Blocks/Matrices/translationBlock.js.map +1 -1
  296. package/Meshes/Node/Blocks/Set/setColorsBlock.js.map +1 -1
  297. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js.map +1 -1
  298. package/Meshes/Node/Blocks/Set/setNormalsBlock.js.map +1 -1
  299. package/Meshes/Node/Blocks/Set/setPositionsBlock.js.map +1 -1
  300. package/Meshes/Node/Blocks/Set/setTangentsBlock.js.map +1 -1
  301. package/Meshes/Node/Blocks/Set/setUVsBlock.js.map +1 -1
  302. package/Meshes/Node/Blocks/Sources/boxBlock.js.map +1 -1
  303. package/Meshes/Node/Blocks/Sources/capsuleBlock.js.map +1 -1
  304. package/Meshes/Node/Blocks/Sources/cylinderBlock.js.map +1 -1
  305. package/Meshes/Node/Blocks/Sources/discBlock.js.map +1 -1
  306. package/Meshes/Node/Blocks/Sources/gridBlock.js.map +1 -1
  307. package/Meshes/Node/Blocks/Sources/icoSphereBlock.js.map +1 -1
  308. package/Meshes/Node/Blocks/Sources/meshBlock.js.map +1 -1
  309. package/Meshes/Node/Blocks/Sources/nullBlock.js.map +1 -1
  310. package/Meshes/Node/Blocks/Sources/planeBlock.js.map +1 -1
  311. package/Meshes/Node/Blocks/Sources/sphereBlock.js.map +1 -1
  312. package/Meshes/Node/Blocks/Sources/torusBlock.js.map +1 -1
  313. package/Meshes/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
  314. package/Meshes/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
  315. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
  316. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js.map +1 -1
  317. package/Meshes/Node/Blocks/booleanGeometryBlock.js.map +1 -1
  318. package/Meshes/Node/Blocks/boundingBlock.js.map +1 -1
  319. package/Meshes/Node/Blocks/computeNormalsBlock.js.map +1 -1
  320. package/Meshes/Node/Blocks/conditionBlock.js.map +1 -1
  321. package/Meshes/Node/Blocks/debugBlock.js.map +1 -1
  322. package/Meshes/Node/Blocks/geometryArcTan2Block.js.map +1 -1
  323. package/Meshes/Node/Blocks/geometryClampBlock.js.map +1 -1
  324. package/Meshes/Node/Blocks/geometryCollectionBlock.js.map +1 -1
  325. package/Meshes/Node/Blocks/geometryCrossBlock.js.map +1 -1
  326. package/Meshes/Node/Blocks/geometryCurveBlock.js.map +1 -1
  327. package/Meshes/Node/Blocks/geometryDesaturateBlock.js.map +1 -1
  328. package/Meshes/Node/Blocks/geometryDistanceBlock.js.map +1 -1
  329. package/Meshes/Node/Blocks/geometryDotBlock.js.map +1 -1
  330. package/Meshes/Node/Blocks/geometryElbowBlock.js.map +1 -1
  331. package/Meshes/Node/Blocks/geometryInfoBlock.js.map +1 -1
  332. package/Meshes/Node/Blocks/geometryInputBlock.js.map +1 -1
  333. package/Meshes/Node/Blocks/geometryLengthBlock.js.map +1 -1
  334. package/Meshes/Node/Blocks/geometryLerpBlock.js.map +1 -1
  335. package/Meshes/Node/Blocks/geometryModBlock.js.map +1 -1
  336. package/Meshes/Node/Blocks/geometryNLerpBlock.js.map +1 -1
  337. package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
  338. package/Meshes/Node/Blocks/geometryOutputBlock.js.map +1 -1
  339. package/Meshes/Node/Blocks/geometryPosterizeBlock.js.map +1 -1
  340. package/Meshes/Node/Blocks/geometryPowBlock.js.map +1 -1
  341. package/Meshes/Node/Blocks/geometryReplaceColorBlock.js.map +1 -1
  342. package/Meshes/Node/Blocks/geometryRotate2dBlock.js.map +1 -1
  343. package/Meshes/Node/Blocks/geometrySmoothStepBlock.js.map +1 -1
  344. package/Meshes/Node/Blocks/geometryStepBlock.js.map +1 -1
  345. package/Meshes/Node/Blocks/geometryTransformBlock.js.map +1 -1
  346. package/Meshes/Node/Blocks/geometryTrigonometryBlock.js.map +1 -1
  347. package/Meshes/Node/Blocks/intFloatConverterBlock.js.map +1 -1
  348. package/Meshes/Node/Blocks/mapRangeBlock.js.map +1 -1
  349. package/Meshes/Node/Blocks/mappingBlock.js.map +1 -1
  350. package/Meshes/Node/Blocks/mathBlock.js.map +1 -1
  351. package/Meshes/Node/Blocks/matrixComposeBlock.js.map +1 -1
  352. package/Meshes/Node/Blocks/mergeGeometryBlock.js.map +1 -1
  353. package/Meshes/Node/Blocks/noiseBlock.js.map +1 -1
  354. package/Meshes/Node/Blocks/normalizeVectorBlock.js.map +1 -1
  355. package/Meshes/Node/Blocks/randomBlock.js.map +1 -1
  356. package/Meshes/Node/Blocks/vectorConverterBlock.js.map +1 -1
  357. package/Meshes/WebGL/webGLDataBuffer.js.map +1 -1
  358. package/Meshes/WebGPU/webgpuDataBuffer.js.map +1 -1
  359. package/Meshes/abstractMesh.js.map +1 -1
  360. package/Meshes/geodesicMesh.js.map +1 -1
  361. package/Meshes/goldbergMesh.js.map +1 -1
  362. package/Meshes/groundMesh.js.map +1 -1
  363. package/Meshes/instancedMesh.js.map +1 -1
  364. package/Meshes/linesMesh.js.map +1 -1
  365. package/Meshes/mesh.js.map +1 -1
  366. package/Meshes/trailMesh.js.map +1 -1
  367. package/Meshes/transformNode.js.map +1 -1
  368. package/Misc/assetsManager.js.map +1 -1
  369. package/Misc/depthReducer.js.map +1 -1
  370. package/Misc/sceneOptimizer.js.map +1 -1
  371. package/Misc/smartArray.js.map +1 -1
  372. package/Misc/workerPool.js.map +1 -1
  373. package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
  374. package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
  375. package/Particles/gpuParticleSystem.js.map +1 -1
  376. package/Particles/particleSystem.js.map +1 -1
  377. package/Particles/thinParticleSystem.js.map +1 -1
  378. package/Physics/physicsRaycastResult.js.map +1 -1
  379. package/Physics/proximityCastResult.js.map +1 -1
  380. package/Physics/v1/physicsJoint.js.map +1 -1
  381. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  382. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
  383. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  384. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  385. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  386. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  387. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.js.map +1 -1
  388. package/PostProcesses/anaglyphPostProcess.js.map +1 -1
  389. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  390. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  391. package/PostProcesses/blurPostProcess.js.map +1 -1
  392. package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
  393. package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
  394. package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
  395. package/PostProcesses/convolutionPostProcess.js.map +1 -1
  396. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  397. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  398. package/PostProcesses/displayPassPostProcess.js.map +1 -1
  399. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  400. package/PostProcesses/filterPostProcess.js.map +1 -1
  401. package/PostProcesses/fxaaPostProcess.js.map +1 -1
  402. package/PostProcesses/grainPostProcess.js.map +1 -1
  403. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  404. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  405. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  406. package/PostProcesses/passPostProcess.js.map +1 -1
  407. package/PostProcesses/refractionPostProcess.js.map +1 -1
  408. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  409. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  410. package/PostProcesses/sharpenPostProcess.js.map +1 -1
  411. package/PostProcesses/stereoscopicInterlacePostProcess.js.map +1 -1
  412. package/PostProcesses/subSurfaceScatteringPostProcess.js.map +1 -1
  413. package/PostProcesses/tonemapPostProcess.js.map +1 -1
  414. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  415. package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
  416. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
  417. package/Rendering/GlobalIllumination/giRSMManager.js.map +1 -1
  418. package/Rendering/edgesRenderer.js.map +1 -1
  419. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  420. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  421. package/Rendering/reflectiveShadowMap.js.map +1 -1
  422. package/Sprites/sprite.js.map +1 -1
  423. package/Sprites/spritePackedManager.js.map +1 -1
  424. package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
  425. package/XR/features/Layers/WebXRProjectionLayer.js.map +1 -1
  426. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  427. package/XR/features/WebXRBackgroundRemover.js.map +1 -1
  428. package/XR/features/WebXRControllerMovement.js.map +1 -1
  429. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  430. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  431. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  432. package/XR/features/WebXRDOMOverlay.js.map +1 -1
  433. package/XR/features/WebXRDepthSensing.js.map +1 -1
  434. package/XR/features/WebXREyeTracking.js.map +1 -1
  435. package/XR/features/WebXRFeaturePointSystem.js.map +1 -1
  436. package/XR/features/WebXRHandTracking.js.map +1 -1
  437. package/XR/features/WebXRHitTest.js.map +1 -1
  438. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  439. package/XR/features/WebXRImageTracking.js.map +1 -1
  440. package/XR/features/WebXRLayers.js.map +1 -1
  441. package/XR/features/WebXRLightEstimation.js.map +1 -1
  442. package/XR/features/WebXRMeshDetector.js.map +1 -1
  443. package/XR/features/WebXRNearInteraction.js.map +1 -1
  444. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  445. package/XR/features/WebXRRawCameraAccess.js.map +1 -1
  446. package/XR/features/WebXRSpaceWarp.js.map +1 -1
  447. package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
  448. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  449. package/XR/native/nativeXRRenderTarget.js.map +1 -1
  450. package/XR/webXRCamera.js.map +1 -1
  451. package/XR/webXRWebGLLayer.js.map +1 -1
  452. package/assets/Draco/draco_wasm_wrapper.js +115 -115
  453. package/package.json +1 -1
  454. package/scene.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"filterPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/filterPostProcess.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIvE;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAK9C;;;OAGG;IACI,YAAY;QACf,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED;;;;;;;;;OASG;IACH,YACI,IAAY,EACZ,YAAoB,EACpB,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAuB,EACvB,QAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC/F,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAc,EAAE,EAAE;YAC9B,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,MAAM,CAAC,iBAAsB,EAAE,YAAoB,EAAE,KAAY,EAAE,OAAe;QAC5F,OAAO,mBAAmB,CAAC,KAAK,CAC5B,GAAG,EAAE;YACD,OAAO,IAAI,iBAAiB,CACxB,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,YAAY,EAC9B,iBAAiB,CAAC,OAAO,EACzB,YAAY,EACZ,iBAAiB,CAAC,wBAAwB,EAC1C,KAAK,CAAC,SAAS,EAAE,EACjB,iBAAiB,CAAC,QAAQ,CAC7B,CAAC;QACN,CAAC,EACD,iBAAiB,EACjB,KAAK,EACL,OAAO,CACV,CAAC;IACN,CAAC;CACJ;AA1DU;IADN,iBAAiB,EAAE;uDACQ;AA4DhC,aAAa,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,CAAC","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Matrix } from \"../Maths/math.vector\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\n\r\nimport \"../Shaders/filter.fragment\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serializeAsMatrix } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * Applies a kernel filter to the image\r\n */\r\nexport class FilterPostProcess extends PostProcess {\r\n /** The matrix to be applied to the image */\r\n @serializeAsMatrix()\r\n public kernelMatrix: Matrix;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"FilterPostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"FilterPostProcess\";\r\n }\r\n\r\n /**\r\n *\r\n * @param name The name of the effect.\r\n * @param kernelMatrix The matrix to be applied to the image\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n kernelMatrix: Matrix,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean\r\n ) {\r\n super(name, \"filter\", [\"kernelMatrix\"], null, options, camera, samplingMode, engine, reusable);\r\n this.kernelMatrix = kernelMatrix;\r\n\r\n this.onApply = (effect: Effect) => {\r\n effect.setMatrix(\"kernelMatrix\", this.kernelMatrix);\r\n };\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string): Nullable<FilterPostProcess> {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new FilterPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.kernelMatrix,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FilterPostProcess\", FilterPostProcess);\r\n"]}
1
+ {"version":3,"file":"filterPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/filterPostProcess.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIvE;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAK9C;;;OAGG;IACa,YAAY;QACxB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED;;;;;;;;;OASG;IACH,YACI,IAAY,EACZ,YAAoB,EACpB,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAuB,EACvB,QAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC/F,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAc,EAAE,EAAE;YAC9B,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACI,MAAM,CAAU,MAAM,CAAC,iBAAsB,EAAE,YAAoB,EAAE,KAAY,EAAE,OAAe;QACrG,OAAO,mBAAmB,CAAC,KAAK,CAC5B,GAAG,EAAE;YACD,OAAO,IAAI,iBAAiB,CACxB,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,YAAY,EAC9B,iBAAiB,CAAC,OAAO,EACzB,YAAY,EACZ,iBAAiB,CAAC,wBAAwB,EAC1C,KAAK,CAAC,SAAS,EAAE,EACjB,iBAAiB,CAAC,QAAQ,CAC7B,CAAC;QACN,CAAC,EACD,iBAAiB,EACjB,KAAK,EACL,OAAO,CACV,CAAC;IACN,CAAC;CACJ;AA1DU;IADN,iBAAiB,EAAE;uDACQ;AA4DhC,aAAa,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,CAAC","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Matrix } from \"../Maths/math.vector\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\n\r\nimport \"../Shaders/filter.fragment\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serializeAsMatrix } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * Applies a kernel filter to the image\r\n */\r\nexport class FilterPostProcess extends PostProcess {\r\n /** The matrix to be applied to the image */\r\n @serializeAsMatrix()\r\n public kernelMatrix: Matrix;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"FilterPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"FilterPostProcess\";\r\n }\r\n\r\n /**\r\n *\r\n * @param name The name of the effect.\r\n * @param kernelMatrix The matrix to be applied to the image\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n kernelMatrix: Matrix,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean\r\n ) {\r\n super(name, \"filter\", [\"kernelMatrix\"], null, options, camera, samplingMode, engine, reusable);\r\n this.kernelMatrix = kernelMatrix;\r\n\r\n this.onApply = (effect: Effect) => {\r\n effect.setMatrix(\"kernelMatrix\", this.kernelMatrix);\r\n };\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string): Nullable<FilterPostProcess> {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new FilterPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.kernelMatrix,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FilterPostProcess\", FilterPostProcess);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fxaaPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/fxaaPostProcess.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,0BAA0B,CAAC;AAClC,OAAO,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE;;;GAGG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC5C;;;OAGG;IACI,YAAY;QACf,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IAED,YACI,IAAY,EACZ,OAAoC,EACpC,SAA2B,IAAI,EAC/B,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,cAAsB,SAAS,CAAC,wBAAwB;QAExD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,IAAI,OAAO,CAAC,qBAAqB,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAEvK,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAE3B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,WAAW;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,IAAI,CAAC;SACf;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;YAC/C,OAAO,kBAAkB,CAAC;SAC7B;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,MAAM,CAAC,iBAAsB,EAAE,YAAoB,EAAE,KAAY,EAAE,OAAe;QAC5F,OAAO,mBAAmB,CAAC,KAAK,CAC5B,GAAG,EAAE;YACD,OAAO,IAAI,eAAe,CACtB,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,OAAO,EACzB,YAAY,EACZ,iBAAiB,CAAC,wBAAwB,EAC1C,KAAK,CAAC,SAAS,EAAE,EACjB,iBAAiB,CAAC,QAAQ,CAC7B,CAAC;QACN,CAAC,EACD,iBAAiB,EACjB,KAAK,EACL,OAAO,CACV,CAAC;IACN,CAAC;CACJ;AAED,aAAa,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport \"../Shaders/fxaa.fragment\";\r\nimport \"../Shaders/fxaa.vertex\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { Scene } from \"../scene\";\r\n/**\r\n * Fxaa post process\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses#fxaa\r\n */\r\nexport class FxaaPostProcess extends PostProcess {\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"FxaaPostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"FxaaPostProcess\";\r\n }\r\n\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera> = null,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT\r\n ) {\r\n super(name, \"fxaa\", [\"texelSize\"], null, options, camera, samplingMode || Texture.BILINEAR_SAMPLINGMODE, engine, reusable, null, textureType, \"fxaa\", undefined, true);\r\n\r\n const defines = this._getDefines();\r\n this.updateEffect(defines);\r\n\r\n this.onApplyObservable.add((effect: Effect) => {\r\n const texelSize = this.texelSize;\r\n effect.setFloat2(\"texelSize\", texelSize.x, texelSize.y);\r\n });\r\n }\r\n\r\n private _getDefines(): Nullable<string> {\r\n const engine = this.getEngine();\r\n if (!engine) {\r\n return null;\r\n }\r\n\r\n const driverInfo = engine.extractDriverInfo();\r\n if (driverInfo.toLowerCase().indexOf(\"mali\") > -1) {\r\n return \"#define MALI 1\\n\";\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new FxaaPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FxaaPostProcess\", FxaaPostProcess);\r\n"]}
1
+ {"version":3,"file":"fxaaPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/fxaaPostProcess.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,0BAA0B,CAAC;AAClC,OAAO,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE;;;GAGG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC5C;;;OAGG;IACa,YAAY;QACxB,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IAED,YACI,IAAY,EACZ,OAAoC,EACpC,SAA2B,IAAI,EAC/B,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,cAAsB,SAAS,CAAC,wBAAwB;QAExD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,IAAI,OAAO,CAAC,qBAAqB,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAEvK,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAE3B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,WAAW;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,IAAI,CAAC;SACf;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;YAC/C,OAAO,kBAAkB,CAAC;SAC7B;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,MAAM,CAAU,MAAM,CAAC,iBAAsB,EAAE,YAAoB,EAAE,KAAY,EAAE,OAAe;QACrG,OAAO,mBAAmB,CAAC,KAAK,CAC5B,GAAG,EAAE;YACD,OAAO,IAAI,eAAe,CACtB,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,OAAO,EACzB,YAAY,EACZ,iBAAiB,CAAC,wBAAwB,EAC1C,KAAK,CAAC,SAAS,EAAE,EACjB,iBAAiB,CAAC,QAAQ,CAC7B,CAAC;QACN,CAAC,EACD,iBAAiB,EACjB,KAAK,EACL,OAAO,CACV,CAAC;IACN,CAAC;CACJ;AAED,aAAa,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport \"../Shaders/fxaa.fragment\";\r\nimport \"../Shaders/fxaa.vertex\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { Scene } from \"../scene\";\r\n/**\r\n * Fxaa post process\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses#fxaa\r\n */\r\nexport class FxaaPostProcess extends PostProcess {\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"FxaaPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"FxaaPostProcess\";\r\n }\r\n\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera> = null,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT\r\n ) {\r\n super(name, \"fxaa\", [\"texelSize\"], null, options, camera, samplingMode || Texture.BILINEAR_SAMPLINGMODE, engine, reusable, null, textureType, \"fxaa\", undefined, true);\r\n\r\n const defines = this._getDefines();\r\n this.updateEffect(defines);\r\n\r\n this.onApplyObservable.add((effect: Effect) => {\r\n const texelSize = this.texelSize;\r\n effect.setFloat2(\"texelSize\", texelSize.x, texelSize.y);\r\n });\r\n }\r\n\r\n private _getDefines(): Nullable<string> {\r\n const engine = this.getEngine();\r\n if (!engine) {\r\n return null;\r\n }\r\n\r\n const driverInfo = engine.extractDriverInfo();\r\n if (driverInfo.toLowerCase().indexOf(\"mali\") > -1) {\r\n return \"#define MALI 1\\n\";\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new FxaaPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FxaaPostProcess\", FxaaPostProcess);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"grainPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/grainPostProcess.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIvE;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAY7C;;;OAGG;IACI,YAAY;QACf,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;OAUG;IACH,YACI,IAAY,EACZ,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,cAAsB,SAAS,CAAC,wBAAwB,EACxD,gBAAgB,GAAG,KAAK;QAExB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAxCnK;;WAEG;QAEI,cAAS,GAAW,EAAE,CAAC;QAC9B;;WAEG;QAEI,aAAQ,GAAY,KAAK,CAAC;QAgC7B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;YAC1C,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,MAAM,CAAC,iBAAsB,EAAE,YAAoB,EAAE,KAAY,EAAE,OAAe;QAC5F,OAAO,mBAAmB,CAAC,KAAK,CAC5B,GAAG,EAAE;YACD,OAAO,IAAI,gBAAgB,CACvB,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,OAAO,EACzB,YAAY,EACZ,iBAAiB,CAAC,wBAAwB,EAC1C,KAAK,CAAC,SAAS,EAAE,EACjB,iBAAiB,CAAC,QAAQ,CAC7B,CAAC;QACN,CAAC,EACD,iBAAiB,EACjB,KAAK,EACL,OAAO,CACV,CAAC;IACN,CAAC;CACJ;AA/DU;IADN,SAAS,EAAE;mDACkB;AAKvB;IADN,SAAS,EAAE;kDACqB;AA4DrC,aAAa,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport \"../Shaders/grain.fragment\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * The GrainPostProcess adds noise to the image at mid luminance levels\r\n */\r\nexport class GrainPostProcess extends PostProcess {\r\n /**\r\n * The intensity of the grain added (default: 30)\r\n */\r\n @serialize()\r\n public intensity: number = 30;\r\n /**\r\n * If the grain should be randomized on every frame\r\n */\r\n @serialize()\r\n public animated: boolean = false;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"GrainPostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"GrainPostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance of @see GrainPostProcess\r\n * @param name The name of the effect.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false\r\n ) {\r\n super(name, \"grain\", [\"intensity\", \"animatedSeed\"], [], options, camera, samplingMode, engine, reusable, null, textureType, undefined, null, blockCompilation);\r\n this.onApplyObservable.add((effect: Effect) => {\r\n effect.setFloat(\"intensity\", this.intensity);\r\n effect.setFloat(\"animatedSeed\", this.animated ? Math.random() + 1 : 1);\r\n });\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new GrainPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GrainPostProcess\", GrainPostProcess);\r\n"]}
1
+ {"version":3,"file":"grainPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/grainPostProcess.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIvE;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAY7C;;;OAGG;IACa,YAAY;QACxB,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;OAUG;IACH,YACI,IAAY,EACZ,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,cAAsB,SAAS,CAAC,wBAAwB,EACxD,gBAAgB,GAAG,KAAK;QAExB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAxCnK;;WAEG;QAEI,cAAS,GAAW,EAAE,CAAC;QAC9B;;WAEG;QAEI,aAAQ,GAAY,KAAK,CAAC;QAgC7B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;YAC1C,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,MAAM,CAAU,MAAM,CAAC,iBAAsB,EAAE,YAAoB,EAAE,KAAY,EAAE,OAAe;QACrG,OAAO,mBAAmB,CAAC,KAAK,CAC5B,GAAG,EAAE;YACD,OAAO,IAAI,gBAAgB,CACvB,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,OAAO,EACzB,YAAY,EACZ,iBAAiB,CAAC,wBAAwB,EAC1C,KAAK,CAAC,SAAS,EAAE,EACjB,iBAAiB,CAAC,QAAQ,CAC7B,CAAC;QACN,CAAC,EACD,iBAAiB,EACjB,KAAK,EACL,OAAO,CACV,CAAC;IACN,CAAC;CACJ;AA/DU;IADN,SAAS,EAAE;mDACkB;AAKvB;IADN,SAAS,EAAE;kDACqB;AA4DrC,aAAa,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport \"../Shaders/grain.fragment\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * The GrainPostProcess adds noise to the image at mid luminance levels\r\n */\r\nexport class GrainPostProcess extends PostProcess {\r\n /**\r\n * The intensity of the grain added (default: 30)\r\n */\r\n @serialize()\r\n public intensity: number = 30;\r\n /**\r\n * If the grain should be randomized on every frame\r\n */\r\n @serialize()\r\n public animated: boolean = false;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"GrainPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"GrainPostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance of @see GrainPostProcess\r\n * @param name The name of the effect.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false\r\n ) {\r\n super(name, \"grain\", [\"intensity\", \"animatedSeed\"], [], options, camera, samplingMode, engine, reusable, null, textureType, undefined, null, blockCompilation);\r\n this.onApplyObservable.add((effect: Effect) => {\r\n effect.setFloat(\"intensity\", this.intensity);\r\n effect.setFloat(\"animatedSeed\", this.animated ? Math.random() + 1 : 1);\r\n });\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new GrainPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GrainPostProcess\", GrainPostProcess);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"highlightsPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/highlightsPostProcess.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,gCAAgC,CAAC;AAExC;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IAClD;;;OAGG;IACI,YAAY;QACf,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAED;;;;;;;;;;OAUG;IACH,YACI,IAAY,EACZ,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAe,EACf,QAAkB,EAClB,cAAsB,SAAS,CAAC,wBAAwB;QAExD,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAC9G,CAAC;CACJ","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { Engine } from \"../Engines/engine\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport \"../Shaders/highlights.fragment\";\r\n\r\n/**\r\n * Extracts highlights from the image\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses\r\n */\r\nexport class HighlightsPostProcess extends PostProcess {\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"HighlightsPostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"HighlightsPostProcess\";\r\n }\r\n\r\n /**\r\n * Extracts highlights from the image\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses\r\n * @param name The name of the effect.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of texture for the post process (default: Engine.TEXTURETYPE_UNSIGNED_INT)\r\n */\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: Engine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT\r\n ) {\r\n super(name, \"highlights\", null, null, options, camera, samplingMode, engine, reusable, null, textureType);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"highlightsPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/highlightsPostProcess.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,gCAAgC,CAAC;AAExC;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IAClD;;;OAGG;IACa,YAAY;QACxB,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAED;;;;;;;;;;OAUG;IACH,YACI,IAAY,EACZ,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAe,EACf,QAAkB,EAClB,cAAsB,SAAS,CAAC,wBAAwB;QAExD,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAC9G,CAAC;CACJ","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { Engine } from \"../Engines/engine\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport \"../Shaders/highlights.fragment\";\r\n\r\n/**\r\n * Extracts highlights from the image\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses\r\n */\r\nexport class HighlightsPostProcess extends PostProcess {\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"HighlightsPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"HighlightsPostProcess\";\r\n }\r\n\r\n /**\r\n * Extracts highlights from the image\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses\r\n * @param name The name of the effect.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of texture for the post process (default: Engine.TEXTURETYPE_UNSIGNED_INT)\r\n */\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: Engine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT\r\n ) {\r\n super(name, \"highlights\", null, null, options, camera, samplingMode, engine, reusable, null, textureType);\r\n }\r\n}\r\n"]}
@@ -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 type { Observer } from \"../Misc/observable\";\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 { Effect } from \"../Materials/effect\";\r\nimport type { ColorCurves } from \"../Materials/colorCurves\";\r\nimport type { IImageProcessingConfigurationDefines } from \"../Materials/imageProcessingConfiguration.defines\";\r\nimport { ImageProcessingConfiguration } from \"../Materials/imageProcessingConfiguration\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport \"../Shaders/imageProcessing.fragment\";\r\nimport \"../Shaders/postprocess.vertex\";\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 /**\r\n * Default configuration related to image processing available in the PBR Material.\r\n */\r\n protected _imageProcessingConfiguration: ImageProcessingConfiguration;\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._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 // We are almost sure it is applied by post process as\r\n // We are in the post process :-)\r\n value.applyByPostProcess = true;\r\n this._attachImageProcessingConfiguration(value);\r\n }\r\n\r\n /**\r\n * Keep track of the image processing observer to allow dispose and replace.\r\n */\r\n private _imageProcessingObserver: Nullable<Observer<ImageProcessingConfiguration>>;\r\n\r\n /**\r\n * Attaches a new image processing configuration to the PBR Material.\r\n * @param configuration\r\n * @param doNotBuild\r\n */\r\n protected _attachImageProcessingConfiguration(configuration: Nullable<ImageProcessingConfiguration>, doNotBuild = false): void {\r\n if (configuration === this._imageProcessingConfiguration) {\r\n return;\r\n }\r\n\r\n // Detaches observer.\r\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\r\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\r\n }\r\n\r\n // Pick the scene configuration if needed.\r\n if (!configuration) {\r\n let scene = null;\r\n const engine = this.getEngine();\r\n const camera = this.getCamera();\r\n\r\n if (camera) {\r\n scene = camera.getScene();\r\n } else if (engine && engine.scenes) {\r\n const scenes = engine.scenes;\r\n scene = scenes[scenes.length - 1];\r\n } else {\r\n scene = EngineStore.LastCreatedScene;\r\n }\r\n\r\n if (scene) {\r\n this._imageProcessingConfiguration = scene.imageProcessingConfiguration;\r\n } else {\r\n this._imageProcessingConfiguration = new ImageProcessingConfiguration();\r\n }\r\n } else {\r\n this._imageProcessingConfiguration = configuration;\r\n }\r\n\r\n // Attaches observer.\r\n if (this._imageProcessingConfiguration) {\r\n this._imageProcessingObserver = this._imageProcessingConfiguration.onUpdateParameters.add(() => {\r\n this._updateParameters();\r\n });\r\n }\r\n\r\n // Ensure the effect will be rebuilt.\r\n if (!doNotBuild) {\r\n this._updateParameters();\r\n }\r\n }\r\n\r\n /**\r\n * If the post process is supported.\r\n */\r\n public 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 @serialize()\r\n private _fromLinearSpace = true;\r\n /**\r\n * Gets whether the input of the processing is in Gamma or Linear Space.\r\n */\r\n public get fromLinearSpace(): boolean {\r\n return this._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 if (this._fromLinearSpace === value) {\r\n return;\r\n }\r\n\r\n this._fromLinearSpace = value;\r\n this._updateParameters();\r\n }\r\n\r\n /**\r\n * Defines cache preventing GC.\r\n */\r\n private _defines: IImageProcessingConfigurationDefines & { FROMLINEARSPACE: boolean } = {\r\n IMAGEPROCESSING: false,\r\n VIGNETTE: false,\r\n VIGNETTEBLENDMODEMULTIPLY: false,\r\n VIGNETTEBLENDMODEOPAQUE: false,\r\n TONEMAPPING: false,\r\n TONEMAPPING_ACES: false,\r\n CONTRAST: false,\r\n COLORCURVES: false,\r\n COLORGRADING: false,\r\n COLORGRADING3D: false,\r\n FROMLINEARSPACE: false,\r\n SAMPLER3DGREENDEPTH: false,\r\n SAMPLER3DBGRMAP: false,\r\n DITHER: false,\r\n IMAGEPROCESSINGPOSTPROCESS: false,\r\n EXPOSURE: false,\r\n SKIPFINALCOLORCLAMP: false,\r\n };\r\n\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera> = null,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n imageProcessingConfiguration?: ImageProcessingConfiguration\r\n ) {\r\n super(name, \"imageProcessing\", [], [], options, camera, samplingMode, engine, reusable, null, textureType, \"postprocess\", null, true);\r\n\r\n // Setup the configuration as forced by the constructor. This would then not force the\r\n // scene materials output in linear space and let untouched the default forward pass.\r\n if (imageProcessingConfiguration) {\r\n imageProcessingConfiguration.applyByPostProcess = true;\r\n this._attachImageProcessingConfiguration(imageProcessingConfiguration, true);\r\n // This will cause the shader to be compiled\r\n this._updateParameters();\r\n }\r\n // Setup the default processing configuration to the scene.\r\n else {\r\n this._attachImageProcessingConfiguration(null, true);\r\n this.imageProcessingConfiguration.applyByPostProcess = true;\r\n }\r\n\r\n this.onApply = (effect: Effect) => {\r\n this.imageProcessingConfiguration.bind(effect, this.aspectRatio);\r\n };\r\n }\r\n /**\r\n * \"ImageProcessingPostProcess\"\r\n * @returns \"ImageProcessingPostProcess\"\r\n */\r\n public 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._defines.FROMLINEARSPACE = this._fromLinearSpace;\r\n this.imageProcessingConfiguration.prepareDefines(this._defines, true);\r\n let defines = \"\";\r\n for (const define in this._defines) {\r\n if ((<any>this._defines)[define]) {\r\n defines += `#define ${define};\\n`;\r\n }\r\n }\r\n\r\n const samplers = [\"textureSampler\"];\r\n const uniforms = [\"scale\"];\r\n\r\n if (ImageProcessingConfiguration) {\r\n ImageProcessingConfiguration.PrepareSamplers(samplers, this._defines);\r\n ImageProcessingConfiguration.PrepareUniforms(uniforms, this._defines);\r\n }\r\n\r\n this.updateEffect(defines, uniforms, samplers);\r\n }\r\n\r\n public dispose(camera?: Camera): void {\r\n super.dispose(camera);\r\n\r\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\r\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\r\n }\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 type { Observer } from \"../Misc/observable\";\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 { Effect } from \"../Materials/effect\";\r\nimport type { ColorCurves } from \"../Materials/colorCurves\";\r\nimport type { IImageProcessingConfigurationDefines } from \"../Materials/imageProcessingConfiguration.defines\";\r\nimport { ImageProcessingConfiguration } from \"../Materials/imageProcessingConfiguration\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport \"../Shaders/imageProcessing.fragment\";\r\nimport \"../Shaders/postprocess.vertex\";\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 /**\r\n * Default configuration related to image processing available in the PBR Material.\r\n */\r\n protected _imageProcessingConfiguration: ImageProcessingConfiguration;\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._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 // We are almost sure it is applied by post process as\r\n // We are in the post process :-)\r\n value.applyByPostProcess = true;\r\n this._attachImageProcessingConfiguration(value);\r\n }\r\n\r\n /**\r\n * Keep track of the image processing observer to allow dispose and replace.\r\n */\r\n private _imageProcessingObserver: Nullable<Observer<ImageProcessingConfiguration>>;\r\n\r\n /**\r\n * Attaches a new image processing configuration to the PBR Material.\r\n * @param configuration\r\n * @param doNotBuild\r\n */\r\n protected _attachImageProcessingConfiguration(configuration: Nullable<ImageProcessingConfiguration>, doNotBuild = false): void {\r\n if (configuration === this._imageProcessingConfiguration) {\r\n return;\r\n }\r\n\r\n // Detaches observer.\r\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\r\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\r\n }\r\n\r\n // Pick the scene configuration if needed.\r\n if (!configuration) {\r\n let scene = null;\r\n const engine = this.getEngine();\r\n const camera = this.getCamera();\r\n\r\n if (camera) {\r\n scene = camera.getScene();\r\n } else if (engine && engine.scenes) {\r\n const scenes = engine.scenes;\r\n scene = scenes[scenes.length - 1];\r\n } else {\r\n scene = EngineStore.LastCreatedScene;\r\n }\r\n\r\n if (scene) {\r\n this._imageProcessingConfiguration = scene.imageProcessingConfiguration;\r\n } else {\r\n this._imageProcessingConfiguration = new ImageProcessingConfiguration();\r\n }\r\n } else {\r\n this._imageProcessingConfiguration = configuration;\r\n }\r\n\r\n // Attaches observer.\r\n if (this._imageProcessingConfiguration) {\r\n this._imageProcessingObserver = this._imageProcessingConfiguration.onUpdateParameters.add(() => {\r\n this._updateParameters();\r\n });\r\n }\r\n\r\n // Ensure the effect will be rebuilt.\r\n if (!doNotBuild) {\r\n this._updateParameters();\r\n }\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 @serialize()\r\n private _fromLinearSpace = true;\r\n /**\r\n * Gets whether the input of the processing is in Gamma or Linear Space.\r\n */\r\n public get fromLinearSpace(): boolean {\r\n return this._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 if (this._fromLinearSpace === value) {\r\n return;\r\n }\r\n\r\n this._fromLinearSpace = value;\r\n this._updateParameters();\r\n }\r\n\r\n /**\r\n * Defines cache preventing GC.\r\n */\r\n private _defines: IImageProcessingConfigurationDefines & { FROMLINEARSPACE: boolean } = {\r\n IMAGEPROCESSING: false,\r\n VIGNETTE: false,\r\n VIGNETTEBLENDMODEMULTIPLY: false,\r\n VIGNETTEBLENDMODEOPAQUE: false,\r\n TONEMAPPING: false,\r\n TONEMAPPING_ACES: false,\r\n CONTRAST: false,\r\n COLORCURVES: false,\r\n COLORGRADING: false,\r\n COLORGRADING3D: false,\r\n FROMLINEARSPACE: false,\r\n SAMPLER3DGREENDEPTH: false,\r\n SAMPLER3DBGRMAP: false,\r\n DITHER: false,\r\n IMAGEPROCESSINGPOSTPROCESS: false,\r\n EXPOSURE: false,\r\n SKIPFINALCOLORCLAMP: false,\r\n };\r\n\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera> = null,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n imageProcessingConfiguration?: ImageProcessingConfiguration\r\n ) {\r\n super(name, \"imageProcessing\", [], [], options, camera, samplingMode, engine, reusable, null, textureType, \"postprocess\", null, true);\r\n\r\n // Setup the configuration as forced by the constructor. This would then not force the\r\n // scene materials output in linear space and let untouched the default forward pass.\r\n if (imageProcessingConfiguration) {\r\n imageProcessingConfiguration.applyByPostProcess = true;\r\n this._attachImageProcessingConfiguration(imageProcessingConfiguration, true);\r\n // This will cause the shader to be compiled\r\n this._updateParameters();\r\n }\r\n // Setup the default processing configuration to the scene.\r\n else {\r\n this._attachImageProcessingConfiguration(null, true);\r\n this.imageProcessingConfiguration.applyByPostProcess = true;\r\n }\r\n\r\n this.onApply = (effect: Effect) => {\r\n this.imageProcessingConfiguration.bind(effect, this.aspectRatio);\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._defines.FROMLINEARSPACE = this._fromLinearSpace;\r\n this.imageProcessingConfiguration.prepareDefines(this._defines, true);\r\n let defines = \"\";\r\n for (const define in this._defines) {\r\n if ((<any>this._defines)[define]) {\r\n defines += `#define ${define};\\n`;\r\n }\r\n }\r\n\r\n const samplers = [\"textureSampler\"];\r\n const uniforms = [\"scale\"];\r\n\r\n if (ImageProcessingConfiguration) {\r\n ImageProcessingConfiguration.PrepareSamplers(samplers, this._defines);\r\n ImageProcessingConfiguration.PrepareUniforms(uniforms, this._defines);\r\n }\r\n\r\n this.updateEffect(defines, uniforms, samplers);\r\n }\r\n\r\n public override dispose(camera?: Camera): void {\r\n super.dispose(camera);\r\n\r\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\r\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\r\n }\r\n\r\n if (this._imageProcessingConfiguration) {\r\n this.imageProcessingConfiguration.applyByPostProcess = false;\r\n }\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"motionBlurPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/motionBlurPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { Matrix, TmpVectors, Vector2 } from \"../Maths/math.vector\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { GeometryBufferRenderer } from \"../Rendering/geometryBufferRenderer\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { MotionBlurConfiguration } from \"../Rendering/motionBlurConfiguration\";\r\nimport type { PrePassRenderer } from \"../Rendering/prePassRenderer\";\r\n\r\nimport \"../Animations/animatable\";\r\nimport \"../Rendering/geometryBufferRendererSceneComponent\";\r\nimport \"../Shaders/motionBlur.fragment\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * The Motion Blur Post Process which blurs an image based on the objects velocity in scene.\r\n * Velocity can be affected by each object's rotation, position and scale depending on the transformation speed.\r\n * As an example, all you have to do is to create the post-process:\r\n * var mb = new BABYLON.MotionBlurPostProcess(\r\n * 'mb', // The name of the effect.\r\n * scene, // The scene containing the objects to blur according to their velocity.\r\n * 1.0, // The required width/height ratio to downsize to before computing the render pass.\r\n * camera // The camera to apply the render pass to.\r\n * );\r\n * Then, all objects moving, rotating and/or scaling will be blurred depending on the transformation speed.\r\n */\r\nexport class MotionBlurPostProcess extends PostProcess {\r\n /**\r\n * Defines how much the image is blurred by the movement. Default value is equal to 1\r\n */\r\n @serialize()\r\n public motionStrength: number = 1;\r\n\r\n /**\r\n * Gets the number of iterations are used for motion blur quality. Default value is equal to 32\r\n */\r\n @serialize()\r\n public get motionBlurSamples(): number {\r\n return this._motionBlurSamples;\r\n }\r\n\r\n /**\r\n * Sets the number of iterations to be used for motion blur quality\r\n */\r\n public set motionBlurSamples(samples: number) {\r\n this._motionBlurSamples = samples;\r\n this._updateEffect();\r\n }\r\n\r\n private _motionBlurSamples: number = 32;\r\n\r\n /**\r\n * Gets whether or not the motion blur post-process is in object based mode.\r\n */\r\n @serialize()\r\n public get isObjectBased(): boolean {\r\n return this._isObjectBased;\r\n }\r\n\r\n /**\r\n * Sets whether or not the motion blur post-process is in object based mode.\r\n */\r\n public set isObjectBased(value: boolean) {\r\n if (this._isObjectBased === value) {\r\n return;\r\n }\r\n\r\n this._isObjectBased = value;\r\n this._applyMode();\r\n }\r\n\r\n private _isObjectBased: boolean = true;\r\n\r\n private _forceGeometryBuffer: boolean = false;\r\n private get _geometryBufferRenderer(): Nullable<GeometryBufferRenderer> {\r\n if (!this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n\r\n return this._scene.geometryBufferRenderer;\r\n }\r\n\r\n private get _prePassRenderer(): Nullable<PrePassRenderer> {\r\n if (this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n\r\n return this._scene.prePassRenderer;\r\n }\r\n\r\n private _invViewProjection: Nullable<Matrix> = null;\r\n private _previousViewProjection: Nullable<Matrix> = null;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"MotionBlurPostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"MotionBlurPostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance MotionBlurPostProcess\r\n * @param name The name of the effect.\r\n * @param scene The scene containing the objects to blur according to their velocity.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: true)\r\n * @param forceGeometryBuffer If this post process should use geometry buffer instead of prepass (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n scene: Scene,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false,\r\n forceGeometryBuffer = false\r\n ) {\r\n super(\r\n name,\r\n \"motionBlur\",\r\n [\"motionStrength\", \"motionScale\", \"screenSize\", \"inverseViewProjection\", \"prevViewProjection\", \"projection\"],\r\n [\"velocitySampler\", \"depthSampler\"],\r\n options,\r\n camera,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n \"#define GEOMETRY_SUPPORTED\\n#define SAMPLES 64.0\\n#define OBJECT_BASED\",\r\n textureType,\r\n undefined,\r\n null,\r\n blockCompilation\r\n );\r\n\r\n this._forceGeometryBuffer = forceGeometryBuffer;\r\n\r\n // Set up assets\r\n if (this._forceGeometryBuffer) {\r\n scene.enableGeometryBufferRenderer();\r\n\r\n if (this._geometryBufferRenderer) {\r\n this._geometryBufferRenderer.enableVelocity = this._isObjectBased;\r\n }\r\n } else {\r\n scene.enablePrePassRenderer();\r\n\r\n if (this._prePassRenderer) {\r\n this._prePassRenderer.markAsDirty();\r\n this._prePassEffectConfiguration = new MotionBlurConfiguration();\r\n }\r\n }\r\n\r\n this._applyMode();\r\n }\r\n\r\n /**\r\n * Excludes the given skinned mesh from computing bones velocities.\r\n * Computing bones velocities can have a cost and that cost. The cost can be saved by calling this function and by passing the skinned mesh reference to ignore.\r\n * @param skinnedMesh The mesh containing the skeleton to ignore when computing the velocity map.\r\n */\r\n public excludeSkinnedMesh(skinnedMesh: AbstractMesh): void {\r\n if (skinnedMesh.skeleton) {\r\n let list;\r\n if (this._geometryBufferRenderer) {\r\n list = this._geometryBufferRenderer.excludedSkinnedMeshesFromVelocity;\r\n } else if (this._prePassRenderer) {\r\n list = this._prePassRenderer.excludedSkinnedMesh;\r\n } else {\r\n return;\r\n }\r\n list.push(skinnedMesh);\r\n }\r\n }\r\n\r\n /**\r\n * Removes the given skinned mesh from the excluded meshes to integrate bones velocities while rendering the velocity map.\r\n * @param skinnedMesh The mesh containing the skeleton that has been ignored previously.\r\n * @see excludeSkinnedMesh to exclude a skinned mesh from bones velocity computation.\r\n */\r\n public removeExcludedSkinnedMesh(skinnedMesh: AbstractMesh): void {\r\n if (skinnedMesh.skeleton) {\r\n let list;\r\n if (this._geometryBufferRenderer) {\r\n list = this._geometryBufferRenderer.excludedSkinnedMeshesFromVelocity;\r\n } else if (this._prePassRenderer) {\r\n list = this._prePassRenderer.excludedSkinnedMesh;\r\n } else {\r\n return;\r\n }\r\n\r\n const index = list.indexOf(skinnedMesh);\r\n if (index !== -1) {\r\n list.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Disposes the post process.\r\n * @param camera The camera to dispose the post process on.\r\n */\r\n public dispose(camera?: Camera): void {\r\n if (this._geometryBufferRenderer) {\r\n // Clear previous transformation matrices dictionary used to compute objects velocities\r\n this._geometryBufferRenderer._previousTransformationMatrices = {};\r\n this._geometryBufferRenderer._previousBonesTransformationMatrices = {};\r\n this._geometryBufferRenderer.excludedSkinnedMeshesFromVelocity = [];\r\n }\r\n\r\n super.dispose(camera);\r\n }\r\n\r\n /**\r\n * Called on the mode changed (object based or screen based).\r\n * @returns void\r\n */\r\n private _applyMode() {\r\n if (!this._geometryBufferRenderer && !this._prePassRenderer) {\r\n // We can't get a velocity or depth texture. So, work as a passthrough.\r\n Logger.Warn(\"Multiple Render Target support needed to compute object based motion blur\");\r\n return this.updateEffect();\r\n }\r\n\r\n if (this._geometryBufferRenderer) {\r\n this._geometryBufferRenderer.enableVelocity = this._isObjectBased;\r\n }\r\n\r\n this._updateEffect();\r\n\r\n this._invViewProjection = null;\r\n this._previousViewProjection = null;\r\n\r\n if (this.isObjectBased) {\r\n if (this._prePassRenderer && this._prePassEffectConfiguration) {\r\n this._prePassEffectConfiguration.texturesRequired[0] = Constants.PREPASS_VELOCITY_TEXTURE_TYPE;\r\n }\r\n\r\n this.onApply = (effect: Effect) => this._onApplyObjectBased(effect);\r\n } else {\r\n this._invViewProjection = Matrix.Identity();\r\n this._previousViewProjection = this._scene.getTransformMatrix().clone();\r\n\r\n if (this._prePassRenderer && this._prePassEffectConfiguration) {\r\n this._prePassEffectConfiguration.texturesRequired[0] = Constants.PREPASS_DEPTH_TEXTURE_TYPE;\r\n }\r\n\r\n this.onApply = (effect: Effect) => this._onApplyScreenBased(effect);\r\n }\r\n }\r\n\r\n /**\r\n * Called on the effect is applied when the motion blur post-process is in object based mode.\r\n * @param effect\r\n */\r\n private _onApplyObjectBased(effect: Effect): void {\r\n effect.setVector2(\"screenSize\", new Vector2(this.width, this.height));\r\n\r\n effect.setFloat(\"motionScale\", this._scene.getAnimationRatio());\r\n effect.setFloat(\"motionStrength\", this.motionStrength);\r\n\r\n if (this._geometryBufferRenderer) {\r\n const velocityIndex = this._geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.VELOCITY_TEXTURE_TYPE);\r\n effect.setTexture(\"velocitySampler\", this._geometryBufferRenderer.getGBuffer().textures[velocityIndex]);\r\n } else if (this._prePassRenderer) {\r\n const velocityIndex = this._prePassRenderer.getIndex(Constants.PREPASS_VELOCITY_TEXTURE_TYPE);\r\n effect.setTexture(\"velocitySampler\", this._prePassRenderer.getRenderTarget().textures[velocityIndex]);\r\n }\r\n }\r\n\r\n /**\r\n * Called on the effect is applied when the motion blur post-process is in screen based mode.\r\n * @param effect\r\n */\r\n private _onApplyScreenBased(effect: Effect): void {\r\n const viewProjection = TmpVectors.Matrix[0];\r\n viewProjection.copyFrom(this._scene.getTransformMatrix());\r\n\r\n viewProjection.invertToRef(this._invViewProjection!);\r\n effect.setMatrix(\"inverseViewProjection\", this._invViewProjection!);\r\n\r\n effect.setMatrix(\"prevViewProjection\", this._previousViewProjection!);\r\n this._previousViewProjection!.copyFrom(viewProjection);\r\n\r\n effect.setMatrix(\"projection\", this._scene.getProjectionMatrix());\r\n\r\n effect.setVector2(\"screenSize\", new Vector2(this.width, this.height));\r\n\r\n effect.setFloat(\"motionScale\", this._scene.getAnimationRatio());\r\n effect.setFloat(\"motionStrength\", this.motionStrength);\r\n\r\n if (this._geometryBufferRenderer) {\r\n const depthIndex = this._geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.DEPTH_TEXTURE_TYPE);\r\n effect.setTexture(\"depthSampler\", this._geometryBufferRenderer.getGBuffer().textures[depthIndex]);\r\n } else if (this._prePassRenderer) {\r\n const depthIndex = this._prePassRenderer.getIndex(Constants.PREPASS_DEPTH_TEXTURE_TYPE);\r\n effect.setTexture(\"depthSampler\", this._prePassRenderer.getRenderTarget().textures[depthIndex]);\r\n }\r\n }\r\n\r\n /**\r\n * Called on the effect must be updated (changed mode, samples count, etc.).\r\n */\r\n private _updateEffect(): void {\r\n if (this._geometryBufferRenderer || this._prePassRenderer) {\r\n const defines: string[] = [\r\n \"#define GEOMETRY_SUPPORTED\",\r\n \"#define SAMPLES \" + this._motionBlurSamples.toFixed(1),\r\n this._isObjectBased ? \"#define OBJECT_BASED\" : \"#define SCREEN_BASED\",\r\n ];\r\n\r\n this.updateEffect(defines.join(\"\\n\"));\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string): Nullable<MotionBlurPostProcess> {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new MotionBlurPostProcess(\r\n parsedPostProcess.name,\r\n scene,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.reusable,\r\n parsedPostProcess.textureType,\r\n false\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.MotionBlurPostProcess\", MotionBlurPostProcess);\r\n"]}
1
+ {"version":3,"file":"motionBlurPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/motionBlurPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { Matrix, TmpVectors, Vector2 } from \"../Maths/math.vector\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { GeometryBufferRenderer } from \"../Rendering/geometryBufferRenderer\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { MotionBlurConfiguration } from \"../Rendering/motionBlurConfiguration\";\r\nimport type { PrePassRenderer } from \"../Rendering/prePassRenderer\";\r\n\r\nimport \"../Animations/animatable\";\r\nimport \"../Rendering/geometryBufferRendererSceneComponent\";\r\nimport \"../Shaders/motionBlur.fragment\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * The Motion Blur Post Process which blurs an image based on the objects velocity in scene.\r\n * Velocity can be affected by each object's rotation, position and scale depending on the transformation speed.\r\n * As an example, all you have to do is to create the post-process:\r\n * var mb = new BABYLON.MotionBlurPostProcess(\r\n * 'mb', // The name of the effect.\r\n * scene, // The scene containing the objects to blur according to their velocity.\r\n * 1.0, // The required width/height ratio to downsize to before computing the render pass.\r\n * camera // The camera to apply the render pass to.\r\n * );\r\n * Then, all objects moving, rotating and/or scaling will be blurred depending on the transformation speed.\r\n */\r\nexport class MotionBlurPostProcess extends PostProcess {\r\n /**\r\n * Defines how much the image is blurred by the movement. Default value is equal to 1\r\n */\r\n @serialize()\r\n public motionStrength: number = 1;\r\n\r\n /**\r\n * Gets the number of iterations are used for motion blur quality. Default value is equal to 32\r\n */\r\n @serialize()\r\n public get motionBlurSamples(): number {\r\n return this._motionBlurSamples;\r\n }\r\n\r\n /**\r\n * Sets the number of iterations to be used for motion blur quality\r\n */\r\n public set motionBlurSamples(samples: number) {\r\n this._motionBlurSamples = samples;\r\n this._updateEffect();\r\n }\r\n\r\n private _motionBlurSamples: number = 32;\r\n\r\n /**\r\n * Gets whether or not the motion blur post-process is in object based mode.\r\n */\r\n @serialize()\r\n public get isObjectBased(): boolean {\r\n return this._isObjectBased;\r\n }\r\n\r\n /**\r\n * Sets whether or not the motion blur post-process is in object based mode.\r\n */\r\n public set isObjectBased(value: boolean) {\r\n if (this._isObjectBased === value) {\r\n return;\r\n }\r\n\r\n this._isObjectBased = value;\r\n this._applyMode();\r\n }\r\n\r\n private _isObjectBased: boolean = true;\r\n\r\n private _forceGeometryBuffer: boolean = false;\r\n private get _geometryBufferRenderer(): Nullable<GeometryBufferRenderer> {\r\n if (!this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n\r\n return this._scene.geometryBufferRenderer;\r\n }\r\n\r\n private get _prePassRenderer(): Nullable<PrePassRenderer> {\r\n if (this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n\r\n return this._scene.prePassRenderer;\r\n }\r\n\r\n private _invViewProjection: Nullable<Matrix> = null;\r\n private _previousViewProjection: Nullable<Matrix> = null;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"MotionBlurPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"MotionBlurPostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance MotionBlurPostProcess\r\n * @param name The name of the effect.\r\n * @param scene The scene containing the objects to blur according to their velocity.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: true)\r\n * @param forceGeometryBuffer If this post process should use geometry buffer instead of prepass (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n scene: Scene,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false,\r\n forceGeometryBuffer = false\r\n ) {\r\n super(\r\n name,\r\n \"motionBlur\",\r\n [\"motionStrength\", \"motionScale\", \"screenSize\", \"inverseViewProjection\", \"prevViewProjection\", \"projection\"],\r\n [\"velocitySampler\", \"depthSampler\"],\r\n options,\r\n camera,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n \"#define GEOMETRY_SUPPORTED\\n#define SAMPLES 64.0\\n#define OBJECT_BASED\",\r\n textureType,\r\n undefined,\r\n null,\r\n blockCompilation\r\n );\r\n\r\n this._forceGeometryBuffer = forceGeometryBuffer;\r\n\r\n // Set up assets\r\n if (this._forceGeometryBuffer) {\r\n scene.enableGeometryBufferRenderer();\r\n\r\n if (this._geometryBufferRenderer) {\r\n this._geometryBufferRenderer.enableVelocity = this._isObjectBased;\r\n }\r\n } else {\r\n scene.enablePrePassRenderer();\r\n\r\n if (this._prePassRenderer) {\r\n this._prePassRenderer.markAsDirty();\r\n this._prePassEffectConfiguration = new MotionBlurConfiguration();\r\n }\r\n }\r\n\r\n this._applyMode();\r\n }\r\n\r\n /**\r\n * Excludes the given skinned mesh from computing bones velocities.\r\n * Computing bones velocities can have a cost and that cost. The cost can be saved by calling this function and by passing the skinned mesh reference to ignore.\r\n * @param skinnedMesh The mesh containing the skeleton to ignore when computing the velocity map.\r\n */\r\n public excludeSkinnedMesh(skinnedMesh: AbstractMesh): void {\r\n if (skinnedMesh.skeleton) {\r\n let list;\r\n if (this._geometryBufferRenderer) {\r\n list = this._geometryBufferRenderer.excludedSkinnedMeshesFromVelocity;\r\n } else if (this._prePassRenderer) {\r\n list = this._prePassRenderer.excludedSkinnedMesh;\r\n } else {\r\n return;\r\n }\r\n list.push(skinnedMesh);\r\n }\r\n }\r\n\r\n /**\r\n * Removes the given skinned mesh from the excluded meshes to integrate bones velocities while rendering the velocity map.\r\n * @param skinnedMesh The mesh containing the skeleton that has been ignored previously.\r\n * @see excludeSkinnedMesh to exclude a skinned mesh from bones velocity computation.\r\n */\r\n public removeExcludedSkinnedMesh(skinnedMesh: AbstractMesh): void {\r\n if (skinnedMesh.skeleton) {\r\n let list;\r\n if (this._geometryBufferRenderer) {\r\n list = this._geometryBufferRenderer.excludedSkinnedMeshesFromVelocity;\r\n } else if (this._prePassRenderer) {\r\n list = this._prePassRenderer.excludedSkinnedMesh;\r\n } else {\r\n return;\r\n }\r\n\r\n const index = list.indexOf(skinnedMesh);\r\n if (index !== -1) {\r\n list.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Disposes the post process.\r\n * @param camera The camera to dispose the post process on.\r\n */\r\n public override dispose(camera?: Camera): void {\r\n if (this._geometryBufferRenderer) {\r\n // Clear previous transformation matrices dictionary used to compute objects velocities\r\n this._geometryBufferRenderer._previousTransformationMatrices = {};\r\n this._geometryBufferRenderer._previousBonesTransformationMatrices = {};\r\n this._geometryBufferRenderer.excludedSkinnedMeshesFromVelocity = [];\r\n }\r\n\r\n super.dispose(camera);\r\n }\r\n\r\n /**\r\n * Called on the mode changed (object based or screen based).\r\n * @returns void\r\n */\r\n private _applyMode() {\r\n if (!this._geometryBufferRenderer && !this._prePassRenderer) {\r\n // We can't get a velocity or depth texture. So, work as a passthrough.\r\n Logger.Warn(\"Multiple Render Target support needed to compute object based motion blur\");\r\n return this.updateEffect();\r\n }\r\n\r\n if (this._geometryBufferRenderer) {\r\n this._geometryBufferRenderer.enableVelocity = this._isObjectBased;\r\n }\r\n\r\n this._updateEffect();\r\n\r\n this._invViewProjection = null;\r\n this._previousViewProjection = null;\r\n\r\n if (this.isObjectBased) {\r\n if (this._prePassRenderer && this._prePassEffectConfiguration) {\r\n this._prePassEffectConfiguration.texturesRequired[0] = Constants.PREPASS_VELOCITY_TEXTURE_TYPE;\r\n }\r\n\r\n this.onApply = (effect: Effect) => this._onApplyObjectBased(effect);\r\n } else {\r\n this._invViewProjection = Matrix.Identity();\r\n this._previousViewProjection = this._scene.getTransformMatrix().clone();\r\n\r\n if (this._prePassRenderer && this._prePassEffectConfiguration) {\r\n this._prePassEffectConfiguration.texturesRequired[0] = Constants.PREPASS_DEPTH_TEXTURE_TYPE;\r\n }\r\n\r\n this.onApply = (effect: Effect) => this._onApplyScreenBased(effect);\r\n }\r\n }\r\n\r\n /**\r\n * Called on the effect is applied when the motion blur post-process is in object based mode.\r\n * @param effect\r\n */\r\n private _onApplyObjectBased(effect: Effect): void {\r\n effect.setVector2(\"screenSize\", new Vector2(this.width, this.height));\r\n\r\n effect.setFloat(\"motionScale\", this._scene.getAnimationRatio());\r\n effect.setFloat(\"motionStrength\", this.motionStrength);\r\n\r\n if (this._geometryBufferRenderer) {\r\n const velocityIndex = this._geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.VELOCITY_TEXTURE_TYPE);\r\n effect.setTexture(\"velocitySampler\", this._geometryBufferRenderer.getGBuffer().textures[velocityIndex]);\r\n } else if (this._prePassRenderer) {\r\n const velocityIndex = this._prePassRenderer.getIndex(Constants.PREPASS_VELOCITY_TEXTURE_TYPE);\r\n effect.setTexture(\"velocitySampler\", this._prePassRenderer.getRenderTarget().textures[velocityIndex]);\r\n }\r\n }\r\n\r\n /**\r\n * Called on the effect is applied when the motion blur post-process is in screen based mode.\r\n * @param effect\r\n */\r\n private _onApplyScreenBased(effect: Effect): void {\r\n const viewProjection = TmpVectors.Matrix[0];\r\n viewProjection.copyFrom(this._scene.getTransformMatrix());\r\n\r\n viewProjection.invertToRef(this._invViewProjection!);\r\n effect.setMatrix(\"inverseViewProjection\", this._invViewProjection!);\r\n\r\n effect.setMatrix(\"prevViewProjection\", this._previousViewProjection!);\r\n this._previousViewProjection!.copyFrom(viewProjection);\r\n\r\n effect.setMatrix(\"projection\", this._scene.getProjectionMatrix());\r\n\r\n effect.setVector2(\"screenSize\", new Vector2(this.width, this.height));\r\n\r\n effect.setFloat(\"motionScale\", this._scene.getAnimationRatio());\r\n effect.setFloat(\"motionStrength\", this.motionStrength);\r\n\r\n if (this._geometryBufferRenderer) {\r\n const depthIndex = this._geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.DEPTH_TEXTURE_TYPE);\r\n effect.setTexture(\"depthSampler\", this._geometryBufferRenderer.getGBuffer().textures[depthIndex]);\r\n } else if (this._prePassRenderer) {\r\n const depthIndex = this._prePassRenderer.getIndex(Constants.PREPASS_DEPTH_TEXTURE_TYPE);\r\n effect.setTexture(\"depthSampler\", this._prePassRenderer.getRenderTarget().textures[depthIndex]);\r\n }\r\n }\r\n\r\n /**\r\n * Called on the effect must be updated (changed mode, samples count, etc.).\r\n */\r\n private _updateEffect(): void {\r\n if (this._geometryBufferRenderer || this._prePassRenderer) {\r\n const defines: string[] = [\r\n \"#define GEOMETRY_SUPPORTED\",\r\n \"#define SAMPLES \" + this._motionBlurSamples.toFixed(1),\r\n this._isObjectBased ? \"#define OBJECT_BASED\" : \"#define SCREEN_BASED\",\r\n ];\r\n\r\n this.updateEffect(defines.join(\"\\n\"));\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string): Nullable<MotionBlurPostProcess> {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new MotionBlurPostProcess(\r\n parsedPostProcess.name,\r\n scene,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.reusable,\r\n parsedPostProcess.textureType,\r\n false\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.MotionBlurPostProcess\", MotionBlurPostProcess);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"passPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/passPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport { AbstractEngine } from \"../Engines/abstractEngine\";\r\n\r\nimport \"../Shaders/pass.fragment\";\r\nimport \"../Shaders/passCube.fragment\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * PassPostProcess which produces an output the same as it's input\r\n */\r\nexport class PassPostProcess extends PostProcess {\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"PassPostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"PassPostProcess\";\r\n }\r\n\r\n /**\r\n * Creates the PassPostProcess\r\n * @param name The name of the effect.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType The type of texture to be used when performing the post processing.\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera> = null,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false\r\n ) {\r\n super(name, \"pass\", null, null, options, camera, samplingMode, engine, reusable, undefined, textureType, undefined, null, blockCompilation);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new PassPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n parsedPostProcess._engine,\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.PassPostProcess\", PassPostProcess);\r\n\r\n/**\r\n * PassCubePostProcess which produces an output the same as it's input (which must be a cube texture)\r\n */\r\nexport class PassCubePostProcess extends PostProcess {\r\n private _face = 0;\r\n\r\n /**\r\n * Gets or sets the cube face to display.\r\n * * 0 is +X\r\n * * 1 is -X\r\n * * 2 is +Y\r\n * * 3 is -Y\r\n * * 4 is +Z\r\n * * 5 is -Z\r\n */\r\n public get face(): number {\r\n return this._face;\r\n }\r\n\r\n public set face(value: number) {\r\n if (value < 0 || value > 5) {\r\n return;\r\n }\r\n\r\n this._face = value;\r\n switch (this._face) {\r\n case 0:\r\n this.updateEffect(\"#define POSITIVEX\");\r\n break;\r\n case 1:\r\n this.updateEffect(\"#define NEGATIVEX\");\r\n break;\r\n case 2:\r\n this.updateEffect(\"#define POSITIVEY\");\r\n break;\r\n case 3:\r\n this.updateEffect(\"#define NEGATIVEY\");\r\n break;\r\n case 4:\r\n this.updateEffect(\"#define POSITIVEZ\");\r\n break;\r\n case 5:\r\n this.updateEffect(\"#define NEGATIVEZ\");\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"PassCubePostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"PassCubePostProcess\";\r\n }\r\n\r\n /**\r\n * Creates the PassCubePostProcess\r\n * @param name The name of the effect.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType The type of texture to be used when performing the post processing.\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera> = null,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false\r\n ) {\r\n super(name, \"passCube\", null, null, options, camera, samplingMode, engine, reusable, \"#define POSITIVEX\", textureType, undefined, null, blockCompilation);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new PassCubePostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n parsedPostProcess._engine,\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nAbstractEngine._RescalePostProcessFactory = (engine: AbstractEngine) => {\r\n return new PassPostProcess(\"rescale\", 1, null, Constants.TEXTURE_BILINEAR_SAMPLINGMODE, engine, false, Constants.TEXTURETYPE_UNSIGNED_INT);\r\n};\r\n"]}
1
+ {"version":3,"file":"passPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/passPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport { AbstractEngine } from \"../Engines/abstractEngine\";\r\n\r\nimport \"../Shaders/pass.fragment\";\r\nimport \"../Shaders/passCube.fragment\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * PassPostProcess which produces an output the same as it's input\r\n */\r\nexport class PassPostProcess extends PostProcess {\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"PassPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"PassPostProcess\";\r\n }\r\n\r\n /**\r\n * Creates the PassPostProcess\r\n * @param name The name of the effect.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType The type of texture to be used when performing the post processing.\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera> = null,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false\r\n ) {\r\n super(name, \"pass\", null, null, options, camera, samplingMode, engine, reusable, undefined, textureType, undefined, null, blockCompilation);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new PassPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n parsedPostProcess._engine,\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.PassPostProcess\", PassPostProcess);\r\n\r\n/**\r\n * PassCubePostProcess which produces an output the same as it's input (which must be a cube texture)\r\n */\r\nexport class PassCubePostProcess extends PostProcess {\r\n private _face = 0;\r\n\r\n /**\r\n * Gets or sets the cube face to display.\r\n * * 0 is +X\r\n * * 1 is -X\r\n * * 2 is +Y\r\n * * 3 is -Y\r\n * * 4 is +Z\r\n * * 5 is -Z\r\n */\r\n public get face(): number {\r\n return this._face;\r\n }\r\n\r\n public set face(value: number) {\r\n if (value < 0 || value > 5) {\r\n return;\r\n }\r\n\r\n this._face = value;\r\n switch (this._face) {\r\n case 0:\r\n this.updateEffect(\"#define POSITIVEX\");\r\n break;\r\n case 1:\r\n this.updateEffect(\"#define NEGATIVEX\");\r\n break;\r\n case 2:\r\n this.updateEffect(\"#define POSITIVEY\");\r\n break;\r\n case 3:\r\n this.updateEffect(\"#define NEGATIVEY\");\r\n break;\r\n case 4:\r\n this.updateEffect(\"#define POSITIVEZ\");\r\n break;\r\n case 5:\r\n this.updateEffect(\"#define NEGATIVEZ\");\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"PassCubePostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"PassCubePostProcess\";\r\n }\r\n\r\n /**\r\n * Creates the PassCubePostProcess\r\n * @param name The name of the effect.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType The type of texture to be used when performing the post processing.\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera> = null,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false\r\n ) {\r\n super(name, \"passCube\", null, null, options, camera, samplingMode, engine, reusable, \"#define POSITIVEX\", textureType, undefined, null, blockCompilation);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new PassCubePostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n parsedPostProcess._engine,\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nAbstractEngine._RescalePostProcessFactory = (engine: AbstractEngine) => {\r\n return new PassPostProcess(\"rescale\", 1, null, Constants.TEXTURE_BILINEAR_SAMPLINGMODE, engine, false, Constants.TEXTURETYPE_UNSIGNED_INT);\r\n};\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"refractionPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/refractionPostProcess.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAKvE;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IAoBlD;;;OAGG;IACH,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAW,iBAAiB,CAAC,KAAc;QACvC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAChD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,YAAY;QACf,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,YACI,IAAY,EACZ,oBAA4B,EAC5B,KAAa,EACb,KAAa,EACb,UAAkB,EAClB,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAuB,EACvB,QAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QArEpI,0BAAqB,GAAG,IAAI,CAAC;QAuEjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QAEjD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE;YAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;YAC1C,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAE/C,MAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACP,CAAC;IAED,UAAU;IACV;;;OAGG;IACI,OAAO,CAAC,MAAc;QACzB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAChD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,WAAY,GAAG,IAAI,CAAC;SAClC;QAED,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,MAAM,CAAC,iBAAsB,EAAE,YAAoB,EAAE,KAAY,EAAE,OAAe;QAC5F,OAAO,mBAAmB,CAAC,KAAK,CAC5B,GAAG,EAAE;YACD,OAAO,IAAI,qBAAqB,CAC5B,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,oBAAoB,EACtC,iBAAiB,CAAC,KAAK,EACvB,iBAAiB,CAAC,KAAK,EACvB,iBAAiB,CAAC,UAAU,EAC5B,iBAAiB,CAAC,OAAO,EACzB,YAAY,EACZ,iBAAiB,CAAC,wBAAwB,EAC1C,KAAK,CAAC,SAAS,EAAE,EACjB,iBAAiB,CAAC,QAAQ,CAC7B,CAAC;QACN,CAAC,EACD,iBAAiB,EACjB,KAAK,EACL,OAAO,CACV,CAAC;IACN,CAAC;CACJ;AA3HU;IADN,SAAS,EAAE;oDACS;AAId;IADN,SAAS,EAAE;oDACS;AAId;IADN,SAAS,EAAE;yDACc;AAInB;IADN,SAAS,EAAE;mEACwB;AAiHxC,aAAa,CAAC,+BAA+B,EAAE,qBAAqB,CAAC,CAAC","sourcesContent":["import type { Color3 } from \"../Maths/math.color\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\n\r\nimport \"../Shaders/refraction.fragment\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\nimport type { Nullable } from \"../types\";\r\n\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * Post process which applies a refraction texture\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses#refraction\r\n */\r\nexport class RefractionPostProcess extends PostProcess {\r\n private _refTexture: Texture;\r\n private _ownRefractionTexture = true;\r\n\r\n /** the base color of the refraction (used to taint the rendering) */\r\n @serialize()\r\n public color: Color3;\r\n\r\n /** simulated refraction depth */\r\n @serialize()\r\n public depth: number;\r\n\r\n /** the coefficient of the base color (0 to remove base color tainting) */\r\n @serialize()\r\n public colorLevel: number;\r\n\r\n /** Gets the url used to load the refraction texture */\r\n @serialize()\r\n public refractionTextureUrl: string;\r\n\r\n /**\r\n * Gets or sets the refraction texture\r\n * Please note that you are responsible for disposing the texture if you set it manually\r\n */\r\n public get refractionTexture(): Texture {\r\n return this._refTexture;\r\n }\r\n\r\n public set refractionTexture(value: Texture) {\r\n if (this._refTexture && this._ownRefractionTexture) {\r\n this._refTexture.dispose();\r\n }\r\n\r\n this._refTexture = value;\r\n this._ownRefractionTexture = false;\r\n }\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"RefractionPostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"RefractionPostProcess\";\r\n }\r\n\r\n /**\r\n * Initializes the RefractionPostProcess\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses#refraction\r\n * @param name The name of the effect.\r\n * @param refractionTextureUrl Url of the refraction texture to use\r\n * @param color the base color of the refraction (used to taint the rendering)\r\n * @param depth simulated refraction depth\r\n * @param colorLevel the coefficient of the base color (0 to remove base color tainting)\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n refractionTextureUrl: string,\r\n color: Color3,\r\n depth: number,\r\n colorLevel: number,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean\r\n ) {\r\n super(name, \"refraction\", [\"baseColor\", \"depth\", \"colorLevel\"], [\"refractionSampler\"], options, camera, samplingMode, engine, reusable);\r\n\r\n this.color = color;\r\n this.depth = depth;\r\n this.colorLevel = colorLevel;\r\n this.refractionTextureUrl = refractionTextureUrl;\r\n\r\n this.onActivateObservable.add((cam: Camera) => {\r\n this._refTexture = this._refTexture || new Texture(refractionTextureUrl, cam.getScene());\r\n });\r\n\r\n this.onApplyObservable.add((effect: Effect) => {\r\n effect.setColor3(\"baseColor\", this.color);\r\n effect.setFloat(\"depth\", this.depth);\r\n effect.setFloat(\"colorLevel\", this.colorLevel);\r\n\r\n effect.setTexture(\"refractionSampler\", this._refTexture);\r\n });\r\n }\r\n\r\n // Methods\r\n /**\r\n * Disposes of the post process\r\n * @param camera Camera to dispose post process on\r\n */\r\n public dispose(camera: Camera): void {\r\n if (this._refTexture && this._ownRefractionTexture) {\r\n this._refTexture.dispose();\r\n (<any>this._refTexture) = null;\r\n }\r\n\r\n super.dispose(camera);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new RefractionPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.refractionTextureUrl,\r\n parsedPostProcess.color,\r\n parsedPostProcess.depth,\r\n parsedPostProcess.colorLevel,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.RefractionPostProcess\", RefractionPostProcess);\r\n"]}
1
+ {"version":3,"file":"refractionPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/refractionPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Color3 } from \"../Maths/math.color\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\n\r\nimport \"../Shaders/refraction.fragment\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\nimport type { Nullable } from \"../types\";\r\n\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * Post process which applies a refraction texture\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses#refraction\r\n */\r\nexport class RefractionPostProcess extends PostProcess {\r\n private _refTexture: Texture;\r\n private _ownRefractionTexture = true;\r\n\r\n /** the base color of the refraction (used to taint the rendering) */\r\n @serialize()\r\n public color: Color3;\r\n\r\n /** simulated refraction depth */\r\n @serialize()\r\n public depth: number;\r\n\r\n /** the coefficient of the base color (0 to remove base color tainting) */\r\n @serialize()\r\n public colorLevel: number;\r\n\r\n /** Gets the url used to load the refraction texture */\r\n @serialize()\r\n public refractionTextureUrl: string;\r\n\r\n /**\r\n * Gets or sets the refraction texture\r\n * Please note that you are responsible for disposing the texture if you set it manually\r\n */\r\n public get refractionTexture(): Texture {\r\n return this._refTexture;\r\n }\r\n\r\n public set refractionTexture(value: Texture) {\r\n if (this._refTexture && this._ownRefractionTexture) {\r\n this._refTexture.dispose();\r\n }\r\n\r\n this._refTexture = value;\r\n this._ownRefractionTexture = false;\r\n }\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"RefractionPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"RefractionPostProcess\";\r\n }\r\n\r\n /**\r\n * Initializes the RefractionPostProcess\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/usePostProcesses#refraction\r\n * @param name The name of the effect.\r\n * @param refractionTextureUrl Url of the refraction texture to use\r\n * @param color the base color of the refraction (used to taint the rendering)\r\n * @param depth simulated refraction depth\r\n * @param colorLevel the coefficient of the base color (0 to remove base color tainting)\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n refractionTextureUrl: string,\r\n color: Color3,\r\n depth: number,\r\n colorLevel: number,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean\r\n ) {\r\n super(name, \"refraction\", [\"baseColor\", \"depth\", \"colorLevel\"], [\"refractionSampler\"], options, camera, samplingMode, engine, reusable);\r\n\r\n this.color = color;\r\n this.depth = depth;\r\n this.colorLevel = colorLevel;\r\n this.refractionTextureUrl = refractionTextureUrl;\r\n\r\n this.onActivateObservable.add((cam: Camera) => {\r\n this._refTexture = this._refTexture || new Texture(refractionTextureUrl, cam.getScene());\r\n });\r\n\r\n this.onApplyObservable.add((effect: Effect) => {\r\n effect.setColor3(\"baseColor\", this.color);\r\n effect.setFloat(\"depth\", this.depth);\r\n effect.setFloat(\"colorLevel\", this.colorLevel);\r\n\r\n effect.setTexture(\"refractionSampler\", this._refTexture);\r\n });\r\n }\r\n\r\n // Methods\r\n /**\r\n * Disposes of the post process\r\n * @param camera Camera to dispose post process on\r\n */\r\n public override dispose(camera: Camera): void {\r\n if (this._refTexture && this._ownRefractionTexture) {\r\n this._refTexture.dispose();\r\n (<any>this._refTexture) = null;\r\n }\r\n\r\n super.dispose(camera);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new RefractionPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.refractionTextureUrl,\r\n parsedPostProcess.color,\r\n parsedPostProcess.depth,\r\n parsedPostProcess.colorLevel,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.RefractionPostProcess\", RefractionPostProcess);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"screenSpaceCurvaturePostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/screenSpaceCurvaturePostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport type { GeometryBufferRenderer } from \"../Rendering/geometryBufferRenderer\";\r\n\r\nimport \"../Rendering/geometryBufferRendererSceneComponent\";\r\nimport \"../Shaders/screenSpaceCurvature.fragment\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * The Screen Space curvature effect can help highlighting ridge and valley of a model.\r\n */\r\nexport class ScreenSpaceCurvaturePostProcess extends PostProcess {\r\n /**\r\n * Defines how much ridge the curvature effect displays.\r\n */\r\n @serialize()\r\n public ridge: number = 1;\r\n\r\n /**\r\n * Defines how much valley the curvature effect displays.\r\n */\r\n @serialize()\r\n public valley: number = 1;\r\n\r\n private _geometryBufferRenderer: Nullable<GeometryBufferRenderer>;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"ScreenSpaceCurvaturePostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"ScreenSpaceCurvaturePostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance ScreenSpaceCurvaturePostProcess\r\n * @param name The name of the effect.\r\n * @param scene The scene containing the objects to blur according to their velocity.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n scene: Scene,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false\r\n ) {\r\n super(\r\n name,\r\n \"screenSpaceCurvature\",\r\n [\"curvature_ridge\", \"curvature_valley\"],\r\n [\"textureSampler\", \"normalSampler\"],\r\n options,\r\n camera,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n undefined,\r\n textureType,\r\n undefined,\r\n null,\r\n blockCompilation\r\n );\r\n\r\n this._geometryBufferRenderer = scene.enableGeometryBufferRenderer();\r\n\r\n if (!this._geometryBufferRenderer) {\r\n // Geometry buffer renderer is not supported. So, work as a passthrough.\r\n Logger.Error(\"Multiple Render Target support needed for screen space curvature post process. Please use IsSupported test first.\");\r\n } else {\r\n if (this._geometryBufferRenderer.generateNormalsInWorldSpace) {\r\n Logger.Error(\"ScreenSpaceCurvaturePostProcess does not support generateNormalsInWorldSpace=true for the geometry buffer renderer!\");\r\n }\r\n\r\n // Geometry buffer renderer is supported.\r\n this.onApply = (effect: Effect) => {\r\n effect.setFloat(\"curvature_ridge\", 0.5 / Math.max(this.ridge * this.ridge, 1e-4));\r\n effect.setFloat(\"curvature_valley\", 0.7 / Math.max(this.valley * this.valley, 1e-4));\r\n\r\n const normalTexture = this._geometryBufferRenderer!.getGBuffer().textures[1];\r\n effect.setTexture(\"normalSampler\", normalTexture);\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Support test.\r\n */\r\n public static get IsSupported(): boolean {\r\n const engine = EngineStore.LastCreatedEngine;\r\n if (!engine) {\r\n return false;\r\n }\r\n\r\n return engine.getCaps().drawBuffersExtension;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new ScreenSpaceCurvaturePostProcess(\r\n parsedPostProcess.name,\r\n scene,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.textureType,\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ScreenSpaceCurvaturePostProcess\", ScreenSpaceCurvaturePostProcess);\r\n"]}
1
+ {"version":3,"file":"screenSpaceCurvaturePostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/screenSpaceCurvaturePostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport type { GeometryBufferRenderer } from \"../Rendering/geometryBufferRenderer\";\r\n\r\nimport \"../Rendering/geometryBufferRendererSceneComponent\";\r\nimport \"../Shaders/screenSpaceCurvature.fragment\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * The Screen Space curvature effect can help highlighting ridge and valley of a model.\r\n */\r\nexport class ScreenSpaceCurvaturePostProcess extends PostProcess {\r\n /**\r\n * Defines how much ridge the curvature effect displays.\r\n */\r\n @serialize()\r\n public ridge: number = 1;\r\n\r\n /**\r\n * Defines how much valley the curvature effect displays.\r\n */\r\n @serialize()\r\n public valley: number = 1;\r\n\r\n private _geometryBufferRenderer: Nullable<GeometryBufferRenderer>;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"ScreenSpaceCurvaturePostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"ScreenSpaceCurvaturePostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance ScreenSpaceCurvaturePostProcess\r\n * @param name The name of the effect.\r\n * @param scene The scene containing the objects to blur according to their velocity.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n scene: Scene,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false\r\n ) {\r\n super(\r\n name,\r\n \"screenSpaceCurvature\",\r\n [\"curvature_ridge\", \"curvature_valley\"],\r\n [\"textureSampler\", \"normalSampler\"],\r\n options,\r\n camera,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n undefined,\r\n textureType,\r\n undefined,\r\n null,\r\n blockCompilation\r\n );\r\n\r\n this._geometryBufferRenderer = scene.enableGeometryBufferRenderer();\r\n\r\n if (!this._geometryBufferRenderer) {\r\n // Geometry buffer renderer is not supported. So, work as a passthrough.\r\n Logger.Error(\"Multiple Render Target support needed for screen space curvature post process. Please use IsSupported test first.\");\r\n } else {\r\n if (this._geometryBufferRenderer.generateNormalsInWorldSpace) {\r\n Logger.Error(\"ScreenSpaceCurvaturePostProcess does not support generateNormalsInWorldSpace=true for the geometry buffer renderer!\");\r\n }\r\n\r\n // Geometry buffer renderer is supported.\r\n this.onApply = (effect: Effect) => {\r\n effect.setFloat(\"curvature_ridge\", 0.5 / Math.max(this.ridge * this.ridge, 1e-4));\r\n effect.setFloat(\"curvature_valley\", 0.7 / Math.max(this.valley * this.valley, 1e-4));\r\n\r\n const normalTexture = this._geometryBufferRenderer!.getGBuffer().textures[1];\r\n effect.setTexture(\"normalSampler\", normalTexture);\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Support test.\r\n */\r\n public static get IsSupported(): boolean {\r\n const engine = EngineStore.LastCreatedEngine;\r\n if (!engine) {\r\n return false;\r\n }\r\n\r\n return engine.getCaps().drawBuffersExtension;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new ScreenSpaceCurvaturePostProcess(\r\n parsedPostProcess.name,\r\n scene,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.textureType,\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ScreenSpaceCurvaturePostProcess\", ScreenSpaceCurvaturePostProcess);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"screenSpaceReflectionPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/screenSpaceReflectionPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { GeometryBufferRenderer } from \"../Rendering/geometryBufferRenderer\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\nimport type { PrePassRenderer } from \"../Rendering/prePassRenderer\";\r\nimport { ScreenSpaceReflectionsConfiguration } from \"../Rendering/screenSpaceReflectionsConfiguration\";\r\n\r\nimport \"../Shaders/screenSpaceReflection.fragment\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport type { Scene } from \"../scene\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * The ScreenSpaceReflectionPostProcess performs realtime reflections using only and only the available informations on the screen (positions and normals).\r\n * Basically, the screen space reflection post-process will compute reflections according the material's reflectivity.\r\n * @deprecated Use the new SSRRenderingPipeline instead.\r\n */\r\nexport class ScreenSpaceReflectionPostProcess extends PostProcess {\r\n /**\r\n * Gets or sets a reflection threshold mainly used to adjust the reflection's height.\r\n */\r\n @serialize()\r\n public threshold: number = 1.2;\r\n /**\r\n * Gets or sets the current reflection strength. 1.0 is an ideal value but can be increased/decreased for particular results.\r\n */\r\n @serialize()\r\n public strength: number = 1;\r\n /**\r\n * Gets or sets the falloff exponent used while computing fresnel. More the exponent is high, more the reflections will be discrete.\r\n */\r\n @serialize()\r\n public reflectionSpecularFalloffExponent: number = 3;\r\n /**\r\n * Gets or sets the step size used to iterate until the effect finds the color of the reflection's pixel. Typically in interval [0.1, 1.0]\r\n */\r\n @serialize()\r\n public step: number = 1.0;\r\n /**\r\n * Gets or sets the factor applied when computing roughness. Default value is 0.2.\r\n */\r\n @serialize()\r\n public roughnessFactor: number = 0.2;\r\n\r\n private _forceGeometryBuffer: boolean = false;\r\n private get _geometryBufferRenderer(): Nullable<GeometryBufferRenderer> {\r\n if (!this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n\r\n return this._scene.geometryBufferRenderer;\r\n }\r\n\r\n private get _prePassRenderer(): Nullable<PrePassRenderer> {\r\n if (this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n\r\n return this._scene.prePassRenderer;\r\n }\r\n\r\n private _enableSmoothReflections: boolean = false;\r\n private _reflectionSamples: number = 64;\r\n private _smoothSteps: number = 5;\r\n private _isSceneRightHanded: boolean;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"ScreenSpaceReflectionPostProcess\" string\r\n */\r\n public getClassName(): string {\r\n return \"ScreenSpaceReflectionPostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance of ScreenSpaceReflectionPostProcess.\r\n * @param name The name of the effect.\r\n * @param scene The scene containing the objects to calculate reflections.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: true)\r\n * @param forceGeometryBuffer If this post process should use geometry buffer instead of prepass (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n scene: Scene,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false,\r\n forceGeometryBuffer = false\r\n ) {\r\n super(\r\n name,\r\n \"screenSpaceReflection\",\r\n [\"projection\", \"view\", \"threshold\", \"reflectionSpecularFalloffExponent\", \"strength\", \"stepSize\", \"roughnessFactor\"],\r\n [\"textureSampler\", \"normalSampler\", \"positionSampler\", \"reflectivitySampler\"],\r\n options,\r\n camera,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n \"#define SSR_SUPPORTED\\n#define REFLECTION_SAMPLES 64\\n#define SMOOTH_STEPS 5\\n\",\r\n textureType,\r\n undefined,\r\n null,\r\n blockCompilation\r\n );\r\n\r\n this._forceGeometryBuffer = forceGeometryBuffer;\r\n\r\n if (this._forceGeometryBuffer) {\r\n // Get geometry buffer renderer and update effect\r\n const geometryBufferRenderer = scene.enableGeometryBufferRenderer();\r\n if (geometryBufferRenderer) {\r\n if (geometryBufferRenderer.isSupported) {\r\n geometryBufferRenderer.enablePosition = true;\r\n geometryBufferRenderer.enableReflectivity = true;\r\n\r\n if (geometryBufferRenderer.generateNormalsInWorldSpace) {\r\n Logger.Error(\"ScreenSpaceReflectionPostProcess does not support generateNormalsInWorldSpace=true for the geometry buffer renderer!\");\r\n }\r\n }\r\n }\r\n } else {\r\n const prePassRenderer = scene.enablePrePassRenderer();\r\n prePassRenderer?.markAsDirty();\r\n if (prePassRenderer?.generateNormalsInWorldSpace) {\r\n Logger.Error(\"ScreenSpaceReflectionPostProcess does not support generateNormalsInWorldSpace=true for the prepass renderer!\");\r\n }\r\n this._prePassEffectConfiguration = new ScreenSpaceReflectionsConfiguration();\r\n }\r\n\r\n this._updateEffectDefines();\r\n\r\n // On apply, send uniforms\r\n this.onApply = (effect: Effect) => {\r\n const geometryBufferRenderer = this._geometryBufferRenderer;\r\n const prePassRenderer = this._prePassRenderer;\r\n\r\n if (!prePassRenderer && !geometryBufferRenderer) {\r\n return;\r\n }\r\n\r\n if (geometryBufferRenderer) {\r\n // Samplers\r\n const positionIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.POSITION_TEXTURE_TYPE);\r\n const roughnessIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.REFLECTIVITY_TEXTURE_TYPE);\r\n\r\n effect.setTexture(\"normalSampler\", geometryBufferRenderer.getGBuffer().textures[1]);\r\n effect.setTexture(\"positionSampler\", geometryBufferRenderer.getGBuffer().textures[positionIndex]);\r\n effect.setTexture(\"reflectivitySampler\", geometryBufferRenderer.getGBuffer().textures[roughnessIndex]);\r\n } else if (prePassRenderer) {\r\n // Samplers\r\n const positionIndex = prePassRenderer.getIndex(Constants.PREPASS_POSITION_TEXTURE_TYPE);\r\n const roughnessIndex = prePassRenderer.getIndex(Constants.PREPASS_REFLECTIVITY_TEXTURE_TYPE);\r\n const normalIndex = prePassRenderer.getIndex(Constants.PREPASS_NORMAL_TEXTURE_TYPE);\r\n\r\n effect.setTexture(\"normalSampler\", prePassRenderer.getRenderTarget().textures[normalIndex]);\r\n effect.setTexture(\"positionSampler\", prePassRenderer.getRenderTarget().textures[positionIndex]);\r\n effect.setTexture(\"reflectivitySampler\", prePassRenderer.getRenderTarget().textures[roughnessIndex]);\r\n }\r\n\r\n // Uniforms\r\n const camera = scene.activeCamera;\r\n if (!camera) {\r\n return;\r\n }\r\n\r\n const viewMatrix = camera.getViewMatrix(true);\r\n const projectionMatrix = camera.getProjectionMatrix(true);\r\n\r\n effect.setMatrix(\"projection\", projectionMatrix);\r\n effect.setMatrix(\"view\", viewMatrix);\r\n effect.setFloat(\"threshold\", this.threshold);\r\n effect.setFloat(\"reflectionSpecularFalloffExponent\", this.reflectionSpecularFalloffExponent);\r\n effect.setFloat(\"strength\", this.strength);\r\n effect.setFloat(\"stepSize\", this.step);\r\n effect.setFloat(\"roughnessFactor\", this.roughnessFactor);\r\n };\r\n\r\n this._isSceneRightHanded = scene.useRightHandedSystem;\r\n }\r\n\r\n /**\r\n * Gets whether or not smoothing reflections is enabled.\r\n * Enabling smoothing will require more GPU power and can generate a drop in FPS.\r\n */\r\n @serialize()\r\n public get enableSmoothReflections(): boolean {\r\n return this._enableSmoothReflections;\r\n }\r\n\r\n /**\r\n * Sets whether or not smoothing reflections is enabled.\r\n * Enabling smoothing will require more GPU power and can generate a drop in FPS.\r\n */\r\n public set enableSmoothReflections(enabled: boolean) {\r\n if (enabled === this._enableSmoothReflections) {\r\n return;\r\n }\r\n\r\n this._enableSmoothReflections = enabled;\r\n this._updateEffectDefines();\r\n }\r\n\r\n /**\r\n * Gets the number of samples taken while computing reflections. More samples count is high,\r\n * more the post-process wil require GPU power and can generate a drop in FPS. Basically in interval [25, 100].\r\n */\r\n @serialize()\r\n public get reflectionSamples(): number {\r\n return this._reflectionSamples;\r\n }\r\n\r\n /**\r\n * Sets the number of samples taken while computing reflections. More samples count is high,\r\n * more the post-process wil require GPU power and can generate a drop in FPS. Basically in interval [25, 100].\r\n */\r\n public set reflectionSamples(samples: number) {\r\n if (samples === this._reflectionSamples) {\r\n return;\r\n }\r\n\r\n this._reflectionSamples = samples;\r\n this._updateEffectDefines();\r\n }\r\n\r\n /**\r\n * Gets the number of samples taken while smoothing reflections. More samples count is high,\r\n * more the post-process will require GPU power and can generate a drop in FPS.\r\n * Default value (5.0) work pretty well in all cases but can be adjusted.\r\n */\r\n @serialize()\r\n public get smoothSteps(): number {\r\n return this._smoothSteps;\r\n }\r\n\r\n /*\r\n * Sets the number of samples taken while smoothing reflections. More samples count is high,\r\n * more the post-process will require GPU power and can generate a drop in FPS.\r\n * Default value (5.0) work pretty well in all cases but can be adjusted.\r\n */\r\n public set smoothSteps(steps: number) {\r\n if (steps === this._smoothSteps) {\r\n return;\r\n }\r\n\r\n this._smoothSteps = steps;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _updateEffectDefines(): void {\r\n const defines: string[] = [];\r\n if (this._geometryBufferRenderer || this._prePassRenderer) {\r\n defines.push(\"#define SSR_SUPPORTED\");\r\n }\r\n if (this._enableSmoothReflections) {\r\n defines.push(\"#define ENABLE_SMOOTH_REFLECTIONS\");\r\n }\r\n if (this._isSceneRightHanded) {\r\n defines.push(\"#define RIGHT_HANDED_SCENE\");\r\n }\r\n\r\n defines.push(\"#define REFLECTION_SAMPLES \" + (this._reflectionSamples >> 0));\r\n defines.push(\"#define SMOOTH_STEPS \" + (this._smoothSteps >> 0));\r\n\r\n this.updateEffect(defines.join(\"\\n\"));\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new ScreenSpaceReflectionPostProcess(\r\n parsedPostProcess.name,\r\n scene,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.textureType,\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ScreenSpaceReflectionPostProcess\", ScreenSpaceReflectionPostProcess);\r\n"]}
1
+ {"version":3,"file":"screenSpaceReflectionPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/screenSpaceReflectionPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { GeometryBufferRenderer } from \"../Rendering/geometryBufferRenderer\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\nimport type { PrePassRenderer } from \"../Rendering/prePassRenderer\";\r\nimport { ScreenSpaceReflectionsConfiguration } from \"../Rendering/screenSpaceReflectionsConfiguration\";\r\n\r\nimport \"../Shaders/screenSpaceReflection.fragment\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport type { Scene } from \"../scene\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * The ScreenSpaceReflectionPostProcess performs realtime reflections using only and only the available informations on the screen (positions and normals).\r\n * Basically, the screen space reflection post-process will compute reflections according the material's reflectivity.\r\n * @deprecated Use the new SSRRenderingPipeline instead.\r\n */\r\nexport class ScreenSpaceReflectionPostProcess extends PostProcess {\r\n /**\r\n * Gets or sets a reflection threshold mainly used to adjust the reflection's height.\r\n */\r\n @serialize()\r\n public threshold: number = 1.2;\r\n /**\r\n * Gets or sets the current reflection strength. 1.0 is an ideal value but can be increased/decreased for particular results.\r\n */\r\n @serialize()\r\n public strength: number = 1;\r\n /**\r\n * Gets or sets the falloff exponent used while computing fresnel. More the exponent is high, more the reflections will be discrete.\r\n */\r\n @serialize()\r\n public reflectionSpecularFalloffExponent: number = 3;\r\n /**\r\n * Gets or sets the step size used to iterate until the effect finds the color of the reflection's pixel. Typically in interval [0.1, 1.0]\r\n */\r\n @serialize()\r\n public step: number = 1.0;\r\n /**\r\n * Gets or sets the factor applied when computing roughness. Default value is 0.2.\r\n */\r\n @serialize()\r\n public roughnessFactor: number = 0.2;\r\n\r\n private _forceGeometryBuffer: boolean = false;\r\n private get _geometryBufferRenderer(): Nullable<GeometryBufferRenderer> {\r\n if (!this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n\r\n return this._scene.geometryBufferRenderer;\r\n }\r\n\r\n private get _prePassRenderer(): Nullable<PrePassRenderer> {\r\n if (this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n\r\n return this._scene.prePassRenderer;\r\n }\r\n\r\n private _enableSmoothReflections: boolean = false;\r\n private _reflectionSamples: number = 64;\r\n private _smoothSteps: number = 5;\r\n private _isSceneRightHanded: boolean;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"ScreenSpaceReflectionPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"ScreenSpaceReflectionPostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance of ScreenSpaceReflectionPostProcess.\r\n * @param name The name of the effect.\r\n * @param scene The scene containing the objects to calculate reflections.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: true)\r\n * @param forceGeometryBuffer If this post process should use geometry buffer instead of prepass (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n scene: Scene,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_INT,\r\n blockCompilation = false,\r\n forceGeometryBuffer = false\r\n ) {\r\n super(\r\n name,\r\n \"screenSpaceReflection\",\r\n [\"projection\", \"view\", \"threshold\", \"reflectionSpecularFalloffExponent\", \"strength\", \"stepSize\", \"roughnessFactor\"],\r\n [\"textureSampler\", \"normalSampler\", \"positionSampler\", \"reflectivitySampler\"],\r\n options,\r\n camera,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n \"#define SSR_SUPPORTED\\n#define REFLECTION_SAMPLES 64\\n#define SMOOTH_STEPS 5\\n\",\r\n textureType,\r\n undefined,\r\n null,\r\n blockCompilation\r\n );\r\n\r\n this._forceGeometryBuffer = forceGeometryBuffer;\r\n\r\n if (this._forceGeometryBuffer) {\r\n // Get geometry buffer renderer and update effect\r\n const geometryBufferRenderer = scene.enableGeometryBufferRenderer();\r\n if (geometryBufferRenderer) {\r\n if (geometryBufferRenderer.isSupported) {\r\n geometryBufferRenderer.enablePosition = true;\r\n geometryBufferRenderer.enableReflectivity = true;\r\n\r\n if (geometryBufferRenderer.generateNormalsInWorldSpace) {\r\n Logger.Error(\"ScreenSpaceReflectionPostProcess does not support generateNormalsInWorldSpace=true for the geometry buffer renderer!\");\r\n }\r\n }\r\n }\r\n } else {\r\n const prePassRenderer = scene.enablePrePassRenderer();\r\n prePassRenderer?.markAsDirty();\r\n if (prePassRenderer?.generateNormalsInWorldSpace) {\r\n Logger.Error(\"ScreenSpaceReflectionPostProcess does not support generateNormalsInWorldSpace=true for the prepass renderer!\");\r\n }\r\n this._prePassEffectConfiguration = new ScreenSpaceReflectionsConfiguration();\r\n }\r\n\r\n this._updateEffectDefines();\r\n\r\n // On apply, send uniforms\r\n this.onApply = (effect: Effect) => {\r\n const geometryBufferRenderer = this._geometryBufferRenderer;\r\n const prePassRenderer = this._prePassRenderer;\r\n\r\n if (!prePassRenderer && !geometryBufferRenderer) {\r\n return;\r\n }\r\n\r\n if (geometryBufferRenderer) {\r\n // Samplers\r\n const positionIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.POSITION_TEXTURE_TYPE);\r\n const roughnessIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.REFLECTIVITY_TEXTURE_TYPE);\r\n\r\n effect.setTexture(\"normalSampler\", geometryBufferRenderer.getGBuffer().textures[1]);\r\n effect.setTexture(\"positionSampler\", geometryBufferRenderer.getGBuffer().textures[positionIndex]);\r\n effect.setTexture(\"reflectivitySampler\", geometryBufferRenderer.getGBuffer().textures[roughnessIndex]);\r\n } else if (prePassRenderer) {\r\n // Samplers\r\n const positionIndex = prePassRenderer.getIndex(Constants.PREPASS_POSITION_TEXTURE_TYPE);\r\n const roughnessIndex = prePassRenderer.getIndex(Constants.PREPASS_REFLECTIVITY_TEXTURE_TYPE);\r\n const normalIndex = prePassRenderer.getIndex(Constants.PREPASS_NORMAL_TEXTURE_TYPE);\r\n\r\n effect.setTexture(\"normalSampler\", prePassRenderer.getRenderTarget().textures[normalIndex]);\r\n effect.setTexture(\"positionSampler\", prePassRenderer.getRenderTarget().textures[positionIndex]);\r\n effect.setTexture(\"reflectivitySampler\", prePassRenderer.getRenderTarget().textures[roughnessIndex]);\r\n }\r\n\r\n // Uniforms\r\n const camera = scene.activeCamera;\r\n if (!camera) {\r\n return;\r\n }\r\n\r\n const viewMatrix = camera.getViewMatrix(true);\r\n const projectionMatrix = camera.getProjectionMatrix(true);\r\n\r\n effect.setMatrix(\"projection\", projectionMatrix);\r\n effect.setMatrix(\"view\", viewMatrix);\r\n effect.setFloat(\"threshold\", this.threshold);\r\n effect.setFloat(\"reflectionSpecularFalloffExponent\", this.reflectionSpecularFalloffExponent);\r\n effect.setFloat(\"strength\", this.strength);\r\n effect.setFloat(\"stepSize\", this.step);\r\n effect.setFloat(\"roughnessFactor\", this.roughnessFactor);\r\n };\r\n\r\n this._isSceneRightHanded = scene.useRightHandedSystem;\r\n }\r\n\r\n /**\r\n * Gets whether or not smoothing reflections is enabled.\r\n * Enabling smoothing will require more GPU power and can generate a drop in FPS.\r\n */\r\n @serialize()\r\n public get enableSmoothReflections(): boolean {\r\n return this._enableSmoothReflections;\r\n }\r\n\r\n /**\r\n * Sets whether or not smoothing reflections is enabled.\r\n * Enabling smoothing will require more GPU power and can generate a drop in FPS.\r\n */\r\n public set enableSmoothReflections(enabled: boolean) {\r\n if (enabled === this._enableSmoothReflections) {\r\n return;\r\n }\r\n\r\n this._enableSmoothReflections = enabled;\r\n this._updateEffectDefines();\r\n }\r\n\r\n /**\r\n * Gets the number of samples taken while computing reflections. More samples count is high,\r\n * more the post-process wil require GPU power and can generate a drop in FPS. Basically in interval [25, 100].\r\n */\r\n @serialize()\r\n public get reflectionSamples(): number {\r\n return this._reflectionSamples;\r\n }\r\n\r\n /**\r\n * Sets the number of samples taken while computing reflections. More samples count is high,\r\n * more the post-process wil require GPU power and can generate a drop in FPS. Basically in interval [25, 100].\r\n */\r\n public set reflectionSamples(samples: number) {\r\n if (samples === this._reflectionSamples) {\r\n return;\r\n }\r\n\r\n this._reflectionSamples = samples;\r\n this._updateEffectDefines();\r\n }\r\n\r\n /**\r\n * Gets the number of samples taken while smoothing reflections. More samples count is high,\r\n * more the post-process will require GPU power and can generate a drop in FPS.\r\n * Default value (5.0) work pretty well in all cases but can be adjusted.\r\n */\r\n @serialize()\r\n public get smoothSteps(): number {\r\n return this._smoothSteps;\r\n }\r\n\r\n /*\r\n * Sets the number of samples taken while smoothing reflections. More samples count is high,\r\n * more the post-process will require GPU power and can generate a drop in FPS.\r\n * Default value (5.0) work pretty well in all cases but can be adjusted.\r\n */\r\n public set smoothSteps(steps: number) {\r\n if (steps === this._smoothSteps) {\r\n return;\r\n }\r\n\r\n this._smoothSteps = steps;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _updateEffectDefines(): void {\r\n const defines: string[] = [];\r\n if (this._geometryBufferRenderer || this._prePassRenderer) {\r\n defines.push(\"#define SSR_SUPPORTED\");\r\n }\r\n if (this._enableSmoothReflections) {\r\n defines.push(\"#define ENABLE_SMOOTH_REFLECTIONS\");\r\n }\r\n if (this._isSceneRightHanded) {\r\n defines.push(\"#define RIGHT_HANDED_SCENE\");\r\n }\r\n\r\n defines.push(\"#define REFLECTION_SAMPLES \" + (this._reflectionSamples >> 0));\r\n defines.push(\"#define SMOOTH_STEPS \" + (this._smoothSteps >> 0));\r\n\r\n this.updateEffect(defines.join(\"\\n\"));\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new ScreenSpaceReflectionPostProcess(\r\n parsedPostProcess.name,\r\n scene,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.textureType,\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ScreenSpaceReflectionPostProcess\", ScreenSpaceReflectionPostProcess);\r\n"]}