@3driseai/3drise-viewer 0.1.25 → 0.1.27

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 (509) hide show
  1. package/dist/animationsV2/ClipPlayer.d.ts +16 -0
  2. package/dist/animationsV2/ClipPlayer.d.ts.map +1 -0
  3. package/dist/animationsV2/ClipPlayer.js +199 -0
  4. package/dist/animationsV2/ClipsRuntime.d.ts +150 -0
  5. package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -0
  6. package/dist/animationsV2/ClipsRuntime.js +707 -0
  7. package/dist/animationsV2/appliers.d.ts +21 -0
  8. package/dist/animationsV2/appliers.d.ts.map +1 -0
  9. package/dist/animationsV2/appliers.js +222 -0
  10. package/dist/animationsV2/clipUtils.d.ts +33 -0
  11. package/dist/animationsV2/clipUtils.d.ts.map +1 -0
  12. package/dist/animationsV2/clipUtils.js +164 -0
  13. package/dist/animationsV2/elementSettings.d.ts +15 -0
  14. package/dist/animationsV2/elementSettings.d.ts.map +1 -0
  15. package/dist/animationsV2/elementSettings.js +16 -0
  16. package/dist/animationsV2/index.d.ts +16 -0
  17. package/dist/animationsV2/index.d.ts.map +1 -0
  18. package/dist/animationsV2/index.js +12 -0
  19. package/dist/animationsV2/nodeTracks.d.ts +13 -0
  20. package/dist/animationsV2/nodeTracks.d.ts.map +1 -0
  21. package/dist/animationsV2/nodeTracks.js +165 -0
  22. package/dist/animationsV2/normalize.d.ts +4 -0
  23. package/dist/animationsV2/normalize.d.ts.map +1 -0
  24. package/dist/animationsV2/normalize.js +60 -0
  25. package/dist/animationsV2/sequenceUtils.d.ts +98 -0
  26. package/dist/animationsV2/sequenceUtils.d.ts.map +1 -0
  27. package/dist/animationsV2/sequenceUtils.js +220 -0
  28. package/dist/animationsV2/types.d.ts +115 -0
  29. package/dist/animationsV2/types.d.ts.map +1 -0
  30. package/dist/animationsV2/types.js +8 -0
  31. package/dist/api/sceneHandle.d.ts +56 -17
  32. package/dist/api/sceneHandle.d.ts.map +1 -1
  33. package/dist/api/sceneHandle.js +154 -77
  34. package/dist/components/AdvancedGrid.d.ts +8 -2
  35. package/dist/components/AdvancedGrid.d.ts.map +1 -1
  36. package/dist/components/AdvancedGrid.js +31 -14
  37. package/dist/components/AnimatedObject.d.ts.map +1 -1
  38. package/dist/components/AnimatedObject.js +7 -5
  39. package/dist/components/Bubbles.d.ts +7 -1
  40. package/dist/components/Bubbles.d.ts.map +1 -1
  41. package/dist/components/Bubbles.js +42 -22
  42. package/dist/components/CameraController.d.ts.map +1 -1
  43. package/dist/components/CameraController.js +0 -44
  44. package/dist/components/ChladniGrid.d.ts +8 -4
  45. package/dist/components/ChladniGrid.d.ts.map +1 -1
  46. package/dist/components/ChladniGrid.js +31 -13
  47. package/dist/components/CircuitGrid.d.ts +8 -11
  48. package/dist/components/CircuitGrid.d.ts.map +1 -1
  49. package/dist/components/CircuitGrid.js +31 -13
  50. package/dist/components/Clouds.d.ts.map +1 -1
  51. package/dist/components/Clouds.js +0 -34
  52. package/dist/components/CloudsGenerator.d.ts +1 -1
  53. package/dist/components/CloudsGenerator.js +1 -1
  54. package/dist/components/ContourGrid.d.ts +8 -14
  55. package/dist/components/ContourGrid.d.ts.map +1 -1
  56. package/dist/components/ContourGrid.js +31 -13
  57. package/dist/components/CreatedObject.d.ts.map +1 -1
  58. package/dist/components/CreatedObject.js +19 -1
  59. package/dist/components/EffectsGenerator.d.ts +7 -1
  60. package/dist/components/EffectsGenerator.d.ts.map +1 -1
  61. package/dist/components/EffectsGenerator.js +39 -38
  62. package/dist/components/EnvironmentManager.d.ts +4 -4
  63. package/dist/components/EnvironmentManager.d.ts.map +1 -1
  64. package/dist/components/EnvironmentManager.js +1 -1
  65. package/dist/components/FlowNetGrid.d.ts +8 -4
  66. package/dist/components/FlowNetGrid.d.ts.map +1 -1
  67. package/dist/components/FlowNetGrid.js +31 -13
  68. package/dist/components/FractalGrid.d.ts +8 -12
  69. package/dist/components/FractalGrid.d.ts.map +1 -1
  70. package/dist/components/FractalGrid.js +31 -13
  71. package/dist/components/GirihGrid.d.ts +8 -1
  72. package/dist/components/GirihGrid.d.ts.map +1 -1
  73. package/dist/components/GirihGrid.js +31 -13
  74. package/dist/components/Glyphs.d.ts +7 -1
  75. package/dist/components/Glyphs.d.ts.map +1 -1
  76. package/dist/components/Glyphs.js +40 -34
  77. package/dist/components/GravWaveGrid.d.ts +8 -1
  78. package/dist/components/GravWaveGrid.d.ts.map +1 -1
  79. package/dist/components/GravWaveGrid.js +31 -13
  80. package/dist/components/GridsGenerator.d.ts +7 -1
  81. package/dist/components/GridsGenerator.d.ts.map +1 -1
  82. package/dist/components/GridsGenerator.js +20 -18
  83. package/dist/components/HexGrid.d.ts +8 -10
  84. package/dist/components/HexGrid.d.ts.map +1 -1
  85. package/dist/components/HexGrid.js +31 -13
  86. package/dist/components/HyperbolicGrid.d.ts +8 -4
  87. package/dist/components/HyperbolicGrid.d.ts.map +1 -1
  88. package/dist/components/HyperbolicGrid.js +31 -13
  89. package/dist/components/LandscapeBuilder.d.ts +1 -1
  90. package/dist/components/LandscapeBuilder.d.ts.map +1 -1
  91. package/dist/components/LandscapeBuilder.js +1 -1
  92. package/dist/components/LandscapeObject.d.ts +1 -1
  93. package/dist/components/LandscapeObject.d.ts.map +1 -1
  94. package/dist/components/LandscapeObject.js +1 -1
  95. package/dist/components/MoireGrid.d.ts +8 -12
  96. package/dist/components/MoireGrid.d.ts.map +1 -1
  97. package/dist/components/MoireGrid.js +31 -13
  98. package/dist/components/ObjectNode.d.ts.map +1 -1
  99. package/dist/components/ObjectNode.js +2 -2
  100. package/dist/components/ObjectsRenderer.d.ts +4 -1
  101. package/dist/components/ObjectsRenderer.d.ts.map +1 -1
  102. package/dist/components/ObjectsRenderer.js +57 -3
  103. package/dist/components/Ocean.d.ts.map +1 -1
  104. package/dist/components/Ocean.js +0 -63
  105. package/dist/components/OceanBuilder.d.ts +1 -1
  106. package/dist/components/OceanBuilder.js +1 -1
  107. package/dist/components/ParticlesGenerator.d.ts.map +1 -1
  108. package/dist/components/ParticlesGenerator.js +6 -0
  109. package/dist/components/QuasiGrid.d.ts +8 -11
  110. package/dist/components/QuasiGrid.d.ts.map +1 -1
  111. package/dist/components/QuasiGrid.js +31 -13
  112. package/dist/components/RadarGrid.d.ts +8 -13
  113. package/dist/components/RadarGrid.d.ts.map +1 -1
  114. package/dist/components/RadarGrid.js +31 -13
  115. package/dist/components/ReactionDiffusionGrid.d.ts +8 -1
  116. package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
  117. package/dist/components/ReactionDiffusionGrid.js +33 -139
  118. package/dist/components/SceneBuilder.d.ts.map +1 -1
  119. package/dist/components/SceneBuilder.js +19 -4
  120. package/dist/components/SkyController.d.ts.map +1 -1
  121. package/dist/components/SkyController.js +0 -39
  122. package/dist/components/SkySystem.d.ts +1 -1
  123. package/dist/components/SparklesBurst.d.ts +7 -1
  124. package/dist/components/SparklesBurst.d.ts.map +1 -1
  125. package/dist/components/SparklesBurst.js +31 -28
  126. package/dist/components/Stars.d.ts.map +1 -1
  127. package/dist/components/Stars.js +3 -47
  128. package/dist/components/TerrainBuilder.d.ts +1 -1
  129. package/dist/components/TerrainBuilder.d.ts.map +1 -1
  130. package/dist/components/TerrainBuilder.js +1 -1
  131. package/dist/components/VoronoiGrid.d.ts +8 -10
  132. package/dist/components/VoronoiGrid.d.ts.map +1 -1
  133. package/dist/components/VoronoiGrid.js +31 -13
  134. package/dist/components/WallpaperGrid.d.ts +8 -1
  135. package/dist/components/WallpaperGrid.d.ts.map +1 -1
  136. package/dist/components/WallpaperGrid.js +33 -210
  137. package/dist/components/effects/AuraEffect.d.ts +8 -3
  138. package/dist/components/effects/AuraEffect.d.ts.map +1 -1
  139. package/dist/components/effects/AuraEffect.js +49 -24
  140. package/dist/components/effects/AuroraEffect.d.ts +8 -3
  141. package/dist/components/effects/AuroraEffect.d.ts.map +1 -1
  142. package/dist/components/effects/AuroraEffect.js +45 -25
  143. package/dist/components/effects/BlackHoleEffect.d.ts +8 -3
  144. package/dist/components/effects/BlackHoleEffect.d.ts.map +1 -1
  145. package/dist/components/effects/BlackHoleEffect.js +42 -21
  146. package/dist/components/effects/ConstellationEffect.d.ts +8 -3
  147. package/dist/components/effects/ConstellationEffect.d.ts.map +1 -1
  148. package/dist/components/effects/ConstellationEffect.js +49 -23
  149. package/dist/components/effects/DandelionSeedsEffect.d.ts +7 -2
  150. package/dist/components/effects/DandelionSeedsEffect.d.ts.map +1 -1
  151. package/dist/components/effects/DandelionSeedsEffect.js +19 -9
  152. package/dist/components/effects/DataStreamEffect.d.ts +8 -3
  153. package/dist/components/effects/DataStreamEffect.d.ts.map +1 -1
  154. package/dist/components/effects/DataStreamEffect.js +54 -26
  155. package/dist/components/effects/DnaHelixEffect.d.ts +8 -3
  156. package/dist/components/effects/DnaHelixEffect.d.ts.map +1 -1
  157. package/dist/components/effects/DnaHelixEffect.js +62 -30
  158. package/dist/components/effects/FallingLeavesEffect.d.ts +7 -2
  159. package/dist/components/effects/FallingLeavesEffect.d.ts.map +1 -1
  160. package/dist/components/effects/FallingLeavesEffect.js +19 -9
  161. package/dist/components/effects/FieldLinesEffect.d.ts +8 -3
  162. package/dist/components/effects/FieldLinesEffect.d.ts.map +1 -1
  163. package/dist/components/effects/FieldLinesEffect.js +30 -20
  164. package/dist/components/effects/Fire.d.ts +8 -3
  165. package/dist/components/effects/Fire.d.ts.map +1 -1
  166. package/dist/components/effects/Fire.js +47 -10
  167. package/dist/components/effects/FireflySwarmEffect.d.ts +7 -2
  168. package/dist/components/effects/FireflySwarmEffect.d.ts.map +1 -1
  169. package/dist/components/effects/FireflySwarmEffect.js +19 -9
  170. package/dist/components/effects/Flares.d.ts +10 -3
  171. package/dist/components/effects/Flares.d.ts.map +1 -1
  172. package/dist/components/effects/Flares.js +53 -56
  173. package/dist/components/effects/ForcefieldEffect.d.ts +8 -3
  174. package/dist/components/effects/ForcefieldEffect.d.ts.map +1 -1
  175. package/dist/components/effects/ForcefieldEffect.js +52 -33
  176. package/dist/components/effects/GalaxyEffect.d.ts +7 -2
  177. package/dist/components/effects/GalaxyEffect.d.ts.map +1 -1
  178. package/dist/components/effects/GalaxyEffect.js +19 -9
  179. package/dist/components/effects/HarmonicShellEffect.d.ts +8 -3
  180. package/dist/components/effects/HarmonicShellEffect.d.ts.map +1 -1
  181. package/dist/components/effects/HarmonicShellEffect.js +30 -22
  182. package/dist/components/effects/HologramEffect.d.ts +8 -3
  183. package/dist/components/effects/HologramEffect.d.ts.map +1 -1
  184. package/dist/components/effects/HologramEffect.js +52 -23
  185. package/dist/components/effects/IceCrystalsEffect.d.ts +8 -3
  186. package/dist/components/effects/IceCrystalsEffect.d.ts.map +1 -1
  187. package/dist/components/effects/IceCrystalsEffect.js +36 -21
  188. package/dist/components/effects/IceHaloEffect.d.ts +7 -2
  189. package/dist/components/effects/IceHaloEffect.d.ts.map +1 -1
  190. package/dist/components/effects/IceHaloEffect.js +19 -9
  191. package/dist/components/effects/LichtenbergEffect.d.ts +7 -2
  192. package/dist/components/effects/LichtenbergEffect.d.ts.map +1 -1
  193. package/dist/components/effects/LichtenbergEffect.js +19 -9
  194. package/dist/components/effects/LightningEffect.d.ts +8 -3
  195. package/dist/components/effects/LightningEffect.d.ts.map +1 -1
  196. package/dist/components/effects/LightningEffect.js +54 -32
  197. package/dist/components/effects/MoleculesEffect.d.ts +8 -3
  198. package/dist/components/effects/MoleculesEffect.d.ts.map +1 -1
  199. package/dist/components/effects/MoleculesEffect.js +31 -21
  200. package/dist/components/effects/MurmurationEffect.d.ts +7 -2
  201. package/dist/components/effects/MurmurationEffect.d.ts.map +1 -1
  202. package/dist/components/effects/MurmurationEffect.js +19 -9
  203. package/dist/components/effects/NeuralNetworkEffect.d.ts +8 -3
  204. package/dist/components/effects/NeuralNetworkEffect.d.ts.map +1 -1
  205. package/dist/components/effects/NeuralNetworkEffect.js +66 -33
  206. package/dist/components/effects/OrbEffect.d.ts +8 -3
  207. package/dist/components/effects/OrbEffect.d.ts.map +1 -1
  208. package/dist/components/effects/OrbEffect.js +89 -42
  209. package/dist/components/effects/PlanetaryRingsEffect.d.ts +7 -2
  210. package/dist/components/effects/PlanetaryRingsEffect.d.ts.map +1 -1
  211. package/dist/components/effects/PlanetaryRingsEffect.js +19 -9
  212. package/dist/components/effects/PortalEffect.d.ts +8 -3
  213. package/dist/components/effects/PortalEffect.d.ts.map +1 -1
  214. package/dist/components/effects/PortalEffect.js +41 -25
  215. package/dist/components/effects/ShockwaveEffect.d.ts +7 -2
  216. package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -1
  217. package/dist/components/effects/ShockwaveEffect.js +19 -9
  218. package/dist/components/effects/SmokePlumeEffect.d.ts +8 -3
  219. package/dist/components/effects/SmokePlumeEffect.d.ts.map +1 -1
  220. package/dist/components/effects/SmokePlumeEffect.js +30 -20
  221. package/dist/components/effects/SmokeRibbon.d.ts +8 -2
  222. package/dist/components/effects/SmokeRibbon.d.ts.map +1 -1
  223. package/dist/components/effects/SmokeRibbon.js +34 -24
  224. package/dist/components/effects/SmokeRingEffect.d.ts +8 -3
  225. package/dist/components/effects/SmokeRingEffect.d.ts.map +1 -1
  226. package/dist/components/effects/SmokeRingEffect.js +33 -21
  227. package/dist/components/effects/StrangeAttractorEffect.d.ts +8 -3
  228. package/dist/components/effects/StrangeAttractorEffect.d.ts.map +1 -1
  229. package/dist/components/effects/StrangeAttractorEffect.js +30 -20
  230. package/dist/components/effects/VolumetricFogEffect.d.ts +8 -3
  231. package/dist/components/effects/VolumetricFogEffect.d.ts.map +1 -1
  232. package/dist/components/effects/VolumetricFogEffect.js +38 -20
  233. package/dist/components/effects/WaterCausticsEffect.d.ts +7 -2
  234. package/dist/components/effects/WaterCausticsEffect.d.ts.map +1 -1
  235. package/dist/components/effects/WaterCausticsEffect.js +19 -9
  236. package/dist/components/effects/index.d.ts +0 -1
  237. package/dist/components/effects/index.d.ts.map +1 -1
  238. package/dist/components/effects/index.js +0 -1
  239. package/dist/components/index.d.ts +0 -1
  240. package/dist/components/index.d.ts.map +1 -1
  241. package/dist/components/index.js +0 -1
  242. package/dist/components/landscape/LandscapeMesh.js +1 -1
  243. package/dist/components/landscape/types.d.ts +1 -1
  244. package/dist/components/landscape/types.d.ts.map +1 -1
  245. package/dist/components/particles/MagneticBottleParticles.d.ts +17 -0
  246. package/dist/components/particles/MagneticBottleParticles.d.ts.map +1 -0
  247. package/dist/components/particles/MagneticBottleParticles.js +618 -0
  248. package/dist/components/particles/ShapeBurstParticles.d.ts +17 -0
  249. package/dist/components/particles/ShapeBurstParticles.d.ts.map +1 -0
  250. package/dist/components/particles/ShapeBurstParticles.js +588 -0
  251. package/dist/components/particles/ShapeFlowParticles.d.ts +17 -0
  252. package/dist/components/particles/ShapeFlowParticles.d.ts.map +1 -0
  253. package/dist/components/particles/ShapeFlowParticles.js +755 -0
  254. package/dist/components/particles/index.d.ts +6 -0
  255. package/dist/components/particles/index.d.ts.map +1 -1
  256. package/dist/components/particles/index.js +3 -0
  257. package/dist/components/terrain/TerrainSurface.d.ts.map +1 -1
  258. package/dist/components/terrain/TerrainSurface.js +0 -5
  259. package/dist/components/terrain/types.d.ts +1 -1
  260. package/dist/components/terrain/types.d.ts.map +1 -1
  261. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +1 -1
  262. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -1
  263. package/dist/components/volumetricClouds/VolumetricCloudsPass.js +0 -6
  264. package/dist/components/volumetricClouds/types.d.ts +1 -1
  265. package/dist/components/volumetricClouds/types.d.ts.map +1 -1
  266. package/dist/components/water/types.d.ts +1 -1
  267. package/dist/components/water/types.d.ts.map +1 -1
  268. package/dist/constants.d.ts +1 -1
  269. package/dist/constants.d.ts.map +1 -1
  270. package/dist/constants.js +1 -1
  271. package/dist/hooks/index.d.ts +2 -2
  272. package/dist/hooks/index.d.ts.map +1 -1
  273. package/dist/hooks/index.js +1 -2
  274. package/dist/hooks/useConfigDriver.d.ts +22 -0
  275. package/dist/hooks/useConfigDriver.d.ts.map +1 -0
  276. package/dist/hooks/useConfigDriver.js +43 -0
  277. package/dist/hooks/useConfigLive.d.ts +1 -1
  278. package/dist/hooks/useConfigLive.d.ts.map +1 -1
  279. package/dist/hooks/useInteraction.d.ts +6 -7
  280. package/dist/hooks/useInteraction.d.ts.map +1 -1
  281. package/dist/hooks/useInteraction.js +87 -268
  282. package/dist/hooks/useLandscapeMaps.d.ts +1 -1
  283. package/dist/hooks/useLandscapeMaps.d.ts.map +1 -1
  284. package/dist/hooks/useObjectAnimation.d.ts.map +1 -1
  285. package/dist/hooks/useObjectAnimation.js +0 -2
  286. package/dist/hooks/useOceanMaterial.d.ts +1 -1
  287. package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
  288. package/dist/hooks/useOceanMaterial.js +0 -5
  289. package/dist/hooks/useRuntimeSettings.d.ts +1 -1
  290. package/dist/hooks/useRuntimeSettings.js +1 -1
  291. package/dist/hooks/useThunder.d.ts +1 -1
  292. package/dist/index.d.ts +6 -4
  293. package/dist/index.d.ts.map +1 -1
  294. package/dist/index.js +4 -2
  295. package/dist/interactions/index.d.ts +4 -0
  296. package/dist/interactions/index.d.ts.map +1 -0
  297. package/dist/interactions/index.js +1 -0
  298. package/dist/interactions/runner.d.ts +24 -0
  299. package/dist/interactions/runner.d.ts.map +1 -0
  300. package/dist/interactions/runner.js +46 -0
  301. package/dist/operations/catalogue/curlSmoke.d.ts +3 -0
  302. package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -0
  303. package/dist/operations/catalogue/curlSmoke.js +178 -0
  304. package/dist/operations/catalogue/displayImage.d.ts +3 -0
  305. package/dist/operations/catalogue/displayImage.d.ts.map +1 -0
  306. package/dist/operations/catalogue/displayImage.js +40 -0
  307. package/dist/operations/catalogue/dissolve.d.ts +3 -0
  308. package/dist/operations/catalogue/dissolve.d.ts.map +1 -0
  309. package/dist/operations/catalogue/dissolve.js +57 -0
  310. package/dist/operations/catalogue/emberAsh.d.ts +3 -0
  311. package/dist/operations/catalogue/emberAsh.d.ts.map +1 -0
  312. package/dist/operations/catalogue/emberAsh.js +171 -0
  313. package/dist/operations/catalogue/fade.d.ts +3 -0
  314. package/dist/operations/catalogue/fade.d.ts.map +1 -0
  315. package/dist/operations/catalogue/fade.js +45 -0
  316. package/dist/operations/catalogue/flip.d.ts +3 -0
  317. package/dist/operations/catalogue/flip.d.ts.map +1 -0
  318. package/dist/operations/catalogue/flip.js +69 -0
  319. package/dist/operations/catalogue/flock.d.ts +3 -0
  320. package/dist/operations/catalogue/flock.d.ts.map +1 -0
  321. package/dist/operations/catalogue/flock.js +163 -0
  322. package/dist/operations/catalogue/focus.d.ts +3 -0
  323. package/dist/operations/catalogue/focus.d.ts.map +1 -0
  324. package/dist/operations/catalogue/focus.js +23 -0
  325. package/dist/operations/catalogue/frame.d.ts +3 -0
  326. package/dist/operations/catalogue/frame.d.ts.map +1 -0
  327. package/dist/operations/catalogue/frame.js +44 -0
  328. package/dist/operations/catalogue/frost.d.ts +3 -0
  329. package/dist/operations/catalogue/frost.d.ts.map +1 -0
  330. package/dist/operations/catalogue/frost.js +111 -0
  331. package/dist/operations/catalogue/fxInstances.d.ts +21 -0
  332. package/dist/operations/catalogue/fxInstances.d.ts.map +1 -0
  333. package/dist/operations/catalogue/fxInstances.js +47 -0
  334. package/dist/operations/catalogue/fxPoints.d.ts +22 -0
  335. package/dist/operations/catalogue/fxPoints.d.ts.map +1 -0
  336. package/dist/operations/catalogue/fxPoints.js +70 -0
  337. package/dist/operations/catalogue/glow.d.ts +3 -0
  338. package/dist/operations/catalogue/glow.d.ts.map +1 -0
  339. package/dist/operations/catalogue/glow.js +50 -0
  340. package/dist/operations/catalogue/heatCracks.d.ts +3 -0
  341. package/dist/operations/catalogue/heatCracks.d.ts.map +1 -0
  342. package/dist/operations/catalogue/heatCracks.js +134 -0
  343. package/dist/operations/catalogue/hologram.d.ts +3 -0
  344. package/dist/operations/catalogue/hologram.d.ts.map +1 -0
  345. package/dist/operations/catalogue/hologram.js +118 -0
  346. package/dist/operations/catalogue/inkBloom.d.ts +3 -0
  347. package/dist/operations/catalogue/inkBloom.d.ts.map +1 -0
  348. package/dist/operations/catalogue/inkBloom.js +156 -0
  349. package/dist/operations/catalogue/ivy.d.ts +13 -0
  350. package/dist/operations/catalogue/ivy.d.ts.map +1 -0
  351. package/dist/operations/catalogue/ivy.js +469 -0
  352. package/dist/operations/catalogue/jelly.d.ts +3 -0
  353. package/dist/operations/catalogue/jelly.d.ts.map +1 -0
  354. package/dist/operations/catalogue/jelly.js +50 -0
  355. package/dist/operations/catalogue/kintsugi.d.ts +3 -0
  356. package/dist/operations/catalogue/kintsugi.d.ts.map +1 -0
  357. package/dist/operations/catalogue/kintsugi.js +173 -0
  358. package/dist/operations/catalogue/lidarScan.d.ts +3 -0
  359. package/dist/operations/catalogue/lidarScan.d.ts.map +1 -0
  360. package/dist/operations/catalogue/lidarScan.js +240 -0
  361. package/dist/operations/catalogue/liquidMetal.d.ts +3 -0
  362. package/dist/operations/catalogue/liquidMetal.d.ts.map +1 -0
  363. package/dist/operations/catalogue/liquidMetal.js +122 -0
  364. package/dist/operations/catalogue/materialFx.d.ts +6 -0
  365. package/dist/operations/catalogue/materialFx.d.ts.map +1 -0
  366. package/dist/operations/catalogue/materialFx.js +13 -0
  367. package/dist/operations/catalogue/metalize.d.ts +3 -0
  368. package/dist/operations/catalogue/metalize.d.ts.map +1 -0
  369. package/dist/operations/catalogue/metalize.js +135 -0
  370. package/dist/operations/catalogue/moveToFront.d.ts +3 -0
  371. package/dist/operations/catalogue/moveToFront.d.ts.map +1 -0
  372. package/dist/operations/catalogue/moveToFront.js +26 -0
  373. package/dist/operations/catalogue/orbit.d.ts +3 -0
  374. package/dist/operations/catalogue/orbit.d.ts.map +1 -0
  375. package/dist/operations/catalogue/orbit.js +29 -0
  376. package/dist/operations/catalogue/particleSwarm.d.ts +3 -0
  377. package/dist/operations/catalogue/particleSwarm.d.ts.map +1 -0
  378. package/dist/operations/catalogue/particleSwarm.js +138 -0
  379. package/dist/operations/catalogue/petalPeel.d.ts +3 -0
  380. package/dist/operations/catalogue/petalPeel.d.ts.map +1 -0
  381. package/dist/operations/catalogue/petalPeel.js +137 -0
  382. package/dist/operations/catalogue/petrify.d.ts +3 -0
  383. package/dist/operations/catalogue/petrify.d.ts.map +1 -0
  384. package/dist/operations/catalogue/petrify.js +94 -0
  385. package/dist/operations/catalogue/portal.d.ts +3 -0
  386. package/dist/operations/catalogue/portal.d.ts.map +1 -0
  387. package/dist/operations/catalogue/portal.js +224 -0
  388. package/dist/operations/catalogue/print3d.d.ts +3 -0
  389. package/dist/operations/catalogue/print3d.d.ts.map +1 -0
  390. package/dist/operations/catalogue/print3d.js +275 -0
  391. package/dist/operations/catalogue/rainBeads.d.ts +3 -0
  392. package/dist/operations/catalogue/rainBeads.d.ts.map +1 -0
  393. package/dist/operations/catalogue/rainBeads.js +223 -0
  394. package/dist/operations/catalogue/restPose.d.ts +21 -0
  395. package/dist/operations/catalogue/restPose.d.ts.map +1 -0
  396. package/dist/operations/catalogue/restPose.js +55 -0
  397. package/dist/operations/catalogue/rimLight.d.ts +3 -0
  398. package/dist/operations/catalogue/rimLight.d.ts.map +1 -0
  399. package/dist/operations/catalogue/rimLight.js +72 -0
  400. package/dist/operations/catalogue/sandErosion.d.ts +3 -0
  401. package/dist/operations/catalogue/sandErosion.d.ts.map +1 -0
  402. package/dist/operations/catalogue/sandErosion.js +167 -0
  403. package/dist/operations/catalogue/shaderLayers.d.ts +74 -0
  404. package/dist/operations/catalogue/shaderLayers.d.ts.map +1 -0
  405. package/dist/operations/catalogue/shaderLayers.js +322 -0
  406. package/dist/operations/catalogue/shatter.d.ts +3 -0
  407. package/dist/operations/catalogue/shatter.d.ts.map +1 -0
  408. package/dist/operations/catalogue/shatter.js +267 -0
  409. package/dist/operations/catalogue/silkDrape.d.ts +3 -0
  410. package/dist/operations/catalogue/silkDrape.d.ts.map +1 -0
  411. package/dist/operations/catalogue/silkDrape.js +340 -0
  412. package/dist/operations/catalogue/spin.d.ts +3 -0
  413. package/dist/operations/catalogue/spin.d.ts.map +1 -0
  414. package/dist/operations/catalogue/spin.js +42 -0
  415. package/dist/operations/catalogue/surfaceSample.d.ts +17 -0
  416. package/dist/operations/catalogue/surfaceSample.d.ts.map +1 -0
  417. package/dist/operations/catalogue/surfaceSample.js +187 -0
  418. package/dist/operations/catalogue/swirl.d.ts +3 -0
  419. package/dist/operations/catalogue/swirl.d.ts.map +1 -0
  420. package/dist/operations/catalogue/swirl.js +69 -0
  421. package/dist/operations/catalogue/teleport.d.ts +3 -0
  422. package/dist/operations/catalogue/teleport.d.ts.map +1 -0
  423. package/dist/operations/catalogue/teleport.js +213 -0
  424. package/dist/operations/catalogue/transitionField.d.ts +124 -0
  425. package/dist/operations/catalogue/transitionField.d.ts.map +1 -0
  426. package/dist/operations/catalogue/transitionField.js +278 -0
  427. package/dist/operations/catalogue/unweave.d.ts +3 -0
  428. package/dist/operations/catalogue/unweave.d.ts.map +1 -0
  429. package/dist/operations/catalogue/unweave.js +233 -0
  430. package/dist/operations/catalogue/visibility.d.ts +3 -0
  431. package/dist/operations/catalogue/visibility.d.ts.map +1 -0
  432. package/dist/operations/catalogue/visibility.js +25 -0
  433. package/dist/operations/catalogue/voxelize.d.ts +3 -0
  434. package/dist/operations/catalogue/voxelize.d.ts.map +1 -0
  435. package/dist/operations/catalogue/voxelize.js +148 -0
  436. package/dist/operations/catalogue/warmup.d.ts +22 -0
  437. package/dist/operations/catalogue/warmup.d.ts.map +1 -0
  438. package/dist/operations/catalogue/warmup.js +106 -0
  439. package/dist/operations/catalogue/zoom.d.ts +3 -0
  440. package/dist/operations/catalogue/zoom.d.ts.map +1 -0
  441. package/dist/operations/catalogue/zoom.js +33 -0
  442. package/dist/operations/index.d.ts +7 -0
  443. package/dist/operations/index.d.ts.map +1 -0
  444. package/dist/operations/index.js +6 -0
  445. package/dist/operations/objectEffects.d.ts +46 -0
  446. package/dist/operations/objectEffects.d.ts.map +1 -0
  447. package/dist/operations/objectEffects.js +136 -0
  448. package/dist/operations/registry.d.ts +16 -0
  449. package/dist/operations/registry.d.ts.map +1 -0
  450. package/dist/operations/registry.js +63 -0
  451. package/dist/operations/runtime.d.ts +60 -0
  452. package/dist/operations/runtime.d.ts.map +1 -0
  453. package/dist/operations/runtime.js +317 -0
  454. package/dist/operations/types.d.ts +122 -0
  455. package/dist/operations/types.d.ts.map +1 -0
  456. package/dist/operations/types.js +9 -0
  457. package/dist/operations/useObjectEffectLayers.d.ts +4 -0
  458. package/dist/operations/useObjectEffectLayers.d.ts.map +1 -0
  459. package/dist/operations/useObjectEffectLayers.js +42 -0
  460. package/dist/operations/useOperationsRuntime.d.ts +3 -0
  461. package/dist/operations/useOperationsRuntime.d.ts.map +1 -0
  462. package/dist/operations/useOperationsRuntime.js +69 -0
  463. package/dist/presets/landscapePresets.d.ts +1 -1
  464. package/dist/presets/landscapePresets.d.ts.map +1 -1
  465. package/dist/presets/landscapePresets.js +1 -1
  466. package/dist/presets/landscapeTypes.d.ts +1 -1
  467. package/dist/presets/landscapeTypes.d.ts.map +1 -1
  468. package/dist/presets/landscapeTypes.js +1 -1
  469. package/dist/presets/oceanSurfacePresets.d.ts +1 -1
  470. package/dist/presets/terrainPresets.d.ts +1 -1
  471. package/dist/presets/terrainPresets.d.ts.map +1 -1
  472. package/dist/presets/volumetricCloudPresets.d.ts +1 -1
  473. package/dist/types/cloudConfigs.d.ts +2 -309
  474. package/dist/types/cloudConfigs.d.ts.map +1 -1
  475. package/dist/types/cloudConfigs.js +2 -339
  476. package/dist/types/index.d.ts +8 -8
  477. package/dist/types/index.d.ts.map +1 -1
  478. package/dist/types/index.js +4 -4
  479. package/dist/types/landscapeConfigs.d.ts +2 -217
  480. package/dist/types/landscapeConfigs.d.ts.map +1 -1
  481. package/dist/types/landscapeConfigs.js +2 -256
  482. package/dist/types/oceanConfigs.d.ts +2 -289
  483. package/dist/types/oceanConfigs.d.ts.map +1 -1
  484. package/dist/types/oceanConfigs.js +2 -380
  485. package/dist/types/terrainConfigs.d.ts +2 -250
  486. package/dist/types/terrainConfigs.d.ts.map +1 -1
  487. package/dist/types/terrainConfigs.js +2 -292
  488. package/dist/utils/cloudUniforms.d.ts +1 -1
  489. package/dist/utils/configAnimations.d.ts +6 -0
  490. package/dist/utils/configAnimations.d.ts.map +1 -1
  491. package/dist/utils/configAnimations.js +14 -0
  492. package/dist/utils/gridConfig.d.ts +19 -0
  493. package/dist/utils/gridConfig.d.ts.map +1 -0
  494. package/dist/utils/gridConfig.js +52 -0
  495. package/dist/utils/handleCloudsAnimations.d.ts +1 -1
  496. package/dist/utils/handleCloudsAnimations.js +1 -1
  497. package/dist/utils/hasHoverAnimation.d.ts.map +1 -1
  498. package/dist/utils/hasHoverAnimation.js +0 -2
  499. package/dist/utils/landscapeUniforms.d.ts +1 -1
  500. package/dist/utils/landscapeUniforms.d.ts.map +1 -1
  501. package/dist/utils/oceanUniforms.d.ts +1 -1
  502. package/dist/utils/particleShape.d.ts +33 -0
  503. package/dist/utils/particleShape.d.ts.map +1 -0
  504. package/dist/utils/particleShape.js +207 -0
  505. package/dist/utils/particleTrails.d.ts.map +1 -1
  506. package/dist/utils/particleTrails.js +29 -14
  507. package/dist/utils/terrainUniforms.d.ts +1 -1
  508. package/dist/utils/terrainUniforms.d.ts.map +1 -1
  509. package/package.json +2 -2
@@ -0,0 +1,50 @@
1
+ import { gsap } from 'gsap';
2
+ import { defineOperation } from '../types.js';
3
+ import { forEachMaterial, isLit, toColor } from './materialFx.js';
4
+ const KEY = '__opGlow';
5
+ export default defineOperation({
6
+ value: 'glow',
7
+ label: 'Glow',
8
+ description: 'Light the targets up with an emissive glow',
9
+ channel: 'visual',
10
+ multi: true,
11
+ toggles: true,
12
+ usableIn: ['interaction', 'action', 'object'],
13
+ params: {
14
+ color: { type: 'color', label: 'Colour', default: '#3380ff' },
15
+ intensity: { type: 'number', label: 'Intensity', default: 3, min: 0, max: 20, step: 0.1 },
16
+ duration: { type: 'number', label: 'Duration', default: 0.4, min: 0, max: 10, step: 0.05, unit: 's' },
17
+ },
18
+ apply(target, p) {
19
+ const color = toColor(String(p.color));
20
+ forEachMaterial(target, (mat) => {
21
+ if (!isLit(mat))
22
+ return;
23
+ if (!mat.userData[KEY]) {
24
+ mat.userData[KEY] = { emissive: mat.emissive.getHex(), intensity: mat.emissiveIntensity, toneMapped: mat.toneMapped };
25
+ }
26
+ mat.toneMapped = false;
27
+ gsap.killTweensOf(mat);
28
+ gsap.killTweensOf(mat.emissive);
29
+ gsap.to(mat, { emissiveIntensity: Number(p.intensity), duration: Number(p.duration), ease: 'power2.out' });
30
+ gsap.to(mat.emissive, { r: color.r, g: color.g, b: color.b, duration: Number(p.duration), ease: 'power2.out' });
31
+ });
32
+ },
33
+ revert(target, p) {
34
+ forEachMaterial(target, (mat) => {
35
+ if (!isLit(mat))
36
+ return;
37
+ const orig = mat.userData[KEY];
38
+ if (!orig)
39
+ return;
40
+ const c = toColor('#000000').setHex(orig.emissive);
41
+ gsap.killTweensOf(mat);
42
+ gsap.killTweensOf(mat.emissive);
43
+ gsap.to(mat, {
44
+ emissiveIntensity: orig.intensity, duration: Number(p.duration), ease: 'power2.in',
45
+ onComplete: () => { mat.toneMapped = orig.toneMapped; delete mat.userData[KEY]; },
46
+ });
47
+ gsap.to(mat.emissive, { r: c.r, g: c.g, b: c.b, duration: Number(p.duration), ease: 'power2.in' });
48
+ });
49
+ },
50
+ });
@@ -0,0 +1,3 @@
1
+ declare const _default: import("..").OperationDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=heatCracks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heatCracks.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/heatCracks.ts"],"names":[],"mappings":";AAoFA,wBAoDG"}
@@ -0,0 +1,134 @@
1
+ // Heat cracks — heat takes hold of the object and you see what it does to it:
2
+ // a network of cracks spreads along the front and glows from inside like cooling
3
+ // lava; the cracks sink into the surface (real relief — vertices along the crack
4
+ // seams are pushed in, the plates between them swell slightly), the plates char
5
+ // and darken from their edges inward, and a few plates run hot as a whole. The
6
+ // glow keeps breathing slowly while the effect is on. A state, not an exit —
7
+ // nothing dissolves; reverting cools the object and the cracks close.
8
+ import { gsap } from 'gsap';
9
+ import { Color } from 'three';
10
+ import { defineOperation } from '../types.js';
11
+ import { GLSL_WORLEY, addLayer, forEachMeshMaterial, removeLayer } from './shaderLayers.js';
12
+ import { DIRECTION_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, runProgress, setFieldParams, syncRoot } from './transitionField.js';
13
+ const P = 'Hot';
14
+ const KEY = 'heatCracks';
15
+ const STATE = '__opHeatCracks';
16
+ const CRACKS = /* glsl */ `
17
+ // how far the cracking has got at a point, and where the seams are
18
+ float hotCracked(vec3 q) { return smoothstep(0.0, uHotEdgeWidth, HotThreshold() - HotField(q)); }
19
+ vec3 hotCells(vec3 r) { return fxWorley(r * (uHotDensity / uHotExtent)); }
20
+ `;
21
+ function layerFor(st) {
22
+ return {
23
+ uniforms: { ...fieldUniforms(P, st.field), uHotHeat: st.heat, uHotDensity: st.density, uHotDepth: st.depth },
24
+ common: `varying vec3 vHotQ;\nvarying vec3 vHotR;\n${fieldGlsl(P)}\n${GLSL_WORLEY}\n${CRACKS}`,
25
+ fragmentPars: 'vec3 hotCell = vec3(1.0); float hotCr = 0.0; bool hotDone = false;',
26
+ vertex: /* glsl */ `
27
+ {
28
+ vec3 r = (uHotRootInv * modelMatrix * vec4(transformed, 1.0)).xyz;
29
+ vec3 q = HotNorm(r);
30
+ float cracked = hotCracked(q);
31
+ vec3 cell = hotCells(r);
32
+ float e = cell.y - cell.x;
33
+ // seams sink, plates swell a touch — relief that catches the light
34
+ float relief = -(1.0 - smoothstep(0.0, 0.12, e)) + 0.25 * smoothstep(0.12, 0.5, e);
35
+ transformed += normal * (relief * cracked * uHotDepth * 0.012 * uHotExtent);
36
+ vHotR = r;
37
+ vHotQ = q;
38
+ }`,
39
+ diffuse: /* glsl */ `
40
+ {
41
+ // computed once here, shared with the lighting pass below
42
+ hotCr = hotCracked(vHotQ);
43
+ hotCell = hotCells(vHotR);
44
+ hotDone = true;
45
+ float cracked = hotCr;
46
+ vec3 cell = hotCell;
47
+ float e = cell.y - cell.x;
48
+ // plates char from their edges inward as the heat soaks in
49
+ float soak = cracked * clamp(uHotProgress * 1.2, 0.0, 1.0);
50
+ float charEdge = 1.0 - smoothstep(0.0, 0.35 * soak + 0.05, e);
51
+ vec3 charred = vec3(0.06, 0.05, 0.045);
52
+ diffuseColor.rgb = mix(diffuseColor.rgb, charred, cracked * (0.35 + 0.6 * charEdge));
53
+ }`,
54
+ material: /* glsl */ `
55
+ {
56
+ float cracked = hotDone ? hotCr : hotCracked(vHotQ);
57
+ roughnessFactor = mix(roughnessFactor, 0.9, cracked);
58
+ metalnessFactor = mix(metalnessFactor, 0.0, cracked);
59
+ }`,
60
+ fragment: /* glsl */ `
61
+ {
62
+ if (!hotDone) { hotCr = hotCracked(vHotQ); hotCell = hotCells(vHotR); }
63
+ float cracked = hotCr;
64
+ vec3 cell = hotCell;
65
+ float e = cell.y - cell.x;
66
+ float cw = 0.05 + 0.04 * uHotProgress; // cracks widen as it heats
67
+ float crack = (1.0 - smoothstep(0.0, cw, e)) * cracked;
68
+ float breathe = 0.72 + 0.28 * sin(uHotTime * 1.1 + cell.z * 6.2832);
69
+ // a few whole plates run hot
70
+ float hotPlate = step(0.8, cell.z) * cracked * 0.35 * breathe;
71
+ float T = clamp(crack * breathe + hotPlate, 0.0, 1.0);
72
+ vec3 bb = mix(uHotHeat * vec3(0.35, 0.05, 0.0), uHotHeat, smoothstep(0.0, 0.6, T));
73
+ bb = mix(bb, vec3(1.0, 0.9, 0.65), smoothstep(0.75, 1.0, T));
74
+ float front = exp(-abs(HotThreshold() - HotField(vHotQ)) / 0.02) * step(0.0001, uHotProgress) * step(uHotProgress, 0.9999);
75
+ outgoingLight += bb * T * 3.0 + uHotHeat * front * 0.8;
76
+ }`,
77
+ };
78
+ }
79
+ export default defineOperation({
80
+ value: 'heatCracks',
81
+ label: 'Heat cracks',
82
+ description: 'Crack the targets with glowing lava seams that sink into the surface and char it — reverting cools them',
83
+ channel: 'visual',
84
+ multi: true,
85
+ toggles: true,
86
+ usableIn: ['interaction', 'action', 'object'],
87
+ params: {
88
+ direction: { type: 'select', label: 'Direction', default: 'up', options: DIRECTION_OPTIONS },
89
+ heat: { type: 'color', label: 'Heat', default: '#ff5a14' },
90
+ density: { type: 'number', label: 'Cracks', default: 9, min: 2, max: 40, step: 1, hint: 'Crack cells across the object' },
91
+ depth: { type: 'number', label: 'Crack depth', default: 1, min: 0, max: 4, step: 0.05, unit: '×' },
92
+ scale: { type: 'number', label: 'Front pattern', default: 2.5, min: 0.5, max: 12, step: 0.1 },
93
+ duration: { type: 'number', label: 'Duration', default: 3, min: 0.3, max: 12, step: 0.1, unit: 's' },
94
+ },
95
+ apply(target, p, ctx) {
96
+ let st = target.userData[STATE];
97
+ if (!st) {
98
+ const field = createFieldState(target);
99
+ field.edgeWidth.value = 0.06;
100
+ const own = { field, heat: { value: new Color() }, density: { value: 9 }, depth: { value: 1 }, mats: new Set() };
101
+ // the glow keeps breathing while the object stays cracked
102
+ own.tick = () => { own.field.time.value += gsap.ticker.deltaRatio() / 60; syncRoot(target, own.field); };
103
+ const layer = layerFor(own);
104
+ forEachMeshMaterial(target, (mat, mesh) => {
105
+ if (mesh.userData?.__opFxHelper)
106
+ return;
107
+ if (addLayer(mat, KEY, layer))
108
+ own.mats.add(mat);
109
+ });
110
+ gsap.ticker.add(own.tick);
111
+ st = own;
112
+ target.userData[STATE] = st;
113
+ }
114
+ const s = st;
115
+ setFieldParams(s.field, p, target, ctx);
116
+ s.heat.value.set(String(p.heat));
117
+ s.density.value = Number(p.density);
118
+ s.depth.value = Number(p.depth);
119
+ return runProgress(target, s.field, 1, { duration: Number(p.duration), ease: 'power1.out', clock: false });
120
+ },
121
+ revert(target, p) {
122
+ const s = target.userData[STATE];
123
+ if (!s)
124
+ return;
125
+ return runProgress(target, s.field, 0, {
126
+ duration: Number(p.duration), ease: 'power1.in', clock: false,
127
+ onComplete: () => {
128
+ gsap.ticker.remove(s.tick);
129
+ s.mats.forEach(m => removeLayer(m, KEY));
130
+ delete target.userData[STATE];
131
+ },
132
+ });
133
+ },
134
+ });
@@ -0,0 +1,3 @@
1
+ declare const _default: import("..").OperationDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=hologram.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hologram.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/hologram.ts"],"names":[],"mappings":";AAgBA,wBAsFG"}
@@ -0,0 +1,118 @@
1
+ // Hologram scan — a scan plane sweeps the target and turns the solid surface into
2
+ // a hologram: glowing grid lines in the object's own space, a Fresnel rim and
3
+ // drifting scanlines, everything else cut away (no transparency, so it sorts
4
+ // cleanly). A second plane follows and switches the hologram off.
5
+ // Reverting scans it back in: hologram first, then solid.
6
+ import { defineOperation } from '../types.js';
7
+ import { addLayer, forEachMeshMaterial, removeLayer } from './shaderLayers.js';
8
+ import { SWEEP_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, runProgress, setFieldParams } from './transitionField.js';
9
+ import { Color } from 'three';
10
+ const P = 'Holo';
11
+ const KEY = 'hologram';
12
+ const STATE = '__opHologram';
13
+ export default defineOperation({
14
+ value: 'hologram',
15
+ label: 'Hologram scan',
16
+ description: 'A scan plane turns the targets into a glowing hologram, then switches it off — reverting scans them back in',
17
+ channel: 'visual',
18
+ multi: true,
19
+ toggles: true,
20
+ usableIn: ['interaction', 'action', 'object'],
21
+ objectParams: { disappear: false },
22
+ params: {
23
+ direction: { type: 'select', label: 'Scan', default: 'down', options: SWEEP_OPTIONS },
24
+ color: { type: 'color', label: 'Colour', default: '#3fd4ff' },
25
+ density: { type: 'number', label: 'Grid', default: 14, min: 2, max: 60, step: 1, hint: 'Grid lines across the object' },
26
+ disappear: { type: 'boolean', label: 'Disappear', default: true, hint: 'Off: the object stays as a hologram after the scan' },
27
+ hold: { type: 'number', label: 'Hologram band', default: 0.45, min: 0.1, max: 1, step: 0.05, hint: 'How much of the object is hologram at once' },
28
+ duration: { type: 'number', label: 'Duration', default: 2.4, min: 0.3, max: 12, step: 0.1, unit: 's' },
29
+ },
30
+ apply(target, p, ctx) {
31
+ let st = target.userData[STATE];
32
+ if (!st) {
33
+ const field = createFieldState(target);
34
+ st = { field, color: { value: new Color() }, density: { value: 14 }, gap: { value: 0.45 }, keep: { value: 0 }, mats: new Set() };
35
+ const own = st;
36
+ const layer = {
37
+ uniforms: { ...fieldUniforms(P, field), uHoloColor: st.color, uHoloDensity: st.density, uHoloGap: st.gap, uHoloKeep: st.keep },
38
+ common: `varying vec3 vHoloR;\nvarying vec3 vHoloView;\n${fieldGlsl(P)}`,
39
+ vertex: /* glsl */ `
40
+ vHoloR = (uHoloRootInv * modelMatrix * vec4(transformed, 1.0)).xyz;
41
+ vHoloView = (modelViewMatrix * vec4(transformed, 1.0)).xyz;`,
42
+ fragment: /* glsl */ `
43
+ {
44
+ vec3 q = HoloNorm(vHoloR);
45
+ // scan coordinate: 0 where the scan starts, 1 where it ends
46
+ float s = HoloAlong(q);
47
+ float band = 0.02;
48
+ float fa = mix(-band, 1.0 + uHoloGap + band, clamp(uHoloProgress, 0.0, 1.0)); // solid → hologram
49
+ // hologram → gone (never, when the object should stay as a hologram)
50
+ float fb = uHoloKeep > 0.5 ? -1.0 : fa - uHoloGap;
51
+ if (s < fb) discard;
52
+ if (s < fa) {
53
+ // grid in root-local units, square cells, anti-aliased
54
+ vec3 cell = vHoloR * (uHoloDensity / uHoloExtent);
55
+ vec3 g = abs(fract(cell - 0.5) - 0.5) / max(fwidth(cell), vec3(1e-4));
56
+ float line = 1.0 - clamp(min(min(g.x, g.y), g.z), 0.0, 1.0);
57
+ // facing ratio from screen-space derivatives: works on lit and unlit materials
58
+ vec3 nv = normalize(cross(dFdx(vHoloView), dFdy(vHoloView)));
59
+ float fres = pow(1.0 - abs(dot(nv, normalize(-vHoloView))), 2.0);
60
+ float scan = 0.5 + 0.5 * sin(vHoloR.y / uHoloExtent * 180.0 - uHoloTime * 5.0);
61
+ float I = line * 0.9 + fres * 1.1 + scan * 0.12;
62
+ // hot edges at both planes
63
+ I += exp(-abs(s - fa) / 0.012) * 2.5 + exp(-abs(s - fb) / 0.01) * 1.5;
64
+ if (I < 0.32) discard;
65
+ outgoingLight = uHoloColor * I * 1.6;
66
+ } else {
67
+ // the solid side gets a faint pre-glow just ahead of the plane
68
+ outgoingLight += uHoloColor * exp(-(s - fa) / 0.03) * 0.6;
69
+ }
70
+ }`,
71
+ };
72
+ forEachMeshMaterial(target, (mat, mesh) => {
73
+ if (mesh.userData?.__opFxHelper)
74
+ return;
75
+ if (addLayer(mat, KEY, layer))
76
+ own.mats.add(mat);
77
+ });
78
+ target.userData[STATE] = st;
79
+ }
80
+ const s = st;
81
+ setFieldParams(s.field, { direction: p.direction }, target, ctx);
82
+ s.color.value.set(String(p.color));
83
+ s.density.value = Number(p.density);
84
+ s.gap.value = Number(p.hold);
85
+ const keep = p.disappear === false;
86
+ s.keep.value = keep ? 1 : 0;
87
+ return runProgress(target, s.field, 1, {
88
+ duration: Number(p.duration), ease: 'power1.inOut', hold: keep,
89
+ onComplete: () => { if (!keep)
90
+ setMeshesHidden(target, true); },
91
+ });
92
+ },
93
+ revert(target, p) {
94
+ const s = target.userData[STATE];
95
+ if (!s)
96
+ return;
97
+ setMeshesHidden(target, false);
98
+ return runProgress(target, s.field, 0, {
99
+ duration: Number(p.duration), ease: 'power1.inOut',
100
+ onComplete: () => { s.mats.forEach(m => removeLayer(m, KEY)); delete target.userData[STATE]; },
101
+ });
102
+ },
103
+ });
104
+ function setMeshesHidden(target, hidden) {
105
+ target.traverse((c) => {
106
+ if (!c.isMesh || c.userData?.__opFxHelper)
107
+ return;
108
+ if (hidden) {
109
+ if (c.userData.__opHoloVis === undefined)
110
+ c.userData.__opHoloVis = c.visible;
111
+ c.visible = false;
112
+ }
113
+ else if (c.userData.__opHoloVis !== undefined) {
114
+ c.visible = c.userData.__opHoloVis;
115
+ delete c.userData.__opHoloVis;
116
+ }
117
+ });
118
+ }
@@ -0,0 +1,3 @@
1
+ declare const _default: import("..").OperationDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=inkBloom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inkBloom.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/inkBloom.ts"],"names":[],"mappings":";AAmDA,wBA4GG"}
@@ -0,0 +1,156 @@
1
+ // Ink bloom — the object bleeds into ink, like a drop let go in still water.
2
+ // The surface stains along the front, then comes apart into ink FILAMENTS: each
3
+ // wisp is drawn as a crisp, fine line — its own recent path through the water —
4
+ // so the ink reads as clean curling threads that fray, sink and thin out, not
5
+ // as soft blobs. Normal blending (dark on light), so it works on light scenes.
6
+ // Reverting draws the ink back into the object.
7
+ import { BufferAttribute, BufferGeometry, LineSegments, NormalBlending, ShaderMaterial } from 'three';
8
+ import { defineOperation } from '../types.js';
9
+ import { addLayer, forEachMeshMaterial, removeLayer, uniformDecl } from './shaderLayers.js';
10
+ import { DIRECTION_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, hideMeshes, runProgress, setFieldParams, surfaceLayer, } from './transitionField.js';
11
+ import { sampleSurfaceCached } from './surfaceSample.js';
12
+ import { hideUntilWarm } from './warmup.js';
13
+ const P = 'Ink';
14
+ const KEY = 'inkBloom';
15
+ const STATE = '__opInk';
16
+ const LIFE = 0.9;
17
+ /** Points per filament (its trail through the water). */
18
+ const TRAIL = 12;
19
+ function buildFilaments(target, count) {
20
+ const s = sampleSurfaceCached(target, count, 29);
21
+ const segs = TRAIL - 1;
22
+ const n = s.count * segs * 2;
23
+ const P3 = new Float32Array(n * 3), N3 = new Float32Array(n * 3), C3 = new Float32Array(n * 3), R4 = new Float32Array(n * 4), K = new Float32Array(n);
24
+ let v = 0;
25
+ for (let i = 0; i < s.count; i++) {
26
+ for (let k = 0; k < segs; k++) {
27
+ for (const kk of [k, k + 1]) {
28
+ P3.set(s.position.subarray(i * 3, i * 3 + 3), v * 3);
29
+ N3.set(s.normal.subarray(i * 3, i * 3 + 3), v * 3);
30
+ C3.set(s.color.subarray(i * 3, i * 3 + 3), v * 3);
31
+ R4.set(s.random.subarray(i * 4, i * 4 + 4), v * 4);
32
+ K[v] = kk / (TRAIL - 1);
33
+ v++;
34
+ }
35
+ }
36
+ }
37
+ const g = new BufferGeometry();
38
+ g.setAttribute('position', new BufferAttribute(P3, 3));
39
+ g.setAttribute('aN', new BufferAttribute(N3, 3));
40
+ g.setAttribute('aC', new BufferAttribute(C3, 3));
41
+ g.setAttribute('aR', new BufferAttribute(R4, 4));
42
+ g.setAttribute('aK', new BufferAttribute(K, 1));
43
+ return g;
44
+ }
45
+ export default defineOperation({
46
+ value: 'inkBloom',
47
+ label: 'Ink bloom',
48
+ description: 'Bleed the targets into fine curling ink filaments, like a drop in water — reverting draws the ink back in',
49
+ channel: 'visual',
50
+ multi: true,
51
+ toggles: true,
52
+ usableIn: ['interaction', 'action'],
53
+ params: {
54
+ direction: { type: 'select', label: 'Direction', default: 'noise', options: DIRECTION_OPTIONS },
55
+ edgeColor: { type: 'color', label: 'Ink colour', default: '#16203a' },
56
+ tint: { type: 'number', label: 'Object colour', default: 0.15, min: 0, max: 1, step: 0.05, hint: 'How much of the object’s own colour the ink keeps' },
57
+ filaments: { type: 'number', label: 'Filaments', default: 9000, min: 1000, max: 40000, step: 500 },
58
+ opacity: { type: 'number', label: 'Density', default: 0.55, min: 0.05, max: 1, step: 0.05 },
59
+ sink: { type: 'number', label: 'Sink', default: 1, min: -2, max: 3, step: 0.05, unit: '×', hint: 'Negative rises like smoke' },
60
+ scale: { type: 'number', label: 'Pattern', default: 2.5, min: 0.5, max: 12, step: 0.1 },
61
+ duration: { type: 'number', label: 'Duration', default: 3.6, min: 0.3, max: 14, step: 0.1, unit: 's' },
62
+ },
63
+ apply(target, p, ctx) {
64
+ let st = target.userData[STATE];
65
+ if (!st) {
66
+ const field = createFieldState(target);
67
+ field.edgeWidth.value = 0.12;
68
+ const mixC = { value: 0.15 }, sink = { value: 1 }, opacity = { value: 0.55 };
69
+ const uniforms = { ...fieldUniforms(P, field), uInkMix: mixC, uInkSink: sink, uInkOpacity: opacity };
70
+ const decl = Object.keys(uniforms).map(n => uniformDecl(n, uniforms[n].value)).join('\n');
71
+ const mat = new ShaderMaterial({
72
+ uniforms: uniforms,
73
+ vertexShader: `${decl}
74
+ attribute vec3 aN; attribute vec3 aC; attribute vec4 aR; attribute float aK;
75
+ varying vec3 vColor; varying float vAlpha;
76
+ ${fieldGlsl(P)}
77
+ // where a wisp that left from p0 is, at age a (the drift is a smooth function of age, so a trail is exact)
78
+ vec3 inkAt(vec3 p0, vec3 n0, vec4 r, float a) {
79
+ float E = uInkExtent;
80
+ vec3 np = p0 / E * 1.8 + r.xyz * 4.0;
81
+ float t = a * 1.1;
82
+ vec3 d = vec3(fxNoise(np + vec3(t, 0.0, 0.0)), fxNoise(np + vec3(13.7, t, 5.1)), fxNoise(np + vec3(3.3, 9.2, t))) - 0.5;
83
+ vec3 d2 = vec3(fxNoise(np * 2.3 + vec3(0.0, t * 1.7, 0.0)), fxNoise(np * 2.3 + vec3(7.1, 2.0, t * 1.7)), fxNoise(np * 2.3 + vec3(t * 1.7, 4.4, 8.8))) - 0.5;
84
+ vec3 q = p0 + n0 * (0.05 * E * sqrt(a)) + (d * 0.75 + d2 * 0.55) * E * a;
85
+ q.y -= uInkSink * 0.25 * E * a * a;
86
+ return q;
87
+ }
88
+ void main() {
89
+ float birth = InkBirthOf(InkField(InkNorm(position)));
90
+ float a = (uInkProgress - birth) / ${LIFE.toFixed(2)};
91
+ // the trail: this vertex sits a little back along the wisp's own path
92
+ float trail = 0.22 * (0.6 + 0.8 * aR.w);
93
+ float ak = clamp(a - aK * trail, 0.0, 1.0);
94
+ if (a <= 0.0 || a >= 1.0) { gl_Position = vec4(2.0, 2.0, 2.0, 1.0); vColor = vec3(0.0); vAlpha = 0.0; return; }
95
+ vec3 q = inkAt(position, aN, aR, ak);
96
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(q, 1.0);
97
+ vColor = mix(uInkEdgeColor, aC, uInkMix) * (0.85 + 0.3 * aR.z);
98
+ // denser at the head, thinning along the trail and as the ink diffuses
99
+ vAlpha = uInkOpacity * (1.0 - aK) * smoothstep(0.0, 0.06, a) * pow(1.0 - a, 1.1);
100
+ }`,
101
+ fragmentShader: `
102
+ varying vec3 vColor; varying float vAlpha;
103
+ void main() {
104
+ gl_FragColor = vec4(vColor * vAlpha, vAlpha);
105
+ #include <tonemapping_fragment>
106
+ #include <colorspace_fragment>
107
+ }`,
108
+ transparent: true, depthWrite: false, blending: NormalBlending, premultipliedAlpha: true,
109
+ });
110
+ const lines = new LineSegments(buildFilaments(target, Math.round(Number(p.filaments))), mat);
111
+ lines.frustumCulled = false;
112
+ lines.raycast = () => { };
113
+ lines.userData.__opFxHelper = true;
114
+ lines.renderOrder = 10;
115
+ target.add(lines);
116
+ hideUntilWarm(lines);
117
+ st = { field, mixC, sink, opacity, lines, mats: new Set() };
118
+ const own = st;
119
+ const layer = surfaceLayer(P, field, 'stain');
120
+ forEachMeshMaterial(target, (m, mesh) => {
121
+ if (mesh.userData?.__opFxHelper)
122
+ return;
123
+ if (addLayer(m, KEY, layer))
124
+ own.mats.add(m);
125
+ });
126
+ target.userData[STATE] = st;
127
+ }
128
+ const s = st;
129
+ setFieldParams(s.field, p, target, ctx);
130
+ s.mixC.value = Number(p.tint);
131
+ s.sink.value = Number(p.sink);
132
+ s.opacity.value = Number(p.opacity);
133
+ s.lines.visible = true;
134
+ return runProgress(target, s.field, 1 + LIFE, {
135
+ duration: Number(p.duration), ease: 'none',
136
+ onComplete: () => { hideMeshes(target, KEY, true); s.lines.visible = false; },
137
+ });
138
+ },
139
+ revert(target, p) {
140
+ const s = target.userData[STATE];
141
+ if (!s)
142
+ return;
143
+ hideMeshes(target, KEY, false);
144
+ s.lines.visible = true;
145
+ return runProgress(target, s.field, 0, {
146
+ duration: Number(p.duration), ease: 'none',
147
+ onComplete: () => {
148
+ s.mats.forEach(m => removeLayer(m, KEY));
149
+ s.lines.removeFromParent();
150
+ s.lines.geometry.dispose();
151
+ s.lines.material.dispose();
152
+ delete target.userData[STATE];
153
+ },
154
+ });
155
+ },
156
+ });
@@ -0,0 +1,13 @@
1
+ import { type SurfaceSample } from './surfaceSample';
2
+ interface Growth {
3
+ pos: number[];
4
+ nrm: number[];
5
+ parent: number[];
6
+ birth: number[];
7
+ desc: number[];
8
+ count: number;
9
+ }
10
+ export declare function grow(sample: SurfaceSample, extent: number, attractors: number, from: string, seed: number): Growth;
11
+ declare const _default: import("..").OperationDefinition;
12
+ export default _default;
13
+ //# sourceMappingURL=ivy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ivy.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/ivy.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAmC,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAiBtF,UAAU,MAAM;IAAG,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAgBnH,wBAAgB,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAkHlH;;AAwFD,wBAgKG"}