agentvfx 0.0.0-stage → 0.3.4
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/AGENTS.md +8 -0
- package/GEMINI.md +1 -0
- package/LICENSE +172 -0
- package/README.md +236 -2
- package/package.json +35 -4
- package/skills/agentvfx/LICENSE +172 -0
- package/skills/agentvfx/NOTICE +44 -0
- package/skills/agentvfx/SKILL.md +90 -0
- package/skills/agentvfx/engine/core/constants.mjs +84 -0
- package/skills/agentvfx/engine/core/flash-constants.mjs +23 -0
- package/skills/agentvfx/engine/core/flash.mjs +240 -0
- package/skills/agentvfx/engine/core/mark.mjs +28 -0
- package/skills/agentvfx/engine/core/palettes.mjs +36 -0
- package/skills/agentvfx/engine/core/schedule.mjs +85 -0
- package/skills/agentvfx/engine/core/templates.mjs +43 -0
- package/skills/agentvfx/engine/core/util.mjs +167 -0
- package/skills/agentvfx/engine/core/validate.mjs +334 -0
- package/skills/agentvfx/engine/node/analysis.mjs +172 -0
- package/skills/agentvfx/engine/node/audio.mjs +621 -0
- package/skills/agentvfx/engine/node/board.mjs +24 -0
- package/skills/agentvfx/engine/node/chrome.mjs +349 -0
- package/skills/agentvfx/engine/node/encode.mjs +110 -0
- package/skills/agentvfx/engine/node/eye.mjs +77 -0
- package/skills/agentvfx/engine/node/footage.mjs +129 -0
- package/skills/agentvfx/engine/node/frame-worker.mjs +39 -0
- package/skills/agentvfx/engine/node/host.mjs +31 -0
- package/skills/agentvfx/engine/node/job.mjs +181 -0
- package/skills/agentvfx/engine/node/png.mjs +112 -0
- package/skills/agentvfx/engine/node/render.mjs +161 -0
- package/skills/agentvfx/engine/node/stage-capture.mjs +187 -0
- package/skills/agentvfx/engine/node/stage-serve.mjs +72 -0
- package/skills/agentvfx/engine/node/stills.mjs +100 -0
- package/skills/agentvfx/engine/node/ws-server.mjs +132 -0
- package/skills/agentvfx/engine/web/gl.mjs +319 -0
- package/skills/agentvfx/engine/web/glsl-common.mjs +78 -0
- package/skills/agentvfx/engine/web/init.js +23 -0
- package/skills/agentvfx/engine/web/prelude.mjs +150 -0
- package/skills/agentvfx/engine/web/render.html +11 -0
- package/skills/agentvfx/engine/web/render.mjs +388 -0
- package/skills/agentvfx/engine/web/scale.mjs +15 -0
- package/skills/agentvfx/engine/web/text.mjs +158 -0
- package/skills/agentvfx/plates/terminalcore/README.md +61 -0
- package/skills/agentvfx/plates/terminalcore/__pycache__/crt.cpython-313.pyc +0 -0
- package/skills/agentvfx/plates/terminalcore/__pycache__/font.cpython-313.pyc +0 -0
- package/skills/agentvfx/plates/terminalcore/__pycache__/gallery.cpython-313.pyc +0 -0
- package/skills/agentvfx/plates/terminalcore/__pycache__/gallery_mats.cpython-313.pyc +0 -0
- package/skills/agentvfx/plates/terminalcore/__pycache__/gallery_room.cpython-313.pyc +0 -0
- package/skills/agentvfx/plates/terminalcore/__pycache__/materials.cpython-313.pyc +0 -0
- package/skills/agentvfx/plates/terminalcore/__pycache__/nodekit.cpython-313.pyc +0 -0
- package/skills/agentvfx/plates/terminalcore/__pycache__/room.cpython-313.pyc +0 -0
- package/skills/agentvfx/plates/terminalcore/__pycache__/shots.cpython-313.pyc +0 -0
- package/skills/agentvfx/plates/terminalcore/__pycache__/textures.cpython-313.pyc +0 -0
- package/skills/agentvfx/plates/terminalcore/__pycache__/wall.cpython-313.pyc +0 -0
- package/skills/agentvfx/plates/terminalcore/crt.py +143 -0
- package/skills/agentvfx/plates/terminalcore/font.py +80 -0
- package/skills/agentvfx/plates/terminalcore/gallery.py +61 -0
- package/skills/agentvfx/plates/terminalcore/gallery_mats.py +144 -0
- package/skills/agentvfx/plates/terminalcore/gallery_room.py +126 -0
- package/skills/agentvfx/plates/terminalcore/materials.py +170 -0
- package/skills/agentvfx/plates/terminalcore/nodekit.py +87 -0
- package/skills/agentvfx/plates/terminalcore/room.py +82 -0
- package/skills/agentvfx/plates/terminalcore/scene.py +219 -0
- package/skills/agentvfx/plates/terminalcore/shots.py +48 -0
- package/skills/agentvfx/plates/terminalcore/textures.py +79 -0
- package/skills/agentvfx/plates/terminalcore/wall.py +103 -0
- package/skills/agentvfx/references/plates.md +22 -0
- package/skills/agentvfx/references/template-format.md +149 -0
- package/skills/agentvfx/references/web.md +63 -0
- package/skills/agentvfx/runtime/agentvfx.js +708 -0
- package/skills/agentvfx/schemas/fx-score.schema.json +98 -0
- package/skills/agentvfx/scripts/export-web.mjs +155 -0
- package/skills/agentvfx/scripts/loop.mjs +129 -0
- package/skills/agentvfx/scripts/make-beat.mjs +133 -0
- package/skills/agentvfx/scripts/plate.mjs +82 -0
- package/skills/agentvfx/scripts/vfx.mjs +173 -0
- package/skills/agentvfx/templates/_test/feedback-counter/fx.json +11 -0
- package/skills/agentvfx/templates/_test/feedback-counter/main.frag +4 -0
- package/skills/agentvfx/templates/_test/feedback-counter/pass0.frag +4 -0
- package/skills/agentvfx/templates/_test/gradient/fx.json +23 -0
- package/skills/agentvfx/templates/_test/gradient/main.frag +5 -0
- package/skills/agentvfx/templates/_test/identity/fx.json +10 -0
- package/skills/agentvfx/templates/_test/identity/main.frag +4 -0
- package/skills/agentvfx/templates/_test/strobe/fx.json +14 -0
- package/skills/agentvfx/templates/_test/strobe/main.frag +6 -0
- package/skills/agentvfx/templates/_test/text-probe/fx.json +15 -0
- package/skills/agentvfx/templates/_test/text-probe/main.frag +6 -0
- package/skills/agentvfx/templates/brutal/NOTES.md +14 -0
- package/skills/agentvfx/templates/brutal/_src/boot-log/def.mjs +57 -0
- package/skills/agentvfx/templates/brutal/_src/boot-log/main.src.frag +129 -0
- package/skills/agentvfx/templates/brutal/_src/build.mjs +33 -0
- package/skills/agentvfx/templates/brutal/_src/halftone-field/def.mjs +72 -0
- package/skills/agentvfx/templates/brutal/_src/halftone-field/main.src.frag +94 -0
- package/skills/agentvfx/templates/brutal/_src/hud-deck/deck-left.src.glsl +100 -0
- package/skills/agentvfx/templates/brutal/_src/hud-deck/deck-right.src.glsl +61 -0
- package/skills/agentvfx/templates/brutal/_src/hud-deck/deck-tiles.src.glsl +153 -0
- package/skills/agentvfx/templates/brutal/_src/hud-deck/def.mjs +82 -0
- package/skills/agentvfx/templates/brutal/_src/hud-deck/main.src.frag +110 -0
- package/skills/agentvfx/templates/brutal/_src/hud-deck/pass0.src.frag +38 -0
- package/skills/agentvfx/templates/brutal/_src/shared/defs.mjs +28 -0
- package/skills/agentvfx/templates/brutal/_src/shared/icons.glsl +72 -0
- package/skills/agentvfx/templates/brutal/_src/shared/lib.glsl +115 -0
- package/skills/agentvfx/templates/brutal/_src/shared/screen.glsl +43 -0
- package/skills/agentvfx/templates/brutal/boot-log/demo-acid.json +1 -0
- package/skills/agentvfx/templates/brutal/boot-log/demo-phosphor.json +1 -0
- package/skills/agentvfx/templates/brutal/boot-log/demo-ultramarine.json +1 -0
- package/skills/agentvfx/templates/brutal/boot-log/fx.json +257 -0
- package/skills/agentvfx/templates/brutal/boot-log/main.frag +242 -0
- package/skills/agentvfx/templates/brutal/collage/_src/00-lib.glsl +73 -0
- package/skills/agentvfx/templates/brutal/collage/_src/10-spectrum-scope.glsl +73 -0
- package/skills/agentvfx/templates/brutal/collage/_src/20-meter-readout-cross.glsl +87 -0
- package/skills/agentvfx/templates/brutal/collage/_src/30-footage-fillers.glsl +92 -0
- package/skills/agentvfx/templates/brutal/collage/_src/40-editorial.glsl +232 -0
- package/skills/agentvfx/templates/brutal/collage/_src/50-typefx.glsl +163 -0
- package/skills/agentvfx/templates/brutal/collage/_src/60-scene-lib.glsl +104 -0
- package/skills/agentvfx/templates/brutal/collage/_src/61-scene-specimen.glsl +71 -0
- package/skills/agentvfx/templates/brutal/collage/_src/62-scene-wiring.glsl +96 -0
- package/skills/agentvfx/templates/brutal/collage/_src/63-scene-fieldcut.glsl +119 -0
- package/skills/agentvfx/templates/brutal/collage/_src/64-scene-pattern.glsl +64 -0
- package/skills/agentvfx/templates/brutal/collage/_src/641-scene-anatomy.glsl +49 -0
- package/skills/agentvfx/templates/brutal/collage/_src/642-scene-deck.glsl +78 -0
- package/skills/agentvfx/templates/brutal/collage/_src/643-scene-bootlog.glsl +60 -0
- package/skills/agentvfx/templates/brutal/collage/_src/644-scene-tunnel.glsl +48 -0
- package/skills/agentvfx/templates/brutal/collage/_src/645-scene-runner.glsl +42 -0
- package/skills/agentvfx/templates/brutal/collage/_src/646-scene-ascii.glsl +66 -0
- package/skills/agentvfx/templates/brutal/collage/_src/647-scene-cubewall.glsl +80 -0
- package/skills/agentvfx/templates/brutal/collage/_src/648-scene-vortex.glsl +46 -0
- package/skills/agentvfx/templates/brutal/collage/_src/649-scene-sticker.glsl +72 -0
- package/skills/agentvfx/templates/brutal/collage/_src/65-scene-main.glsl +1 -0
- package/skills/agentvfx/templates/brutal/collage/_src/650-scene-ribbon.glsl +55 -0
- package/skills/agentvfx/templates/brutal/collage/_src/651-scene-slab.glsl +38 -0
- package/skills/agentvfx/templates/brutal/collage/_src/652-scene-framedial.glsl +79 -0
- package/skills/agentvfx/templates/brutal/collage/_src/653-scene-tilt.glsl +40 -0
- package/skills/agentvfx/templates/brutal/collage/_src/654-scene-marquee.glsl +45 -0
- package/skills/agentvfx/templates/brutal/collage/_src/655-scene-lens.glsl +57 -0
- package/skills/agentvfx/templates/brutal/collage/_src/656-scene-liquid.glsl +35 -0
- package/skills/agentvfx/templates/brutal/collage/_src/657-scene-panelgrid.glsl +75 -0
- package/skills/agentvfx/templates/brutal/collage/_src/658-scene-mirror.glsl +49 -0
- package/skills/agentvfx/templates/brutal/collage/_src/66-scene-main.glsl +27 -0
- package/skills/agentvfx/templates/brutal/collage/_src/90-main.glsl +120 -0
- package/skills/agentvfx/templates/brutal/collage/_src/build.mjs +24 -0
- package/skills/agentvfx/templates/brutal/collage/_src/sync-presets.mjs +16 -0
- package/skills/agentvfx/templates/brutal/collage/demo-bone-lime.json +1 -0
- package/skills/agentvfx/templates/brutal/collage/demo-lime-sparse.json +1 -0
- package/skills/agentvfx/templates/brutal/collage/demo-orange-dense.json +1 -0
- package/skills/agentvfx/templates/brutal/collage/demo-ultra-slow.json +1 -0
- package/skills/agentvfx/templates/brutal/collage/fx.json +4882 -0
- package/skills/agentvfx/templates/brutal/collage/layout.mjs +97 -0
- package/skills/agentvfx/templates/brutal/collage/layouts.json +366 -0
- package/skills/agentvfx/templates/brutal/collage/main.frag +2367 -0
- package/skills/agentvfx/templates/brutal/collage/pass0.frag +265 -0
- package/skills/agentvfx/templates/brutal/halftone-field/demo-acid.json +1 -0
- package/skills/agentvfx/templates/brutal/halftone-field/demo-ascii.json +1 -0
- package/skills/agentvfx/templates/brutal/halftone-field/demo-dither.json +1 -0
- package/skills/agentvfx/templates/brutal/halftone-field/demo-orange.json +1 -0
- package/skills/agentvfx/templates/brutal/halftone-field/demo-phosphor.json +1 -0
- package/skills/agentvfx/templates/brutal/halftone-field/demo-ultramarine.json +1 -0
- package/skills/agentvfx/templates/brutal/halftone-field/fx.json +474 -0
- package/skills/agentvfx/templates/brutal/halftone-field/main.frag +248 -0
- package/skills/agentvfx/templates/brutal/hud-deck/demo-acid.json +1 -0
- package/skills/agentvfx/templates/brutal/hud-deck/demo-night.json +1 -0
- package/skills/agentvfx/templates/brutal/hud-deck/demo-octagon.json +1 -0
- package/skills/agentvfx/templates/brutal/hud-deck/demo-ultramarine.json +1 -0
- package/skills/agentvfx/templates/brutal/hud-deck/fx.json +601 -0
- package/skills/agentvfx/templates/brutal/hud-deck/main.frag +645 -0
- package/skills/agentvfx/templates/brutal/hud-deck/pass0.frag +38 -0
- package/skills/agentvfx/templates/brutal/lattice/demo-cobalt-fine.json +1 -0
- package/skills/agentvfx/templates/brutal/lattice/demo-ink-yellow.json +1 -0
- package/skills/agentvfx/templates/brutal/lattice/demo-vermilion.json +1 -0
- package/skills/agentvfx/templates/brutal/lattice/demo-violet-slow.json +1 -0
- package/skills/agentvfx/templates/brutal/lattice/fx.json +130 -0
- package/skills/agentvfx/templates/brutal/lattice/main.frag +175 -0
- package/skills/agentvfx/templates/brutal/lattice/pass0.frag +29 -0
- package/skills/agentvfx/templates/glitch/block-glitch/demo-mosaic.json +1 -0
- package/skills/agentvfx/templates/glitch/block-glitch/demo-onset.json +1 -0
- package/skills/agentvfx/templates/glitch/block-glitch/demo-static.json +1 -0
- package/skills/agentvfx/templates/glitch/block-glitch/demo-tear.json +1 -0
- package/skills/agentvfx/templates/glitch/block-glitch/fx.json +54 -0
- package/skills/agentvfx/templates/glitch/block-glitch/main.frag +132 -0
- package/skills/agentvfx/templates/glitch/block-glitch/pass0.frag +12 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/NOTES.md +13 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/build-passes.mjs +162 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/demo-chunk.json +1 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/demo-hue.json +1 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/demo-kick.json +1 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/demo-streak.json +1 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/demo-vertical.json +1 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/fx.json +60 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/main.frag +83 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/pass0.frag +64 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/pass1.frag +66 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/pass2.frag +66 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/pass3.frag +66 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/pass4.frag +66 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/pass5.frag +66 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/pass6.frag +66 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/pass7.frag +66 -0
- package/skills/agentvfx/templates/glitch/pixel-sort/pass8.frag +66 -0
- package/skills/agentvfx/templates/glitch/rgb-split/demo-diagonal-stutter.json +1 -0
- package/skills/agentvfx/templates/glitch/rgb-split/demo-hard.json +1 -0
- package/skills/agentvfx/templates/glitch/rgb-split/demo-kick.json +1 -0
- package/skills/agentvfx/templates/glitch/rgb-split/demo-radial.json +1 -0
- package/skills/agentvfx/templates/glitch/rgb-split/fx.json +46 -0
- package/skills/agentvfx/templates/glitch/rgb-split/main.frag +76 -0
- package/skills/agentvfx/templates/glitch/vhs/demo-clean.json +1 -0
- package/skills/agentvfx/templates/glitch/vhs/demo-crash.json +1 -0
- package/skills/agentvfx/templates/glitch/vhs/demo-tape.json +1 -0
- package/skills/agentvfx/templates/glitch/vhs/demo-worn.json +1 -0
- package/skills/agentvfx/templates/glitch/vhs/fx.json +46 -0
- package/skills/agentvfx/templates/glitch/vhs/main.frag +96 -0
- package/skills/agentvfx/templates/impact/impact-1bit/demo-onebit-bayer.json +1 -0
- package/skills/agentvfx/templates/impact/impact-1bit/fx.json +45 -0
- package/skills/agentvfx/templates/impact/impact-1bit/main.frag +64 -0
- package/skills/agentvfx/templates/impact/impact-invert/demo-invert-snap.json +1 -0
- package/skills/agentvfx/templates/impact/impact-invert/fx.json +37 -0
- package/skills/agentvfx/templates/impact/impact-invert/main.frag +44 -0
- package/skills/agentvfx/templates/impact/punch-shake/demo-punch-hard.json +1 -0
- package/skills/agentvfx/templates/impact/punch-shake/fx.json +36 -0
- package/skills/agentvfx/templates/impact/punch-shake/main.frag +62 -0
- package/skills/agentvfx/templates/impact/rgb-hit/demo-rgb-slam.json +1 -0
- package/skills/agentvfx/templates/impact/rgb-hit/fx.json +39 -0
- package/skills/agentvfx/templates/impact/rgb-hit/main.frag +62 -0
- package/skills/agentvfx/templates/impact/signal-cut/demo-lime-hold.json +1 -0
- package/skills/agentvfx/templates/impact/signal-cut/demo-lime.json +1 -0
- package/skills/agentvfx/templates/impact/signal-cut/demo-orange.json +1 -0
- package/skills/agentvfx/templates/impact/signal-cut/demo-ultramarine.json +1 -0
- package/skills/agentvfx/templates/impact/signal-cut/fx.json +83 -0
- package/skills/agentvfx/templates/impact/signal-cut/main.frag +101 -0
- package/skills/agentvfx/templates/impact/signal-cut/pass0.frag +68 -0
- package/skills/agentvfx/templates/impact/speedline-burst/demo-speed-white.json +1 -0
- package/skills/agentvfx/templates/impact/speedline-burst/fx.json +44 -0
- package/skills/agentvfx/templates/impact/speedline-burst/main.frag +68 -0
- package/skills/agentvfx/templates/impact/strobe-burst/demo-strobe-white-16.json +1 -0
- package/skills/agentvfx/templates/impact/strobe-burst/fx.json +42 -0
- package/skills/agentvfx/templates/impact/strobe-burst/main.frag +43 -0
- package/skills/agentvfx/templates/light/anamorphic-streak/demo-anamorphic-cinema.json +10 -0
- package/skills/agentvfx/templates/light/anamorphic-streak/demo-data.json +10 -0
- package/skills/agentvfx/templates/light/anamorphic-streak/fx.json +47 -0
- package/skills/agentvfx/templates/light/anamorphic-streak/main.frag +45 -0
- package/skills/agentvfx/templates/light/anamorphic-streak/pass0.frag +22 -0
- package/skills/agentvfx/templates/light/anamorphic-streak/pass1.frag +16 -0
- package/skills/agentvfx/templates/light/anamorphic-streak/pass2.frag +16 -0
- package/skills/agentvfx/templates/light/anamorphic-streak/pass3.frag +16 -0
- package/skills/agentvfx/templates/light/bloom-glow/demo-clip01-low.json +11 -0
- package/skills/agentvfx/templates/light/bloom-glow/demo-neon-night.json +10 -0
- package/skills/agentvfx/templates/light/bloom-glow/demo-phosphor.json +11 -0
- package/skills/agentvfx/templates/light/bloom-glow/fx.json +53 -0
- package/skills/agentvfx/templates/light/bloom-glow/main.frag +85 -0
- package/skills/agentvfx/templates/light/bloom-glow/pass0.frag +21 -0
- package/skills/agentvfx/templates/light/bloom-glow/pass1.frag +50 -0
- package/skills/agentvfx/templates/light/bloom-glow/pass2.frag +44 -0
- package/skills/agentvfx/templates/light/bloom-glow/pass3.frag +32 -0
- package/skills/agentvfx/templates/light/bloom-glow/pass4.frag +48 -0
- package/skills/agentvfx/templates/light/bloom-glow/pass5.frag +46 -0
- package/skills/agentvfx/templates/light/god-rays/demo-golden-hour.json +10 -0
- package/skills/agentvfx/templates/light/god-rays/demo-point-lamp.json +10 -0
- package/skills/agentvfx/templates/light/god-rays/fx.json +39 -0
- package/skills/agentvfx/templates/light/god-rays/main.frag +54 -0
- package/skills/agentvfx/templates/light/lens-flare/demo-clip01-bar.json +11 -0
- package/skills/agentvfx/templates/light/lens-flare/demo-eye-bar.json +10 -0
- package/skills/agentvfx/templates/light/lens-flare/demo-sun-ghosts.json +10 -0
- package/skills/agentvfx/templates/light/lens-flare/fx.json +49 -0
- package/skills/agentvfx/templates/light/lens-flare/main.frag +86 -0
- package/skills/agentvfx/templates/light/lens-flare/pass0.frag +24 -0
- package/skills/agentvfx/templates/light/light-leak/demo-slit.json +10 -0
- package/skills/agentvfx/templates/light/light-leak/demo-vintage-burn.json +10 -0
- package/skills/agentvfx/templates/light/light-leak/fx.json +40 -0
- package/skills/agentvfx/templates/light/light-leak/main.frag +46 -0
- package/skills/agentvfx/templates/light/light-stage/fx.json +29 -0
- package/skills/agentvfx/templates/light/light-stage/main.frag +56 -0
- package/skills/agentvfx/templates/light/light-sweep/demo-hard-bar.json +12 -0
- package/skills/agentvfx/templates/light/light-sweep/demo-logo-sweep.json +10 -0
- package/skills/agentvfx/templates/light/light-sweep/demo-onset.json +11 -0
- package/skills/agentvfx/templates/light/light-sweep/fx.json +45 -0
- package/skills/agentvfx/templates/light/light-sweep/main.frag +29 -0
- package/skills/agentvfx/templates/light/light-sweep/pass0.frag +17 -0
- package/skills/agentvfx/templates/light/light-sweep/pass1.frag +15 -0
- package/skills/agentvfx/templates/light/neon-saber/demo-hairline.json +10 -0
- package/skills/agentvfx/templates/light/neon-saber/demo-saber-laser.json +10 -0
- package/skills/agentvfx/templates/light/neon-saber/fx.json +48 -0
- package/skills/agentvfx/templates/light/neon-saber/main.frag +27 -0
- package/skills/agentvfx/templates/light/neon-saber/pass0.frag +46 -0
- package/skills/agentvfx/templates/light/neon-saber/pass1.frag +15 -0
- package/skills/agentvfx/templates/psychedelic/echo-flow/demo-trail.json +1 -0
- package/skills/agentvfx/templates/psychedelic/echo-flow/fx.json +38 -0
- package/skills/agentvfx/templates/psychedelic/echo-flow/main.frag +19 -0
- package/skills/agentvfx/templates/psychedelic/echo-flow/pass0.frag +16 -0
- package/skills/agentvfx/templates/psychedelic/echo-flow/pass1.frag +20 -0
- package/skills/agentvfx/templates/psychedelic/echo-flow/pass2.frag +11 -0
- package/skills/agentvfx/templates/psychedelic/echo-flow/pass3.frag +4 -0
- package/skills/agentvfx/templates/psychedelic/hologram-scan/demo-cyan.json +1 -0
- package/skills/agentvfx/templates/psychedelic/hologram-scan/fx.json +36 -0
- package/skills/agentvfx/templates/psychedelic/hologram-scan/main.frag +30 -0
- package/skills/agentvfx/templates/psychedelic/kaleido-fold/demo-six.json +1 -0
- package/skills/agentvfx/templates/psychedelic/kaleido-fold/fx.json +37 -0
- package/skills/agentvfx/templates/psychedelic/kaleido-fold/main.frag +10 -0
- package/skills/agentvfx/templates/psychedelic/kaleido-fold/pass0.frag +34 -0
- package/skills/agentvfx/templates/psychedelic/mosh-melt/demo-classic.json +1 -0
- package/skills/agentvfx/templates/psychedelic/mosh-melt/fx.json +38 -0
- package/skills/agentvfx/templates/psychedelic/mosh-melt/main.frag +20 -0
- package/skills/agentvfx/templates/psychedelic/mosh-melt/pass0.frag +22 -0
- package/skills/agentvfx/templates/psychedelic/sacred/NOTES.md +13 -0
- package/skills/agentvfx/templates/psychedelic/sacred/demo-classic.json +1 -0
- package/skills/agentvfx/templates/psychedelic/sacred/demo-halo.json +1 -0
- package/skills/agentvfx/templates/psychedelic/sacred/demo-slow-tide.json +1 -0
- package/skills/agentvfx/templates/psychedelic/sacred/demo-thermal.json +1 -0
- package/skills/agentvfx/templates/psychedelic/sacred/fx.json +263 -0
- package/skills/agentvfx/templates/psychedelic/sacred/main.frag +109 -0
- package/skills/agentvfx/templates/psychedelic/sacred/pass0.frag +25 -0
- package/skills/agentvfx/templates/psychedelic/sacred/pass1.frag +23 -0
- package/skills/agentvfx/templates/psychedelic/tidal-bands/demo-classic.json +1 -0
- package/skills/agentvfx/templates/psychedelic/tidal-bands/fx.json +37 -0
- package/skills/agentvfx/templates/psychedelic/tidal-bands/main.frag +54 -0
- package/skills/agentvfx/templates/scope/_chrome.glsl +242 -0
- package/skills/agentvfx/templates/scope/goniometer/demo-boot-green.json +1 -0
- package/skills/agentvfx/templates/scope/goniometer/demo-field-lime.json +1 -0
- package/skills/agentvfx/templates/scope/goniometer/demo-field-ultramarine.json +1 -0
- package/skills/agentvfx/templates/scope/goniometer/demo-glow-phosphor.json +1 -0
- package/skills/agentvfx/templates/scope/goniometer/demo-hud-black.json +1 -0
- package/skills/agentvfx/templates/scope/goniometer/fx.json +635 -0
- package/skills/agentvfx/templates/scope/goniometer/main.frag +33 -0
- package/skills/agentvfx/templates/scope/goniometer/pass0.frag +58 -0
- package/skills/agentvfx/templates/scope/goniometer/pass1.frag +43 -0
- package/skills/agentvfx/templates/scope/goniometer/pass2.frag +12 -0
- package/skills/agentvfx/templates/scope/goniometer/pass3.frag +12 -0
- package/skills/agentvfx/templates/scope/goniometer/pass4.frag +12 -0
- package/skills/agentvfx/templates/scope/goniometer/pass5.frag +12 -0
- package/skills/agentvfx/templates/scope/goniometer/pass6.frag +251 -0
- package/skills/agentvfx/templates/scope/scope-polar/demo-boot-green.json +1 -0
- package/skills/agentvfx/templates/scope/scope-polar/demo-field-lime.json +1 -0
- package/skills/agentvfx/templates/scope/scope-polar/demo-field-ultramarine.json +1 -0
- package/skills/agentvfx/templates/scope/scope-polar/demo-glow-phosphor.json +1 -0
- package/skills/agentvfx/templates/scope/scope-polar/demo-hud-black.json +1 -0
- package/skills/agentvfx/templates/scope/scope-polar/fx.json +686 -0
- package/skills/agentvfx/templates/scope/scope-polar/main.frag +39 -0
- package/skills/agentvfx/templates/scope/scope-polar/pass0.frag +84 -0
- package/skills/agentvfx/templates/scope/scope-polar/pass1.frag +49 -0
- package/skills/agentvfx/templates/scope/scope-polar/pass2.frag +12 -0
- package/skills/agentvfx/templates/scope/scope-polar/pass3.frag +12 -0
- package/skills/agentvfx/templates/scope/scope-polar/pass4.frag +12 -0
- package/skills/agentvfx/templates/scope/scope-polar/pass5.frag +12 -0
- package/skills/agentvfx/templates/scope/scope-polar/pass6.frag +251 -0
- package/skills/agentvfx/templates/scope/scope-triggered/demo-boot-green.json +1 -0
- package/skills/agentvfx/templates/scope/scope-triggered/demo-field-lime.json +1 -0
- package/skills/agentvfx/templates/scope/scope-triggered/demo-field-ultramarine.json +1 -0
- package/skills/agentvfx/templates/scope/scope-triggered/demo-glow-phosphor.json +1 -0
- package/skills/agentvfx/templates/scope/scope-triggered/demo-hud-black.json +1 -0
- package/skills/agentvfx/templates/scope/scope-triggered/fx.json +712 -0
- package/skills/agentvfx/templates/scope/scope-triggered/main.frag +36 -0
- package/skills/agentvfx/templates/scope/scope-triggered/pass0.frag +78 -0
- package/skills/agentvfx/templates/scope/scope-triggered/pass1.frag +50 -0
- package/skills/agentvfx/templates/scope/scope-triggered/pass2.frag +12 -0
- package/skills/agentvfx/templates/scope/scope-triggered/pass3.frag +12 -0
- package/skills/agentvfx/templates/scope/scope-triggered/pass4.frag +12 -0
- package/skills/agentvfx/templates/scope/scope-triggered/pass5.frag +12 -0
- package/skills/agentvfx/templates/scope/scope-triggered/pass6.frag +251 -0
- package/skills/agentvfx/templates/scope/spectrogram-scroll/demo-boot-green.json +1 -0
- package/skills/agentvfx/templates/scope/spectrogram-scroll/demo-field-lime.json +1 -0
- package/skills/agentvfx/templates/scope/spectrogram-scroll/demo-field-ultramarine.json +1 -0
- package/skills/agentvfx/templates/scope/spectrogram-scroll/demo-glow-phosphor.json +1 -0
- package/skills/agentvfx/templates/scope/spectrogram-scroll/demo-hud-black.json +1 -0
- package/skills/agentvfx/templates/scope/spectrogram-scroll/fx.json +595 -0
- package/skills/agentvfx/templates/scope/spectrogram-scroll/main.frag +83 -0
- package/skills/agentvfx/templates/scope/spectrogram-scroll/pass0.frag +52 -0
- package/skills/agentvfx/templates/scope/spectrogram-scroll/pass1.frag +251 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/demo-boot-green.json +1 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/demo-field-lime.json +1 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/demo-field-ultramarine.json +1 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/demo-glow-phosphor.json +1 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/demo-hud-black.json +1 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/fx.json +642 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/main.frag +33 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/pass0.frag +56 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/pass1.frag +44 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/pass2.frag +12 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/pass3.frag +12 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/pass4.frag +12 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/pass5.frag +12 -0
- package/skills/agentvfx/templates/scope/xy-phosphor/pass6.frag +251 -0
- package/skills/agentvfx/templates/spectrum/_src/bars-linear/fx.src.json +61 -0
- package/skills/agentvfx/templates/spectrum/_src/bars-linear/main.src.frag +112 -0
- package/skills/agentvfx/templates/spectrum/_src/bars-linear/pass0.src.frag +2 -0
- package/skills/agentvfx/templates/spectrum/_src/bars-mirror/fx.src.json +51 -0
- package/skills/agentvfx/templates/spectrum/_src/bars-mirror/main.src.frag +72 -0
- package/skills/agentvfx/templates/spectrum/_src/bars-mirror/pass0.src.frag +2 -0
- package/skills/agentvfx/templates/spectrum/_src/bass-circle/fx.src.json +56 -0
- package/skills/agentvfx/templates/spectrum/_src/bass-circle/main.src.frag +136 -0
- package/skills/agentvfx/templates/spectrum/_src/bass-circle/pass0.src.frag +2 -0
- package/skills/agentvfx/templates/spectrum/_src/build.mjs +68 -0
- package/skills/agentvfx/templates/spectrum/_src/label-bars/fx.src.json +54 -0
- package/skills/agentvfx/templates/spectrum/_src/label-bars/main.src.frag +102 -0
- package/skills/agentvfx/templates/spectrum/_src/label-bars/pass0.src.frag +2 -0
- package/skills/agentvfx/templates/spectrum/_src/shared/bars-fn.glsl +64 -0
- package/skills/agentvfx/templates/spectrum/_src/shared/bars-pass.glsl +22 -0
- package/skills/agentvfx/templates/spectrum/_src/shared/clock.glsl +7 -0
- package/skills/agentvfx/templates/spectrum/_src/shared/hud.glsl +50 -0
- package/skills/agentvfx/templates/spectrum/_src/shared/stage.glsl +74 -0
- package/skills/agentvfx/templates/spectrum/_src/spectrum-particles/fx.src.json +58 -0
- package/skills/agentvfx/templates/spectrum/_src/spectrum-particles/main.src.frag +119 -0
- package/skills/agentvfx/templates/spectrum/_src/spectrum-particles/pass0.src.frag +33 -0
- package/skills/agentvfx/templates/spectrum/_src/spectrum-radial/fx.src.json +56 -0
- package/skills/agentvfx/templates/spectrum/_src/spectrum-radial/main.src.frag +95 -0
- package/skills/agentvfx/templates/spectrum/_src/spectrum-radial/pass0.src.frag +2 -0
- package/skills/agentvfx/templates/spectrum/_src/waveform-line/fx.src.json +60 -0
- package/skills/agentvfx/templates/spectrum/_src/waveform-line/main.src.frag +98 -0
- package/skills/agentvfx/templates/spectrum/_src/waveform-line/pass0.src.frag +43 -0
- package/skills/agentvfx/templates/spectrum/bars-linear/demo-graph-acid.json +1 -0
- package/skills/agentvfx/templates/spectrum/bars-linear/demo-graph-black.json +1 -0
- package/skills/agentvfx/templates/spectrum/bars-linear/fx.json +632 -0
- package/skills/agentvfx/templates/spectrum/bars-linear/main.frag +233 -0
- package/skills/agentvfx/templates/spectrum/bars-linear/pass0.frag +91 -0
- package/skills/agentvfx/templates/spectrum/bars-mirror/demo-field-acid.json +1 -0
- package/skills/agentvfx/templates/spectrum/bars-mirror/demo-field-ultramarine.json +1 -0
- package/skills/agentvfx/templates/spectrum/bars-mirror/fx.json +539 -0
- package/skills/agentvfx/templates/spectrum/bars-mirror/main.frag +193 -0
- package/skills/agentvfx/templates/spectrum/bars-mirror/pass0.frag +91 -0
- package/skills/agentvfx/templates/spectrum/bass-circle/demo-bracket-black.json +1 -0
- package/skills/agentvfx/templates/spectrum/bass-circle/demo-bracket-ultramarine.json +1 -0
- package/skills/agentvfx/templates/spectrum/bass-circle/fx.json +552 -0
- package/skills/agentvfx/templates/spectrum/bass-circle/main.frag +258 -0
- package/skills/agentvfx/templates/spectrum/bass-circle/pass0.frag +91 -0
- package/skills/agentvfx/templates/spectrum/label-bars/demo-deck-black.json +1 -0
- package/skills/agentvfx/templates/spectrum/label-bars/demo-deck-ultramarine.json +1 -0
- package/skills/agentvfx/templates/spectrum/label-bars/fx.json +552 -0
- package/skills/agentvfx/templates/spectrum/label-bars/main.frag +223 -0
- package/skills/agentvfx/templates/spectrum/label-bars/pass0.frag +91 -0
- package/skills/agentvfx/templates/spectrum/spectrum-particles/demo-cloud-black.json +1 -0
- package/skills/agentvfx/templates/spectrum/spectrum-particles/demo-cloud-ultramarine.json +1 -0
- package/skills/agentvfx/templates/spectrum/spectrum-particles/fx.json +584 -0
- package/skills/agentvfx/templates/spectrum/spectrum-particles/main.frag +240 -0
- package/skills/agentvfx/templates/spectrum/spectrum-particles/pass0.frag +101 -0
- package/skills/agentvfx/templates/spectrum/spectrum-radial/demo-starburst-black.json +1 -0
- package/skills/agentvfx/templates/spectrum/spectrum-radial/demo-starburst-ultramarine.json +1 -0
- package/skills/agentvfx/templates/spectrum/spectrum-radial/fx.json +566 -0
- package/skills/agentvfx/templates/spectrum/spectrum-radial/main.frag +217 -0
- package/skills/agentvfx/templates/spectrum/spectrum-radial/pass0.frag +91 -0
- package/skills/agentvfx/templates/spectrum/waveform-line/demo-strip-acid.json +1 -0
- package/skills/agentvfx/templates/spectrum/waveform-line/demo-strip-black.json +1 -0
- package/skills/agentvfx/templates/spectrum/waveform-line/fx.json +481 -0
- package/skills/agentvfx/templates/spectrum/waveform-line/main.frag +219 -0
- package/skills/agentvfx/templates/spectrum/waveform-line/pass0.frag +48 -0
- package/skills/agentvfx/templates/spectrum/waveform-line/pass1.frag +86 -0
- package/skills/agentvfx/test/_render_light.mjs +38 -0
- package/skills/agentvfx/test/audio-stereo.test.mjs +45 -0
- package/skills/agentvfx/test/audio.test.mjs +257 -0
- package/skills/agentvfx/test/brutal.test.mjs +190 -0
- package/skills/agentvfx/test/concept-collage-layout.test.mjs +236 -0
- package/skills/agentvfx/test/concept-collage-scenes.test.mjs +305 -0
- package/skills/agentvfx/test/concept-collage-typefx.test.mjs +153 -0
- package/skills/agentvfx/test/concept-collage.test.mjs +84 -0
- package/skills/agentvfx/test/concept-lattice.test.mjs +133 -0
- package/skills/agentvfx/test/concept-signal-cut.test.mjs +172 -0
- package/skills/agentvfx/test/credit-overlay.test.mjs +58 -0
- package/skills/agentvfx/test/credit.test.mjs +42 -0
- package/skills/agentvfx/test/doctor.test.mjs +31 -0
- package/skills/agentvfx/test/encode.test.mjs +22 -0
- package/skills/agentvfx/test/fixtures/r7-collage-LAYOUTS.json +5780 -0
- package/skills/agentvfx/test/fixtures/score-bad-duration.json +7 -0
- package/skills/agentvfx/test/fixtures/score-bad-safety.json +8 -0
- package/skills/agentvfx/test/fixtures/score-identity-footage.json +8 -0
- package/skills/agentvfx/test/fixtures/score-missing-template.json +7 -0
- package/skills/agentvfx/test/fixtures/score-ok.json +8 -0
- package/skills/agentvfx/test/fixtures/score-strobe-12hz.json +8 -0
- package/skills/agentvfx/test/fixtures/score-text-probe.json +1 -0
- package/skills/agentvfx/test/flash-audit.test.mjs +150 -0
- package/skills/agentvfx/test/flash.test.mjs +83 -0
- package/skills/agentvfx/test/footage.test.mjs +88 -0
- package/skills/agentvfx/test/glitch.test.mjs +272 -0
- package/skills/agentvfx/test/impact.test.mjs +231 -0
- package/skills/agentvfx/test/imports.test.mjs +39 -0
- package/skills/agentvfx/test/light.test.mjs +200 -0
- package/skills/agentvfx/test/loop.test.mjs +80 -0
- package/skills/agentvfx/test/psychedelic.test.mjs +99 -0
- package/skills/agentvfx/test/render.test.mjs +73 -0
- package/skills/agentvfx/test/sacred.test.mjs +175 -0
- package/skills/agentvfx/test/schema.test.mjs +103 -0
- package/skills/agentvfx/test/scope.test.mjs +306 -0
- package/skills/agentvfx/test/spectrum.test.mjs +165 -0
- package/skills/agentvfx/test/text.test.mjs +142 -0
- package/skills/agentvfx/test/web.test.mjs +397 -0
- package/skills/agentvfx/test-media/SOURCES.md +39 -0
- package/skills/agentvfx/test-media/beat-132.mp3 +0 -0
- package/skills/agentvfx/test-media/clip-01.mp4 +0 -0
- package/skills/agentvfx/test-media/clip-02.mp4 +0 -0
package/AGENTS.md
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# agentvfx for coding agents
|
|
2
|
+
|
|
3
|
+
This repository is one agent skill: `skills/agentvfx/SKILL.md`. Read it before making a VFX clip, a visualizer, a stage loop or a live web effect.
|
|
4
|
+
|
|
5
|
+
- Run every engine command from `skills/agentvfx/` (paths inside a score resolve against the current directory).
|
|
6
|
+
- Requirements: Node.js 20+, Chrome or Chromium with GPU WebGL2, ffmpeg; Blender 5.x only for background plates.
|
|
7
|
+
- Check the machine first: `node scripts/vfx.mjs doctor`.
|
|
8
|
+
- Look at every render's stills and flash report before describing it to anyone.
|
package/GEMINI.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@./skills/agentvfx/SKILL.md
|
package/LICENSE
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# agentvfx licence
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Woojin Go (wjgoarxiv)
|
|
4
|
+
|
|
5
|
+
Required Notice: Copyright (c) 2026 Woojin Go (https://github.com/wjgoarxiv/agentvfx)
|
|
6
|
+
|
|
7
|
+
The agentvfx licence has two parts that apply together: the Additional Terms in Part 1, and the licence text in Part 2,
|
|
8
|
+
which is the PolyForm Noncommercial License 1.0.0 reproduced unchanged. Part 1 adds a permission, a credit condition
|
|
9
|
+
and a restriction to Part 2; it does not change any wording of Part 2. "These terms" in Part 2 means Parts 1 and 2
|
|
10
|
+
together, so everything granted in Part 1 is one of "your licenses" and is subject to Acceptance, Patent Defense and
|
|
11
|
+
Violations. To meet "Notices" in Part 2, give each recipient of the software this whole file, or its URL
|
|
12
|
+
(https://github.com/wjgoarxiv/agentvfx/blob/main/LICENSE); the polyformproject.org URL alone is not enough.
|
|
13
|
+
|
|
14
|
+
## Part 1. Additional Terms
|
|
15
|
+
|
|
16
|
+
### 1. Creator permission
|
|
17
|
+
|
|
18
|
+
If you are an individual (a natural person), you may run the software to render video, images and audio ("output"),
|
|
19
|
+
and use that output in your own creative work for any purpose, including commercial purposes. For example, you may
|
|
20
|
+
release your own music video, earn advertising, subscription, sponsorship or tip income on your own channel, or play
|
|
21
|
+
the output in your own live or VJ performance.
|
|
22
|
+
|
|
23
|
+
For this permission:
|
|
24
|
+
|
|
25
|
+
- you count as an individual if you are a sole proprietor (for example a registered 개인사업자) or self-employed,
|
|
26
|
+
as long as the work is your own;
|
|
27
|
+
- several individuals making a work together under their own names, such as a band, count as individuals together,
|
|
28
|
+
as long as none of them acts for a company or other organisation in doing so;
|
|
29
|
+
- sponsored content on your own channel or in your own work is covered.
|
|
30
|
+
|
|
31
|
+
This permission does not cover:
|
|
32
|
+
|
|
33
|
+
- work for an employer, or on behalf of a company or other organisation (a noncommercial organisation keeps only the
|
|
34
|
+
permissions it already has in Part 2);
|
|
35
|
+
- output made for someone else to publish or use as theirs, such as a client's advertisement or a deliverable for a
|
|
36
|
+
label or a brand;
|
|
37
|
+
- selling, licensing or offering the software, its templates or presets, or rendering as a service, or offering output
|
|
38
|
+
on its own as a product (stock footage, loops, packs, NFTs); output may be sold only as part of a larger work of
|
|
39
|
+
your own.
|
|
40
|
+
|
|
41
|
+
Any other commercial use needs a commercial licence from the licensor. Ask at
|
|
42
|
+
https://github.com/wjgoarxiv/agentvfx/issues.
|
|
43
|
+
|
|
44
|
+
### 2. No AI training
|
|
45
|
+
|
|
46
|
+
Under any permission, you may not use the software, its source, shaders, templates or presets to train, fine-tune or
|
|
47
|
+
evaluate a machine-learning model, or to build a dataset for that purpose. Using an AI agent to operate the software
|
|
48
|
+
for your own use is not training and is allowed.
|
|
49
|
+
|
|
50
|
+
### 3. Output
|
|
51
|
+
|
|
52
|
+
As far as the law allows, you own the output you make. The licensor claims no rights in your output except in any part
|
|
53
|
+
of the software or templates that the output contains. People who only watch, host, stream or receive output need no
|
|
54
|
+
licence from the licensor, and they are not bound by these terms. You are, and you remain responsible for what you
|
|
55
|
+
publish or hand over.
|
|
56
|
+
|
|
57
|
+
### 4. Credit
|
|
58
|
+
|
|
59
|
+
If you publish, stream, publicly show or give anyone output made with agentvfx, under any permission, including
|
|
60
|
+
Part 2, you must credit agentvfx.
|
|
61
|
+
|
|
62
|
+
By default every render burns a small "agentvfx" credit into a corner of the frame. While that credit is visible in
|
|
63
|
+
what you publish, you need nothing more; do not crop, cover or edit it out.
|
|
64
|
+
|
|
65
|
+
If you switch it off in the score (`"credit": { "overlay": false }`), or the output carries no on-screen credit (for
|
|
66
|
+
example a web export), you must instead credit agentvfx in text where viewers can reasonably find it (the description,
|
|
67
|
+
caption, credits, or a page the output links to):
|
|
68
|
+
|
|
69
|
+
Made with agentvfx by Woojin Go - https://github.com/wjgoarxiv/agentvfx
|
|
70
|
+
|
|
71
|
+
Where space is short, `VFX: agentvfx (github.com/wjgoarxiv/agentvfx)` is enough. Every render writes the text credit
|
|
72
|
+
to CREDIT.txt next to the film and into the MP4 metadata; leave both in place.
|
|
73
|
+
|
|
74
|
+
When you give output to someone who will publish it, pass the credit on with it: leave the on-screen credit in the
|
|
75
|
+
frame, or give them the text line and CREDIT.txt. The credit is a condition of every licence under these terms. A
|
|
76
|
+
missing credit can be added within the period that "Violations" in Part 2 allows.
|
|
77
|
+
|
|
78
|
+
### 5. Web export
|
|
79
|
+
|
|
80
|
+
If you use scripts/export-web.mjs, keep the LICENSE file it writes with the exported folder.
|
|
81
|
+
|
|
82
|
+
### 6. Names
|
|
83
|
+
|
|
84
|
+
These terms give no right to use the name "agentvfx", the name "Woojin Go" or the agentvfx logo, except to give the
|
|
85
|
+
credit in section 4 and to say truthfully where a work comes from. If you share a changed copy of the software (a fork),
|
|
86
|
+
you must give it a name that does not contain "agentvfx", you must not present it as agentvfx or as made or endorsed by
|
|
87
|
+
the licensor, and you must say that it is changed from agentvfx, with a link to https://github.com/wjgoarxiv/agentvfx.
|
|
88
|
+
|
|
89
|
+
### 7. Earlier copies and third-party portions
|
|
90
|
+
|
|
91
|
+
Copies obtained under the MIT License before 5 November 2026 keep that licence for those copies only. Every version
|
|
92
|
+
this repository publishes is under these terms. Portions adapted from mexicat/pdoom-video remain under their own
|
|
93
|
+
MIT License, and the capture engine copied from lit-typographic-motion is MIT in its own repository; see
|
|
94
|
+
skills/agentvfx/NOTICE for the files and the notice.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
Part 2 follows, unchanged.
|
|
99
|
+
|
|
100
|
+
# PolyForm Noncommercial License 1.0.0
|
|
101
|
+
|
|
102
|
+
<https://polyformproject.org/licenses/noncommercial/1.0.0>
|
|
103
|
+
|
|
104
|
+
## Acceptance
|
|
105
|
+
|
|
106
|
+
In order to get any license under these terms, you must agree to them as both strict obligations and conditions to all your licenses.
|
|
107
|
+
|
|
108
|
+
## Copyright License
|
|
109
|
+
|
|
110
|
+
The licensor grants you a copyright license for the software to do everything you might do with the software that would otherwise infringe the licensor's copyright in it for any permitted purpose. However, you may only distribute the software according to [Distribution License](#distribution-license) and make changes or new works based on the software according to [Changes and New Works License](#changes-and-new-works-license).
|
|
111
|
+
|
|
112
|
+
## Distribution License
|
|
113
|
+
|
|
114
|
+
The licensor grants you an additional copyright license to distribute copies of the software. Your license to distribute covers distributing the software with changes and new works permitted by [Changes and New Works License](#changes-and-new-works-license).
|
|
115
|
+
|
|
116
|
+
## Notices
|
|
117
|
+
|
|
118
|
+
You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms or the URL for them above, as well as copies of any plain-text lines beginning with `Required Notice:` that the licensor provided with the software. For example:
|
|
119
|
+
|
|
120
|
+
> Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
|
|
121
|
+
|
|
122
|
+
## Changes and New Works License
|
|
123
|
+
|
|
124
|
+
The licensor grants you an additional copyright license to make changes and new works based on the software for any permitted purpose.
|
|
125
|
+
|
|
126
|
+
## Patent License
|
|
127
|
+
|
|
128
|
+
The licensor grants you a patent license for the software that covers patent claims the licensor can license, or becomes able to license, that you would infringe by using the software.
|
|
129
|
+
|
|
130
|
+
## Noncommercial Purposes
|
|
131
|
+
|
|
132
|
+
Any noncommercial purpose is a permitted purpose.
|
|
133
|
+
|
|
134
|
+
## Personal Uses
|
|
135
|
+
|
|
136
|
+
Personal use for research, experiment, and testing for the benefit of public knowledge, personal study, private entertainment, hobby projects, amateur pursuits, or religious observance, without any anticipated commercial application, is use for a permitted purpose.
|
|
137
|
+
|
|
138
|
+
## Noncommercial Organizations
|
|
139
|
+
|
|
140
|
+
Use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization, or government institution is use for a permitted purpose regardless of the source of funding or obligations resulting from the funding.
|
|
141
|
+
|
|
142
|
+
## Fair Use
|
|
143
|
+
|
|
144
|
+
You may have "fair use" rights for the software under the law. These terms do not limit them.
|
|
145
|
+
|
|
146
|
+
## No Other Rights
|
|
147
|
+
|
|
148
|
+
These terms do not allow you to sublicense or transfer any of your licenses to anyone else, or prevent the licensor from granting licenses to anyone else. These terms do not imply any other licenses.
|
|
149
|
+
|
|
150
|
+
## Patent Defense
|
|
151
|
+
|
|
152
|
+
If you make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
|
|
153
|
+
|
|
154
|
+
## Violations
|
|
155
|
+
|
|
156
|
+
The first time you are notified in writing that you have violated any of these terms, or done anything with the software not covered by your licenses, your licenses can nonetheless continue if you come into full compliance with these terms, and take practical steps to correct past violations, within 32 days of receiving notice. Otherwise, all your licenses end immediately.
|
|
157
|
+
|
|
158
|
+
## No Liability
|
|
159
|
+
|
|
160
|
+
***As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.***
|
|
161
|
+
|
|
162
|
+
## Definitions
|
|
163
|
+
|
|
164
|
+
The **licensor** is the individual or entity offering these terms, and the **software** is the software the licensor makes available under these terms.
|
|
165
|
+
|
|
166
|
+
**You** refers to the individual or entity agreeing to these terms.
|
|
167
|
+
|
|
168
|
+
**Your company** is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all organizations that have control over, are under the control of, or are under common control with that organization. **Control** means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
|
|
169
|
+
|
|
170
|
+
**Your licenses** are all the licenses granted to you for the software under these terms.
|
|
171
|
+
|
|
172
|
+
**Use** means anything you do with the software requiring one of your licenses.
|
package/README.md
CHANGED
|
@@ -1,3 +1,237 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<picture>
|
|
4
|
+
<source media="(prefers-reduced-motion: reduce)" srcset="assets/cover-poster.png">
|
|
5
|
+
<img src="assets/cover.webp" width="100%" alt="agentvfx: a wall of reel stills with a beat bracket jumping between them">
|
|
6
|
+
</picture>
|
|
7
|
+
|
|
8
|
+
**Music-reactive VFX, directed by your coding agent.**
|
|
9
|
+
|
|
10
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-agentvfx%20licence-ff5a1f?style=flat-square" alt="agentvfx licence: noncommercial, with a creator permission"></a>
|
|
11
|
+
<img src="https://img.shields.io/badge/node-%E2%89%A520-efece4?style=flat-square&labelColor=1d1d22" alt="Node 20 or newer">
|
|
12
|
+
<img src="https://img.shields.io/badge/runtime%20deps-0-8a8a90?style=flat-square&labelColor=1d1d22" alt="no runtime dependencies">
|
|
13
|
+
<a href="https://agentvfx.vercel.app"><img src="https://img.shields.io/badge/site-agentvfx.vercel.app-7aa2f7?style=flat-square&labelColor=16161e" alt="Site: agentvfx.vercel.app"></a>
|
|
14
|
+
|
|
15
|
+
**[agentvfx.vercel.app](https://agentvfx.vercel.app)** · [Showreel](#-showreel) · [Install](#-install) · [Try it in your browser](#-try-it-in-your-browser) · [Gallery](#-gallery) · [How it works](#-how-it-works) · [Flash safety](#%EF%B8%8F-flash-safety)
|
|
16
|
+
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
You describe the clip. The agent writes a short FX score (template, preset, a few parameters, which part of the music drives what), renders it with WebGL2 in headless Chrome, encodes it with ffmpeg and checks every frame for dangerous flashing before it shows you anything. Backgrounds come from procedural Blender scenes. The same templates also run live in a web page, and the [site](https://agentvfx.vercel.app) runs them in yours.
|
|
20
|
+
|
|
21
|
+
## 🎬 Showreel
|
|
22
|
+
|
|
23
|
+
<div align="center">
|
|
24
|
+
<a href="assets/showreel.mp4"><img src="assets/showreel.webp" width="100%" alt="Showreel: nine looks cut on the beat over the gallery backdrop"></a>
|
|
25
|
+
<br><sub>Nine looks cut on the beat over one Blender backdrop. <a href="assets/showreel.mp4"><b>Watch the 1080p version</b></a> (silent).</sub>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
## 📦 Install
|
|
29
|
+
|
|
30
|
+
agentvfx is a single agent skill, so any agent that reads skills can use it. The quickest way works for most of them:
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
npx skills add wjgoarxiv/agentvfx
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Or use your agent's own plugin command:
|
|
37
|
+
|
|
38
|
+
| Agent | Command |
|
|
39
|
+
| --- | --- |
|
|
40
|
+
| Claude Code | `/plugin marketplace add wjgoarxiv/agentvfx`<br>`/plugin install agentvfx@agentvfx` |
|
|
41
|
+
| Codex CLI | `codex plugin marketplace add wjgoarxiv/agentvfx`<br>`codex plugin add agentvfx@agentvfx` |
|
|
42
|
+
| Gemini CLI | `gemini extensions install https://github.com/wjgoarxiv/agentvfx` |
|
|
43
|
+
| GitHub Copilot CLI | `copilot plugin install wjgoarxiv/agentvfx` |
|
|
44
|
+
| Qwen Code | `qwen extensions install wjgoarxiv/agentvfx` |
|
|
45
|
+
| Pi | `pi install git:github.com/wjgoarxiv/agentvfx` |
|
|
46
|
+
|
|
47
|
+
<details>
|
|
48
|
+
<summary>Other agents, or no installer</summary>
|
|
49
|
+
|
|
50
|
+
Clone the repository and point your agent at `AGENTS.md`. It names the skill file and the folder to run commands from.
|
|
51
|
+
|
|
52
|
+
```sh
|
|
53
|
+
git clone https://github.com/wjgoarxiv/agentvfx
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
The repository also carries plugin manifests for Cursor, Kimi, Antigravity and Devin (`.cursor-plugin/`, `.kimi-plugin/`, `.antigravity-plugin/`, `.devin-plugin/`).
|
|
57
|
+
|
|
58
|
+
</details>
|
|
59
|
+
|
|
60
|
+
Then ask for something like *"a 4-second neon lattice that hits on the kick of this track, looping, 1080p"*.
|
|
61
|
+
|
|
62
|
+
### Requirements
|
|
63
|
+
|
|
64
|
+
- Node.js 20 or newer. There is no `npm install` step and no runtime dependency.
|
|
65
|
+
- Google Chrome or Chromium with GPU WebGL2 (`CHROME_PATH` to override)
|
|
66
|
+
- ffmpeg and ffprobe (`FFMPEG_PATH`, `FFPROBE_PATH`)
|
|
67
|
+
- Blender 5.x, only for background plates (`BLENDER_PATH`)
|
|
68
|
+
|
|
69
|
+
## 🕹 Try it in your browser
|
|
70
|
+
|
|
71
|
+
The site at **[agentvfx.vercel.app](https://agentvfx.vercel.app)** runs the templates live with WebGL2. Nothing is uploaded and no sound plays unless you pick a file of your own.
|
|
72
|
+
|
|
73
|
+
| Page | What you get |
|
|
74
|
+
| --- | --- |
|
|
75
|
+
| [Home](https://agentvfx.vercel.app) | A live hero you play with the pointer. Click for a hit; keys 1 to 4 switch looks. |
|
|
76
|
+
| [Gallery](https://agentvfx.vercel.app/gallery/) | Every example reel with the exact prompt and FX score that made it, one click to copy. |
|
|
77
|
+
| [Matrix](https://agentvfx.vercel.app/matrix/) | Every browser-ready template × preset, 168 in all, drawn as stills. Hover one to see it move. |
|
|
78
|
+
| [Cookbook](https://agentvfx.vercel.app/cookbook/) | Recipes by genre, mood and format: stacks, beat hits, cuts and palettes as ready scores. |
|
|
79
|
+
| [Playground](https://agentvfx.vercel.app/playground/) | Build a score: pick any of the 41 templates that run in the browser (collage renders locally only), stack layers, program hits, bring your own words, track or clip, then copy the score, the prompt or a share link. |
|
|
80
|
+
|
|
81
|
+
Paste the copied prompt into your agent and it renders the full clip on your machine.
|
|
82
|
+
|
|
83
|
+
## ✨ What it makes
|
|
84
|
+
|
|
85
|
+
<table>
|
|
86
|
+
<tr>
|
|
87
|
+
<td width="33%" valign="top"><b>Beat-locked clips</b><br>3 to 5 second renders at up to 1080p 60 fps. Bass, onsets, beats and frequency bands drive each template's parameters.</td>
|
|
88
|
+
<td width="33%" valign="top"><b>Seamless loops</b><br>Ping-pong loops for stage screens and social posts, checked for flashing across the loop point too.</td>
|
|
89
|
+
<td width="33%" valign="top"><b>Blender backdrops</b><br>Procedural scenes rendered from code, used as plates under the WebGL layers.</td>
|
|
90
|
+
</tr>
|
|
91
|
+
<tr>
|
|
92
|
+
<td valign="top"><b>Footage looks</b><br>Run a template over your own video and audio, starting at any second.</td>
|
|
93
|
+
<td valign="top"><b>Live web export</b><br>The templates as a self-contained module for your site: hero backgrounds, hover hits, and visuals that follow any audio element you connect.</td>
|
|
94
|
+
<td valign="top"><b>Flash audit</b><br>Every frame is measured against photosensitivity limits; broadcast-safe mode refuses to export a failing clip.</td>
|
|
95
|
+
</tr>
|
|
96
|
+
</table>
|
|
97
|
+
|
|
98
|
+
## 🖼 Gallery
|
|
99
|
+
|
|
100
|
+
Twenty reels from the site, rendered by the skill at 1080p and looped silently: four seconds forward, then backward. Click one to open its page with the prompt and FX score that made it. A music track drove the motion while rendering; no audio is distributed, and every score points at `your-track.mp3`, so any track works.
|
|
101
|
+
|
|
102
|
+
> [!WARNING]
|
|
103
|
+
> `signal-cut` is a strobe cut on purpose and exceeds the WCAG 2.3.1 flash limit. It shows as a still here; its page asks before it plays.
|
|
104
|
+
|
|
105
|
+
<!-- gallery:start -->
|
|
106
|
+
### Families
|
|
107
|
+
|
|
108
|
+
<table>
|
|
109
|
+
<tr><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/boot-log/"><img src="https://agentvfx.vercel.app/reels/boot-log/preview.webp" width="260" alt="Boot Log"></a><br><sub><code>boot-log</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/collage/"><img src="https://agentvfx.vercel.app/reels/collage/preview.webp" width="260" alt="Collage"></a><br><sub><code>collage</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/halftone-field/"><img src="https://agentvfx.vercel.app/reels/halftone-field/preview.webp" width="260" alt="Halftone Field"></a><br><sub><code>halftone-field</code></sub></td></tr>
|
|
110
|
+
<tr><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/hud-deck/"><img src="https://agentvfx.vercel.app/reels/hud-deck/preview.webp" width="260" alt="Hud Deck"></a><br><sub><code>hud-deck</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/block-glitch/"><img src="https://agentvfx.vercel.app/reels/block-glitch/preview.webp" width="260" alt="Block Glitch"></a><br><sub><code>block-glitch</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/rgb-split/"><img src="https://agentvfx.vercel.app/reels/rgb-split/preview.webp" width="260" alt="Rgb Split"></a><br><sub><code>rgb-split</code></sub></td></tr>
|
|
111
|
+
<tr><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/vhs/"><img src="https://agentvfx.vercel.app/reels/vhs/preview.webp" width="260" alt="Vhs"></a><br><sub><code>vhs</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/signal-cut/"><img src="https://agentvfx.vercel.app/reels/signal-cut/poster.jpg" width="260" alt="Signal Cut"></a><br><sub><code>signal-cut</code> ⚠️ flashing</sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/speedline-burst/"><img src="https://agentvfx.vercel.app/reels/speedline-burst/preview.webp" width="260" alt="Speedline Burst"></a><br><sub><code>speedline-burst</code></sub></td></tr>
|
|
112
|
+
<tr><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/god-rays/"><img src="https://agentvfx.vercel.app/reels/god-rays/preview.webp" width="260" alt="God Rays"></a><br><sub><code>god-rays</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/lens-flare/"><img src="https://agentvfx.vercel.app/reels/lens-flare/preview.webp" width="260" alt="Lens Flare"></a><br><sub><code>lens-flare</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/neon-saber/"><img src="https://agentvfx.vercel.app/reels/neon-saber/preview.webp" width="260" alt="Neon Saber"></a><br><sub><code>neon-saber</code></sub></td></tr>
|
|
113
|
+
<tr><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/echo-flow/"><img src="https://agentvfx.vercel.app/reels/echo-flow/preview.webp" width="260" alt="Echo Flow"></a><br><sub><code>echo-flow</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/kaleido-fold/"><img src="https://agentvfx.vercel.app/reels/kaleido-fold/preview.webp" width="260" alt="Kaleido Fold"></a><br><sub><code>kaleido-fold</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/tidal-bands/"><img src="https://agentvfx.vercel.app/reels/tidal-bands/preview.webp" width="260" alt="Tidal Bands"></a><br><sub><code>tidal-bands</code></sub></td></tr>
|
|
114
|
+
<tr><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/scope-polar/"><img src="https://agentvfx.vercel.app/reels/scope-polar/preview.webp" width="260" alt="Scope Polar"></a><br><sub><code>scope-polar</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/spectrogram-scroll/"><img src="https://agentvfx.vercel.app/reels/spectrogram-scroll/preview.webp" width="260" alt="Spectrogram Scroll"></a><br><sub><code>spectrogram-scroll</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/xy-phosphor/"><img src="https://agentvfx.vercel.app/reels/xy-phosphor/preview.webp" width="260" alt="Xy Phosphor"></a><br><sub><code>xy-phosphor</code></sub></td></tr>
|
|
115
|
+
<tr><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/label-bars/"><img src="https://agentvfx.vercel.app/reels/label-bars/preview.webp" width="260" alt="Label Bars"></a><br><sub><code>label-bars</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/spectrum-particles/"><img src="https://agentvfx.vercel.app/reels/spectrum-particles/preview.webp" width="260" alt="Spectrum Particles"></a><br><sub><code>spectrum-particles</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/spectrum-radial/"><img src="https://agentvfx.vercel.app/reels/spectrum-radial/preview.webp" width="260" alt="Spectrum Radial"></a><br><sub><code>spectrum-radial</code></sub></td></tr>
|
|
116
|
+
</table>
|
|
117
|
+
|
|
118
|
+
### Before and after
|
|
119
|
+
|
|
120
|
+
<table>
|
|
121
|
+
<tr><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/ba-1/"><img src="https://agentvfx.vercel.app/reels/ba-1/preview.webp" width="260" alt="Before / After: Sacred"></a><br><sub><code>ba-1</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/ba-2/"><img src="https://agentvfx.vercel.app/reels/ba-2/preview.webp" width="260" alt="Before / After: Tidal Bands"></a><br><sub><code>ba-2</code></sub></td><td align="center" width="33%"><a href="https://agentvfx.vercel.app/r/ba-3/"><img src="https://agentvfx.vercel.app/reels/ba-3/preview.webp" width="260" alt="Before / After: Kaleido"></a><br><sub><code>ba-3</code></sub></td></tr>
|
|
122
|
+
</table>
|
|
123
|
+
|
|
124
|
+
### Formats
|
|
125
|
+
|
|
126
|
+
<table>
|
|
127
|
+
<tr><td align="center" width="50%"><a href="https://agentvfx.vercel.app/r/fmt-16x9/"><img src="https://agentvfx.vercel.app/reels/fmt-16x9/preview.webp" width="390" alt="Web hero 16:9"></a><br><sub><code>fmt-16x9</code></sub></td><td align="center" width="50%"><a href="https://agentvfx.vercel.app/r/fmt-1x1/"><img src="https://agentvfx.vercel.app/reels/fmt-1x1/preview.webp" width="390" alt="Square 1:1"></a><br><sub><code>fmt-1x1</code></sub></td></tr>
|
|
128
|
+
<tr><td align="center" width="50%"><a href="https://agentvfx.vercel.app/r/fmt-32x9/"><img src="https://agentvfx.vercel.app/reels/fmt-32x9/preview.webp" width="390" alt="LED wall 32:9"></a><br><sub><code>fmt-32x9</code></sub></td><td align="center" width="50%"><a href="https://agentvfx.vercel.app/r/fmt-9x16/"><img src="https://agentvfx.vercel.app/reels/fmt-9x16/preview.webp" width="390" alt="Vertical 9:16"></a><br><sub><code>fmt-9x16</code></sub></td></tr>
|
|
129
|
+
</table>
|
|
130
|
+
|
|
131
|
+
### One song, many looks
|
|
132
|
+
|
|
133
|
+
<table>
|
|
134
|
+
<tr><td align="center" width="100%"><a href="https://agentvfx.vercel.app/r/wall/"><img src="https://agentvfx.vercel.app/reels/wall/preview.webp" width="520" alt="One song, many looks"></a><br><sub><code>wall</code></sub></td></tr>
|
|
135
|
+
</table>
|
|
136
|
+
<!-- gallery:end -->
|
|
137
|
+
|
|
138
|
+
<details>
|
|
139
|
+
<summary>Earlier renders (kept in the 0.3.3 commit): the Blender backdrop, the lattice and 21 collages</summary>
|
|
140
|
+
|
|
141
|
+
These 1280x720 loops left the repository tree in 0.3.4 to keep it small; they stay in the [0.3.3 commit](https://github.com/wjgoarxiv/agentvfx/tree/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels). `lattice-vermilion-fine` and `runner` contain flashing red that exceeds common photosensitive-seizure guidelines (WCAG 2.3.1); they are marked ⚠️. Do not show them to viewers who have not been warned.
|
|
142
|
+
|
|
143
|
+
### Backdrop
|
|
144
|
+
|
|
145
|
+
A procedural Blender scene: a concrete gallery with a CRT wall, built and lit in code.
|
|
146
|
+
|
|
147
|
+
<table>
|
|
148
|
+
<tr><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/plate-gallery.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/plate-gallery.webp" width="260" alt="plate-gallery loop"></a><br><sub><code>plate-gallery</code></sub></td></tr>
|
|
149
|
+
</table>
|
|
150
|
+
|
|
151
|
+
### Lattice
|
|
152
|
+
|
|
153
|
+
A fine vermilion grid that bends and flares on the kick, laid over the gallery plate.
|
|
154
|
+
|
|
155
|
+
<table>
|
|
156
|
+
<tr><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/lattice-vermilion-fine.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/lattice-vermilion-fine.webp" width="260" alt="lattice-vermilion-fine loop"></a><br><sub><code>lattice-vermilion-fine</code> ⚠️ flashing</sub></td></tr>
|
|
157
|
+
</table>
|
|
158
|
+
|
|
159
|
+
### Collages
|
|
160
|
+
|
|
161
|
+
Layered typographic compositions in mixed materials. The cells hold still; what is inside them moves with the music.
|
|
162
|
+
|
|
163
|
+
<table>
|
|
164
|
+
<tr><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/specimen.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/specimen.webp" width="260" alt="specimen loop"></a><br><sub><code>specimen</code></sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/wiring.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/wiring.webp" width="260" alt="wiring loop"></a><br><sub><code>wiring</code></sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/field-cut.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/field-cut.webp" width="260" alt="field-cut loop"></a><br><sub><code>field-cut</code></sub></td></tr>
|
|
165
|
+
<tr><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/pattern-sheet.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/pattern-sheet.webp" width="260" alt="pattern-sheet loop"></a><br><sub><code>pattern-sheet</code></sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/deck.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/deck.webp" width="260" alt="deck loop"></a><br><sub><code>deck</code></sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/bootlog.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/bootlog.webp" width="260" alt="bootlog loop"></a><br><sub><code>bootlog</code></sub></td></tr>
|
|
166
|
+
<tr><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/runner.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/runner.webp" width="260" alt="runner loop"></a><br><sub><code>runner</code> ⚠️ flashing</sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/anatomy.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/anatomy.webp" width="260" alt="anatomy loop"></a><br><sub><code>anatomy</code></sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/tunnel.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/tunnel.webp" width="260" alt="tunnel loop"></a><br><sub><code>tunnel</code></sub></td></tr>
|
|
167
|
+
<tr><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/ascii.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/ascii.webp" width="260" alt="ascii loop"></a><br><sub><code>ascii</code></sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/cube-wall.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/cube-wall.webp" width="260" alt="cube-wall loop"></a><br><sub><code>cube-wall</code></sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/frame-loop-dial.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/frame-loop-dial.webp" width="260" alt="frame-loop-dial loop"></a><br><sub><code>frame-loop-dial</code></sub></td></tr>
|
|
168
|
+
<tr><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/vortex-count.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/vortex-count.webp" width="260" alt="vortex-count loop"></a><br><sub><code>vortex-count</code></sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/slab-shear.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/slab-shear.webp" width="260" alt="slab-shear loop"></a><br><sub><code>slab-shear</code></sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/sticker-slap.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/sticker-slap.webp" width="260" alt="sticker-slap loop"></a><br><sub><code>sticker-slap</code></sub></td></tr>
|
|
169
|
+
<tr><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/lens-wrap.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/lens-wrap.webp" width="260" alt="lens-wrap loop"></a><br><sub><code>lens-wrap</code></sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/liquid-type.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/liquid-type.webp" width="260" alt="liquid-type loop"></a><br><sub><code>liquid-type</code></sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/panel-grid.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/panel-grid.webp" width="260" alt="panel-grid loop"></a><br><sub><code>panel-grid</code></sub></td></tr>
|
|
170
|
+
<tr><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/marquee-stack.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/marquee-stack.webp" width="260" alt="marquee-stack loop"></a><br><sub><code>marquee-stack</code></sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/tilt-tiles.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/tilt-tiles.webp" width="260" alt="tilt-tiles loop"></a><br><sub><code>tilt-tiles</code></sub></td><td align="center"><a href="https://github.com/wjgoarxiv/agentvfx/blob/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/mirror-track.mp4"><img src="https://raw.githubusercontent.com/wjgoarxiv/agentvfx/7dfbdd5f93bef88bf3ec4dfe533b1f87dac35bf3/reels/preview/mirror-track.webp" width="260" alt="mirror-track loop"></a><br><sub><code>mirror-track</code></sub></td></tr>
|
|
171
|
+
</table>
|
|
172
|
+
|
|
173
|
+
</details>
|
|
174
|
+
|
|
175
|
+
## 🔒 What it runs, writes and sends
|
|
176
|
+
|
|
177
|
+
- **Runs:** `node scripts/vfx.mjs` from `skills/agentvfx/`, which starts headless Chrome or Chromium (driven over `--remote-debugging-pipe`, no debugging port), `ffmpeg`/`ffprobe` to encode and analyse, and Blender 5.x only when a score asks for a background plate.
|
|
178
|
+
- **Writes:** renders, stills and reports into the folder passed as `--out`, plus a throwaway Chrome profile.
|
|
179
|
+
- **Sends:** nothing. The engine makes no outbound network requests and has no telemetry. The optional live frame server listens on `127.0.0.1` only, on a random port. Clips come from deterministic shader templates, not from a generative model.
|
|
180
|
+
|
|
181
|
+
## 🔧 How it works
|
|
182
|
+
|
|
183
|
+
Engine commands run from `skills/agentvfx/`:
|
|
184
|
+
|
|
185
|
+
```sh
|
|
186
|
+
cd skills/agentvfx
|
|
187
|
+
node scripts/vfx.mjs doctor # checks Chrome, WebGL2, ffmpeg, Blender
|
|
188
|
+
node scripts/vfx.mjs list # templates and presets
|
|
189
|
+
node scripts/vfx.mjs render test/fixtures/score-ok.json --out out/first --width 640 --height 360
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Then open `out/first/stills/sheet.png`. For a footage look with the bundled demo media, try `templates/brutal/lattice/demo-vermilion.json`. [`SKILL.md`](skills/agentvfx/SKILL.md) covers scores, audio bindings, plates, loops and the web export; [`references/web.md`](skills/agentvfx/references/web.md) has the browser API.
|
|
193
|
+
|
|
194
|
+
## ⚠️ Flash safety
|
|
195
|
+
|
|
196
|
+
<details>
|
|
197
|
+
<summary>How flashing is measured and what the gallery passes</summary>
|
|
198
|
+
|
|
199
|
+
Strobe and impact templates can exceed photosensitivity limits on purpose, for stage use. Every render writes a flash audit. `broadcast-safe` mode enforces the limits, and `safeVariant` renders a tamed copy beside the original. Templates that can flash ship `safeSubstitute` values; the site runs them only with those values locked, and keeps flash-capable templates without safe values render-only.
|
|
200
|
+
|
|
201
|
+
All twenty-nine site reels pass the audit, including across the loop point; `signal-cut` shows its flash-safe version there. Of the earlier renders, twenty-one pass (`cube-wall` and `tilt-tiles` hold for six frames at each turn to stay inside the limit) and the two marked ⚠️ do not.
|
|
202
|
+
|
|
203
|
+
Live effects carry a flash guard: the browser runtime checks every shown frame with the audit's own detector and never shows a frame that would break the limit. It stops the effect instead, and the page can reset and resume (see [the web reference](skills/agentvfx/references/web.md)). On the site, all four hero looks and twenty-five flash-rated playground templates, with every slider pushed to three quarters of its range, were captured for ten seconds under scripted pointer input and checked with the same audit. All pass except `signal-cut`, which showed two single red transitions six seconds apart: no flash within any one second, but the audit counts the pair over the whole capture.
|
|
204
|
+
|
|
205
|
+
</details>
|
|
206
|
+
|
|
207
|
+
## 🙏 Credits
|
|
208
|
+
|
|
209
|
+
- Capture engine adapted from LitClaude lit-typographic-motion and mexicat/pdoom-video (both MIT); see [`NOTICE`](skills/agentvfx/NOTICE).
|
|
210
|
+
- Demo footage `clip-01.mp4` and `clip-02.mp4`: public-domain films from the Internet Archive ([sources](skills/agentvfx/test-media/SOURCES.md)). `beat-132.mp3` is generated by `scripts/make-beat.mjs`.
|
|
211
|
+
- Fonts are not bundled. The collages name Monument Extended, Pretendard and MesloLGS NF; without them the text falls back to generic families and looks different from the gallery.
|
|
212
|
+
|
|
213
|
+
## 📄 License
|
|
214
|
+
|
|
215
|
+
agentvfx uses the **agentvfx licence** ([`LICENSE`](LICENSE)): the PolyForm Noncommercial License 1.0.0, reproduced unchanged as Part 2, plus Additional Terms in Part 1. It is source-available, not open source.
|
|
216
|
+
|
|
217
|
+
**Free for noncommercial use, and for individual creators in their own work, commercially too.** If you are an individual (a sole proprietor or a band of individuals counts), you can run agentvfx and use the clips you render in your own work: your music video, your channel and its ads or sponsors, your own VJ or live set.
|
|
218
|
+
|
|
219
|
+
**Needs a commercial licence** (ask in [Issues](https://github.com/wjgoarxiv/agentvfx/issues)): companies and employers, client work or output made for someone else to publish, paid rendering services, selling or reselling the tool, its templates, or the clips on their own (stock, loops, packs).
|
|
220
|
+
|
|
221
|
+
**Forks need their own name.** You may not call a changed copy agentvfx or present it as the original; give it a name without "agentvfx", say it is changed from agentvfx and link back here.
|
|
222
|
+
|
|
223
|
+
**Not allowed under any permission:** training, fine-tuning or evaluating a model on the code, shaders or templates, or building a dataset for that. Having your own coding agent operate agentvfx is fine.
|
|
224
|
+
|
|
225
|
+
**Credit is required for anything you publish.** Every render burns a small `agentvfx` credit into a corner of the frame; leave it in. If you turn it off with `"credit": { "overlay": false }` in the score, put this line in the description, caption or credits instead (it is also in `CREDIT.txt` next to every film):
|
|
226
|
+
|
|
227
|
+
```text
|
|
228
|
+
Made with agentvfx by Woojin Go - https://github.com/wjgoarxiv/agentvfx
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
When you hand a clip to someone who will publish it, pass the credit on with it. The folder that `export-web` writes carries its own `LICENSE`; keep it with the files.
|
|
232
|
+
|
|
233
|
+
> 한국어 요약: 비상업 사용은 자유입니다. 개인(개인사업자, 개인들로 이뤄진 밴드 포함)은 자기 작품(뮤직비디오, 자기 채널의 광고와 스폰서 수익, 자기 VJ 공연)에 렌더 결과를 상업적으로도 쓸 수 있습니다. 회사, 고용주, 의뢰 작업(남이 게시할 결과물), 유료 렌더 서비스, 도구나 클립의 단독 판매, AI 학습 용도는 허용되지 않으며 상업 라이선스가 필요합니다. 코드를 고쳐 배포(포크)할 때는 "agentvfx"가 들어가지 않는 새 이름을 쓰고, agentvfx를 고친 것임을 밝히고 이 저장소 링크를 달아야 합니다. 게시하는 모든 결과물에는 크레딧이 필요합니다. 기본으로 화면 모서리에 작은 `agentvfx` 표시가 들어가며, 끄면(`"credit": { "overlay": false }`) 설명란이나 크레딧에 위 문구를 넣어야 합니다. 결과물을 남에게 넘길 때는 크레딧도 함께 전달하세요.
|
|
234
|
+
|
|
235
|
+
The parts adapted from mexicat/pdoom-video keep their MIT licence ([`NOTICE`](skills/agentvfx/NOTICE) lists the files). To cite agentvfx in a paper or write-up, use [`CITATION.cff`](CITATION.cff).
|
|
236
|
+
|
|
237
|
+
<div align="center"><sub><a href="https://agentvfx.vercel.app">Site</a> · <a href="#-showreel">Showreel</a> · <a href="#-install">Install</a> · <a href="#-gallery">Gallery</a> · <a href="skills/agentvfx/SKILL.md">SKILL.md</a> · <a href="LICENSE">License</a></sub></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,37 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentvfx",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.3.4",
|
|
4
|
+
"description": "Agent-directed, music-reactive VFX clips: the agent writes an FX score, the engine renders WebGL2 templates with optional Blender plates, audits every frame for flashes, and exports silent loops or live web effects.",
|
|
5
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
6
|
+
"author": "wjgoarxiv",
|
|
7
|
+
"homepage": "https://agentvfx.vercel.app",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/wjgoarxiv/agentvfx.git"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"pi-package",
|
|
14
|
+
"vfx",
|
|
15
|
+
"music-visualizer",
|
|
16
|
+
"webgl",
|
|
17
|
+
"motion-graphics",
|
|
18
|
+
"agent-skill",
|
|
19
|
+
"blender"
|
|
20
|
+
],
|
|
21
|
+
"files": [
|
|
22
|
+
"skills/",
|
|
23
|
+
"!skills/agentvfx/out/",
|
|
24
|
+
"LICENSE",
|
|
25
|
+
"README.md",
|
|
26
|
+
"AGENTS.md",
|
|
27
|
+
"GEMINI.md"
|
|
28
|
+
],
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": ">=20"
|
|
31
|
+
},
|
|
32
|
+
"pi": {
|
|
33
|
+
"skills": [
|
|
34
|
+
"./skills"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
}
|