@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
package/src/index.ts ADDED
@@ -0,0 +1,23 @@
1
+ import { RenderingEngine } from './RenderingEngine';
2
+ import { ThreejsData } from './types/ThreejsData';
3
+ import { ENVIRONMENT_MAP, ENVIRONMENT_MAP_CUBE, ENVIRONMENT_MAP_EMPTY } from './loaders/EnvironmentMapLoader';
4
+ import { IThreejsData } from './types/IThreejsData';
5
+ import { POST_PROCESSING_EFFECT_TYPE, IPostProcessingEffectDefinition, IDepthOfFieldEffectDefinition, IOutlineEffectDefinition, IBloomEffectDefinition, IChromaticAberrationEffectDefinition, IDotScreenEffectDefinition, IGodRaysEffectDefinition, ISSAOEffectDefinition, IHueSaturationEffectDefinition, INoiseEffectDefinition, IPixelationEffectDefinition, IScanlineEffectDefinition, ISelectiveBloomEffectDefinition, ISepiaEffectDefinition, ITiltShiftEffectDefinition, IVignetteEffectDefinition, IGridEffectDefinition, ANTI_ALIASING_TECHNIQUE, IHBAOEffectDefinition, IPostProcessingEffectsArray } from './interfaces/IPostProcessingEffectDefinitions';
6
+ import { PostProcessingManager } from './managers/PostProcessingManager';
7
+ import { BlendFunction, BloomEffect, ChromaticAberrationEffect, DepthOfFieldEffect, DotScreenEffect, EdgeDetectionMode, Effect, EffectComposer, FXAAEffect, GodRaysEffect, GridEffect, HueSaturationEffect, KernelSize, NoiseEffect, OutlineEffect, PixelationEffect, PredicationMode, Resolution, ScanlineEffect, SelectiveBloomEffect, SepiaEffect, SMAAEffect, SMAAPreset, SSAOEffect, TiltShiftEffect, VignetteEffect, VignetteTechnique } from 'postprocessing';
8
+ import { MultiPointsMaterial } from './materials/MultiPointsMaterial';
9
+
10
+ export {
11
+ RenderingEngine, IThreejsData, ThreejsData, ENVIRONMENT_MAP, ENVIRONMENT_MAP_CUBE, ENVIRONMENT_MAP_EMPTY
12
+ };
13
+
14
+ export {
15
+ MultiPointsMaterial
16
+ };
17
+
18
+ export {
19
+ PostProcessingManager, ANTI_ALIASING_TECHNIQUE, POST_PROCESSING_EFFECT_TYPE, IPostProcessingEffectDefinition, Effect, EffectComposer, IPostProcessingEffectsArray,
20
+ IBloomEffectDefinition, IChromaticAberrationEffectDefinition, IDepthOfFieldEffectDefinition, IDotScreenEffectDefinition, IGodRaysEffectDefinition, IGridEffectDefinition, IHBAOEffectDefinition, IHueSaturationEffectDefinition, INoiseEffectDefinition, IOutlineEffectDefinition, IPixelationEffectDefinition, ISSAOEffectDefinition, IScanlineEffectDefinition, ISelectiveBloomEffectDefinition, ISepiaEffectDefinition, ITiltShiftEffectDefinition, IVignetteEffectDefinition,
21
+ BloomEffect, ChromaticAberrationEffect, DepthOfFieldEffect, DotScreenEffect, FXAAEffect, GodRaysEffect, GridEffect, HueSaturationEffect, NoiseEffect, OutlineEffect, PixelationEffect, SMAAEffect, SSAOEffect, ScanlineEffect, SelectiveBloomEffect, SepiaEffect, TiltShiftEffect, VignetteEffect,
22
+ BlendFunction, VignetteTechnique, KernelSize, SMAAPreset, EdgeDetectionMode, PredicationMode, Resolution
23
+ };
@@ -0,0 +1,170 @@
1
+ import * as THREE from 'three';
2
+ import {
3
+ AttributeData,
4
+ GeometryData,
5
+ MaterialStandardData,
6
+ PRIMITIVE_MODE,
7
+ PrimitiveData
8
+ } from '@shapediver/viewer.shared.types';
9
+ import { Font } from '../three/loaders/FontLoader';
10
+ import { font } from '../three/font';
11
+ import { ITag3D } from '@shapediver/viewer.data-engine.shared-types';
12
+ import { ITreeNode, TreeNode } from '@shapediver/viewer.shared.node-tree';
13
+ import { StateEngine } from '@shapediver/viewer.shared.services';
14
+ import { Tag3dEngine } from '@shapediver/viewer.data-engine.tag3d-engine';
15
+ import { TextGeometry } from '../three/geometries/TextGeometry';
16
+ import { IManager } from '@shapediver/viewer.rendering-engine.rendering-engine';
17
+
18
+ export class Tag3dGeometryCreationInjector implements IManager {
19
+ // #region Properties (2)
20
+
21
+ readonly #stateEngine: StateEngine = StateEngine.instance;
22
+
23
+ public _font!: Font;
24
+
25
+ // #endregion Properties (2)
26
+
27
+ // #region Constructors (1)
28
+
29
+ constructor() {}
30
+
31
+ // #endregion Constructors (1)
32
+
33
+ // #region Public Methods (2)
34
+
35
+ public close(): void {
36
+ Tag3dEngine.instance.geometryCreator = undefined;
37
+ }
38
+
39
+ public init(): void {
40
+ if (!this._font) {
41
+ this._font = new Font(font);
42
+ this.#stateEngine.fontLoaded.resolve(true);
43
+ }
44
+
45
+ Tag3dEngine.instance.geometryCreator = this.convertTag3dToGeometry.bind(this);
46
+ }
47
+
48
+ // #endregion Public Methods (2)
49
+
50
+ // #region Private Methods (1)
51
+
52
+ private convertTag3dToGeometry(tag3dInfo: ITag3D): ITreeNode | undefined {
53
+ const node = new TreeNode('tag3d_' + tag3dInfo.version);
54
+
55
+ tag3dInfo.size = tag3dInfo.size ? +tag3dInfo.size : 1;
56
+ if (tag3dInfo.text === undefined || tag3dInfo.text === '' || /^[ \t\n\r]*$/.test(tag3dInfo.text))
57
+ return;
58
+
59
+ const tagLines = tag3dInfo.text.split(/\r\n|\r|\n/g);
60
+ const lineArray = [];
61
+
62
+ for (let lineIndex = 0; lineIndex < tagLines.length; ++lineIndex) {
63
+ if (tagLines[lineIndex] === '') continue;
64
+ // create tag mesh object
65
+ const tag = new TextGeometry(tagLines[lineIndex], { size: tag3dInfo.size, height: tag3dInfo.size / 10, font: this._font });
66
+ lineArray.push(tag);
67
+ }
68
+
69
+ // create temporary object
70
+ const parentObject = new THREE.Object3D();
71
+ for (const line of lineArray) {
72
+ parentObject.add(new THREE.Mesh(line, new THREE.MeshPhongMaterial()));
73
+ }
74
+
75
+ // align lines
76
+ let bb, tempExtentsY, lineHeight = 0;
77
+ {
78
+ lineHeight = 0;
79
+ for (const child of parentObject.children) {
80
+ bb = new THREE.Box3().setFromObject(child);
81
+ tempExtentsY = bb.max.y - bb.min.y;
82
+ lineHeight = Math.max(lineHeight, tempExtentsY);
83
+ }
84
+ }
85
+ lineHeight *= 1.15;
86
+
87
+ lineArray.forEach((line, i) => {
88
+ line.translate(0, (-i - 1) * lineHeight, 0);
89
+ });
90
+
91
+ // justification
92
+ bb = new THREE.Box3().setFromObject(parentObject);
93
+
94
+ const extentsX = bb.max.x - bb.min.x;
95
+ const extentsY = bb.max.y - bb.min.y;
96
+ const tagJustTranslation = new THREE.Vector3(0, 0, 0);
97
+
98
+ switch ((tag3dInfo.justification as string)) {
99
+ case 'TL':
100
+ break;
101
+ case 'TC':
102
+ tagJustTranslation.x = -extentsX * 0.5;
103
+ break;
104
+ case 'TR':
105
+ tagJustTranslation.x = -extentsX;
106
+ break;
107
+ case 'ML':
108
+ tagJustTranslation.y = extentsY * 0.5;
109
+ break;
110
+ case 'MC':
111
+ tagJustTranslation.x = -extentsX * 0.5;
112
+ tagJustTranslation.y = extentsY * 0.5;
113
+ break;
114
+ case 'MR':
115
+ tagJustTranslation.x = -extentsX;
116
+ tagJustTranslation.y = extentsY * 0.5;
117
+ break;
118
+ case 'BL':
119
+ tagJustTranslation.y = extentsY;
120
+ break;
121
+ case 'BC':
122
+ tagJustTranslation.x = -extentsX * 0.5;
123
+ tagJustTranslation.y = extentsY;
124
+ break;
125
+ case 'BR':
126
+ tagJustTranslation.x = -extentsX;
127
+ tagJustTranslation.y = extentsY;
128
+ break;
129
+ }
130
+
131
+ for (const line of lineArray) {
132
+ line.translate(tagJustTranslation.x, tagJustTranslation.y, tagJustTranslation.z);
133
+ }
134
+
135
+ // rotation
136
+ if (tag3dInfo.location.xAxis !== undefined) {
137
+ const rotMatrix = new THREE.Matrix4();
138
+ rotMatrix.set(tag3dInfo.location.xAxis.X, tag3dInfo.location.yAxis.X, tag3dInfo.location.normal.X, 0, tag3dInfo.location.xAxis.Y, tag3dInfo.location.yAxis.Y, tag3dInfo.location.normal.Y, 0, tag3dInfo.location.xAxis.Z, tag3dInfo.location.yAxis.Z, tag3dInfo.location.normal.Z, 0, 0, 0, 0, 1);
139
+ for (const line of lineArray) {
140
+ line.applyMatrix4(rotMatrix);
141
+ line.translate(tag3dInfo.location.origin.X, tag3dInfo.location.origin.Y, tag3dInfo.location.origin.Z);
142
+ }
143
+ }
144
+
145
+ for (const line of lineArray) {
146
+ const attributes: {
147
+ [key: string]: AttributeData
148
+ } = {};
149
+ for (const attribute in line.attributes) {
150
+ let attributeName = attribute.toUpperCase();
151
+ if (/\d/.test(attributeName) && !attributeName.includes('_')) {
152
+ const index = attributeName.search(/\d/);
153
+ attributeName = attributeName.substring(0, index) + '_' + attributeName.substring(index, attributeName.length);
154
+ } else if (attributeName === 'TEXCOORD' || attributeName === 'COLOR' || attributeName === 'JOINTS' || attributeName === 'WEIGHTS') {
155
+ attributeName += '_0';
156
+ } else if (attributeName === 'UV') {
157
+ attributeName = 'TEXCOORD_0';
158
+ }
159
+ attributes[attributeName] = new AttributeData(<Float32Array>(<THREE.BufferAttribute>line.attributes[attribute]).array, line.attributes[attribute].itemSize, 0, 0, 0, false, (<Float32Array>(<THREE.BufferAttribute>line.attributes[attribute]).array).length / line.attributes[attribute].itemSize);
160
+ }
161
+ const child = new TreeNode('tag3d_' + line);
162
+ child.data.push(new GeometryData(new PrimitiveData(attributes, null), PRIMITIVE_MODE.TRIANGLES, new MaterialStandardData({ color: tag3dInfo.color, metalness: 0, roughness: 1 })));
163
+ node.children.push(child);
164
+ }
165
+
166
+ return node;
167
+ }
168
+
169
+ // #endregion Private Methods (1)
170
+ }
@@ -0,0 +1,224 @@
1
+ import * as THREE from 'three';
2
+ import { IManager } from '@shapediver/viewer.rendering-engine.rendering-engine';
3
+ import { GLTFConverter } from '@shapediver/viewer.data-engine.gltf-converter';
4
+
5
+ export class TextureUnifierInjector implements IManager {
6
+ // #region Properties (5)
7
+
8
+ private _mergeShader?: THREE.ShaderMaterial;
9
+ private _quad?: THREE.Mesh;
10
+ private _quadCamera?: THREE.OrthographicCamera;
11
+ private _quadScene?: THREE.Scene;
12
+ private _renderer?: THREE.WebGLRenderer;
13
+
14
+ // #endregion Properties (5)
15
+
16
+ // #region Constructors (1)
17
+
18
+ constructor() { }
19
+
20
+ // #endregion Constructors (1)
21
+
22
+ // #region Public Methods (2)
23
+
24
+ public close(): void {
25
+ GLTFConverter.instance.combineTextures = undefined;
26
+ }
27
+
28
+ public init(): void {
29
+ GLTFConverter.instance.combineTextures = this.combineTextures.bind(this);
30
+ }
31
+
32
+ // #endregion Public Methods (2)
33
+
34
+ // #region Private Methods (2)
35
+
36
+ private async combineTextures(red?: HTMLImageElement | ArrayBuffer, green?: HTMLImageElement | ArrayBuffer, blue?: HTMLImageElement | ArrayBuffer): Promise<{ image: HTMLImageElement | ArrayBuffer, blob: Blob }> {
37
+ if (!red && !green && !blue)
38
+ throw new Error('No maps supplied.');
39
+
40
+ if (red && red instanceof ArrayBuffer)
41
+ return { image: red, blob: new Blob([new Uint8Array(red)], { type: 'image/jpeg' }) };
42
+
43
+ if (green && green instanceof ArrayBuffer)
44
+ return { image: green, blob: new Blob([new Uint8Array(green)], { type: 'image/jpeg' }) };
45
+
46
+ if (blue && blue instanceof ArrayBuffer)
47
+ return { image: blue, blob: new Blob([new Uint8Array(blue)], { type: 'image/jpeg' }) };
48
+
49
+ if (!this._renderer)
50
+ this.createThreeJsUtils();
51
+
52
+ let width = 0, height = 0;
53
+ const textures = [red, green, blue];
54
+ for (const t of textures) {
55
+ if (t) {
56
+ if (width === 0 && height === 0) {
57
+ width = t.width;
58
+ height = t.height;
59
+ } else if (t.width !== width && t.height !== height) {
60
+ throw new Error('Maps have different sizes. Combining not supported.');
61
+ }
62
+ }
63
+ }
64
+
65
+ if (red) {
66
+ const redTexture = new THREE.Texture(red);
67
+ redTexture.needsUpdate = true;
68
+ this._mergeShader!.uniforms.tRed.value = redTexture;
69
+ this._mergeShader!.uniforms.activeRed.value = true;
70
+ } else {
71
+ this._mergeShader!.uniforms.activeRed.value = false;
72
+ }
73
+
74
+ if (green) {
75
+ const greenTexture = new THREE.Texture(green);
76
+ greenTexture.needsUpdate = true;
77
+ this._mergeShader!.uniforms.tGreen.value = greenTexture;
78
+ this._mergeShader!.uniforms.activeGreen.value = true;
79
+ } else {
80
+ this._mergeShader!.uniforms.activeGreen.value = false;
81
+ }
82
+
83
+ if (blue) {
84
+ const blueTexture = new THREE.Texture(blue);
85
+ blueTexture.needsUpdate = true;
86
+ this._mergeShader!.uniforms.tBlue.value = blueTexture;
87
+ this._mergeShader!.uniforms.activeBlue.value = true;
88
+ } else {
89
+ this._mergeShader!.uniforms.activeBlue.value = false;
90
+ }
91
+
92
+ // The different render targets that are used by the passes
93
+ const renderTarget = new THREE.WebGLRenderTarget(width, height, {
94
+ minFilter: THREE.LinearFilter,
95
+ magFilter: THREE.LinearFilter,
96
+ format: THREE.RGBAFormat
97
+ });
98
+ renderTarget.texture.name = 'target.rt';
99
+ this._renderer!.setRenderTarget(renderTarget);
100
+
101
+ this._renderer!.render(this._quadScene!, this._quadCamera!);
102
+
103
+ const buffer = new Uint8ClampedArray(4 * width * height);
104
+ this._renderer!.readRenderTargetPixels(renderTarget, 0, 0, width, height, buffer);
105
+
106
+ const imageData = new ImageData(buffer, width, height);
107
+ const canvas = document.createElement('canvas');
108
+ const ctx = <CanvasRenderingContext2D>canvas.getContext('2d');
109
+ canvas.width = imageData.width;
110
+ canvas.height = imageData.height;
111
+ ctx.putImageData(imageData, 0, 0);
112
+
113
+ const imageOut = new Image();
114
+ const promises = [];
115
+ promises.push(new Promise<void>((resolve, reject) => {
116
+ imageOut.onload = () => resolve();
117
+ imageOut.onerror = reject;
118
+ }));
119
+
120
+ imageOut.crossOrigin = 'anonymous';
121
+ const mimeType = 'image/jpeg';
122
+ imageOut.src = canvas.toDataURL(mimeType, 1.0);
123
+
124
+ let blob!: Blob;
125
+ promises.push(new Promise<void>((resolve, reject) => {
126
+ canvas.toBlob((b) => {
127
+ if (!b) {
128
+ reject('Could not create blob.');
129
+ } else {
130
+ blob = b;
131
+ }
132
+ resolve();
133
+ }, mimeType, 1.0);
134
+ }));
135
+
136
+ await Promise.all(promises);
137
+
138
+ return { image: imageOut, blob };
139
+ }
140
+
141
+ private createThreeJsUtils() {
142
+ this._mergeShader = new THREE.ShaderMaterial({
143
+ uniforms: {
144
+ tRed: { value: null },
145
+ activeRed: { value: false },
146
+ defaultRed: { value: 1.0 },
147
+ tGreen: { value: null },
148
+ activeGreen: { value: false },
149
+ defaultGreen: { value: 1.0 },
150
+ tBlue: { value: null },
151
+ activeBlue: { value: false },
152
+ defaultBlue: { value: 1.0 },
153
+ },
154
+ vertexShader: `// @author Michael Oppitz
155
+
156
+ uniform sampler2D tRed;
157
+ uniform bool activeRed;
158
+ uniform float defaultRed;
159
+
160
+ uniform sampler2D tGreen;
161
+ uniform bool activeGreen;
162
+ uniform float defaultGreen;
163
+
164
+ uniform sampler2D tBlue;
165
+ uniform bool activeBlue;
166
+ uniform float defaultBlue;
167
+
168
+ varying vec2 vUv;
169
+
170
+ void main() {
171
+ vUv = uv;
172
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
173
+ }`,
174
+ fragmentShader: `// @author Michael Oppitz
175
+
176
+ uniform sampler2D tRed;
177
+ uniform bool activeRed;
178
+ uniform float defaultRed;
179
+
180
+ uniform sampler2D tGreen;
181
+ uniform bool activeGreen;
182
+ uniform float defaultGreen;
183
+
184
+ uniform sampler2D tBlue;
185
+ uniform bool activeBlue;
186
+ uniform float defaultBlue;
187
+
188
+ varying vec2 vUv;
189
+
190
+ void main() {
191
+ vec4 outColor = vec4(0.0, 0.0, 0.0, 1.0);
192
+
193
+ if(activeRed == true) {
194
+ outColor.r = texture2D(tRed, vUv).r;
195
+ } else {
196
+ outColor.r = defaultRed;
197
+ }
198
+
199
+ if(activeGreen == true) {
200
+ outColor.g = texture2D(tGreen, vUv).g;
201
+ } else {
202
+ outColor.g = defaultGreen;
203
+ }
204
+
205
+ if(activeBlue == true) {
206
+ outColor.b = texture2D(tBlue, vUv).b;
207
+ } else {
208
+ outColor.b = defaultBlue;
209
+ }
210
+
211
+ gl_FragColor = outColor;
212
+ }`
213
+ });
214
+
215
+ this._quadCamera = new THREE.OrthographicCamera(- 1, 1, 1, - 1, 0, 1);
216
+ this._quadScene = new THREE.Scene();
217
+ this._quad = new THREE.Mesh(new THREE.PlaneGeometry(2, 2), this._mergeShader);
218
+ this._quadScene.add(this._quad);
219
+
220
+ this._renderer = new THREE.WebGLRenderer();
221
+ }
222
+
223
+ // #endregion Private Methods (2)
224
+ }
@@ -0,0 +1,3 @@
1
+ export interface ILoader {
2
+ init(): void;
3
+ }