effectcraft/crates
bflatastic 940bea3ba7 Effects: effect points on shape layers start at the layer centre (#227)
Shape and text layers have comp-sized effect bounds centred on their
origin, but effects measured positions from the origin: a point at its
default "layer centre" sat at the comp's bottom-right corner, so Twirl
on a centred shape changed nothing and Bulge only its bottom-right
quarter. As in After Effects, effects now work in effect space,
measured from the top-left of the layer's effect bounds.

The renderer moves the layer buffer into effect space for the whole
stack (Buf::rebase, CPU and GPU alike) and hands effects everything
else in it: masks, other layers' pixels for layer parameters (each in
its own effect space, so Set Matte and displacement maps see a whole
shape layer), the layer's own frames (layer_input, also what Puppet,
Roto Brush and the Layer panel read) and the comp camera
(CompScene::rebased). Layer bounds are now right for every effect, so
pin_rect and EffectEnv::bounds_origin go and layer_rect serves edge
pinning too. Adjustment layers still run on the comp below as it is.

effect_bounds / EvalCtx::effect_to_comp replace the repeated "comp size
when there is no source" code; the viewer's effect point handles and
eyedroppers, Puppet pins, the Layer panel (paint, Roto Brush) and the
tracker's Corner Pin output use them.

Project schema 2: opening a schema 1 project moves positions held by
effects on shape and text layers by half the comp size, so set points
keep their place (point parameters with keyframes, Paint paths and
clone positions, Puppet seeds and pins, Liquify and Roto Brush
strokes). Points still at their default become the layer centre;
expression controls, adjustment layers and expressions are left as
they are (docs/architecture.md). The disk cache's render version is
bumped.

Tests: default_effect_points_sit_at_the_centre_of_a_shape_layer and
layer_parameters_see_a_whole_shape_layer (render, both fail before),
effect_points_on_a_shape_layer (GPU vs CPU),
opening_a_schema_1_project_moves_shape_layer_effect_points_into_effect_space
(engine), and the effects migration tests.

Part of #227

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 20:33:03 +07:00
..
automation MCP: add_effect is one undo step and leaves nothing applied when it fails (#175) 2026-10-07 15:48:17 +07:00
av1enc G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
color G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
effects Effects: effect points on shape layers start at the layer centre (#227) 2026-10-08 20:33:03 +07:00
engine Effects: effect points on shape layers start at the layer centre (#227) 2026-10-08 20:33:03 +07:00
export VP9: frames never end in a byte that reads as a superframe marker (#161) 2026-10-07 14:15:33 +07:00
expr Merge pull request #6 from storybored379/pr/expr-runtime-stack-leak 2026-10-05 12:10:53 +07:00
geom Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
gpu Effects: effect points on shape layers start at the layer centre (#227) 2026-10-08 20:33:03 +07:00
hevcenc Untrack crates/hevcenc/target (36 MB of build output) and ignore nested target/ 2026-10-06 15:02:20 -04:00
host G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
interchange Never crash: reject timeline documents nested too deeply 2026-10-04 14:05:57 -04:00
keyframe Keyframes: ease curves measure and apply the ease of a keyframe pair (#254) 2026-10-08 17:25:00 +07:00
lottie G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
media Media: conformed audio keeps its sound past 12:36 (#172) 2026-10-07 14:20:47 +07:00
model G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
opusenc G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
path G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
pdf G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
plugin G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
project Effects: effect points on shape layers start at the layer centre (#227) 2026-10-08 20:33:03 +07:00
psd G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
raster G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
render Effects: effect points on shape layers start at the layer centre (#227) 2026-10-08 20:33:03 +07:00
script Scripting: script.run reports .jsxbin scripts as unsupported (#176) 2026-10-07 15:48:17 +07:00
segment G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
svg G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
text test: tolerate installed variants of bundled font families 2026-10-06 16:40:12 -05:00
time Never crash: Tick and timecode arithmetic can't overflow or divide by zero 2026-10-04 14:20:33 -04:00
track G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
ui-egui Effects: effect points on shape layers start at the layer centre (#227) 2026-10-08 20:33:03 +07:00
vp9enc VP9: frames never end in a byte that reads as a superframe marker (#161) 2026-10-07 14:15:33 +07:00