Commit Graph
1771 Commits
Author SHA1 Message Date
vangel76andClaude Opus 5.5 710ffd9f7e Shapes: Repeater copy opacity steps 1 / Copies toward End Opacity, as After Effects
After Effects gives Repeater copy i the opacity Start + (End - Start) * i / Copies,
so the last copy stops one step short of End Opacity. EffectCraft reached End
Opacity at the last copy (i / (Copies - 1)). Measured in AE 2026 (case 709: 3
copies, End Opacity 40): copies at 100 / 80 / 60 % (EffectCraft 100 / 70 / 40);
the overlap of the two copies 92 % (EffectCraft 82 %). Now within 2/255 at the
sampled pixels.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 16:33:44 +02:00
vangel76andClaude Opus 5.5 25de452804 Masks: feather falloff as After Effects
The Smooth feather is three separable box passes of 2 round(0.37 F) + 1
pixels (a quadratic B-spline reaching ~1.11 F either side), fitted to
After Effects 2026 renders of feather 100, 300 and 1000 (rows, columns,
corner diagonal, case 398): max error under 1/255, where a Gaussian of
any width misses by 3/255 or more (it was sigma = F / 2). The coarse
grid for wide feathers picks the step whose three windows add up
closest to the full-resolution ones. Linear is unchanged (unmeasured).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 16:33:44 +02:00
vangel76andClaude Opus 5.5 b9e859fe3f Masks: feather reaches into the layer from a mask outside it, as in After Effects
The mask coverage was rasterised into the layer-sized buffer and then
blurred, so coverage outside the layer counted as 0: a feathered mask
past the layer edge faded at that edge, and one just outside the layer
gave nothing (the comment said the buffer grew; nothing grew it).

A feathered mask is now rasterised on a grid padded by the blur's whole
support (3 sigma + 3 for the Gaussian, the box radius for a linear
falloff), blurred there and cropped back to the buffer. Wide feathers
(sigma > 32 px) use a grid coarser per axis so the blur spans ~16 grid
pixels, which keeps the allocation near the buffer's size (feather 1000
on 1920x1080: a 160x134 grid instead of ~20 Mpx); the grid is capped,
feathers are clamped and non-finite ones ignored. Unfeathered masks and
masks inside the layer give the same coverage as before. The GPU uses
these CPU masks (adjustment footprint, masked sources): no GPU change.

Tests: case 398 of the .aep corpus rebuilt in the project model (red
solid, adjustment layer with a default Gradient Ramp, a 1920x200 mask
below the layer, feather 1000) within 3 levels of the Gaussian and
within 14 of After Effects' render; a mask right of a solid, a mask
larger than the layer (edges stay opaque), linear falloff, half
resolution, and huge or broken feathers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 16:33:44 +02:00
Brandon Thomas 22072d9f25 Merge pull request #1317
# Conflicts:
#	crates/ui-egui/src/panels/effects_presets.rs
#	crates/ui-egui/src/panels/timeline.rs
2026-10-18 11:12:44 -04:00
Brandon ThomasandClaude Opus 5.5 f3f24ef189 Land batch: fix clippy lints and the #1424 test after #1413 changed layer_menu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 09:42:33 -04:00
Brandon Thomas 7804cfd223 Format merged community PRs 2026-10-18 09:37:06 -04:00
Brandon Thomas 10cf6690c4 Merge pull request #1730
# Conflicts:
#	crates/engine/src/commands/prop_groups.rs
2026-10-18 09:36:40 -04:00
Brandon Thomas 7c99ba6eeb Merge pull request #1696
# Conflicts:
#	contributors/people.toml
2026-10-18 09:36:05 -04:00
Brandon Thomas a594abf4f7 Merge pull request #1652
# Conflicts:
#	docs/gaps.md
2026-10-18 09:35:51 -04:00
Brandon Thomas 17c4b02149 Merge pull request #1790 2026-10-18 09:35:35 -04:00
Brandon Thomas dfff3f9010 Merge pull request #1785 2026-10-18 09:35:35 -04:00
Brandon Thomas 1dac4c0e6b Merge pull request #1759 2026-10-18 09:35:35 -04:00
Brandon Thomas 0867d837d4 Merge pull request #1753 2026-10-18 09:35:35 -04:00
Brandon Thomas 869ce1db39 Merge pull request #1752 2026-10-18 09:35:35 -04:00
Brandon Thomas 681d99c0e7 Merge pull request #1731 2026-10-18 09:35:35 -04:00
Brandon Thomas d9e3c56404 Merge pull request #1721 2026-10-18 09:35:35 -04:00
Brandon Thomas 415e353dc0 Merge pull request #1711 2026-10-18 09:35:35 -04:00
Brandon Thomas fcc9e853de Merge pull request #1709 2026-10-18 09:35:35 -04:00
Brandon Thomas a01f681551 Merge pull request #1704 2026-10-18 09:35:35 -04:00
Brandon Thomas 072a7f7af9 Merge pull request #1695 2026-10-18 09:35:34 -04:00
Brandon Thomas 30efc87a2a Merge pull request #1694 2026-10-18 09:35:34 -04:00
Brandon Thomas fc3d228616 Merge pull request #1688 2026-10-18 09:35:34 -04:00
Brandon Thomas 010065e290 Merge pull request #1679 2026-10-18 09:35:34 -04:00
Brandon Thomas 4d61409662 Merge pull request #1672 2026-10-18 09:35:34 -04:00
Brandon Thomas b26b7ec968 Merge pull request #1664 2026-10-18 09:35:34 -04:00
Brandon Thomas 8c43fe7375 Merge pull request #1662 2026-10-18 09:35:34 -04:00
Brandon Thomas 972a2d21d2 Merge pull request #1659 2026-10-18 09:35:34 -04:00
Brandon Thomas d4dd1491f0 Merge pull request #1649 2026-10-18 09:35:34 -04:00
Brandon Thomas 242e02d92d Merge pull request #1627 2026-10-18 09:35:34 -04:00
Brandon Thomas 4c196ee8e5 Merge pull request #1620 2026-10-18 09:35:34 -04:00
Brandon Thomas 65d955c32a Merge pull request #1572 2026-10-18 09:35:34 -04:00
Brandon Thomas 1ec5cca899 Merge pull request #1540 2026-10-18 09:35:34 -04:00
Brandon Thomas da1b44e44a Merge pull request #1527 2026-10-18 09:35:34 -04:00
Brandon Thomas 8e03f2a48a Merge pull request #1497 2026-10-18 09:35:34 -04:00
Brandon Thomas 226fbf5810 Merge pull request #1485 2026-10-18 09:35:33 -04:00
Brandon Thomas 6785526e4a Merge pull request #1448 2026-10-18 09:35:33 -04:00
Brandon Thomas 736c0ec4b4 Merge pull request #1430 2026-10-18 09:35:33 -04:00
Brandon Thomas 2d47103425 Merge pull request #1424 2026-10-18 09:35:33 -04:00
Brandon Thomas c44c51212c Merge pull request #1413 2026-10-18 09:35:33 -04:00
Brandon Thomas 12d8e13bae Merge pull request #1406 2026-10-18 09:35:33 -04:00
Brandon Thomas c19421b1a7 Merge pull request #1376 2026-10-18 09:35:33 -04:00
Brandon Thomas 746b164383 Merge pull request #1375 2026-10-18 09:35:33 -04:00
Brandon Thomas a32b65cb28 Merge pull request #1369 2026-10-18 09:35:33 -04:00
Brandon Thomas 6d4837c08b Merge pull request #1362 2026-10-18 09:35:33 -04:00
Brandon Thomas 53c84d7342 Merge pull request #1356 2026-10-18 09:35:33 -04:00
Brandon Thomas b72425a28d Merge pull request #1334 2026-10-18 09:35:33 -04:00
Brandon Thomas de7c8d6dd6 Merge pull request #1271 2026-10-18 09:35:33 -04:00
Brandon Thomas 6648c5befe Merge pull request #1269 2026-10-18 09:35:33 -04:00
Brandon Thomas f16ef4a6b5 Merge pull request #1265 2026-10-18 09:35:32 -04:00
Brandon Thomas 25f8bb17f4 Merge pull request #1216 2026-10-18 09:35:32 -04:00