@3driseai/3drise-viewer 0.1.26 → 0.1.28
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 +3 -0
- package/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
- package/dist/animationsV2/ClipPlayer.js +67 -8
- package/dist/animationsV2/ClipsRuntime.d.ts +39 -0
- package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
- package/dist/animationsV2/ClipsRuntime.js +245 -14
- package/dist/animationsV2/appliers.d.ts +5 -0
- package/dist/animationsV2/appliers.d.ts.map +1 -1
- package/dist/animationsV2/appliers.js +25 -7
- 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 +18 -7
- package/dist/animationsV2/sequenceUtils.d.ts +42 -1
- package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
- package/dist/animationsV2/sequenceUtils.js +103 -3
- package/dist/animationsV2/types.d.ts +20 -0
- package/dist/animationsV2/types.d.ts.map +1 -1
- package/dist/components/AdvancedGrid.d.ts +8 -2
- package/dist/components/AdvancedGrid.d.ts.map +1 -1
- package/dist/components/AdvancedGrid.js +31 -14
- package/dist/components/AnimatedObject.d.ts.map +1 -1
- package/dist/components/AnimatedObject.js +7 -5
- package/dist/components/ApollonianGrid.d.ts +25 -0
- package/dist/components/ApollonianGrid.d.ts.map +1 -0
- package/dist/components/ApollonianGrid.js +80 -0
- package/dist/components/Bubbles.d.ts +7 -1
- package/dist/components/Bubbles.d.ts.map +1 -1
- package/dist/components/Bubbles.js +42 -22
- package/dist/components/ChladniGrid.d.ts +8 -4
- package/dist/components/ChladniGrid.d.ts.map +1 -1
- package/dist/components/ChladniGrid.js +31 -13
- package/dist/components/CircuitGrid.d.ts +8 -11
- package/dist/components/CircuitGrid.d.ts.map +1 -1
- package/dist/components/CircuitGrid.js +31 -13
- package/dist/components/CloudsGenerator.d.ts +1 -1
- package/dist/components/CloudsGenerator.js +1 -1
- package/dist/components/ConformalGrid.d.ts +25 -0
- package/dist/components/ConformalGrid.d.ts.map +1 -0
- package/dist/components/ConformalGrid.js +97 -0
- package/dist/components/ContourGrid.d.ts +8 -14
- package/dist/components/ContourGrid.d.ts.map +1 -1
- package/dist/components/ContourGrid.js +31 -13
- package/dist/components/EffectsGenerator.d.ts +7 -1
- package/dist/components/EffectsGenerator.d.ts.map +1 -1
- package/dist/components/EffectsGenerator.js +39 -38
- package/dist/components/EnvironmentManager.d.ts +4 -4
- package/dist/components/EnvironmentManager.d.ts.map +1 -1
- package/dist/components/FlowNetGrid.d.ts +8 -4
- package/dist/components/FlowNetGrid.d.ts.map +1 -1
- package/dist/components/FlowNetGrid.js +31 -13
- package/dist/components/FractalGrid.d.ts +8 -12
- package/dist/components/FractalGrid.d.ts.map +1 -1
- package/dist/components/FractalGrid.js +31 -13
- package/dist/components/GirihGrid.d.ts +8 -1
- package/dist/components/GirihGrid.d.ts.map +1 -1
- package/dist/components/GirihGrid.js +31 -13
- package/dist/components/Glyphs.d.ts +7 -1
- package/dist/components/Glyphs.d.ts.map +1 -1
- package/dist/components/Glyphs.js +40 -34
- package/dist/components/GravWaveGrid.d.ts +8 -1
- package/dist/components/GravWaveGrid.d.ts.map +1 -1
- package/dist/components/GravWaveGrid.js +31 -13
- package/dist/components/GridsGenerator.d.ts +9 -3
- package/dist/components/GridsGenerator.d.ts.map +1 -1
- package/dist/components/GridsGenerator.js +41 -18
- package/dist/components/HexGrid.d.ts +8 -10
- package/dist/components/HexGrid.d.ts.map +1 -1
- package/dist/components/HexGrid.js +31 -13
- package/dist/components/HilbertGrid.d.ts +25 -0
- package/dist/components/HilbertGrid.d.ts.map +1 -0
- package/dist/components/HilbertGrid.js +93 -0
- package/dist/components/HyperbolicGrid.d.ts +8 -4
- package/dist/components/HyperbolicGrid.d.ts.map +1 -1
- package/dist/components/HyperbolicGrid.js +31 -13
- package/dist/components/LandscapeBuilder.d.ts +1 -1
- package/dist/components/LandscapeBuilder.d.ts.map +1 -1
- package/dist/components/LandscapeBuilder.js +1 -1
- package/dist/components/LandscapeObject.d.ts +1 -1
- package/dist/components/LandscapeObject.d.ts.map +1 -1
- package/dist/components/LandscapeObject.js +1 -1
- package/dist/components/LensingGrid.d.ts +25 -0
- package/dist/components/LensingGrid.d.ts.map +1 -0
- package/dist/components/LensingGrid.js +81 -0
- package/dist/components/MoireGrid.d.ts +8 -12
- package/dist/components/MoireGrid.d.ts.map +1 -1
- package/dist/components/MoireGrid.js +31 -13
- package/dist/components/ObjectNode.d.ts.map +1 -1
- package/dist/components/ObjectNode.js +2 -2
- package/dist/components/ObjectsRenderer.d.ts.map +1 -1
- package/dist/components/ObjectsRenderer.js +37 -3
- package/dist/components/OceanBuilder.d.ts +1 -1
- package/dist/components/OceanBuilder.js +1 -1
- package/dist/components/ParastichyGrid.d.ts +25 -0
- package/dist/components/ParastichyGrid.d.ts.map +1 -0
- package/dist/components/ParastichyGrid.js +82 -0
- package/dist/components/ParticlesGenerator.d.ts.map +1 -1
- package/dist/components/ParticlesGenerator.js +6 -0
- package/dist/components/PhyllotaxisGrid.d.ts +25 -0
- package/dist/components/PhyllotaxisGrid.d.ts.map +1 -0
- package/dist/components/PhyllotaxisGrid.js +95 -0
- package/dist/components/QuasiGrid.d.ts +8 -11
- package/dist/components/QuasiGrid.d.ts.map +1 -1
- package/dist/components/QuasiGrid.js +31 -13
- package/dist/components/RadarGrid.d.ts +8 -13
- package/dist/components/RadarGrid.d.ts.map +1 -1
- package/dist/components/RadarGrid.js +31 -13
- package/dist/components/ReactionDiffusionGrid.d.ts +8 -1
- package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
- package/dist/components/ReactionDiffusionGrid.js +33 -139
- package/dist/components/SceneBuilder.js +1 -1
- package/dist/components/SkySystem.d.ts +1 -1
- package/dist/components/SparklesBurst.d.ts +7 -1
- package/dist/components/SparklesBurst.d.ts.map +1 -1
- package/dist/components/SparklesBurst.js +31 -28
- package/dist/components/TerrainBuilder.d.ts +1 -1
- package/dist/components/TerrainBuilder.d.ts.map +1 -1
- package/dist/components/TerrainBuilder.js +1 -1
- package/dist/components/TruchetGrid.d.ts +25 -0
- package/dist/components/TruchetGrid.d.ts.map +1 -0
- package/dist/components/TruchetGrid.js +82 -0
- package/dist/components/VoronoiGrid.d.ts +8 -10
- package/dist/components/VoronoiGrid.d.ts.map +1 -1
- package/dist/components/VoronoiGrid.js +31 -13
- package/dist/components/WallpaperGrid.d.ts +8 -1
- package/dist/components/WallpaperGrid.d.ts.map +1 -1
- package/dist/components/WallpaperGrid.js +33 -210
- package/dist/components/effects/AuraEffect.d.ts +8 -3
- package/dist/components/effects/AuraEffect.d.ts.map +1 -1
- package/dist/components/effects/AuraEffect.js +49 -24
- package/dist/components/effects/AuroraEffect.d.ts +8 -3
- package/dist/components/effects/AuroraEffect.d.ts.map +1 -1
- package/dist/components/effects/AuroraEffect.js +45 -25
- package/dist/components/effects/BlackHoleEffect.d.ts +8 -3
- package/dist/components/effects/BlackHoleEffect.d.ts.map +1 -1
- package/dist/components/effects/BlackHoleEffect.js +42 -21
- package/dist/components/effects/ConstellationEffect.d.ts +8 -3
- package/dist/components/effects/ConstellationEffect.d.ts.map +1 -1
- package/dist/components/effects/ConstellationEffect.js +49 -23
- package/dist/components/effects/DandelionSeedsEffect.d.ts +7 -2
- package/dist/components/effects/DandelionSeedsEffect.d.ts.map +1 -1
- package/dist/components/effects/DandelionSeedsEffect.js +19 -9
- package/dist/components/effects/DataStreamEffect.d.ts +8 -3
- package/dist/components/effects/DataStreamEffect.d.ts.map +1 -1
- package/dist/components/effects/DataStreamEffect.js +54 -26
- package/dist/components/effects/DnaHelixEffect.d.ts +8 -3
- package/dist/components/effects/DnaHelixEffect.d.ts.map +1 -1
- package/dist/components/effects/DnaHelixEffect.js +62 -30
- package/dist/components/effects/FallingLeavesEffect.d.ts +7 -2
- package/dist/components/effects/FallingLeavesEffect.d.ts.map +1 -1
- package/dist/components/effects/FallingLeavesEffect.js +19 -9
- package/dist/components/effects/FieldLinesEffect.d.ts +8 -3
- package/dist/components/effects/FieldLinesEffect.d.ts.map +1 -1
- package/dist/components/effects/FieldLinesEffect.js +30 -20
- package/dist/components/effects/Fire.d.ts +8 -3
- package/dist/components/effects/Fire.d.ts.map +1 -1
- package/dist/components/effects/Fire.js +47 -10
- package/dist/components/effects/FireflySwarmEffect.d.ts +7 -2
- package/dist/components/effects/FireflySwarmEffect.d.ts.map +1 -1
- package/dist/components/effects/FireflySwarmEffect.js +19 -9
- package/dist/components/effects/Flares.d.ts +10 -3
- package/dist/components/effects/Flares.d.ts.map +1 -1
- package/dist/components/effects/Flares.js +53 -56
- package/dist/components/effects/ForcefieldEffect.d.ts +8 -3
- package/dist/components/effects/ForcefieldEffect.d.ts.map +1 -1
- package/dist/components/effects/ForcefieldEffect.js +52 -33
- package/dist/components/effects/GalaxyEffect.d.ts +7 -2
- package/dist/components/effects/GalaxyEffect.d.ts.map +1 -1
- package/dist/components/effects/GalaxyEffect.js +19 -9
- package/dist/components/effects/HarmonicShellEffect.d.ts +8 -3
- package/dist/components/effects/HarmonicShellEffect.d.ts.map +1 -1
- package/dist/components/effects/HarmonicShellEffect.js +30 -22
- package/dist/components/effects/HologramEffect.d.ts +8 -3
- package/dist/components/effects/HologramEffect.d.ts.map +1 -1
- package/dist/components/effects/HologramEffect.js +52 -23
- package/dist/components/effects/IceCrystalsEffect.d.ts +8 -3
- package/dist/components/effects/IceCrystalsEffect.d.ts.map +1 -1
- package/dist/components/effects/IceCrystalsEffect.js +36 -21
- package/dist/components/effects/IceHaloEffect.d.ts +7 -2
- package/dist/components/effects/IceHaloEffect.d.ts.map +1 -1
- package/dist/components/effects/IceHaloEffect.js +19 -9
- package/dist/components/effects/LichtenbergEffect.d.ts +7 -2
- package/dist/components/effects/LichtenbergEffect.d.ts.map +1 -1
- package/dist/components/effects/LichtenbergEffect.js +19 -9
- package/dist/components/effects/LightningEffect.d.ts +8 -3
- package/dist/components/effects/LightningEffect.d.ts.map +1 -1
- package/dist/components/effects/LightningEffect.js +54 -32
- package/dist/components/effects/MoleculesEffect.d.ts +8 -3
- package/dist/components/effects/MoleculesEffect.d.ts.map +1 -1
- package/dist/components/effects/MoleculesEffect.js +31 -21
- package/dist/components/effects/MurmurationEffect.d.ts +7 -2
- package/dist/components/effects/MurmurationEffect.d.ts.map +1 -1
- package/dist/components/effects/MurmurationEffect.js +19 -9
- package/dist/components/effects/NeuralNetworkEffect.d.ts +8 -3
- package/dist/components/effects/NeuralNetworkEffect.d.ts.map +1 -1
- package/dist/components/effects/NeuralNetworkEffect.js +66 -33
- package/dist/components/effects/OrbEffect.d.ts +8 -3
- package/dist/components/effects/OrbEffect.d.ts.map +1 -1
- package/dist/components/effects/OrbEffect.js +89 -42
- package/dist/components/effects/PlanetaryRingsEffect.d.ts +7 -2
- package/dist/components/effects/PlanetaryRingsEffect.d.ts.map +1 -1
- package/dist/components/effects/PlanetaryRingsEffect.js +19 -9
- package/dist/components/effects/PortalEffect.d.ts +8 -3
- package/dist/components/effects/PortalEffect.d.ts.map +1 -1
- package/dist/components/effects/PortalEffect.js +41 -25
- package/dist/components/effects/ShockwaveEffect.d.ts +7 -2
- package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -1
- package/dist/components/effects/ShockwaveEffect.js +19 -9
- package/dist/components/effects/SmokePlumeEffect.d.ts +8 -3
- package/dist/components/effects/SmokePlumeEffect.d.ts.map +1 -1
- package/dist/components/effects/SmokePlumeEffect.js +30 -20
- package/dist/components/effects/SmokeRibbon.d.ts +8 -2
- package/dist/components/effects/SmokeRibbon.d.ts.map +1 -1
- package/dist/components/effects/SmokeRibbon.js +34 -24
- package/dist/components/effects/SmokeRingEffect.d.ts +8 -3
- package/dist/components/effects/SmokeRingEffect.d.ts.map +1 -1
- package/dist/components/effects/SmokeRingEffect.js +33 -21
- package/dist/components/effects/StrangeAttractorEffect.d.ts +8 -3
- package/dist/components/effects/StrangeAttractorEffect.d.ts.map +1 -1
- package/dist/components/effects/StrangeAttractorEffect.js +30 -20
- package/dist/components/effects/VolumetricFogEffect.d.ts +8 -3
- package/dist/components/effects/VolumetricFogEffect.d.ts.map +1 -1
- package/dist/components/effects/VolumetricFogEffect.js +38 -20
- package/dist/components/effects/WaterCausticsEffect.d.ts +7 -2
- package/dist/components/effects/WaterCausticsEffect.d.ts.map +1 -1
- package/dist/components/effects/WaterCausticsEffect.js +19 -9
- package/dist/components/effects/index.d.ts +0 -1
- package/dist/components/effects/index.d.ts.map +1 -1
- package/dist/components/effects/index.js +0 -1
- package/dist/components/index.d.ts +14 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +7 -1
- package/dist/components/landscape/LandscapeMesh.js +1 -1
- package/dist/components/landscape/types.d.ts +1 -1
- package/dist/components/landscape/types.d.ts.map +1 -1
- package/dist/components/particles/MagneticBottleParticles.d.ts +17 -0
- package/dist/components/particles/MagneticBottleParticles.d.ts.map +1 -0
- package/dist/components/particles/MagneticBottleParticles.js +618 -0
- package/dist/components/particles/ShapeBurstParticles.d.ts +17 -0
- package/dist/components/particles/ShapeBurstParticles.d.ts.map +1 -0
- package/dist/components/particles/ShapeBurstParticles.js +588 -0
- package/dist/components/particles/ShapeFlowParticles.d.ts +17 -0
- package/dist/components/particles/ShapeFlowParticles.d.ts.map +1 -0
- package/dist/components/particles/ShapeFlowParticles.js +755 -0
- package/dist/components/particles/index.d.ts +6 -0
- package/dist/components/particles/index.d.ts.map +1 -1
- package/dist/components/particles/index.js +3 -0
- package/dist/components/terrain/types.d.ts +1 -1
- package/dist/components/terrain/types.d.ts.map +1 -1
- package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +1 -1
- package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -1
- package/dist/components/volumetricClouds/types.d.ts +1 -1
- package/dist/components/volumetricClouds/types.d.ts.map +1 -1
- package/dist/components/water/types.d.ts +1 -1
- package/dist/components/water/types.d.ts.map +1 -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/useConfigDriver.d.ts +22 -0
- package/dist/hooks/useConfigDriver.d.ts.map +1 -0
- package/dist/hooks/useConfigDriver.js +43 -0
- package/dist/hooks/useConfigLive.d.ts +1 -1
- package/dist/hooks/useConfigLive.d.ts.map +1 -1
- package/dist/hooks/useLandscapeMaps.d.ts +1 -1
- package/dist/hooks/useLandscapeMaps.d.ts.map +1 -1
- package/dist/hooks/useOceanMaterial.d.ts +1 -1
- package/dist/hooks/useThunder.d.ts +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/interactions/index.d.ts +2 -1
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/interactions/index.js +1 -1
- package/dist/interactions/runner.d.ts +18 -3
- package/dist/interactions/runner.d.ts.map +1 -1
- package/dist/interactions/runner.js +25 -2
- package/dist/operations/catalogue/curlSmoke.d.ts +3 -0
- package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -0
- package/dist/operations/catalogue/curlSmoke.js +178 -0
- package/dist/operations/catalogue/displayImage.d.ts.map +1 -1
- package/dist/operations/catalogue/displayImage.js +1 -0
- package/dist/operations/catalogue/dissolve.d.ts +3 -0
- package/dist/operations/catalogue/dissolve.d.ts.map +1 -0
- package/dist/operations/catalogue/dissolve.js +57 -0
- package/dist/operations/catalogue/emberAsh.d.ts +3 -0
- package/dist/operations/catalogue/emberAsh.d.ts.map +1 -0
- package/dist/operations/catalogue/emberAsh.js +171 -0
- package/dist/operations/catalogue/fade.d.ts.map +1 -1
- package/dist/operations/catalogue/fade.js +1 -0
- package/dist/operations/catalogue/flip.d.ts +3 -0
- package/dist/operations/catalogue/flip.d.ts.map +1 -0
- package/dist/operations/catalogue/flip.js +69 -0
- package/dist/operations/catalogue/flock.d.ts +3 -0
- package/dist/operations/catalogue/flock.d.ts.map +1 -0
- package/dist/operations/catalogue/flock.js +163 -0
- package/dist/operations/catalogue/focus.d.ts.map +1 -1
- package/dist/operations/catalogue/focus.js +1 -0
- package/dist/operations/catalogue/frame.d.ts +3 -0
- package/dist/operations/catalogue/frame.d.ts.map +1 -0
- package/dist/operations/catalogue/frame.js +44 -0
- package/dist/operations/catalogue/frost.d.ts +3 -0
- package/dist/operations/catalogue/frost.d.ts.map +1 -0
- package/dist/operations/catalogue/frost.js +111 -0
- package/dist/operations/catalogue/fxInstances.d.ts +21 -0
- package/dist/operations/catalogue/fxInstances.d.ts.map +1 -0
- package/dist/operations/catalogue/fxInstances.js +47 -0
- package/dist/operations/catalogue/fxPoints.d.ts +22 -0
- package/dist/operations/catalogue/fxPoints.d.ts.map +1 -0
- package/dist/operations/catalogue/fxPoints.js +70 -0
- package/dist/operations/catalogue/glow.d.ts.map +1 -1
- package/dist/operations/catalogue/glow.js +2 -1
- package/dist/operations/catalogue/heatCracks.d.ts +3 -0
- package/dist/operations/catalogue/heatCracks.d.ts.map +1 -0
- package/dist/operations/catalogue/heatCracks.js +134 -0
- package/dist/operations/catalogue/hologram.d.ts +3 -0
- package/dist/operations/catalogue/hologram.d.ts.map +1 -0
- package/dist/operations/catalogue/hologram.js +118 -0
- package/dist/operations/catalogue/inkBloom.d.ts +3 -0
- package/dist/operations/catalogue/inkBloom.d.ts.map +1 -0
- package/dist/operations/catalogue/inkBloom.js +156 -0
- package/dist/operations/catalogue/ivy.d.ts +13 -0
- package/dist/operations/catalogue/ivy.d.ts.map +1 -0
- package/dist/operations/catalogue/ivy.js +469 -0
- package/dist/operations/catalogue/jelly.d.ts +3 -0
- package/dist/operations/catalogue/jelly.d.ts.map +1 -0
- package/dist/operations/catalogue/jelly.js +50 -0
- package/dist/operations/catalogue/kintsugi.d.ts +3 -0
- package/dist/operations/catalogue/kintsugi.d.ts.map +1 -0
- package/dist/operations/catalogue/kintsugi.js +173 -0
- package/dist/operations/catalogue/lidarScan.d.ts +3 -0
- package/dist/operations/catalogue/lidarScan.d.ts.map +1 -0
- package/dist/operations/catalogue/lidarScan.js +240 -0
- package/dist/operations/catalogue/liquidMetal.d.ts +3 -0
- package/dist/operations/catalogue/liquidMetal.d.ts.map +1 -0
- package/dist/operations/catalogue/liquidMetal.js +122 -0
- package/dist/operations/catalogue/metalize.d.ts +3 -0
- package/dist/operations/catalogue/metalize.d.ts.map +1 -0
- package/dist/operations/catalogue/metalize.js +135 -0
- package/dist/operations/catalogue/moveToFront.d.ts.map +1 -1
- package/dist/operations/catalogue/moveToFront.js +1 -0
- package/dist/operations/catalogue/orbit.d.ts +3 -0
- package/dist/operations/catalogue/orbit.d.ts.map +1 -0
- package/dist/operations/catalogue/orbit.js +29 -0
- package/dist/operations/catalogue/particleSwarm.d.ts +3 -0
- package/dist/operations/catalogue/particleSwarm.d.ts.map +1 -0
- package/dist/operations/catalogue/particleSwarm.js +138 -0
- package/dist/operations/catalogue/petalPeel.d.ts +3 -0
- package/dist/operations/catalogue/petalPeel.d.ts.map +1 -0
- package/dist/operations/catalogue/petalPeel.js +137 -0
- package/dist/operations/catalogue/petrify.d.ts +3 -0
- package/dist/operations/catalogue/petrify.d.ts.map +1 -0
- package/dist/operations/catalogue/petrify.js +94 -0
- package/dist/operations/catalogue/portal.d.ts +3 -0
- package/dist/operations/catalogue/portal.d.ts.map +1 -0
- package/dist/operations/catalogue/portal.js +224 -0
- package/dist/operations/catalogue/print3d.d.ts +3 -0
- package/dist/operations/catalogue/print3d.d.ts.map +1 -0
- package/dist/operations/catalogue/print3d.js +275 -0
- package/dist/operations/catalogue/rainBeads.d.ts +3 -0
- package/dist/operations/catalogue/rainBeads.d.ts.map +1 -0
- package/dist/operations/catalogue/rainBeads.js +223 -0
- package/dist/operations/catalogue/restPose.d.ts +21 -0
- package/dist/operations/catalogue/restPose.d.ts.map +1 -0
- package/dist/operations/catalogue/restPose.js +55 -0
- package/dist/operations/catalogue/rimLight.d.ts +3 -0
- package/dist/operations/catalogue/rimLight.d.ts.map +1 -0
- package/dist/operations/catalogue/rimLight.js +72 -0
- package/dist/operations/catalogue/sandErosion.d.ts +3 -0
- package/dist/operations/catalogue/sandErosion.d.ts.map +1 -0
- package/dist/operations/catalogue/sandErosion.js +167 -0
- package/dist/operations/catalogue/shaderLayers.d.ts +74 -0
- package/dist/operations/catalogue/shaderLayers.d.ts.map +1 -0
- package/dist/operations/catalogue/shaderLayers.js +322 -0
- package/dist/operations/catalogue/shatter.d.ts +3 -0
- package/dist/operations/catalogue/shatter.d.ts.map +1 -0
- package/dist/operations/catalogue/shatter.js +267 -0
- package/dist/operations/catalogue/silkDrape.d.ts +3 -0
- package/dist/operations/catalogue/silkDrape.d.ts.map +1 -0
- package/dist/operations/catalogue/silkDrape.js +340 -0
- package/dist/operations/catalogue/spin.d.ts +3 -0
- package/dist/operations/catalogue/spin.d.ts.map +1 -0
- package/dist/operations/catalogue/spin.js +42 -0
- package/dist/operations/catalogue/surfaceSample.d.ts +17 -0
- package/dist/operations/catalogue/surfaceSample.d.ts.map +1 -0
- package/dist/operations/catalogue/surfaceSample.js +187 -0
- package/dist/operations/catalogue/swirl.d.ts +3 -0
- package/dist/operations/catalogue/swirl.d.ts.map +1 -0
- package/dist/operations/catalogue/swirl.js +69 -0
- package/dist/operations/catalogue/teleport.d.ts +3 -0
- package/dist/operations/catalogue/teleport.d.ts.map +1 -0
- package/dist/operations/catalogue/teleport.js +213 -0
- package/dist/operations/catalogue/transitionField.d.ts +124 -0
- package/dist/operations/catalogue/transitionField.d.ts.map +1 -0
- package/dist/operations/catalogue/transitionField.js +278 -0
- package/dist/operations/catalogue/unweave.d.ts +3 -0
- package/dist/operations/catalogue/unweave.d.ts.map +1 -0
- package/dist/operations/catalogue/unweave.js +233 -0
- package/dist/operations/catalogue/visibility.d.ts.map +1 -1
- package/dist/operations/catalogue/visibility.js +1 -0
- package/dist/operations/catalogue/voxelize.d.ts +3 -0
- package/dist/operations/catalogue/voxelize.d.ts.map +1 -0
- package/dist/operations/catalogue/voxelize.js +148 -0
- package/dist/operations/catalogue/warmup.d.ts +22 -0
- package/dist/operations/catalogue/warmup.d.ts.map +1 -0
- package/dist/operations/catalogue/warmup.js +106 -0
- package/dist/operations/catalogue/zoom.d.ts.map +1 -1
- package/dist/operations/catalogue/zoom.js +1 -0
- package/dist/operations/index.d.ts +4 -2
- package/dist/operations/index.d.ts.map +1 -1
- package/dist/operations/index.js +4 -2
- package/dist/operations/objectEffects.d.ts +46 -0
- package/dist/operations/objectEffects.d.ts.map +1 -0
- package/dist/operations/objectEffects.js +136 -0
- package/dist/operations/registry.d.ts +7 -2
- package/dist/operations/registry.d.ts.map +1 -1
- package/dist/operations/registry.js +45 -3
- package/dist/operations/runtime.d.ts +40 -2
- package/dist/operations/runtime.d.ts.map +1 -1
- package/dist/operations/runtime.js +164 -8
- package/dist/operations/types.d.ts +29 -3
- package/dist/operations/types.d.ts.map +1 -1
- package/dist/operations/types.js +6 -0
- package/dist/operations/useObjectEffectLayers.d.ts +4 -0
- package/dist/operations/useObjectEffectLayers.d.ts.map +1 -0
- package/dist/operations/useObjectEffectLayers.js +42 -0
- package/dist/operations/useOperationsRuntime.d.ts.map +1 -1
- package/dist/operations/useOperationsRuntime.js +42 -4
- package/dist/presets/landscapePresets.d.ts +1 -1
- package/dist/presets/landscapePresets.d.ts.map +1 -1
- package/dist/presets/landscapePresets.js +1 -1
- package/dist/presets/landscapeTypes.d.ts +1 -1
- package/dist/presets/landscapeTypes.d.ts.map +1 -1
- package/dist/presets/landscapeTypes.js +1 -1
- package/dist/presets/oceanSurfacePresets.d.ts +1 -1
- package/dist/presets/terrainPresets.d.ts +1 -1
- package/dist/presets/terrainPresets.d.ts.map +1 -1
- package/dist/presets/volumetricCloudPresets.d.ts +1 -1
- package/dist/types/cloudConfigs.d.ts +2 -309
- package/dist/types/cloudConfigs.d.ts.map +1 -1
- package/dist/types/cloudConfigs.js +2 -339
- package/dist/types/gridConfigs.d.ts +103 -0
- package/dist/types/gridConfigs.d.ts.map +1 -1
- package/dist/types/index.d.ts +9 -9
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -4
- package/dist/types/landscapeConfigs.d.ts +2 -217
- package/dist/types/landscapeConfigs.d.ts.map +1 -1
- package/dist/types/landscapeConfigs.js +2 -256
- package/dist/types/oceanConfigs.d.ts +2 -289
- package/dist/types/oceanConfigs.d.ts.map +1 -1
- package/dist/types/oceanConfigs.js +2 -380
- package/dist/types/terrainConfigs.d.ts +2 -250
- package/dist/types/terrainConfigs.d.ts.map +1 -1
- package/dist/types/terrainConfigs.js +2 -292
- package/dist/utils/cloudUniforms.d.ts +1 -1
- package/dist/utils/configAnimations.d.ts +6 -0
- package/dist/utils/configAnimations.d.ts.map +1 -1
- package/dist/utils/configAnimations.js +14 -0
- package/dist/utils/gridConfig.d.ts +19 -0
- package/dist/utils/gridConfig.d.ts.map +1 -0
- package/dist/utils/gridConfig.js +52 -0
- package/dist/utils/handleCloudsAnimations.d.ts +1 -1
- package/dist/utils/handleCloudsAnimations.js +1 -1
- package/dist/utils/hasHoverAnimation.d.ts.map +1 -1
- package/dist/utils/hasHoverAnimation.js +0 -2
- package/dist/utils/landscapeUniforms.d.ts +1 -1
- package/dist/utils/landscapeUniforms.d.ts.map +1 -1
- package/dist/utils/oceanUniforms.d.ts +1 -1
- package/dist/utils/particleShape.d.ts +33 -0
- package/dist/utils/particleShape.d.ts.map +1 -0
- package/dist/utils/particleShape.js +207 -0
- package/dist/utils/particleTrails.d.ts.map +1 -1
- package/dist/utils/particleTrails.js +29 -14
- package/dist/utils/terrainUniforms.d.ts +1 -1
- package/dist/utils/terrainUniforms.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// Frost — ice spreads over the object along a feathery front: the surface turns
|
|
2
|
+
// to faceted crystal (3D cellular pattern in the object's own space), glossy
|
|
3
|
+
// where the ice is clear and rough and white where frost crusts along the facet
|
|
4
|
+
// seams, with glints that catch the light cell by cell. The base colour and the
|
|
5
|
+
// roughness change BEFORE lighting, so the ice is lit by the scene like a real
|
|
6
|
+
// material. A state, not an exit: it stays frozen while on; reverting thaws.
|
|
7
|
+
import { Color } from 'three';
|
|
8
|
+
import { defineOperation } from '../types.js';
|
|
9
|
+
import { GLSL_WORLEY, addLayer, forEachMeshMaterial, removeLayer } from './shaderLayers.js';
|
|
10
|
+
import { DIRECTION_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, runProgress, setFieldParams } from './transitionField.js';
|
|
11
|
+
const P = 'Frs';
|
|
12
|
+
const KEY = 'frost';
|
|
13
|
+
const STATE = '__opFrost';
|
|
14
|
+
function layerFor(st) {
|
|
15
|
+
// computed ONCE per fragment, in the first anchor (diffuse), then shared: the
|
|
16
|
+
// cellular pattern is the costly part to compile and to run
|
|
17
|
+
const frozen = /* glsl */ `
|
|
18
|
+
float frsT = FrsThreshold();
|
|
19
|
+
float frsF = FrsField(vFrsQ);
|
|
20
|
+
float fr = frsFr;
|
|
21
|
+
vec3 cell = frsCell;
|
|
22
|
+
float seam = frsSeam;
|
|
23
|
+
`;
|
|
24
|
+
return {
|
|
25
|
+
uniforms: { ...fieldUniforms(P, st.field), uFrsIce: st.ice, uFrsDensity: st.density },
|
|
26
|
+
common: `varying vec3 vFrsQ;\nvarying vec3 vFrsR;\nvarying vec3 vFrsView;\n${fieldGlsl(P)}\n${GLSL_WORLEY}`,
|
|
27
|
+
fragmentPars: 'float frsFr = 0.0; vec3 frsCell = vec3(1.0); float frsSeam = 0.0;',
|
|
28
|
+
vertex: /* glsl */ `
|
|
29
|
+
vFrsR = (uFrsRootInv * modelMatrix * vec4(transformed, 1.0)).xyz;
|
|
30
|
+
vFrsQ = FrsNorm(vFrsR);
|
|
31
|
+
vFrsView = (modelViewMatrix * vec4(transformed, 1.0)).xyz;`,
|
|
32
|
+
diffuse: /* glsl */ `
|
|
33
|
+
{
|
|
34
|
+
frsFr = smoothstep(0.0, uFrsEdgeWidth, FrsThreshold() - FrsField(vFrsQ));
|
|
35
|
+
frsCell = fxWorley(vFrsR * (uFrsDensity / uFrsExtent));
|
|
36
|
+
frsSeam = 1.0 - smoothstep(0.0, 0.09, frsCell.y - frsCell.x);
|
|
37
|
+
${frozen}
|
|
38
|
+
vec3 clearIce = uFrsIce * (0.55 + 0.25 * cell.z);
|
|
39
|
+
vec3 crust = vec3(0.93, 0.96, 1.0);
|
|
40
|
+
vec3 ice = mix(clearIce, crust, clamp(seam * 0.9 + 0.2 * fxFbm(vFrsR / uFrsExtent * 18.0), 0.0, 1.0));
|
|
41
|
+
diffuseColor.rgb = mix(diffuseColor.rgb, ice, fr * 0.9);
|
|
42
|
+
}`,
|
|
43
|
+
material: /* glsl */ `
|
|
44
|
+
{
|
|
45
|
+
${frozen}
|
|
46
|
+
roughnessFactor = mix(roughnessFactor, mix(0.12, 0.75, seam), fr);
|
|
47
|
+
metalnessFactor = mix(metalnessFactor, 0.0, fr);
|
|
48
|
+
}`,
|
|
49
|
+
fragment: /* glsl */ `
|
|
50
|
+
{
|
|
51
|
+
${frozen}
|
|
52
|
+
vec3 v = normalize(-vFrsView);
|
|
53
|
+
// each facet has its own crystal plane: some catch the light, most don't
|
|
54
|
+
vec3 g = normalize(fxHash3(floor(vFrsR * (uFrsDensity / uFrsExtent)) + 17.0) - 0.5);
|
|
55
|
+
float glint = pow(max(dot(g, v), 0.0), 90.0) * (1.0 - seam);
|
|
56
|
+
vec3 nv = normalize(cross(dFdx(vFrsView), dFdy(vFrsView)));
|
|
57
|
+
float rim = pow(1.0 - abs(dot(nv, v)), 3.0);
|
|
58
|
+
// the growing front: a thin bright crystalline line
|
|
59
|
+
float front = exp(-abs(frsT - frsF) / 0.012) * step(0.0001, uFrsProgress) * step(uFrsProgress, 0.9999);
|
|
60
|
+
outgoingLight += fr * (vec3(1.0) * glint * 4.0 + uFrsIce * rim * 0.45) + vec3(0.85, 0.95, 1.0) * front * 1.2;
|
|
61
|
+
}`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export default defineOperation({
|
|
65
|
+
value: 'frost',
|
|
66
|
+
label: 'Frost',
|
|
67
|
+
description: 'Spread faceted ice with glinting crystals over the targets — reverting thaws them',
|
|
68
|
+
channel: 'visual',
|
|
69
|
+
multi: true,
|
|
70
|
+
toggles: true,
|
|
71
|
+
usableIn: ['interaction', 'action', 'object'],
|
|
72
|
+
stack: 'surface',
|
|
73
|
+
params: {
|
|
74
|
+
direction: { type: 'select', label: 'Direction', default: 'up', options: DIRECTION_OPTIONS },
|
|
75
|
+
ice: { type: 'color', label: 'Ice', default: '#bfe4ff' },
|
|
76
|
+
density: { type: 'number', label: 'Crystals', default: 14, min: 3, max: 60, step: 1, hint: 'Facets across the object' },
|
|
77
|
+
scale: { type: 'number', label: 'Front pattern', default: 3, min: 0.5, max: 12, step: 0.1 },
|
|
78
|
+
duration: { type: 'number', label: 'Duration', default: 2.6, min: 0.3, max: 12, step: 0.1, unit: 's' },
|
|
79
|
+
},
|
|
80
|
+
apply(target, p, ctx) {
|
|
81
|
+
let st = target.userData[STATE];
|
|
82
|
+
if (!st) {
|
|
83
|
+
const field = createFieldState(target);
|
|
84
|
+
field.edgeWidth.value = 0.05;
|
|
85
|
+
st = { field, ice: { value: new Color() }, density: { value: 14 }, mats: new Set() };
|
|
86
|
+
const own = st;
|
|
87
|
+
const layer = layerFor(own);
|
|
88
|
+
forEachMeshMaterial(target, (mat, mesh) => {
|
|
89
|
+
if (mesh.userData?.__opFxHelper)
|
|
90
|
+
return;
|
|
91
|
+
if (addLayer(mat, KEY, layer))
|
|
92
|
+
own.mats.add(mat);
|
|
93
|
+
});
|
|
94
|
+
target.userData[STATE] = st;
|
|
95
|
+
}
|
|
96
|
+
const s = st;
|
|
97
|
+
setFieldParams(s.field, p, target, ctx);
|
|
98
|
+
s.ice.value.set(String(p.ice));
|
|
99
|
+
s.density.value = Number(p.density);
|
|
100
|
+
return runProgress(target, s.field, 1, { duration: Number(p.duration), ease: 'power1.out', hold: true });
|
|
101
|
+
},
|
|
102
|
+
revert(target, p) {
|
|
103
|
+
const s = target.userData[STATE];
|
|
104
|
+
if (!s)
|
|
105
|
+
return;
|
|
106
|
+
return runProgress(target, s.field, 0, {
|
|
107
|
+
duration: Number(p.duration), ease: 'power1.in',
|
|
108
|
+
onComplete: () => { s.mats.forEach(m => removeLayer(m, KEY)); delete target.userData[STATE]; },
|
|
109
|
+
});
|
|
110
|
+
},
|
|
111
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { InstancedMesh } from 'three';
|
|
2
|
+
import type { BufferGeometry, Object3D } from 'three';
|
|
3
|
+
import { type ShaderLayer } from './shaderLayers';
|
|
4
|
+
export interface FxInstancesOptions {
|
|
5
|
+
geometry: BufferGeometry;
|
|
6
|
+
count: number;
|
|
7
|
+
/** xyz root-local centre per instance */
|
|
8
|
+
positions: Float32Array;
|
|
9
|
+
/** rgb linear per instance */
|
|
10
|
+
colors: Float32Array;
|
|
11
|
+
/** Extra per-instance attributes, e.g. { aVoxBirth: [data, 1] } */
|
|
12
|
+
attributes: Record<string, [Float32Array, number]>;
|
|
13
|
+
layerKey: string;
|
|
14
|
+
layer: ShaderLayer;
|
|
15
|
+
roughness?: number;
|
|
16
|
+
metalness?: number;
|
|
17
|
+
doubleSided?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare function createFxInstances(root: Object3D, o: FxInstancesOptions): InstancedMesh;
|
|
20
|
+
export declare function disposeFxInstances(mesh: InstancedMesh | null | undefined): void;
|
|
21
|
+
//# sourceMappingURL=fxInstances.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fxInstances.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/fxInstances.ts"],"names":[],"mappings":"AAOA,OAAO,EAA+C,aAAa,EAAiC,MAAM,OAAO,CAAC;AAClH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG5D,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,EAAE,YAAY,CAAC;IACxB,8BAA8B;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,kBAAkB,GAAG,aAAa,CA0BtF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,QAMxE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Effect instances — an InstancedMesh attached to a target for the length of an
|
|
3
|
+
// effect (voxels, petals…). A real lit MeshStandardMaterial, so the pieces are
|
|
4
|
+
// shaded and cast shadows like the object itself; their motion is a shader layer
|
|
5
|
+
// (per-instance attributes), so nothing is animated on the CPU.
|
|
6
|
+
// Root-local, never raycasts, never counts in bounds, disposed with the effect.
|
|
7
|
+
// =============================================================================
|
|
8
|
+
import { Color, DoubleSide, InstancedBufferAttribute, InstancedMesh, Matrix4, MeshStandardMaterial } from 'three';
|
|
9
|
+
import { addLayer } from './shaderLayers.js';
|
|
10
|
+
import { hideUntilWarm } from './warmup.js';
|
|
11
|
+
export function createFxInstances(root, o) {
|
|
12
|
+
const geo = o.geometry;
|
|
13
|
+
for (const [name, [data, size]] of Object.entries(o.attributes))
|
|
14
|
+
geo.setAttribute(name, new InstancedBufferAttribute(data, size));
|
|
15
|
+
const mat = new MeshStandardMaterial({
|
|
16
|
+
roughness: o.roughness ?? 0.6, metalness: o.metalness ?? 0.05,
|
|
17
|
+
side: o.doubleSided ? DoubleSide : undefined,
|
|
18
|
+
});
|
|
19
|
+
addLayer(mat, o.layerKey, o.layer, { immediate: true }); // a new material: compiled as a helper
|
|
20
|
+
const mesh = new InstancedMesh(geo, mat, o.count);
|
|
21
|
+
const m = new Matrix4();
|
|
22
|
+
const c = new Color();
|
|
23
|
+
for (let i = 0; i < o.count; i++) {
|
|
24
|
+
m.makeTranslation(o.positions[i * 3], o.positions[i * 3 + 1], o.positions[i * 3 + 2]);
|
|
25
|
+
mesh.setMatrixAt(i, m);
|
|
26
|
+
mesh.setColorAt(i, c.setRGB(o.colors[i * 3], o.colors[i * 3 + 1], o.colors[i * 3 + 2]));
|
|
27
|
+
}
|
|
28
|
+
mesh.instanceMatrix.needsUpdate = true;
|
|
29
|
+
if (mesh.instanceColor)
|
|
30
|
+
mesh.instanceColor.needsUpdate = true;
|
|
31
|
+
mesh.frustumCulled = false;
|
|
32
|
+
mesh.castShadow = true;
|
|
33
|
+
mesh.receiveShadow = true;
|
|
34
|
+
mesh.raycast = () => { };
|
|
35
|
+
mesh.userData.__opFxHelper = true;
|
|
36
|
+
root.add(mesh);
|
|
37
|
+
hideUntilWarm(mesh);
|
|
38
|
+
return mesh;
|
|
39
|
+
}
|
|
40
|
+
export function disposeFxInstances(mesh) {
|
|
41
|
+
if (!mesh)
|
|
42
|
+
return;
|
|
43
|
+
mesh.removeFromParent();
|
|
44
|
+
mesh.geometry.dispose();
|
|
45
|
+
mesh.material.dispose();
|
|
46
|
+
mesh.dispose();
|
|
47
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Points } from 'three';
|
|
2
|
+
import type { Object3D } from 'three';
|
|
3
|
+
import type { SurfaceSample } from './surfaceSample';
|
|
4
|
+
export interface FxPointsOptions {
|
|
5
|
+
uniforms: Record<string, {
|
|
6
|
+
value: unknown;
|
|
7
|
+
}>;
|
|
8
|
+
/** GLSL before main (after uniform/attribute declarations). */
|
|
9
|
+
vertexPars: string;
|
|
10
|
+
/**
|
|
11
|
+
* main() body. Attributes: aP (root-local position), aN (normal), aC (colour),
|
|
12
|
+
* aR (vec4 random). Must write gl_Position, gl_PointSize and vColor (rgb) / vAlpha.
|
|
13
|
+
* `uFxViewH` is the drawing-buffer height, for perspective point sizes.
|
|
14
|
+
*/
|
|
15
|
+
vertexMain: string;
|
|
16
|
+
additive: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function createFxPoints(root: Object3D, sample: SurfaceSample, o: FxPointsOptions): Points;
|
|
19
|
+
export declare function disposeFxPoints(pts: Points | null | undefined): void;
|
|
20
|
+
/** Perspective point size in pixels for a world-size `s` at view depth `z` (GLSL). */
|
|
21
|
+
export declare const GLSL_POINT_SIZE = "\nfloat fxPointPx(float s, vec4 mv) { return s * uFxViewH * projectionMatrix[1][1] * 0.5 / max(-mv.z, 1e-3); }\n";
|
|
22
|
+
//# sourceMappingURL=fxPoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fxPoints.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/fxPoints.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqE,MAAM,EAA2B,MAAM,OAAO,CAAC;AAC3H,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIrD,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7C,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAiBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAoChG;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,QAK7D;AAED,sFAAsF;AACtF,eAAO,MAAM,eAAe,qHAE3B,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Effect particles — a Points cloud attached to a target for the length of a
|
|
3
|
+
// transition. Lives in the target's root-local space (so it moves with it),
|
|
4
|
+
// never raycasts, never counts in bounds, and is disposed with the effect.
|
|
5
|
+
// =============================================================================
|
|
6
|
+
import { AdditiveBlending, BufferAttribute, BufferGeometry, NormalBlending, Points, ShaderMaterial, Vector2 } from 'three';
|
|
7
|
+
import { uniformDecl } from './shaderLayers.js';
|
|
8
|
+
import { hideUntilWarm } from './warmup.js';
|
|
9
|
+
const FRAG = /* glsl */ `
|
|
10
|
+
varying vec3 vColor;
|
|
11
|
+
varying float vAlpha;
|
|
12
|
+
void main() {
|
|
13
|
+
vec2 d = gl_PointCoord - 0.5;
|
|
14
|
+
float r2 = dot(d, d) * 4.0;
|
|
15
|
+
if (r2 > 1.0) discard;
|
|
16
|
+
// soft core + halo
|
|
17
|
+
float a = exp(-r2 * 3.2) * vAlpha;
|
|
18
|
+
if (a < 0.004) discard;
|
|
19
|
+
gl_FragColor = vec4(vColor * a, a);
|
|
20
|
+
#include <tonemapping_fragment>
|
|
21
|
+
#include <colorspace_fragment>
|
|
22
|
+
}`;
|
|
23
|
+
export function createFxPoints(root, sample, o) {
|
|
24
|
+
const geo = new BufferGeometry();
|
|
25
|
+
geo.setAttribute('position', new BufferAttribute(sample.position.slice(0, sample.count * 3), 3));
|
|
26
|
+
geo.setAttribute('aP', new BufferAttribute(sample.position.slice(0, sample.count * 3), 3));
|
|
27
|
+
geo.setAttribute('aN', new BufferAttribute(sample.normal.slice(0, sample.count * 3), 3));
|
|
28
|
+
geo.setAttribute('aC', new BufferAttribute(sample.color.slice(0, sample.count * 3), 3));
|
|
29
|
+
geo.setAttribute('aR', new BufferAttribute(sample.random.slice(0, sample.count * 4), 4));
|
|
30
|
+
const viewH = { value: 1000 };
|
|
31
|
+
const uniforms = { ...o.uniforms, uFxViewH: viewH };
|
|
32
|
+
const decl = Object.keys(uniforms).map(n => uniformDecl(n, uniforms[n].value)).join('\n');
|
|
33
|
+
const mat = new ShaderMaterial({
|
|
34
|
+
uniforms: uniforms,
|
|
35
|
+
vertexShader: `${decl}
|
|
36
|
+
attribute vec3 aP; attribute vec3 aN; attribute vec3 aC; attribute vec4 aR;
|
|
37
|
+
varying vec3 vColor; varying float vAlpha;
|
|
38
|
+
${o.vertexPars}
|
|
39
|
+
void main() {
|
|
40
|
+
${o.vertexMain}
|
|
41
|
+
}`,
|
|
42
|
+
fragmentShader: FRAG,
|
|
43
|
+
transparent: true,
|
|
44
|
+
depthWrite: false,
|
|
45
|
+
// premultiplied: additive glow, or normal "over" for solid colour
|
|
46
|
+
blending: o.additive ? AdditiveBlending : NormalBlending,
|
|
47
|
+
premultipliedAlpha: true,
|
|
48
|
+
});
|
|
49
|
+
const pts = new Points(geo, mat);
|
|
50
|
+
pts.frustumCulled = false;
|
|
51
|
+
pts.raycast = () => { };
|
|
52
|
+
pts.userData.__opFxHelper = true;
|
|
53
|
+
pts.renderOrder = 10;
|
|
54
|
+
const size = new Vector2();
|
|
55
|
+
pts.onBeforeRender = (renderer) => { viewH.value = renderer.getDrawingBufferSize(size).y; };
|
|
56
|
+
root.add(pts);
|
|
57
|
+
hideUntilWarm(pts);
|
|
58
|
+
return pts;
|
|
59
|
+
}
|
|
60
|
+
export function disposeFxPoints(pts) {
|
|
61
|
+
if (!pts)
|
|
62
|
+
return;
|
|
63
|
+
pts.removeFromParent();
|
|
64
|
+
pts.geometry.dispose();
|
|
65
|
+
pts.material.dispose();
|
|
66
|
+
}
|
|
67
|
+
/** Perspective point size in pixels for a world-size `s` at view depth `z` (GLSL). */
|
|
68
|
+
export const GLSL_POINT_SIZE = /* glsl */ `
|
|
69
|
+
float fxPointPx(float s, vec4 mv) { return s * uFxViewH * projectionMatrix[1][1] * 0.5 / max(-mv.z, 1e-3); }
|
|
70
|
+
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glow.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/glow.ts"],"names":[],"mappings":";AAMA,
|
|
1
|
+
{"version":3,"file":"glow.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/glow.ts"],"names":[],"mappings":";AAMA,wBA0CG"}
|
|
@@ -6,9 +6,10 @@ export default defineOperation({
|
|
|
6
6
|
value: 'glow',
|
|
7
7
|
label: 'Glow',
|
|
8
8
|
description: 'Light the targets up with an emissive glow',
|
|
9
|
+
channel: 'visual',
|
|
9
10
|
multi: true,
|
|
10
11
|
toggles: true,
|
|
11
|
-
usableIn: ['interaction', 'action'],
|
|
12
|
+
usableIn: ['interaction', 'action', 'object'],
|
|
12
13
|
params: {
|
|
13
14
|
color: { type: 'color', label: 'Colour', default: '#3380ff' },
|
|
14
15
|
intensity: { type: 'number', label: 'Intensity', default: 3, min: 0, max: 20, step: 0.1 },
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heatCracks.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/heatCracks.ts"],"names":[],"mappings":";AAoFA,wBAoDG"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
// Heat cracks — heat takes hold of the object and you see what it does to it:
|
|
2
|
+
// a network of cracks spreads along the front and glows from inside like cooling
|
|
3
|
+
// lava; the cracks sink into the surface (real relief — vertices along the crack
|
|
4
|
+
// seams are pushed in, the plates between them swell slightly), the plates char
|
|
5
|
+
// and darken from their edges inward, and a few plates run hot as a whole. The
|
|
6
|
+
// glow keeps breathing slowly while the effect is on. A state, not an exit —
|
|
7
|
+
// nothing dissolves; reverting cools the object and the cracks close.
|
|
8
|
+
import { gsap } from 'gsap';
|
|
9
|
+
import { Color } from 'three';
|
|
10
|
+
import { defineOperation } from '../types.js';
|
|
11
|
+
import { GLSL_WORLEY, addLayer, forEachMeshMaterial, removeLayer } from './shaderLayers.js';
|
|
12
|
+
import { DIRECTION_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, runProgress, setFieldParams, syncRoot } from './transitionField.js';
|
|
13
|
+
const P = 'Hot';
|
|
14
|
+
const KEY = 'heatCracks';
|
|
15
|
+
const STATE = '__opHeatCracks';
|
|
16
|
+
const CRACKS = /* glsl */ `
|
|
17
|
+
// how far the cracking has got at a point, and where the seams are
|
|
18
|
+
float hotCracked(vec3 q) { return smoothstep(0.0, uHotEdgeWidth, HotThreshold() - HotField(q)); }
|
|
19
|
+
vec3 hotCells(vec3 r) { return fxWorley(r * (uHotDensity / uHotExtent)); }
|
|
20
|
+
`;
|
|
21
|
+
function layerFor(st) {
|
|
22
|
+
return {
|
|
23
|
+
uniforms: { ...fieldUniforms(P, st.field), uHotHeat: st.heat, uHotDensity: st.density, uHotDepth: st.depth },
|
|
24
|
+
common: `varying vec3 vHotQ;\nvarying vec3 vHotR;\n${fieldGlsl(P)}\n${GLSL_WORLEY}\n${CRACKS}`,
|
|
25
|
+
fragmentPars: 'vec3 hotCell = vec3(1.0); float hotCr = 0.0; bool hotDone = false;',
|
|
26
|
+
vertex: /* glsl */ `
|
|
27
|
+
{
|
|
28
|
+
vec3 r = (uHotRootInv * modelMatrix * vec4(transformed, 1.0)).xyz;
|
|
29
|
+
vec3 q = HotNorm(r);
|
|
30
|
+
float cracked = hotCracked(q);
|
|
31
|
+
vec3 cell = hotCells(r);
|
|
32
|
+
float e = cell.y - cell.x;
|
|
33
|
+
// seams sink, plates swell a touch — relief that catches the light
|
|
34
|
+
float relief = -(1.0 - smoothstep(0.0, 0.12, e)) + 0.25 * smoothstep(0.12, 0.5, e);
|
|
35
|
+
transformed += normal * (relief * cracked * uHotDepth * 0.012 * uHotExtent);
|
|
36
|
+
vHotR = r;
|
|
37
|
+
vHotQ = q;
|
|
38
|
+
}`,
|
|
39
|
+
diffuse: /* glsl */ `
|
|
40
|
+
{
|
|
41
|
+
// computed once here, shared with the lighting pass below
|
|
42
|
+
hotCr = hotCracked(vHotQ);
|
|
43
|
+
hotCell = hotCells(vHotR);
|
|
44
|
+
hotDone = true;
|
|
45
|
+
float cracked = hotCr;
|
|
46
|
+
vec3 cell = hotCell;
|
|
47
|
+
float e = cell.y - cell.x;
|
|
48
|
+
// plates char from their edges inward as the heat soaks in
|
|
49
|
+
float soak = cracked * clamp(uHotProgress * 1.2, 0.0, 1.0);
|
|
50
|
+
float charEdge = 1.0 - smoothstep(0.0, 0.35 * soak + 0.05, e);
|
|
51
|
+
vec3 charred = vec3(0.06, 0.05, 0.045);
|
|
52
|
+
diffuseColor.rgb = mix(diffuseColor.rgb, charred, cracked * (0.35 + 0.6 * charEdge));
|
|
53
|
+
}`,
|
|
54
|
+
material: /* glsl */ `
|
|
55
|
+
{
|
|
56
|
+
float cracked = hotDone ? hotCr : hotCracked(vHotQ);
|
|
57
|
+
roughnessFactor = mix(roughnessFactor, 0.9, cracked);
|
|
58
|
+
metalnessFactor = mix(metalnessFactor, 0.0, cracked);
|
|
59
|
+
}`,
|
|
60
|
+
fragment: /* glsl */ `
|
|
61
|
+
{
|
|
62
|
+
if (!hotDone) { hotCr = hotCracked(vHotQ); hotCell = hotCells(vHotR); }
|
|
63
|
+
float cracked = hotCr;
|
|
64
|
+
vec3 cell = hotCell;
|
|
65
|
+
float e = cell.y - cell.x;
|
|
66
|
+
float cw = 0.05 + 0.04 * uHotProgress; // cracks widen as it heats
|
|
67
|
+
float crack = (1.0 - smoothstep(0.0, cw, e)) * cracked;
|
|
68
|
+
float breathe = 0.72 + 0.28 * sin(uHotTime * 1.1 + cell.z * 6.2832);
|
|
69
|
+
// a few whole plates run hot
|
|
70
|
+
float hotPlate = step(0.8, cell.z) * cracked * 0.35 * breathe;
|
|
71
|
+
float T = clamp(crack * breathe + hotPlate, 0.0, 1.0);
|
|
72
|
+
vec3 bb = mix(uHotHeat * vec3(0.35, 0.05, 0.0), uHotHeat, smoothstep(0.0, 0.6, T));
|
|
73
|
+
bb = mix(bb, vec3(1.0, 0.9, 0.65), smoothstep(0.75, 1.0, T));
|
|
74
|
+
float front = exp(-abs(HotThreshold() - HotField(vHotQ)) / 0.02) * step(0.0001, uHotProgress) * step(uHotProgress, 0.9999);
|
|
75
|
+
outgoingLight += bb * T * 3.0 + uHotHeat * front * 0.8;
|
|
76
|
+
}`,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export default defineOperation({
|
|
80
|
+
value: 'heatCracks',
|
|
81
|
+
label: 'Heat cracks',
|
|
82
|
+
description: 'Crack the targets with glowing lava seams that sink into the surface and char it — reverting cools them',
|
|
83
|
+
channel: 'visual',
|
|
84
|
+
multi: true,
|
|
85
|
+
toggles: true,
|
|
86
|
+
usableIn: ['interaction', 'action', 'object'],
|
|
87
|
+
params: {
|
|
88
|
+
direction: { type: 'select', label: 'Direction', default: 'up', options: DIRECTION_OPTIONS },
|
|
89
|
+
heat: { type: 'color', label: 'Heat', default: '#ff5a14' },
|
|
90
|
+
density: { type: 'number', label: 'Cracks', default: 9, min: 2, max: 40, step: 1, hint: 'Crack cells across the object' },
|
|
91
|
+
depth: { type: 'number', label: 'Crack depth', default: 1, min: 0, max: 4, step: 0.05, unit: '×' },
|
|
92
|
+
scale: { type: 'number', label: 'Front pattern', default: 2.5, min: 0.5, max: 12, step: 0.1 },
|
|
93
|
+
duration: { type: 'number', label: 'Duration', default: 3, min: 0.3, max: 12, step: 0.1, unit: 's' },
|
|
94
|
+
},
|
|
95
|
+
apply(target, p, ctx) {
|
|
96
|
+
let st = target.userData[STATE];
|
|
97
|
+
if (!st) {
|
|
98
|
+
const field = createFieldState(target);
|
|
99
|
+
field.edgeWidth.value = 0.06;
|
|
100
|
+
const own = { field, heat: { value: new Color() }, density: { value: 9 }, depth: { value: 1 }, mats: new Set() };
|
|
101
|
+
// the glow keeps breathing while the object stays cracked
|
|
102
|
+
own.tick = () => { own.field.time.value += gsap.ticker.deltaRatio() / 60; syncRoot(target, own.field); };
|
|
103
|
+
const layer = layerFor(own);
|
|
104
|
+
forEachMeshMaterial(target, (mat, mesh) => {
|
|
105
|
+
if (mesh.userData?.__opFxHelper)
|
|
106
|
+
return;
|
|
107
|
+
if (addLayer(mat, KEY, layer))
|
|
108
|
+
own.mats.add(mat);
|
|
109
|
+
});
|
|
110
|
+
gsap.ticker.add(own.tick);
|
|
111
|
+
st = own;
|
|
112
|
+
target.userData[STATE] = st;
|
|
113
|
+
}
|
|
114
|
+
const s = st;
|
|
115
|
+
setFieldParams(s.field, p, target, ctx);
|
|
116
|
+
s.heat.value.set(String(p.heat));
|
|
117
|
+
s.density.value = Number(p.density);
|
|
118
|
+
s.depth.value = Number(p.depth);
|
|
119
|
+
return runProgress(target, s.field, 1, { duration: Number(p.duration), ease: 'power1.out', clock: false });
|
|
120
|
+
},
|
|
121
|
+
revert(target, p) {
|
|
122
|
+
const s = target.userData[STATE];
|
|
123
|
+
if (!s)
|
|
124
|
+
return;
|
|
125
|
+
return runProgress(target, s.field, 0, {
|
|
126
|
+
duration: Number(p.duration), ease: 'power1.in', clock: false,
|
|
127
|
+
onComplete: () => {
|
|
128
|
+
gsap.ticker.remove(s.tick);
|
|
129
|
+
s.mats.forEach(m => removeLayer(m, KEY));
|
|
130
|
+
delete target.userData[STATE];
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
},
|
|
134
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hologram.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/hologram.ts"],"names":[],"mappings":";AAgBA,wBAsFG"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// Hologram scan — a scan plane sweeps the target and turns the solid surface into
|
|
2
|
+
// a hologram: glowing grid lines in the object's own space, a Fresnel rim and
|
|
3
|
+
// drifting scanlines, everything else cut away (no transparency, so it sorts
|
|
4
|
+
// cleanly). A second plane follows and switches the hologram off.
|
|
5
|
+
// Reverting scans it back in: hologram first, then solid.
|
|
6
|
+
import { defineOperation } from '../types.js';
|
|
7
|
+
import { addLayer, forEachMeshMaterial, removeLayer } from './shaderLayers.js';
|
|
8
|
+
import { SWEEP_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, runProgress, setFieldParams } from './transitionField.js';
|
|
9
|
+
import { Color } from 'three';
|
|
10
|
+
const P = 'Holo';
|
|
11
|
+
const KEY = 'hologram';
|
|
12
|
+
const STATE = '__opHologram';
|
|
13
|
+
export default defineOperation({
|
|
14
|
+
value: 'hologram',
|
|
15
|
+
label: 'Hologram scan',
|
|
16
|
+
description: 'A scan plane turns the targets into a glowing hologram, then switches it off — reverting scans them back in',
|
|
17
|
+
channel: 'visual',
|
|
18
|
+
multi: true,
|
|
19
|
+
toggles: true,
|
|
20
|
+
usableIn: ['interaction', 'action', 'object'],
|
|
21
|
+
objectParams: { disappear: false },
|
|
22
|
+
params: {
|
|
23
|
+
direction: { type: 'select', label: 'Scan', default: 'down', options: SWEEP_OPTIONS },
|
|
24
|
+
color: { type: 'color', label: 'Colour', default: '#3fd4ff' },
|
|
25
|
+
density: { type: 'number', label: 'Grid', default: 14, min: 2, max: 60, step: 1, hint: 'Grid lines across the object' },
|
|
26
|
+
disappear: { type: 'boolean', label: 'Disappear', default: true, hint: 'Off: the object stays as a hologram after the scan' },
|
|
27
|
+
hold: { type: 'number', label: 'Hologram band', default: 0.45, min: 0.1, max: 1, step: 0.05, hint: 'How much of the object is hologram at once' },
|
|
28
|
+
duration: { type: 'number', label: 'Duration', default: 2.4, min: 0.3, max: 12, step: 0.1, unit: 's' },
|
|
29
|
+
},
|
|
30
|
+
apply(target, p, ctx) {
|
|
31
|
+
let st = target.userData[STATE];
|
|
32
|
+
if (!st) {
|
|
33
|
+
const field = createFieldState(target);
|
|
34
|
+
st = { field, color: { value: new Color() }, density: { value: 14 }, gap: { value: 0.45 }, keep: { value: 0 }, mats: new Set() };
|
|
35
|
+
const own = st;
|
|
36
|
+
const layer = {
|
|
37
|
+
uniforms: { ...fieldUniforms(P, field), uHoloColor: st.color, uHoloDensity: st.density, uHoloGap: st.gap, uHoloKeep: st.keep },
|
|
38
|
+
common: `varying vec3 vHoloR;\nvarying vec3 vHoloView;\n${fieldGlsl(P)}`,
|
|
39
|
+
vertex: /* glsl */ `
|
|
40
|
+
vHoloR = (uHoloRootInv * modelMatrix * vec4(transformed, 1.0)).xyz;
|
|
41
|
+
vHoloView = (modelViewMatrix * vec4(transformed, 1.0)).xyz;`,
|
|
42
|
+
fragment: /* glsl */ `
|
|
43
|
+
{
|
|
44
|
+
vec3 q = HoloNorm(vHoloR);
|
|
45
|
+
// scan coordinate: 0 where the scan starts, 1 where it ends
|
|
46
|
+
float s = HoloAlong(q);
|
|
47
|
+
float band = 0.02;
|
|
48
|
+
float fa = mix(-band, 1.0 + uHoloGap + band, clamp(uHoloProgress, 0.0, 1.0)); // solid → hologram
|
|
49
|
+
// hologram → gone (never, when the object should stay as a hologram)
|
|
50
|
+
float fb = uHoloKeep > 0.5 ? -1.0 : fa - uHoloGap;
|
|
51
|
+
if (s < fb) discard;
|
|
52
|
+
if (s < fa) {
|
|
53
|
+
// grid in root-local units, square cells, anti-aliased
|
|
54
|
+
vec3 cell = vHoloR * (uHoloDensity / uHoloExtent);
|
|
55
|
+
vec3 g = abs(fract(cell - 0.5) - 0.5) / max(fwidth(cell), vec3(1e-4));
|
|
56
|
+
float line = 1.0 - clamp(min(min(g.x, g.y), g.z), 0.0, 1.0);
|
|
57
|
+
// facing ratio from screen-space derivatives: works on lit and unlit materials
|
|
58
|
+
vec3 nv = normalize(cross(dFdx(vHoloView), dFdy(vHoloView)));
|
|
59
|
+
float fres = pow(1.0 - abs(dot(nv, normalize(-vHoloView))), 2.0);
|
|
60
|
+
float scan = 0.5 + 0.5 * sin(vHoloR.y / uHoloExtent * 180.0 - uHoloTime * 5.0);
|
|
61
|
+
float I = line * 0.9 + fres * 1.1 + scan * 0.12;
|
|
62
|
+
// hot edges at both planes
|
|
63
|
+
I += exp(-abs(s - fa) / 0.012) * 2.5 + exp(-abs(s - fb) / 0.01) * 1.5;
|
|
64
|
+
if (I < 0.32) discard;
|
|
65
|
+
outgoingLight = uHoloColor * I * 1.6;
|
|
66
|
+
} else {
|
|
67
|
+
// the solid side gets a faint pre-glow just ahead of the plane
|
|
68
|
+
outgoingLight += uHoloColor * exp(-(s - fa) / 0.03) * 0.6;
|
|
69
|
+
}
|
|
70
|
+
}`,
|
|
71
|
+
};
|
|
72
|
+
forEachMeshMaterial(target, (mat, mesh) => {
|
|
73
|
+
if (mesh.userData?.__opFxHelper)
|
|
74
|
+
return;
|
|
75
|
+
if (addLayer(mat, KEY, layer))
|
|
76
|
+
own.mats.add(mat);
|
|
77
|
+
});
|
|
78
|
+
target.userData[STATE] = st;
|
|
79
|
+
}
|
|
80
|
+
const s = st;
|
|
81
|
+
setFieldParams(s.field, { direction: p.direction }, target, ctx);
|
|
82
|
+
s.color.value.set(String(p.color));
|
|
83
|
+
s.density.value = Number(p.density);
|
|
84
|
+
s.gap.value = Number(p.hold);
|
|
85
|
+
const keep = p.disappear === false;
|
|
86
|
+
s.keep.value = keep ? 1 : 0;
|
|
87
|
+
return runProgress(target, s.field, 1, {
|
|
88
|
+
duration: Number(p.duration), ease: 'power1.inOut', hold: keep,
|
|
89
|
+
onComplete: () => { if (!keep)
|
|
90
|
+
setMeshesHidden(target, true); },
|
|
91
|
+
});
|
|
92
|
+
},
|
|
93
|
+
revert(target, p) {
|
|
94
|
+
const s = target.userData[STATE];
|
|
95
|
+
if (!s)
|
|
96
|
+
return;
|
|
97
|
+
setMeshesHidden(target, false);
|
|
98
|
+
return runProgress(target, s.field, 0, {
|
|
99
|
+
duration: Number(p.duration), ease: 'power1.inOut',
|
|
100
|
+
onComplete: () => { s.mats.forEach(m => removeLayer(m, KEY)); delete target.userData[STATE]; },
|
|
101
|
+
});
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
function setMeshesHidden(target, hidden) {
|
|
105
|
+
target.traverse((c) => {
|
|
106
|
+
if (!c.isMesh || c.userData?.__opFxHelper)
|
|
107
|
+
return;
|
|
108
|
+
if (hidden) {
|
|
109
|
+
if (c.userData.__opHoloVis === undefined)
|
|
110
|
+
c.userData.__opHoloVis = c.visible;
|
|
111
|
+
c.visible = false;
|
|
112
|
+
}
|
|
113
|
+
else if (c.userData.__opHoloVis !== undefined) {
|
|
114
|
+
c.visible = c.userData.__opHoloVis;
|
|
115
|
+
delete c.userData.__opHoloVis;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inkBloom.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/inkBloom.ts"],"names":[],"mappings":";AAmDA,wBA4GG"}
|