Graphite/node-graph/nodes
Keavon Chambers 4360359d60
Finalize and unify the design of the 'Morph' and 'Blend' nodes (#3974)
* Fix Morph node transform interpolation and preservation in the table

* Fix click target positions for Morph's nested layers by pre-compensating upstream_data transforms

* Redesign Morph node (v3) with control path input and uniformly spaced progression, and fix Stroke::lerp interpolation weights

* Add migration from Morph node v2 to v3

* Redesign the 'Blend Shapes' node behavior and subgraph definition

* Add the Layer > Blend menu entry to easily set up a blend

* Optimize the Morph node

* Refactor the Morph node to remove the roundtrip through BezPath

* Fine-tune Morph node Bezier order promotion and handle interpolation

* Add the Layer > Morph menu bar entry

* Fix NaN and guard against other potential NaN bugs breaking the editor

* Add InterpolationDistribution parameter to Morph with weighted progression, swap parameter orders, and rename shear to skew

* Add the Reverse parameter to the Morph node

* Update the order of the inputs to Blend Shapes for consistency with Morph

* Make Layer > Morph create the Morph Path control layer

* Fix migrations

* Move 10 to a constant

* Avoid division by 0 in the Blend Shapes node internals

* Rename nodes 'Blend' -> 'Mix' and 'Blend Shapes' to 'Blend'

* Fix a crash encountered while testing

* Final code review

* Make domain push dupe checks debug-only and use push_unchecked in the Morph node

* Pre-allocate for pushes to the vector domains

* Add fast path at t=0

* Inline reserve()

* Set up the control path layer above not below, and starting collapsed

* Review fixes

---------

Co-authored-by: Timon <me@timon.zip>
2026-04-03 20:45:58 -07:00
..
blending Add the auto-generated node catalog to the website's user manual (#3662) 2026-01-20 22:52:03 -08:00
brush Add the auto-generated node catalog to the website's user manual (#3662) 2026-01-20 22:52:03 -08:00
gcore Refactor the TypeScript data flow for full type safety and auto-generation of Rust types (#3865) 2026-03-09 16:35:04 -07:00
graphic Make the node graph use Table<GradientStops> instead of GradientStops (#3837) 2026-02-26 14:07:31 -08:00
gstd Refactor transform decomposition API with skew support, add 'Decompose Skew' node, and fix stroke transform interpolation (#3973) 2026-03-28 20:47:32 -07:00
math New nodes: RGBA to Color, HSVA to Color, Hex to Color, and Read Gradient (#3838) 2026-02-26 18:22:04 -08:00
path-bool Remove the path-bool library (#3882) 2026-03-11 08:55:03 +01:00
raster Finalize and unify the design of the 'Morph' and 'Blend' nodes (#3974) 2026-04-03 20:45:58 -07:00
repeat Rename the repeat nodes to replace "Instance" terminology with "Repeat" (#3794) 2026-02-20 22:10:59 -08:00
text Refactor the TypeScript data flow for full type safety and auto-generation of Rust types (#3865) 2026-03-09 16:35:04 -07:00
transform Refactor transform decomposition API with skew support, add 'Decompose Skew' node, and fix stroke transform interpolation (#3973) 2026-03-28 20:47:32 -07:00
vector Finalize and unify the design of the 'Morph' and 'Blend' nodes (#3974) 2026-04-03 20:45:58 -07:00