@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
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import type { ThreeElements } from '@react-three/fiber';
|
|
2
2
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
3
3
|
import type { VoronoiGridConfig } from '../types/gridConfigs';
|
|
4
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
4
5
|
export interface VoronoiGridProps extends ObjectReadyProps {
|
|
5
6
|
config?: VoronoiGridConfig;
|
|
6
7
|
groupProps?: ThreeElements['group'];
|
|
8
|
+
/** Scene object id: the live-edit handle is found by it. */
|
|
9
|
+
id?: string;
|
|
10
|
+
/** Keyframes on this grid's config knobs (animations.grid.animations). */
|
|
11
|
+
keyframes?: AnimationOptions[];
|
|
12
|
+
/** Pointer bindings on this grid's config knobs (mouseMove.grid). */
|
|
13
|
+
mouseMove?: MouseMoveDomain;
|
|
7
14
|
}
|
|
8
15
|
/** VoronoiGridConfig — the single source of truth for a Voronoi grid instance. */
|
|
9
16
|
export declare const defaultVoronoiGridConfig: VoronoiGridConfig;
|
|
10
|
-
|
|
11
|
-
* An irregular cellular lattice on a shader plane.
|
|
12
|
-
*
|
|
13
|
-
* Seeds drift over time, so the whole lattice slowly morphs rather than
|
|
14
|
-
* animating in place. `jitter` runs from a regular square lattice (0) to fully
|
|
15
|
-
* scattered (1); `drift` sets how far the seeds wander. `sectionWidth` draws
|
|
16
|
-
* the cell nuclei, `sectionSize` groups cells into clusters that share an
|
|
17
|
-
* accent colour. With `displace > 0` the surface breaks into irregular plates.
|
|
18
|
-
*/
|
|
19
|
-
export declare function VoronoiGrid({ config, groupProps, onObjectReady, onObjectDispose }: VoronoiGridProps): import("react").JSX.Element;
|
|
17
|
+
export declare function VoronoiGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: VoronoiGridProps): import("react").JSX.Element;
|
|
20
18
|
export default VoronoiGrid;
|
|
21
19
|
//# sourceMappingURL=VoronoiGrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoronoiGrid.d.ts","sourceRoot":"","sources":["../../src/components/VoronoiGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"VoronoiGrid.d.ts","sourceRoot":"","sources":["../../src/components/VoronoiGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACtD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAKD,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,EAAE,iBA2BtC,CAAC;AAoBF,wBAAgB,WAAW,CAAC,EAAE,MAAiC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,gBAAgB,+BA6CxJ;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo, useRef } from 'react';
|
|
2
|
+
import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import { useObjectReady } from '../hooks/useObjectReady.js';
|
|
5
5
|
import { useGridSurface } from '../hooks/useGridSurface.js';
|
|
6
|
-
import {
|
|
6
|
+
import { useConfigDriver } from '../hooks/useConfigDriver.js';
|
|
7
|
+
import { withConfigDefaults } from '../utils/configAnimations.js';
|
|
8
|
+
import { applyGridConfig, GRID_STRUCTURAL } from '../utils/gridConfig.js';
|
|
9
|
+
import { VoronoiGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
7
10
|
// Side-effect import registers <voronoiGridMaterial> via extend().
|
|
8
11
|
void VoronoiGridMaterial;
|
|
9
12
|
/** VoronoiGridConfig — the single source of truth for a Voronoi grid instance. */
|
|
@@ -44,24 +47,39 @@ export const defaultVoronoiGridConfig = {
|
|
|
44
47
|
* the cell nuclei, `sectionSize` groups cells into clusters that share an
|
|
45
48
|
* accent colour. With `displace > 0` the surface breaks into irregular plates.
|
|
46
49
|
*/
|
|
47
|
-
|
|
50
|
+
/** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
|
|
51
|
+
const VARIANT = ['jitter', 'drift'];
|
|
52
|
+
/** No computed uniforms: every knob maps straight to its u_<key>. */
|
|
53
|
+
const DERIVE = {};
|
|
54
|
+
/** Knobs that rebuild the plane or pick a mode: they change on commit, never through the live path. */
|
|
55
|
+
const STRUCTURAL = [...GRID_STRUCTURAL];
|
|
56
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
|
|
57
|
+
const ANIMATABLE = new Set((GRIDS_ANIMATABLE.voronoiGrid ?? []).map((p) => p.value));
|
|
58
|
+
export function VoronoiGrid({ config = defaultVoronoiGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
|
|
48
59
|
const matRef = useRef(null);
|
|
49
60
|
const rootRef = useRef(null);
|
|
50
61
|
const meshRef = useRef(null);
|
|
51
62
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
52
|
-
|
|
63
|
+
// The committed config over this grid's defaults: every knob has a value to render
|
|
64
|
+
// and for a keyframe or pointer binding to start from.
|
|
65
|
+
const base = useMemo(() => withConfigDefaults(defaultVoronoiGridConfig, config), [config]);
|
|
66
|
+
const { cellSize, size, segments, flat, displace, followMouse, reveal, revealDuration } = base;
|
|
53
67
|
const segs = segments ?? (displace > 0
|
|
54
68
|
? Math.min(384, Math.max(96, Math.ceil(size / Math.max(cellSize, 1e-4)) * 6))
|
|
55
69
|
: 1);
|
|
56
|
-
const fade = fadeDistance ?? size * 0.5;
|
|
57
|
-
const colors = useMemo(() => ({
|
|
58
|
-
line: new THREE.Color(lineColor),
|
|
59
|
-
section: new THREE.Color(sectionColor),
|
|
60
|
-
cell: new THREE.Color(cellColor),
|
|
61
|
-
glow: new THREE.Color(glowColor),
|
|
62
|
-
bg: new THREE.Color(bgColor),
|
|
63
|
-
}), [lineColor, sectionColor, cellColor, glowColor, bgColor]);
|
|
64
70
|
useGridSurface(matRef, meshRef, { followMouse, reveal, revealDuration });
|
|
65
|
-
|
|
71
|
+
// One push point for every uniform the config owns: the committed config when the
|
|
72
|
+
// material mounts or the config commits, the merged one while anything overrides it.
|
|
73
|
+
const baseRef = useRef(base);
|
|
74
|
+
baseRef.current = base;
|
|
75
|
+
const setMaterial = useCallback((m) => {
|
|
76
|
+
matRef.current = m;
|
|
77
|
+
if (m)
|
|
78
|
+
applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
|
|
79
|
+
}, []);
|
|
80
|
+
useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
|
|
81
|
+
const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
|
|
82
|
+
useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
83
|
+
return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: flat ? [-Math.PI / 2, 0, 0] : [0, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("voronoiGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, VoronoiGridMaterial.key)] }) }));
|
|
66
84
|
}
|
|
67
85
|
export default VoronoiGrid;
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import type { ThreeElements } from '@react-three/fiber';
|
|
2
2
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
3
3
|
import type { WallpaperGridConfig } from '../types/gridConfigs';
|
|
4
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
4
5
|
export interface WallpaperGridProps extends ObjectReadyProps {
|
|
5
6
|
config?: WallpaperGridConfig;
|
|
6
7
|
groupProps?: ThreeElements['group'];
|
|
8
|
+
/** Scene object id: the live-edit handle is found by it. */
|
|
9
|
+
id?: string;
|
|
10
|
+
/** Keyframes on this grid's config knobs (animations.grid.animations). */
|
|
11
|
+
keyframes?: AnimationOptions[];
|
|
12
|
+
/** Pointer bindings on this grid's config knobs (mouseMove.grid). */
|
|
13
|
+
mouseMove?: MouseMoveDomain;
|
|
7
14
|
}
|
|
8
15
|
/** WallpaperGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
|
|
9
16
|
export declare const defaultWallpaperGridConfig: WallpaperGridConfig;
|
|
10
17
|
/**
|
|
11
18
|
* Wallpaper-group kaleidoscope: a drifting lattice-periodic Fourier motif summed over the coset representatives of one of the 17 plane crystallographic groups. The runtime builds the group tables and crossfades from group to group.
|
|
12
19
|
*/
|
|
13
|
-
export declare function WallpaperGrid({ config, groupProps, onObjectReady, onObjectDispose }: WallpaperGridProps): import("react").JSX.Element;
|
|
20
|
+
export declare function WallpaperGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: WallpaperGridProps): import("react").JSX.Element;
|
|
14
21
|
export default WallpaperGrid;
|
|
15
22
|
//# sourceMappingURL=WallpaperGrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WallpaperGrid.d.ts","sourceRoot":"","sources":["../../src/components/WallpaperGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"WallpaperGrid.d.ts","sourceRoot":"","sources":["../../src/components/WallpaperGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IACxD,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAKD,gGAAgG;AAChG,eAAO,MAAM,0BAA0B,EAAE,mBA6BxC,CAAC;AAkQF;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,MAAmC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,kBAAkB,+BA0D9J;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useMemo, useRef } from 'react';
|
|
2
|
+
import { useEffect, useMemo, useRef, useCallback, useLayoutEffect } from 'react';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import { useFrame } from '@react-three/fiber';
|
|
5
5
|
import { useObjectReady } from '../hooks/useObjectReady.js';
|
|
6
6
|
import { useGridSurface } from '../hooks/useGridSurface.js';
|
|
7
|
-
import {
|
|
7
|
+
import { useConfigDriver } from '../hooks/useConfigDriver.js';
|
|
8
|
+
import { withConfigDefaults } from '../utils/configAnimations.js';
|
|
9
|
+
import { applyGridConfig, GRID_STRUCTURAL } from '../utils/gridConfig.js';
|
|
10
|
+
import { WallpaperGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
8
11
|
// Side-effect import registers <wallpaperGridMaterial> via extend().
|
|
9
12
|
void WallpaperGridMaterial;
|
|
10
13
|
/** WallpaperGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
|
|
@@ -38,124 +41,6 @@ export const defaultWallpaperGridConfig = {
|
|
|
38
41
|
reveal: 1,
|
|
39
42
|
revealDuration: 0,
|
|
40
43
|
};
|
|
41
|
-
const gridFragHeader = /* glsl */ `
|
|
42
|
-
precision highp float;
|
|
43
|
-
|
|
44
|
-
uniform float u_time;
|
|
45
|
-
uniform float u_cellSize;
|
|
46
|
-
uniform float u_lineWidth;
|
|
47
|
-
uniform float u_sectionSize;
|
|
48
|
-
uniform float u_sectionWidth;
|
|
49
|
-
uniform vec3 u_lineColor;
|
|
50
|
-
uniform vec3 u_sectionColor;
|
|
51
|
-
uniform vec3 u_cellColor;
|
|
52
|
-
uniform vec3 u_glowColor;
|
|
53
|
-
uniform vec3 u_bgColor;
|
|
54
|
-
uniform float u_bgOpacity;
|
|
55
|
-
uniform float u_lineMode;
|
|
56
|
-
uniform float u_cellMode;
|
|
57
|
-
uniform float u_animSpeed;
|
|
58
|
-
uniform float u_animScale;
|
|
59
|
-
uniform float u_animIntensity;
|
|
60
|
-
uniform float u_fadeDistance;
|
|
61
|
-
uniform float u_fadeStrength;
|
|
62
|
-
uniform vec2 u_focus;
|
|
63
|
-
uniform float u_reveal;
|
|
64
|
-
|
|
65
|
-
varying vec2 vGridPos;
|
|
66
|
-
|
|
67
|
-
float lineAt(float c, float width, float fp){
|
|
68
|
-
float d = abs(fract(c - 0.5) - 0.5);
|
|
69
|
-
return 1.0 - clamp(d / max(fp * max(width, 0.05), 1e-6), 0.0, 1.0);
|
|
70
|
-
}
|
|
71
|
-
`;
|
|
72
|
-
const gridCommon = /* glsl */ `
|
|
73
|
-
const float PI = 3.14159265359;
|
|
74
|
-
const float TAU = 6.28318530718;
|
|
75
|
-
|
|
76
|
-
float hash21(vec2 p){
|
|
77
|
-
p = fract(p * vec2(123.34, 456.21));
|
|
78
|
-
p += dot(p, p + 45.32);
|
|
79
|
-
return fract(p.x * p.y);
|
|
80
|
-
}
|
|
81
|
-
`;
|
|
82
|
-
const gridTail = /* glsl */ `
|
|
83
|
-
// ---- line animation --------------------------------------------------
|
|
84
|
-
float lineAnim = 1.0;
|
|
85
|
-
if (u_lineMode > 0.5){
|
|
86
|
-
if (u_lineMode < 1.5){
|
|
87
|
-
lineAnim = 0.5 + 0.5 * sin(cellDist * u_animScale - t);
|
|
88
|
-
} else if (u_lineMode < 2.5){
|
|
89
|
-
lineAnim = 0.5 + 0.5 * sin(flowCoord * u_animScale - t);
|
|
90
|
-
} else if (u_lineMode < 3.5){
|
|
91
|
-
float s = fract(scanCoord * 0.05 * u_animScale - t * 0.15);
|
|
92
|
-
lineAnim = 0.25 + smoothstep(0.0, 0.15, s) * (1.0 - smoothstep(0.15, 0.35, s));
|
|
93
|
-
} else {
|
|
94
|
-
lineAnim = 0.5 + 0.5 * sin(t);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
lineAnim = mix(1.0, lineAnim, u_animIntensity);
|
|
98
|
-
|
|
99
|
-
// ---- cell fill -------------------------------------------------------
|
|
100
|
-
float cell = 0.0;
|
|
101
|
-
if (u_cellMode > 0.5){
|
|
102
|
-
if (u_cellMode < 1.5){
|
|
103
|
-
cell = 0.5 + 0.5 * sin(flowCoord * 0.5 * u_animScale - t);
|
|
104
|
-
} else if (u_cellMode < 2.5){
|
|
105
|
-
cell = 0.5 + 0.5 * sin(t * (0.6 + cellH) + cellH * TAU);
|
|
106
|
-
} else if (u_cellMode < 3.5){
|
|
107
|
-
cell = smoothstep(0.6, 1.0, sin(cellDist * u_animScale - t));
|
|
108
|
-
} else {
|
|
109
|
-
cell = step(0.5, cellH) * (0.5 + 0.5 * sin(t));
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
cell *= u_animIntensity * edgeKeep;
|
|
113
|
-
|
|
114
|
-
float tone = step(0.55, cellH);
|
|
115
|
-
|
|
116
|
-
vec3 col = u_bgColor * u_bgOpacity;
|
|
117
|
-
float a = u_bgOpacity;
|
|
118
|
-
|
|
119
|
-
col += mix(u_cellColor, u_cellColor * 2.2, tone) * cell;
|
|
120
|
-
a = max(a, cell * 0.9);
|
|
121
|
-
float linesI = lines * lineAnim;
|
|
122
|
-
col += u_lineColor * linesI; a = max(a, linesI);
|
|
123
|
-
float accentI = accent * lineAnim;
|
|
124
|
-
col += u_sectionColor * accentI; a = max(a, accentI);
|
|
125
|
-
col += u_glowColor * (linesI * 0.2 + cell * 0.35) * u_animIntensity;
|
|
126
|
-
|
|
127
|
-
col = col * regionMask + extraCol;
|
|
128
|
-
a = max(a * regionMask, extraA);
|
|
129
|
-
|
|
130
|
-
float fade = 1.0 - smoothstep(1.0 - u_fadeStrength, 1.0, fadeR);
|
|
131
|
-
col *= fade;
|
|
132
|
-
a *= fade;
|
|
133
|
-
|
|
134
|
-
// ---- reveal ----------------------------------------------------------
|
|
135
|
-
// The build boundary sweeps outward from the focus point with a bright
|
|
136
|
-
// leading edge, so the grid reads as assembling itself.
|
|
137
|
-
if (u_reveal < 0.999){
|
|
138
|
-
float rd = length(vGridPos - u_focus) / max(u_fadeDistance, 1e-4);
|
|
139
|
-
float edge = u_reveal * 1.1;
|
|
140
|
-
float mask = 1.0 - smoothstep(edge - 0.05, edge, rd);
|
|
141
|
-
float front = mask * smoothstep(edge - 0.22, edge - 0.05, rd);
|
|
142
|
-
col = col * mask + u_glowColor * front * (a * 1.8 + 0.08);
|
|
143
|
-
a = max(a * mask, front * 0.10);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
if (a < 0.002) discard;
|
|
147
|
-
gl_FragColor = vec4(col, a);
|
|
148
|
-
}
|
|
149
|
-
`;
|
|
150
|
-
const gridVertexHead = /* glsl */ `
|
|
151
|
-
uniform float u_time;
|
|
152
|
-
uniform float u_cellSize;
|
|
153
|
-
uniform float u_displace;
|
|
154
|
-
uniform float u_animSpeed;
|
|
155
|
-
uniform float u_animScale;
|
|
156
|
-
|
|
157
|
-
varying vec2 vGridPos;
|
|
158
|
-
`;
|
|
159
44
|
// ---------------------------------------------------------------------------
|
|
160
45
|
// The 17 wallpaper groups (Farris, "Creating Symmetry").
|
|
161
46
|
// Each group is listed by its ITA general positions in lattice coordinates:
|
|
@@ -363,29 +248,6 @@ function wallpaperRms(tab, wave, sk, sre, sim) {
|
|
|
363
248
|
sum += sre[s] * sre[s] + sim[s] * sim[s];
|
|
364
249
|
return Math.sqrt(sum * 0.5);
|
|
365
250
|
}
|
|
366
|
-
function createExtraUniforms() {
|
|
367
|
-
return {
|
|
368
|
-
u_wave: { value: new Float32Array(12) },
|
|
369
|
-
u_RA: { value: new Float32Array(48) },
|
|
370
|
-
u_TA: { value: new Float32Array(24) },
|
|
371
|
-
u_countA: { value: 1 },
|
|
372
|
-
u_basisA: { value: new Float32Array([1, 0, 0, 1]) },
|
|
373
|
-
u_normA: { value: 1 },
|
|
374
|
-
u_axA: { value: new Float32Array(24) },
|
|
375
|
-
u_axKA: { value: new Float32Array(18) },
|
|
376
|
-
u_axNA: { value: 0 },
|
|
377
|
-
u_RB: { value: new Float32Array(48) },
|
|
378
|
-
u_TB: { value: new Float32Array(24) },
|
|
379
|
-
u_countB: { value: 1 },
|
|
380
|
-
u_basisB: { value: new Float32Array([1, 0, 0, 1]) },
|
|
381
|
-
u_normB: { value: 1 },
|
|
382
|
-
u_axB: { value: new Float32Array(24) },
|
|
383
|
-
u_axKB: { value: new Float32Array(18) },
|
|
384
|
-
u_axNB: { value: 0 },
|
|
385
|
-
u_mix: { value: 0 },
|
|
386
|
-
u_mixGain: { value: 1 },
|
|
387
|
-
};
|
|
388
|
-
}
|
|
389
251
|
function createRuntime(u, renderer, c) {
|
|
390
252
|
const tables = [];
|
|
391
253
|
for (let i = 0; i < 17; i++)
|
|
@@ -460,80 +322,41 @@ function updateRuntime(rt, u, c, dt, renderer) {
|
|
|
460
322
|
function disposeRuntime(rt) {
|
|
461
323
|
rt.tables.length = 0;
|
|
462
324
|
}
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
const wallpaperField = /* glsl */ `
|
|
472
|
-
uniform vec2 u_wave[6];
|
|
473
|
-
uniform mat2 u_RA[12];
|
|
474
|
-
uniform vec2 u_TA[12];
|
|
475
|
-
uniform float u_countA;
|
|
476
|
-
uniform mat2 u_basisA;
|
|
477
|
-
uniform float u_normA;
|
|
478
|
-
uniform mat2 u_RB[12];
|
|
479
|
-
uniform vec2 u_TB[12];
|
|
480
|
-
uniform float u_countB;
|
|
481
|
-
uniform mat2 u_basisB;
|
|
482
|
-
uniform float u_normB;
|
|
483
|
-
uniform float u_mix;
|
|
484
|
-
uniform float u_mixGain;
|
|
485
|
-
|
|
486
|
-
float wpMotif(vec2 q){
|
|
487
|
-
vec2 a = TAU * q;
|
|
488
|
-
return u_wave[0].x * cos(dot(a, vec2(1.0, 1.0)) + u_wave[0].y)
|
|
489
|
-
+ u_wave[1].x * cos(dot(a, vec2(2.0, 0.0)) + u_wave[1].y)
|
|
490
|
-
+ u_wave[2].x * cos(dot(a, vec2(1.0, -2.0)) + u_wave[2].y)
|
|
491
|
-
+ u_wave[3].x * cos(dot(a, vec2(2.0, 1.0)) + u_wave[3].y)
|
|
492
|
-
+ u_wave[4].x * cos(dot(a, vec2(3.0, 1.0)) + u_wave[4].y)
|
|
493
|
-
+ u_wave[5].x * cos(dot(a, vec2(1.0, 3.0)) + u_wave[5].y);
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
float wpSym(vec2 p, mat2 Bi, mat2 R[12], vec2 T[12], float n){
|
|
497
|
-
vec2 q = Bi * p;
|
|
498
|
-
q -= floor(q);
|
|
499
|
-
float s = 0.0;
|
|
500
|
-
for (int i = 0; i < 12; i++){
|
|
501
|
-
if (float(i) >= n) break;
|
|
502
|
-
s += wpMotif(R[i] * q + T[i]);
|
|
503
|
-
}
|
|
504
|
-
return s;
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
// unit-RMS field, crossfaded between group A and group B
|
|
508
|
-
float wpField(vec2 p){
|
|
509
|
-
float f = wpSym(p, u_basisA, u_RA, u_TA, u_countA) * u_normA;
|
|
510
|
-
if (u_mix > 0.001){
|
|
511
|
-
float g = wpSym(p, u_basisB, u_RB, u_TB, u_countB) * u_normB;
|
|
512
|
-
f = mix(f, g, u_mix) * u_mixGain;
|
|
513
|
-
}
|
|
514
|
-
return f;
|
|
515
|
-
}
|
|
516
|
-
`;
|
|
325
|
+
/** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
|
|
326
|
+
const VARIANT = ['group', 'cycleTime', 'motif', 'levels'];
|
|
327
|
+
/** No computed uniforms: every knob maps straight to its u_<key>. */
|
|
328
|
+
const DERIVE = {};
|
|
329
|
+
/** Knobs that rebuild the plane or pick a mode: they change on commit, never through the live path. */
|
|
330
|
+
const STRUCTURAL = [...GRID_STRUCTURAL, 'group', 'levels'];
|
|
331
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
|
|
332
|
+
const ANIMATABLE = new Set((GRIDS_ANIMATABLE.wallpaperGrid ?? []).map((p) => p.value));
|
|
517
333
|
/**
|
|
518
334
|
* Wallpaper-group kaleidoscope: a drifting lattice-periodic Fourier motif summed over the coset representatives of one of the 17 plane crystallographic groups. The runtime builds the group tables and crossfades from group to group.
|
|
519
335
|
*/
|
|
520
|
-
export function WallpaperGrid({ config = defaultWallpaperGridConfig, groupProps, onObjectReady, onObjectDispose }) {
|
|
336
|
+
export function WallpaperGrid({ config = defaultWallpaperGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
|
|
521
337
|
const matRef = useRef(null);
|
|
522
338
|
const rootRef = useRef(null);
|
|
523
339
|
const meshRef = useRef(null);
|
|
524
340
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
525
|
-
|
|
341
|
+
// The committed config over this grid's defaults: every knob has a value to render
|
|
342
|
+
// and for a keyframe or pointer binding to start from.
|
|
343
|
+
const base = useMemo(() => withConfigDefaults(defaultWallpaperGridConfig, config), [config]);
|
|
344
|
+
const { cellSize, size, segments, flat, displace, followMouse, reveal, revealDuration } = base;
|
|
526
345
|
// the motif has up to ~3 waves per unit cell, so 16 vertices per cell keep the displaced relief smooth
|
|
527
346
|
const segs = segments ?? (displace > 0 ? Math.min(512, Math.max(96, Math.ceil(size / Math.max(cellSize, 1e-4)) * 16)) : 1);
|
|
528
|
-
const fade = fadeDistance ?? size * 0.5;
|
|
529
|
-
const colors = useMemo(() => ({
|
|
530
|
-
line: new THREE.Color(lineColor),
|
|
531
|
-
section: new THREE.Color(sectionColor),
|
|
532
|
-
cell: new THREE.Color(cellColor),
|
|
533
|
-
glow: new THREE.Color(glowColor),
|
|
534
|
-
bg: new THREE.Color(bgColor),
|
|
535
|
-
}), [lineColor, sectionColor, cellColor, glowColor, bgColor]);
|
|
536
347
|
useGridSurface(matRef, meshRef, { followMouse, reveal, revealDuration });
|
|
348
|
+
// One push point for every uniform the config owns: the committed config when the
|
|
349
|
+
// material mounts or the config commits, the merged one while anything overrides it.
|
|
350
|
+
const baseRef = useRef(base);
|
|
351
|
+
baseRef.current = base;
|
|
352
|
+
const setMaterial = useCallback((m) => {
|
|
353
|
+
matRef.current = m;
|
|
354
|
+
if (m)
|
|
355
|
+
applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
|
|
356
|
+
}, []);
|
|
357
|
+
useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
|
|
358
|
+
const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
|
|
359
|
+
useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
537
360
|
// the simulation behind this grid: created on mount, stepped every frame
|
|
538
361
|
const runtimeRef = useRef(null);
|
|
539
362
|
useFrame((state, delta) => {
|
|
@@ -541,8 +364,8 @@ export function WallpaperGrid({ config = defaultWallpaperGridConfig, groupProps,
|
|
|
541
364
|
if (!mat)
|
|
542
365
|
return;
|
|
543
366
|
if (!runtimeRef.current)
|
|
544
|
-
runtimeRef.current = createRuntime(mat.uniforms, state.gl,
|
|
545
|
-
updateRuntime(runtimeRef.current, mat.uniforms,
|
|
367
|
+
runtimeRef.current = createRuntime(mat.uniforms, state.gl, base);
|
|
368
|
+
updateRuntime(runtimeRef.current, mat.uniforms, base, Math.min(delta, 0.1), state.gl);
|
|
546
369
|
});
|
|
547
370
|
useEffect(() => () => {
|
|
548
371
|
if (runtimeRef.current) {
|
|
@@ -550,6 +373,6 @@ export function WallpaperGrid({ config = defaultWallpaperGridConfig, groupProps,
|
|
|
550
373
|
runtimeRef.current = null;
|
|
551
374
|
}
|
|
552
375
|
}, []);
|
|
553
|
-
return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: flat ? [-Math.PI / 2, 0, 0] : [0, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("wallpaperGridMaterial", { ref:
|
|
376
|
+
return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: flat ? [-Math.PI / 2, 0, 0] : [0, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("wallpaperGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, WallpaperGridMaterial.key)] }) }));
|
|
554
377
|
}
|
|
555
378
|
export default WallpaperGrid;
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { AuraConfig, AnimationOptions } from "@3driseai/3drise-core";
|
|
2
|
+
import type { AuraConfig, AnimationOptions, MouseMoveDomain } from "@3driseai/3drise-core";
|
|
3
3
|
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
|
-
interface AuraEffectProps extends ObjectReadyProps {
|
|
4
|
+
export interface AuraEffectProps extends ObjectReadyProps {
|
|
5
5
|
boundingRadius: number;
|
|
6
6
|
config: AuraConfig;
|
|
7
|
-
|
|
7
|
+
/** Scene object id of a standalone effect: the live-edit handle is found by it. */
|
|
8
|
+
id?: string;
|
|
9
|
+
/** Keyframes on this effect's config knobs (animations.effect.animations). */
|
|
10
|
+
keyframes?: AnimationOptions[];
|
|
11
|
+
/** Pointer bindings on this effect's config knobs (mouseMove.effect). */
|
|
12
|
+
mouseMove?: MouseMoveDomain;
|
|
8
13
|
}
|
|
9
14
|
declare const AuraEffect: React.FC<AuraEffectProps>;
|
|
10
15
|
export default AuraEffect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuraEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/AuraEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AuraEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/AuraEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAyGD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAkDzC,CAAC;AACF,eAAe,UAAU,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
3
|
import { useFrame } from '@react-three/fiber';
|
|
4
4
|
import * as THREE from 'three';
|
|
5
|
-
import {
|
|
5
|
+
import { withConfigDefaults } from '../../utils/configAnimations.js';
|
|
6
|
+
import { DEFAULT_GENERATIVE_EFFECTS, EFFECTS_ANIMATABLE } from "@3driseai/3drise-core";
|
|
6
7
|
import { useObjectReady } from '../../hooks/useObjectReady.js';
|
|
8
|
+
import { useConfigDriver } from '../../hooks/useConfigDriver.js';
|
|
7
9
|
const vertexShader = /* glsl */ `
|
|
8
10
|
varying vec3 vNormal;
|
|
9
11
|
varying vec3 vViewDir;
|
|
@@ -21,6 +23,7 @@ const fragmentShader = /* glsl */ `
|
|
|
21
23
|
uniform float u_time;
|
|
22
24
|
uniform float uFresnelPower;
|
|
23
25
|
uniform float uPulseSpeed;
|
|
26
|
+
uniform float uPulsePhase; // integrated on the CPU: pulse speed changes never jump
|
|
24
27
|
uniform float uNoiseAmount;
|
|
25
28
|
uniform float uOpacity;
|
|
26
29
|
uniform float uLayerIndex; // 0..1
|
|
@@ -70,7 +73,7 @@ const fragmentShader = /* glsl */ `
|
|
|
70
73
|
float tendrils = smoothstep(0.60, 0.75, f + uLayerIndex * 0.05);
|
|
71
74
|
|
|
72
75
|
// ── Pulse per layer (staggered phase) ──────────────────────────────────
|
|
73
|
-
float pulse = 0.65 + 0.35 * sin(
|
|
76
|
+
float pulse = 0.65 + 0.35 * sin(uPulsePhase + uLayerIndex * 2.1);
|
|
74
77
|
|
|
75
78
|
// ── Combine ────────────────────────────────────────────────────────────
|
|
76
79
|
float noiseBlend = (1.0 - uNoiseAmount) + uNoiseAmount * f;
|
|
@@ -81,42 +84,64 @@ const fragmentShader = /* glsl */ `
|
|
|
81
84
|
gl_FragColor = vec4(col, alpha);
|
|
82
85
|
}
|
|
83
86
|
`;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
/** Knobs that rebuild the object (layer count, shell radii): commit only, never live. */
|
|
88
|
+
const STRUCTURAL = ['layerCount', 'sizeMultiplier'];
|
|
89
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyConfig pushes. */
|
|
90
|
+
const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.aura.map((p) => p.value));
|
|
91
|
+
const _color = new THREE.Color();
|
|
92
|
+
const _hsl = { h: 0, s: 0, l: 0 };
|
|
93
|
+
/** The single push point: every config knob reaches its uniform here. */
|
|
94
|
+
function applyConfig(materials, c) {
|
|
95
|
+
// one base hue, derived from the inner colour
|
|
96
|
+
_color.set(c.innerColor).getHSL(_hsl);
|
|
97
|
+
for (const m of materials) {
|
|
98
|
+
const u = m.uniforms;
|
|
99
|
+
u.uFresnelPower.value = c.fresnelPower;
|
|
100
|
+
u.uPulseSpeed.value = c.pulseSpeed * c.speed;
|
|
101
|
+
u.uNoiseAmount.value = c.noiseAmount;
|
|
102
|
+
u.uOpacity.value = c.opacity;
|
|
103
|
+
u.uBaseHue.value = _hsl.h;
|
|
104
|
+
u.uIntensity.value = c.intensity;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const AuraEffect = ({ boundingRadius, config, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
|
|
108
|
+
const cfg = useMemo(() => withConfigDefaults(DEFAULT_GENERATIVE_EFFECTS.aura, config), [config]);
|
|
109
|
+
const { layerCount, sizeMultiplier } = cfg;
|
|
87
110
|
const rootRef = useRef(null);
|
|
88
111
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
89
|
-
//
|
|
90
|
-
const baseHue = useMemo(() => {
|
|
91
|
-
const c = new THREE.Color(innerColor);
|
|
92
|
-
const h = { h: 0, s: 0, l: 0 };
|
|
93
|
-
c.getHSL(h);
|
|
94
|
-
return h.h;
|
|
95
|
-
}, [innerColor]);
|
|
112
|
+
// Built once per layer count; every other knob is pushed into the uniforms.
|
|
96
113
|
const materials = useMemo(() => Array.from({ length: layerCount }, (_, i) => new THREE.ShaderMaterial({
|
|
97
114
|
vertexShader,
|
|
98
115
|
fragmentShader,
|
|
99
116
|
uniforms: {
|
|
100
117
|
u_time: { value: 0 },
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
118
|
+
uPulsePhase: { value: 0 },
|
|
119
|
+
uFresnelPower: { value: 3 },
|
|
120
|
+
uPulseSpeed: { value: 1 },
|
|
121
|
+
uNoiseAmount: { value: 0.3 },
|
|
122
|
+
uOpacity: { value: 1 },
|
|
105
123
|
uLayerIndex: { value: layerCount > 1 ? i / (layerCount - 1) : 0 },
|
|
106
|
-
uBaseHue: { value:
|
|
107
|
-
uIntensity: { value:
|
|
124
|
+
uBaseHue: { value: 0 },
|
|
125
|
+
uIntensity: { value: 1 },
|
|
108
126
|
},
|
|
109
127
|
transparent: true,
|
|
110
128
|
depthWrite: false,
|
|
111
129
|
blending: THREE.AdditiveBlending,
|
|
112
130
|
side: THREE.BackSide,
|
|
113
|
-
})), [layerCount
|
|
114
|
-
|
|
131
|
+
})), [layerCount]);
|
|
132
|
+
useEffect(() => () => materials.forEach((m) => m.dispose()), [materials]);
|
|
133
|
+
const push = useCallback((merged) => {
|
|
134
|
+
applyConfig(materials, merged);
|
|
135
|
+
}, [materials]);
|
|
136
|
+
useLayoutEffect(() => { push(cfg); }, [push, cfg]);
|
|
137
|
+
useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
138
|
+
useFrame((state, delta) => {
|
|
115
139
|
const t = state.clock.getElapsedTime();
|
|
116
|
-
|
|
140
|
+
const dt = Math.min(delta, 0.1);
|
|
141
|
+
for (const mat of materials) {
|
|
117
142
|
mat.uniforms.u_time.value = t;
|
|
118
|
-
|
|
119
|
-
|
|
143
|
+
// integrated, so changing the pulse speed never makes the phase jump
|
|
144
|
+
mat.uniforms.uPulsePhase.value += dt * mat.uniforms.uPulseSpeed.value;
|
|
120
145
|
}
|
|
121
146
|
});
|
|
122
147
|
const baseR = boundingRadius * sizeMultiplier;
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { AuroraConfig, AnimationOptions } from "@3driseai/3drise-core";
|
|
2
|
+
import type { AuroraConfig, AnimationOptions, MouseMoveDomain } from "@3driseai/3drise-core";
|
|
3
3
|
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
|
-
interface AuroraEffectProps extends ObjectReadyProps {
|
|
4
|
+
export interface AuroraEffectProps extends ObjectReadyProps {
|
|
5
5
|
boundingRadius: number;
|
|
6
6
|
config: AuroraConfig;
|
|
7
|
-
|
|
7
|
+
/** Scene object id of a standalone effect: the live-edit handle is found by it. */
|
|
8
|
+
id?: string;
|
|
9
|
+
/** Keyframes on this effect's config knobs (animations.effect.animations). */
|
|
10
|
+
keyframes?: AnimationOptions[];
|
|
11
|
+
/** Pointer bindings on this effect's config knobs (mouseMove.effect). */
|
|
12
|
+
mouseMove?: MouseMoveDomain;
|
|
8
13
|
}
|
|
9
14
|
declare const AuroraEffect: React.FC<AuroraEffectProps>;
|
|
10
15
|
export default AuroraEffect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuroraEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/AuroraEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AuroraEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/AuroraEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAgFD,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuD7C,CAAC;AACF,eAAe,YAAY,CAAC"}
|