Skip to content

About

⚡ Production-grade WebAssembly motion design & VFX plugins for EffectCraft

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

12 Commits

Folders and files

Repository files navigation

⚡ CraftPlugins

Production-grade WebAssembly motion design & VFX plugins for EffectCraft

Rust Version Target API Version License: MIT PRs Welcome

English • Русский • 简体中文


🌟 Overview

CraftPlugins is an open-source suite of high-performance visual effects and motion design plugins engineered specifically for EffectCraft (the modern open-source Rust alternative to Adobe After Effects).

Inspired by industry-standard After Effects plugins (Deep Glow, Quick Chromatic Aberration, Sapphire Shake, Displacer Pro), each effect is compiled into a standalone, zero-dependency WebAssembly (.wasm) binary that runs sandboxed, deterministically, and cross-platform (Linux, macOS, Windows) at native-level speeds.

✨ Key Features

  • 🚀 Zero Overhead WASM: Compiled with --target wasm32-unknown-unknown, executing via host-sandboxed WebAssembly with fuel metering and zero native host bloat.
  • 🎨 32-bpc HDR Pipeline: Native processing of linear premultiplied f32 RGBA buffers, preserving full dynamic range and highlight details without banding.
  • 📦 One-Click Hot-Loading: Load .wasm files directly into running EffectCraft sessions via Effect ▸ Load Effect Plug-in… or drop them into your Plug-ins directory.
  • 🎛️ Full Keyframe & Expression Support: Exposes native host properties (sliders, angles, colors, checkboxes, points, popups) directly to the Effect Controls panel and timeline graph editor.

⚡ Instant Download (Ready .wasm Binaries)

Tip

No Rust or compilation needed for artists! Simply download the pre-compiled .wasm file below and load it directly into EffectCraft.

Plugin Architecture Size Latest Release Direct Download
Craft Glow WASM API v1 32 KB v1.0.0 ⬇️ Download craft_glow.wasm
Craft Chromatic WASM API v1 37 KB v1.0.0 ⬇️ Download craft_chromatic.wasm
Craft Camera Shake WASM API v1 40 KB v1.0.0 ⬇️ Download craft_camera_shake.wasm
Craft Displacer WASM API v1 42 KB v1.0.0 ⬇️ Download craft_displacer.wasm
Craft Halftone & Dither WASM API v1 40 KB v1.0.0 ⬇️ Download craft_halftone_dither.wasm
Craft VHS Glitch WASM API v1 42 KB v1.0.0 ⬇️ Download craft_vhs_glitch.wasm
Craft Pixel Sort WASM API v1 48 KB v1.0.0 ⬇️ Download craft_pixel_sort.wasm
Craft Anamorphic Flare WASM API v1 39 KB v1.0.0 ⬇️ Download craft_anamorphic_flare.wasm

🧩 Plugin Suite

Plugin AE Counterpart Category Status Highlights
craft-glow Deep Glow by qwertyonek ✅ Ready Physically accurate inverse-square ($1/r^2$) falloff, luminance threshold, chromatic aberration halo, HDR tinting.
craft-chromatic Quick Chromatic by qwertyonek ✅ Ready Radial (optical lens dispersion) & linear (directional prism) RGB channel split, subpixel bilinear sampling, edge blur.
craft-camera-shake Sapphire S_Shake by qwertyonek ✅ Ready Procedural multi-frequency gradient noise, subpixel translation/rotation, auto-scale compensation, motion blur.
craft-displacer Displacer Pro by qwertyonek ✅ Ready Advanced subpixel displacement mapping, glass refraction, fluid turbulence, radial ripple, chromatic dispersion.
craft-halftone-dither Retro / Halftone by qwertyonek ✅ Ready Matrix ordered dithering (Bayer 4×4 & 8×8), CMYK newspaper halftone screens, retro arcade palettes (GameBoy, CGA, Cyberpunk).
craft-vhs-glitch Universe VHS by qwertyonek ✅ Ready Authentic analog VHS tape damage, tracking noise bar, scanline drift, 2D tape defocus blur, YIQ chroma bleed.
craft-pixel-sort AE Pixel Sorter by qwertyonek ✅ Ready Directional luminance/saturation/hue pixel sorting, two-point thresholding, streak length clamping, jitter.
craft-anamorphic-flare Starglow / Anamorphic by qwertyonek ✅ Ready Hollywood anamorphic streaks, 3-octave exponential diffusion, spectral chromatic prism, sci-fi & gold presets.

📐 Architecture & API v1

EffectCraft plug-ins adhere to the official Plug-in API v1 ABI. Plug-ins have no external imports and communicate through a shared linear memory buffer:

flowchart LR
    A["EffectCraft Host"] -->|"1. ec_alloc(bytes)"| B["WASM Linear Memory"]
    A -->|"2. Write params + pixels"| B
    A -->|"3. ec_render(pixels, w, h...)"| C["Plugin Kernel (In-Place)"]
    C -->|"4. Return 0 (Success)"| A
Loading

Exported Symbols:

  • ec_api_version() -> i32 — Must return 1.
  • ec_manifest_ptr() -> i32 & ec_manifest_len() -> i32 — Memory offset & byte length of the UTF-8 JSON manifest.
  • ec_alloc(bytes: i32) -> i32 — Allocates an 8-byte aligned memory buffer for parameter values and pixels.
  • ec_render(pixels, width, height, params, nparams, time, scale) -> i32 — Processes premultiplied RGBA f32 in-place.

Pixel Contract:

  • Pixels are stored in row-major Premultiplied RGBA f32 ([r, g, b, a]).
  • Channels: 0.0 .. 1.0 (can exceed 1.0 in 32-bpc HDR compositions).
  • Un-premultiply before nonlinear operations: rgb = c[0..3] / a, then re-premultiply upon output: c[0..3] = rgb * a.

🚀 Quick Start & Installation

Option 1: Drop into Plug-ins Folder (Auto-load on startup)

Copy compiled .wasm plugins into your platform settings folder:

  • Linux: ~/.config/effectcraft/Plug-ins/
  • macOS: ~/Library/Application Support/EffectCraft/Plug-ins/
  • Windows: %APPDATA%\EffectCraft\Plug-ins\

Option 2: Load at Runtime

  1. Open EffectCraft.
  2. Select your layer in the timeline or composition viewer.
  3. In the top menu bar, click: Effect ▸ Load Effect Plug-in…
  4. Select your .wasm file. The plugin will immediately register in Effects & Presets and apply to the active layer!

🛠️ Building from Source

Prerequisites

rustup target add wasm32-unknown-unknown

Build All Plugins

# Clone the repository
git clone https://github.com/qwertyonek/craft-plugins.git
cd craft-plugins

# Build all workspace plugins in release mode
cargo build --release --target wasm32-unknown-unknown

Compiled .wasm artifacts will be located in:

target/wasm32-unknown-unknown/release/*.wasm

🤝 Contributing

Contributions, feature requests, and new plugin ideas are warmly welcome!

  1. Fork the Project.
  2. Create your Feature Branch (git checkout -b feat/amazing-plugin).
  3. Commit your Changes (git commit -m 'feat: add amazing-plugin').
  4. Push to the Branch (git push origin feat/amazing-plugin).
  5. Open a Pull Request.

📄 License

Distributed under the MIT License. See LICENSE for more details.

About

⚡ Production-grade WebAssembly motion design & VFX plugins for EffectCraft

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages