@3driseai/3drise-viewer 0.1.26 → 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 (456) hide show
  1. package/dist/animationsV2/ClipPlayer.d.ts +3 -0
  2. package/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
  3. package/dist/animationsV2/ClipPlayer.js +67 -8
  4. package/dist/animationsV2/ClipsRuntime.d.ts +39 -0
  5. package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
  6. package/dist/animationsV2/ClipsRuntime.js +245 -14
  7. package/dist/animationsV2/appliers.d.ts +5 -0
  8. package/dist/animationsV2/appliers.d.ts.map +1 -1
  9. package/dist/animationsV2/appliers.js +25 -7
  10. package/dist/animationsV2/index.d.ts +1 -1
  11. package/dist/animationsV2/index.d.ts.map +1 -1
  12. package/dist/animationsV2/normalize.d.ts.map +1 -1
  13. package/dist/animationsV2/normalize.js +18 -7
  14. package/dist/animationsV2/sequenceUtils.d.ts +42 -1
  15. package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
  16. package/dist/animationsV2/sequenceUtils.js +103 -3
  17. package/dist/animationsV2/types.d.ts +20 -0
  18. package/dist/animationsV2/types.d.ts.map +1 -1
  19. package/dist/components/AdvancedGrid.d.ts +8 -2
  20. package/dist/components/AdvancedGrid.d.ts.map +1 -1
  21. package/dist/components/AdvancedGrid.js +31 -14
  22. package/dist/components/AnimatedObject.d.ts.map +1 -1
  23. package/dist/components/AnimatedObject.js +7 -5
  24. package/dist/components/Bubbles.d.ts +7 -1
  25. package/dist/components/Bubbles.d.ts.map +1 -1
  26. package/dist/components/Bubbles.js +42 -22
  27. package/dist/components/ChladniGrid.d.ts +8 -4
  28. package/dist/components/ChladniGrid.d.ts.map +1 -1
  29. package/dist/components/ChladniGrid.js +31 -13
  30. package/dist/components/CircuitGrid.d.ts +8 -11
  31. package/dist/components/CircuitGrid.d.ts.map +1 -1
  32. package/dist/components/CircuitGrid.js +31 -13
  33. package/dist/components/CloudsGenerator.d.ts +1 -1
  34. package/dist/components/CloudsGenerator.js +1 -1
  35. package/dist/components/ContourGrid.d.ts +8 -14
  36. package/dist/components/ContourGrid.d.ts.map +1 -1
  37. package/dist/components/ContourGrid.js +31 -13
  38. package/dist/components/EffectsGenerator.d.ts +7 -1
  39. package/dist/components/EffectsGenerator.d.ts.map +1 -1
  40. package/dist/components/EffectsGenerator.js +39 -38
  41. package/dist/components/EnvironmentManager.d.ts +4 -4
  42. package/dist/components/EnvironmentManager.d.ts.map +1 -1
  43. package/dist/components/FlowNetGrid.d.ts +8 -4
  44. package/dist/components/FlowNetGrid.d.ts.map +1 -1
  45. package/dist/components/FlowNetGrid.js +31 -13
  46. package/dist/components/FractalGrid.d.ts +8 -12
  47. package/dist/components/FractalGrid.d.ts.map +1 -1
  48. package/dist/components/FractalGrid.js +31 -13
  49. package/dist/components/GirihGrid.d.ts +8 -1
  50. package/dist/components/GirihGrid.d.ts.map +1 -1
  51. package/dist/components/GirihGrid.js +31 -13
  52. package/dist/components/Glyphs.d.ts +7 -1
  53. package/dist/components/Glyphs.d.ts.map +1 -1
  54. package/dist/components/Glyphs.js +40 -34
  55. package/dist/components/GravWaveGrid.d.ts +8 -1
  56. package/dist/components/GravWaveGrid.d.ts.map +1 -1
  57. package/dist/components/GravWaveGrid.js +31 -13
  58. package/dist/components/GridsGenerator.d.ts +7 -1
  59. package/dist/components/GridsGenerator.d.ts.map +1 -1
  60. package/dist/components/GridsGenerator.js +20 -18
  61. package/dist/components/HexGrid.d.ts +8 -10
  62. package/dist/components/HexGrid.d.ts.map +1 -1
  63. package/dist/components/HexGrid.js +31 -13
  64. package/dist/components/HyperbolicGrid.d.ts +8 -4
  65. package/dist/components/HyperbolicGrid.d.ts.map +1 -1
  66. package/dist/components/HyperbolicGrid.js +31 -13
  67. package/dist/components/LandscapeBuilder.d.ts +1 -1
  68. package/dist/components/LandscapeBuilder.d.ts.map +1 -1
  69. package/dist/components/LandscapeBuilder.js +1 -1
  70. package/dist/components/LandscapeObject.d.ts +1 -1
  71. package/dist/components/LandscapeObject.d.ts.map +1 -1
  72. package/dist/components/LandscapeObject.js +1 -1
  73. package/dist/components/MoireGrid.d.ts +8 -12
  74. package/dist/components/MoireGrid.d.ts.map +1 -1
  75. package/dist/components/MoireGrid.js +31 -13
  76. package/dist/components/ObjectNode.d.ts.map +1 -1
  77. package/dist/components/ObjectNode.js +2 -2
  78. package/dist/components/ObjectsRenderer.d.ts.map +1 -1
  79. package/dist/components/ObjectsRenderer.js +37 -3
  80. package/dist/components/OceanBuilder.d.ts +1 -1
  81. package/dist/components/OceanBuilder.js +1 -1
  82. package/dist/components/ParticlesGenerator.d.ts.map +1 -1
  83. package/dist/components/ParticlesGenerator.js +6 -0
  84. package/dist/components/QuasiGrid.d.ts +8 -11
  85. package/dist/components/QuasiGrid.d.ts.map +1 -1
  86. package/dist/components/QuasiGrid.js +31 -13
  87. package/dist/components/RadarGrid.d.ts +8 -13
  88. package/dist/components/RadarGrid.d.ts.map +1 -1
  89. package/dist/components/RadarGrid.js +31 -13
  90. package/dist/components/ReactionDiffusionGrid.d.ts +8 -1
  91. package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
  92. package/dist/components/ReactionDiffusionGrid.js +33 -139
  93. package/dist/components/SceneBuilder.js +1 -1
  94. package/dist/components/SkySystem.d.ts +1 -1
  95. package/dist/components/SparklesBurst.d.ts +7 -1
  96. package/dist/components/SparklesBurst.d.ts.map +1 -1
  97. package/dist/components/SparklesBurst.js +31 -28
  98. package/dist/components/TerrainBuilder.d.ts +1 -1
  99. package/dist/components/TerrainBuilder.d.ts.map +1 -1
  100. package/dist/components/TerrainBuilder.js +1 -1
  101. package/dist/components/VoronoiGrid.d.ts +8 -10
  102. package/dist/components/VoronoiGrid.d.ts.map +1 -1
  103. package/dist/components/VoronoiGrid.js +31 -13
  104. package/dist/components/WallpaperGrid.d.ts +8 -1
  105. package/dist/components/WallpaperGrid.d.ts.map +1 -1
  106. package/dist/components/WallpaperGrid.js +33 -210
  107. package/dist/components/effects/AuraEffect.d.ts +8 -3
  108. package/dist/components/effects/AuraEffect.d.ts.map +1 -1
  109. package/dist/components/effects/AuraEffect.js +49 -24
  110. package/dist/components/effects/AuroraEffect.d.ts +8 -3
  111. package/dist/components/effects/AuroraEffect.d.ts.map +1 -1
  112. package/dist/components/effects/AuroraEffect.js +45 -25
  113. package/dist/components/effects/BlackHoleEffect.d.ts +8 -3
  114. package/dist/components/effects/BlackHoleEffect.d.ts.map +1 -1
  115. package/dist/components/effects/BlackHoleEffect.js +42 -21
  116. package/dist/components/effects/ConstellationEffect.d.ts +8 -3
  117. package/dist/components/effects/ConstellationEffect.d.ts.map +1 -1
  118. package/dist/components/effects/ConstellationEffect.js +49 -23
  119. package/dist/components/effects/DandelionSeedsEffect.d.ts +7 -2
  120. package/dist/components/effects/DandelionSeedsEffect.d.ts.map +1 -1
  121. package/dist/components/effects/DandelionSeedsEffect.js +19 -9
  122. package/dist/components/effects/DataStreamEffect.d.ts +8 -3
  123. package/dist/components/effects/DataStreamEffect.d.ts.map +1 -1
  124. package/dist/components/effects/DataStreamEffect.js +54 -26
  125. package/dist/components/effects/DnaHelixEffect.d.ts +8 -3
  126. package/dist/components/effects/DnaHelixEffect.d.ts.map +1 -1
  127. package/dist/components/effects/DnaHelixEffect.js +62 -30
  128. package/dist/components/effects/FallingLeavesEffect.d.ts +7 -2
  129. package/dist/components/effects/FallingLeavesEffect.d.ts.map +1 -1
  130. package/dist/components/effects/FallingLeavesEffect.js +19 -9
  131. package/dist/components/effects/FieldLinesEffect.d.ts +8 -3
  132. package/dist/components/effects/FieldLinesEffect.d.ts.map +1 -1
  133. package/dist/components/effects/FieldLinesEffect.js +30 -20
  134. package/dist/components/effects/Fire.d.ts +8 -3
  135. package/dist/components/effects/Fire.d.ts.map +1 -1
  136. package/dist/components/effects/Fire.js +47 -10
  137. package/dist/components/effects/FireflySwarmEffect.d.ts +7 -2
  138. package/dist/components/effects/FireflySwarmEffect.d.ts.map +1 -1
  139. package/dist/components/effects/FireflySwarmEffect.js +19 -9
  140. package/dist/components/effects/Flares.d.ts +10 -3
  141. package/dist/components/effects/Flares.d.ts.map +1 -1
  142. package/dist/components/effects/Flares.js +53 -56
  143. package/dist/components/effects/ForcefieldEffect.d.ts +8 -3
  144. package/dist/components/effects/ForcefieldEffect.d.ts.map +1 -1
  145. package/dist/components/effects/ForcefieldEffect.js +52 -33
  146. package/dist/components/effects/GalaxyEffect.d.ts +7 -2
  147. package/dist/components/effects/GalaxyEffect.d.ts.map +1 -1
  148. package/dist/components/effects/GalaxyEffect.js +19 -9
  149. package/dist/components/effects/HarmonicShellEffect.d.ts +8 -3
  150. package/dist/components/effects/HarmonicShellEffect.d.ts.map +1 -1
  151. package/dist/components/effects/HarmonicShellEffect.js +30 -22
  152. package/dist/components/effects/HologramEffect.d.ts +8 -3
  153. package/dist/components/effects/HologramEffect.d.ts.map +1 -1
  154. package/dist/components/effects/HologramEffect.js +52 -23
  155. package/dist/components/effects/IceCrystalsEffect.d.ts +8 -3
  156. package/dist/components/effects/IceCrystalsEffect.d.ts.map +1 -1
  157. package/dist/components/effects/IceCrystalsEffect.js +36 -21
  158. package/dist/components/effects/IceHaloEffect.d.ts +7 -2
  159. package/dist/components/effects/IceHaloEffect.d.ts.map +1 -1
  160. package/dist/components/effects/IceHaloEffect.js +19 -9
  161. package/dist/components/effects/LichtenbergEffect.d.ts +7 -2
  162. package/dist/components/effects/LichtenbergEffect.d.ts.map +1 -1
  163. package/dist/components/effects/LichtenbergEffect.js +19 -9
  164. package/dist/components/effects/LightningEffect.d.ts +8 -3
  165. package/dist/components/effects/LightningEffect.d.ts.map +1 -1
  166. package/dist/components/effects/LightningEffect.js +54 -32
  167. package/dist/components/effects/MoleculesEffect.d.ts +8 -3
  168. package/dist/components/effects/MoleculesEffect.d.ts.map +1 -1
  169. package/dist/components/effects/MoleculesEffect.js +31 -21
  170. package/dist/components/effects/MurmurationEffect.d.ts +7 -2
  171. package/dist/components/effects/MurmurationEffect.d.ts.map +1 -1
  172. package/dist/components/effects/MurmurationEffect.js +19 -9
  173. package/dist/components/effects/NeuralNetworkEffect.d.ts +8 -3
  174. package/dist/components/effects/NeuralNetworkEffect.d.ts.map +1 -1
  175. package/dist/components/effects/NeuralNetworkEffect.js +66 -33
  176. package/dist/components/effects/OrbEffect.d.ts +8 -3
  177. package/dist/components/effects/OrbEffect.d.ts.map +1 -1
  178. package/dist/components/effects/OrbEffect.js +89 -42
  179. package/dist/components/effects/PlanetaryRingsEffect.d.ts +7 -2
  180. package/dist/components/effects/PlanetaryRingsEffect.d.ts.map +1 -1
  181. package/dist/components/effects/PlanetaryRingsEffect.js +19 -9
  182. package/dist/components/effects/PortalEffect.d.ts +8 -3
  183. package/dist/components/effects/PortalEffect.d.ts.map +1 -1
  184. package/dist/components/effects/PortalEffect.js +41 -25
  185. package/dist/components/effects/ShockwaveEffect.d.ts +7 -2
  186. package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -1
  187. package/dist/components/effects/ShockwaveEffect.js +19 -9
  188. package/dist/components/effects/SmokePlumeEffect.d.ts +8 -3
  189. package/dist/components/effects/SmokePlumeEffect.d.ts.map +1 -1
  190. package/dist/components/effects/SmokePlumeEffect.js +30 -20
  191. package/dist/components/effects/SmokeRibbon.d.ts +8 -2
  192. package/dist/components/effects/SmokeRibbon.d.ts.map +1 -1
  193. package/dist/components/effects/SmokeRibbon.js +34 -24
  194. package/dist/components/effects/SmokeRingEffect.d.ts +8 -3
  195. package/dist/components/effects/SmokeRingEffect.d.ts.map +1 -1
  196. package/dist/components/effects/SmokeRingEffect.js +33 -21
  197. package/dist/components/effects/StrangeAttractorEffect.d.ts +8 -3
  198. package/dist/components/effects/StrangeAttractorEffect.d.ts.map +1 -1
  199. package/dist/components/effects/StrangeAttractorEffect.js +30 -20
  200. package/dist/components/effects/VolumetricFogEffect.d.ts +8 -3
  201. package/dist/components/effects/VolumetricFogEffect.d.ts.map +1 -1
  202. package/dist/components/effects/VolumetricFogEffect.js +38 -20
  203. package/dist/components/effects/WaterCausticsEffect.d.ts +7 -2
  204. package/dist/components/effects/WaterCausticsEffect.d.ts.map +1 -1
  205. package/dist/components/effects/WaterCausticsEffect.js +19 -9
  206. package/dist/components/effects/index.d.ts +0 -1
  207. package/dist/components/effects/index.d.ts.map +1 -1
  208. package/dist/components/effects/index.js +0 -1
  209. package/dist/components/index.d.ts +0 -1
  210. package/dist/components/index.d.ts.map +1 -1
  211. package/dist/components/index.js +0 -1
  212. package/dist/components/landscape/LandscapeMesh.js +1 -1
  213. package/dist/components/landscape/types.d.ts +1 -1
  214. package/dist/components/landscape/types.d.ts.map +1 -1
  215. package/dist/components/particles/MagneticBottleParticles.d.ts +17 -0
  216. package/dist/components/particles/MagneticBottleParticles.d.ts.map +1 -0
  217. package/dist/components/particles/MagneticBottleParticles.js +618 -0
  218. package/dist/components/particles/ShapeBurstParticles.d.ts +17 -0
  219. package/dist/components/particles/ShapeBurstParticles.d.ts.map +1 -0
  220. package/dist/components/particles/ShapeBurstParticles.js +588 -0
  221. package/dist/components/particles/ShapeFlowParticles.d.ts +17 -0
  222. package/dist/components/particles/ShapeFlowParticles.d.ts.map +1 -0
  223. package/dist/components/particles/ShapeFlowParticles.js +755 -0
  224. package/dist/components/particles/index.d.ts +6 -0
  225. package/dist/components/particles/index.d.ts.map +1 -1
  226. package/dist/components/particles/index.js +3 -0
  227. package/dist/components/terrain/types.d.ts +1 -1
  228. package/dist/components/terrain/types.d.ts.map +1 -1
  229. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +1 -1
  230. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -1
  231. package/dist/components/volumetricClouds/types.d.ts +1 -1
  232. package/dist/components/volumetricClouds/types.d.ts.map +1 -1
  233. package/dist/components/water/types.d.ts +1 -1
  234. package/dist/components/water/types.d.ts.map +1 -1
  235. package/dist/constants.d.ts +1 -1
  236. package/dist/constants.d.ts.map +1 -1
  237. package/dist/constants.js +1 -1
  238. package/dist/hooks/index.d.ts +2 -0
  239. package/dist/hooks/index.d.ts.map +1 -1
  240. package/dist/hooks/index.js +1 -0
  241. package/dist/hooks/useConfigDriver.d.ts +22 -0
  242. package/dist/hooks/useConfigDriver.d.ts.map +1 -0
  243. package/dist/hooks/useConfigDriver.js +43 -0
  244. package/dist/hooks/useConfigLive.d.ts +1 -1
  245. package/dist/hooks/useConfigLive.d.ts.map +1 -1
  246. package/dist/hooks/useLandscapeMaps.d.ts +1 -1
  247. package/dist/hooks/useLandscapeMaps.d.ts.map +1 -1
  248. package/dist/hooks/useOceanMaterial.d.ts +1 -1
  249. package/dist/hooks/useThunder.d.ts +1 -1
  250. package/dist/index.d.ts +1 -2
  251. package/dist/index.d.ts.map +1 -1
  252. package/dist/index.js +1 -2
  253. package/dist/interactions/index.d.ts +2 -1
  254. package/dist/interactions/index.d.ts.map +1 -1
  255. package/dist/interactions/index.js +1 -1
  256. package/dist/interactions/runner.d.ts +18 -3
  257. package/dist/interactions/runner.d.ts.map +1 -1
  258. package/dist/interactions/runner.js +25 -2
  259. package/dist/operations/catalogue/curlSmoke.d.ts +3 -0
  260. package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -0
  261. package/dist/operations/catalogue/curlSmoke.js +178 -0
  262. package/dist/operations/catalogue/displayImage.d.ts.map +1 -1
  263. package/dist/operations/catalogue/displayImage.js +1 -0
  264. package/dist/operations/catalogue/dissolve.d.ts +3 -0
  265. package/dist/operations/catalogue/dissolve.d.ts.map +1 -0
  266. package/dist/operations/catalogue/dissolve.js +57 -0
  267. package/dist/operations/catalogue/emberAsh.d.ts +3 -0
  268. package/dist/operations/catalogue/emberAsh.d.ts.map +1 -0
  269. package/dist/operations/catalogue/emberAsh.js +171 -0
  270. package/dist/operations/catalogue/fade.d.ts.map +1 -1
  271. package/dist/operations/catalogue/fade.js +1 -0
  272. package/dist/operations/catalogue/flip.d.ts +3 -0
  273. package/dist/operations/catalogue/flip.d.ts.map +1 -0
  274. package/dist/operations/catalogue/flip.js +69 -0
  275. package/dist/operations/catalogue/flock.d.ts +3 -0
  276. package/dist/operations/catalogue/flock.d.ts.map +1 -0
  277. package/dist/operations/catalogue/flock.js +163 -0
  278. package/dist/operations/catalogue/focus.d.ts.map +1 -1
  279. package/dist/operations/catalogue/focus.js +1 -0
  280. package/dist/operations/catalogue/frame.d.ts +3 -0
  281. package/dist/operations/catalogue/frame.d.ts.map +1 -0
  282. package/dist/operations/catalogue/frame.js +44 -0
  283. package/dist/operations/catalogue/frost.d.ts +3 -0
  284. package/dist/operations/catalogue/frost.d.ts.map +1 -0
  285. package/dist/operations/catalogue/frost.js +111 -0
  286. package/dist/operations/catalogue/fxInstances.d.ts +21 -0
  287. package/dist/operations/catalogue/fxInstances.d.ts.map +1 -0
  288. package/dist/operations/catalogue/fxInstances.js +47 -0
  289. package/dist/operations/catalogue/fxPoints.d.ts +22 -0
  290. package/dist/operations/catalogue/fxPoints.d.ts.map +1 -0
  291. package/dist/operations/catalogue/fxPoints.js +70 -0
  292. package/dist/operations/catalogue/glow.d.ts.map +1 -1
  293. package/dist/operations/catalogue/glow.js +2 -1
  294. package/dist/operations/catalogue/heatCracks.d.ts +3 -0
  295. package/dist/operations/catalogue/heatCracks.d.ts.map +1 -0
  296. package/dist/operations/catalogue/heatCracks.js +134 -0
  297. package/dist/operations/catalogue/hologram.d.ts +3 -0
  298. package/dist/operations/catalogue/hologram.d.ts.map +1 -0
  299. package/dist/operations/catalogue/hologram.js +118 -0
  300. package/dist/operations/catalogue/inkBloom.d.ts +3 -0
  301. package/dist/operations/catalogue/inkBloom.d.ts.map +1 -0
  302. package/dist/operations/catalogue/inkBloom.js +156 -0
  303. package/dist/operations/catalogue/ivy.d.ts +13 -0
  304. package/dist/operations/catalogue/ivy.d.ts.map +1 -0
  305. package/dist/operations/catalogue/ivy.js +469 -0
  306. package/dist/operations/catalogue/jelly.d.ts +3 -0
  307. package/dist/operations/catalogue/jelly.d.ts.map +1 -0
  308. package/dist/operations/catalogue/jelly.js +50 -0
  309. package/dist/operations/catalogue/kintsugi.d.ts +3 -0
  310. package/dist/operations/catalogue/kintsugi.d.ts.map +1 -0
  311. package/dist/operations/catalogue/kintsugi.js +173 -0
  312. package/dist/operations/catalogue/lidarScan.d.ts +3 -0
  313. package/dist/operations/catalogue/lidarScan.d.ts.map +1 -0
  314. package/dist/operations/catalogue/lidarScan.js +240 -0
  315. package/dist/operations/catalogue/liquidMetal.d.ts +3 -0
  316. package/dist/operations/catalogue/liquidMetal.d.ts.map +1 -0
  317. package/dist/operations/catalogue/liquidMetal.js +122 -0
  318. package/dist/operations/catalogue/metalize.d.ts +3 -0
  319. package/dist/operations/catalogue/metalize.d.ts.map +1 -0
  320. package/dist/operations/catalogue/metalize.js +135 -0
  321. package/dist/operations/catalogue/moveToFront.d.ts.map +1 -1
  322. package/dist/operations/catalogue/moveToFront.js +1 -0
  323. package/dist/operations/catalogue/orbit.d.ts +3 -0
  324. package/dist/operations/catalogue/orbit.d.ts.map +1 -0
  325. package/dist/operations/catalogue/orbit.js +29 -0
  326. package/dist/operations/catalogue/particleSwarm.d.ts +3 -0
  327. package/dist/operations/catalogue/particleSwarm.d.ts.map +1 -0
  328. package/dist/operations/catalogue/particleSwarm.js +138 -0
  329. package/dist/operations/catalogue/petalPeel.d.ts +3 -0
  330. package/dist/operations/catalogue/petalPeel.d.ts.map +1 -0
  331. package/dist/operations/catalogue/petalPeel.js +137 -0
  332. package/dist/operations/catalogue/petrify.d.ts +3 -0
  333. package/dist/operations/catalogue/petrify.d.ts.map +1 -0
  334. package/dist/operations/catalogue/petrify.js +94 -0
  335. package/dist/operations/catalogue/portal.d.ts +3 -0
  336. package/dist/operations/catalogue/portal.d.ts.map +1 -0
  337. package/dist/operations/catalogue/portal.js +224 -0
  338. package/dist/operations/catalogue/print3d.d.ts +3 -0
  339. package/dist/operations/catalogue/print3d.d.ts.map +1 -0
  340. package/dist/operations/catalogue/print3d.js +275 -0
  341. package/dist/operations/catalogue/rainBeads.d.ts +3 -0
  342. package/dist/operations/catalogue/rainBeads.d.ts.map +1 -0
  343. package/dist/operations/catalogue/rainBeads.js +223 -0
  344. package/dist/operations/catalogue/restPose.d.ts +21 -0
  345. package/dist/operations/catalogue/restPose.d.ts.map +1 -0
  346. package/dist/operations/catalogue/restPose.js +55 -0
  347. package/dist/operations/catalogue/rimLight.d.ts +3 -0
  348. package/dist/operations/catalogue/rimLight.d.ts.map +1 -0
  349. package/dist/operations/catalogue/rimLight.js +72 -0
  350. package/dist/operations/catalogue/sandErosion.d.ts +3 -0
  351. package/dist/operations/catalogue/sandErosion.d.ts.map +1 -0
  352. package/dist/operations/catalogue/sandErosion.js +167 -0
  353. package/dist/operations/catalogue/shaderLayers.d.ts +74 -0
  354. package/dist/operations/catalogue/shaderLayers.d.ts.map +1 -0
  355. package/dist/operations/catalogue/shaderLayers.js +322 -0
  356. package/dist/operations/catalogue/shatter.d.ts +3 -0
  357. package/dist/operations/catalogue/shatter.d.ts.map +1 -0
  358. package/dist/operations/catalogue/shatter.js +267 -0
  359. package/dist/operations/catalogue/silkDrape.d.ts +3 -0
  360. package/dist/operations/catalogue/silkDrape.d.ts.map +1 -0
  361. package/dist/operations/catalogue/silkDrape.js +340 -0
  362. package/dist/operations/catalogue/spin.d.ts +3 -0
  363. package/dist/operations/catalogue/spin.d.ts.map +1 -0
  364. package/dist/operations/catalogue/spin.js +42 -0
  365. package/dist/operations/catalogue/surfaceSample.d.ts +17 -0
  366. package/dist/operations/catalogue/surfaceSample.d.ts.map +1 -0
  367. package/dist/operations/catalogue/surfaceSample.js +187 -0
  368. package/dist/operations/catalogue/swirl.d.ts +3 -0
  369. package/dist/operations/catalogue/swirl.d.ts.map +1 -0
  370. package/dist/operations/catalogue/swirl.js +69 -0
  371. package/dist/operations/catalogue/teleport.d.ts +3 -0
  372. package/dist/operations/catalogue/teleport.d.ts.map +1 -0
  373. package/dist/operations/catalogue/teleport.js +213 -0
  374. package/dist/operations/catalogue/transitionField.d.ts +124 -0
  375. package/dist/operations/catalogue/transitionField.d.ts.map +1 -0
  376. package/dist/operations/catalogue/transitionField.js +278 -0
  377. package/dist/operations/catalogue/unweave.d.ts +3 -0
  378. package/dist/operations/catalogue/unweave.d.ts.map +1 -0
  379. package/dist/operations/catalogue/unweave.js +233 -0
  380. package/dist/operations/catalogue/visibility.d.ts.map +1 -1
  381. package/dist/operations/catalogue/visibility.js +1 -0
  382. package/dist/operations/catalogue/voxelize.d.ts +3 -0
  383. package/dist/operations/catalogue/voxelize.d.ts.map +1 -0
  384. package/dist/operations/catalogue/voxelize.js +148 -0
  385. package/dist/operations/catalogue/warmup.d.ts +22 -0
  386. package/dist/operations/catalogue/warmup.d.ts.map +1 -0
  387. package/dist/operations/catalogue/warmup.js +106 -0
  388. package/dist/operations/catalogue/zoom.d.ts.map +1 -1
  389. package/dist/operations/catalogue/zoom.js +1 -0
  390. package/dist/operations/index.d.ts +4 -2
  391. package/dist/operations/index.d.ts.map +1 -1
  392. package/dist/operations/index.js +4 -2
  393. package/dist/operations/objectEffects.d.ts +46 -0
  394. package/dist/operations/objectEffects.d.ts.map +1 -0
  395. package/dist/operations/objectEffects.js +136 -0
  396. package/dist/operations/registry.d.ts +7 -2
  397. package/dist/operations/registry.d.ts.map +1 -1
  398. package/dist/operations/registry.js +45 -3
  399. package/dist/operations/runtime.d.ts +40 -2
  400. package/dist/operations/runtime.d.ts.map +1 -1
  401. package/dist/operations/runtime.js +164 -8
  402. package/dist/operations/types.d.ts +29 -3
  403. package/dist/operations/types.d.ts.map +1 -1
  404. package/dist/operations/types.js +6 -0
  405. package/dist/operations/useObjectEffectLayers.d.ts +4 -0
  406. package/dist/operations/useObjectEffectLayers.d.ts.map +1 -0
  407. package/dist/operations/useObjectEffectLayers.js +42 -0
  408. package/dist/operations/useOperationsRuntime.d.ts.map +1 -1
  409. package/dist/operations/useOperationsRuntime.js +42 -4
  410. package/dist/presets/landscapePresets.d.ts +1 -1
  411. package/dist/presets/landscapePresets.d.ts.map +1 -1
  412. package/dist/presets/landscapePresets.js +1 -1
  413. package/dist/presets/landscapeTypes.d.ts +1 -1
  414. package/dist/presets/landscapeTypes.d.ts.map +1 -1
  415. package/dist/presets/landscapeTypes.js +1 -1
  416. package/dist/presets/oceanSurfacePresets.d.ts +1 -1
  417. package/dist/presets/terrainPresets.d.ts +1 -1
  418. package/dist/presets/terrainPresets.d.ts.map +1 -1
  419. package/dist/presets/volumetricCloudPresets.d.ts +1 -1
  420. package/dist/types/cloudConfigs.d.ts +2 -309
  421. package/dist/types/cloudConfigs.d.ts.map +1 -1
  422. package/dist/types/cloudConfigs.js +2 -339
  423. package/dist/types/index.d.ts +8 -8
  424. package/dist/types/index.d.ts.map +1 -1
  425. package/dist/types/index.js +4 -4
  426. package/dist/types/landscapeConfigs.d.ts +2 -217
  427. package/dist/types/landscapeConfigs.d.ts.map +1 -1
  428. package/dist/types/landscapeConfigs.js +2 -256
  429. package/dist/types/oceanConfigs.d.ts +2 -289
  430. package/dist/types/oceanConfigs.d.ts.map +1 -1
  431. package/dist/types/oceanConfigs.js +2 -380
  432. package/dist/types/terrainConfigs.d.ts +2 -250
  433. package/dist/types/terrainConfigs.d.ts.map +1 -1
  434. package/dist/types/terrainConfigs.js +2 -292
  435. package/dist/utils/cloudUniforms.d.ts +1 -1
  436. package/dist/utils/configAnimations.d.ts +6 -0
  437. package/dist/utils/configAnimations.d.ts.map +1 -1
  438. package/dist/utils/configAnimations.js +14 -0
  439. package/dist/utils/gridConfig.d.ts +19 -0
  440. package/dist/utils/gridConfig.d.ts.map +1 -0
  441. package/dist/utils/gridConfig.js +52 -0
  442. package/dist/utils/handleCloudsAnimations.d.ts +1 -1
  443. package/dist/utils/handleCloudsAnimations.js +1 -1
  444. package/dist/utils/hasHoverAnimation.d.ts.map +1 -1
  445. package/dist/utils/hasHoverAnimation.js +0 -2
  446. package/dist/utils/landscapeUniforms.d.ts +1 -1
  447. package/dist/utils/landscapeUniforms.d.ts.map +1 -1
  448. package/dist/utils/oceanUniforms.d.ts +1 -1
  449. package/dist/utils/particleShape.d.ts +33 -0
  450. package/dist/utils/particleShape.d.ts.map +1 -0
  451. package/dist/utils/particleShape.js +207 -0
  452. package/dist/utils/particleTrails.d.ts.map +1 -1
  453. package/dist/utils/particleTrails.js +29 -14
  454. package/dist/utils/terrainUniforms.d.ts +1 -1
  455. package/dist/utils/terrainUniforms.d.ts.map +1 -1
  456. package/package.json +2 -2
@@ -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"}