Commit Graph

248 Commits

Author SHA1 Message Date
Brandon Thomas 81ac7151bc M13.3: CameraSolve distortion field in UI test after merge
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:53:56 -04:00
Brandon Thomas 104c154194 Merge main into M13.3 (tracking completion)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:36:19 -04:00
Brandon Thomas d209fa001f M13.3: face tracking methods, Face Track Points / Measurements, camera lens distortion, docs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:36:12 -04:00
Brandon Thomas 0bce3f2e49 M13.3: Subspace Warp content-preserving mesh warp, face tracker library
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:08:23 -04:00
Brandon Thomas f713eb9bfd Merge branch 'worktree-agent-a84b59936d09d9772' 2026-10-03 03:45:57 -04:00
Brandon Thomas bfeab98913 Merge branch 'main' into worktree-agent-a84b59936d09d9772 2026-10-03 03:43:46 -04:00
Brandon Thomas 0ed7bf69af Merge main into M13.6 panels and content tools (Footage window label on the real panel; no stubs left)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:43:46 -04:00
Brandon Thomas 4210f00302 M14.5: fmt after merge
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:40:59 -04:00
Brandon Thomas 871362ba96 Merge branch 'worktree-agent-aba044eaf08eded94'
# Conflicts:
#	crates/render/src/three_d/compose.rs
2026-10-03 03:33:36 -04:00
Brandon Thomas fa27d000ea Merge main into M14.5 (settings and menus)
Display Color Space setting joins the live list; View3D::Default maps to view.3d.default for
the Assign Shortcut submenu; stub tests use the stubs that remain.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:29:39 -04:00
Brandon Thomas a5be68499e Merge main into M13.6 panels and content tools
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:23:13 -04:00
Brandon Thomas e362cae4c7 M13.6: panel polish (log-density scopes, narrow-panel layouts) and an offscreen panels snapshot test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:21:30 -04:00
Brandon Thomas ebcb8c95ce Merge branch 'worktree-agent-a8dea01e1a1d42946' 2026-10-03 03:18:47 -04:00
Brandon Thomas b29d833b2d M13.6: Lumetri Scopes, Footage, Media Browser, Metadata, Progress and Content-Aware Fill panels; Content-Aware Fill, Scene Edit Detection, Auto-trace, Align Video to Data
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:12:36 -04:00
Brandon Thomas b17d2c05e6 Merge main into M14.5 (settings and menus)
Reconciled with main's keyframe labels (same Keyframe::label field; keys.setLabel and
keys.selectLabelGroup from main are kept, M14.5's duplicates removed; Edit ▸ Label on
selected keys delegates to the label helper), proxies (RenderOpts::proxy next to
nested_switches/draft_shadows), offloaded renders (Work carries nested_switches), wasm
audio pump (preview mix rate), variable font axes and mask feather points.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:11:45 -04:00
Brandon Thomas e7fdd6fdbd Merge main into M12.7 (environment background layers keep their 3D runs on the CPU path)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:03:21 -04:00
Brandon Thomas f85468c694 M12.7: docs (architecture, parity, gpu crate docs)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:00:29 -04:00
Brandon Thomas c4a8c141b5 M12.7: bench --gpu adds an adjustment-layer comp, speedup and GPU-vs-CPU agreement columns
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:59:57 -04:00
Brandon Thomas ea3e983876 Merge GPU colour effects into M12.7 (docs/effects.md regenerated: GPU badges)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:54:53 -04:00
Brandon Thomas 7c9d865d19 Merge branch 'worktree-agent-a15cecfec57d5290d' 2026-10-03 02:52:40 -04:00
Brandon Thomas 01701193c4 M7.7: merge fixes (Exposure param path, remaining stubs list, effects doc)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:51:56 -04:00
Brandon Thomas 79d3d65478 Merge GPU blur/transition/generate effects into M12.7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:47:46 -04:00
Brandon Thomas be27a910f5 Merge GPU distort/stylize effects into M12.7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:47:03 -04:00
Brandon Thomas 91ab3a3fc5 M12.7: GPU colour effects (Color Balance, Vibrance, Lumetri, Black & White, Tritone, Colorama, Channel Mixer, Selective Color, Linear Color Key, Key Light)
fx_color kernels mirror the CPU effects operation for operation: one per-pixel
pass for the point effects, Lumetri with its Sharpen luminance blur, and Key
Light's matte pipeline (pre-blur, clip, rollback, despot, shrink/grow, softness,
edge band) as plane passes. CPU fallback: Key Light with Inside/Outside masks or
Hard Colour after Screen Softness, Colorama with Interpolate Palette off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:46:52 -04:00
Brandon Thomas c8623b1864 M12.7: GPU blur/transition/generate effects (radial, camera lens, CC radial fast, wipes, venetian, cell pattern, checkerboard, grid, 4-color, noise, add grain)
Kernels in fx_generate.wgsl mirror the CPU effects; wipe edges use f64
per-column/per-row terms uploaded as (hi, lo) pairs. CPU helpers shared
with the GPU are now public (camera_lens_spans, gen_mode, pattern_kind,
GrainLook, place_layer). GPU tests in tests_fx_generate.rs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:46:09 -04:00
Brandon Thomas f855a4b55b M14.5: wire the remaining settings; keyframe assistants and labels; AE menu entries
Settings: 56 of 59 not-yet-wired settings now change behaviour (nested-comp switches,
constant vertex count, related-item time sync, match-name pick whip, split-layer order,
Home on open, motion path span, internal wireframes, zoom quality, label-coloured tabs,
mask colour cycling, gradients, grid/guide styles, text engine, font preview/recent/native
names, missing frames, unlabeled alpha, drag import, default output folder, segmenting,
bit depth names, preview sample rate, disk/media/conformed-audio caches, RAM reserve and
low-memory reduction, Video Preview window, 3D reference axes/extended viewer/draft
shadows, script file gate + File.execute warning, expression editor options and error
banner). Three stay display-only and are documented.

Features: Convert Audio to Keyframes, RPF Camera Import (JSON/CSV camera data),
keyframe colour labels + Select Keyframe Label Group, Recent Animation Presets.
Menus: Edit > History, File > Import Recent Footage, Replace Footage > With Layered
Comp, Save a Copy As XML (.ecprojx, opens again), Composition > VR (Create VR
Environment, Extract Cubemap), Assign Shortcut to 3D view / workspace, Window viewer
labels + open viewers, Help > System Compatibility Report / Enable Logging / Reveal
Logging File. Dynamic menu nodes (@dynamic:…) shared by the egui and native menus.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:45:44 -04:00
Brandon Thomas 0e3b354520 M12.7: GPU particles (CC Particle World, CC Particle Systems II, Particle Playground cannon): compute-shader simulation with GPU checkpoints, CPU as the oracle
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:44:36 -04:00
Brandon Thomas fcc09cf095 M12.7: GPU distort/stylize effects (Turbulent Displace, Displacement Map, Wave Warp, Ripple, Twirl, Bulge, CC Lens, Mesh Warp, Mosaic, Find Edges, Emboss)
Compute kernels in shaders/fx_distort.wgsl mirroring the CPU effects; per-row/column
structure (map coordinates, wave phase, tile bounds, mesh triangle buckets) is computed
in f64 on the CPU and uploaded. Displacement Map fetches its map layer through the
effect host as the CPU does and samples it on the GPU. CPU oracle tests in
tests_fx_distort.rs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:42:43 -04:00
Brandon Thomas 86b8e24417 Merge branch 'main' into worktree-agent-a15cecfec57d5290d
# Conflicts:
#	crates/effects/src/ocio.rs
#	crates/engine/src/commands/stubs.rs
#	docs/parity.md
2026-10-03 02:26:19 -04:00
Brandon Thomas 9994f5d309 M7.7: viewer and colour completion
View > Switch 3D View > Default, Split with New Locked Viewer, Use Display Color
Management (sRGB/P3 display in Settings > Previews), Simulate Output (Rec. 709/2020,
P3, sRGB, Linear, NTSC, PAL, Mac 1.8, Custom; Preserve RGB). Project Settings: Color
Engine (OCIO built-in config with ACEScg/ACES2065-1 working spaces), HDR clip/compand/
tone map, output space incl. Rec. 2100 PQ/HLG (SMPTE ST 2084, BT.2100, BT.2408
reference white; GPU curves too), Time Display Feet + Frames (35mm/16mm) display and
entry. OCIO effects read custom .ocio configs (YAML subset; Matrix/File/Exponent/Log/
LogAffine/CDL/Range/Group transforms, roles, displays/views).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:25:56 -04:00
Brandon Thomas 9a6389db86 M12.7: GPU effect family modules (colour, distort, generate) scaffolding; clippy fixes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:25:12 -04:00
Brandon Thomas 878b47b5ed M12.7: adjustment layers on the GPU (effect stacks resident on the device, CPU fallback per non-GPU effect)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:23:01 -04:00
Brandon Thomas b8a56eb4a9 M13.6: scopes, content-aware fill (PatchMatch/flow propagation/membrane), cut detection and auto-trace algorithms
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:21:14 -04:00
Brandon Thomas be282ce194 Merge main into M12.7 (bokeh DOF: the GPU 3D path takes the CPU's bokeh-blurred plane buffers)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:17:50 -04:00
Brandon Thomas aafe46e091 M12.7: Classic 3D runs on the GPU (per-pixel depth sort, lights, ray-cast shadows, DOF); Auto sends 3D comps to the GPU
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:15:01 -04:00
Brandon Thomas afd69fb97c Merge branch 'worktree-agent-a2255b65f530fbf80' 2026-10-03 00:44:59 -04:00
Brandon Thomas d0197a084c Merge main into M13.5 long-tail polish
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:35:54 -04:00
Brandon Thomas 8fc0e257ff M13.5: new StrokeStyle/ShapePath fields in the merged SVG and PSD importers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:35:39 -04:00
Brandon Thomas e3ae230387 Merge branch 'worktree-agent-a856b07f7d85d575f' 2026-10-03 00:28:01 -04:00
Brandon Thomas 8696d1e9ba M7.7: camera/light rigs and Advanced 3D motion blur, blend modes, track mattes
Layer > Camera > Create Stereo 3D Rig (left/right eye comps with expression-linked eye
cameras, Stereo 3D Controls effect, stereo comp through 3D Glasses), Create Orbit Null,
Create Cameras from 3D Model; Layer > Light > Create Lights from 3D Model
(KHR_lights_punctual), Control Light with Camera, Create Environment Light Background
Layer (equirectangular sky drawn through the camera). glTF cameras and punctual lights
are parsed by effectcraft-model.

Advanced 3D: per-sample motion blur over the comp shutter, and blend modes / track
mattes / Preserve Transparency composited through the 2D path in depth order.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:27:47 -04:00
Brandon Thomas a4f32f8df2 Merge main into M13.5 long-tail polish
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:25:09 -04:00
Brandon Thomas 08daf72e3f M13.5: parity notes for the long-tail polish
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:24:37 -04:00
Brandon Thomas 7537eea85c M13.5: Animate Text > Variable Font Axes
Text: text.animatorFontAxes (replaces the stub) lists the layer font's
variation axes (skrifa) or adds an animator property that offsets one axis
(weighted by the selectors, from the axis default); the renderer redraws each
character's outline at its design-space position (cached per location). The
Timeline's Animate: menu lists the font's axes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:24:05 -04:00
Brandon Thomas b6e1f3ad0c Merge branch 'worktree-agent-a387e042a6a5de07f' 2026-10-03 00:23:30 -04:00
Brandon Thomas 1d965bd596 Merge main into M9.12 effect fidelity work
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:23:15 -04:00
Brandon Thomas 5b4e936e9d M13.5: ROI resize handles, Pan Behind snapping, 3D reference axes
Viewer: the region of interest has corner and edge handles that resize it
from the opposite corner/edge; Pan Behind snaps the anchor point (layer
features, guides, grid) and measures from the press point (it lagged by the
drag threshold); Choose Grid and Guide Options > 3D Reference Axes toggles a
world-axis triad seen through the view's camera (Settings > 3D).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:18:06 -04:00
Brandon Thomas b2b8e08ed7 M13.5: Graph Editor snapping to markers, layer ends and work area
ANM-4: the Graph Editor's reference graph and key snapping already existed;
Snap now also targets comp and layer markers, layer in/out points and the
work area (graph_tools::comp_snap_times), with a unit test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:18:06 -04:00
Brandon Thomas 355a6255a2 M9.12: effect parameter fidelity – all categories
Align every effect's display name, category, parameter names, order,
twirl-down groups, popup options, units, defaults and ranges with the
public After Effects effect reference, and implement controls that were
ignored or missing where cheap. One commit because the categories share
the registry, migration tables and GPU kernels (only green states).

Infrastructure
- effects::migrate: saved instances are upgraded on project open
  (Session::replace_project → upgrade_effects): renamed ids
  (PARAM_ID_ALIASES), params moved into twirl-down groups, popup values
  remapped by label (POPUP_LABEL_ALIASES), refreshed names/UI hints,
  added params created with legacy_default values that keep old renders.
- flatten_params also keys nested props by match path (group/param), so
  effects declare grouped params with `group/param` ids; layer-source
  companions sit next to grouped layer params.
- lookup() resolves old effect names (EFFECT_NAME_ALIASES).
- Registry-wide test: unique ids/names, non-empty names, defaults in
  range, popup defaults within options, value kinds match UI.
- docs/effects.md generated from the registry (catalog.rs) with GPU /
  32-bpc badges and per-effect status; a test keeps it current.

Batches
- Blur & Sharpen, Channel, 3D Channel, Perspective, Text, Utility:
  Camera Lens Blur iris/highlight groups, Compound Blur layer, Camera-
  Shake Deblur method/strength, Invert full channel list (CPU HLS/YIQ),
  Set Channels/Set Matte layers, Channel Combiner targets, 3D Channel
  Extract clamp/invert.
- Color Correction: temporal smoothing + scene detect for Auto Color/
  Contrast/Levels and Shadow/Highlight, Brightness & Contrast legacy
  switch, Change to Color tolerance group, Leave Color, Photo Filter
  presets, Exposure channels, Levels clip popups, Colorama phase source,
  Color Link sample list, Lumetri groups (CPU + GPU kernels).
- Distort: Bulge, Displacement Map layer/behaviour, Magnify, Optics
  Compensation resize, Ripple conversion, Transform sampling, Turbulent
  Displace types/pinning/evolution, Wave Warp types/pinning, Twirl and
  Ripple radius fixes.
- Generate: 4-Color Gradient, Checkerboard, Grid, Circle size/feather/
  blending, Advanced Lightning types, Cell Pattern, Radio Waves, Fractal
  palettes, Scribble/Vegas names.
- Keying, Matte, Obsolete: Color Difference Key partials/views, Unmult
  controls, Key Light groups, Refine Soft/Hard Matte, Roto Brush groups,
  Mocha shape moved to Matte, Spill Suppressor accuracy, Basic/Path Text
  groups.
- Noise & Grain, Immersive Video, Audio, Time: Fractal/Turbulent Noise
  full control set (noise3.rs, GPU), grain look groups, Remove Grain,
  VR effects, Compressor/Gate/Distortion controls, Timewarp groups,
  VR Sphere to Plane name.
- Simulation: AE twirl-down groups for all simulations, Foam strength,
  Particle Playground barrel radius and mapper targets.
- Stylize, Transition: Glow looping/dimensions/alpha (CPU + GPU),
  Mosaic averaging, Cartoon groups, Roughen Edges evolution, Texturize
  layer, Gradient Wipe layer, Radial Wipe both, Card Wipe options.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:15:06 -04:00
Brandon Thomas d2ccf737a8 M13.5: Layer Style dialog
LYR-9: Layer > Layer Styles > Layer Style Options... (layer.style.options)
and choosing a style from that menu open a Layer Style dialog: style list
with check boxes (Blending Options first) and the selected style's controls
built from its layerStyles properties, edited live through prop.set (one
undo step per control); Cancel rolls back everything done since it opened.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:11:19 -04:00
Brandon Thomas a89a9a3d3c Merge branch 'main' into worktree-agent-a387e042a6a5de07f 2026-10-03 00:03:49 -04:00