dsh-drawai 0.3.3 → 0.4.0
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/LICENSE +4142 -0
- package/README.md +43 -10
- package/lib/audio-media.js +147 -0
- package/lib/audio-service.js +66 -0
- package/lib/canvas-format.js +134 -0
- package/lib/client.js +5283 -223
- package/lib/comfyui-default-workflow.mjs +1825 -0
- package/lib/comfyui-workflow.mjs +426 -0
- package/lib/document-commands.js +12 -0
- package/lib/document-core.js +29 -0
- package/lib/drawing-tasks.js +26 -0
- package/lib/imagegen.mjs +596 -0
- package/lib/index.js +1758 -129
- package/lib/media.js +26 -13
- package/lib/mgstyle-core.js +75 -0
- package/lib/motion/apply.js +180 -0
- package/lib/motion/asset-pack-lock.js +10 -0
- package/lib/motion/asset-pack.js +335 -0
- package/lib/motion/assets.js +290 -0
- package/lib/motion/audio.js +103 -0
- package/lib/motion/audiolevel.js +63 -0
- package/lib/motion/audiomix.js +144 -0
- package/lib/motion/beats.js +337 -0
- package/lib/motion/builtin-assets.js +62 -0
- package/lib/motion/canvas-spec.js +442 -0
- package/lib/motion/capture.js +95 -0
- package/lib/motion/cards.js +80 -0
- package/lib/motion/collect.js +447 -0
- package/lib/motion/delivery.js +112 -0
- package/lib/motion/edge-speech.py +90 -0
- package/lib/motion/entry.jsx +73 -0
- package/lib/motion/export.js +200 -0
- package/lib/motion/ffmpeg.js +42 -0
- package/lib/motion/fonts.js +71 -0
- package/lib/motion/jobs.js +113 -0
- package/lib/motion/json.js +4 -0
- package/lib/motion/media-catalog.js +59 -0
- package/lib/motion/mgstyles/BRIEF-TEMPLATE.md +63 -0
- package/lib/motion/mgstyles/briefs/01-flat-vector.md +104 -0
- package/lib/motion/mgstyles/briefs/02-line-art.md +97 -0
- package/lib/motion/mgstyles/briefs/03-isometric.md +108 -0
- package/lib/motion/mgstyles/briefs/05-cel-boil.md +145 -0
- package/lib/motion/mgstyles/briefs/06-collage.md +149 -0
- package/lib/motion/mgstyles/briefs/07-liquid.md +106 -0
- package/lib/motion/mgstyles/briefs/08-morph.md +111 -0
- package/lib/motion/mgstyles/briefs/09-bauhaus.md +150 -0
- package/lib/motion/mgstyles/briefs/10-synthwave.md +151 -0
- package/lib/motion/mgstyles/briefs/12-aurora-glass.md +147 -0
- package/lib/motion/mgstyles/briefs/18-hanazi.md +140 -0
- package/lib/motion/mgstyles/briefs/19-paperclip.md +156 -0
- package/lib/motion/mgstyles/briefs/20-pixel.md +118 -0
- package/lib/motion/mgstyles/briefs/22-hud.md +118 -0
- package/lib/motion/mgstyles/catalog.d/01-flat-vector.json +34 -0
- package/lib/motion/mgstyles/catalog.d/02-line-art.json +34 -0
- package/lib/motion/mgstyles/catalog.d/03-isometric.json +35 -0
- package/lib/motion/mgstyles/catalog.d/05-cel-boil.json +28 -0
- package/lib/motion/mgstyles/catalog.d/06-collage.json +28 -0
- package/lib/motion/mgstyles/catalog.d/07-liquid.json +28 -0
- package/lib/motion/mgstyles/catalog.d/08-morph.json +28 -0
- package/lib/motion/mgstyles/catalog.d/09-bauhaus.json +28 -0
- package/lib/motion/mgstyles/catalog.d/10-synthwave.json +28 -0
- package/lib/motion/mgstyles/catalog.d/12-aurora-glass.json +28 -0
- package/lib/motion/mgstyles/catalog.d/18-hanazi.json +28 -0
- package/lib/motion/mgstyles/catalog.d/19-paperclip.json +28 -0
- package/lib/motion/mgstyles/catalog.d/20-pixel.json +28 -0
- package/lib/motion/mgstyles/catalog.d/22-hud.json +28 -0
- package/lib/motion/mgstyles/catalog.json +1356 -0
- package/lib/motion/mgstyles/upstream/README.md +147 -0
- package/lib/motion/mgstyles/upstream/README.zh-CN.md +147 -0
- package/lib/motion/mgstyles/upstream/demos/01-flat-vector/cues.json +1 -0
- package/lib/motion/mgstyles/upstream/demos/01-flat-vector/index.html +712 -0
- package/lib/motion/mgstyles/upstream/demos/02-line-art/cues.json +331 -0
- package/lib/motion/mgstyles/upstream/demos/02-line-art/film.js +676 -0
- package/lib/motion/mgstyles/upstream/demos/02-line-art/index.html +18 -0
- package/lib/motion/mgstyles/upstream/demos/02-line-art/tools/dump_timing.mjs +26 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/cues.json +109 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/index.html +25 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/anim.js +82 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/main.js +219 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/night5.js +180 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/render.js +202 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/title.js +167 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/title5.js +294 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/ui.js +141 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/world.js +1399 -0
- package/lib/motion/mgstyles/upstream/demos/05-cel-boil/cues.json +157 -0
- package/lib/motion/mgstyles/upstream/demos/05-cel-boil/index.html +34 -0
- package/lib/motion/mgstyles/upstream/demos/05-cel-boil/js/engine.js +326 -0
- package/lib/motion/mgstyles/upstream/demos/05-cel-boil/js/scene.js +2036 -0
- package/lib/motion/mgstyles/upstream/demos/06-collage/assets/gen/layout.json +157 -0
- package/lib/motion/mgstyles/upstream/demos/06-collage/cues.json +80 -0
- package/lib/motion/mgstyles/upstream/demos/06-collage/index.html +889 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/cues.json +100 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/index.html +108 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/engine.js +153 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/links.js +64 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/lookdev.js +46 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/scene.js +963 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/shaders.js +647 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/textsdf.js +114 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/type.js +50 -0
- package/lib/motion/mgstyles/upstream/demos/08-morph/cues.json +131 -0
- package/lib/motion/mgstyles/upstream/demos/08-morph/glyphs.json +1 -0
- package/lib/motion/mgstyles/upstream/demos/08-morph/index.html +901 -0
- package/lib/motion/mgstyles/upstream/demos/09-bauhaus/cues.json +270 -0
- package/lib/motion/mgstyles/upstream/demos/09-bauhaus/film.js +697 -0
- package/lib/motion/mgstyles/upstream/demos/09-bauhaus/index.html +12 -0
- package/lib/motion/mgstyles/upstream/demos/10-synthwave/cues.json +44 -0
- package/lib/motion/mgstyles/upstream/demos/10-synthwave/index.html +1028 -0
- package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/cues.json +67 -0
- package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/index.html +16 -0
- package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/main.js +967 -0
- package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/shaders.js +468 -0
- package/lib/motion/mgstyles/upstream/demos/18-hanazi/cues.json +117 -0
- package/lib/motion/mgstyles/upstream/demos/18-hanazi/index.html +541 -0
- package/lib/motion/mgstyles/upstream/demos/19-paperclip/assets/countries-110m.json +1 -0
- package/lib/motion/mgstyles/upstream/demos/19-paperclip/assets/stickers/meta.json +34 -0
- package/lib/motion/mgstyles/upstream/demos/19-paperclip/cues.json +285 -0
- package/lib/motion/mgstyles/upstream/demos/19-paperclip/index.html +599 -0
- package/lib/motion/mgstyles/upstream/demos/20-pixel/cues.json +42 -0
- package/lib/motion/mgstyles/upstream/demos/20-pixel/film.js +914 -0
- package/lib/motion/mgstyles/upstream/demos/20-pixel/index.html +18 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/cues.json +108 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/index.html +125 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/js/holo.js +275 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/js/hud.js +855 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/js/post.js +150 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/js/util.js +65 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/js/v5.js +142 -0
- package/lib/motion/mgstyles/upstream/harness/render.mjs +319 -0
- package/lib/motion/mgstyles/upstream/manifest.json +269 -0
- package/lib/motion/mgstyles/upstream/prompts/01-flat-vector.md +98 -0
- package/lib/motion/mgstyles/upstream/prompts/02-line-art.md +95 -0
- package/lib/motion/mgstyles/upstream/prompts/03-isometric.md +97 -0
- package/lib/motion/mgstyles/upstream/prompts/05-cel-boil.md +95 -0
- package/lib/motion/mgstyles/upstream/prompts/06-collage.md +95 -0
- package/lib/motion/mgstyles/upstream/prompts/07-liquid.md +98 -0
- package/lib/motion/mgstyles/upstream/prompts/08-morph.md +95 -0
- package/lib/motion/mgstyles/upstream/prompts/09-bauhaus.md +96 -0
- package/lib/motion/mgstyles/upstream/prompts/10-synthwave.md +95 -0
- package/lib/motion/mgstyles/upstream/prompts/12-aurora-glass.md +96 -0
- package/lib/motion/mgstyles/upstream/prompts/18-hanazi.md +95 -0
- package/lib/motion/mgstyles/upstream/prompts/19-paperclip.md +96 -0
- package/lib/motion/mgstyles/upstream/prompts/20-pixel.md +96 -0
- package/lib/motion/mgstyles/upstream/prompts/22-hud.md +95 -0
- package/lib/motion/mgstyles/upstream/rubric.md +51 -0
- package/lib/motion/mgstyles/upstream/template.md +36 -0
- package/lib/motion/pixelqa.js +198 -0
- package/lib/motion/preview.js +95 -0
- package/lib/motion/project.js +395 -0
- package/lib/motion/qa.js +290 -0
- package/lib/motion/reference-media.jsx +10 -0
- package/lib/motion/render-settings.js +112 -0
- package/lib/motion/render.js +159 -0
- package/lib/motion/scene-kit.js +183 -0
- package/lib/motion/sfx.js +232 -0
- package/lib/motion/shotcraft/ClipCard.tsx +204 -0
- package/lib/motion/shotcraft/catalog.json +2461 -0
- package/lib/motion/shotcraft/upstream/SKILL.md +286 -0
- package/lib/motion/shotcraft/upstream/assets/lib/Caption.tsx +54 -0
- package/lib/motion/shotcraft/upstream/assets/lib/ClipCard.tsx +200 -0
- package/lib/motion/shotcraft/upstream/assets/lib/DigitRoll.tsx +45 -0
- package/lib/motion/shotcraft/upstream/assets/lib/FlashCut.tsx +20 -0
- package/lib/motion/shotcraft/upstream/assets/lib/FlatPanel.tsx +65 -0
- package/lib/motion/shotcraft/upstream/assets/lib/PageCam.tsx +151 -0
- package/lib/motion/shotcraft/upstream/assets/lib/VerticalTicker.tsx +129 -0
- package/lib/motion/shotcraft/upstream/assets/lib/helpers/camera.tsx +75 -0
- package/lib/motion/shotcraft/upstream/assets/lib/helpers/motion.ts +40 -0
- package/lib/motion/shotcraft/upstream/assets/lib/helpers/rand.ts +11 -0
- package/lib/motion/shotcraft/upstream/assets/lib/helpers/shake.ts +10 -0
- package/lib/motion/shotcraft/upstream/assets/scripts/__pycache__/sfx-source.cpython-313.pyc +0 -0
- package/lib/motion/shotcraft/upstream/assets/scripts/build-readme-cover.mjs +49 -0
- package/lib/motion/shotcraft/upstream/assets/scripts/capture-template.mjs +210 -0
- package/lib/motion/shotcraft/upstream/assets/scripts/sfx-source.py +423 -0
- package/lib/motion/shotcraft/upstream/assets/scripts/smoke-render-demos.py +170 -0
- package/lib/motion/shotcraft/upstream/assets/scripts/test_sfx_source.py +157 -0
- package/lib/motion/shotcraft/upstream/demos/README.md +120 -0
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Brand.tsx +112 -0
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Fixtures.tsx +647 -0
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Look.tsx +316 -0
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Motion.tsx +82 -0
- package/lib/motion/shotcraft/upstream/demos/_fixtures/PageCam2D.tsx +115 -0
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Polish.tsx +243 -0
- package/lib/motion/shotcraft/upstream/demos/_textures/live-layout.json +389 -0
- package/lib/motion/shotcraft/upstream/demos/camera/basic-3d-scene/Basic3DScene.tsx +250 -0
- package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashImpactReal.tsx +305 -0
- package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashZoomReal.tsx +246 -0
- package/lib/motion/shotcraft/upstream/demos/camera/cursor-flyover/CursorFlyover.tsx +390 -0
- package/lib/motion/shotcraft/upstream/demos/camera/depth-layer-moves/MultiplaneReal.tsx +138 -0
- package/lib/motion/shotcraft/upstream/demos/camera/graze-face-tour/GrazeFaceTour.tsx +542 -0
- package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/OverheadTabletopDrop.tsx +315 -0
- package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/TiltReveal.tsx +299 -0
- package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/DroneDiveLanding.tsx +173 -0
- package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/ExplodedView.tsx +348 -0
- package/lib/motion/shotcraft/upstream/demos/camera/steep-tilt-glide/SteepTiltGlide.tsx +366 -0
- package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/BulletTimeFreezeOrbit.tsx +279 -0
- package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/PullBackIsolation.tsx +184 -0
- package/lib/motion/shotcraft/upstream/demos/camera/terminal-3d/Terminal3D.tsx +390 -0
- package/lib/motion/shotcraft/upstream/demos/data/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +155 -0
- package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/AxisRescaleShockV2.tsx +303 -0
- package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/OscilloscopeStreamV2.tsx +290 -0
- package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/UnitDotSwarmRegroupV2.tsx +278 -0
- package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/NeedleSweepSelftest.tsx +307 -0
- package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/TapeScrollFixedPointer.tsx +215 -0
- package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/BrakeReticleLock.tsx +299 -0
- package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/ChangelogScrollBrake.tsx +232 -0
- package/lib/motion/shotcraft/upstream/demos/data/timeline-travel/TimelineTravel.tsx +290 -0
- package/lib/motion/shotcraft/upstream/demos/effects/assemble-then-type-flyin/AssembleThenTypeFlyin.tsx +273 -0
- package/lib/motion/shotcraft/upstream/demos/effects/aurora-bloom-bg-flip/AuroraBloomBgFlip.tsx +167 -0
- package/lib/motion/shotcraft/upstream/demos/effects/brand-frame-snap/BrandFrameSnap.tsx +536 -0
- package/lib/motion/shotcraft/upstream/demos/effects/fui-hud-moves/ReticleLockOn.tsx +164 -0
- package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/FlylineArc.tsx +175 -0
- package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/GlowOrbAmbient.tsx +197 -0
- package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/OrbFlylineRelay.tsx +241 -0
- package/lib/motion/shotcraft/upstream/demos/effects/icon-performance-moves/AttentionBounce.tsx +279 -0
- package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/AnimeImpact.tsx +230 -0
- package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/HitCounter.tsx +345 -0
- package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SheenSweepRetry.tsx +275 -0
- package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SpotlightSweepReveal.tsx +229 -0
- package/lib/motion/shotcraft/upstream/demos/effects/radial-ripple-phone-chips/RadialRipplePhoneChips.tsx +312 -0
- package/lib/motion/shotcraft/upstream/demos/effects/riso-print-hits/RisoMisregistrationHit.tsx +222 -0
- package/lib/motion/shotcraft/upstream/demos/effects/scan-bracket-sweep/ScanBracketSweep.tsx +295 -0
- package/lib/motion/shotcraft/upstream/demos/effects/scanline-annotate-focus/ScanlineAnnotateFocus.tsx +329 -0
- package/lib/motion/shotcraft/upstream/demos/effects/scanline-assemble-flyin/ScanlineAssembleFlyin.tsx +315 -0
- package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ImpactBurstKit.tsx +264 -0
- package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/KanadaPerspectiveSnap.tsx +260 -0
- package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ScoreSlam.tsx +263 -0
- package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/CornerSpotlightReveal.tsx +123 -0
- package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +187 -0
- package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/SlideSpotlightPan.tsx +175 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/autolayout-gap-dial/AutolayoutGapDial.tsx +305 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/DiagramCascadeBuild.tsx +350 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +352 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/chip-grid-single-select-blackout/ChipGridSingleSelectBlackout.tsx +218 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/collab-cursor-moves/CursorCastEnsemble.tsx +297 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/glass-pill-dictation-typing/GlassPillDictationTyping.tsx +157 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +218 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/picker-carousel-feature-cycle/PickerCarouselFeatureCycle.tsx +202 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/segmented-thumb-hero/SegmentedThumbHero.tsx +265 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/PaletteThemeRipple.tsx +457 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/ThemeSweepToggle.tsx +446 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/type-and-filter/TypeAndFilter.tsx +249 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/voice-waveform-live/VoiceWaveformLive.tsx +278 -0
- package/lib/motion/shotcraft/upstream/demos/opening/crane-rise-reveal/CraneRiseReveal.tsx +332 -0
- package/lib/motion/shotcraft/upstream/demos/opening/dataviz-landscape-open/DatavizLandscapeOpen.tsx +358 -0
- package/lib/motion/shotcraft/upstream/demos/opening/fracture/Fracture.tsx +201 -0
- package/lib/motion/shotcraft/upstream/demos/opening/icon-field-colorize/IconFieldColorize.tsx +200 -0
- package/lib/motion/shotcraft/upstream/demos/opening/letterspace-materialize/LetterspaceMaterialize.tsx +208 -0
- package/lib/motion/shotcraft/upstream/demos/opening/magician-card-flourish/MagicianCardFlourish.tsx +341 -0
- package/lib/motion/shotcraft/upstream/demos/opening/orbit-ring-title-open/OrbitRingTitleOpen.tsx +389 -0
- package/lib/motion/shotcraft/upstream/demos/opening/spotlight-hero-card/SpotlightHeroCard.tsx +293 -0
- package/lib/motion/shotcraft/upstream/demos/opening/stroke-segment-build/StrokeSegmentBuild.tsx +183 -0
- package/lib/motion/shotcraft/upstream/demos/opening/text-as-mask/TextAsMask.tsx +245 -0
- package/lib/motion/shotcraft/upstream/demos/outro/grain-dissolve/GrainDissolve.tsx +222 -0
- package/lib/motion/shotcraft/upstream/demos/outro/logo-shrink-wordmark-lockup/LogoShrinkWordmarkLockup.tsx +223 -0
- package/lib/motion/shotcraft/upstream/demos/outro/neon-triple-marquee/NeonTripleMarquee.tsx +217 -0
- package/lib/motion/shotcraft/upstream/demos/outro/outro-group-photo-launch/OutroGroupPhotoLaunch.tsx +343 -0
- package/lib/motion/shotcraft/upstream/demos/outro/ui-strip-away-outro/UiStripAwayOutro.tsx +357 -0
- package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/IconFlipBloomLogo.tsx +187 -0
- package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/InputMorphsIntoLogo.tsx +333 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/beat-cut-moves/PaparazziFlash.tsx +274 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +270 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/panel-grid-moves/ComicPanelSplit.tsx +430 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/quad-split-parallel-scenes/QuadSplitParallelScenes.tsx +252 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/rhythm-interrupt-moves/JumpCutPunchIn.tsx +106 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/sakuga-timing-shift/SakugaTimingShift.tsx +288 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/speed-ramp-freeze/FreezeAnnotateReal.tsx +362 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx +168 -0
- package/lib/motion/shotcraft/upstream/demos/transition/bottom-push-stack-wipe/BottomPushStackWipe.tsx +310 -0
- package/lib/motion/shotcraft/upstream/demos/transition/card-flip-reveal/CardFlipReveal.tsx +261 -0
- package/lib/motion/shotcraft/upstream/demos/transition/card-flock-tumble/CardFlockTumble.tsx +459 -0
- package/lib/motion/shotcraft/upstream/demos/transition/circle-match-iris/CircleMatchIris.tsx +294 -0
- package/lib/motion/shotcraft/upstream/demos/transition/gradient-transition/GradientTransition.tsx +161 -0
- package/lib/motion/shotcraft/upstream/demos/transition/line-carry-transition/LineCarryTransition.tsx +248 -0
- package/lib/motion/shotcraft/upstream/demos/transition/mosaic-reframe/MosaicReframe.tsx +359 -0
- package/lib/motion/shotcraft/upstream/demos/transition/page-turn-transitions/BarnDoorSplit.tsx +227 -0
- package/lib/motion/shotcraft/upstream/demos/transition/print-texture-transitions/InkBleedReveal.tsx +162 -0
- package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/PortalWipeV2.tsx +248 -0
- package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/WhipBrakeReal.tsx +186 -0
- package/lib/motion/shotcraft/upstream/demos/transition/tear-streak-transitions/GlitchDisplace.tsx +355 -0
- package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/InvisibleCut.tsx +272 -0
- package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/LightLeakBurn.tsx +262 -0
- package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/VersusSlam.tsx +217 -0
- package/lib/motion/shotcraft/upstream/demos/transition/transition-travel/LetterformZoom.tsx +285 -0
- package/lib/motion/shotcraft/upstream/demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx +205 -0
- package/lib/motion/shotcraft/upstream/demos/transition/wipe-transitions/BlindsSlice.tsx +178 -0
- package/lib/motion/shotcraft/upstream/demos/typography/blur-slide/BlurSlide.tsx +147 -0
- package/lib/motion/shotcraft/upstream/demos/typography/brace-expand/BraceExpand.tsx +143 -0
- package/lib/motion/shotcraft/upstream/demos/typography/brand-ink-open/BrandInkOpen.tsx +134 -0
- package/lib/motion/shotcraft/upstream/demos/typography/countdown-arc-scatter/CountdownArcScatter.tsx +217 -0
- package/lib/motion/shotcraft/upstream/demos/typography/flying-words/FlyingWords.tsx +198 -0
- package/lib/motion/shotcraft/upstream/demos/typography/glitch-cycle/GlitchCycle.tsx +221 -0
- package/lib/motion/shotcraft/upstream/demos/typography/gradient-word-sweep/GradientWordSweep.tsx +312 -0
- package/lib/motion/shotcraft/upstream/demos/typography/lead-word-zoom-assemble/LeadWordZoomAssemble.tsx +261 -0
- package/lib/motion/shotcraft/upstream/demos/typography/marker-underline-title/MarkerUnderlineTitle.tsx +121 -0
- package/lib/motion/shotcraft/upstream/demos/typography/outline-word-fill/OutlineWordFill.tsx +153 -0
- package/lib/motion/shotcraft/upstream/demos/typography/paper-title-card/PaperTitleCard.tsx +179 -0
- package/lib/motion/shotcraft/upstream/demos/typography/pill-chip-slot-cycle-handled/PillChipSlotCycleHandled.tsx +140 -0
- package/lib/motion/shotcraft/upstream/demos/typography/pill-slot-cycle/PillSlotCycle.tsx +309 -0
- package/lib/motion/shotcraft/upstream/demos/typography/text-column-converge/TextColumnConverge.tsx +191 -0
- package/lib/motion/shotcraft/upstream/demos/typography/title-demote-to-label/TitleDemoteToLabel.tsx +292 -0
- package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/LetterformDriftAssembly.tsx +135 -0
- package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/SplitTextStagger.tsx +124 -0
- package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/TextOnPath.tsx +255 -0
- package/lib/motion/shotcraft/upstream/demos/typography/type-entrance-moves/LetterDropPhysics.tsx +173 -0
- package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/FontWeightPump.tsx +225 -0
- package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/KaraokeFillSync.tsx +141 -0
- package/lib/motion/shotcraft/upstream/demos/typography/typewriter-moves/TypewriterErrorRetype.tsx +137 -0
- package/lib/motion/shotcraft/upstream/demos/typography/vertical-word-roll-blur-cycle/VerticalWordRollBlurCycle.tsx +147 -0
- package/lib/motion/shotcraft/upstream/demos/typography/word-relay-filmstrip/WordRelayFilmstrip.tsx +409 -0
- package/lib/motion/shotcraft/upstream/demos/typography/word-relay-geometry/WordRelayGeometry.tsx +280 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/avatar-bracket-carousel/AvatarBracketCarousel.tsx +271 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/bezier-source-converge-merge/BezierSourceConvergeMerge.tsx +385 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/card-stack/CardStack.tsx +312 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/carousel-3d/Carousel3D.tsx +303 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/clipcard-looping/ClipCardLooping.tsx +77 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/cloner-depth-echo/ClonerDepthEcho.tsx +311 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/deck-deal-flyin/DeckDealFlyin.tsx +307 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/doc-park-left-pill-deal/DocParkLeftPillDeal.tsx +349 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/document-typewriter-reveal/DocumentTypewriterReveal.tsx +255 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/draw-svg-trace/DrawSvgTrace.tsx +244 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/element-body-moves/ContactShadowLift.tsx +217 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/integration-hub-map/IntegrationHubMap.tsx +652 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-reveal/ListReveal.tsx +153 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-stack-press/ListStackPress.tsx +238 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-forerun/NeonFrameForerun.tsx +324 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +354 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/PageWaterfallWall.tsx +101 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/VerticalTicker.tsx +129 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/product-card-progressive-assemble/ProductCardProgressiveAssemble.tsx +297 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/radial-wave/RadialWave.tsx +57 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/research-card-stack-scroll/ResearchCardStackScroll.tsx +155 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/row-embed/RowEmbed.tsx +175 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/value-stagger-gradient/ValueStaggerGradient.tsx +153 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/BentoLightUp.tsx +146 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/WireframeDrawOn.tsx +226 -0
- package/lib/motion/shotcraft/upstream/gallery/api/library.json +1 -0
- package/lib/motion/shotcraft/upstream/manifest.json +2715 -0
- package/lib/motion/shotcraft/upstream/references/aesthetic-rules.md +193 -0
- package/lib/motion/shotcraft/upstream/references/final-review.md +121 -0
- package/lib/motion/shotcraft/upstream/references/guided-free-creation.md +199 -0
- package/lib/motion/shotcraft/upstream/references/jianying-export.md +183 -0
- package/lib/motion/shotcraft/upstream/references/music-beat-sync.md +257 -0
- package/lib/motion/shotcraft/upstream/references/pipeline.md +382 -0
- package/lib/motion/shotcraft/upstream/references/publish-upload-post.md +111 -0
- package/lib/motion/shotcraft/upstream/references/sequences/promo-energy-arc.md +50 -0
- package/lib/motion/shotcraft/upstream/references/sfx-sourcing.md +95 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/basic-3d-scene.md +41 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/crash-zoom-punch.md +52 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/cursor-flyover.md +39 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/depth-layer-moves.md +39 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/graze-face-tour.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/overhead-camera-moves.md +51 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/space-camera-moves.md +46 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/steep-tilt-glide.md +52 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/tension-camera-moves.md +43 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/terminal-3d.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/data/before-after-slider-scrub.md +48 -0
- package/lib/motion/shotcraft/upstream/references/shots/data/chart-live-moves.md +52 -0
- package/lib/motion/shotcraft/upstream/references/shots/data/gauge-readout-moves.md +45 -0
- package/lib/motion/shotcraft/upstream/references/shots/data/scroll-brake-moves.md +46 -0
- package/lib/motion/shotcraft/upstream/references/shots/data/timeline-travel.md +44 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/assemble-then-type-flyin.md +63 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/aurora-bloom-bg-flip.md +54 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/brand-frame-snap.md +58 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/fui-hud-moves.md +35 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/glow-flyline-moves.md +53 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/icon-performance-moves.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/impact-feedback.md +50 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/light-play-moves.md +46 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/radial-ripple-phone-chips.md +56 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/riso-print-hits.md +49 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/scan-bracket-sweep.md +50 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-annotate-focus.md +53 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-assemble-flyin.md +53 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/slam-entrance-moves.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/spotlight-sweep-moves.md +52 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/autolayout-gap-dial.md +60 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/canvas-materialize-moves.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/chip-grid-single-select-blackout.md +51 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/collab-cursor-moves.md +41 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/glass-pill-dictation-typing.md +53 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/hashtag-to-pill-materialize.md +60 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/picker-carousel-feature-cycle.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/segmented-thumb-hero.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/theme-switch-moves.md +47 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/type-and-filter.md +37 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/voice-waveform-live.md +54 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/brand-ink-open.md +36 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/crane-rise-reveal.md +56 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/dataviz-landscape-open.md +56 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/fracture.md +40 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/icon-field-colorize.md +60 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/letterspace-materialize.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/magician-card-flourish.md +73 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/orbit-ring-title-open.md +87 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/spotlight-hero-card.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/stroke-segment-build.md +50 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/text-as-mask.md +59 -0
- package/lib/motion/shotcraft/upstream/references/shots/outro/grain-dissolve.md +38 -0
- package/lib/motion/shotcraft/upstream/references/shots/outro/logo-shrink-wordmark-lockup.md +38 -0
- package/lib/motion/shotcraft/upstream/references/shots/outro/neon-triple-marquee.md +59 -0
- package/lib/motion/shotcraft/upstream/references/shots/outro/outro-group-photo-launch.md +39 -0
- package/lib/motion/shotcraft/upstream/references/shots/outro/ui-strip-away-outro.md +61 -0
- package/lib/motion/shotcraft/upstream/references/shots/outro/ui-to-brand-morph.md +52 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-cut-moves.md +50 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-step-list-theme-cycle.md +66 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/panel-grid-moves.md +43 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/quad-split-parallel-scenes.md +38 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/rhythm-interrupt-moves.md +38 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/sakuga-timing-shift.md +56 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/speed-ramp-freeze.md +44 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/trailer-grammar-moves.md +38 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/bottom-push-stack-wipe.md +63 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/card-flip-reveal.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/card-flock-tumble.md +63 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/circle-match-iris.md +58 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/gradient-transition.md +45 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/line-carry-transition.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/mosaic-reframe.md +49 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/page-turn-transitions.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/print-texture-transitions.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/shot-transitions.md +45 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/tear-streak-transitions.md +48 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/transition-hidden-cut.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/transition-travel.md +43 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/white-flash-logo-simplify-cut.md +41 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/wipe-transitions.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/blur-slide.md +59 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/brace-expand.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/countdown-arc-scatter.md +65 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/document-typewriter-reveal.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/flying-words.md +64 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/glitch-cycle.md +64 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/gradient-word-sweep.md +54 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/lead-word-zoom-assemble.md +91 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/marker-underline-title.md +51 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/outline-word-fill.md +66 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/paper-title-card.md +38 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/pill-chip-slot-cycle-handled.md +66 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/pill-slot-cycle.md +58 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/text-column-converge.md +61 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/title-demote-to-label.md +64 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/type-assembly-moves.md +45 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/type-entrance-moves.md +41 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/type-rhythm-sync.md +51 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/typewriter-moves.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/vertical-word-roll-blur-cycle.md +63 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-filmstrip.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-geometry.md +75 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/avatar-bracket-carousel.md +59 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/bezier-source-converge-merge.md +67 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/card-stack.md +60 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/carousel-3d.md +66 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/cloner-depth-echo.md +40 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/deck-deal-flyin.md +45 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/doc-park-left-pill-deal.md +62 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/draw-svg-trace.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/element-body-moves.md +37 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/integration-hub-map.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-reveal.md +50 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-stack-press.md +43 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-forerun.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-orbit-drop.md +51 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/page-waterfall-wall.md +51 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/product-card-progressive-assemble.md +56 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/radial-wave.md +49 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/research-card-stack-scroll.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/row-embed.md +36 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/value-stagger-gradient.md +64 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/wall-reveal-moves.md +47 -0
- package/lib/motion/shotcraft/upstream/references/sound-design.md +170 -0
- package/lib/motion/shotcraft/upstream/references/workbench.md +157 -0
- package/lib/motion/shotcraft/upstream/template/TEMPLATE.md +103 -0
- package/lib/motion/shotcraft/upstream/template/THEMES.md +44 -0
- package/lib/motion/shotcraft/upstream/template/package.json +20 -0
- package/lib/motion/shotcraft/upstream/template/remotion.config.ts +6 -0
- package/lib/motion/shotcraft/upstream/template/src/Root.tsx +17 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/Caption.tsx +65 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/DigitRoll.tsx +48 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/FlashCut.tsx +24 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/Main.tsx +192 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/PaperTitleCard.tsx +111 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/PageCam.tsx +150 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneDetail.tsx +158 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneFlyIn.tsx +468 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOpen.tsx +552 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOutroLive.tsx +411 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/ScenePapers.tsx +200 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneWbr.tsx +324 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live-layout.json +389 -0
- package/lib/motion/shotcraft/upstream/template/src/index.ts +4 -0
- package/lib/motion/shotcraft/upstream/template/src/themes/ThemedFilm.tsx +7 -0
- package/lib/motion/shotcraft/upstream/template/src/themes/manifest.tsx +68 -0
- package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.json +1 -0
- package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.ts +24 -0
- package/lib/motion/shotcraft/upstream/template/src/themes/palettes.json +74 -0
- package/lib/motion/shotcraft/upstream/template/src/themes/visual-theme.tsx +91 -0
- package/lib/motion/shotcraft/upstream/template/src/workbench.ts +213 -0
- package/lib/motion/shotcraft/upstream/template/tsconfig.json +15 -0
- package/lib/motion/spec.js +113 -0
- package/lib/motion/style-engine.js +153 -0
- package/lib/motion/style-frames.js +268 -0
- package/lib/motion/sync.js +214 -0
- package/lib/motion/theme.js +121 -0
- package/lib/motion/voice.js +417 -0
- package/lib/motion-agent-files.js +82 -0
- package/lib/motion-agent-protocol.js +66 -0
- package/lib/motion-agent-tools.js +196 -0
- package/lib/motion-agent.js +171 -0
- package/lib/motion-capture.js +92 -0
- package/lib/motion-core.js +238 -0
- package/lib/motion-film-review.js +71 -0
- package/lib/motion-library.js +210 -0
- package/lib/motion-planner.js +254 -0
- package/lib/motion-project.js +80 -0
- package/lib/motion-render-worker.js +145 -0
- package/lib/motion-session.js +32 -0
- package/lib/motion-source.js +49 -0
- package/lib/motion-tasks.js +452 -0
- package/lib/motion-vision.js +43 -0
- package/lib/mxfile.js +27 -7
- package/lib/routing/node-runtime.js +14 -0
- package/lib/routing/router.js +211 -0
- package/lib/routing/vendor/README.md +96 -0
- package/lib/routing/vendor/libavoid-routing.js +753 -0
- package/lib/routing/vendor/libavoid.min.js +59 -0
- package/lib/shotcard-core.js +39 -0
- package/lib/shotcard-reference.js +56 -0
- package/lib/style-kernel.js +37 -3
- package/lib/task-patches.js +26 -2
- package/lib/video-export.js +17 -2
- package/package.json +29 -4
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
// GLSL for "Aurora — think in light". All passes are full-screen triangles; design space is 1920x1080, y down.
|
|
2
|
+
|
|
3
|
+
export const VS = `#version 300 es
|
|
4
|
+
void main(){ vec2 p = vec2(float((gl_VertexID<<1)&2), float(gl_VertexID&2)); gl_Position = vec4(p*2.-1., 0., 1.); }`;
|
|
5
|
+
|
|
6
|
+
const HEAD = `#version 300 es
|
|
7
|
+
precision highp float;
|
|
8
|
+
uniform vec2 uRes; // current render-target size (device px)
|
|
9
|
+
uniform float uDPR; // device px per design px
|
|
10
|
+
out vec4 o;
|
|
11
|
+
vec2 designP(){ return vec2(gl_FragCoord.x, uRes.y - gl_FragCoord.y) / uDPR; }
|
|
12
|
+
vec2 toUV(vec2 p){ return vec2(p.x / 1920., 1. - p.y / 1080.); }
|
|
13
|
+
float sdRoundBox(vec2 p, vec2 b, float r){ r = min(r, min(b.x, b.y)); vec2 q = abs(p) - b + r; return length(max(q, 0.)) + min(max(q.x, q.y), 0.) - r; }
|
|
14
|
+
float hash12(vec2 p){ vec3 p3 = fract(vec3(p.xyx) * .1031); p3 += dot(p3, p3.yzx + 33.33); return fract((p3.x + p3.y) * p3.z); }
|
|
15
|
+
vec2 hash22(vec2 p){ vec3 p3 = fract(vec3(p.xyx) * vec3(.1031, .1030, .0973)); p3 += dot(p3, p3.yzx + 33.33); return fract((p3.xx + p3.yz) * p3.zy); }
|
|
16
|
+
float luma(vec3 c){ return dot(c, vec3(0.2126, 0.7152, 0.0722)); }
|
|
17
|
+
`;
|
|
18
|
+
|
|
19
|
+
const SNOISE = `
|
|
20
|
+
vec3 mod289(vec3 x){ return x - floor(x * (1.0 / 289.0)) * 289.0; }
|
|
21
|
+
vec4 mod289(vec4 x){ return x - floor(x * (1.0 / 289.0)) * 289.0; }
|
|
22
|
+
vec4 permute(vec4 x){ return mod289(((x*34.0)+10.0)*x); }
|
|
23
|
+
vec4 taylorInvSqrt(vec4 r){ return 1.79284291400159 - 0.85373472095314 * r; }
|
|
24
|
+
float snoise(vec3 v){
|
|
25
|
+
const vec2 C = vec2(1.0/6.0, 1.0/3.0); const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
|
|
26
|
+
vec3 i = floor(v + dot(v, C.yyy)); vec3 x0 = v - i + dot(i, C.xxx);
|
|
27
|
+
vec3 g = step(x0.yzx, x0.xyz); vec3 l = 1.0 - g; vec3 i1 = min(g.xyz, l.zxy); vec3 i2 = max(g.xyz, l.zxy);
|
|
28
|
+
vec3 x1 = x0 - i1 + C.xxx; vec3 x2 = x0 - i2 + C.yyy; vec3 x3 = x0 - D.yyy;
|
|
29
|
+
i = mod289(i);
|
|
30
|
+
vec4 p = permute(permute(permute(i.z + vec4(0.0, i1.z, i2.z, 1.0)) + i.y + vec4(0.0, i1.y, i2.y, 1.0)) + i.x + vec4(0.0, i1.x, i2.x, 1.0));
|
|
31
|
+
float n_ = 0.142857142857; vec3 ns = n_ * D.wyz - D.xzx;
|
|
32
|
+
vec4 j = p - 49.0 * floor(p * ns.z * ns.z); vec4 x_ = floor(j * ns.z); vec4 y_ = floor(j - 7.0 * x_);
|
|
33
|
+
vec4 x = x_ * ns.x + ns.yyyy; vec4 y = y_ * ns.x + ns.yyyy; vec4 h = 1.0 - abs(x) - abs(y);
|
|
34
|
+
vec4 b0 = vec4(x.xy, y.xy); vec4 b1 = vec4(x.zw, y.zw);
|
|
35
|
+
vec4 s0 = floor(b0)*2.0 + 1.0; vec4 s1 = floor(b1)*2.0 + 1.0; vec4 sh = -step(h, vec4(0.0));
|
|
36
|
+
vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy; vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww;
|
|
37
|
+
vec3 p0 = vec3(a0.xy, h.x); vec3 p1 = vec3(a0.zw, h.y); vec3 p2 = vec3(a1.xy, h.z); vec3 p3 = vec3(a1.zw, h.w);
|
|
38
|
+
vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2,p2), dot(p3,p3)));
|
|
39
|
+
p0 *= norm.x; p1 *= norm.y; p2 *= norm.z; p3 *= norm.w;
|
|
40
|
+
vec4 m = max(0.5 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0); m = m * m;
|
|
41
|
+
return 105.0 * dot(m*m, vec4(dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3)));
|
|
42
|
+
}`;
|
|
43
|
+
|
|
44
|
+
// camera ray / plane intersection shared by the aurora (shadows) and card passes
|
|
45
|
+
const CAM = `
|
|
46
|
+
uniform vec3 uCamO; uniform float uF;
|
|
47
|
+
vec3 rayDir(vec2 p){ return normalize(vec3(p.x - 960., p.y - 540., uF)); }
|
|
48
|
+
vec2 planeLocal(vec2 p, vec3 C, vec3 U, vec3 V, vec3 N){
|
|
49
|
+
vec3 d = rayDir(p); float tt = dot(C - uCamO, N) / dot(d, N); vec3 P = uCamO + d * tt; vec3 r = P - C;
|
|
50
|
+
return vec2(dot(r, U), dot(r, V));
|
|
51
|
+
}`;
|
|
52
|
+
|
|
53
|
+
// ---------------------------------------------------------------- aurora + card shadows + light motes
|
|
54
|
+
export const FS_AURORA = HEAD + SNOISE + CAM + `
|
|
55
|
+
uniform float uT;
|
|
56
|
+
uniform vec4 uBlob[7]; // xy centre (design px), z radius x, w intensity
|
|
57
|
+
uniform vec2 uBlobE[7]; // radius y, angle
|
|
58
|
+
uniform vec3 uBlobC[7];
|
|
59
|
+
uniform vec3 uBase;
|
|
60
|
+
uniform float uGain; // global light level (bloom at the drop)
|
|
61
|
+
uniform float uWarp;
|
|
62
|
+
uniform vec4 uRipple; // xy centre, radius, amplitude
|
|
63
|
+
uniform vec3 uSC[3]; uniform vec3 uSU[3]; uniform vec3 uSV[3]; uniform vec3 uSN[3]; uniform vec4 uSH[3]; // shadows: half.xy, radius, opacity
|
|
64
|
+
uniform float uMotes;
|
|
65
|
+
void main(){
|
|
66
|
+
vec2 p = designP();
|
|
67
|
+
vec2 q = p / 1080.;
|
|
68
|
+
float t = uT;
|
|
69
|
+
vec2 w = vec2(snoise(vec3(q * 0.9, t * 0.035)), snoise(vec3(q * 0.9 + vec2(5.2, 1.3), t * 0.035 + 11.)));
|
|
70
|
+
vec2 w2 = vec2(snoise(vec3(q * 2.1 + 3.1, t * 0.06)), snoise(vec3(q * 2.1 + 8.4, t * 0.06 + 4.)));
|
|
71
|
+
vec2 pw = p + w * uWarp + w2 * uWarp * 0.3;
|
|
72
|
+
// slow light ripple (the drop)
|
|
73
|
+
vec2 rd = p - uRipple.xy; float rl = length(rd);
|
|
74
|
+
float ring = exp(-pow((rl - uRipple.z) / 170., 2.)) * uRipple.w;
|
|
75
|
+
pw += rd / max(rl, 1.) * ring * 46.;
|
|
76
|
+
vec3 acc = vec3(0.); float ws = 0.;
|
|
77
|
+
for (int i = 0; i < 7; i++){
|
|
78
|
+
vec2 d = pw - uBlob[i].xy;
|
|
79
|
+
float ca = cos(uBlobE[i].y), sa = sin(uBlobE[i].y);
|
|
80
|
+
d = vec2(ca * d.x + sa * d.y, -sa * d.x + ca * d.y) / vec2(uBlob[i].z, uBlobE[i].x);
|
|
81
|
+
float g = exp(-dot(d, d)) * uBlob[i].w;
|
|
82
|
+
acc += uBlobC[i] * g; ws += g;
|
|
83
|
+
}
|
|
84
|
+
vec3 mixc = acc / max(ws, 1e-4);
|
|
85
|
+
float cov = pow(1. - exp(-ws * 1.5), 1.3); // deeper indigo valleys between the pools of light
|
|
86
|
+
vec3 col = mix(uBase, mixc, cov) + acc * 0.07;
|
|
87
|
+
float core = smoothstep(0.75, 2.1, ws); // where pools overlap the light gets hot, not muddy
|
|
88
|
+
col = mix(col, col * 1.22 + vec3(0.035, 0.03, 0.07), core * 0.55);
|
|
89
|
+
col *= uGain * (1. + ring * 0.2);
|
|
90
|
+
col += vec3(0.50, 0.36, 1.0) * ring * 0.045 * cov; // the drop: a slow violet wave of light
|
|
91
|
+
// faint vertical silk in the light (aurora curtains), very low contrast
|
|
92
|
+
float silk = snoise(vec3(p.x / 260. + w.x * 0.8, p.y / 1400., t * 0.05));
|
|
93
|
+
col *= 1. + silk * 0.05 * cov;
|
|
94
|
+
|
|
95
|
+
// light motes / bokeh (sharp enough that the frosted glass visibly blurs them)
|
|
96
|
+
if (uMotes > 0.){
|
|
97
|
+
vec3 m = vec3(0.);
|
|
98
|
+
float lockK = smoothstep(7.0, 7.6, t);
|
|
99
|
+
for (int i = 0; i < 10; i++){
|
|
100
|
+
float fi = float(i);
|
|
101
|
+
vec2 h = hash22(vec2(fi * 1.37 + 0.2, fi * 7.11 + 0.7));
|
|
102
|
+
vec2 vel = (hash22(vec2(fi, 3.1)) - .5) * vec2(10., 6.) + vec2(2., -3.); // <= 0.3 px / frame
|
|
103
|
+
vec2 pos = h * vec2(1880., 1040.) + vec2(20.) + vel * t;
|
|
104
|
+
float sig = mix(3., 5., hash12(vec2(fi, 4.4)));
|
|
105
|
+
float amp = mix(0.12, 0.25, hash12(vec2(fi, 5.5)));
|
|
106
|
+
float tw = 0.8 + 0.2 * sin(t * (0.5 + hash12(vec2(fi, 2.2))) + fi * 2.1);
|
|
107
|
+
vec2 bd = abs(pos - vec2(960., 600.)) - vec2(380., 150.);
|
|
108
|
+
float keep = mix(1., smoothstep(0., 70., max(bd.x, bd.y)), lockK);
|
|
109
|
+
float d = length(p - pos);
|
|
110
|
+
m += vec3(0.86, 0.9, 1.) * exp(-d * d / (2. * sig * sig)) * amp * tw * keep;
|
|
111
|
+
}
|
|
112
|
+
col += m * uMotes * (0.55 + 0.45 * cov);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// soft drop shadows of the glass cards onto the light field
|
|
116
|
+
for (int k = 0; k < 3; k++){
|
|
117
|
+
if (uSH[k].w <= 0.) continue;
|
|
118
|
+
vec2 L = planeLocal(p - vec2(0., 34.), uSC[k], uSU[k], uSV[k], uSN[k]);
|
|
119
|
+
float sd = sdRoundBox(L, uSH[k].xy, uSH[k].z);
|
|
120
|
+
float sh = 1. - smoothstep(-46., 84., sd);
|
|
121
|
+
col *= 1. - sh * 0.34 * uSH[k].w;
|
|
122
|
+
}
|
|
123
|
+
o = vec4(max(col, 0.), 1.);
|
|
124
|
+
}`;
|
|
125
|
+
|
|
126
|
+
// ---------------------------------------------------------------- 4x downsample (16-tap box via 4 bilinear taps)
|
|
127
|
+
export const FS_DOWN = HEAD + `
|
|
128
|
+
uniform sampler2D uSrc; uniform vec2 uSrcTexel; uniform float uThresh;
|
|
129
|
+
void main(){
|
|
130
|
+
vec2 uv = gl_FragCoord.xy / uRes;
|
|
131
|
+
vec3 c = texture(uSrc, uv + uSrcTexel * vec2(-1., -1.)).rgb + texture(uSrc, uv + uSrcTexel * vec2(1., -1.)).rgb
|
|
132
|
+
+ texture(uSrc, uv + uSrcTexel * vec2(-1., 1.)).rgb + texture(uSrc, uv + uSrcTexel * vec2(1., 1.)).rgb;
|
|
133
|
+
c *= 0.25;
|
|
134
|
+
if (uThresh > 0.) { float l = luma(c); c *= smoothstep(uThresh, uThresh + 0.35, l); }
|
|
135
|
+
o = vec4(c, 1.);
|
|
136
|
+
}`;
|
|
137
|
+
|
|
138
|
+
// ---------------------------------------------------------------- separable gaussian (linear-sampled taps)
|
|
139
|
+
export const FS_BLUR = HEAD + `
|
|
140
|
+
uniform sampler2D uSrc; uniform vec2 uDir; uniform float uOff[16]; uniform float uW[16]; uniform int uN;
|
|
141
|
+
void main(){
|
|
142
|
+
vec2 uv = gl_FragCoord.xy / uRes; vec2 tx = uDir / uRes;
|
|
143
|
+
vec3 c = texture(uSrc, uv).rgb * uW[0];
|
|
144
|
+
for (int i = 1; i < 16; i++){ if (i >= uN) break; c += (texture(uSrc, uv + tx * uOff[i]).rgb + texture(uSrc, uv - tx * uOff[i]).rgb) * uW[i]; }
|
|
145
|
+
o = vec4(c, 1.);
|
|
146
|
+
}`;
|
|
147
|
+
|
|
148
|
+
// ---------------------------------------------------------------- frosted glass card (perspective, analytic SDF)
|
|
149
|
+
export const FS_CARD = HEAD + CAM + `
|
|
150
|
+
uniform vec3 uC, uU, uV, uN; uniform vec2 uHalf; uniform float uRad;
|
|
151
|
+
uniform float uOpacity, uContentA, uLod, uFrost, uDefocus;
|
|
152
|
+
uniform sampler2D uBlurTex; uniform sampler2D uContent;
|
|
153
|
+
uniform vec2 uLight; // 2D light direction (points toward the light), design space
|
|
154
|
+
uniform float uSheen; // sheen band position (-1..1)
|
|
155
|
+
uniform vec2 uGlint; // travelling catch-light: position, amplitude
|
|
156
|
+
uniform float uEdge; // lit-bevel boost (hook)
|
|
157
|
+
uniform vec2 uCatch; // r2 hook: catch-light position along the top-right bevel (local px), amplitude
|
|
158
|
+
void main(){
|
|
159
|
+
vec2 p = designP();
|
|
160
|
+
vec2 L = planeLocal(p, uC, uU, uV, uN);
|
|
161
|
+
float sd = sdRoundBox(L, uHalf, uRad);
|
|
162
|
+
float pxw = max(fwidth(sd), 1e-4); // local units per screen px
|
|
163
|
+
float sdS = sd / pxw; // signed distance in screen px
|
|
164
|
+
float dw = max(uDefocus, 0.5); // defocus: soft edge when the pane passes the focal plane
|
|
165
|
+
float cov = clamp(0.5 - sdS / (2. * dw), 0., 1.);
|
|
166
|
+
if (cov <= 0.) discard;
|
|
167
|
+
// analytic outward normal of the rounded box in local space
|
|
168
|
+
float r = min(uRad, min(uHalf.x, uHalf.y));
|
|
169
|
+
vec2 qq = abs(L) - uHalf + r;
|
|
170
|
+
vec2 g = qq.x > 0. && qq.y > 0. ? normalize(qq) : (qq.x > qq.y ? vec2(1., 0.) : vec2(0., 1.));
|
|
171
|
+
g *= sign(L + 1e-6);
|
|
172
|
+
float inside = -sdS; // px from edge
|
|
173
|
+
// thickness: backdrop pulled inward near the rim (glass edge refraction)
|
|
174
|
+
float rim = 1. - smoothstep(0., 13., inside);
|
|
175
|
+
vec2 offs = -g * pow(rim, 1.3) * 24.;
|
|
176
|
+
vec3 bb = texture(uBlurTex, toUV(p + offs)).rgb;
|
|
177
|
+
// classic recipe: blur + saturate(170%) + 7% white fill
|
|
178
|
+
float l = luma(bb);
|
|
179
|
+
bb = max(mix(vec3(l), bb, 1.0 + 0.38 * uFrost), 0.);
|
|
180
|
+
vec3 col = bb * 1.02 + vec3(0.085) * uFrost + vec3(0.012, 0.012, 0.03);
|
|
181
|
+
// inner glow along the rim (thickness catching light)
|
|
182
|
+
float facing = clamp(dot(g, uLight) * 0.5 + 0.5, 0., 1.);
|
|
183
|
+
col += vec3(1.) * (1. - smoothstep(0., 26., inside)) * (0.018 + 0.05 * pow(facing, 2.));
|
|
184
|
+
// broad diagonal sheen (reflection of a soft box), moves with tilt
|
|
185
|
+
vec2 uvn = L / uHalf;
|
|
186
|
+
float band = dot(uvn, normalize(vec2(0.8, 0.6)));
|
|
187
|
+
col += vec3(1.) * 0.045 * exp(-pow((band - uSheen) / 0.45, 2.));
|
|
188
|
+
col += vec3(0.93, 0.95, 1.) * uGlint.y * exp(-pow((band - uGlint.x) / 0.16, 2.)) * (0.6 + 0.4 * smoothstep(0., 30., inside));
|
|
189
|
+
col += vec3(1.) * 0.035 * (1. - clamp((uvn.y + uvn.x * 0.4 + 1.) * 0.5, 0., 1.)); // top-left a touch brighter
|
|
190
|
+
// UI content (premultiplied)
|
|
191
|
+
vec2 cuv = (L + uHalf) / (2. * uHalf);
|
|
192
|
+
vec4 c = texture(uContent, cuv, uLod) * uContentA;
|
|
193
|
+
col = col * (1. - c.a) + c.rgb;
|
|
194
|
+
// 1px inner highlight stroke, ~30% white, brighter on the lit edge
|
|
195
|
+
float sw = 0.9 + (dw - 0.5) * 1.5;
|
|
196
|
+
float stroke = clamp(1. - abs(inside - sw) / sw, 0., 1.) * (0.9 / sw);
|
|
197
|
+
float sa = min(mix(0.14, 0.7, pow(facing, 1.6)) * uEdge, 0.95);
|
|
198
|
+
col = mix(col, vec3(1.), stroke * sa);
|
|
199
|
+
if (uCatch.y > 0.) { // a 1 px catch-light runs round the top-right corner radius, with a short comet tail
|
|
200
|
+
vec2 cc = vec2(uHalf.x - r, -uHalf.y + r);
|
|
201
|
+
float sP = L.x < cc.x ? L.x - cc.x : (L.y > cc.y ? r * 1.5708 + (L.y - cc.y) : r * (atan(L.y - cc.y, L.x - cc.x) + 1.5708));
|
|
202
|
+
float dd = sP - uCatch.x;
|
|
203
|
+
float along = exp(-dd * dd / 180.) + 0.4 * exp(dd / 55.) * step(dd, 0.);
|
|
204
|
+
float bandC = clamp(1. - abs(inside - sw) / (sw + 0.35), 0., 1.);
|
|
205
|
+
col += vec3(1., 0.97, 0.93) * along * uCatch.y * (bandC * 1.2 + 0.22 * exp(-inside / 6.));
|
|
206
|
+
}
|
|
207
|
+
o = vec4(col, 1.) * cov * uOpacity;
|
|
208
|
+
}`;
|
|
209
|
+
|
|
210
|
+
// ---------------------------------------------------------------- premultiplied texture overlay (wordmark)
|
|
211
|
+
export const FS_OVER = HEAD + `
|
|
212
|
+
uniform sampler2D uTex; uniform float uA;
|
|
213
|
+
void main(){ vec2 p = designP(); vec4 c = texture(uTex, vec2(p.x / 1920., p.y / 1080.)); o = c * uA; }`;
|
|
214
|
+
|
|
215
|
+
// ---------------------------------------------------------------- Liquid Glass lens: SDF slab, squircle bezel, spectral refraction
|
|
216
|
+
export const FS_LENS = HEAD + `
|
|
217
|
+
uniform sampler2D uScene; uniform sampler2D uBlur;
|
|
218
|
+
uniform vec2 uLC; uniform vec2 uLH; uniform float uLR; uniform mat2 uLM; // centre, half size, radius, inverse stretch
|
|
219
|
+
uniform vec3 uBead; uniform float uBeadK; uniform float uBeadA; // metaball bead (xy, r), blend radius, bead opacity
|
|
220
|
+
uniform float uOn; // lens presence 0..1
|
|
221
|
+
uniform float uBezel, uDepth, uIor, uDisp, uMag, uRefrSign, uMaxDisp;
|
|
222
|
+
uniform float uLift; // height above the cards (shadow)
|
|
223
|
+
uniform float uGlint; // travelling glint phase
|
|
224
|
+
uniform vec3 uLight3;
|
|
225
|
+
uniform float uFrostRim, uRimGlow, uRing, uCaustic, uFres, uBzExp;
|
|
226
|
+
uniform float uRingW, uWarm, uCW; uniform vec2 uRGl; uniform vec3 uWave; // ring "o", gold light, counter warmth, ring glint, caustic wave
|
|
227
|
+
uniform float uHide; // reel v5 ?nolink=dot: the glass body, its shadow and its bend are skipped; the 9.0 wave stays (0 = pre-v5 path)
|
|
228
|
+
float smin(float a, float b, float k){ float h = max(k - abs(a - b), 0.) / k; return min(a, b) - h * h * k * 0.25; }
|
|
229
|
+
float outerSDF(vec2 p){
|
|
230
|
+
vec2 q = uLM * (p - uLC);
|
|
231
|
+
float d = sdRoundBox(q, uLH, uLR);
|
|
232
|
+
if (uBead.z > 0.) { float d2 = length(p - uBead.xy) - uBead.z; d = uBeadK > 0.5 ? smin(d, d2, uBeadK) : min(d, d2); }
|
|
233
|
+
return d;
|
|
234
|
+
}
|
|
235
|
+
float lensSDF(vec2 p){ float d = outerSDF(p); return uRingW > 0. ? max(d, -d - uRingW) : d; }
|
|
236
|
+
vec3 warmRamp(float h){ // rim magenta -> rose -> peach on the plateau
|
|
237
|
+
vec3 a = vec3(0.878, 0.482, 0.847), b = vec3(1., 0.702, 0.780), c = vec3(1., 0.851, 0.659);
|
|
238
|
+
return h < 0.5 ? mix(a, b, h * 2.) : mix(b, c, h * 2. - 1.);
|
|
239
|
+
}
|
|
240
|
+
float heightAt(vec2 p){
|
|
241
|
+
float d = -lensSDF(p);
|
|
242
|
+
float x = clamp(d / uBezel, 0., 1.);
|
|
243
|
+
return pow(1. - pow(1. - x, uBzExp), 1. / uBzExp); // convex squircle bezel, flat plateau
|
|
244
|
+
}
|
|
245
|
+
vec3 sceneAt(vec2 p){
|
|
246
|
+
vec3 c = texture(uScene, toUV(p)).rgb;
|
|
247
|
+
float s = lensSDF(p - vec2(0., 8. + 22. * uLift));
|
|
248
|
+
float soft = 8. + 30. * uLift;
|
|
249
|
+
float sh = (1. - smoothstep(-soft, soft * 1.8, s)) * (0.16 + 0.16 * uLift) * uOn * (1. - uHide);
|
|
250
|
+
float rr = min(uLH.x, uLH.y);
|
|
251
|
+
float ca = smoothstep(-0.25 * rr, -0.85 * rr, s) * uCaustic * uOn * (1. - uHide); // light gathered by the glass
|
|
252
|
+
return c * (1. - sh) + c * ca * mix(vec3(1.), vec3(1.3, 0.95, 0.68), uWarm);
|
|
253
|
+
}
|
|
254
|
+
void main(){
|
|
255
|
+
vec2 p = designP();
|
|
256
|
+
if (uOn <= 0.) { o = vec4(texture(uScene, toUV(p)).rgb, 1.); return; }
|
|
257
|
+
float sd = lensSDF(p);
|
|
258
|
+
// r2: the 9.0 wave is a REFRACTION ring (bends what it crosses ~2.5 px) with light on its crest
|
|
259
|
+
vec2 wr = p - uLC; float wl = length(wr); float wx = (wl - uWave.x) / 9.;
|
|
260
|
+
float wv = uWave.y * exp(-pow((wl - uWave.x) / 15., 2.));
|
|
261
|
+
vec2 pw = uWave.z > 0. && wl > 1. ? p - wr / wl * uWave.z * wx * exp(-wx * wx) * (1. - 0.7 * smoothstep(628., 662., p.y)) : p; // the thin tagline bends less
|
|
262
|
+
vec3 base;
|
|
263
|
+
if (uRingW > 0. && sd > 0. && sd < 16. && uHide < 0.5) { // the ring bends its neighbours (the "r" stems) a touch
|
|
264
|
+
vec2 gg = vec2(lensSDF(p + vec2(1., 0.)) - lensSDF(p - vec2(1., 0.)), lensSDF(p + vec2(0., 1.)) - lensSDF(p - vec2(0., 1.)));
|
|
265
|
+
float nr = 1. - sd / 16.;
|
|
266
|
+
base = sceneAt(pw + normalize(gg + 1e-5) * 2.4 * nr * nr);
|
|
267
|
+
} else base = sceneAt(pw);
|
|
268
|
+
if (uRingW > 0. && outerSDF(p) < 0. && uHide < 0.5) base = mix(base, warmRamp(0.75) * (luma(base) * 1.3 + 0.04), uCW); // gold kept in the counter
|
|
269
|
+
base += vec3(1., 0.96, 0.93) * wv;
|
|
270
|
+
if (sd > 2. || uHide > 0.5) { o = vec4(base, 1.); return; }
|
|
271
|
+
float e = 0.75;
|
|
272
|
+
float hx = heightAt(p + vec2(e, 0.)) - heightAt(p - vec2(e, 0.));
|
|
273
|
+
float hy = heightAt(p + vec2(0., e)) - heightAt(p - vec2(0., e));
|
|
274
|
+
float hC = heightAt(p);
|
|
275
|
+
vec3 N = normalize(vec3(-hx / (2. * e) * uDepth, -hy / (2. * e) * uDepth, 1.));
|
|
276
|
+
vec2 gN = length(N.xy) > 1e-4 ? normalize(N.xy) : vec2(0.); // outward in the bezel
|
|
277
|
+
float edgeX = clamp(-sd / uBezel, 0., 1.); // 0 at rim .. 1 on the plateau
|
|
278
|
+
vec2 C = uLC;
|
|
279
|
+
vec3 I = vec3(0., 0., -1.);
|
|
280
|
+
vec3 acc = vec3(0.);
|
|
281
|
+
const vec3 SW[7] = vec3[7](vec3(0.00, 0.00, 0.30), vec3(0.00, 0.10, 0.40), vec3(0.00, 0.25, 0.25), vec3(0.05, 0.35, 0.05),
|
|
282
|
+
vec3(0.25, 0.25, 0.00), vec3(0.40, 0.05, 0.00), vec3(0.30, 0.00, 0.00));
|
|
283
|
+
for (int i = 0; i < 7; i++){
|
|
284
|
+
float k = (3. - float(i)) / 3.; // +1 violet .. -1 red
|
|
285
|
+
float ior = uIor + uDisp * k;
|
|
286
|
+
vec3 R = refract(I, N, 1. / ior);
|
|
287
|
+
vec2 disp = R.xy / max(-R.z, 0.25) * uDepth;
|
|
288
|
+
float dl = length(disp);
|
|
289
|
+
disp *= min(1., uMaxDisp * (1. + 0.25 * uDisp * k * 10.) / max(dl, 1e-3)) * uRefrSign;
|
|
290
|
+
float mag = uMag * (1. + uDisp * 0.04 * k);
|
|
291
|
+
vec2 s = C + (p - C) / mag + disp;
|
|
292
|
+
acc += sceneAt(s) * SW[i];
|
|
293
|
+
}
|
|
294
|
+
vec3 col = acc;
|
|
295
|
+
// r2: the light turns gold as LIGHT ADDED over clear glass (no mixing warm into the blue field -> no grey)
|
|
296
|
+
float luPre = luma(col), glyph = 0.;
|
|
297
|
+
if (uWarm > 0.) {
|
|
298
|
+
glyph = smoothstep(0.72, 0.9, luPre) * uWarm;
|
|
299
|
+
vec2 sc = C + (p - C) / uMag; // a soft #FFC98A glow around the lit glyphs (dilated glyph mask)
|
|
300
|
+
float dil = 0.;
|
|
301
|
+
for (int j = 0; j < 8; j++) { vec2 dv = vec2(cos(float(j) * 0.785), sin(float(j) * 0.785));
|
|
302
|
+
dil += smoothstep(0.72, 0.9, luma(texture(uScene, toUV(sc + dv * 3.5)).rgb)) + smoothstep(0.72, 0.9, luma(texture(uScene, toUV(sc + dv * 7.)).rgb)); }
|
|
303
|
+
float halo = clamp(dil / 16. * 1.6 - glyph, 0., 1.) * uWarm;
|
|
304
|
+
vec2 lr = (p - C) / max(uLH, vec2(1.));
|
|
305
|
+
float rad = clamp(length(lr), 0., 1.);
|
|
306
|
+
vec3 wc = mix(vec3(1., 0.851, 0.659), vec3(1., 0.702, 0.780), smoothstep(0.25, 0.8, rad)); // #FFD9A8 core -> #FFB3C7
|
|
307
|
+
float wa = 0.17 * uWarm * pow(hC, 1.2) * (1. - smoothstep(0.3, 0.95, rad)); // a warm core, the glass stays clear
|
|
308
|
+
col = 1. - (1. - col) * (1. - wc * wa); // screen
|
|
309
|
+
col += wc * 0.03 * uWarm * pow(hC, 2.) * (1. - rad); // + luminance at the core
|
|
310
|
+
float bz = exp(-pow((-sd - 5.) / 3.2, 2.)); // rose #E07BD8 only in the 8-10 px bezel band
|
|
311
|
+
col = 1. - (1. - col) * (1. - vec3(0.878, 0.482, 0.847) * 0.34 * uWarm * bz);
|
|
312
|
+
col = mix(col, vec3(1., 0.788, 0.541), halo * 0.3);
|
|
313
|
+
}
|
|
314
|
+
// clear, bright body; a whisper of frost only at the very rim
|
|
315
|
+
vec3 bl = texture(uBlur, toUV(p - gN * 24.)).rgb;
|
|
316
|
+
col = mix(col, bl * 1.1 + 0.03, uFrostRim * pow(1. - edgeX, 3.));
|
|
317
|
+
col = mix(vec3(luma(col)), col, 1.08) * 1.035 + 0.01;
|
|
318
|
+
col = mix(col, vec3(1., 0.902, 0.761), glyph * 0.95); // 'gold.' lit #FFE6C2 at 95 %
|
|
319
|
+
// fresnel: the bezel reflects the surrounding light
|
|
320
|
+
float F = pow(1. - N.z, 1.6);
|
|
321
|
+
vec3 refl = texture(uBlur, toUV(p + gN * 120.)).rgb * 1.35 + 0.1;
|
|
322
|
+
col = mix(col, refl, clamp(F * uFres, 0., 0.5));
|
|
323
|
+
// specular: key light (top-left) + softer bounce (bottom-right)
|
|
324
|
+
vec3 V = vec3(0., 0., 1.);
|
|
325
|
+
vec3 Lk = normalize(uLight3);
|
|
326
|
+
vec3 Lb = normalize(vec3(-uLight3.x, -uLight3.y, uLight3.z));
|
|
327
|
+
float sk = pow(max(dot(reflect(-Lk, N), V), 0.), 18.);
|
|
328
|
+
float sb = pow(max(dot(reflect(-Lb, N), V), 0.), 26.);
|
|
329
|
+
col += vec3(1.) * sk * 0.75 + vec3(0.85, 0.92, 1.) * sb * 0.28;
|
|
330
|
+
if (uRGl.y > 0.) { // one specular glint runs round the ring (final celesta note)
|
|
331
|
+
float an = atan(p.y - C.y, p.x - C.x);
|
|
332
|
+
float da = mod(an - uRGl.x + 3.14159, 6.28318) - 3.14159;
|
|
333
|
+
float wg = uRingW > 0. ? 0.35 + 0.65 * hC : 0.1 + 0.9 * pow(1. - edgeX, 2.); // r2s3: on the full lens (drop) the whip rides the bezel
|
|
334
|
+
col += vec3(1.) * exp(-da * da / 0.09) * uRGl.y * wg;
|
|
335
|
+
}
|
|
336
|
+
col += vec3(1., 0.96, 0.93) * wv;
|
|
337
|
+
// rim: thin bright edge + soft inner glow, brightest on the lit / bounce sides
|
|
338
|
+
float facing = dot(gN, normalize(uLight3.xy)); // +1 toward the light
|
|
339
|
+
float lit = pow(max(facing, 0.), 2.) + 0.55 * pow(max(-facing, 0.), 2.);
|
|
340
|
+
float line = clamp(1. - abs(-sd - 0.8) / 1.0, 0., 1.);
|
|
341
|
+
col = mix(col, vec3(1.), line * (0.28 + 0.62 * lit));
|
|
342
|
+
col += vec3(1.) * exp(-(-sd) / 5.) * (0.05 + 0.14 * lit) * uRimGlow;
|
|
343
|
+
col = mix(col, vec3(1.), uRing * smoothstep(6.5, 3.0, -sd) * (0.55 + 0.45 * lit));
|
|
344
|
+
// inner shade on the far side gives the slab volume
|
|
345
|
+
col *= 1. - 0.08 * (1. - edgeX) * max(-facing, 0.) * (1. - lit);
|
|
346
|
+
// travelling glint across the plateau
|
|
347
|
+
vec2 lp = (p - C) / max(uLH, vec2(1.));
|
|
348
|
+
col += exp(-pow((dot(lp, normalize(vec2(1., -0.4))) - uGlint) / 0.1, 2.)) * edgeX * 0.05;
|
|
349
|
+
float cov = clamp(0.5 - sd, 0., 1.) * uOn;
|
|
350
|
+
if (uBead.z > 0.) { // let the bead (the part left in the toggle) fade back to the white knob on its own
|
|
351
|
+
float dMain = sdRoundBox(uLM * (p - uLC), uLH, uLR), dB = length(p - uBead.xy) - uBead.z;
|
|
352
|
+
cov *= mix(1., uBeadA, smoothstep(-3., 3., dMain - dB));
|
|
353
|
+
}
|
|
354
|
+
o = vec4(mix(base, col, cov), 1.);
|
|
355
|
+
}`;
|
|
356
|
+
|
|
357
|
+
// ---------------------------------------------------------------- final: bloom, grain, vignette, dither
|
|
358
|
+
export const FS_FINAL = HEAD + `
|
|
359
|
+
uniform sampler2D uSrc; uniform sampler2D uBloom; uniform sampler2D uGrain;
|
|
360
|
+
uniform float uBloomAmt, uGrainAmt, uFrame, uVig, uFade;
|
|
361
|
+
void main(){
|
|
362
|
+
vec2 p = designP();
|
|
363
|
+
vec2 uv = toUV(p);
|
|
364
|
+
vec3 c = texture(uSrc, uv).rgb;
|
|
365
|
+
c += texture(uBloom, uv).rgb * uBloomAmt;
|
|
366
|
+
// gentle highlight shoulder
|
|
367
|
+
vec3 hi = max(c - 0.82, 0.);
|
|
368
|
+
c = c - hi + hi / (1. + hi * 2.2);
|
|
369
|
+
// vignette
|
|
370
|
+
vec2 v = (p - vec2(960., 560.)) / vec2(1250., 900.);
|
|
371
|
+
c *= 1. - uVig * pow(clamp(dot(v, v), 0., 1.6), 1.25);
|
|
372
|
+
// film grain (seeded per frame), stronger in the mids
|
|
373
|
+
vec2 go = hash22(vec2(uFrame * 0.618, uFrame * 1.303)) * 2048.;
|
|
374
|
+
float g = texture(uGrain, (gl_FragCoord.xy + go) / 2048.).r - 0.5;
|
|
375
|
+
float l = luma(c);
|
|
376
|
+
c += g * uGrainAmt * (0.55 + 0.9 * l * (1.4 - l));
|
|
377
|
+
// triangular dither against banding
|
|
378
|
+
float d = hash12(gl_FragCoord.xy + uFrame * 17.31) + hash12(gl_FragCoord.xy * 1.37 + uFrame * 3.1) - 1.;
|
|
379
|
+
c += d / 255.;
|
|
380
|
+
c *= uFade;
|
|
381
|
+
o = vec4(clamp(c, 0., 1.), 1.);
|
|
382
|
+
}`;
|
|
383
|
+
|
|
384
|
+
// ---------------------------------------------------------------- reel v5.1: frosted-glass letterforms (「玻璃拟态」)
|
|
385
|
+
// The glyph mask (canvas, premultiplied white; g = wave-catch) is the footprint. A narrow full-res blur of it is the bevel
|
|
386
|
+
// height, a wide quarter-res blur is the dome and the drop shadow. The body is the frosted aurora refracted through that
|
|
387
|
+
// surface; a lit rim, a specular edge line, a caustic on the far edge and an inner shade make it a solid glass object.
|
|
388
|
+
export const FS_GLYPH = HEAD + `
|
|
389
|
+
uniform sampler2D uScene; // what lies behind the letters (crisp, render-target orientation)
|
|
390
|
+
uniform sampler2D uFrost; // same, frosted (quarter res)
|
|
391
|
+
uniform sampler2D uMask; // crisp glyph mask (canvas orientation)
|
|
392
|
+
uniform sampler2D uMN; // narrow blur of the mask (full res, canvas orientation)
|
|
393
|
+
uniform sampler2D uMW; // wide blur of the mask (quarter res, canvas orientation)
|
|
394
|
+
uniform vec2 uLight; // toward the key light (design space, y down)
|
|
395
|
+
uniform float uRefr; // refraction offset (px) at full slope
|
|
396
|
+
uniform vec3 uShadow; // drop shadow offset xy (px), strength
|
|
397
|
+
uniform vec3 uSweep; // specular sweep: position (px along the diagonal), width (px), amplitude
|
|
398
|
+
uniform float uLift; // overall frost/white lift of the body
|
|
399
|
+
uniform vec4 uPool; // v5.2: deep-indigo pool in the aurora behind the lockup: centre xy, half size xy (design px)
|
|
400
|
+
uniform vec3 uPoolK; // v5.2: pool amount (0..1), corner radius, falloff (px)
|
|
401
|
+
uniform vec3 uHalo; // v5.2: dark separation halo hugging the glyphs (strength), body gain, rim gain
|
|
402
|
+
uniform float uSat; // saturation of the refracted aurora in the body (v5.1: 1.3)
|
|
403
|
+
vec2 cUV(vec2 p){ return vec2(p.x / 1920., p.y / 1080.); }
|
|
404
|
+
void main(){
|
|
405
|
+
vec2 p = designP();
|
|
406
|
+
vec3 bg = texture(uScene, toUV(p)).rgb;
|
|
407
|
+
vec4 mk = texture(uMask, cUV(p));
|
|
408
|
+
float m = clamp(mk.r, 0., 1.);
|
|
409
|
+
// v5.2: the aurora deepens behind the lockup (a soft indigo pool, hue kept, a touch more saturated) and a soft dark halo
|
|
410
|
+
// hugs each glyph, so the lit glass reads at feed size. The glass body below still refracts the UNdeepened aurora.
|
|
411
|
+
if (uPoolK.x > 0.) {
|
|
412
|
+
float sdp = sdRoundBox(p - uPool.xy, uPool.zw, uPoolK.y);
|
|
413
|
+
float pool = uPoolK.x * (1. - smoothstep(-0.3 * uPoolK.z, uPoolK.z, sdp));
|
|
414
|
+
bg = mix(bg, bg * vec3(0.50, 0.47, 0.72) + vec3(0.004, 0.003, 0.018), pool);
|
|
415
|
+
float hw = texture(uMW, cUV(p)).r;
|
|
416
|
+
bg *= 1. - uHalo.x * uPoolK.x * clamp(hw * 2.2, 0., 1.) * (1. - m);
|
|
417
|
+
}
|
|
418
|
+
// drop shadow (light from the top left -> falls down-right), soft and wide, only outside the glass
|
|
419
|
+
float sh = texture(uMW, cUV(p - uShadow.xy)).r;
|
|
420
|
+
float shN = texture(uMN, cUV(p - uShadow.xy * 0.45)).r;
|
|
421
|
+
bg *= 1. - uShadow.z * clamp(sh * 0.75 + shN * 0.45, 0., 1.) * (1. - m);
|
|
422
|
+
if (m <= 0.002) { o = vec4(bg, 1.); return; }
|
|
423
|
+
float ck = mk.g / max(mk.r, 1e-3); // 0..1 wave catch
|
|
424
|
+
// height field and slopes (design px)
|
|
425
|
+
float e = 1.25, ew = 4.;
|
|
426
|
+
float hN = texture(uMN, cUV(p)).r;
|
|
427
|
+
vec2 gN = vec2(texture(uMN, cUV(p + vec2(e, 0.))).r - texture(uMN, cUV(p - vec2(e, 0.))).r,
|
|
428
|
+
texture(uMN, cUV(p + vec2(0., e))).r - texture(uMN, cUV(p - vec2(0., e))).r) / (2. * e);
|
|
429
|
+
vec2 gW = vec2(texture(uMW, cUV(p + vec2(ew, 0.))).r - texture(uMW, cUV(p - vec2(ew, 0.))).r,
|
|
430
|
+
texture(uMW, cUV(p + vec2(0., ew))).r - texture(uMW, cUV(p - vec2(0., ew))).r) / (2. * ew);
|
|
431
|
+
vec2 slope = -(gN * 7.5 + gW * 5.); // outward-pointing surface slope
|
|
432
|
+
vec3 N = normalize(vec3(slope, 1.));
|
|
433
|
+
float gl = length(gN);
|
|
434
|
+
vec2 nd = gl > 1e-4 ? -gN / gl : vec2(0.); // outward direction of the nearest edge
|
|
435
|
+
float bev = 1. - smoothstep(0.42, 0.97, hN); // 1 at the edge .. 0 on the flat top
|
|
436
|
+
float facing = dot(nd, normalize(uLight)); // +1 edge faces the light
|
|
437
|
+
// body: the frosted aurora bent through the glass (+ slight dispersion toward the rim)
|
|
438
|
+
vec2 off = -N.xy * uRefr;
|
|
439
|
+
vec3 fr;
|
|
440
|
+
fr.r = texture(uFrost, toUV(p + off * 1.08)).r;
|
|
441
|
+
fr.g = texture(uFrost, toUV(p + off)).g;
|
|
442
|
+
fr.b = texture(uFrost, toUV(p + off * 0.92)).b;
|
|
443
|
+
float l = luma(fr);
|
|
444
|
+
fr = max(mix(vec3(l), fr, uSat), 0.);
|
|
445
|
+
vec3 col = fr * uHalo.y + vec3(uLift) + vec3(0.01, 0.012, 0.035);
|
|
446
|
+
// vertical light falloff inside the body: top of each stroke catches the sky, bottom sits in shade
|
|
447
|
+
col += vec3(1.) * 0.07 * clamp(-N.y * 3., -1., 1.);
|
|
448
|
+
// inner shade: the far bevel refracts the dark underside
|
|
449
|
+
col *= 1. - 0.42 * pow(bev, 0.8) * pow(max(-facing, 0.), 1.1);
|
|
450
|
+
// lit rim: the bevel toward the key light reflects it
|
|
451
|
+
col += vec3(1.) * bev * (0.07 + 0.55 * uHalo.z * pow(max(facing, 0.), 1.7));
|
|
452
|
+
// caustic: light through the body focuses on the inner far edge (a thin warm line just inside it)
|
|
453
|
+
float edgeBand = smoothstep(0.34, 0.5, hN) * (1. - smoothstep(0.5, 0.72, hN));
|
|
454
|
+
col += vec3(1., 0.93, 0.86) * edgeBand * pow(max(-facing, 0.), 2.) * 0.42;
|
|
455
|
+
// specular edge: a bright 1-2 px line along the lit outline, fainter all round (the glass edge)
|
|
456
|
+
col = mix(col, vec3(1.), edgeBand * (0.22 + 0.7 * pow(max(facing, 0.), 1.4)));
|
|
457
|
+
// key-light specular on the dome
|
|
458
|
+
vec3 Lk = normalize(vec3(uLight, 0.9));
|
|
459
|
+
float sp = pow(max(dot(reflect(-Lk, N), vec3(0., 0., 1.)), 0.), 24.);
|
|
460
|
+
col += vec3(1.) * sp * 0.55;
|
|
461
|
+
// travelling specular sweep (the glass catches the light) and the 9.0 wave catch
|
|
462
|
+
if (uSweep.z > 0.) {
|
|
463
|
+
float d = dot(p - vec2(960., 540.), normalize(vec2(0.86, 0.5))) - uSweep.x;
|
|
464
|
+
col += vec3(1., 0.98, 0.95) * uSweep.z * exp(-d * d / (uSweep.y * uSweep.y)) * (0.35 + 0.65 * bev);
|
|
465
|
+
}
|
|
466
|
+
col += vec3(1., 0.965, 0.925) * ck * (0.16 + 0.4 * bev);
|
|
467
|
+
o = vec4(mix(bg, col, m), 1.);
|
|
468
|
+
}`;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fps": 30,
|
|
3
|
+
"duration": 10.0,
|
|
4
|
+
"bpm": 120,
|
|
5
|
+
"shots": {
|
|
6
|
+
"sun": [
|
|
7
|
+
0.0,
|
|
8
|
+
2.5
|
|
9
|
+
],
|
|
10
|
+
"stare": [
|
|
11
|
+
2.5,
|
|
12
|
+
4.0
|
|
13
|
+
],
|
|
14
|
+
"fluff": [
|
|
15
|
+
4.0,
|
|
16
|
+
7.5
|
|
17
|
+
],
|
|
18
|
+
"card": [
|
|
19
|
+
7.5,
|
|
20
|
+
10.0
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"badge": 0.0,
|
|
24
|
+
"title": [
|
|
25
|
+
0.2,
|
|
26
|
+
0.267,
|
|
27
|
+
0.333,
|
|
28
|
+
0.4,
|
|
29
|
+
0.467
|
|
30
|
+
],
|
|
31
|
+
"sparkle1": 0.8,
|
|
32
|
+
"aside": 1.317,
|
|
33
|
+
"scratch": 2.5,
|
|
34
|
+
"qmarks": [
|
|
35
|
+
2.567,
|
|
36
|
+
2.633,
|
|
37
|
+
2.7
|
|
38
|
+
],
|
|
39
|
+
"punch2": 3.0,
|
|
40
|
+
"quiet": [
|
|
41
|
+
3.067,
|
|
42
|
+
3.133,
|
|
43
|
+
3.2,
|
|
44
|
+
3.267,
|
|
45
|
+
3.333,
|
|
46
|
+
3.4
|
|
47
|
+
],
|
|
48
|
+
"sweat": [
|
|
49
|
+
3.3,
|
|
50
|
+
3.5
|
|
51
|
+
],
|
|
52
|
+
"wipe": 4.0,
|
|
53
|
+
"warn": 4.9,
|
|
54
|
+
"warn_beeps": [
|
|
55
|
+
4.9,
|
|
56
|
+
5.1
|
|
57
|
+
],
|
|
58
|
+
"slide": [
|
|
59
|
+
5.5,
|
|
60
|
+
6.0
|
|
61
|
+
],
|
|
62
|
+
"drop": 6.0,
|
|
63
|
+
"shock": [
|
|
64
|
+
5.933,
|
|
65
|
+
6.0,
|
|
66
|
+
6.067
|
|
67
|
+
],
|
|
68
|
+
"subline": 6.6,
|
|
69
|
+
"freeze": 7.5,
|
|
70
|
+
"jue": [
|
|
71
|
+
8.1,
|
|
72
|
+
8.167,
|
|
73
|
+
8.233
|
|
74
|
+
],
|
|
75
|
+
"stamp": 8.5,
|
|
76
|
+
"bye": 8.9,
|
|
77
|
+
"outro": 8.5,
|
|
78
|
+
"title_beats": [
|
|
79
|
+
1.0,
|
|
80
|
+
1.5,
|
|
81
|
+
2.0
|
|
82
|
+
],
|
|
83
|
+
"battery": 1.567,
|
|
84
|
+
"charge": [
|
|
85
|
+
1.75,
|
|
86
|
+
2.0,
|
|
87
|
+
2.25
|
|
88
|
+
],
|
|
89
|
+
"tag": [
|
|
90
|
+
4.2,
|
|
91
|
+
4.267,
|
|
92
|
+
4.333,
|
|
93
|
+
4.45
|
|
94
|
+
],
|
|
95
|
+
"push": [
|
|
96
|
+
5.25,
|
|
97
|
+
5.5,
|
|
98
|
+
5.75
|
|
99
|
+
],
|
|
100
|
+
"pushZ": [
|
|
101
|
+
1.4,
|
|
102
|
+
2.0,
|
|
103
|
+
2.9
|
|
104
|
+
],
|
|
105
|
+
"tagOut": 5.05,
|
|
106
|
+
"freeze_hold": 0.267,
|
|
107
|
+
"sting": 3.86,
|
|
108
|
+
"wipe_whoosh": 3.933,
|
|
109
|
+
"badge_fly": 0.1,
|
|
110
|
+
"meter": 7.0,
|
|
111
|
+
"needle": [
|
|
112
|
+
7.0,
|
|
113
|
+
7.133
|
|
114
|
+
],
|
|
115
|
+
"bao": 7.133,
|
|
116
|
+
"ear": 1.5
|
|
117
|
+
}
|