@3driseai/3drise-viewer 0.1.27 → 0.1.29

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 (690) hide show
  1. package/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
  2. package/dist/animationsV2/ClipPlayer.js +13 -9
  3. package/dist/animationsV2/ClipsRuntime.d.ts +44 -3
  4. package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
  5. package/dist/animationsV2/ClipsRuntime.js +173 -55
  6. package/dist/animationsV2/appliers.d.ts.map +1 -1
  7. package/dist/animationsV2/appliers.js +21 -5
  8. package/dist/animationsV2/index.d.ts +1 -1
  9. package/dist/animationsV2/index.d.ts.map +1 -1
  10. package/dist/animationsV2/normalize.d.ts.map +1 -1
  11. package/dist/animationsV2/normalize.js +7 -3
  12. package/dist/animationsV2/sequenceUtils.d.ts +44 -6
  13. package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
  14. package/dist/animationsV2/sequenceUtils.js +58 -12
  15. package/dist/animationsV2/types.d.ts +22 -12
  16. package/dist/animationsV2/types.d.ts.map +1 -1
  17. package/dist/api/sceneHandle.d.ts +35 -1
  18. package/dist/api/sceneHandle.d.ts.map +1 -1
  19. package/dist/api/sceneHandle.js +88 -17
  20. package/dist/components/AdvancedGrid.d.ts +1 -5
  21. package/dist/components/AdvancedGrid.d.ts.map +1 -1
  22. package/dist/components/AdvancedGrid.js +6 -35
  23. package/dist/components/AnimatedObject.d.ts.map +1 -1
  24. package/dist/components/AnimatedObject.js +9 -4
  25. package/dist/components/ApollonianGrid.d.ts +25 -0
  26. package/dist/components/ApollonianGrid.d.ts.map +1 -0
  27. package/dist/components/ApollonianGrid.js +55 -0
  28. package/dist/components/ChladniGrid.d.ts +1 -1
  29. package/dist/components/ChladniGrid.d.ts.map +1 -1
  30. package/dist/components/ChladniGrid.js +6 -35
  31. package/dist/components/CircuitGrid.d.ts +1 -1
  32. package/dist/components/CircuitGrid.d.ts.map +1 -1
  33. package/dist/components/CircuitGrid.js +6 -34
  34. package/dist/components/ConformalGrid.d.ts +25 -0
  35. package/dist/components/ConformalGrid.d.ts.map +1 -0
  36. package/dist/components/ConformalGrid.js +66 -0
  37. package/dist/components/ContourGrid.d.ts +1 -1
  38. package/dist/components/ContourGrid.d.ts.map +1 -1
  39. package/dist/components/ContourGrid.js +6 -34
  40. package/dist/components/CustomPrimitive.js +1 -1
  41. package/dist/components/EnvironmentObject.d.ts.map +1 -1
  42. package/dist/components/EnvironmentObject.js +9 -7
  43. package/dist/components/FlowNetGrid.d.ts +1 -1
  44. package/dist/components/FlowNetGrid.d.ts.map +1 -1
  45. package/dist/components/FlowNetGrid.js +6 -34
  46. package/dist/components/FractalGrid.d.ts +1 -1
  47. package/dist/components/FractalGrid.d.ts.map +1 -1
  48. package/dist/components/FractalGrid.js +6 -37
  49. package/dist/components/Galaxy.d.ts.map +1 -1
  50. package/dist/components/Galaxy.js +9 -23
  51. package/dist/components/GirihGrid.d.ts +1 -1
  52. package/dist/components/GirihGrid.d.ts.map +1 -1
  53. package/dist/components/GirihGrid.js +6 -35
  54. package/dist/components/GravWaveGrid.d.ts +1 -1
  55. package/dist/components/GravWaveGrid.d.ts.map +1 -1
  56. package/dist/components/GravWaveGrid.js +6 -35
  57. package/dist/components/GridsGenerator.d.ts +2 -2
  58. package/dist/components/GridsGenerator.d.ts.map +1 -1
  59. package/dist/components/GridsGenerator.js +21 -0
  60. package/dist/components/HexGrid.d.ts +1 -5
  61. package/dist/components/HexGrid.d.ts.map +1 -1
  62. package/dist/components/HexGrid.js +6 -36
  63. package/dist/components/HilbertGrid.d.ts +25 -0
  64. package/dist/components/HilbertGrid.d.ts.map +1 -0
  65. package/dist/components/HilbertGrid.js +66 -0
  66. package/dist/components/HyperbolicGrid.d.ts +1 -1
  67. package/dist/components/HyperbolicGrid.d.ts.map +1 -1
  68. package/dist/components/HyperbolicGrid.js +6 -34
  69. package/dist/components/LandObject.d.ts +9 -0
  70. package/dist/components/LandObject.d.ts.map +1 -0
  71. package/dist/components/LandObject.js +15 -0
  72. package/dist/components/LensingGrid.d.ts +25 -0
  73. package/dist/components/LensingGrid.d.ts.map +1 -0
  74. package/dist/components/LensingGrid.js +55 -0
  75. package/dist/components/LightsManager.d.ts.map +1 -1
  76. package/dist/components/LightsManager.js +8 -0
  77. package/dist/components/ModelBoundary.d.ts +2 -0
  78. package/dist/components/ModelBoundary.d.ts.map +1 -1
  79. package/dist/components/ModelBoundary.js +3 -0
  80. package/dist/components/ModelPrimitive.d.ts.map +1 -1
  81. package/dist/components/ModelPrimitive.js +6 -0
  82. package/dist/components/MoireGrid.d.ts +1 -1
  83. package/dist/components/MoireGrid.d.ts.map +1 -1
  84. package/dist/components/MoireGrid.js +6 -35
  85. package/dist/components/MoonDisc.d.ts +11 -0
  86. package/dist/components/MoonDisc.d.ts.map +1 -0
  87. package/dist/components/MoonDisc.js +128 -0
  88. package/dist/components/ObjectNode.d.ts.map +1 -1
  89. package/dist/components/ObjectNode.js +15 -4
  90. package/dist/components/ObjectsRenderer.d.ts.map +1 -1
  91. package/dist/components/ObjectsRenderer.js +7 -5
  92. package/dist/components/OceanBuilder.d.ts.map +1 -1
  93. package/dist/components/OceanBuilder.js +2 -0
  94. package/dist/components/ParastichyGrid.d.ts +25 -0
  95. package/dist/components/ParastichyGrid.d.ts.map +1 -0
  96. package/dist/components/ParastichyGrid.js +55 -0
  97. package/dist/components/PhyllotaxisGrid.d.ts +25 -0
  98. package/dist/components/PhyllotaxisGrid.d.ts.map +1 -0
  99. package/dist/components/PhyllotaxisGrid.js +66 -0
  100. package/dist/components/ProjectLoader.d.ts +5 -3
  101. package/dist/components/ProjectLoader.d.ts.map +1 -1
  102. package/dist/components/ProjectLoader.js +6 -3
  103. package/dist/components/QuasiGrid.d.ts +1 -1
  104. package/dist/components/QuasiGrid.d.ts.map +1 -1
  105. package/dist/components/QuasiGrid.js +6 -33
  106. package/dist/components/RadarGrid.d.ts +1 -1
  107. package/dist/components/RadarGrid.d.ts.map +1 -1
  108. package/dist/components/RadarGrid.js +6 -34
  109. package/dist/components/ReactionDiffusionGrid.d.ts +1 -1
  110. package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
  111. package/dist/components/ReactionDiffusionGrid.js +6 -35
  112. package/dist/components/SceneBuilder.d.ts +25 -3
  113. package/dist/components/SceneBuilder.d.ts.map +1 -1
  114. package/dist/components/SceneBuilder.js +68 -38
  115. package/dist/components/SkyController.d.ts +25 -1
  116. package/dist/components/SkyController.d.ts.map +1 -1
  117. package/dist/components/SkyController.js +189 -130
  118. package/dist/components/SkyMesh.d.ts.map +1 -1
  119. package/dist/components/SkyMesh.js +26 -1
  120. package/dist/components/SkyStars.d.ts +11 -0
  121. package/dist/components/SkyStars.d.ts.map +1 -0
  122. package/dist/components/SkyStars.js +187 -0
  123. package/dist/components/SkySystem.d.ts +3 -3
  124. package/dist/components/SkySystem.d.ts.map +1 -1
  125. package/dist/components/SkySystem.js +8 -2
  126. package/dist/components/Sun.d.ts +15 -1
  127. package/dist/components/Sun.d.ts.map +1 -1
  128. package/dist/components/Sun.js +64 -3
  129. package/dist/components/SunLight.d.ts +6 -1
  130. package/dist/components/SunLight.d.ts.map +1 -1
  131. package/dist/components/SunLight.js +96 -44
  132. package/dist/components/TerrainBuilder.d.ts.map +1 -1
  133. package/dist/components/TerrainBuilder.js +2 -0
  134. package/dist/components/TextGenerator.d.ts +9 -0
  135. package/dist/components/TextGenerator.d.ts.map +1 -0
  136. package/dist/components/TextGenerator.js +29 -0
  137. package/dist/components/TruchetGrid.d.ts +25 -0
  138. package/dist/components/TruchetGrid.d.ts.map +1 -0
  139. package/dist/components/TruchetGrid.js +55 -0
  140. package/dist/components/VoronoiGrid.d.ts +1 -1
  141. package/dist/components/VoronoiGrid.d.ts.map +1 -1
  142. package/dist/components/VoronoiGrid.js +6 -33
  143. package/dist/components/WallpaperGrid.d.ts +1 -1
  144. package/dist/components/WallpaperGrid.d.ts.map +1 -1
  145. package/dist/components/WallpaperGrid.js +6 -35
  146. package/dist/components/environment/Rain.d.ts +15 -0
  147. package/dist/components/environment/Rain.d.ts.map +1 -0
  148. package/dist/components/environment/Rain.js +110 -0
  149. package/dist/components/environment/Rainbow.d.ts +20 -0
  150. package/dist/components/environment/Rainbow.d.ts.map +1 -0
  151. package/dist/components/environment/Rainbow.js +974 -0
  152. package/dist/components/environment/Sandstorm.d.ts +20 -0
  153. package/dist/components/environment/Sandstorm.d.ts.map +1 -0
  154. package/dist/components/environment/Sandstorm.js +776 -0
  155. package/dist/components/environment/Snow.d.ts +20 -0
  156. package/dist/components/environment/Snow.d.ts.map +1 -0
  157. package/dist/components/environment/Snow.js +609 -0
  158. package/dist/components/environment/Thunderstorm.d.ts +20 -0
  159. package/dist/components/environment/Thunderstorm.d.ts.map +1 -0
  160. package/dist/components/environment/Thunderstorm.js +731 -0
  161. package/dist/components/environment/Tornado.d.ts +20 -0
  162. package/dist/components/environment/Tornado.d.ts.map +1 -0
  163. package/dist/components/environment/Tornado.js +762 -0
  164. package/dist/components/environment/index.d.ts +13 -0
  165. package/dist/components/environment/index.d.ts.map +1 -0
  166. package/dist/components/environment/index.js +7 -0
  167. package/dist/components/index.d.ts +24 -10
  168. package/dist/components/index.d.ts.map +1 -1
  169. package/dist/components/index.js +15 -6
  170. package/dist/components/land/LandPatch.d.ts +15 -0
  171. package/dist/components/land/LandPatch.d.ts.map +1 -0
  172. package/dist/components/land/LandPatch.js +170 -0
  173. package/dist/components/land/index.d.ts +3 -0
  174. package/dist/components/land/index.d.ts.map +1 -0
  175. package/dist/components/land/index.js +1 -0
  176. package/dist/components/space/Earth.d.ts +16 -0
  177. package/dist/components/space/Earth.d.ts.map +1 -0
  178. package/dist/components/space/Earth.js +75 -0
  179. package/dist/components/space/ShootingStar.d.ts +21 -0
  180. package/dist/components/space/ShootingStar.d.ts.map +1 -0
  181. package/dist/components/space/ShootingStar.js +101 -0
  182. package/dist/components/space/ShootingStars.d.ts +16 -0
  183. package/dist/components/space/ShootingStars.d.ts.map +1 -0
  184. package/dist/components/space/ShootingStars.js +71 -0
  185. package/dist/components/space/SolarSystem.d.ts +16 -0
  186. package/dist/components/space/SolarSystem.d.ts.map +1 -0
  187. package/dist/components/space/SolarSystem.js +141 -0
  188. package/dist/components/space/Stars.d.ts +20 -0
  189. package/dist/components/space/Stars.d.ts.map +1 -0
  190. package/dist/components/space/Stars.js +160 -0
  191. package/dist/components/space/index.d.ts +11 -0
  192. package/dist/components/space/index.d.ts.map +1 -0
  193. package/dist/components/space/index.js +8 -0
  194. package/dist/components/terrain/TerrainSurface.d.ts.map +1 -1
  195. package/dist/components/terrain/TerrainSurface.js +27 -3
  196. package/dist/components/terrain/types.d.ts +5 -1
  197. package/dist/components/terrain/types.d.ts.map +1 -1
  198. package/dist/components/text/BurnAwayText.d.ts +15 -0
  199. package/dist/components/text/BurnAwayText.d.ts.map +1 -0
  200. package/dist/components/text/BurnAwayText.js +4 -0
  201. package/dist/components/text/ChalkboardText.d.ts +15 -0
  202. package/dist/components/text/ChalkboardText.d.ts.map +1 -0
  203. package/dist/components/text/ChalkboardText.js +4 -0
  204. package/dist/components/text/ConstellationText.d.ts +15 -0
  205. package/dist/components/text/ConstellationText.d.ts.map +1 -0
  206. package/dist/components/text/ConstellationText.js +4 -0
  207. package/dist/components/text/EmbroideryText.d.ts +15 -0
  208. package/dist/components/text/EmbroideryText.d.ts.map +1 -0
  209. package/dist/components/text/EmbroideryText.js +4 -0
  210. package/dist/components/text/FourierSketchText.d.ts +15 -0
  211. package/dist/components/text/FourierSketchText.d.ts.map +1 -0
  212. package/dist/components/text/FourierSketchText.js +4 -0
  213. package/dist/components/text/FrostGrowthText.d.ts +15 -0
  214. package/dist/components/text/FrostGrowthText.d.ts.map +1 -0
  215. package/dist/components/text/FrostGrowthText.js +4 -0
  216. package/dist/components/text/HandwritingText.d.ts +15 -0
  217. package/dist/components/text/HandwritingText.d.ts.map +1 -0
  218. package/dist/components/text/HandwritingText.js +4 -0
  219. package/dist/components/text/InkBleedText.d.ts +15 -0
  220. package/dist/components/text/InkBleedText.d.ts.map +1 -0
  221. package/dist/components/text/InkBleedText.js +4 -0
  222. package/dist/components/text/LightPaintingText.d.ts +15 -0
  223. package/dist/components/text/LightPaintingText.d.ts.map +1 -0
  224. package/dist/components/text/LightPaintingText.js +4 -0
  225. package/dist/components/text/LiquidMetalText.d.ts +15 -0
  226. package/dist/components/text/LiquidMetalText.d.ts.map +1 -0
  227. package/dist/components/text/LiquidMetalText.js +4 -0
  228. package/dist/components/text/NeonTubeText.d.ts +15 -0
  229. package/dist/components/text/NeonTubeText.d.ts.map +1 -0
  230. package/dist/components/text/NeonTubeText.js +4 -0
  231. package/dist/components/text/PlasmaDischargeText.d.ts +15 -0
  232. package/dist/components/text/PlasmaDischargeText.d.ts.map +1 -0
  233. package/dist/components/text/PlasmaDischargeText.js +4 -0
  234. package/dist/components/text/TextObjectView.d.ts +12 -0
  235. package/dist/components/text/TextObjectView.d.ts.map +1 -0
  236. package/dist/components/text/TextObjectView.js +11 -0
  237. package/dist/components/text/engine/fieldkit.d.ts +24 -0
  238. package/dist/components/text/engine/fieldkit.d.ts.map +1 -0
  239. package/dist/components/text/engine/fieldkit.js +201 -0
  240. package/dist/components/text/engine/glyphs.d.ts +19 -0
  241. package/dist/components/text/engine/glyphs.d.ts.map +1 -0
  242. package/dist/components/text/engine/glyphs.js +269 -0
  243. package/dist/components/text/engine/looks/burnAway.d.ts +144 -0
  244. package/dist/components/text/engine/looks/burnAway.d.ts.map +1 -0
  245. package/dist/components/text/engine/looks/burnAway.js +593 -0
  246. package/dist/components/text/engine/looks/chalkboard.d.ts +135 -0
  247. package/dist/components/text/engine/looks/chalkboard.d.ts.map +1 -0
  248. package/dist/components/text/engine/looks/chalkboard.js +426 -0
  249. package/dist/components/text/engine/looks/constellation.d.ts +111 -0
  250. package/dist/components/text/engine/looks/constellation.d.ts.map +1 -0
  251. package/dist/components/text/engine/looks/constellation.js +496 -0
  252. package/dist/components/text/engine/looks/embroidery.d.ts +165 -0
  253. package/dist/components/text/engine/looks/embroidery.d.ts.map +1 -0
  254. package/dist/components/text/engine/looks/embroidery.js +645 -0
  255. package/dist/components/text/engine/looks/frostGrowth.d.ts +109 -0
  256. package/dist/components/text/engine/looks/frostGrowth.d.ts.map +1 -0
  257. package/dist/components/text/engine/looks/frostGrowth.js +727 -0
  258. package/dist/components/text/engine/looks/index.d.ts +2 -0
  259. package/dist/components/text/engine/looks/index.d.ts.map +1 -0
  260. package/dist/components/text/engine/looks/index.js +48 -0
  261. package/dist/components/text/engine/looks/inkBleed.d.ts +103 -0
  262. package/dist/components/text/engine/looks/inkBleed.d.ts.map +1 -0
  263. package/dist/components/text/engine/looks/inkBleed.js +590 -0
  264. package/dist/components/text/engine/looks/lightPainting.d.ts +132 -0
  265. package/dist/components/text/engine/looks/lightPainting.d.ts.map +1 -0
  266. package/dist/components/text/engine/looks/lightPainting.js +567 -0
  267. package/dist/components/text/engine/looks/liquidMetal.d.ts +135 -0
  268. package/dist/components/text/engine/looks/liquidMetal.d.ts.map +1 -0
  269. package/dist/components/text/engine/looks/liquidMetal.js +655 -0
  270. package/dist/components/text/engine/looks/plasmaDischarge.d.ts +126 -0
  271. package/dist/components/text/engine/looks/plasmaDischarge.d.ts.map +1 -0
  272. package/dist/components/text/engine/looks/plasmaDischarge.js +763 -0
  273. package/dist/components/text/engine/methods.d.ts +19 -0
  274. package/dist/components/text/engine/methods.d.ts.map +1 -0
  275. package/dist/components/text/engine/methods.js +126 -0
  276. package/dist/components/text/engine/playback.d.ts +40 -0
  277. package/dist/components/text/engine/playback.d.ts.map +1 -0
  278. package/dist/components/text/engine/playback.js +114 -0
  279. package/dist/components/text/engine/ribbon.d.ts +58 -0
  280. package/dist/components/text/engine/ribbon.d.ts.map +1 -0
  281. package/dist/components/text/engine/ribbon.js +250 -0
  282. package/dist/components/text/engine/variants.d.ts +159 -0
  283. package/dist/components/text/engine/variants.d.ts.map +1 -0
  284. package/dist/components/text/engine/variants.js +378 -0
  285. package/dist/components/text/fonts/architects-daughter.outline.d.ts +3 -0
  286. package/dist/components/text/fonts/architects-daughter.outline.d.ts.map +1 -0
  287. package/dist/components/text/fonts/architects-daughter.outline.js +4 -0
  288. package/dist/components/text/fonts/architects-daughter.strokes.d.ts +3 -0
  289. package/dist/components/text/fonts/architects-daughter.strokes.d.ts.map +1 -0
  290. package/dist/components/text/fonts/architects-daughter.strokes.js +4 -0
  291. package/dist/components/text/fonts/caveat.outline.d.ts +3 -0
  292. package/dist/components/text/fonts/caveat.outline.d.ts.map +1 -0
  293. package/dist/components/text/fonts/caveat.outline.js +4 -0
  294. package/dist/components/text/fonts/caveat.strokes.d.ts +3 -0
  295. package/dist/components/text/fonts/caveat.strokes.d.ts.map +1 -0
  296. package/dist/components/text/fonts/caveat.strokes.js +4 -0
  297. package/dist/components/text/fonts/courgette.outline.d.ts +3 -0
  298. package/dist/components/text/fonts/courgette.outline.d.ts.map +1 -0
  299. package/dist/components/text/fonts/courgette.outline.js +4 -0
  300. package/dist/components/text/fonts/courgette.strokes.d.ts +3 -0
  301. package/dist/components/text/fonts/courgette.strokes.d.ts.map +1 -0
  302. package/dist/components/text/fonts/courgette.strokes.js +4 -0
  303. package/dist/components/text/fonts/dancing-script.outline.d.ts +3 -0
  304. package/dist/components/text/fonts/dancing-script.outline.d.ts.map +1 -0
  305. package/dist/components/text/fonts/dancing-script.outline.js +4 -0
  306. package/dist/components/text/fonts/dancing-script.strokes.d.ts +3 -0
  307. package/dist/components/text/fonts/dancing-script.strokes.d.ts.map +1 -0
  308. package/dist/components/text/fonts/dancing-script.strokes.js +4 -0
  309. package/dist/components/text/fonts/gochi-hand.outline.d.ts +3 -0
  310. package/dist/components/text/fonts/gochi-hand.outline.d.ts.map +1 -0
  311. package/dist/components/text/fonts/gochi-hand.outline.js +4 -0
  312. package/dist/components/text/fonts/gochi-hand.strokes.d.ts +3 -0
  313. package/dist/components/text/fonts/gochi-hand.strokes.d.ts.map +1 -0
  314. package/dist/components/text/fonts/gochi-hand.strokes.js +4 -0
  315. package/dist/components/text/fonts/handlee.outline.d.ts +3 -0
  316. package/dist/components/text/fonts/handlee.outline.d.ts.map +1 -0
  317. package/dist/components/text/fonts/handlee.outline.js +4 -0
  318. package/dist/components/text/fonts/handlee.strokes.d.ts +3 -0
  319. package/dist/components/text/fonts/handlee.strokes.d.ts.map +1 -0
  320. package/dist/components/text/fonts/handlee.strokes.js +4 -0
  321. package/dist/components/text/fonts/index.d.ts +5 -0
  322. package/dist/components/text/fonts/index.d.ts.map +1 -0
  323. package/dist/components/text/fonts/index.js +44 -0
  324. package/dist/components/text/fonts/indie-flower.outline.d.ts +3 -0
  325. package/dist/components/text/fonts/indie-flower.outline.d.ts.map +1 -0
  326. package/dist/components/text/fonts/indie-flower.outline.js +4 -0
  327. package/dist/components/text/fonts/indie-flower.strokes.d.ts +3 -0
  328. package/dist/components/text/fonts/indie-flower.strokes.d.ts.map +1 -0
  329. package/dist/components/text/fonts/indie-flower.strokes.js +4 -0
  330. package/dist/components/text/fonts/kalam.outline.d.ts +3 -0
  331. package/dist/components/text/fonts/kalam.outline.d.ts.map +1 -0
  332. package/dist/components/text/fonts/kalam.outline.js +4 -0
  333. package/dist/components/text/fonts/kalam.strokes.d.ts +3 -0
  334. package/dist/components/text/fonts/kalam.strokes.d.ts.map +1 -0
  335. package/dist/components/text/fonts/kalam.strokes.js +4 -0
  336. package/dist/components/text/fonts/kaushan-script.outline.d.ts +3 -0
  337. package/dist/components/text/fonts/kaushan-script.outline.d.ts.map +1 -0
  338. package/dist/components/text/fonts/kaushan-script.outline.js +4 -0
  339. package/dist/components/text/fonts/kaushan-script.strokes.d.ts +3 -0
  340. package/dist/components/text/fonts/kaushan-script.strokes.d.ts.map +1 -0
  341. package/dist/components/text/fonts/kaushan-script.strokes.js +4 -0
  342. package/dist/components/text/fonts/mynerve.outline.d.ts +3 -0
  343. package/dist/components/text/fonts/mynerve.outline.d.ts.map +1 -0
  344. package/dist/components/text/fonts/mynerve.outline.js +4 -0
  345. package/dist/components/text/fonts/mynerve.strokes.d.ts +3 -0
  346. package/dist/components/text/fonts/mynerve.strokes.d.ts.map +1 -0
  347. package/dist/components/text/fonts/mynerve.strokes.js +4 -0
  348. package/dist/components/text/fonts/nanum-pen-script.outline.d.ts +3 -0
  349. package/dist/components/text/fonts/nanum-pen-script.outline.d.ts.map +1 -0
  350. package/dist/components/text/fonts/nanum-pen-script.outline.js +4 -0
  351. package/dist/components/text/fonts/nanum-pen-script.strokes.d.ts +3 -0
  352. package/dist/components/text/fonts/nanum-pen-script.strokes.d.ts.map +1 -0
  353. package/dist/components/text/fonts/nanum-pen-script.strokes.js +4 -0
  354. package/dist/components/text/fonts/pacifico.outline.d.ts +3 -0
  355. package/dist/components/text/fonts/pacifico.outline.d.ts.map +1 -0
  356. package/dist/components/text/fonts/pacifico.outline.js +4 -0
  357. package/dist/components/text/fonts/pacifico.strokes.d.ts +3 -0
  358. package/dist/components/text/fonts/pacifico.strokes.d.ts.map +1 -0
  359. package/dist/components/text/fonts/pacifico.strokes.js +4 -0
  360. package/dist/components/text/fonts/patrick-hand.outline.d.ts +3 -0
  361. package/dist/components/text/fonts/patrick-hand.outline.d.ts.map +1 -0
  362. package/dist/components/text/fonts/patrick-hand.outline.js +4 -0
  363. package/dist/components/text/fonts/patrick-hand.strokes.d.ts +3 -0
  364. package/dist/components/text/fonts/patrick-hand.strokes.d.ts.map +1 -0
  365. package/dist/components/text/fonts/patrick-hand.strokes.js +4 -0
  366. package/dist/components/text/fonts/poppins.outline.d.ts +3 -0
  367. package/dist/components/text/fonts/poppins.outline.d.ts.map +1 -0
  368. package/dist/components/text/fonts/poppins.outline.js +4 -0
  369. package/dist/components/text/fonts/poppins.strokes.d.ts +3 -0
  370. package/dist/components/text/fonts/poppins.strokes.d.ts.map +1 -0
  371. package/dist/components/text/fonts/poppins.strokes.js +4 -0
  372. package/dist/components/text/fonts/satisfy.outline.d.ts +3 -0
  373. package/dist/components/text/fonts/satisfy.outline.d.ts.map +1 -0
  374. package/dist/components/text/fonts/satisfy.outline.js +4 -0
  375. package/dist/components/text/fonts/satisfy.strokes.d.ts +3 -0
  376. package/dist/components/text/fonts/satisfy.strokes.d.ts.map +1 -0
  377. package/dist/components/text/fonts/satisfy.strokes.js +4 -0
  378. package/dist/components/text/fonts/sriracha.outline.d.ts +3 -0
  379. package/dist/components/text/fonts/sriracha.outline.d.ts.map +1 -0
  380. package/dist/components/text/fonts/sriracha.outline.js +4 -0
  381. package/dist/components/text/fonts/sriracha.strokes.d.ts +3 -0
  382. package/dist/components/text/fonts/sriracha.strokes.d.ts.map +1 -0
  383. package/dist/components/text/fonts/sriracha.strokes.js +4 -0
  384. package/dist/components/text/index.d.ts +27 -0
  385. package/dist/components/text/index.d.ts.map +1 -0
  386. package/dist/components/text/index.js +13 -0
  387. package/dist/components/text/useTextObject.d.ts +21 -0
  388. package/dist/components/text/useTextObject.d.ts.map +1 -0
  389. package/dist/components/text/useTextObject.js +118 -0
  390. package/dist/components/water/OceanSurface.d.ts.map +1 -1
  391. package/dist/components/water/OceanSurface.js +3 -1
  392. package/dist/components/water/WaterBody.d.ts.map +1 -1
  393. package/dist/components/water/WaterBody.js +3 -1
  394. package/dist/components/water/types.d.ts +5 -1
  395. package/dist/components/water/types.d.ts.map +1 -1
  396. package/dist/constants.d.ts +1 -1
  397. package/dist/constants.d.ts.map +1 -1
  398. package/dist/constants.js +5 -1
  399. package/dist/hooks/index.d.ts +2 -0
  400. package/dist/hooks/index.d.ts.map +1 -1
  401. package/dist/hooks/index.js +1 -0
  402. package/dist/hooks/useCloudSun.d.ts +9 -4
  403. package/dist/hooks/useCloudSun.d.ts.map +1 -1
  404. package/dist/hooks/useCloudSun.js +17 -7
  405. package/dist/hooks/useConfigLive.d.ts +3 -2
  406. package/dist/hooks/useConfigLive.d.ts.map +1 -1
  407. package/dist/hooks/useContinuousEffects.d.ts.map +1 -1
  408. package/dist/hooks/useContinuousEffects.js +4 -10
  409. package/dist/hooks/useEnvironmentProbe.d.ts +3 -22
  410. package/dist/hooks/useEnvironmentProbe.d.ts.map +1 -1
  411. package/dist/hooks/useEnvironmentProbe.js +47 -8
  412. package/dist/hooks/useGridSurface.d.ts +3 -10
  413. package/dist/hooks/useGridSurface.d.ts.map +1 -1
  414. package/dist/hooks/useGridSurface.js +5 -31
  415. package/dist/hooks/useInteraction.d.ts.map +1 -1
  416. package/dist/hooks/useInteraction.js +19 -72
  417. package/dist/hooks/useLightConfig.d.ts +2 -1
  418. package/dist/hooks/useLightConfig.d.ts.map +1 -1
  419. package/dist/hooks/useOceanMaterial.d.ts +6 -2
  420. package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
  421. package/dist/hooks/useOceanMaterial.js +37 -2
  422. package/dist/hooks/useSkyLive.d.ts +23 -0
  423. package/dist/hooks/useSkyLive.d.ts.map +1 -0
  424. package/dist/hooks/useSkyLive.js +30 -0
  425. package/dist/hooks/useSkyUniforms.d.ts.map +1 -1
  426. package/dist/hooks/useSkyUniforms.js +2 -10
  427. package/dist/hooks/useTerrainLive.d.ts +3 -1
  428. package/dist/hooks/useTerrainLive.d.ts.map +1 -1
  429. package/dist/hooks/useTerrainTextures.d.ts +38 -0
  430. package/dist/hooks/useTerrainTextures.d.ts.map +1 -0
  431. package/dist/hooks/useTerrainTextures.js +149 -0
  432. package/dist/index.d.ts +11 -2
  433. package/dist/index.d.ts.map +1 -1
  434. package/dist/index.js +8 -1
  435. package/dist/operations/catalogue/blastOff.d.ts +3 -0
  436. package/dist/operations/catalogue/blastOff.d.ts.map +1 -0
  437. package/dist/operations/catalogue/blastOff.js +118 -0
  438. package/dist/operations/catalogue/bounce.d.ts +3 -0
  439. package/dist/operations/catalogue/bounce.d.ts.map +1 -0
  440. package/dist/operations/catalogue/bounce.js +34 -0
  441. package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -1
  442. package/dist/operations/catalogue/curlSmoke.js +3 -1
  443. package/dist/operations/catalogue/dissolve.d.ts.map +1 -1
  444. package/dist/operations/catalogue/dissolve.js +2 -1
  445. package/dist/operations/catalogue/driftUp.d.ts +3 -0
  446. package/dist/operations/catalogue/driftUp.d.ts.map +1 -0
  447. package/dist/operations/catalogue/driftUp.js +57 -0
  448. package/dist/operations/catalogue/emberAsh.d.ts.map +1 -1
  449. package/dist/operations/catalogue/emberAsh.js +2 -1
  450. package/dist/operations/catalogue/flip.d.ts.map +1 -1
  451. package/dist/operations/catalogue/flip.js +19 -9
  452. package/dist/operations/catalogue/float.d.ts +3 -0
  453. package/dist/operations/catalogue/float.d.ts.map +1 -0
  454. package/dist/operations/catalogue/float.js +39 -0
  455. package/dist/operations/catalogue/flyBy.d.ts +3 -0
  456. package/dist/operations/catalogue/flyBy.d.ts.map +1 -0
  457. package/dist/operations/catalogue/flyBy.js +79 -0
  458. package/dist/operations/catalogue/frost.d.ts.map +1 -1
  459. package/dist/operations/catalogue/frost.js +10 -3
  460. package/dist/operations/catalogue/grow.d.ts +3 -0
  461. package/dist/operations/catalogue/grow.d.ts.map +1 -0
  462. package/dist/operations/catalogue/grow.js +19 -0
  463. package/dist/operations/catalogue/hologram.d.ts.map +1 -1
  464. package/dist/operations/catalogue/hologram.js +11 -5
  465. package/dist/operations/catalogue/jelly.d.ts.map +1 -1
  466. package/dist/operations/catalogue/jelly.js +18 -8
  467. package/dist/operations/catalogue/knockAway.d.ts +3 -0
  468. package/dist/operations/catalogue/knockAway.d.ts.map +1 -0
  469. package/dist/operations/catalogue/knockAway.js +74 -0
  470. package/dist/operations/catalogue/leafFall.d.ts +3 -0
  471. package/dist/operations/catalogue/leafFall.d.ts.map +1 -0
  472. package/dist/operations/catalogue/leafFall.js +74 -0
  473. package/dist/operations/catalogue/lidarScan.d.ts.map +1 -1
  474. package/dist/operations/catalogue/lidarScan.js +4 -1
  475. package/dist/operations/catalogue/metalize.d.ts.map +1 -1
  476. package/dist/operations/catalogue/metalize.js +8 -2
  477. package/dist/operations/catalogue/motionTrail.d.ts +6 -0
  478. package/dist/operations/catalogue/motionTrail.d.ts.map +1 -0
  479. package/dist/operations/catalogue/motionTrail.js +221 -0
  480. package/dist/operations/catalogue/petrify.d.ts.map +1 -1
  481. package/dist/operations/catalogue/petrify.js +9 -3
  482. package/dist/operations/catalogue/physicalExit.d.ts +55 -0
  483. package/dist/operations/catalogue/physicalExit.d.ts.map +1 -0
  484. package/dist/operations/catalogue/physicalExit.js +165 -0
  485. package/dist/operations/catalogue/physicalHeld.d.ts +41 -0
  486. package/dist/operations/catalogue/physicalHeld.d.ts.map +1 -0
  487. package/dist/operations/catalogue/physicalHeld.js +78 -0
  488. package/dist/operations/catalogue/physicalMix.d.ts +45 -0
  489. package/dist/operations/catalogue/physicalMix.d.ts.map +1 -0
  490. package/dist/operations/catalogue/physicalMix.js +144 -0
  491. package/dist/operations/catalogue/pop.d.ts +3 -0
  492. package/dist/operations/catalogue/pop.d.ts.map +1 -0
  493. package/dist/operations/catalogue/pop.js +44 -0
  494. package/dist/operations/catalogue/print3d.d.ts.map +1 -1
  495. package/dist/operations/catalogue/print3d.js +5 -1
  496. package/dist/operations/catalogue/pulse.d.ts +3 -0
  497. package/dist/operations/catalogue/pulse.d.ts.map +1 -0
  498. package/dist/operations/catalogue/pulse.js +29 -0
  499. package/dist/operations/catalogue/restPose.d.ts +5 -7
  500. package/dist/operations/catalogue/restPose.d.ts.map +1 -1
  501. package/dist/operations/catalogue/restPose.js +18 -48
  502. package/dist/operations/catalogue/rotate.d.ts +3 -0
  503. package/dist/operations/catalogue/rotate.d.ts.map +1 -0
  504. package/dist/operations/catalogue/rotate.js +49 -0
  505. package/dist/operations/catalogue/shake.d.ts +3 -0
  506. package/dist/operations/catalogue/shake.d.ts.map +1 -0
  507. package/dist/operations/catalogue/shake.js +31 -0
  508. package/dist/operations/catalogue/shatter.d.ts.map +1 -1
  509. package/dist/operations/catalogue/shatter.js +5 -1
  510. package/dist/operations/catalogue/slam.d.ts +3 -0
  511. package/dist/operations/catalogue/slam.d.ts.map +1 -0
  512. package/dist/operations/catalogue/slam.js +89 -0
  513. package/dist/operations/catalogue/slingshot.d.ts +3 -0
  514. package/dist/operations/catalogue/slingshot.d.ts.map +1 -0
  515. package/dist/operations/catalogue/slingshot.js +88 -0
  516. package/dist/operations/catalogue/spin.d.ts.map +1 -1
  517. package/dist/operations/catalogue/spin.js +24 -13
  518. package/dist/operations/catalogue/sway.d.ts +3 -0
  519. package/dist/operations/catalogue/sway.d.ts.map +1 -0
  520. package/dist/operations/catalogue/sway.js +23 -0
  521. package/dist/operations/catalogue/swirl.d.ts.map +1 -1
  522. package/dist/operations/catalogue/swirl.js +6 -5
  523. package/dist/operations/catalogue/trailCore.d.ts +89 -0
  524. package/dist/operations/catalogue/trailCore.d.ts.map +1 -0
  525. package/dist/operations/catalogue/trailCore.js +190 -0
  526. package/dist/operations/catalogue/trailGhosts.d.ts +5 -0
  527. package/dist/operations/catalogue/trailGhosts.d.ts.map +1 -0
  528. package/dist/operations/catalogue/trailGhosts.js +179 -0
  529. package/dist/operations/catalogue/trailStampStyles.d.ts +11 -0
  530. package/dist/operations/catalogue/trailStampStyles.d.ts.map +1 -0
  531. package/dist/operations/catalogue/trailStampStyles.js +479 -0
  532. package/dist/operations/catalogue/trailStamps.d.ts +57 -0
  533. package/dist/operations/catalogue/trailStamps.d.ts.map +1 -0
  534. package/dist/operations/catalogue/trailStamps.js +349 -0
  535. package/dist/operations/catalogue/trailStreaks.d.ts +3 -0
  536. package/dist/operations/catalogue/trailStreaks.d.ts.map +1 -0
  537. package/dist/operations/catalogue/trailStreaks.js +147 -0
  538. package/dist/operations/catalogue/transitionField.d.ts +30 -0
  539. package/dist/operations/catalogue/transitionField.d.ts.map +1 -1
  540. package/dist/operations/catalogue/transitionField.js +21 -0
  541. package/dist/operations/catalogue/turnAway.d.ts +3 -0
  542. package/dist/operations/catalogue/turnAway.d.ts.map +1 -0
  543. package/dist/operations/catalogue/turnAway.js +54 -0
  544. package/dist/operations/catalogue/vortexDrain.d.ts +3 -0
  545. package/dist/operations/catalogue/vortexDrain.d.ts.map +1 -0
  546. package/dist/operations/catalogue/vortexDrain.js +68 -0
  547. package/dist/operations/catalogue/warp.d.ts +3 -0
  548. package/dist/operations/catalogue/warp.d.ts.map +1 -0
  549. package/dist/operations/catalogue/warp.js +73 -0
  550. package/dist/operations/catalogue/whoosh.d.ts +3 -0
  551. package/dist/operations/catalogue/whoosh.d.ts.map +1 -0
  552. package/dist/operations/catalogue/whoosh.js +84 -0
  553. package/dist/operations/catalogue/wobble.d.ts +3 -0
  554. package/dist/operations/catalogue/wobble.d.ts.map +1 -0
  555. package/dist/operations/catalogue/wobble.js +23 -0
  556. package/dist/operations/clipPreview.d.ts +3 -0
  557. package/dist/operations/clipPreview.d.ts.map +1 -0
  558. package/dist/operations/clipPreview.js +20 -0
  559. package/dist/operations/groupFanout.d.ts +96 -0
  560. package/dist/operations/groupFanout.d.ts.map +1 -0
  561. package/dist/operations/groupFanout.js +365 -0
  562. package/dist/operations/groups.d.ts +20 -0
  563. package/dist/operations/groups.d.ts.map +1 -0
  564. package/dist/operations/groups.js +66 -0
  565. package/dist/operations/index.d.ts +5 -2
  566. package/dist/operations/index.d.ts.map +1 -1
  567. package/dist/operations/index.js +5 -2
  568. package/dist/operations/objectEffects.d.ts +161 -6
  569. package/dist/operations/objectEffects.d.ts.map +1 -1
  570. package/dist/operations/objectEffects.js +1091 -17
  571. package/dist/operations/registry.d.ts.map +1 -1
  572. package/dist/operations/registry.js +24 -2
  573. package/dist/operations/runtime.d.ts +57 -2
  574. package/dist/operations/runtime.d.ts.map +1 -1
  575. package/dist/operations/runtime.js +161 -18
  576. package/dist/operations/types.d.ts +60 -3
  577. package/dist/operations/types.d.ts.map +1 -1
  578. package/dist/operations/types.js +5 -1
  579. package/dist/operations/useObjectEffectLayers.d.ts +2 -2
  580. package/dist/operations/useObjectEffectLayers.d.ts.map +1 -1
  581. package/dist/operations/useObjectEffectLayers.js +31 -10
  582. package/dist/operations/usePresentedVisibility.d.ts +10 -0
  583. package/dist/operations/usePresentedVisibility.d.ts.map +1 -0
  584. package/dist/operations/usePresentedVisibility.js +53 -0
  585. package/dist/presets/terrainBiomes.d.ts +67 -0
  586. package/dist/presets/terrainBiomes.d.ts.map +1 -0
  587. package/dist/presets/terrainBiomes.js +294 -0
  588. package/dist/presets/terrainPresets.d.ts +6 -0
  589. package/dist/presets/terrainPresets.d.ts.map +1 -1
  590. package/dist/presets/terrainPresets.js +26 -38
  591. package/dist/shaders/glsl/oceanCore.glsl.d.ts +2 -2
  592. package/dist/shaders/glsl/oceanCore.glsl.d.ts.map +1 -1
  593. package/dist/shaders/glsl/oceanCore.glsl.js +17 -0
  594. package/dist/shaders/glsl/surfaceCore.glsl.d.ts +21 -0
  595. package/dist/shaders/glsl/surfaceCore.glsl.d.ts.map +1 -0
  596. package/dist/shaders/glsl/surfaceCore.glsl.js +120 -0
  597. package/dist/shaders/glsl/terrainCore.glsl.d.ts +16 -3
  598. package/dist/shaders/glsl/terrainCore.glsl.d.ts.map +1 -1
  599. package/dist/shaders/glsl/terrainCore.glsl.js +266 -20
  600. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts +2 -0
  601. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts.map +1 -1
  602. package/dist/shaders/ocean/OceanSurfaceMaterial.js +3 -0
  603. package/dist/shaders/terrain/TerrainMaterial.d.ts +17 -0
  604. package/dist/shaders/terrain/TerrainMaterial.d.ts.map +1 -1
  605. package/dist/shaders/terrain/TerrainMaterial.js +107 -8
  606. package/dist/triggers/engine.d.ts +44 -0
  607. package/dist/triggers/engine.d.ts.map +1 -0
  608. package/dist/triggers/engine.js +165 -0
  609. package/dist/triggers/hosts/actions.d.ts +8 -0
  610. package/dist/triggers/hosts/actions.d.ts.map +1 -0
  611. package/dist/triggers/hosts/actions.js +22 -0
  612. package/dist/triggers/hosts/interactions.d.ts +6 -0
  613. package/dist/triggers/hosts/interactions.d.ts.map +1 -0
  614. package/dist/triggers/hosts/interactions.js +4 -0
  615. package/dist/triggers/hosts/timelineCues.d.ts +2 -0
  616. package/dist/triggers/hosts/timelineCues.d.ts.map +1 -0
  617. package/dist/triggers/hosts/timelineCues.js +22 -0
  618. package/dist/triggers/index.d.ts +13 -0
  619. package/dist/triggers/index.d.ts.map +1 -0
  620. package/dist/triggers/index.js +9 -0
  621. package/dist/triggers/kinds/action.d.ts +2 -0
  622. package/dist/triggers/kinds/action.d.ts.map +1 -0
  623. package/dist/triggers/kinds/action.js +31 -0
  624. package/dist/triggers/kinds/animations.d.ts +2 -0
  625. package/dist/triggers/kinds/animations.d.ts.map +1 -0
  626. package/dist/triggers/kinds/animations.js +75 -0
  627. package/dist/triggers/kinds/effects.d.ts +2 -0
  628. package/dist/triggers/kinds/effects.d.ts.map +1 -0
  629. package/dist/triggers/kinds/effects.js +27 -0
  630. package/dist/triggers/kinds/index.d.ts +4 -0
  631. package/dist/triggers/kinds/index.d.ts.map +1 -0
  632. package/dist/triggers/kinds/index.js +4 -0
  633. package/dist/triggers/log.d.ts +21 -0
  634. package/dist/triggers/log.d.ts.map +1 -0
  635. package/dist/triggers/log.js +43 -0
  636. package/dist/triggers/readiness.d.ts +40 -0
  637. package/dist/triggers/readiness.d.ts.map +1 -0
  638. package/dist/triggers/readiness.js +158 -0
  639. package/dist/triggers/registry.d.ts +41 -0
  640. package/dist/triggers/registry.d.ts.map +1 -0
  641. package/dist/triggers/registry.js +7 -0
  642. package/dist/types/gridConfigs.d.ts +117 -19
  643. package/dist/types/gridConfigs.d.ts.map +1 -1
  644. package/dist/types/index.d.ts +1 -1
  645. package/dist/types/index.d.ts.map +1 -1
  646. package/dist/ui/UiAnchorUpdater.d.ts +10 -0
  647. package/dist/ui/UiAnchorUpdater.d.ts.map +1 -0
  648. package/dist/ui/UiAnchorUpdater.js +111 -0
  649. package/dist/ui/UiLayers.d.ts +20 -0
  650. package/dist/ui/UiLayers.d.ts.map +1 -0
  651. package/dist/ui/UiLayers.js +57 -0
  652. package/dist/ui/index.d.ts +9 -0
  653. package/dist/ui/index.d.ts.map +1 -0
  654. package/dist/ui/index.js +6 -0
  655. package/dist/ui/uiAnchors.d.ts +21 -0
  656. package/dist/ui/uiAnchors.d.ts.map +1 -0
  657. package/dist/ui/uiAnchors.js +22 -0
  658. package/dist/ui/uiBaseStyles.d.ts +2 -0
  659. package/dist/ui/uiBaseStyles.d.ts.map +1 -0
  660. package/dist/ui/uiBaseStyles.js +100 -0
  661. package/dist/ui/uiBinder.d.ts +30 -0
  662. package/dist/ui/uiBinder.d.ts.map +1 -0
  663. package/dist/ui/uiBinder.js +344 -0
  664. package/dist/utils/configAnimations.d.ts.map +1 -1
  665. package/dist/utils/configAnimations.js +5 -1
  666. package/dist/utils/gridConfig.d.ts +1 -1
  667. package/dist/utils/gridConfig.d.ts.map +1 -1
  668. package/dist/utils/gridConfig.js +1 -1
  669. package/dist/utils/landPatch.d.ts +33 -0
  670. package/dist/utils/landPatch.d.ts.map +1 -0
  671. package/dist/utils/landPatch.js +114 -0
  672. package/dist/utils/renderedSky.d.ts +32 -0
  673. package/dist/utils/renderedSky.d.ts.map +1 -0
  674. package/dist/utils/renderedSky.js +57 -0
  675. package/dist/utils/skyMoon.d.ts +35 -0
  676. package/dist/utils/skyMoon.d.ts.map +1 -0
  677. package/dist/utils/skyMoon.js +41 -0
  678. package/dist/utils/terrainHeight.d.ts +4 -0
  679. package/dist/utils/terrainHeight.d.ts.map +1 -0
  680. package/dist/utils/terrainHeight.js +150 -0
  681. package/dist/utils/terrainTextureResolver.d.ts +18 -0
  682. package/dist/utils/terrainTextureResolver.d.ts.map +1 -0
  683. package/dist/utils/terrainTextureResolver.js +17 -0
  684. package/dist/utils/terrainUniforms.d.ts +17 -0
  685. package/dist/utils/terrainUniforms.d.ts.map +1 -1
  686. package/dist/utils/terrainUniforms.js +84 -0
  687. package/dist/utils/textureArrays.d.ts +29 -0
  688. package/dist/utils/textureArrays.d.ts.map +1 -0
  689. package/dist/utils/textureArrays.js +140 -0
  690. package/package.json +2 -2
@@ -0,0 +1,479 @@
1
+ // The stamp trail styles (see trailStamps.ts): what each copy of the object turns into,
2
+ // and how it goes. All of them are the object's own geometry or derived from it.
3
+ //
4
+ // smoke billows, rises, eaten by drifting density — smoke in its shape
5
+ // ash burns from within along a glowing ember front; behind it, gone
6
+ // hologram its hologram: object-space grid, Fresnel rim, scan bands; it glitches out
7
+ // band by band (each band jitters, then drops)
8
+ // ink ink in water in its shape: swells and swirls, tears into ridged filaments
9
+ // frost ice crystals grow over it, cracks open along cell borders, it melts away
10
+ // sand its surface as grains (surface samples): released from the top down, they
11
+ // pour under gravity onto the floor and lie there in a little heap
12
+ // voxel its shape as cubes (surface samples quantised to a grid): they drop from the
13
+ // top down, tumbling, and shrink away; crisp lit edges
14
+ // shatter its own triangles cut into Voronoi shards (nearest surface seed): each shard
15
+ // turns and drifts outwards, glassy, and is gone
16
+ // wireframe its real mesh edges as fine lines; each edge retracts into its middle
17
+ import { BoxGeometry, BufferAttribute, BufferGeometry, EdgesGeometry, Matrix3, Matrix4, Vector3 } from 'three';
18
+ import { surfaceOf } from './trailCore.js';
19
+ import { defaultTiming, meshStamp, slotStamp } from './trailStamps.js';
20
+ // ---------------------------------------------------------------- object → root-space helpers
21
+ /** The object's meshes with the matrix that takes each into the object's root space. */
22
+ function meshesInRoot(ctx) {
23
+ const out = [];
24
+ ctx.target.updateWorldMatrix(true, true);
25
+ const inv = new Matrix4().copy(ctx.target.matrixWorld).invert();
26
+ ctx.target.traverse((c) => {
27
+ if (!c.isMesh || c.isInstancedMesh || c.userData?.__opFxHelper || !c.geometry?.attributes?.position)
28
+ return;
29
+ const m = new Matrix4().multiplyMatrices(inv, c.matrixWorld);
30
+ out.push({ mesh: c, m, nm: new Matrix3().getNormalMatrix(m) });
31
+ });
32
+ return out;
33
+ }
34
+ /** Bounds of root-space points (y range for "from the top down"). */
35
+ function yRange(pos) {
36
+ let lo = Infinity, hi = -Infinity;
37
+ for (let i = 1; i < pos.length; i += 3) {
38
+ lo = Math.min(lo, pos[i]);
39
+ hi = Math.max(hi, pos[i]);
40
+ }
41
+ return { lo, h: Math.max(1e-6, hi - lo) };
42
+ }
43
+ // ---------------------------------------------------------------- smoke
44
+ export const smoke = meshStamp({
45
+ ...defaultTiming(6),
46
+ opacity: 0.8,
47
+ vertex: /* glsl */ `
48
+ float b = stpN(wp.xyz * 1.6 / uStpSpan + aStpSeed * 11.0);
49
+ wp.xyz += n * uStpSpan * (0.04 + uStpSize * 0.3) * (0.25 + 0.75 * b) * aStpAge;
50
+ wp.y += uStpSpan * 0.32 * aStpAge * aStpAge;`,
51
+ fragment: /* glsl */ `
52
+ vec3 q = vStpW * 2.6 / uStpSpan + vec3(0.0, -uStpTime * 0.35, 0.0) + vStpSeed * 5.0;
53
+ float d = stpFbm(q);
54
+ float edge = 0.12 + age * 0.85;
55
+ float keep = smoothstep(edge - 0.06, edge + 0.14, d);
56
+ float body = 0.25 + 0.75 * abs(dot(n, v));
57
+ float a = keep * body * uStpOpacity * smoothstep(0.0, 0.06, age) * pow(1.0 - age, 0.9);
58
+ float lit = 0.5 + 0.5 * n.y;
59
+ stpOut = vec4(mix(uStpC2, uStpC1, lit * (0.7 + 0.3 * d)), a);`,
60
+ });
61
+ // ---------------------------------------------------------------- ash
62
+ export const ash = meshStamp({
63
+ ...defaultTiming(6),
64
+ opacity: 1,
65
+ vertex: /* glsl */ `
66
+ // what has burnt sags a touch and drifts up as it goes (the ash lifts off)
67
+ float f = stpFbm(L * 3.0 + aStpSeed * 7.0);
68
+ float burnt = smoothstep(f - 0.05, f + 0.25, aStpAge * 1.2 - 0.1);
69
+ wp.y += uStpSpan * 0.18 * burnt * burnt;
70
+ wp.xyz += n * uStpSpan * 0.02 * burnt;`,
71
+ fragment: /* glsl */ `
72
+ // the burn front: a field over the object's own space, its threshold climbing with age
73
+ float f = stpFbm(vStpL * 3.0 + vStpSeed * 7.0);
74
+ float t = age * 1.2 - 0.1;
75
+ float w = 0.04 + uStpSize * 0.09;
76
+ if (f < t - w) discard; // burnt away
77
+ float ember = 1.0 - smoothstep(t - w, t + w * 0.6, f); // 1 at the front, fading into the char
78
+ float shade = 0.5 + 0.5 * max(0.0, dot(n, normalize(vec3(0.35, 0.85, 0.3))));
79
+ vec3 ashCol = uStpC1 * shade * (0.75 + 0.25 * stpN(vStpL * 18.0));
80
+ vec3 col = mix(ashCol, uStpC2 * 2.6, ember * ember); // the ember glows (over 1: it blooms)
81
+ float a = uStpOpacity * smoothstep(0.0, 0.05, age) * (0.88 + 0.12 * ember);
82
+ stpOut = vec4(col, a);`,
83
+ });
84
+ // ---------------------------------------------------------------- hologram
85
+ export const hologram = meshStamp({
86
+ ...defaultTiming(5),
87
+ additive: true,
88
+ opacity: 0.38,
89
+ vertexPars: /* glsl */ `
90
+ float holoBand(vec3 L, float seed) { return floor(L.y * 14.0 + seed * 3.0); }`,
91
+ vertex: /* glsl */ `
92
+ // a band about to drop jitters sideways
93
+ float band = holoBand(L, aStpSeed);
94
+ float death = 0.15 + 0.8 * stpH(vec3(band, aStpSeed * 13.0, 1.7));
95
+ float near = smoothstep(death - 0.12, death, aStpAge) * step(aStpAge, death);
96
+ wp.x += uStpSpan * 0.03 * near * sin(uStpTime * 47.0 + band * 3.1);`,
97
+ fragmentPars: /* glsl */ `
98
+ float holoBand(vec3 L, float seed) { return floor(L.y * 14.0 + seed * 3.0); }
99
+ float holoLine(float x, float k) { float g = abs(fract(x * k) - 0.5); return 1.0 - smoothstep(0.0, fwidth(x * k) * 1.2, g - 0.47); }`,
100
+ fragment: /* glsl */ `
101
+ float band = holoBand(vStpL, vStpSeed);
102
+ float death = 0.15 + 0.8 * stpH(vec3(band, vStpSeed * 13.0, 1.7));
103
+ if (age > death) discard; // this band has dropped out
104
+ float flick = 1.0 - 0.7 * step(0.5, stpH(vec3(floor(uStpTime * 24.0), band, vStpSeed))) * smoothstep(death - 0.1, death, age);
105
+ float fres = pow(1.0 - abs(dot(n, v)), 2.0);
106
+ float grid = max(holoLine(vStpL.x, 9.0), max(holoLine(vStpL.y, 9.0), holoLine(vStpL.z, 9.0)));
107
+ float scan = 0.5 + 0.5 * sin((vStpL.y * 40.0 - uStpTime * 6.0));
108
+ // faint body, a clear rim, crisp grid lines — copies overlap, so each one is light
109
+ float a = uStpOpacity * flick * (0.02 + 0.22 * fres + 0.4 * grid) * (0.8 + 0.2 * scan) * smoothstep(0.0, 0.05, age) * (1.0 - 0.6 * age);
110
+ vec3 col = mix(uStpC1, uStpC2, grid * 0.7);
111
+ stpOut = vec4(col, a);`,
112
+ });
113
+ // ---------------------------------------------------------------- ink
114
+ export const ink = meshStamp({
115
+ ...defaultTiming(7),
116
+ opacity: 0.85,
117
+ vertex: /* glsl */ `
118
+ // it swells and swirls like ink let go in water
119
+ vec3 q = wp.xyz * 0.9 / uStpSpan + vec3(0.0, uStpTime * 0.15, aStpSeed * 9.0);
120
+ vec3 drift = vec3(stpN(q) - 0.5, stpN(q + 17.3) - 0.5, stpN(q + 31.7) - 0.5);
121
+ float g = pow(aStpAge, 0.7);
122
+ wp.xyz += n * uStpSpan * (0.05 + uStpSize * 0.4) * g * (0.4 + stpN(q * 2.3));
123
+ wp.xyz += drift * uStpSpan * 0.9 * g;
124
+ wp.y -= uStpSpan * 0.12 * aStpAge * aStpAge; // ink is heavier than water`,
125
+ fragment: /* glsl */ `
126
+ // ridged filaments: it tears into threads as it thins
127
+ vec3 q = vStpW * 3.4 / uStpSpan + vec3(0.0, uStpTime * 0.1, vStpSeed * 4.0);
128
+ float r = 1.0 - abs(2.0 * stpFbm(q) - 1.0);
129
+ r = r * r; // narrower ridges: threads, not clouds
130
+ float th = 0.12 + age * 0.62;
131
+ float dens = smoothstep(th, th + 0.07, r);
132
+ float body = 0.3 + 0.7 * abs(dot(n, v));
133
+ vec3 col = mix(uStpC2, uStpC1, dens * body); // thick ink deep, thin edges bleed lighter
134
+ float a = uStpOpacity * dens * body * smoothstep(0.0, 0.08, age) * pow(1.0 - age, 0.8);
135
+ stpOut = vec4(col, a);`,
136
+ });
137
+ // ---------------------------------------------------------------- frost
138
+ export const frost = meshStamp({
139
+ ...defaultTiming(7),
140
+ opacity: 0.9,
141
+ vertex: /* glsl */ `
142
+ // melting: it slumps as it goes
143
+ float melt = smoothstep(0.55, 1.0, aStpAge);
144
+ wp.y -= uStpSpan * 0.08 * melt * (0.5 + stpN(L * 4.0 + aStpSeed));`,
145
+ fragment: /* glsl */ `
146
+ vec3 cell = stpWorley(vStpL * (5.0 + uStpSize * 8.0) + vStpSeed * 3.0);
147
+ // crystals grow over it (a front through its own space), cracks open along cell borders, it melts from below
148
+ float grow = smoothstep(0.0, 0.22, age - 0.25 * stpN(vStpL * 2.0 + vStpSeed));
149
+ float crack = smoothstep(0.42, 0.7, age) * (1.0 - smoothstep(0.0, 0.035, cell.y - cell.x));
150
+ float meltT = smoothstep(0.55, 1.0, age);
151
+ if (stpFbm(vStpL * 4.0 + vec3(0.0, uStpTime * 0.05, vStpSeed)) + vStpL.y * 0.35 < meltT * 1.25 - 0.1) discard;
152
+ float fres = pow(1.0 - abs(dot(n, v)), 2.5);
153
+ float facet = 0.75 + 0.25 * cell.z; // each crystal catches the light differently
154
+ vec3 col = uStpC1 * facet * (0.6 + 0.4 * max(0.0, n.y)) + uStpC2 * (0.7 * fres + 1.4 * crack);
155
+ float a = uStpOpacity * grow * (0.35 + 0.45 * fres + 0.6 * crack) * (1.0 - meltT * 0.4);
156
+ stpOut = vec4(col, a);`,
157
+ });
158
+ // ---------------------------------------------------------------- sand (surface grains)
159
+ export const sand = slotStamp({
160
+ ...defaultTiming(6),
161
+ kind: 'points',
162
+ opacity: 1,
163
+ derive(ctx) {
164
+ const s = surfaceOf(ctx.target, 7000, 59);
165
+ const { lo, h } = yRange(s.pos);
166
+ const rnd = new Float32Array(s.n * 4);
167
+ for (let i = 0; i < s.n; i++) {
168
+ rnd[i * 4] = Math.random();
169
+ rnd[i * 4 + 1] = Math.random();
170
+ rnd[i * 4 + 2] = Math.random();
171
+ rnd[i * 4 + 3] = (s.pos[i * 3 + 1] - lo) / h; // 0 at its base, 1 at its top
172
+ }
173
+ const g = new BufferGeometry();
174
+ g.setAttribute('position', new BufferAttribute(s.pos.slice(), 3));
175
+ g.setAttribute('normal', new BufferAttribute(s.nrm.slice(), 3));
176
+ g.setAttribute('aGrain', new BufferAttribute(rnd, 4));
177
+ return { geometry: g };
178
+ },
179
+ vertexPars: /* glsl */ `
180
+ attribute vec4 aGrain;
181
+ varying float vGrainMix;
182
+ varying float vGrainFree;`,
183
+ vertexLocal: /* glsl */ `
184
+ vGrainMix = aGrain.y;`,
185
+ vertexWorld: /* glsl */ `
186
+ // released from the top down, then gravity; it lands and lies in a heap
187
+ float rel = (1.0 - aGrain.w) * 0.42 + aGrain.x * 0.14;
188
+ float tau = max(0.0, age - rel);
189
+ vGrainFree = smoothstep(0.0, 0.02, tau);
190
+ wp.y -= uStpSpan * 7.0 * tau * tau;
191
+ vec2 spread = (aGrain.zy - 0.5) * 2.0;
192
+ float landed = step(wp.y, uStpFloor + 0.004 * uStpSpan);
193
+ wp.xz += spread * uStpSpan * (0.05 * tau + 0.25 * landed * min(1.0, tau * 2.0));
194
+ wp.y = max(wp.y, uStpFloor + aGrain.x * 0.02 * uStpSpan);
195
+ stpSize = uStpPx * (0.75 + 0.5 * aGrain.z);`,
196
+ fragmentPars: /* glsl */ `
197
+ varying float vGrainMix;
198
+ varying float vGrainFree;`,
199
+ // a crisp round grain: a one-pixel anti-aliased edge, no soft sprite
200
+ fragment: /* glsl */ `
201
+ float d = length(pc);
202
+ float edge = clamp((1.0 - d) / max(fwidth(d), 1e-4), 0.0, 1.0);
203
+ float shade = 0.65 + 0.35 * max(0.0, n.y);
204
+ vec3 col = mix(uStpC1, uStpC2, vGrainMix * 0.8) * shade;
205
+ float a = edge * uStpOpacity * smoothstep(0.0, 0.03, age) * (1.0 - smoothstep(0.8, 1.0, age));
206
+ stpOut = vec4(col, a);`,
207
+ });
208
+ // ---------------------------------------------------------------- voxels
209
+ export const voxel = slotStamp({
210
+ ...defaultTiming(5.5),
211
+ kind: 'mesh',
212
+ opacity: 1,
213
+ derive(ctx) {
214
+ const s = surfaceOf(ctx.target, 30000, 37);
215
+ let min = [Infinity, Infinity, Infinity], max = [-Infinity, -Infinity, -Infinity];
216
+ for (let i = 0; i < s.n; i++)
217
+ for (let a = 0; a < 3; a++) {
218
+ min[a] = Math.min(min[a], s.pos[i * 3 + a]);
219
+ max[a] = Math.max(max[a], s.pos[i * 3 + a]);
220
+ }
221
+ const res = Math.round(10 + ctx.p.amount * 16);
222
+ const cell = Math.max(max[0] - min[0], max[1] - min[1], max[2] - min[2], 1e-3) / res;
223
+ const cells = new Map();
224
+ for (let i = 0; i < s.n; i++) {
225
+ const ix = Math.floor((s.pos[i * 3] - min[0]) / cell), iy = Math.floor((s.pos[i * 3 + 1] - min[1]) / cell), iz = Math.floor((s.pos[i * 3 + 2] - min[2]) / cell);
226
+ const k = `${ix},${iy},${iz}`;
227
+ if (!cells.has(k))
228
+ cells.set(k, [min[0] + (ix + 0.5) * cell, min[1] + (iy + 0.5) * cell, min[2] + (iz + 0.5) * cell]);
229
+ }
230
+ const n = cells.size, h = Math.max(1e-6, max[1] - min[1]);
231
+ const vox = new Float32Array(n * 4), rnd = new Float32Array(n * 4);
232
+ let i = 0;
233
+ for (const c of cells.values()) {
234
+ vox.set([c[0], c[1], c[2], cell], i * 4);
235
+ rnd.set([Math.random(), Math.random(), Math.random(), (c[1] - min[1]) / h], i * 4);
236
+ i++;
237
+ }
238
+ return { geometry: new BoxGeometry(1, 1, 1), elements: { count: n, attrs: { aVox: { itemSize: 4, array: vox }, aVoxR: { itemSize: 4, array: rnd } } } };
239
+ },
240
+ vertexPars: /* glsl */ `
241
+ attribute vec4 aVox;
242
+ attribute vec4 aVoxR;
243
+ varying vec3 vVoxBox;`,
244
+ vertexLocal: /* glsl */ `
245
+ // released from the top down; it tumbles as it drops and shrinks away
246
+ float rel = (1.0 - aVoxR.w) * 0.5 + aVoxR.x * 0.18;
247
+ float tau = max(0.0, age - rel);
248
+ float sc = 0.94 * (1.0 - smoothstep(0.22, 0.42, tau)) * smoothstep(0.0, 0.03, age);
249
+ mat3 R = stpRot(normalize(aVoxR.xyz - 0.5 + 1e-3), tau * (6.0 + 8.0 * aVoxR.y));
250
+ vVoxBox = position;
251
+ lp = aVox.xyz + R * (position * aVox.w * sc);
252
+ ln = R * normal;
253
+ L = aVox.xyz / uStpSpan;`,
254
+ vertexWorld: /* glsl */ `
255
+ float tau2 = max(0.0, age - ((1.0 - aVoxR.w) * 0.5 + aVoxR.x * 0.18));
256
+ wp.y -= uStpSpan * 4.0 * tau2 * tau2;`,
257
+ fragmentPars: /* glsl */ `
258
+ varying vec3 vVoxBox;`,
259
+ // lit faces with a crisp edge line on every cube
260
+ fragment: /* glsl */ `
261
+ vec3 b = abs(vVoxBox) * 2.0; // 0 centre … 1 face
262
+ float e2 = b.x + b.y + b.z - max(b.x, max(b.y, b.z)); // the two largest: near an edge → ~2
263
+ float w = fwidth(e2) * 1.5;
264
+ float edge = smoothstep(1.86 - w, 1.86 + w, e2);
265
+ float lit = 0.45 + 0.55 * max(0.0, dot(n, normalize(vec3(0.35, 0.85, 0.4))));
266
+ vec3 col = mix(uStpC1 * lit, uStpC2, edge * 0.85);
267
+ float a = uStpOpacity * (0.9 + 0.1 * edge) * (1.0 - smoothstep(0.85, 1.0, age));
268
+ stpOut = vec4(col, a);`,
269
+ });
270
+ // ---------------------------------------------------------------- shatter (its own triangles as Voronoi shards)
271
+ export const shatter = slotStamp({
272
+ ...defaultTiming(5),
273
+ kind: 'mesh',
274
+ opacity: 0.9,
275
+ derive(ctx) {
276
+ const seedsS = surfaceOf(ctx.target, 2000, 71);
277
+ const nSeeds = Math.round(30 + ctx.p.amount * 90);
278
+ const seeds = new Float32Array(nSeeds * 3);
279
+ for (let k = 0; k < nSeeds; k++) {
280
+ const i = (Math.random() * seedsS.n) | 0;
281
+ seeds.set(seedsS.pos.subarray(i * 3, i * 3 + 3), k * 3);
282
+ }
283
+ const cellRnd = Array.from({ length: nSeeds }, () => [Math.random(), Math.random(), Math.random(), Math.random()]);
284
+ // the object's triangles in root space, non-indexed
285
+ const P = [], N = [];
286
+ const v = new Vector3(), nn = new Vector3();
287
+ for (const { mesh, m, nm } of meshesInRoot(ctx)) {
288
+ const g = mesh.geometry.index ? mesh.geometry.toNonIndexed() : mesh.geometry;
289
+ const pos = g.attributes.position, nor = g.attributes.normal;
290
+ if (pos.count > 300000)
291
+ continue;
292
+ for (let i = 0; i < pos.count; i++) {
293
+ v.fromBufferAttribute(pos, i).applyMatrix4(m);
294
+ P.push(v.x, v.y, v.z);
295
+ if (nor) {
296
+ nn.fromBufferAttribute(nor, i).applyMatrix3(nm).normalize();
297
+ N.push(nn.x, nn.y, nn.z);
298
+ }
299
+ else
300
+ N.push(0, 1, 0);
301
+ }
302
+ if (g !== mesh.geometry)
303
+ g.dispose();
304
+ }
305
+ const n = P.length / 3;
306
+ // each triangle → its nearest seed's cell; a cell moves as one shard about its centroid
307
+ const cellOf = new Int32Array(n / 3);
308
+ const sum = new Float64Array(nSeeds * 3), cnt = new Uint32Array(nSeeds);
309
+ let cx = 0, cy = 0, cz = 0;
310
+ for (let t = 0, f = 0; t < n; t += 3, f++) {
311
+ const x = (P[t * 3] + P[t * 3 + 3] + P[t * 3 + 6]) / 3, y = (P[t * 3 + 1] + P[t * 3 + 4] + P[t * 3 + 7]) / 3, z = (P[t * 3 + 2] + P[t * 3 + 5] + P[t * 3 + 8]) / 3;
312
+ let best = 0, bd = Infinity;
313
+ for (let k = 0; k < nSeeds; k++) {
314
+ const dx = x - seeds[k * 3], dy = y - seeds[k * 3 + 1], dz = z - seeds[k * 3 + 2], d = dx * dx + dy * dy + dz * dz;
315
+ if (d < bd) {
316
+ bd = d;
317
+ best = k;
318
+ }
319
+ }
320
+ cellOf[f] = best;
321
+ sum[best * 3] += x;
322
+ sum[best * 3 + 1] += y;
323
+ sum[best * 3 + 2] += z;
324
+ cnt[best]++;
325
+ cx += x;
326
+ cy += y;
327
+ cz += z;
328
+ }
329
+ const tris = Math.max(1, n / 3);
330
+ cx /= tris;
331
+ cy /= tris;
332
+ cz /= tris;
333
+ const cen = new Float32Array(n * 3), dir = new Float32Array(n * 3), rnd = new Float32Array(n * 4);
334
+ for (let t = 0, f = 0; t < n; t += 3, f++) {
335
+ const k = cellOf[f], inv = 1 / Math.max(1, cnt[k]);
336
+ const c = [sum[k * 3] * inv, sum[k * 3 + 1] * inv, sum[k * 3 + 2] * inv];
337
+ const d = new Vector3(c[0] - cx, c[1] - cy, c[2] - cz).normalize();
338
+ for (let vtx = t; vtx < t + 3; vtx++) {
339
+ cen.set(c, vtx * 3);
340
+ dir.set([d.x, d.y, d.z], vtx * 3);
341
+ rnd.set(cellRnd[k], vtx * 4);
342
+ }
343
+ }
344
+ const g = new BufferGeometry();
345
+ g.setAttribute('position', new BufferAttribute(new Float32Array(P), 3));
346
+ g.setAttribute('normal', new BufferAttribute(new Float32Array(N), 3));
347
+ g.setAttribute('aShCen', new BufferAttribute(cen, 3));
348
+ g.setAttribute('aShDir', new BufferAttribute(dir, 3));
349
+ g.setAttribute('aShRnd', new BufferAttribute(rnd, 4));
350
+ return { geometry: g };
351
+ },
352
+ vertexPars: /* glsl */ `
353
+ attribute vec3 aShCen;
354
+ attribute vec3 aShDir;
355
+ attribute vec4 aShRnd;`,
356
+ vertexLocal: /* glsl */ `
357
+ // each shard lets go at its own moment, turns about its centre and drifts outwards
358
+ float tau = max(0.0, age - aShRnd.x * 0.3);
359
+ mat3 R = stpRot(normalize(aShRnd.yzw - 0.5 + 1e-3), tau * (3.0 + 5.0 * aShRnd.y));
360
+ float sc = 1.0 - smoothstep(0.45, 0.7, tau);
361
+ lp = aShCen + R * (position - aShCen) * sc + aShDir * uStpSpan * (0.05 + 0.35 * uStpSize) * tau;
362
+ ln = R * normal;`,
363
+ vertexWorld: /* glsl */ `
364
+ float tau2 = max(0.0, age - aShRnd.x * 0.3);
365
+ wp.y -= uStpSpan * 1.6 * tau2 * tau2;`,
366
+ // glassy: a faint body, a bright Fresnel rim
367
+ fragment: /* glsl */ `
368
+ float fres = pow(1.0 - abs(dot(n, v)), 2.2);
369
+ float lit = 0.5 + 0.5 * max(0.0, dot(n, normalize(vec3(0.35, 0.85, 0.4))));
370
+ vec3 col = uStpC1 * lit + uStpC2 * fres * 0.9;
371
+ float a = uStpOpacity * (0.32 + 0.6 * fres) * smoothstep(0.0, 0.04, age) * (1.0 - smoothstep(0.75, 1.0, age));
372
+ stpOut = vec4(col, a);`,
373
+ });
374
+ // ---------------------------------------------------------------- wireframe (its real edges)
375
+ export const wireframe = slotStamp({
376
+ ...defaultTiming(5),
377
+ kind: 'lines',
378
+ additive: true,
379
+ opacity: 1,
380
+ derive(ctx) {
381
+ const P = [], M = [], R = [];
382
+ const a = new Vector3(), b = new Vector3();
383
+ for (const { mesh, m } of meshesInRoot(ctx)) {
384
+ if (mesh.geometry.attributes.position.count > 200000)
385
+ continue;
386
+ const e = new EdgesGeometry(mesh.geometry, 18);
387
+ const pos = e.attributes.position;
388
+ for (let i = 0; i < pos.count; i += 2) {
389
+ a.fromBufferAttribute(pos, i).applyMatrix4(m);
390
+ b.fromBufferAttribute(pos, i + 1).applyMatrix4(m);
391
+ const mx = (a.x + b.x) / 2, my = (a.y + b.y) / 2, mz = (a.z + b.z) / 2, r = Math.random();
392
+ P.push(a.x, a.y, a.z, b.x, b.y, b.z);
393
+ M.push(mx, my, mz, mx, my, mz);
394
+ R.push(r, r);
395
+ }
396
+ e.dispose();
397
+ }
398
+ const g = new BufferGeometry();
399
+ g.setAttribute('position', new BufferAttribute(new Float32Array(P), 3));
400
+ g.setAttribute('aWireMid', new BufferAttribute(new Float32Array(M), 3));
401
+ g.setAttribute('aWireR', new BufferAttribute(new Float32Array(R), 1));
402
+ return { geometry: g };
403
+ },
404
+ vertexPars: /* glsl */ `
405
+ attribute vec3 aWireMid;
406
+ attribute float aWireR;
407
+ varying float vWireF;`,
408
+ vertexLocal: /* glsl */ `
409
+ // each edge retracts into its middle, at its own moment
410
+ float rel = aWireR * 0.45;
411
+ float f = smoothstep(rel, rel + 0.45, age);
412
+ vWireF = f;
413
+ lp = mix(position, aWireMid, f);`,
414
+ fragmentPars: /* glsl */ `
415
+ varying float vWireF;`,
416
+ fragment: /* glsl */ `
417
+ vec3 col = mix(uStpC1, uStpC2, smoothstep(0.0, 0.8, age));
418
+ float a = uStpOpacity * (1.0 - vWireF) * smoothstep(0.0, 0.03, age);
419
+ stpOut = vec4(col, a);`,
420
+ });
421
+ // ---------------------------------------------------------------- bubbles (from its surface)
422
+ // Soap bubbles form all over the copy's surface (surface samples), let go one by one,
423
+ // rise with a little buoyant acceleration, wobble, and pop — each a crisp sphere drawn in
424
+ // a point: an anti-aliased edge, a thin-film sheen sliding between its two colours with the
425
+ // viewing angle, a bright rim and a small window highlight. Sized in world units (they
426
+ // shrink with distance like real bubbles).
427
+ export const bubbles = slotStamp({
428
+ ...defaultTiming(6),
429
+ kind: 'points',
430
+ opacity: 1,
431
+ derive(ctx) {
432
+ const s = surfaceOf(ctx.target, 240, 83);
433
+ const rnd = new Float32Array(s.n * 4);
434
+ for (let i = 0; i < s.n; i++)
435
+ rnd.set([Math.random(), Math.random(), Math.random(), Math.random()], i * 4);
436
+ const g = new BufferGeometry();
437
+ g.setAttribute('position', new BufferAttribute(s.pos.slice(), 3));
438
+ g.setAttribute('normal', new BufferAttribute(s.nrm.slice(), 3));
439
+ g.setAttribute('aBub', new BufferAttribute(rnd, 4));
440
+ return { geometry: g };
441
+ },
442
+ vertexPars: /* glsl */ `
443
+ attribute vec4 aBub;
444
+ varying float vBubA;
445
+ varying float vBubSeed;`,
446
+ vertexLocal: /* glsl */ `
447
+ vBubSeed = aBub.w;`,
448
+ vertexWorld: /* glsl */ `
449
+ float rel = aBub.x * 0.35; // when it lets go of the surface
450
+ float tau = max(0.0, age - rel);
451
+ float popAt = 0.35 + 0.55 * aBub.y; // how long it lives once free
452
+ // forms on the surface, then rises (accelerating a little) and wobbles
453
+ wp.xyz += n * uStpSpan * 0.015 * smoothstep(0.0, 0.05, age);
454
+ wp.y += uStpSpan * (0.6 + 0.8 * aBub.z) * pow(tau, 1.35);
455
+ wp.x += uStpSpan * 0.05 * sin(tau * 13.0 + aBub.w * 6.28) * smoothstep(0.0, 0.1, tau);
456
+ wp.z += uStpSpan * 0.05 * cos(tau * 11.0 + aBub.z * 6.28) * smoothstep(0.0, 0.1, tau);
457
+ float r = uStpSpan * (0.02 + uStpSize * 0.07) * (0.3 + 0.9 * aBub.z * aBub.z) * smoothstep(0.0, 0.08, age);
458
+ // the pop: it swells a touch and is gone in a blink
459
+ float pop = smoothstep(popAt - 0.02, popAt, tau);
460
+ r *= 1.0 + 0.25 * pop;
461
+ vBubA = 1.0 - step(popAt, tau);
462
+ vec4 cp = projectionMatrix * viewMatrix * wp;
463
+ stpSize = max(1.0, 2.0 * r * projectionMatrix[1][1] * uStpRes.y * 0.5 / max(cp.w, 1e-4));`,
464
+ fragmentPars: /* glsl */ `
465
+ varying float vBubA;
466
+ varying float vBubSeed;`,
467
+ fragment: /* glsl */ `
468
+ if (vBubA < 0.5) discard; // popped
469
+ float d = length(pc);
470
+ float edge = clamp((1.0 - d) / max(fwidth(d), 1e-4), 0.0, 1.0);
471
+ float nz = sqrt(max(0.0, 1.0 - d * d)); // the sphere's normal, facing us
472
+ float fres = pow(1.0 - nz, 2.2);
473
+ // thin film: the colour slides with the viewing angle and drifts slowly
474
+ float film = 0.5 + 0.5 * cos(6.2832 * (fres * 1.4 + vBubSeed + uStpTime * 0.08));
475
+ vec3 col = mix(uStpC1, uStpC2, film);
476
+ float window = smoothstep(0.26, 0.0, length(pc - vec2(-0.34, 0.36))); // a small bright reflection
477
+ float a = edge * uStpOpacity * (0.06 + 0.9 * fres + 0.95 * window) * (1.0 - smoothstep(0.85, 1.0, age));
478
+ stpOut = vec4(col + window * 0.8, a);`,
479
+ });
@@ -0,0 +1,57 @@
1
+ import { BufferGeometry, Matrix4 } from 'three';
2
+ import type { TrailCtx, TrailStyle } from './trailCore';
3
+ export declare const MAX_STAMPS = 24;
4
+ export interface Stamp {
5
+ m: Matrix4;
6
+ t: number;
7
+ seed: number;
8
+ }
9
+ export interface StampTiming {
10
+ /** Life of a stamp in seconds, from the settings. */
11
+ life: (ctx: TrailCtx) => number;
12
+ /** Distance between stamps in object sizes, from the settings. */
13
+ spacing: (ctx: TrailCtx) => number;
14
+ }
15
+ export declare const defaultTiming: (lifeScale: number) => StampTiming;
16
+ export declare const STP_NOISE = "\nfloat stpH(vec3 p) { p = fract(p * 0.3183099 + 0.1); p *= 17.0; return fract(p.x * p.y * p.z * (p.x + p.y + p.z)); }\nfloat stpN(vec3 x) {\n vec3 i = floor(x), f = fract(x); f = f * f * (3.0 - 2.0 * f);\n return mix(mix(mix(stpH(i), stpH(i + vec3(1, 0, 0)), f.x), mix(stpH(i + vec3(0, 1, 0)), stpH(i + vec3(1, 1, 0)), f.x), f.y),\n mix(mix(stpH(i + vec3(0, 0, 1)), stpH(i + vec3(1, 0, 1)), f.x), mix(stpH(i + vec3(0, 1, 1)), stpH(i + vec3(1, 1, 1)), f.x), f.y), f.z);\n}\nfloat stpFbm(vec3 p) { return 0.55 * stpN(p) + 0.3 * stpN(p * 2.07 + 3.1) + 0.15 * stpN(p * 4.13 + 7.7); }\nvec3 stpHash3(vec3 p) {\n p = vec3(dot(p, vec3(127.1, 311.7, 74.7)), dot(p, vec3(269.5, 183.3, 246.1)), dot(p, vec3(113.5, 271.9, 124.6)));\n return fract(sin(p) * 43758.5453123);\n}\n// cellular: (F1, F2, cell id)\nvec3 stpWorley(vec3 p) {\n vec3 i = floor(p), f = fract(p);\n float f1 = 8.0, f2 = 8.0, id = 0.0;\n for (int z = -1; z <= 1; z++) for (int y = -1; y <= 1; y++) for (int x = -1; x <= 1; x++) {\n vec3 g = vec3(float(x), float(y), float(z));\n vec3 h = stpHash3(i + g);\n vec3 r = g + h - f;\n float d = dot(r, r);\n if (d < f1) { f2 = f1; f1 = d; id = h.x; } else if (d < f2) f2 = d;\n }\n return vec3(sqrt(f1), sqrt(f2), id);\n}\nmat3 stpRot(vec3 ax, float an) {\n float s = sin(an), c = cos(an), oc = 1.0 - c;\n return mat3(oc*ax.x*ax.x + c, oc*ax.x*ax.y + ax.z*s, oc*ax.z*ax.x - ax.y*s,\n oc*ax.x*ax.y - ax.z*s, oc*ax.y*ax.y + c, oc*ax.y*ax.z + ax.x*s,\n oc*ax.z*ax.x + ax.y*s, oc*ax.y*ax.z - ax.x*s, oc*ax.z*ax.z + c);\n}";
17
+ export interface MeshStampConfig extends StampTiming {
18
+ /** GLSL before main (vertex), may use STP_NOISE. */
19
+ vertexPars?: string;
20
+ /** Vertex body: change `wp` (vec4, world) / `n` (vec3, world) from `L`, `aStpAge`, `aStpSeed`. */
21
+ vertex: string;
22
+ fragmentPars?: string;
23
+ /** Fragment body: set `stpOut`. */
24
+ fragment: string;
25
+ additive?: boolean;
26
+ /** Strength multiplier on Strength. */
27
+ opacity?: number;
28
+ }
29
+ export declare function meshStamp(cfg: MeshStampConfig): TrailStyle;
30
+ /** Geometry derived from the object, in its ROOT space, plus optional per-element instance data. */
31
+ export interface Derived {
32
+ geometry: BufferGeometry;
33
+ /** Per element (repeated for every stamp slot); omit for one element (the geometry itself). */
34
+ elements?: {
35
+ count: number;
36
+ attrs: Record<string, {
37
+ itemSize: number;
38
+ array: Float32Array;
39
+ }>;
40
+ };
41
+ }
42
+ export interface SlotStampConfig extends StampTiming {
43
+ kind: 'points' | 'lines' | 'mesh';
44
+ /** Build the derived geometry (cached by the style as it likes). */
45
+ derive: (ctx: TrailCtx) => Derived;
46
+ vertexPars?: string;
47
+ /** Object-local stage: move `lp` (vec3, root-local) / `ln` (normal) from `age`, `seed`, element attributes. */
48
+ vertexLocal?: string;
49
+ /** World stage: move `wp` / `n` (after the stamp's matrix). Set `stpSize` (px) for points. */
50
+ vertexWorld?: string;
51
+ fragmentPars?: string;
52
+ fragment: string;
53
+ additive?: boolean;
54
+ opacity?: number;
55
+ }
56
+ export declare function slotStamp(cfg: SlotStampConfig): TrailStyle;
57
+ //# sourceMappingURL=trailStamps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trailStamps.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/trailStamps.ts"],"names":[],"mappings":"AAwBA,OAAO,EACgC,cAAc,EACK,OAAO,EAChE,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAExD,eAAO,MAAM,UAAU,KAAK,CAAC;AAK7B,MAAM,WAAW,KAAK;IAAG,CAAC,EAAE,OAAO,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAE9D,MAAM,WAAW,WAAW;IACxB,qDAAqD;IACrD,IAAI,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,MAAM,CAAC;IAChC,kEAAkE;IAClE,OAAO,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,MAAM,CAAC;CACtC;AAED,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,KAAG,WAGhD,CAAC;AAwBH,eAAO,MAAM,SAAS,smDA8BpB,CAAC;AA8DH,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAChD,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kGAAkG;IAClG,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,UAAU,CAyF1D;AAID,oGAAoG;AACpG,MAAM,WAAW,OAAO;IACpB,QAAQ,EAAE,cAAc,CAAC;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,YAAY,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CAClG;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAChD,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,oEAAoE;IACpE,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+GAA+G;IAC/G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,UAAU,CA4F1D"}