@shapediver/viewer.rendering-engine.rendering-engine-threejs 3.0.0

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 (301) hide show
  1. package/LICENSE +73 -0
  2. package/README.md +3 -0
  3. package/dist/RenderingEngine.d.ts +296 -0
  4. package/dist/RenderingEngine.d.ts.map +1 -0
  5. package/dist/RenderingEngine.js +1079 -0
  6. package/dist/RenderingEngine.js.map +1 -0
  7. package/dist/index.d.ts +12 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +47 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/injectors/Tag3dGeometryCreationInjector.d.ts +11 -0
  12. package/dist/injectors/Tag3dGeometryCreationInjector.d.ts.map +1 -0
  13. package/dist/injectors/Tag3dGeometryCreationInjector.js +169 -0
  14. package/dist/injectors/Tag3dGeometryCreationInjector.js.map +1 -0
  15. package/dist/injectors/TextureUnifierInjector.d.ts +14 -0
  16. package/dist/injectors/TextureUnifierInjector.d.ts.map +1 -0
  17. package/dist/injectors/TextureUnifierInjector.js +227 -0
  18. package/dist/injectors/TextureUnifierInjector.js.map +1 -0
  19. package/dist/interfaces/ILoader.d.ts +4 -0
  20. package/dist/interfaces/ILoader.d.ts.map +1 -0
  21. package/dist/interfaces/ILoader.js +3 -0
  22. package/dist/interfaces/ILoader.js.map +1 -0
  23. package/dist/interfaces/IPostProcessingEffectDefinitions.d.ts +307 -0
  24. package/dist/interfaces/IPostProcessingEffectDefinitions.d.ts.map +1 -0
  25. package/dist/interfaces/IPostProcessingEffectDefinitions.js +31 -0
  26. package/dist/interfaces/IPostProcessingEffectDefinitions.js.map +1 -0
  27. package/dist/interfaces/IRenderingEngine.d.ts +43 -0
  28. package/dist/interfaces/IRenderingEngine.d.ts.map +1 -0
  29. package/dist/interfaces/IRenderingEngine.js +3 -0
  30. package/dist/interfaces/IRenderingEngine.js.map +1 -0
  31. package/dist/loaders/EnvironmentMapLoader.d.ts +98 -0
  32. package/dist/loaders/EnvironmentMapLoader.d.ts.map +1 -0
  33. package/dist/loaders/EnvironmentMapLoader.js +348 -0
  34. package/dist/loaders/EnvironmentMapLoader.js.map +1 -0
  35. package/dist/loaders/GeometryLoader.d.ts +38 -0
  36. package/dist/loaders/GeometryLoader.d.ts.map +1 -0
  37. package/dist/loaders/GeometryLoader.js +505 -0
  38. package/dist/loaders/GeometryLoader.js.map +1 -0
  39. package/dist/loaders/HTMLElementAnchorLoader.d.ts +17 -0
  40. package/dist/loaders/HTMLElementAnchorLoader.d.ts.map +1 -0
  41. package/dist/loaders/HTMLElementAnchorLoader.js +84 -0
  42. package/dist/loaders/HTMLElementAnchorLoader.js.map +1 -0
  43. package/dist/loaders/LightLoader.d.ts +19 -0
  44. package/dist/loaders/LightLoader.d.ts.map +1 -0
  45. package/dist/loaders/LightLoader.js +152 -0
  46. package/dist/loaders/LightLoader.js.map +1 -0
  47. package/dist/loaders/MaterialLoader.d.ts +99 -0
  48. package/dist/loaders/MaterialLoader.d.ts.map +1 -0
  49. package/dist/loaders/MaterialLoader.js +1175 -0
  50. package/dist/loaders/MaterialLoader.js.map +1 -0
  51. package/dist/managers/CameraManager.d.ts +20 -0
  52. package/dist/managers/CameraManager.d.ts.map +1 -0
  53. package/dist/managers/CameraManager.js +195 -0
  54. package/dist/managers/CameraManager.js.map +1 -0
  55. package/dist/managers/EnvironmentGeometryManager.d.ts +43 -0
  56. package/dist/managers/EnvironmentGeometryManager.d.ts.map +1 -0
  57. package/dist/managers/EnvironmentGeometryManager.js +210 -0
  58. package/dist/managers/EnvironmentGeometryManager.js.map +1 -0
  59. package/dist/managers/PostProcessingManager.d.ts +1014 -0
  60. package/dist/managers/PostProcessingManager.d.ts.map +1 -0
  61. package/dist/managers/PostProcessingManager.js +1013 -0
  62. package/dist/managers/PostProcessingManager.js.map +1 -0
  63. package/dist/managers/RenderingManager.d.ts +83 -0
  64. package/dist/managers/RenderingManager.d.ts.map +1 -0
  65. package/dist/managers/RenderingManager.js +567 -0
  66. package/dist/managers/RenderingManager.js.map +1 -0
  67. package/dist/managers/SceneTracingManager.d.ts +26 -0
  68. package/dist/managers/SceneTracingManager.d.ts.map +1 -0
  69. package/dist/managers/SceneTracingManager.js +122 -0
  70. package/dist/managers/SceneTracingManager.js.map +1 -0
  71. package/dist/managers/SceneTreeManager.d.ts +55 -0
  72. package/dist/managers/SceneTreeManager.d.ts.map +1 -0
  73. package/dist/managers/SceneTreeManager.js +501 -0
  74. package/dist/managers/SceneTreeManager.js.map +1 -0
  75. package/dist/managers/postprocessing/GodRaysManager.d.ts +13 -0
  76. package/dist/managers/postprocessing/GodRaysManager.d.ts.map +1 -0
  77. package/dist/managers/postprocessing/GodRaysManager.js +64 -0
  78. package/dist/managers/postprocessing/GodRaysManager.js.map +1 -0
  79. package/dist/managers/postprocessing/OutlineManager.d.ts +15 -0
  80. package/dist/managers/postprocessing/OutlineManager.d.ts.map +1 -0
  81. package/dist/managers/postprocessing/OutlineManager.js +67 -0
  82. package/dist/managers/postprocessing/OutlineManager.js.map +1 -0
  83. package/dist/managers/postprocessing/SSAARenderPass.d.ts +54 -0
  84. package/dist/managers/postprocessing/SSAARenderPass.d.ts.map +1 -0
  85. package/dist/managers/postprocessing/SSAARenderPass.js +234 -0
  86. package/dist/managers/postprocessing/SSAARenderPass.js.map +1 -0
  87. package/dist/managers/postprocessing/SelectiveBloomManager.d.ts +15 -0
  88. package/dist/managers/postprocessing/SelectiveBloomManager.d.ts.map +1 -0
  89. package/dist/managers/postprocessing/SelectiveBloomManager.js +67 -0
  90. package/dist/managers/postprocessing/SelectiveBloomManager.js.map +1 -0
  91. package/dist/managers/postprocessing/ao/ao/AOEffect.d.ts +47 -0
  92. package/dist/managers/postprocessing/ao/ao/AOEffect.d.ts.map +1 -0
  93. package/dist/managers/postprocessing/ao/ao/AOEffect.js +134 -0
  94. package/dist/managers/postprocessing/ao/ao/AOEffect.js.map +1 -0
  95. package/dist/managers/postprocessing/ao/ao/AOPass.d.ts +13 -0
  96. package/dist/managers/postprocessing/ao/ao/AOPass.d.ts.map +1 -0
  97. package/dist/managers/postprocessing/ao/ao/AOPass.js +78 -0
  98. package/dist/managers/postprocessing/ao/ao/AOPass.js.map +1 -0
  99. package/dist/managers/postprocessing/ao/ao/shader/ao_compose.d.ts +2 -0
  100. package/dist/managers/postprocessing/ao/ao/shader/ao_compose.d.ts.map +1 -0
  101. package/dist/managers/postprocessing/ao/ao/shader/ao_compose.js +23 -0
  102. package/dist/managers/postprocessing/ao/ao/shader/ao_compose.js.map +1 -0
  103. package/dist/managers/postprocessing/ao/hbao/HBAOEffect.d.ts +15 -0
  104. package/dist/managers/postprocessing/ao/hbao/HBAOEffect.d.ts.map +1 -0
  105. package/dist/managers/postprocessing/ao/hbao/HBAOEffect.js +25 -0
  106. package/dist/managers/postprocessing/ao/hbao/HBAOEffect.js.map +1 -0
  107. package/dist/managers/postprocessing/ao/hbao/shader/hbao.d.ts +2 -0
  108. package/dist/managers/postprocessing/ao/hbao/shader/hbao.d.ts.map +1 -0
  109. package/dist/managers/postprocessing/ao/hbao/shader/hbao.js +102 -0
  110. package/dist/managers/postprocessing/ao/hbao/shader/hbao.js.map +1 -0
  111. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts +2 -0
  112. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts.map +1 -0
  113. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js +99 -0
  114. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js.map +1 -0
  115. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.d.ts +37 -0
  116. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.d.ts.map +1 -0
  117. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js +171 -0
  118. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js.map +1 -0
  119. package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.d.ts +2 -0
  120. package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.d.ts.map +1 -0
  121. package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.js +131 -0
  122. package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.js.map +1 -0
  123. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.d.ts +15 -0
  124. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.d.ts.map +1 -0
  125. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js +76 -0
  126. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js.map +1 -0
  127. package/dist/managers/postprocessing/ao/ssao/shader/ssao.d.ts +2 -0
  128. package/dist/managers/postprocessing/ao/ssao/shader/ssao.d.ts.map +1 -0
  129. package/dist/managers/postprocessing/ao/ssao/shader/ssao.js +134 -0
  130. package/dist/managers/postprocessing/ao/ssao/shader/ssao.js.map +1 -0
  131. package/dist/managers/postprocessing/ao/utils/shader/basic.d.ts +2 -0
  132. package/dist/managers/postprocessing/ao/utils/shader/basic.d.ts.map +1 -0
  133. package/dist/managers/postprocessing/ao/utils/shader/basic.js +12 -0
  134. package/dist/managers/postprocessing/ao/utils/shader/basic.js.map +1 -0
  135. package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.d.ts +2 -0
  136. package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.d.ts.map +1 -0
  137. package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.js +42 -0
  138. package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.js.map +1 -0
  139. package/dist/managers/postprocessing/utils/CopyMaterial.d.ts +38 -0
  140. package/dist/managers/postprocessing/utils/CopyMaterial.d.ts.map +1 -0
  141. package/dist/managers/postprocessing/utils/CopyMaterial.js +106 -0
  142. package/dist/managers/postprocessing/utils/CopyMaterial.js.map +1 -0
  143. package/dist/managers/postprocessing/utils/CopyShader.d.ts +14 -0
  144. package/dist/managers/postprocessing/utils/CopyShader.d.ts.map +1 -0
  145. package/dist/managers/postprocessing/utils/CopyShader.js +36 -0
  146. package/dist/managers/postprocessing/utils/CopyShader.js.map +1 -0
  147. package/dist/managers/postprocessing/utils/FullScreenQuad.d.ts +10 -0
  148. package/dist/managers/postprocessing/utils/FullScreenQuad.d.ts.map +1 -0
  149. package/dist/managers/postprocessing/utils/FullScreenQuad.js +29 -0
  150. package/dist/managers/postprocessing/utils/FullScreenQuad.js.map +1 -0
  151. package/dist/managers/postprocessing/utils/NormalPass.d.ts +88 -0
  152. package/dist/managers/postprocessing/utils/NormalPass.d.ts.map +1 -0
  153. package/dist/managers/postprocessing/utils/NormalPass.js +157 -0
  154. package/dist/managers/postprocessing/utils/NormalPass.js.map +1 -0
  155. package/dist/managers/postprocessing/utils/RenderPass.d.ts +115 -0
  156. package/dist/managers/postprocessing/utils/RenderPass.d.ts.map +1 -0
  157. package/dist/managers/postprocessing/utils/RenderPass.js +251 -0
  158. package/dist/managers/postprocessing/utils/RenderPass.js.map +1 -0
  159. package/dist/materials/GemMaterial.d.ts +38 -0
  160. package/dist/materials/GemMaterial.d.ts.map +1 -0
  161. package/dist/materials/GemMaterial.js +253 -0
  162. package/dist/materials/GemMaterial.js.map +1 -0
  163. package/dist/materials/MeshUnlitMaterialParameters.d.ts +4 -0
  164. package/dist/materials/MeshUnlitMaterialParameters.d.ts.map +1 -0
  165. package/dist/materials/MeshUnlitMaterialParameters.js +3 -0
  166. package/dist/materials/MeshUnlitMaterialParameters.js.map +1 -0
  167. package/dist/materials/MultiPointsMaterial.d.ts +94 -0
  168. package/dist/materials/MultiPointsMaterial.d.ts.map +1 -0
  169. package/dist/materials/MultiPointsMaterial.js +567 -0
  170. package/dist/materials/MultiPointsMaterial.js.map +1 -0
  171. package/dist/materials/SpecularGlossinessMaterial.d.ts +14 -0
  172. package/dist/materials/SpecularGlossinessMaterial.d.ts.map +1 -0
  173. package/dist/materials/SpecularGlossinessMaterial.js +162 -0
  174. package/dist/materials/SpecularGlossinessMaterial.js.map +1 -0
  175. package/dist/objects/SDBone.d.ts +13 -0
  176. package/dist/objects/SDBone.d.ts.map +1 -0
  177. package/dist/objects/SDBone.js +75 -0
  178. package/dist/objects/SDBone.js.map +1 -0
  179. package/dist/objects/SDColor.d.ts +17 -0
  180. package/dist/objects/SDColor.d.ts.map +1 -0
  181. package/dist/objects/SDColor.js +49 -0
  182. package/dist/objects/SDColor.js.map +1 -0
  183. package/dist/objects/SDData.d.ts +19 -0
  184. package/dist/objects/SDData.d.ts.map +1 -0
  185. package/dist/objects/SDData.js +48 -0
  186. package/dist/objects/SDData.js.map +1 -0
  187. package/dist/objects/SDObject.d.ts +14 -0
  188. package/dist/objects/SDObject.d.ts.map +1 -0
  189. package/dist/objects/SDObject.js +81 -0
  190. package/dist/objects/SDObject.js.map +1 -0
  191. package/dist/shaders/PCSS.d.ts +3 -0
  192. package/dist/shaders/PCSS.d.ts.map +1 -0
  193. package/dist/shaders/PCSS.js +127 -0
  194. package/dist/shaders/PCSS.js.map +1 -0
  195. package/dist/shaders/gem.d.ts +3 -0
  196. package/dist/shaders/gem.d.ts.map +1 -0
  197. package/dist/shaders/gem.js +578 -0
  198. package/dist/shaders/gem.js.map +1 -0
  199. package/dist/shaders/multi_points.d.ts +3 -0
  200. package/dist/shaders/multi_points.d.ts.map +1 -0
  201. package/dist/shaders/multi_points.js +294 -0
  202. package/dist/shaders/multi_points.js.map +1 -0
  203. package/dist/styling/viewport-css.d.ts +2 -0
  204. package/dist/styling/viewport-css.d.ts.map +1 -0
  205. package/dist/styling/viewport-css.js +117 -0
  206. package/dist/styling/viewport-css.js.map +1 -0
  207. package/dist/three/font.d.ts +2365 -0
  208. package/dist/three/font.d.ts.map +1 -0
  209. package/dist/three/font.js +6 -0
  210. package/dist/three/font.js.map +1 -0
  211. package/dist/three/geometries/TextGeometry.d.ts +22 -0
  212. package/dist/three/geometries/TextGeometry.d.ts.map +1 -0
  213. package/dist/three/geometries/TextGeometry.js +45 -0
  214. package/dist/three/geometries/TextGeometry.js.map +1 -0
  215. package/dist/three/loaders/FontLoader.d.ts +15 -0
  216. package/dist/three/loaders/FontLoader.d.ts.map +1 -0
  217. package/dist/three/loaders/FontLoader.js +118 -0
  218. package/dist/three/loaders/FontLoader.js.map +1 -0
  219. package/dist/three/loaders/RGBELoader.d.ts +24 -0
  220. package/dist/three/loaders/RGBELoader.d.ts.map +1 -0
  221. package/dist/three/loaders/RGBELoader.js +299 -0
  222. package/dist/three/loaders/RGBELoader.js.map +1 -0
  223. package/dist/types/IThreejsData.d.ts +7 -0
  224. package/dist/types/IThreejsData.d.ts.map +1 -0
  225. package/dist/types/IThreejsData.js +3 -0
  226. package/dist/types/IThreejsData.js.map +1 -0
  227. package/dist/types/ThreejsData.d.ts +11 -0
  228. package/dist/types/ThreejsData.d.ts.map +1 -0
  229. package/dist/types/ThreejsData.js +42 -0
  230. package/dist/types/ThreejsData.js.map +1 -0
  231. package/package.json +65 -0
  232. package/src/RenderingEngine.ts +1342 -0
  233. package/src/index.ts +23 -0
  234. package/src/injectors/Tag3dGeometryCreationInjector.ts +170 -0
  235. package/src/injectors/TextureUnifierInjector.ts +224 -0
  236. package/src/interfaces/ILoader.ts +3 -0
  237. package/src/interfaces/IPostProcessingEffectDefinitions.ts +402 -0
  238. package/src/interfaces/IRenderingEngine.ts +48 -0
  239. package/src/loaders/EnvironmentMapLoader.ts +355 -0
  240. package/src/loaders/GeometryLoader.ts +565 -0
  241. package/src/loaders/HTMLElementAnchorLoader.ts +107 -0
  242. package/src/loaders/LightLoader.ts +171 -0
  243. package/src/loaders/MaterialLoader.ts +1418 -0
  244. package/src/managers/CameraManager.ts +178 -0
  245. package/src/managers/EnvironmentGeometryManager.ts +224 -0
  246. package/src/managers/PostProcessingManager.ts +1169 -0
  247. package/src/managers/RenderingManager.ts +657 -0
  248. package/src/managers/SceneTracingManager.ts +120 -0
  249. package/src/managers/SceneTreeManager.ts +569 -0
  250. package/src/managers/postprocessing/GodRaysManager.ts +52 -0
  251. package/src/managers/postprocessing/OutlineManager.ts +58 -0
  252. package/src/managers/postprocessing/SSAARenderPass.ts +339 -0
  253. package/src/managers/postprocessing/SelectiveBloomManager.ts +58 -0
  254. package/src/managers/postprocessing/ao/ao/AOEffect.ts +180 -0
  255. package/src/managers/postprocessing/ao/ao/AOPass.ts +128 -0
  256. package/src/managers/postprocessing/ao/ao/shader/ao_compose.glsl +17 -0
  257. package/src/managers/postprocessing/ao/ao/shader/ao_compose.ts +19 -0
  258. package/src/managers/postprocessing/ao/hbao/HBAOEffect.ts +41 -0
  259. package/src/managers/postprocessing/ao/hbao/shader/hbao.glsl +96 -0
  260. package/src/managers/postprocessing/ao/hbao/shader/hbao.ts +98 -0
  261. package/src/managers/postprocessing/ao/hbao/shader/hbao_utils.glsl +92 -0
  262. package/src/managers/postprocessing/ao/hbao/shader/hbao_utils.ts +95 -0
  263. package/src/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.ts +245 -0
  264. package/src/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.glsl +125 -0
  265. package/src/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.ts +127 -0
  266. package/src/managers/postprocessing/ao/ssao/SSAOEffect.ts +106 -0
  267. package/src/managers/postprocessing/ao/ssao/shader/ssao.glsl +128 -0
  268. package/src/managers/postprocessing/ao/ssao/shader/ssao.ts +130 -0
  269. package/src/managers/postprocessing/ao/utils/shader/basic.glsl +6 -0
  270. package/src/managers/postprocessing/ao/utils/shader/basic.ts +8 -0
  271. package/src/managers/postprocessing/ao/utils/shader/sampleBlueNoise.glsl +36 -0
  272. package/src/managers/postprocessing/ao/utils/shader/sampleBlueNoise.ts +38 -0
  273. package/src/managers/postprocessing/utils/CopyMaterial.ts +130 -0
  274. package/src/managers/postprocessing/utils/CopyShader.ts +39 -0
  275. package/src/managers/postprocessing/utils/FullScreenQuad.ts +47 -0
  276. package/src/managers/postprocessing/utils/NormalPass.ts +222 -0
  277. package/src/managers/postprocessing/utils/RenderPass.ts +366 -0
  278. package/src/materials/GemMaterial.ts +268 -0
  279. package/src/materials/MeshUnlitMaterialParameters.ts +4 -0
  280. package/src/materials/MultiPointsMaterial.ts +646 -0
  281. package/src/materials/SpecularGlossinessMaterial.ts +182 -0
  282. package/src/objects/SDBone.ts +51 -0
  283. package/src/objects/SDColor.ts +54 -0
  284. package/src/objects/SDData.ts +44 -0
  285. package/src/objects/SDObject.ts +58 -0
  286. package/src/shaders/PCSS.ts +124 -0
  287. package/src/shaders/gem.ts +575 -0
  288. package/src/shaders/gem_frag.glsl +517 -0
  289. package/src/shaders/gem_vert.glsl +53 -0
  290. package/src/shaders/multi_points.ts +291 -0
  291. package/src/shaders/multi_points_frag.glsl +166 -0
  292. package/src/shaders/multi_points_vert.glsl +120 -0
  293. package/src/styling/viewport-css.ts +113 -0
  294. package/src/styling/viewport.css +111 -0
  295. package/src/three/font.ts +2 -0
  296. package/src/three/geometries/TextGeometry.ts +58 -0
  297. package/src/three/loaders/FontLoader.ts +205 -0
  298. package/src/three/loaders/RGBELoader.ts +496 -0
  299. package/src/types/IThreejsData.ts +16 -0
  300. package/src/types/ThreejsData.ts +43 -0
  301. package/tsconfig.json +20 -0
@@ -0,0 +1,1013 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.PostProcessingManager = void 0;
36
+ const THREE = __importStar(require("three"));
37
+ const postprocessing_1 = require("postprocessing");
38
+ const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
39
+ const GodRaysManager_1 = require("./postprocessing/GodRaysManager");
40
+ const IPostProcessingEffectDefinitions_1 = require("../interfaces/IPostProcessingEffectDefinitions");
41
+ const OutlineManager_1 = require("./postprocessing/OutlineManager");
42
+ const SelectiveBloomManager_1 = require("./postprocessing/SelectiveBloomManager");
43
+ const SSAARenderPass_1 = require("./postprocessing/SSAARenderPass");
44
+ const SSAOEffect_1 = require("./postprocessing/ao/ssao/SSAOEffect");
45
+ const HBAOEffect_1 = require("./postprocessing/ao/hbao/HBAOEffect");
46
+ const gl_matrix_1 = require("gl-matrix");
47
+ class PostProcessingManager {
48
+ // #endregion Properties (19)
49
+ // #region Constructors (1)
50
+ constructor(_renderingEngine) {
51
+ this._renderingEngine = _renderingEngine;
52
+ // #region Properties (19)
53
+ this._converter = viewer_shared_services_1.Converter.instance;
54
+ this._eventEngine = viewer_shared_services_1.EventEngine.instance;
55
+ this._systemInfo = viewer_shared_services_1.SystemInfo.instance;
56
+ this._uuidGenerator = viewer_shared_services_1.UuidGenerator.instance;
57
+ this._antiAliasingTechnique = IPostProcessingEffectDefinitions_1.ANTI_ALIASING_TECHNIQUE.SMAA;
58
+ this._antiAliasingTechniqueMobile = IPostProcessingEffectDefinitions_1.ANTI_ALIASING_TECHNIQUE.FXAA;
59
+ this._effectDefinitions = [];
60
+ this._effects = [];
61
+ this._enablePostProcessingOnMobile = true;
62
+ this._godRaysManagers = {};
63
+ this._manualPostProcessing = false;
64
+ this._outlineManagers = {};
65
+ this._selectiveBloomManagers = {};
66
+ this._sceneExtents = 0;
67
+ this._suspendEffectPassUpdate = false;
68
+ this._currentCameraId = '';
69
+ this._eventEngine.addListener(viewer_shared_services_1.EVENTTYPE.SCENE.SCENE_BOUNDING_BOX_CHANGE, (e) => {
70
+ const viewerEvent = e;
71
+ if (viewerEvent.viewportId === this._renderingEngine.id) {
72
+ this._sceneExtents = gl_matrix_1.vec3.distance(viewerEvent.boundingBox.min, viewerEvent.boundingBox.max);
73
+ this.changeEffectPass();
74
+ }
75
+ });
76
+ // const token = this._uuidGenerator.create();
77
+ // this._effectDefinitions.push({
78
+ // token,
79
+ // definition: {
80
+ // type: POST_PROCESSING_EFFECT_TYPE.SSAO,
81
+ // properties: this.getDefaultEffectProperties(POST_PROCESSING_EFFECT_TYPE.SSAO)
82
+ // }
83
+ // });
84
+ }
85
+ // #endregion Constructors (1)
86
+ // #region Public Accessors (15)
87
+ get antiAliasingTechnique() {
88
+ return this._antiAliasingTechnique;
89
+ }
90
+ set antiAliasingTechnique(value) {
91
+ this._antiAliasingTechnique = value;
92
+ this.changeEffectPass();
93
+ }
94
+ get antiAliasingTechniqueMobile() {
95
+ return this._antiAliasingTechniqueMobile;
96
+ }
97
+ set antiAliasingTechniqueMobile(value) {
98
+ this._antiAliasingTechniqueMobile = value;
99
+ // we don't allow SSAA on mobile devices anymore as it is too slow
100
+ if (this._antiAliasingTechniqueMobile === IPostProcessingEffectDefinitions_1.ANTI_ALIASING_TECHNIQUE.SSAA)
101
+ this._antiAliasingTechniqueMobile = IPostProcessingEffectDefinitions_1.ANTI_ALIASING_TECHNIQUE.SMAA;
102
+ this.changeEffectPass();
103
+ }
104
+ get effectComposer() {
105
+ return this._composer;
106
+ }
107
+ get effects() {
108
+ return this._effects;
109
+ }
110
+ get enablePostProcessingOnMobile() {
111
+ return this._enablePostProcessingOnMobile;
112
+ }
113
+ set enablePostProcessingOnMobile(value) {
114
+ this._enablePostProcessingOnMobile = value;
115
+ }
116
+ get godRaysManagers() {
117
+ return this._godRaysManagers;
118
+ }
119
+ get manualPostProcessing() {
120
+ return this._manualPostProcessing;
121
+ }
122
+ set manualPostProcessing(value) {
123
+ this._manualPostProcessing = value;
124
+ if (this._composer && this._manualPostProcessing === true)
125
+ this._composer.removeAllPasses();
126
+ }
127
+ get outlineManagers() {
128
+ return this._outlineManagers;
129
+ }
130
+ get selectiveBloomManagers() {
131
+ return this._selectiveBloomManagers;
132
+ }
133
+ get ssaaSampleLevel() {
134
+ return this._ssaaRenderPass ? this._ssaaRenderPass.sampleLevel : 2;
135
+ }
136
+ set ssaaSampleLevel(value) {
137
+ if (this._ssaaRenderPass)
138
+ this._ssaaRenderPass.sampleLevel = value;
139
+ }
140
+ // #endregion Public Accessors (15)
141
+ // #region Public Methods (10)
142
+ addEffect(definition, t) {
143
+ const token = t || this._uuidGenerator.create();
144
+ this._effectDefinitions.push({ token, definition });
145
+ switch (definition.type) {
146
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.GOD_RAYS:
147
+ if (!this._godRaysManagers[token])
148
+ this._godRaysManagers[token] = new GodRaysManager_1.GodRaysManager(this._renderingEngine);
149
+ break;
150
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.OUTLINE:
151
+ if (!this._outlineManagers[token])
152
+ this._outlineManagers[token] = new OutlineManager_1.OutlineManager(this._renderingEngine);
153
+ break;
154
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SELECTIVE_BLOOM:
155
+ if (!this._selectiveBloomManagers[token])
156
+ this._selectiveBloomManagers[token] = new SelectiveBloomManager_1.SelectiveBloomManager(this._renderingEngine);
157
+ break;
158
+ default:
159
+ }
160
+ this.changeEffectPass();
161
+ return token;
162
+ }
163
+ applySettings(settingsEngine) {
164
+ this._suspendEffectPassUpdate = true;
165
+ this.antiAliasingTechnique = settingsEngine.settings.postprocessing.antiAliasingTechnique;
166
+ this.antiAliasingTechniqueMobile = settingsEngine.settings.postprocessing.antiAliasingTechniqueMobile;
167
+ // we don't allow SSAA on mobile devices anymore as it is too slow
168
+ if (this._antiAliasingTechniqueMobile === IPostProcessingEffectDefinitions_1.ANTI_ALIASING_TECHNIQUE.SSAA)
169
+ this._antiAliasingTechniqueMobile = IPostProcessingEffectDefinitions_1.ANTI_ALIASING_TECHNIQUE.SMAA;
170
+ this.enablePostProcessingOnMobile = settingsEngine.settings.postprocessing.enablePostProcessingOnMobile;
171
+ this.ssaaSampleLevel = settingsEngine.settings.postprocessing.ssaaSampleLevel;
172
+ this._effectDefinitions = [];
173
+ const effects = settingsEngine.settings.postprocessing.effects;
174
+ for (let i = 0; i < effects.length; i++) {
175
+ const token = this._uuidGenerator.create();
176
+ this._effectDefinitions.push({
177
+ token,
178
+ definition: {
179
+ type: effects[i].type,
180
+ properties: effects[i].properties
181
+ }
182
+ });
183
+ }
184
+ this._suspendEffectPassUpdate = false;
185
+ this.changeEffectPass();
186
+ }
187
+ changeEffectPass() {
188
+ if (!this._composer)
189
+ return;
190
+ if (this._suspendEffectPassUpdate === true)
191
+ return;
192
+ if (this._systemInfo.isMobile === true && this._enablePostProcessingOnMobile === false)
193
+ return;
194
+ if (this._manualPostProcessing)
195
+ return;
196
+ for (let i = 0; i < this._composer.passes.length; i++)
197
+ this._composer.passes[i].dispose();
198
+ this._composer.removeAllPasses();
199
+ const antiAliasingTechnique = this._systemInfo.isMobile === true ? this._antiAliasingTechniqueMobile : this._antiAliasingTechnique;
200
+ if (antiAliasingTechnique === IPostProcessingEffectDefinitions_1.ANTI_ALIASING_TECHNIQUE.SSAA) {
201
+ this._composer.addPass(this._ssaaRenderPass);
202
+ }
203
+ else {
204
+ this._composer.addPass(this._renderPass);
205
+ }
206
+ // remove the effects where the tokens are not in the effectDefinitions
207
+ this._effects.forEach(e => e.effect.dispose());
208
+ this._effects = [];
209
+ for (let i = 0; i < this._effectDefinitions.length; i++) {
210
+ switch (this._effectDefinitions[i].definition.type) {
211
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.BLOOM:
212
+ {
213
+ const definition = this._effectDefinitions[i].definition;
214
+ const properties = definition.properties || {};
215
+ this._effects.push({
216
+ token: this._effectDefinitions[i].token,
217
+ effect: new postprocessing_1.BloomEffect({
218
+ blendFunction: properties.blendFunction,
219
+ luminanceThreshold: properties.luminanceThreshold,
220
+ luminanceSmoothing: properties.luminanceSmoothing,
221
+ mipmapBlur: properties.mipmapBlur,
222
+ intensity: properties.intensity,
223
+ kernelSize: properties.kernelSize
224
+ })
225
+ });
226
+ }
227
+ break;
228
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.CHROMATIC_ABERRATION:
229
+ {
230
+ const definition = this._effectDefinitions[i].definition;
231
+ const properties = definition.properties || {};
232
+ const offsetArray = properties.offset !== undefined ? Array.isArray(properties.offset) ? properties.offset : [properties.offset.x, properties.offset.y] : undefined;
233
+ this._effects.push({
234
+ token: this._effectDefinitions[i].token,
235
+ effect: new postprocessing_1.ChromaticAberrationEffect({
236
+ blendFunction: properties.blendFunction,
237
+ offset: offsetArray ? new THREE.Vector2(...offsetArray) : undefined,
238
+ radialModulation: properties.radialModulation !== undefined ? properties.radialModulation : false,
239
+ modulationOffset: properties.modulationOffset !== undefined ? properties.modulationOffset : 0.15
240
+ })
241
+ });
242
+ }
243
+ break;
244
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.DEPTH_OF_FIELD:
245
+ {
246
+ const definition = this._effectDefinitions[i].definition;
247
+ const properties = definition.properties || {};
248
+ const depthOfFieldEffect = new postprocessing_1.DepthOfFieldEffect(this._renderingEngine.camera, {
249
+ blendFunction: properties.blendFunction,
250
+ focusDistance: properties.focusDistance !== undefined ? properties.focusDistance : 0,
251
+ focusRange: properties.focusRange !== undefined ? properties.focusRange : 0.01,
252
+ bokehScale: properties.bokehScale !== undefined ? properties.bokehScale : 5,
253
+ resolutionScale: 1
254
+ });
255
+ depthOfFieldEffect.resolution.height = 1080;
256
+ depthOfFieldEffect.blurPass.kernelSize = postprocessing_1.KernelSize.HUGE;
257
+ this._effects.push({
258
+ token: this._effectDefinitions[i].token,
259
+ effect: depthOfFieldEffect
260
+ });
261
+ }
262
+ break;
263
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.DOT_SCREEN:
264
+ {
265
+ const definition = this._effectDefinitions[i].definition;
266
+ const properties = definition.properties || {};
267
+ this._effects.push({
268
+ token: this._effectDefinitions[i].token,
269
+ effect: new postprocessing_1.DotScreenEffect({
270
+ blendFunction: properties.blendFunction,
271
+ scale: properties.scale,
272
+ angle: properties.angle
273
+ })
274
+ });
275
+ }
276
+ break;
277
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.GOD_RAYS:
278
+ {
279
+ const definition = this._effectDefinitions[i].definition;
280
+ const properties = definition.properties || {};
281
+ const godRaysEffect = new postprocessing_1.GodRaysEffect(this._renderingEngine.camera, new THREE.Mesh(), {
282
+ blendFunction: properties.blendFunction,
283
+ density: properties.density,
284
+ decay: properties.decay,
285
+ weight: properties.weight,
286
+ exposure: properties.exposure,
287
+ clampMax: properties.clampMax,
288
+ kernelSize: properties.kernelSize,
289
+ blur: properties.blur
290
+ });
291
+ this._effects.push({
292
+ token: this._effectDefinitions[i].token,
293
+ effect: godRaysEffect
294
+ });
295
+ this._godRaysManagers[this._effectDefinitions[i].token].setEffect(godRaysEffect);
296
+ }
297
+ break;
298
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.GRID:
299
+ {
300
+ const definition = this._effectDefinitions[i].definition;
301
+ const properties = definition.properties || {};
302
+ this._effects.push({
303
+ token: this._effectDefinitions[i].token,
304
+ effect: new postprocessing_1.GridEffect({
305
+ blendFunction: properties.blendFunction !== undefined ? properties.blendFunction : postprocessing_1.BlendFunction.MULTIPLY,
306
+ scale: properties.scale
307
+ })
308
+ });
309
+ }
310
+ break;
311
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.HBAO:
312
+ {
313
+ // we currently do not support devices with WebGL 1: https://shapediver.atlassian.net/browse/SS-7069
314
+ if (this._renderingEngine.renderer.capabilities.isWebGL2 === false)
315
+ break;
316
+ const definition = this._effectDefinitions[i].definition;
317
+ const properties = definition.properties || {};
318
+ // we adjust the scene size slightly to make the factor fit our requirements
319
+ // with this adjusted factor, a distance value of 1 fits well as a default
320
+ const sceneSizeFactor = this._sceneExtents / 10.0;
321
+ const hbaoEffect = new HBAOEffect_1.HBAOEffect(this._composer, this._renderingEngine.camera, this._renderingEngine.scene, {
322
+ resolutionScale: properties.resolutionScale !== undefined ? properties.resolutionScale : 1,
323
+ spp: properties.spp !== undefined ? properties.spp : 8,
324
+ distance: properties.distance !== undefined ? properties.distance * sceneSizeFactor : sceneSizeFactor,
325
+ distancePower: properties.distanceIntensity !== undefined ? properties.distanceIntensity : 1,
326
+ power: properties.intensity !== undefined ? properties.intensity : 2.5,
327
+ bias: properties.bias !== undefined ? properties.bias : 10,
328
+ thickness: properties.thickness !== undefined ? properties.thickness : 0.5,
329
+ color: properties.color !== undefined ? new THREE.Color(this._converter.toHexColor(properties.color).substring(0, 7)) : new THREE.Color('black'),
330
+ iterations: properties.iterations !== undefined ? properties.iterations : 1,
331
+ radius: properties.radius !== undefined ? properties.radius : 15,
332
+ rings: properties.rings !== undefined ? properties.rings : 4,
333
+ lumaPhi: properties.lumaPhi !== undefined ? properties.lumaPhi : 10,
334
+ depthPhi: properties.depthPhi !== undefined ? properties.depthPhi : 2,
335
+ normalPhi: properties.normalPhi !== undefined ? properties.normalPhi : 3.25,
336
+ samples: properties.samples !== undefined ? properties.samples : 16
337
+ });
338
+ this._effects.push({
339
+ token: this._effectDefinitions[i].token,
340
+ effect: hbaoEffect
341
+ });
342
+ }
343
+ break;
344
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.HUE_SATURATION:
345
+ {
346
+ const definition = this._effectDefinitions[i].definition;
347
+ const properties = definition.properties || {};
348
+ this._effects.push({
349
+ token: this._effectDefinitions[i].token,
350
+ effect: new postprocessing_1.HueSaturationEffect({
351
+ blendFunction: properties.blendFunction,
352
+ hue: properties.hue,
353
+ saturation: properties.saturation
354
+ })
355
+ });
356
+ }
357
+ break;
358
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.NOISE:
359
+ {
360
+ const definition = this._effectDefinitions[i].definition;
361
+ const properties = definition.properties || {};
362
+ this._effects.push({
363
+ token: this._effectDefinitions[i].token,
364
+ effect: new postprocessing_1.NoiseEffect({
365
+ blendFunction: properties.blendFunction,
366
+ premultiply: properties.premultiply
367
+ })
368
+ });
369
+ }
370
+ break;
371
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.OUTLINE:
372
+ {
373
+ const definition = this._effectDefinitions[i].definition;
374
+ const properties = definition.properties || {};
375
+ const outlineEffect = new postprocessing_1.OutlineEffect(this._renderingEngine.scene, this._renderingEngine.camera, {
376
+ blendFunction: properties.blendFunction !== undefined ? properties.blendFunction : postprocessing_1.BlendFunction.SCREEN,
377
+ edgeStrength: properties.edgeStrength,
378
+ pulseSpeed: properties.pulseSpeed,
379
+ visibleEdgeColor: new THREE.Color(this._converter.toHexColor(properties.visibleEdgeColor).substring(0, 7)),
380
+ hiddenEdgeColor: new THREE.Color(this._converter.toHexColor(properties.hiddenEdgeColor).substring(0, 7)),
381
+ kernelSize: properties.kernelSize,
382
+ blur: properties.blur,
383
+ xRay: properties.xRay,
384
+ multisampling: properties.multisampling
385
+ });
386
+ this._effects.push({
387
+ token: this._effectDefinitions[i].token,
388
+ effect: outlineEffect
389
+ });
390
+ this._outlineManagers[this._effectDefinitions[i].token].setEffect(outlineEffect);
391
+ }
392
+ break;
393
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.PIXELATION:
394
+ {
395
+ const definition = this._effectDefinitions[i].definition;
396
+ const properties = definition.properties || {};
397
+ this._effects.push({
398
+ token: this._effectDefinitions[i].token,
399
+ effect: new postprocessing_1.PixelationEffect(properties.granularity)
400
+ });
401
+ }
402
+ break;
403
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SSAO:
404
+ {
405
+ // we currently do not support devices with WebGL 1: https://shapediver.atlassian.net/browse/SS-7069
406
+ if (this._renderingEngine.renderer.capabilities.isWebGL2 === false)
407
+ break;
408
+ const definition = this._effectDefinitions[i].definition;
409
+ const properties = definition.properties || {};
410
+ // we adjust the scene size slightly to make the factor fit our requirements
411
+ // with this adjusted factor, a distance value of 1 fits well as a default
412
+ const sceneSizeFactor = this._sceneExtents / 50.0;
413
+ const ssaoEffect = new SSAOEffect_1.SSAOEffect(this._composer, this._renderingEngine.camera, this._renderingEngine.scene, {
414
+ resolutionScale: properties.resolutionScale !== undefined ? properties.resolutionScale : 1,
415
+ spp: properties.spp !== undefined ? properties.spp : 8,
416
+ distance: properties.distance !== undefined ? properties.distance * sceneSizeFactor : sceneSizeFactor,
417
+ distancePower: properties.distanceIntensity !== undefined ? properties.distanceIntensity : 1,
418
+ power: properties.intensity !== undefined ? properties.intensity : 2.5,
419
+ color: properties.color !== undefined ? new THREE.Color(this._converter.toHexColor(properties.color).substring(0, 7)) : new THREE.Color('black'),
420
+ iterations: properties.iterations !== undefined ? properties.iterations : 1,
421
+ radius: properties.radius !== undefined ? properties.radius : 15,
422
+ rings: properties.rings !== undefined ? properties.rings : 4,
423
+ lumaPhi: properties.lumaPhi !== undefined ? properties.lumaPhi : 10,
424
+ depthPhi: properties.depthPhi !== undefined ? properties.depthPhi : 2,
425
+ normalPhi: properties.normalPhi !== undefined ? properties.normalPhi : 3.25,
426
+ samples: properties.samples !== undefined ? properties.samples : 16
427
+ });
428
+ this._effects.push({
429
+ token: this._effectDefinitions[i].token,
430
+ effect: ssaoEffect
431
+ });
432
+ }
433
+ break;
434
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SCANLINE:
435
+ {
436
+ const definition = this._effectDefinitions[i].definition;
437
+ const properties = definition.properties || {};
438
+ this._effects.push({
439
+ token: this._effectDefinitions[i].token,
440
+ effect: new postprocessing_1.ScanlineEffect({
441
+ blendFunction: properties.blendFunction,
442
+ density: properties.density
443
+ })
444
+ });
445
+ }
446
+ break;
447
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SELECTIVE_BLOOM:
448
+ {
449
+ const definition = this._effectDefinitions[i].definition;
450
+ const properties = definition.properties || {};
451
+ const selectiveBloomEffect = new postprocessing_1.SelectiveBloomEffect(this._renderingEngine.scene, this._renderingEngine.camera, {
452
+ blendFunction: properties.blendFunction,
453
+ mipmapBlur: properties.mipmapBlur,
454
+ luminanceThreshold: properties.luminanceThreshold,
455
+ luminanceSmoothing: properties.luminanceSmoothing,
456
+ intensity: properties.intensity,
457
+ kernelSize: properties.kernelSize
458
+ });
459
+ selectiveBloomEffect.ignoreBackground = properties.ignoreBackground !== undefined ? properties.ignoreBackground : true;
460
+ this._effects.push({
461
+ token: this._effectDefinitions[i].token,
462
+ effect: selectiveBloomEffect
463
+ });
464
+ this._selectiveBloomManagers[this._effectDefinitions[i].token].setEffect(selectiveBloomEffect);
465
+ }
466
+ break;
467
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SEPIA:
468
+ {
469
+ const definition = this._effectDefinitions[i].definition;
470
+ const properties = definition.properties || {};
471
+ this._effects.push({
472
+ token: this._effectDefinitions[i].token,
473
+ effect: new postprocessing_1.SepiaEffect({
474
+ blendFunction: properties.blendFunction
475
+ })
476
+ });
477
+ }
478
+ break;
479
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.TILT_SHIFT:
480
+ {
481
+ const definition = this._effectDefinitions[i].definition;
482
+ const properties = definition.properties || {};
483
+ this._effects.push({
484
+ token: this._effectDefinitions[i].token,
485
+ effect: new postprocessing_1.TiltShiftEffect({
486
+ blendFunction: properties.blendFunction,
487
+ offset: properties.offset,
488
+ rotation: properties.rotation,
489
+ focusArea: properties.focusArea,
490
+ feather: properties.feather,
491
+ kernelSize: properties.kernelSize
492
+ })
493
+ });
494
+ }
495
+ break;
496
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.VIGNETTE:
497
+ {
498
+ const definition = this._effectDefinitions[i].definition;
499
+ const properties = definition.properties || {};
500
+ this._effects.push({
501
+ token: this._effectDefinitions[i].token,
502
+ effect: new postprocessing_1.VignetteEffect({
503
+ blendFunction: properties.blendFunction,
504
+ technique: properties.technique,
505
+ offset: properties.offset,
506
+ darkness: properties.darkness,
507
+ })
508
+ });
509
+ }
510
+ break;
511
+ default:
512
+ }
513
+ }
514
+ // sort effects by order in effectDefinitions
515
+ this._effects.sort((a, b) => this._effectDefinitions.indexOf(this._effectDefinitions.find(e => e.token === a.token)) - this._effectDefinitions.indexOf(this._effectDefinitions.find(e => e.token === b.token)));
516
+ const effectArray = this._effects.map(v => v.effect);
517
+ if (antiAliasingTechnique === IPostProcessingEffectDefinitions_1.ANTI_ALIASING_TECHNIQUE.FXAA) {
518
+ effectArray.unshift(this._fxaaEffect);
519
+ }
520
+ else if (antiAliasingTechnique === IPostProcessingEffectDefinitions_1.ANTI_ALIASING_TECHNIQUE.SMAA) {
521
+ effectArray.unshift(this._smaaEffect);
522
+ }
523
+ this._effectPass = new postprocessing_1.EffectPass(this._renderingEngine.camera, ...this._effects.map(v => v.effect));
524
+ this._composer.addPass(this._effectPass);
525
+ // for the AO effects we need to add a separate AA pass at the end that anti-aliases the AO effect
526
+ if (this._effectDefinitions.find(e => e.definition.type === IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.HBAO || e.definition.type === IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SSAO)) {
527
+ // respect the AA choice if one of the effects was selected, use SMAA otherwise
528
+ this._composer.addPass(new postprocessing_1.EffectPass(this._renderingEngine.camera, antiAliasingTechnique === IPostProcessingEffectDefinitions_1.ANTI_ALIASING_TECHNIQUE.FXAA ? this._fxaaEffect : this._smaaEffect));
529
+ }
530
+ }
531
+ getDefaultEffectProperties(type) {
532
+ switch (type) {
533
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.BLOOM:
534
+ return {
535
+ blendFunction: postprocessing_1.BlendFunction.ADD,
536
+ intensity: 1.0,
537
+ kernelSize: postprocessing_1.KernelSize.LARGE,
538
+ luminanceSmoothing: 0.025,
539
+ luminanceThreshold: 0.9,
540
+ mipmapBlur: false,
541
+ };
542
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.CHROMATIC_ABERRATION:
543
+ return {
544
+ blendFunction: postprocessing_1.BlendFunction.NORMAL,
545
+ modulationOffset: 0.15,
546
+ offset: { x: 0.001, y: 0.0005 },
547
+ radialModulation: false,
548
+ };
549
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.DEPTH_OF_FIELD:
550
+ return {
551
+ blendFunction: postprocessing_1.BlendFunction.NORMAL,
552
+ bokehScale: 5.0,
553
+ focusDistance: 0.0,
554
+ focusRange: 0.01,
555
+ };
556
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.DOT_SCREEN:
557
+ return {
558
+ angle: 1.57,
559
+ blendFunction: postprocessing_1.BlendFunction.NORMAL,
560
+ scale: 1.0,
561
+ };
562
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.GOD_RAYS:
563
+ return {
564
+ blendFunction: postprocessing_1.BlendFunction.SCREEN,
565
+ blur: true,
566
+ clampMax: 1.0,
567
+ decay: 0.9,
568
+ density: 0.96,
569
+ exposure: 0.6,
570
+ kernelSize: postprocessing_1.KernelSize.SMALL,
571
+ weight: 0.4,
572
+ };
573
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.GRID:
574
+ return {
575
+ blendFunction: postprocessing_1.BlendFunction.MULTIPLY,
576
+ scale: 1.0,
577
+ };
578
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.HBAO:
579
+ return {
580
+ resolutionScale: 1,
581
+ spp: 8,
582
+ distance: 1,
583
+ distanceIntensity: 1,
584
+ intensity: 2.5,
585
+ color: '#000000',
586
+ bias: 10,
587
+ thickness: 0.5,
588
+ iterations: 1,
589
+ radius: 15,
590
+ rings: 4,
591
+ lumaPhi: 10,
592
+ depthPhi: 2,
593
+ normalPhi: 3.25,
594
+ samples: 16,
595
+ };
596
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.HUE_SATURATION:
597
+ return {
598
+ blendFunction: postprocessing_1.BlendFunction.NORMAL,
599
+ hue: 0.0,
600
+ saturation: 0.0,
601
+ };
602
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.NOISE:
603
+ return {
604
+ blendFunction: postprocessing_1.BlendFunction.SCREEN,
605
+ premultiply: false,
606
+ };
607
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.OUTLINE:
608
+ return {
609
+ blendFunction: postprocessing_1.BlendFunction.SCREEN,
610
+ blur: false,
611
+ edgeStrength: 1.0,
612
+ hiddenEdgeColor: '#22090a',
613
+ kernelSize: postprocessing_1.KernelSize.VERY_SMALL,
614
+ multisampling: 0,
615
+ pulseSpeed: 0.0,
616
+ resolution: 480,
617
+ visibleEdgeColor: '#ffffff',
618
+ xRay: true,
619
+ };
620
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.PIXELATION:
621
+ return {
622
+ granularity: 30.0,
623
+ };
624
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SSAO:
625
+ return {
626
+ resolutionScale: 1,
627
+ spp: 8,
628
+ distance: 1,
629
+ distanceIntensity: 1,
630
+ intensity: 2.5,
631
+ color: '#000000',
632
+ iterations: 1,
633
+ radius: 15,
634
+ rings: 4,
635
+ lumaPhi: 10,
636
+ depthPhi: 2,
637
+ normalPhi: 3.25,
638
+ samples: 16,
639
+ };
640
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SCANLINE:
641
+ return {
642
+ blendFunction: postprocessing_1.BlendFunction.OVERLAY,
643
+ density: 1.25,
644
+ };
645
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SELECTIVE_BLOOM:
646
+ return {
647
+ blendFunction: postprocessing_1.BlendFunction.ADD,
648
+ intensity: 1.0,
649
+ kernelSize: postprocessing_1.KernelSize.LARGE,
650
+ luminanceSmoothing: 0.025,
651
+ luminanceThreshold: 0.9,
652
+ mipmapBlur: false,
653
+ ignoreBackground: true,
654
+ };
655
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SEPIA:
656
+ return {
657
+ blendFunction: postprocessing_1.BlendFunction.NORMAL,
658
+ };
659
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.TILT_SHIFT:
660
+ return {
661
+ blendFunction: postprocessing_1.BlendFunction.NORMAL,
662
+ feather: 0.3,
663
+ focusArea: 0.4,
664
+ kernelSize: postprocessing_1.KernelSize.MEDIUM,
665
+ offset: 0.0,
666
+ rotation: 0.0,
667
+ };
668
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.VIGNETTE:
669
+ return {
670
+ blendFunction: postprocessing_1.BlendFunction.NORMAL,
671
+ darkness: 0.5,
672
+ offset: 0.5,
673
+ technique: postprocessing_1.VignetteTechnique.DEFAULT,
674
+ };
675
+ default:
676
+ return {};
677
+ }
678
+ }
679
+ getEffect(token) {
680
+ return this._effects.find(e => e.token === token).effect;
681
+ }
682
+ getEffectTokens() {
683
+ return Object.assign({}, ...this._effectDefinitions.map((e) => ({ [e.token]: e.definition.type })));
684
+ }
685
+ getPostProcessingEffectsArray() {
686
+ const effects = [];
687
+ for (let i = 0; i < this._effectDefinitions.length; i++) {
688
+ switch (this._effectDefinitions[i].definition.type) {
689
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.BLOOM:
690
+ {
691
+ const definition = this._effectDefinitions[i].definition;
692
+ const properties = definition.properties || {};
693
+ effects.push({
694
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.BLOOM,
695
+ token: this._effectDefinitions[i].token,
696
+ properties: {
697
+ blendFunction: properties.blendFunction,
698
+ luminanceThreshold: properties.luminanceThreshold,
699
+ luminanceSmoothing: properties.luminanceSmoothing,
700
+ mipmapBlur: properties.mipmapBlur,
701
+ intensity: properties.intensity,
702
+ kernelSize: properties.kernelSize
703
+ }
704
+ });
705
+ }
706
+ break;
707
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.CHROMATIC_ABERRATION:
708
+ {
709
+ const definition = this._effectDefinitions[i].definition;
710
+ const properties = definition.properties || {};
711
+ effects.push({
712
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.CHROMATIC_ABERRATION,
713
+ token: this._effectDefinitions[i].token,
714
+ properties: {
715
+ blendFunction: properties.blendFunction,
716
+ offset: properties.offset ? Array.isArray(properties.offset) ? { x: properties.offset[0], y: properties.offset[1] } : properties.offset : undefined,
717
+ radialModulation: properties.radialModulation,
718
+ modulationOffset: properties.modulationOffset
719
+ }
720
+ });
721
+ }
722
+ break;
723
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.DEPTH_OF_FIELD:
724
+ {
725
+ const definition = this._effectDefinitions[i].definition;
726
+ const properties = definition.properties || {};
727
+ effects.push({
728
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.DEPTH_OF_FIELD,
729
+ token: this._effectDefinitions[i].token,
730
+ properties: {
731
+ blendFunction: properties.blendFunction,
732
+ focusDistance: properties.focusDistance,
733
+ focusRange: properties.focusRange,
734
+ bokehScale: properties.bokehScale
735
+ }
736
+ });
737
+ }
738
+ break;
739
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.DOT_SCREEN:
740
+ {
741
+ const definition = this._effectDefinitions[i].definition;
742
+ const properties = definition.properties || {};
743
+ effects.push({
744
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.DOT_SCREEN,
745
+ token: this._effectDefinitions[i].token,
746
+ properties: {
747
+ blendFunction: properties.blendFunction,
748
+ scale: properties.scale,
749
+ angle: properties.angle
750
+ }
751
+ });
752
+ }
753
+ break;
754
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.GRID:
755
+ {
756
+ const definition = this._effectDefinitions[i].definition;
757
+ const properties = definition.properties || {};
758
+ effects.push({
759
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.GRID,
760
+ token: this._effectDefinitions[i].token,
761
+ properties: {
762
+ blendFunction: properties.blendFunction,
763
+ scale: properties.scale
764
+ }
765
+ });
766
+ }
767
+ break;
768
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.HBAO:
769
+ {
770
+ const definition = this._effectDefinitions[i].definition;
771
+ const properties = definition.properties || {};
772
+ effects.push({
773
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.HBAO,
774
+ token: this._effectDefinitions[i].token,
775
+ properties: {
776
+ resolutionScale: properties.resolutionScale,
777
+ spp: properties.spp,
778
+ distance: properties.distance,
779
+ distanceIntensity: properties.distanceIntensity,
780
+ intensity: properties.intensity,
781
+ bias: properties.bias,
782
+ thickness: properties.thickness,
783
+ color: properties.color !== undefined ? this._converter.toHexColor(properties.color) : undefined,
784
+ iterations: properties.iterations,
785
+ radius: properties.radius,
786
+ rings: properties.rings,
787
+ lumaPhi: properties.lumaPhi,
788
+ depthPhi: properties.depthPhi,
789
+ normalPhi: properties.normalPhi,
790
+ samples: properties.samples
791
+ }
792
+ });
793
+ }
794
+ break;
795
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.HUE_SATURATION:
796
+ {
797
+ const definition = this._effectDefinitions[i].definition;
798
+ const properties = definition.properties || {};
799
+ effects.push({
800
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.HUE_SATURATION,
801
+ token: this._effectDefinitions[i].token,
802
+ properties: {
803
+ blendFunction: properties.blendFunction,
804
+ hue: properties.hue,
805
+ saturation: properties.saturation
806
+ }
807
+ });
808
+ }
809
+ break;
810
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.NOISE:
811
+ {
812
+ const definition = this._effectDefinitions[i].definition;
813
+ const properties = definition.properties || {};
814
+ effects.push({
815
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.NOISE,
816
+ token: this._effectDefinitions[i].token,
817
+ properties: {
818
+ blendFunction: properties.blendFunction,
819
+ premultiply: properties.premultiply
820
+ }
821
+ });
822
+ }
823
+ break;
824
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.PIXELATION:
825
+ {
826
+ const definition = this._effectDefinitions[i].definition;
827
+ const properties = definition.properties || {};
828
+ effects.push({
829
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.PIXELATION,
830
+ token: this._effectDefinitions[i].token,
831
+ properties: {
832
+ granularity: properties.granularity
833
+ }
834
+ });
835
+ }
836
+ break;
837
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SSAO:
838
+ {
839
+ const definition = this._effectDefinitions[i].definition;
840
+ const properties = definition.properties || {};
841
+ effects.push({
842
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SSAO,
843
+ token: this._effectDefinitions[i].token,
844
+ properties: {
845
+ resolutionScale: properties.resolutionScale,
846
+ spp: properties.spp,
847
+ distance: properties.distance,
848
+ distanceIntensity: properties.distanceIntensity,
849
+ intensity: properties.intensity,
850
+ color: properties.color !== undefined ? this._converter.toHexColor(properties.color) : undefined,
851
+ iterations: properties.iterations,
852
+ radius: properties.radius,
853
+ rings: properties.rings,
854
+ lumaPhi: properties.lumaPhi,
855
+ depthPhi: properties.depthPhi,
856
+ normalPhi: properties.normalPhi,
857
+ samples: properties.samples
858
+ }
859
+ });
860
+ }
861
+ break;
862
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SCANLINE:
863
+ {
864
+ const definition = this._effectDefinitions[i].definition;
865
+ const properties = definition.properties || {};
866
+ effects.push({
867
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SCANLINE,
868
+ token: this._effectDefinitions[i].token,
869
+ properties: {
870
+ blendFunction: properties.blendFunction,
871
+ density: properties.density
872
+ }
873
+ });
874
+ }
875
+ break;
876
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SEPIA:
877
+ {
878
+ const definition = this._effectDefinitions[i].definition;
879
+ const properties = definition.properties || {};
880
+ effects.push({
881
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.SEPIA,
882
+ token: this._effectDefinitions[i].token,
883
+ properties: {
884
+ blendFunction: properties.blendFunction
885
+ }
886
+ });
887
+ }
888
+ break;
889
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.TILT_SHIFT:
890
+ {
891
+ const definition = this._effectDefinitions[i].definition;
892
+ const properties = definition.properties || {};
893
+ effects.push({
894
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.TILT_SHIFT,
895
+ token: this._effectDefinitions[i].token,
896
+ properties: {
897
+ blendFunction: properties.blendFunction,
898
+ offset: properties.offset,
899
+ rotation: properties.rotation,
900
+ focusArea: properties.focusArea,
901
+ feather: properties.feather,
902
+ kernelSize: properties.kernelSize
903
+ }
904
+ });
905
+ }
906
+ break;
907
+ case IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.VIGNETTE:
908
+ {
909
+ const definition = this._effectDefinitions[i].definition;
910
+ const properties = definition.properties || {};
911
+ effects.push({
912
+ type: IPostProcessingEffectDefinitions_1.POST_PROCESSING_EFFECT_TYPE.VIGNETTE,
913
+ token: this._effectDefinitions[i].token,
914
+ properties: {
915
+ blendFunction: properties.blendFunction,
916
+ technique: properties.technique,
917
+ offset: properties.offset,
918
+ darkness: properties.darkness,
919
+ }
920
+ });
921
+ }
922
+ break;
923
+ default:
924
+ }
925
+ }
926
+ return effects;
927
+ }
928
+ init() {
929
+ postprocessing_1.OverrideMaterialManager.workaroundEnabled = true;
930
+ const initComposer = () => {
931
+ this._composer = new postprocessing_1.EffectComposer(this._renderingEngine.renderer);
932
+ // EffectComposer disables autoClear, we enable/disable this in the postprocessing render loop
933
+ this._renderingEngine.renderer.autoClear = true;
934
+ // create anti-aliasing effects and passes
935
+ this._fxaaEffect = new postprocessing_1.FXAAEffect();
936
+ this._smaaEffect = new postprocessing_1.SMAAEffect({ preset: postprocessing_1.SMAAPreset.ULTRA });
937
+ this._renderPass = new postprocessing_1.RenderPass(this._renderingEngine.scene, this._renderingEngine.camera);
938
+ this._ssaaRenderPass = new SSAARenderPass_1.SSAARenderPass(this._renderingEngine.scene, this._renderingEngine.camera);
939
+ };
940
+ if (this._sceneExtents === 0) {
941
+ const token = this._eventEngine.addListener(viewer_shared_services_1.EVENTTYPE.SCENE.SCENE_BOUNDING_BOX_CHANGE, (e) => __awaiter(this, void 0, void 0, function* () {
942
+ const viewerEvent = e;
943
+ if (viewerEvent.viewportId === this._renderingEngine.id) {
944
+ if (gl_matrix_1.vec3.distance(viewerEvent.boundingBox.min, viewerEvent.boundingBox.max) > 0) {
945
+ initComposer();
946
+ this.changeEffectPass();
947
+ this._eventEngine.removeListener(token);
948
+ }
949
+ }
950
+ }));
951
+ }
952
+ else {
953
+ initComposer();
954
+ }
955
+ }
956
+ removeEffect(token) {
957
+ const effectToRemove = this._effectDefinitions.find(e => e.token === token);
958
+ if (effectToRemove)
959
+ this._effectDefinitions.splice(this._effectDefinitions.indexOf(effectToRemove), 1);
960
+ this.changeEffectPass();
961
+ return true;
962
+ }
963
+ render(deltaTime, camera) {
964
+ if (!this._composer)
965
+ return;
966
+ const cameraId = `${camera.id}_${camera.type}${(camera.type === 'PerspectiveCamera' ? '' : '_' + camera.up.toArray().toString())}`;
967
+ if (cameraId !== this._currentCameraId) {
968
+ this._currentCameraId = cameraId;
969
+ this.changeEffectPass();
970
+ }
971
+ const currentClearColor = this._renderingEngine.renderer.getClearColor(new THREE.Color());
972
+ const convertedClearColor = currentClearColor.clone().convertSRGBToLinear();
973
+ this._renderingEngine.renderer.setClearColor(convertedClearColor);
974
+ this._renderingEngine.renderer.setClearAlpha(this._renderingEngine.clearAlpha);
975
+ this._renderingEngine.renderer.autoClear = false;
976
+ this._composer.setMainCamera(camera);
977
+ this._composer.render();
978
+ this._renderingEngine.renderer.autoClear = true;
979
+ this._renderingEngine.renderer.setClearColor(currentClearColor);
980
+ }
981
+ resize(width, height) {
982
+ var _a;
983
+ if (!this._composer)
984
+ return;
985
+ this.effects.forEach(e => {
986
+ if (e.effect.setSize)
987
+ e.effect.setSize(width, height);
988
+ });
989
+ this._renderPass.setSize(width, height);
990
+ this._ssaaRenderPass.setSize(width, height);
991
+ (_a = this._effectPass) === null || _a === void 0 ? void 0 : _a.setSize(width, height);
992
+ this._composer.setSize(width, height);
993
+ }
994
+ saveSettings(settingsEngine) {
995
+ settingsEngine.settings.postprocessing.antiAliasingTechnique = this.antiAliasingTechnique;
996
+ settingsEngine.settings.postprocessing.antiAliasingTechniqueMobile = this.antiAliasingTechniqueMobile;
997
+ settingsEngine.settings.postprocessing.enablePostProcessingOnMobile = this.enablePostProcessingOnMobile;
998
+ settingsEngine.settings.postprocessing.ssaaSampleLevel = this.ssaaSampleLevel;
999
+ const effects = this.getPostProcessingEffectsArray();
1000
+ // delete the tokens as we don't want to save them
1001
+ effects.forEach(e => delete e.token);
1002
+ settingsEngine.settings.postprocessing.effects = effects;
1003
+ }
1004
+ updateEffect(token, definition) {
1005
+ const effectDefinition = this._effectDefinitions.find(e => e.token === token);
1006
+ if (!effectDefinition)
1007
+ return;
1008
+ this.removeEffect(token);
1009
+ this.addEffect(definition, token);
1010
+ }
1011
+ }
1012
+ exports.PostProcessingManager = PostProcessingManager;
1013
+ //# sourceMappingURL=PostProcessingManager.js.map