@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.
- package/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
- package/dist/animationsV2/ClipPlayer.js +13 -9
- package/dist/animationsV2/ClipsRuntime.d.ts +44 -3
- package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
- package/dist/animationsV2/ClipsRuntime.js +173 -55
- package/dist/animationsV2/appliers.d.ts.map +1 -1
- package/dist/animationsV2/appliers.js +21 -5
- package/dist/animationsV2/index.d.ts +1 -1
- package/dist/animationsV2/index.d.ts.map +1 -1
- package/dist/animationsV2/normalize.d.ts.map +1 -1
- package/dist/animationsV2/normalize.js +7 -3
- package/dist/animationsV2/sequenceUtils.d.ts +44 -6
- package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
- package/dist/animationsV2/sequenceUtils.js +58 -12
- package/dist/animationsV2/types.d.ts +22 -12
- package/dist/animationsV2/types.d.ts.map +1 -1
- package/dist/api/sceneHandle.d.ts +35 -1
- package/dist/api/sceneHandle.d.ts.map +1 -1
- package/dist/api/sceneHandle.js +88 -17
- package/dist/components/AdvancedGrid.d.ts +1 -5
- package/dist/components/AdvancedGrid.d.ts.map +1 -1
- package/dist/components/AdvancedGrid.js +6 -35
- package/dist/components/AnimatedObject.d.ts.map +1 -1
- package/dist/components/AnimatedObject.js +9 -4
- package/dist/components/ApollonianGrid.d.ts +25 -0
- package/dist/components/ApollonianGrid.d.ts.map +1 -0
- package/dist/components/ApollonianGrid.js +55 -0
- package/dist/components/ChladniGrid.d.ts +1 -1
- package/dist/components/ChladniGrid.d.ts.map +1 -1
- package/dist/components/ChladniGrid.js +6 -35
- package/dist/components/CircuitGrid.d.ts +1 -1
- package/dist/components/CircuitGrid.d.ts.map +1 -1
- package/dist/components/CircuitGrid.js +6 -34
- package/dist/components/ConformalGrid.d.ts +25 -0
- package/dist/components/ConformalGrid.d.ts.map +1 -0
- package/dist/components/ConformalGrid.js +66 -0
- package/dist/components/ContourGrid.d.ts +1 -1
- package/dist/components/ContourGrid.d.ts.map +1 -1
- package/dist/components/ContourGrid.js +6 -34
- package/dist/components/CustomPrimitive.js +1 -1
- package/dist/components/EnvironmentObject.d.ts.map +1 -1
- package/dist/components/EnvironmentObject.js +9 -7
- package/dist/components/FlowNetGrid.d.ts +1 -1
- package/dist/components/FlowNetGrid.d.ts.map +1 -1
- package/dist/components/FlowNetGrid.js +6 -34
- package/dist/components/FractalGrid.d.ts +1 -1
- package/dist/components/FractalGrid.d.ts.map +1 -1
- package/dist/components/FractalGrid.js +6 -37
- package/dist/components/Galaxy.d.ts.map +1 -1
- package/dist/components/Galaxy.js +9 -23
- package/dist/components/GirihGrid.d.ts +1 -1
- package/dist/components/GirihGrid.d.ts.map +1 -1
- package/dist/components/GirihGrid.js +6 -35
- package/dist/components/GravWaveGrid.d.ts +1 -1
- package/dist/components/GravWaveGrid.d.ts.map +1 -1
- package/dist/components/GravWaveGrid.js +6 -35
- package/dist/components/GridsGenerator.d.ts +2 -2
- package/dist/components/GridsGenerator.d.ts.map +1 -1
- package/dist/components/GridsGenerator.js +21 -0
- package/dist/components/HexGrid.d.ts +1 -5
- package/dist/components/HexGrid.d.ts.map +1 -1
- package/dist/components/HexGrid.js +6 -36
- package/dist/components/HilbertGrid.d.ts +25 -0
- package/dist/components/HilbertGrid.d.ts.map +1 -0
- package/dist/components/HilbertGrid.js +66 -0
- package/dist/components/HyperbolicGrid.d.ts +1 -1
- package/dist/components/HyperbolicGrid.d.ts.map +1 -1
- package/dist/components/HyperbolicGrid.js +6 -34
- package/dist/components/LandObject.d.ts +9 -0
- package/dist/components/LandObject.d.ts.map +1 -0
- package/dist/components/LandObject.js +15 -0
- package/dist/components/LensingGrid.d.ts +25 -0
- package/dist/components/LensingGrid.d.ts.map +1 -0
- package/dist/components/LensingGrid.js +55 -0
- package/dist/components/LightsManager.d.ts.map +1 -1
- package/dist/components/LightsManager.js +8 -0
- package/dist/components/ModelBoundary.d.ts +2 -0
- package/dist/components/ModelBoundary.d.ts.map +1 -1
- package/dist/components/ModelBoundary.js +3 -0
- package/dist/components/ModelPrimitive.d.ts.map +1 -1
- package/dist/components/ModelPrimitive.js +6 -0
- package/dist/components/MoireGrid.d.ts +1 -1
- package/dist/components/MoireGrid.d.ts.map +1 -1
- package/dist/components/MoireGrid.js +6 -35
- package/dist/components/MoonDisc.d.ts +11 -0
- package/dist/components/MoonDisc.d.ts.map +1 -0
- package/dist/components/MoonDisc.js +128 -0
- package/dist/components/ObjectNode.d.ts.map +1 -1
- package/dist/components/ObjectNode.js +15 -4
- package/dist/components/ObjectsRenderer.d.ts.map +1 -1
- package/dist/components/ObjectsRenderer.js +7 -5
- package/dist/components/OceanBuilder.d.ts.map +1 -1
- package/dist/components/OceanBuilder.js +2 -0
- package/dist/components/ParastichyGrid.d.ts +25 -0
- package/dist/components/ParastichyGrid.d.ts.map +1 -0
- package/dist/components/ParastichyGrid.js +55 -0
- package/dist/components/PhyllotaxisGrid.d.ts +25 -0
- package/dist/components/PhyllotaxisGrid.d.ts.map +1 -0
- package/dist/components/PhyllotaxisGrid.js +66 -0
- package/dist/components/ProjectLoader.d.ts +5 -3
- package/dist/components/ProjectLoader.d.ts.map +1 -1
- package/dist/components/ProjectLoader.js +6 -3
- package/dist/components/QuasiGrid.d.ts +1 -1
- package/dist/components/QuasiGrid.d.ts.map +1 -1
- package/dist/components/QuasiGrid.js +6 -33
- package/dist/components/RadarGrid.d.ts +1 -1
- package/dist/components/RadarGrid.d.ts.map +1 -1
- package/dist/components/RadarGrid.js +6 -34
- package/dist/components/ReactionDiffusionGrid.d.ts +1 -1
- package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
- package/dist/components/ReactionDiffusionGrid.js +6 -35
- package/dist/components/SceneBuilder.d.ts +25 -3
- package/dist/components/SceneBuilder.d.ts.map +1 -1
- package/dist/components/SceneBuilder.js +68 -38
- package/dist/components/SkyController.d.ts +25 -1
- package/dist/components/SkyController.d.ts.map +1 -1
- package/dist/components/SkyController.js +189 -130
- package/dist/components/SkyMesh.d.ts.map +1 -1
- package/dist/components/SkyMesh.js +26 -1
- package/dist/components/SkyStars.d.ts +11 -0
- package/dist/components/SkyStars.d.ts.map +1 -0
- package/dist/components/SkyStars.js +187 -0
- package/dist/components/SkySystem.d.ts +3 -3
- package/dist/components/SkySystem.d.ts.map +1 -1
- package/dist/components/SkySystem.js +8 -2
- package/dist/components/Sun.d.ts +15 -1
- package/dist/components/Sun.d.ts.map +1 -1
- package/dist/components/Sun.js +64 -3
- package/dist/components/SunLight.d.ts +6 -1
- package/dist/components/SunLight.d.ts.map +1 -1
- package/dist/components/SunLight.js +96 -44
- package/dist/components/TerrainBuilder.d.ts.map +1 -1
- package/dist/components/TerrainBuilder.js +2 -0
- package/dist/components/TextGenerator.d.ts +9 -0
- package/dist/components/TextGenerator.d.ts.map +1 -0
- package/dist/components/TextGenerator.js +29 -0
- package/dist/components/TruchetGrid.d.ts +25 -0
- package/dist/components/TruchetGrid.d.ts.map +1 -0
- package/dist/components/TruchetGrid.js +55 -0
- package/dist/components/VoronoiGrid.d.ts +1 -1
- package/dist/components/VoronoiGrid.d.ts.map +1 -1
- package/dist/components/VoronoiGrid.js +6 -33
- package/dist/components/WallpaperGrid.d.ts +1 -1
- package/dist/components/WallpaperGrid.d.ts.map +1 -1
- package/dist/components/WallpaperGrid.js +6 -35
- package/dist/components/environment/Rain.d.ts +15 -0
- package/dist/components/environment/Rain.d.ts.map +1 -0
- package/dist/components/environment/Rain.js +110 -0
- package/dist/components/environment/Rainbow.d.ts +20 -0
- package/dist/components/environment/Rainbow.d.ts.map +1 -0
- package/dist/components/environment/Rainbow.js +974 -0
- package/dist/components/environment/Sandstorm.d.ts +20 -0
- package/dist/components/environment/Sandstorm.d.ts.map +1 -0
- package/dist/components/environment/Sandstorm.js +776 -0
- package/dist/components/environment/Snow.d.ts +20 -0
- package/dist/components/environment/Snow.d.ts.map +1 -0
- package/dist/components/environment/Snow.js +609 -0
- package/dist/components/environment/Thunderstorm.d.ts +20 -0
- package/dist/components/environment/Thunderstorm.d.ts.map +1 -0
- package/dist/components/environment/Thunderstorm.js +731 -0
- package/dist/components/environment/Tornado.d.ts +20 -0
- package/dist/components/environment/Tornado.d.ts.map +1 -0
- package/dist/components/environment/Tornado.js +762 -0
- package/dist/components/environment/index.d.ts +13 -0
- package/dist/components/environment/index.d.ts.map +1 -0
- package/dist/components/environment/index.js +7 -0
- package/dist/components/index.d.ts +24 -10
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +15 -6
- package/dist/components/land/LandPatch.d.ts +15 -0
- package/dist/components/land/LandPatch.d.ts.map +1 -0
- package/dist/components/land/LandPatch.js +170 -0
- package/dist/components/land/index.d.ts +3 -0
- package/dist/components/land/index.d.ts.map +1 -0
- package/dist/components/land/index.js +1 -0
- package/dist/components/space/Earth.d.ts +16 -0
- package/dist/components/space/Earth.d.ts.map +1 -0
- package/dist/components/space/Earth.js +75 -0
- package/dist/components/space/ShootingStar.d.ts +21 -0
- package/dist/components/space/ShootingStar.d.ts.map +1 -0
- package/dist/components/space/ShootingStar.js +101 -0
- package/dist/components/space/ShootingStars.d.ts +16 -0
- package/dist/components/space/ShootingStars.d.ts.map +1 -0
- package/dist/components/space/ShootingStars.js +71 -0
- package/dist/components/space/SolarSystem.d.ts +16 -0
- package/dist/components/space/SolarSystem.d.ts.map +1 -0
- package/dist/components/space/SolarSystem.js +141 -0
- package/dist/components/space/Stars.d.ts +20 -0
- package/dist/components/space/Stars.d.ts.map +1 -0
- package/dist/components/space/Stars.js +160 -0
- package/dist/components/space/index.d.ts +11 -0
- package/dist/components/space/index.d.ts.map +1 -0
- package/dist/components/space/index.js +8 -0
- package/dist/components/terrain/TerrainSurface.d.ts.map +1 -1
- package/dist/components/terrain/TerrainSurface.js +27 -3
- package/dist/components/terrain/types.d.ts +5 -1
- package/dist/components/terrain/types.d.ts.map +1 -1
- package/dist/components/text/BurnAwayText.d.ts +15 -0
- package/dist/components/text/BurnAwayText.d.ts.map +1 -0
- package/dist/components/text/BurnAwayText.js +4 -0
- package/dist/components/text/ChalkboardText.d.ts +15 -0
- package/dist/components/text/ChalkboardText.d.ts.map +1 -0
- package/dist/components/text/ChalkboardText.js +4 -0
- package/dist/components/text/ConstellationText.d.ts +15 -0
- package/dist/components/text/ConstellationText.d.ts.map +1 -0
- package/dist/components/text/ConstellationText.js +4 -0
- package/dist/components/text/EmbroideryText.d.ts +15 -0
- package/dist/components/text/EmbroideryText.d.ts.map +1 -0
- package/dist/components/text/EmbroideryText.js +4 -0
- package/dist/components/text/FourierSketchText.d.ts +15 -0
- package/dist/components/text/FourierSketchText.d.ts.map +1 -0
- package/dist/components/text/FourierSketchText.js +4 -0
- package/dist/components/text/FrostGrowthText.d.ts +15 -0
- package/dist/components/text/FrostGrowthText.d.ts.map +1 -0
- package/dist/components/text/FrostGrowthText.js +4 -0
- package/dist/components/text/HandwritingText.d.ts +15 -0
- package/dist/components/text/HandwritingText.d.ts.map +1 -0
- package/dist/components/text/HandwritingText.js +4 -0
- package/dist/components/text/InkBleedText.d.ts +15 -0
- package/dist/components/text/InkBleedText.d.ts.map +1 -0
- package/dist/components/text/InkBleedText.js +4 -0
- package/dist/components/text/LightPaintingText.d.ts +15 -0
- package/dist/components/text/LightPaintingText.d.ts.map +1 -0
- package/dist/components/text/LightPaintingText.js +4 -0
- package/dist/components/text/LiquidMetalText.d.ts +15 -0
- package/dist/components/text/LiquidMetalText.d.ts.map +1 -0
- package/dist/components/text/LiquidMetalText.js +4 -0
- package/dist/components/text/NeonTubeText.d.ts +15 -0
- package/dist/components/text/NeonTubeText.d.ts.map +1 -0
- package/dist/components/text/NeonTubeText.js +4 -0
- package/dist/components/text/PlasmaDischargeText.d.ts +15 -0
- package/dist/components/text/PlasmaDischargeText.d.ts.map +1 -0
- package/dist/components/text/PlasmaDischargeText.js +4 -0
- package/dist/components/text/TextObjectView.d.ts +12 -0
- package/dist/components/text/TextObjectView.d.ts.map +1 -0
- package/dist/components/text/TextObjectView.js +11 -0
- package/dist/components/text/engine/fieldkit.d.ts +24 -0
- package/dist/components/text/engine/fieldkit.d.ts.map +1 -0
- package/dist/components/text/engine/fieldkit.js +201 -0
- package/dist/components/text/engine/glyphs.d.ts +19 -0
- package/dist/components/text/engine/glyphs.d.ts.map +1 -0
- package/dist/components/text/engine/glyphs.js +269 -0
- package/dist/components/text/engine/looks/burnAway.d.ts +144 -0
- package/dist/components/text/engine/looks/burnAway.d.ts.map +1 -0
- package/dist/components/text/engine/looks/burnAway.js +593 -0
- package/dist/components/text/engine/looks/chalkboard.d.ts +135 -0
- package/dist/components/text/engine/looks/chalkboard.d.ts.map +1 -0
- package/dist/components/text/engine/looks/chalkboard.js +426 -0
- package/dist/components/text/engine/looks/constellation.d.ts +111 -0
- package/dist/components/text/engine/looks/constellation.d.ts.map +1 -0
- package/dist/components/text/engine/looks/constellation.js +496 -0
- package/dist/components/text/engine/looks/embroidery.d.ts +165 -0
- package/dist/components/text/engine/looks/embroidery.d.ts.map +1 -0
- package/dist/components/text/engine/looks/embroidery.js +645 -0
- package/dist/components/text/engine/looks/frostGrowth.d.ts +109 -0
- package/dist/components/text/engine/looks/frostGrowth.d.ts.map +1 -0
- package/dist/components/text/engine/looks/frostGrowth.js +727 -0
- package/dist/components/text/engine/looks/index.d.ts +2 -0
- package/dist/components/text/engine/looks/index.d.ts.map +1 -0
- package/dist/components/text/engine/looks/index.js +48 -0
- package/dist/components/text/engine/looks/inkBleed.d.ts +103 -0
- package/dist/components/text/engine/looks/inkBleed.d.ts.map +1 -0
- package/dist/components/text/engine/looks/inkBleed.js +590 -0
- package/dist/components/text/engine/looks/lightPainting.d.ts +132 -0
- package/dist/components/text/engine/looks/lightPainting.d.ts.map +1 -0
- package/dist/components/text/engine/looks/lightPainting.js +567 -0
- package/dist/components/text/engine/looks/liquidMetal.d.ts +135 -0
- package/dist/components/text/engine/looks/liquidMetal.d.ts.map +1 -0
- package/dist/components/text/engine/looks/liquidMetal.js +655 -0
- package/dist/components/text/engine/looks/plasmaDischarge.d.ts +126 -0
- package/dist/components/text/engine/looks/plasmaDischarge.d.ts.map +1 -0
- package/dist/components/text/engine/looks/plasmaDischarge.js +763 -0
- package/dist/components/text/engine/methods.d.ts +19 -0
- package/dist/components/text/engine/methods.d.ts.map +1 -0
- package/dist/components/text/engine/methods.js +126 -0
- package/dist/components/text/engine/playback.d.ts +40 -0
- package/dist/components/text/engine/playback.d.ts.map +1 -0
- package/dist/components/text/engine/playback.js +114 -0
- package/dist/components/text/engine/ribbon.d.ts +58 -0
- package/dist/components/text/engine/ribbon.d.ts.map +1 -0
- package/dist/components/text/engine/ribbon.js +250 -0
- package/dist/components/text/engine/variants.d.ts +159 -0
- package/dist/components/text/engine/variants.d.ts.map +1 -0
- package/dist/components/text/engine/variants.js +378 -0
- package/dist/components/text/fonts/architects-daughter.outline.d.ts +3 -0
- package/dist/components/text/fonts/architects-daughter.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/architects-daughter.outline.js +4 -0
- package/dist/components/text/fonts/architects-daughter.strokes.d.ts +3 -0
- package/dist/components/text/fonts/architects-daughter.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/architects-daughter.strokes.js +4 -0
- package/dist/components/text/fonts/caveat.outline.d.ts +3 -0
- package/dist/components/text/fonts/caveat.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/caveat.outline.js +4 -0
- package/dist/components/text/fonts/caveat.strokes.d.ts +3 -0
- package/dist/components/text/fonts/caveat.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/caveat.strokes.js +4 -0
- package/dist/components/text/fonts/courgette.outline.d.ts +3 -0
- package/dist/components/text/fonts/courgette.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/courgette.outline.js +4 -0
- package/dist/components/text/fonts/courgette.strokes.d.ts +3 -0
- package/dist/components/text/fonts/courgette.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/courgette.strokes.js +4 -0
- package/dist/components/text/fonts/dancing-script.outline.d.ts +3 -0
- package/dist/components/text/fonts/dancing-script.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/dancing-script.outline.js +4 -0
- package/dist/components/text/fonts/dancing-script.strokes.d.ts +3 -0
- package/dist/components/text/fonts/dancing-script.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/dancing-script.strokes.js +4 -0
- package/dist/components/text/fonts/gochi-hand.outline.d.ts +3 -0
- package/dist/components/text/fonts/gochi-hand.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/gochi-hand.outline.js +4 -0
- package/dist/components/text/fonts/gochi-hand.strokes.d.ts +3 -0
- package/dist/components/text/fonts/gochi-hand.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/gochi-hand.strokes.js +4 -0
- package/dist/components/text/fonts/handlee.outline.d.ts +3 -0
- package/dist/components/text/fonts/handlee.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/handlee.outline.js +4 -0
- package/dist/components/text/fonts/handlee.strokes.d.ts +3 -0
- package/dist/components/text/fonts/handlee.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/handlee.strokes.js +4 -0
- package/dist/components/text/fonts/index.d.ts +5 -0
- package/dist/components/text/fonts/index.d.ts.map +1 -0
- package/dist/components/text/fonts/index.js +44 -0
- package/dist/components/text/fonts/indie-flower.outline.d.ts +3 -0
- package/dist/components/text/fonts/indie-flower.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/indie-flower.outline.js +4 -0
- package/dist/components/text/fonts/indie-flower.strokes.d.ts +3 -0
- package/dist/components/text/fonts/indie-flower.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/indie-flower.strokes.js +4 -0
- package/dist/components/text/fonts/kalam.outline.d.ts +3 -0
- package/dist/components/text/fonts/kalam.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/kalam.outline.js +4 -0
- package/dist/components/text/fonts/kalam.strokes.d.ts +3 -0
- package/dist/components/text/fonts/kalam.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/kalam.strokes.js +4 -0
- package/dist/components/text/fonts/kaushan-script.outline.d.ts +3 -0
- package/dist/components/text/fonts/kaushan-script.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/kaushan-script.outline.js +4 -0
- package/dist/components/text/fonts/kaushan-script.strokes.d.ts +3 -0
- package/dist/components/text/fonts/kaushan-script.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/kaushan-script.strokes.js +4 -0
- package/dist/components/text/fonts/mynerve.outline.d.ts +3 -0
- package/dist/components/text/fonts/mynerve.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/mynerve.outline.js +4 -0
- package/dist/components/text/fonts/mynerve.strokes.d.ts +3 -0
- package/dist/components/text/fonts/mynerve.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/mynerve.strokes.js +4 -0
- package/dist/components/text/fonts/nanum-pen-script.outline.d.ts +3 -0
- package/dist/components/text/fonts/nanum-pen-script.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/nanum-pen-script.outline.js +4 -0
- package/dist/components/text/fonts/nanum-pen-script.strokes.d.ts +3 -0
- package/dist/components/text/fonts/nanum-pen-script.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/nanum-pen-script.strokes.js +4 -0
- package/dist/components/text/fonts/pacifico.outline.d.ts +3 -0
- package/dist/components/text/fonts/pacifico.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/pacifico.outline.js +4 -0
- package/dist/components/text/fonts/pacifico.strokes.d.ts +3 -0
- package/dist/components/text/fonts/pacifico.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/pacifico.strokes.js +4 -0
- package/dist/components/text/fonts/patrick-hand.outline.d.ts +3 -0
- package/dist/components/text/fonts/patrick-hand.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/patrick-hand.outline.js +4 -0
- package/dist/components/text/fonts/patrick-hand.strokes.d.ts +3 -0
- package/dist/components/text/fonts/patrick-hand.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/patrick-hand.strokes.js +4 -0
- package/dist/components/text/fonts/poppins.outline.d.ts +3 -0
- package/dist/components/text/fonts/poppins.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/poppins.outline.js +4 -0
- package/dist/components/text/fonts/poppins.strokes.d.ts +3 -0
- package/dist/components/text/fonts/poppins.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/poppins.strokes.js +4 -0
- package/dist/components/text/fonts/satisfy.outline.d.ts +3 -0
- package/dist/components/text/fonts/satisfy.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/satisfy.outline.js +4 -0
- package/dist/components/text/fonts/satisfy.strokes.d.ts +3 -0
- package/dist/components/text/fonts/satisfy.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/satisfy.strokes.js +4 -0
- package/dist/components/text/fonts/sriracha.outline.d.ts +3 -0
- package/dist/components/text/fonts/sriracha.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/sriracha.outline.js +4 -0
- package/dist/components/text/fonts/sriracha.strokes.d.ts +3 -0
- package/dist/components/text/fonts/sriracha.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/sriracha.strokes.js +4 -0
- package/dist/components/text/index.d.ts +27 -0
- package/dist/components/text/index.d.ts.map +1 -0
- package/dist/components/text/index.js +13 -0
- package/dist/components/text/useTextObject.d.ts +21 -0
- package/dist/components/text/useTextObject.d.ts.map +1 -0
- package/dist/components/text/useTextObject.js +118 -0
- package/dist/components/water/OceanSurface.d.ts.map +1 -1
- package/dist/components/water/OceanSurface.js +3 -1
- package/dist/components/water/WaterBody.d.ts.map +1 -1
- package/dist/components/water/WaterBody.js +3 -1
- package/dist/components/water/types.d.ts +5 -1
- package/dist/components/water/types.d.ts.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +5 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useCloudSun.d.ts +9 -4
- package/dist/hooks/useCloudSun.d.ts.map +1 -1
- package/dist/hooks/useCloudSun.js +17 -7
- package/dist/hooks/useConfigLive.d.ts +3 -2
- package/dist/hooks/useConfigLive.d.ts.map +1 -1
- package/dist/hooks/useContinuousEffects.d.ts.map +1 -1
- package/dist/hooks/useContinuousEffects.js +4 -10
- package/dist/hooks/useEnvironmentProbe.d.ts +3 -22
- package/dist/hooks/useEnvironmentProbe.d.ts.map +1 -1
- package/dist/hooks/useEnvironmentProbe.js +47 -8
- package/dist/hooks/useGridSurface.d.ts +3 -10
- package/dist/hooks/useGridSurface.d.ts.map +1 -1
- package/dist/hooks/useGridSurface.js +5 -31
- package/dist/hooks/useInteraction.d.ts.map +1 -1
- package/dist/hooks/useInteraction.js +19 -72
- package/dist/hooks/useLightConfig.d.ts +2 -1
- package/dist/hooks/useLightConfig.d.ts.map +1 -1
- package/dist/hooks/useOceanMaterial.d.ts +6 -2
- package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
- package/dist/hooks/useOceanMaterial.js +37 -2
- package/dist/hooks/useSkyLive.d.ts +23 -0
- package/dist/hooks/useSkyLive.d.ts.map +1 -0
- package/dist/hooks/useSkyLive.js +30 -0
- package/dist/hooks/useSkyUniforms.d.ts.map +1 -1
- package/dist/hooks/useSkyUniforms.js +2 -10
- package/dist/hooks/useTerrainLive.d.ts +3 -1
- package/dist/hooks/useTerrainLive.d.ts.map +1 -1
- package/dist/hooks/useTerrainTextures.d.ts +38 -0
- package/dist/hooks/useTerrainTextures.d.ts.map +1 -0
- package/dist/hooks/useTerrainTextures.js +149 -0
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/operations/catalogue/blastOff.d.ts +3 -0
- package/dist/operations/catalogue/blastOff.d.ts.map +1 -0
- package/dist/operations/catalogue/blastOff.js +118 -0
- package/dist/operations/catalogue/bounce.d.ts +3 -0
- package/dist/operations/catalogue/bounce.d.ts.map +1 -0
- package/dist/operations/catalogue/bounce.js +34 -0
- package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -1
- package/dist/operations/catalogue/curlSmoke.js +3 -1
- package/dist/operations/catalogue/dissolve.d.ts.map +1 -1
- package/dist/operations/catalogue/dissolve.js +2 -1
- package/dist/operations/catalogue/driftUp.d.ts +3 -0
- package/dist/operations/catalogue/driftUp.d.ts.map +1 -0
- package/dist/operations/catalogue/driftUp.js +57 -0
- package/dist/operations/catalogue/emberAsh.d.ts.map +1 -1
- package/dist/operations/catalogue/emberAsh.js +2 -1
- package/dist/operations/catalogue/flip.d.ts.map +1 -1
- package/dist/operations/catalogue/flip.js +19 -9
- package/dist/operations/catalogue/float.d.ts +3 -0
- package/dist/operations/catalogue/float.d.ts.map +1 -0
- package/dist/operations/catalogue/float.js +39 -0
- package/dist/operations/catalogue/flyBy.d.ts +3 -0
- package/dist/operations/catalogue/flyBy.d.ts.map +1 -0
- package/dist/operations/catalogue/flyBy.js +79 -0
- package/dist/operations/catalogue/frost.d.ts.map +1 -1
- package/dist/operations/catalogue/frost.js +10 -3
- package/dist/operations/catalogue/grow.d.ts +3 -0
- package/dist/operations/catalogue/grow.d.ts.map +1 -0
- package/dist/operations/catalogue/grow.js +19 -0
- package/dist/operations/catalogue/hologram.d.ts.map +1 -1
- package/dist/operations/catalogue/hologram.js +11 -5
- package/dist/operations/catalogue/jelly.d.ts.map +1 -1
- package/dist/operations/catalogue/jelly.js +18 -8
- package/dist/operations/catalogue/knockAway.d.ts +3 -0
- package/dist/operations/catalogue/knockAway.d.ts.map +1 -0
- package/dist/operations/catalogue/knockAway.js +74 -0
- package/dist/operations/catalogue/leafFall.d.ts +3 -0
- package/dist/operations/catalogue/leafFall.d.ts.map +1 -0
- package/dist/operations/catalogue/leafFall.js +74 -0
- package/dist/operations/catalogue/lidarScan.d.ts.map +1 -1
- package/dist/operations/catalogue/lidarScan.js +4 -1
- package/dist/operations/catalogue/metalize.d.ts.map +1 -1
- package/dist/operations/catalogue/metalize.js +8 -2
- package/dist/operations/catalogue/motionTrail.d.ts +6 -0
- package/dist/operations/catalogue/motionTrail.d.ts.map +1 -0
- package/dist/operations/catalogue/motionTrail.js +221 -0
- package/dist/operations/catalogue/petrify.d.ts.map +1 -1
- package/dist/operations/catalogue/petrify.js +9 -3
- package/dist/operations/catalogue/physicalExit.d.ts +55 -0
- package/dist/operations/catalogue/physicalExit.d.ts.map +1 -0
- package/dist/operations/catalogue/physicalExit.js +165 -0
- package/dist/operations/catalogue/physicalHeld.d.ts +41 -0
- package/dist/operations/catalogue/physicalHeld.d.ts.map +1 -0
- package/dist/operations/catalogue/physicalHeld.js +78 -0
- package/dist/operations/catalogue/physicalMix.d.ts +45 -0
- package/dist/operations/catalogue/physicalMix.d.ts.map +1 -0
- package/dist/operations/catalogue/physicalMix.js +144 -0
- package/dist/operations/catalogue/pop.d.ts +3 -0
- package/dist/operations/catalogue/pop.d.ts.map +1 -0
- package/dist/operations/catalogue/pop.js +44 -0
- package/dist/operations/catalogue/print3d.d.ts.map +1 -1
- package/dist/operations/catalogue/print3d.js +5 -1
- package/dist/operations/catalogue/pulse.d.ts +3 -0
- package/dist/operations/catalogue/pulse.d.ts.map +1 -0
- package/dist/operations/catalogue/pulse.js +29 -0
- package/dist/operations/catalogue/restPose.d.ts +5 -7
- package/dist/operations/catalogue/restPose.d.ts.map +1 -1
- package/dist/operations/catalogue/restPose.js +18 -48
- package/dist/operations/catalogue/rotate.d.ts +3 -0
- package/dist/operations/catalogue/rotate.d.ts.map +1 -0
- package/dist/operations/catalogue/rotate.js +49 -0
- package/dist/operations/catalogue/shake.d.ts +3 -0
- package/dist/operations/catalogue/shake.d.ts.map +1 -0
- package/dist/operations/catalogue/shake.js +31 -0
- package/dist/operations/catalogue/shatter.d.ts.map +1 -1
- package/dist/operations/catalogue/shatter.js +5 -1
- package/dist/operations/catalogue/slam.d.ts +3 -0
- package/dist/operations/catalogue/slam.d.ts.map +1 -0
- package/dist/operations/catalogue/slam.js +89 -0
- package/dist/operations/catalogue/slingshot.d.ts +3 -0
- package/dist/operations/catalogue/slingshot.d.ts.map +1 -0
- package/dist/operations/catalogue/slingshot.js +88 -0
- package/dist/operations/catalogue/spin.d.ts.map +1 -1
- package/dist/operations/catalogue/spin.js +24 -13
- package/dist/operations/catalogue/sway.d.ts +3 -0
- package/dist/operations/catalogue/sway.d.ts.map +1 -0
- package/dist/operations/catalogue/sway.js +23 -0
- package/dist/operations/catalogue/swirl.d.ts.map +1 -1
- package/dist/operations/catalogue/swirl.js +6 -5
- package/dist/operations/catalogue/trailCore.d.ts +89 -0
- package/dist/operations/catalogue/trailCore.d.ts.map +1 -0
- package/dist/operations/catalogue/trailCore.js +190 -0
- package/dist/operations/catalogue/trailGhosts.d.ts +5 -0
- package/dist/operations/catalogue/trailGhosts.d.ts.map +1 -0
- package/dist/operations/catalogue/trailGhosts.js +179 -0
- package/dist/operations/catalogue/trailStampStyles.d.ts +11 -0
- package/dist/operations/catalogue/trailStampStyles.d.ts.map +1 -0
- package/dist/operations/catalogue/trailStampStyles.js +479 -0
- package/dist/operations/catalogue/trailStamps.d.ts +57 -0
- package/dist/operations/catalogue/trailStamps.d.ts.map +1 -0
- package/dist/operations/catalogue/trailStamps.js +349 -0
- package/dist/operations/catalogue/trailStreaks.d.ts +3 -0
- package/dist/operations/catalogue/trailStreaks.d.ts.map +1 -0
- package/dist/operations/catalogue/trailStreaks.js +147 -0
- package/dist/operations/catalogue/transitionField.d.ts +30 -0
- package/dist/operations/catalogue/transitionField.d.ts.map +1 -1
- package/dist/operations/catalogue/transitionField.js +21 -0
- package/dist/operations/catalogue/turnAway.d.ts +3 -0
- package/dist/operations/catalogue/turnAway.d.ts.map +1 -0
- package/dist/operations/catalogue/turnAway.js +54 -0
- package/dist/operations/catalogue/vortexDrain.d.ts +3 -0
- package/dist/operations/catalogue/vortexDrain.d.ts.map +1 -0
- package/dist/operations/catalogue/vortexDrain.js +68 -0
- package/dist/operations/catalogue/warp.d.ts +3 -0
- package/dist/operations/catalogue/warp.d.ts.map +1 -0
- package/dist/operations/catalogue/warp.js +73 -0
- package/dist/operations/catalogue/whoosh.d.ts +3 -0
- package/dist/operations/catalogue/whoosh.d.ts.map +1 -0
- package/dist/operations/catalogue/whoosh.js +84 -0
- package/dist/operations/catalogue/wobble.d.ts +3 -0
- package/dist/operations/catalogue/wobble.d.ts.map +1 -0
- package/dist/operations/catalogue/wobble.js +23 -0
- package/dist/operations/clipPreview.d.ts +3 -0
- package/dist/operations/clipPreview.d.ts.map +1 -0
- package/dist/operations/clipPreview.js +20 -0
- package/dist/operations/groupFanout.d.ts +96 -0
- package/dist/operations/groupFanout.d.ts.map +1 -0
- package/dist/operations/groupFanout.js +365 -0
- package/dist/operations/groups.d.ts +20 -0
- package/dist/operations/groups.d.ts.map +1 -0
- package/dist/operations/groups.js +66 -0
- package/dist/operations/index.d.ts +5 -2
- package/dist/operations/index.d.ts.map +1 -1
- package/dist/operations/index.js +5 -2
- package/dist/operations/objectEffects.d.ts +161 -6
- package/dist/operations/objectEffects.d.ts.map +1 -1
- package/dist/operations/objectEffects.js +1091 -17
- package/dist/operations/registry.d.ts.map +1 -1
- package/dist/operations/registry.js +24 -2
- package/dist/operations/runtime.d.ts +57 -2
- package/dist/operations/runtime.d.ts.map +1 -1
- package/dist/operations/runtime.js +161 -18
- package/dist/operations/types.d.ts +60 -3
- package/dist/operations/types.d.ts.map +1 -1
- package/dist/operations/types.js +5 -1
- package/dist/operations/useObjectEffectLayers.d.ts +2 -2
- package/dist/operations/useObjectEffectLayers.d.ts.map +1 -1
- package/dist/operations/useObjectEffectLayers.js +31 -10
- package/dist/operations/usePresentedVisibility.d.ts +10 -0
- package/dist/operations/usePresentedVisibility.d.ts.map +1 -0
- package/dist/operations/usePresentedVisibility.js +53 -0
- package/dist/presets/terrainBiomes.d.ts +67 -0
- package/dist/presets/terrainBiomes.d.ts.map +1 -0
- package/dist/presets/terrainBiomes.js +294 -0
- package/dist/presets/terrainPresets.d.ts +6 -0
- package/dist/presets/terrainPresets.d.ts.map +1 -1
- package/dist/presets/terrainPresets.js +26 -38
- package/dist/shaders/glsl/oceanCore.glsl.d.ts +2 -2
- package/dist/shaders/glsl/oceanCore.glsl.d.ts.map +1 -1
- package/dist/shaders/glsl/oceanCore.glsl.js +17 -0
- package/dist/shaders/glsl/surfaceCore.glsl.d.ts +21 -0
- package/dist/shaders/glsl/surfaceCore.glsl.d.ts.map +1 -0
- package/dist/shaders/glsl/surfaceCore.glsl.js +120 -0
- package/dist/shaders/glsl/terrainCore.glsl.d.ts +16 -3
- package/dist/shaders/glsl/terrainCore.glsl.d.ts.map +1 -1
- package/dist/shaders/glsl/terrainCore.glsl.js +266 -20
- package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts +2 -0
- package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts.map +1 -1
- package/dist/shaders/ocean/OceanSurfaceMaterial.js +3 -0
- package/dist/shaders/terrain/TerrainMaterial.d.ts +17 -0
- package/dist/shaders/terrain/TerrainMaterial.d.ts.map +1 -1
- package/dist/shaders/terrain/TerrainMaterial.js +107 -8
- package/dist/triggers/engine.d.ts +44 -0
- package/dist/triggers/engine.d.ts.map +1 -0
- package/dist/triggers/engine.js +165 -0
- package/dist/triggers/hosts/actions.d.ts +8 -0
- package/dist/triggers/hosts/actions.d.ts.map +1 -0
- package/dist/triggers/hosts/actions.js +22 -0
- package/dist/triggers/hosts/interactions.d.ts +6 -0
- package/dist/triggers/hosts/interactions.d.ts.map +1 -0
- package/dist/triggers/hosts/interactions.js +4 -0
- package/dist/triggers/hosts/timelineCues.d.ts +2 -0
- package/dist/triggers/hosts/timelineCues.d.ts.map +1 -0
- package/dist/triggers/hosts/timelineCues.js +22 -0
- package/dist/triggers/index.d.ts +13 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +9 -0
- package/dist/triggers/kinds/action.d.ts +2 -0
- package/dist/triggers/kinds/action.d.ts.map +1 -0
- package/dist/triggers/kinds/action.js +31 -0
- package/dist/triggers/kinds/animations.d.ts +2 -0
- package/dist/triggers/kinds/animations.d.ts.map +1 -0
- package/dist/triggers/kinds/animations.js +75 -0
- package/dist/triggers/kinds/effects.d.ts +2 -0
- package/dist/triggers/kinds/effects.d.ts.map +1 -0
- package/dist/triggers/kinds/effects.js +27 -0
- package/dist/triggers/kinds/index.d.ts +4 -0
- package/dist/triggers/kinds/index.d.ts.map +1 -0
- package/dist/triggers/kinds/index.js +4 -0
- package/dist/triggers/log.d.ts +21 -0
- package/dist/triggers/log.d.ts.map +1 -0
- package/dist/triggers/log.js +43 -0
- package/dist/triggers/readiness.d.ts +40 -0
- package/dist/triggers/readiness.d.ts.map +1 -0
- package/dist/triggers/readiness.js +158 -0
- package/dist/triggers/registry.d.ts +41 -0
- package/dist/triggers/registry.d.ts.map +1 -0
- package/dist/triggers/registry.js +7 -0
- package/dist/types/gridConfigs.d.ts +117 -19
- package/dist/types/gridConfigs.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/ui/UiAnchorUpdater.d.ts +10 -0
- package/dist/ui/UiAnchorUpdater.d.ts.map +1 -0
- package/dist/ui/UiAnchorUpdater.js +111 -0
- package/dist/ui/UiLayers.d.ts +20 -0
- package/dist/ui/UiLayers.d.ts.map +1 -0
- package/dist/ui/UiLayers.js +57 -0
- package/dist/ui/index.d.ts +9 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +6 -0
- package/dist/ui/uiAnchors.d.ts +21 -0
- package/dist/ui/uiAnchors.d.ts.map +1 -0
- package/dist/ui/uiAnchors.js +22 -0
- package/dist/ui/uiBaseStyles.d.ts +2 -0
- package/dist/ui/uiBaseStyles.d.ts.map +1 -0
- package/dist/ui/uiBaseStyles.js +100 -0
- package/dist/ui/uiBinder.d.ts +30 -0
- package/dist/ui/uiBinder.d.ts.map +1 -0
- package/dist/ui/uiBinder.js +344 -0
- package/dist/utils/configAnimations.d.ts.map +1 -1
- package/dist/utils/configAnimations.js +5 -1
- package/dist/utils/gridConfig.d.ts +1 -1
- package/dist/utils/gridConfig.d.ts.map +1 -1
- package/dist/utils/gridConfig.js +1 -1
- package/dist/utils/landPatch.d.ts +33 -0
- package/dist/utils/landPatch.d.ts.map +1 -0
- package/dist/utils/landPatch.js +114 -0
- package/dist/utils/renderedSky.d.ts +32 -0
- package/dist/utils/renderedSky.d.ts.map +1 -0
- package/dist/utils/renderedSky.js +57 -0
- package/dist/utils/skyMoon.d.ts +35 -0
- package/dist/utils/skyMoon.d.ts.map +1 -0
- package/dist/utils/skyMoon.js +41 -0
- package/dist/utils/terrainHeight.d.ts +4 -0
- package/dist/utils/terrainHeight.d.ts.map +1 -0
- package/dist/utils/terrainHeight.js +150 -0
- package/dist/utils/terrainTextureResolver.d.ts +18 -0
- package/dist/utils/terrainTextureResolver.d.ts.map +1 -0
- package/dist/utils/terrainTextureResolver.js +17 -0
- package/dist/utils/terrainUniforms.d.ts +17 -0
- package/dist/utils/terrainUniforms.d.ts.map +1 -1
- package/dist/utils/terrainUniforms.js +84 -0
- package/dist/utils/textureArrays.d.ts +29 -0
- package/dist/utils/textureArrays.d.ts.map +1 -0
- package/dist/utils/textureArrays.js +140 -0
- 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"}
|