Commit Graph
34 Commits
Author SHA1 Message Date
Brandon Thomas 93f4fe7314 Merge branch 'main' into worktree-agent-ad0c2eed1a8890262
# Conflicts:
#	crates/effects/Cargo.toml
#	crates/ui-egui/src/panels/mod.rs
#	docs/parity.md
2026-10-02 22:27:43 -04:00
Brandon ThomasandClaude Opus 5.5 07330bca6b M6.7: roto brush segmentation + propagation
Graph-cut segmentation (Boykov-Kolmogorov max-flow, GrabCut GMMs, coarse
to fine), optical-flow propagation with band re-segmentation, correction
strokes, Roto Brush & Refine Edge effect with content-keyed derived cache,
roto.* commands (stroke/propagate/span/freeze/unfreeze/clearStrokes/
cancel/options/status), refine-edge matting (guided filter + closed-form)
and decontamination, Freeze job.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 22:20:25 -04:00
Brandon Thomas a51f439d34 Merge branch 'main' into worktree-agent-a758de7c5b6efcc3d
# Conflicts:
#	crates/effects/src/lib.rs
#	crates/render/src/lib.rs
#	docs/parity.md
2026-10-02 21:48:49 -04:00
Brandon ThomasandClaude Opus 5.5 9a11c577f3 M9.11: 3D Channel effects on auxiliary channels
Aux-channel model (effectcraft_raster::channels3d: depth, object/material
ID, normals, UV, coverage, Cryptomatte ranks + manifests, MurmurHash3);
EffectHost::aux; multi-layer OpenEXR channels via the exr crate
(FootageSource::aux); the compositor's depth / layer-ID / Cryptomatte pass
(Renderer::comp_aux) so the effects work on precomps of 3D comps.
3D Channel Extract, Cryptomatte, Depth Matte, Depth of Field, EXtractoR,
Fog 3D, ID Matte, IDentifier.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 21:28:37 -04:00
Brandon ThomasandClaude Opus 5.5 7b815bcbb2 M9.11: Simulation effects (Particle Playground, CC Hair)
Particle Playground: cannon, grid, layer exploder, layer map, gravity,
repel, wall and persistent property mapper; deterministic, stepped from
t=0 through the checkpointed SimCache.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 21:18:33 -04:00
Brandon ThomasandClaude Opus 5.5 9645ff9a66 M6.6: mask tracking + mask interpolation; M12.5: Warp Stabilizer
Mask tracking (track.mask, background job with progress/cancel, one undo
step, Mask Path keys; Tracker panel mask mode; Layer > Mask > Track Mask),
Mask Interpolation panel + mask.interpolate, and the Warp Stabilizer
effect (Effect > Distort, AE parameter groups, warp.analyze/cancel/status,
analysis stored in the effect, invalidation on source/in/out/remap edits,
viewer banner, crop/auto-scale/synthesize edges, track points).
Adds the effects -> track same-layer edge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 21:14:29 -04:00
Brandon ThomasandClaude Opus 5.5 f95a600722 M9.11: Key Light (Keylight 1.2-equivalent keyer) and mocha shape
Key Light is registered under a generic name (Keylight is a vendor
trademark); lookup() resolves "Keylight (1.2)" to it. mocha shape reads a
documented JSON shape format (Mocha's own export format is not public).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 21:11:50 -04:00
Brandon ThomasandClaude Opus 5.5 451f63cc0d M9.11: Blur & Sharpen and Distort effects (CC Radial Blur, Camera-Shake Deblur, CC Flo Motion, Liquify, Rolling Shutter Repair)
Liquify stores its strokes as effect data and replays them into a cached
displacement mesh; liquify.stroke / liquify.clear commands for agents.
Rolling Shutter Repair measures motion with effectcraft-track KLT (new
effects -> track same-layer edge).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 21:08:04 -04:00
Brandon ThomasandClaude Opus 5.5 d9fe03a965 M9.11: Immersive Video effects (all 12 VR effects)
Seam-aware equirectangular processing (wrap-around, pole continuation,
latitude-scaled filters), per-eye stereo layouts, VR Converter between
equirectangular, cube maps (4:3, 3:2, 6:1), sphere map and 2D.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:54:26 -04:00
Brandon ThomasandClaude Opus 5.5 fe81588867 M9.11: OCIO transforms, Color Stabilizer and Color Profile Converter
Built-in minimal OCIO config (ACES2065-1, ACEScg, ACEScct, sRGB, Rec.709,
Rec.2020, Display P3, linear variants, XYZ) from published primaries,
transfer functions and Bradford adaptation; CDL v1.2 maths; .cube/.3dl/.csp
and .cc/.ccc/.cdl file transforms with nearest/trilinear/tetrahedral
interpolation and inverse; displays/views/looks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:46:53 -04:00
Brandon ThomasandClaude Opus 5.5 97cf7e2c02 M9.11: Audio effects (Compressor, Distortion, Gate)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:39:38 -04:00
Brandon ThomasandClaude Opus 5.5 485f562e19 M12.2: gpu compositor and gpu effects
New L3 crate effectcraft-gpu: a wgpu compute backend for the per-frame
compositing walk (layer transforms with the CPU's nearest/bilinear/bicubic
sampling and minification pre-filter, motion-blur accumulation, track
mattes, Preserve Transparency, layer style passes and knockout, all 38
blend modes as a WGSL port of color::blend, 8/16 bpc clamp+quantise,
colour-space conversions). 3D runs, adjustment and wireframe layers run on
the CPU between GPU steps. GPU effects with the CPU semantics: Gaussian,
Fast Box and Directional Blur, Glow, Levels, Curves, Hue/Saturation, Tint,
Fill, Gradient Ramp, Fractal Noise, Drop Shadow, Brightness & Contrast,
Exposure, Invert, Transform (registry gpu badge from effects::GPU_EFFECTS).

render: Backend (Cpu/Gpu/Auto) in RenderOpts, the Accelerator trait and
Renderer::accel, GPU effect chains in the effect stack, hooks for the GPU
walk. Project setting gpu_acceleration (Mercury GPU Acceleration / Software
Only), render.backend command, file.projectSettings renderer. Session and
Render Queue exports carry the accelerator. CLI --gpu and bench --gpu.

Tests compare GPU vs CPU renders (blend modes x bit depths, transforms,
masks, mattes, motion blur, colour management, styles, collapse,
adjustment fallback, every GPU effect) and skip without an adapter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:59:08 -04:00
Brandon Thomas 54e62c0c88 Merge branch 'worktree-agent-a70a415ce57f73911'
# Conflicts:
#	crates/engine/src/commands/mod.rs
#	crates/engine/src/lib.rs
#	crates/ui-egui/src/panels/effect_controls.rs
#	crates/ui-egui/src/panels/mod.rs
#	crates/ui-egui/src/state.rs
2026-10-02 09:22:05 -04:00
Brandon ThomasandClaude Opus 5.5 d6f6a10757 M13.1/M13.2: paint (Brush, Clone Stamp, Eraser) and puppet pins
Paint: non-destructive Paint effect with Brush/Clone/Eraser stroke groups
(Path, Stroke Options, Transform, Duration spans, Write On End keys),
dab rasterizer (diameter/angle/roundness/hardness/spacing/flow/opacity,
pressure dynamics, modes, channels), eraser modes, clone from layer/time,
cache keys include visible strokes. paint.stroke/options/brushPreset/
setCloneSource/removeStroke/presets. Layer panel with paint tools, Paint
and Brushes panels.

Puppet: Puppet effect with meshes and Position/Advanced/Bend/Starch/Overlap
pins; alpha contour -> expansion (exact EDT) -> simplified outline ->
Delaunay with constraint recovery; ARAP (Igarashi 2005) two-step solve with
CG; anti-aliased texture-mapped rendering with overlap depth. puppet.addPin/
movePin/setPin/removePin/mesh/info. Puppet tools in the viewer with mesh
overlay and header options.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:12:10 -04:00
Brandon ThomasandClaude Opus 5.5 08a48cc1e3 M9.7: effect controls widgets (EFF-1/EFF-2)
Angle dial with revolutions (0x+45.0°), point crosshair + on-viewer effect
point controls via a small viewer hook, colour eyedropper sampling the
composited frame, Curves graph editor and Levels histogram/triangles bound
to their params, layer params with a Source/Masks/Effects & Masks companion,
mask (Path) popups, keyframe navigator, drag-to-reorder effect headers.

Engine: effect.copy / effect.paste / effect.reset; effect.remove takes the
selection; Edit > Copy/Paste/Duplicate/Clear act on selected effects; all
undoable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:05:17 -04:00
Brandon ThomasandClaude Opus 5.5 1c0da40173 M9.5: time effects (Echo, Posterize Time, Time Difference, Time Displacement, Timewarp, CC Force Motion Blur, CC Wide Time, Pixel Motion Blur)
EffectHost gains self_at (the layer's source + masks + first N effects at
another layer time) and layer_at (another layer at another comp time);
EffectEnv carries the effect's stack index. The renderer serves these via
Renderer::layer_input, cached in the layer cache under input keys (footage
included, keyed by source time) with a depth guard against recursion.
Time effects are TIME_DEPENDENT so processed-layer keys fold in layer
time; layers with time effects and expressions are not cached.

Also registers the Effect > Audio specs (DSP in effects::audio_fx; the
mixdown integration follows in M11.2). Audio effects are skipped by the
video effect pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 23:42:11 -04:00
Brandon Thomas 1e8768ad18 Merge branch 'worktree-agent-a022a00e662ea8d21'
# Conflicts:
#	crates/media/src/pool.rs
#	crates/render/src/lib.rs
#	crates/render/src/tests.rs
2026-10-01 22:58:51 -04:00
Brandon ThomasandClaude Opus 5.5 8599ac5828 M9.3: Simulation effects (CC Rainfall, CC Snowfall, CC Bubbles, CC Drizzle, CC Star Burst, CC Particle World, CC Particle Systems II, CC Mr. Mercury, CC Ball Action, CC Pixel Polly, CC Scatterize, Card Dance, Caustics, Wave World, Shatter, Foam)
Closed-form weather/bubble/star effects; stepped particle, wave and foam sims through the
checkpointed SimCache (seek-consistent); band-bucketed sprite/piece rasteriser and textured
3D pieces via per-piece inverse homography.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 22:13:51 -04:00
Brandon ThomasandClaude Opus 5.5 8bc6d5ba4f M9.3: Text effects (Numbers, Timecode) + obsolete Basic Text, Path Text, Lightning
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 22:10:04 -04:00
Brandon ThomasandClaude Opus 5.5 17af5c30c1 M9.3: Generate effects (Fractal, Scribble, Stroke, Vegas, Write-on, Paint Bucket, Eyedropper Fill, CC Glue Gun, CC Threads, Audio Spectrum, Audio Waveform)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 22:10:04 -04:00
Brandon ThomasandClaude Opus 5.5 43ebf68fe0 M9.3: Obsolete effects (Basic 3D, Gaussian Blur (Legacy)); move Luma Key, Spill Suppressor, Reduce Interlace Flicker to Obsolete
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 22:03:26 -04:00
Brandon ThomasandClaude Opus 5.5 2c4346a15e M9.3: Color Correction effects (Change Color, Video Limiter, CC Color Neutralizer, PS Arbitrary Map, Lumetri Color)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 22:03:26 -04:00
Brandon ThomasandClaude Opus 5.5 b58167d0c7 M9.3: Noise & Grain effects (Match Grain, Median (Legacy), Curl Noise)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 22:03:26 -04:00
Brandon ThomasandClaude Opus 5.5 5ac5560df9 M9.3: Keying effects (Difference Matte, Inner/Outer Key, Unmult, CC Simple Wire Removal)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 22:03:26 -04:00
Brandon ThomasandClaude Opus 5.5 d98775a931 M9.3: Channel effects (Blend, Calculations, CC Composite, Compound Arithmetic)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 22:03:26 -04:00
Brandon ThomasandClaude Opus 5.5 0afa24b88f M9.3: Transition effects (CC Glass Wipe, CC Image Wipe, CC Jaws, CC Line Sweep, CC Twister, CC WarpoMatic)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 22:02:36 -04:00
Brandon ThomasandClaude Opus 5.5 8503f816ae M9.3: Stylize effects (CC Block Load, CC Burn Film, CC Glass, CC HexTile, CC Mr. Smoothie, CC Plastic)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 22:02:36 -04:00
Brandon ThomasandClaude Opus 5.5 685d6bcd04 M9.3: Perspective + Utility effects (CC Environment, 3D Glasses, HDR Compander)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 21:59:01 -04:00
Brandon ThomasandClaude Opus 5.5 70c7f7c616 M9.3: Distort effects (CC Bender, CC Blobbylize, CC Power Pin, CC Ripple Pulse, CC Slant, CC Smear, CC Split, CC Split 2, Smear, Reshape, Twirl (Legacy), Warp, Detail-preserving Upscale)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 21:59:01 -04:00
Brandon ThomasandClaude Opus 5.5 c91af194f2 M9.3: effect env (masks, layer params, audio, comp timing), sim cache, polyline helpers; module stubs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 21:43:48 -04:00
Brandon ThomasandClaude Opus 5.5 a2ff724ac2 M12.1: render cache + parallel compositing fast paths
- render: LayerCache (content-keyed processed-layer cache: source -> masks ->
  effects, keyed by a hash of the layer's non-transform props evaluated at the
  frame time, solid item, switches, scale; time folded in for clock-driven
  effects / wiggle paths). Static and transform-only layers render once;
  edits only re-render the edited layer. Session + UI frame jobs share it.
- effects: TIME_DEPENDENT list + test that every clock-reading effect is listed.
- raster: affine composite fast path (per-row span clipping, unchecked interior
  bilinear, integer-translation copies, inlined Normal blend), checked against
  composite_warp_reference; box/Gaussian blur without transposes, two
  ping-pong buffers; accumulate_warp so motion blur sums into one buffer
  instead of one full-frame image per sub-sample.
- ui: viewer frame is urgent and jumps the prefetch queue; stale-revision jobs
  are dropped; paused prefetch waits for the viewer frame; "Frame Render Time"
  reports viewer frames only; parallel f32 -> Color32 conversion.
- cli: `frame --bench N` (per-layer/per-effect timings, wall + CPU time) and
  `frame --bench-play N` (consecutive frames with/without the layer cache).
- tests: cache transparency (scrub, edits of values/keys/effects/masks/
  solids/text/timing), hit/miss accounting, time-dependent effects, demo
  cached == uncached, fast warp/blur/accumulate == reference.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 21:34:33 -04:00
Brandon ThomasandClaude Opus 5.5 3a59a8470d M0.9–M0.10: egui frontend (AE-style panels, viewer, timeline, effect controls, dialogs), desktop app with control channel, host wiring; cargo fmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 14:48:31 -04:00
Brandon ThomasandClaude Opus 5.5 4c3b92723b M9.2: effects batch 2 (keying, matte, channel, stylize, noise, perspective, transitions, utility)
Adds 105 effects in new modules (keying, matte, channel, blur2, color2, stylize2, noise, generate2, distort2, perspective, transition, utility) plus shared plane/morphology/guided-filter helpers in util.rs, with 96 new unit tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 14:30:57 -04:00
Brandon ThomasandClaude Opus 5.5 808cd490cd M0.1–M0.7: workspace, time/geom/color/keyframe/project/raster/path/text/effects/render crates
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 14:05:20 -04:00