Commit Graph

728 Commits

Author SHA1 Message Date
Keavon Chambers 055d543117 Rename the 'Index' node to 'Index Elements' 2025-11-03 13:35:56 -08:00
Keavon Chambers 0998abdaf3 Add support for visualizing Vec<String> in the Data panel 2025-11-03 13:13:54 -08:00
Daniil Loban 0d8c521fbe
New node: String Split (#3304)
* Add two nodes for substring

* fix: number convention

* Remove unnecessay allocations and add support for \n in patterns

* Make split node return Vec<String> and remove count_elements node

* Add Cache implementations for Vec<String>

* Code review

---------

Co-authored-by: daniil.loban <daniil.loban@gmail.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-11-03 21:02:12 +00:00
skearya c4bbb7e880
Reduce editor message size by 67% and fix simple clippy warnings (#3327)
Reduce message size and fix some clippy issues
2025-11-02 08:50:29 +01:00
James Lindsay 7c28a53cd1
Fix the Spline node to maintain stable segment IDs (#3321)
Stable segment ids in the spline node
2025-10-31 18:28:27 +01:00
Dennis Kobert e5f40a3316
Add 'Instance Map' and 'Instance Vector' nodes (#3229)
* Add map instance and extract vector nodes

* Cleanup

* Inject index in map node

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-10-27 15:56:08 +01:00
Dennis Kobert f102801059
Fix incorrect implementations of the Hash and PartialEq traits on Table<T> (#3306)
Fix incorrect implementations of the Hash and PartialEq traits on Table
2025-10-27 15:55:36 +01:00
Ashish Mohapatra 6ca25e4ea9
Fix capacity overflow in offset path node (#3308)
* Fix capacity overflow in offset path node

* Reverted accuracy to 1e-3

* Refactor offset path segment check

* Add squared distance for degenerate cubic bezier curves
2025-10-27 12:33:38 +00:00
jneem 3a80560a68
Move from poly-cool to polycool (#3309) 2025-10-24 22:12:01 +00:00
Dennis Kobert e8f18b0ac0
Cache calculation of bounding boxes with transforms (#3287)
* Cache calculation of bounding boxes with transforms

* Reuse bounding boxes across for the same rotation

* Cleanup code and add documentation

* Add tests
2025-10-17 10:20:55 +00:00
snskar 34d0b76333
Fix drawing over erased Brush tool paths (#3262)
fix draw over erased behaviour

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-10-14 14:30:57 -07:00
Timon e39fbb8903
Desktop: Fix non-Vello render mode (#3259)
* fix non vello render mode

* move export overide desision from reneder node to node runtime

* fix

* cleanup

* Fix typo and cleanup export logic

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2025-10-09 11:31:35 +02:00
Keavon Chambers 3364059e02
Add tooltip documentation to the graphic flattening nodes and string nodes (#3269) 2025-10-07 16:50:18 +02:00
Keavon Chambers 55a64064b0
Make the 'Decompose Rotation' node return degrees not radians; add tooltip documentation to transform nodes (#3268)
Make the 'Decompose Rotation' node return degrees not radians, and add tooltip documentation to transformation nodes
2025-10-07 09:36:35 +00:00
Keavon Chambers 91b08f4b4f Add tooltip documentation for animation-focused nodes (#3267) 2025-10-07 07:00:27 +00:00
Keavon Chambers fc9afce504
Add tooltip documentation for blending-focused nodes (#3266) 2025-10-07 00:23:50 +00:00
Keavon Chambers 6c033a2cd6
Tidy up tooltip documentation for several assorted nodes (#3265) 2025-10-07 01:28:03 +02:00
Firestar99 074a33f58f
Enable debug logging for cargo-gpu (#3207)
debug cargo-gpu: debug logging
2025-10-05 11:19:21 +00:00
Oliver Davies 3cfacccc61
New node: Remap (#3245)
* Added Remap node

* Addressed feedback for mapping range

* Removed extra defaults

* Apply suggestion from @Keavon

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-10-03 05:51:01 +00:00
Timon 7e8c6cc432
Desktop: Native export (#3188)
* Testing native export with raster convert implementation

* Jpg export

* Fix transparent export

* move texture conversion to runtime

* fixup

* move image encoding into editor export  function

* remove unused frontend message

* remove unused type
2025-10-01 21:13:40 +02:00
Dennis Kobert 84e44810d2
Run preprocessing on benchmarks and fix deadlock (#3230) 2025-09-27 12:36:29 +02:00
Dennis Kobert ffc74273cc
Implement Convert trait to convert between CPU and GPU images (#3194)
* Add upload texture trait

* Make convert trait use explicit converter

* Add gpu texture download implementation

* Add footprint to convert trait

* Cleanup texture upload / download

* Download wgpu textures aligned

* abstract texture download into converter helper

* rename module

not only doing uploads anymore
conversion looks like a ok name

* Remove into_iter call and intermediate vector allocation

---------

Co-authored-by: Timon Schelling <me@timon.zip>
2025-09-26 14:30:01 +02:00
Timon ed22e6a63d
Desktop: Add rudimentary support for custom WGPU adapter selection (#3201)
* rudimentary custom wgpu adapter selection

* WgpuContextBuilder

* wasm fix

* fix wasm warnings

* Clean up

* Review suggestions

* fix
2025-09-25 14:38:26 +00:00
Dennis Kobert 4e47b5db93
Restructure gcore/text module and fix memory leak (#3221)
* Restructure gcore/text module and fix memory leak

* Remove unused import

* Fix default font fallback causing wrong caching and rename to TextContext

* Upgrade demo art
2025-09-25 15:29:07 +02:00
Salman Abuhaimed edc018d7b4
Fix Text node regression where font styles within a family are not being applied (#3186)
Fix text node styles not being applied
2025-09-18 19:11:50 -07:00
Keavon Chambers 9d15e56ce1 Fix and clean up typing-related flaws with the Math category of nodes 2025-09-18 16:37:01 -07:00
Keavon Chambers 7e3ab78ea4 Fix more flaws with 'Transform' node rad-to-deg migration; make 'Tangent on Path' also use degrees by default 2025-09-18 14:09:10 -07:00
Timon 3fe7c477e9
Desktop: Switch to the latest unreleased version of Winit (#3177)
* Use unstable winit

* Improve

* Remove unnecessary heap indirection
2025-09-17 16:40:43 +02:00
Keavon Chambers 4662cbbbc1 Make the 'Count Elements' and 'String Length' nodes return f64 for consistency with 'Instance Index' 2025-09-16 16:08:03 -07:00
Dennis Kobert e4d2805115
Add workaround for cache context nullification breaking nested loop indexes (#3178)
* Disable caching for the instance repeat etc. nodes

* Add usize implementation for caching and monitor nodes

* Change return type of instance index node back to f64

* Cleanup while loop

* Remove stray usize changes

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-16 21:59:43 +00:00
Dennis Kobert 390ce023ea
Fix regression when rotating a group, resulting in an incorrect transform cage bounding box (#3184)
Revert "Reuse click target bounding boxes for document bounds"

This reverts commit d9e8a71cd095971008b2e24fe90bbab9d6467115.
2025-09-16 13:41:44 -07:00
Keavon Chambers a1df16bc9e Switch infinite color/gradient rendering to a more robust approach 2025-09-13 14:03:11 -07:00
Salman Abuhaimed 3cc2aa8d89
Fix text node thread locals not being updated (#3173) 2025-09-13 11:33:00 +00:00
Dennis Kobert 5836416632
Optimize editor performance for node selection, click target bounds, and batched messages (#3162)
* Don't clone messages during batch processing

* Improve selected nodes perf and memoize network hash computation

* Reuse click target bounding boxes for document bounds

* Early terminate computing the connected count

* Cleanup
2025-09-11 10:08:26 +00:00
Dennis Kobert ad5d8fcd37
Optimize rendering by caching intermediate render results when panning/zooming (#3147)
* Add svg render node

WIP

Fix error in context nullificaton node insertion

Correctly translate metadata

Fix warning

* Cleanup

* Remove color / gradient check and fix svg defs

* Implement viewport filling transform modification for vello

* Cleanup and comments

* Code review
2025-09-11 11:35:33 +02:00
Keavon Chambers 9a32e79853
Rename `NodeInput::Network` to `NodeInput::Import` (#3163) 2025-09-10 20:50:15 -07:00
Adam Gerhant 332088bce1
Make the Transform node use angles in degrees instead of radians for Rotation and Skew (#3160)
* Make the Transform node use degrees not radians

* Migration script

* Migrate skew value input to store degrees

* Add comments

* Fix migrations to account for the old deprecated "Pivot" parameter

* Fix tooling interactions with degrees-based transforms

* Upgrade demo art

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-11 00:19:10 +00:00
Timon 9411612d7f
Move shader entrypoints to separate crate (#3157) 2025-09-10 10:20:45 +00:00
Keavon Chambers 22aa8c1264 Update UI widget designs to improve color consistency and add a narrow height mode 2025-09-08 21:48:22 -07:00
0SlowPoke0 485152bf8d
Add "Spiral" to the Shape tool and as a new node (#2803)
* made spiral node

* number of turns in decimal and arc-angle implementation

* logarithmic spiral

* unified log and arc spiral into spiral node

* add spiral shape in shape tool

* fix min value and degree unit

* make it compile

* updated the api

* changed the function_name

* [/] to update the turns widget in shape tool

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-08 14:37:43 -07:00
Priyanshu c384175910
Improve stability of the 'Sample Points' node (#3119)
improve perimeter calculation of the path bezier segments when it is very close to linear bezier curve

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-08 04:20:46 +00:00
0SlowPoke0 3e50d177b7
Add "Grid" to the Shape tool along with row/column gizmos (#2921)
* integrated grid shape in shape-tool

* add overlays,detection,transform for gizmo

* fix compile issues

* handle negative correctly,fix undo redo and abort

* fix missed merge conflicts

* fixed mouse cursor,correctly translatiing

* cleanup

* fix click-target area inside rect and spacing

* add 10px closer to gizmo line

* resolved conflicts

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-07 17:53:37 -07:00
Keavon Chambers a2c0693038
Fix most known issues with migrations failing to open documents from the past year (#3148) 2025-09-07 11:10:03 -07:00
Firestar99 ad99c14b29
Shaders: Provide WgpuExecutor via Scope (#3144)
shaders: automatically connect wgpu-executor
2025-09-05 18:51:17 +00:00
Firestar99 f12b4da549
Shaders: add `BufferStruct` to support bool and enums (#3109)
* node-macro: modernize `node` macro

* node-macro: add `CrateIdent` struct containing resolved crate paths

* shaders: add trait `BufferStruct` and derive macro

* shaders: `gamma_correction` and `channel_mixer` gpu nodes

* shaders: `selective_color` gpu node

* shaders: `brightness_contrast_classic` gpu node

* shaders: append GPU to display name

* node-macro: fixup doc links

* shaders: consistently append " GPU" to all shader node names
2025-09-05 16:32:41 +00:00
Dennis Kobert acd7ba38cc
Graphene: Fine-grained context caching (#2500)
* RFC: Fine Grained Context Caching

* Fix typos

* Fix label

* Add description of inject traits

* Explicitly support context modification

* Start implementation of context invalidation

* Add inject trait variants
* Route Extract / Inject traits to the proto nodes

* Implement context dependency analysis

* Implement context modification node insertion

* Fix erronous force graph run message

* Fix Extract* Inject* annotations in the nodes

* Require Hash implementation for VarArgs

* Fix nullification node insertion

* Cross of done items unresolved questions section

* Update Cargo.lock

* Fix context features propagation

* Update demo artwork

* Remove BondlessFootprint and FreezeRealTime nodes

* Fix migration

* Add migrations for adding context features to old networks

* Always update real time regardless of animation state

* Cargo fmt

* Fix tests

* Readd sed command to hopefully fix profile result parsing

* Add debug output to profiling pr

* Use new totals instead of summaries for for iai results

* Even more debugging

* Use correct debug metrics (hopefully)

* Add more MemoNode implementations

* Add context features annotation to shader node macro

* Cleanup

* Time -> RealTime

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-05 11:44:26 +00:00
Firestar99 5d441c2e18
Shaders: runtime and shader node codegen (#2985)
* shader-rt: initial

* shader-rt: fix recursion when generating shader node

* shader-rt: replace gpu node's args and ret types with `Raster<GPU>`

* shader-rt: properly cfg out the gpu node

* shader-rt: fix `impl Context` in the wrong places

* shader-rt: disable gpu blend node, needs two images

* shader-rt: connect shader runtime

* shader-rt: pass WgpuExecutor by reference

* shader-rt: correct bindings with derpy arg buffer

* shader-rt: manual pipeline layout, fixing errors when bindings got DCE'd

* shader-rt: correct RT format, working invert gpu node

* shader-rt: cleanup codegen with common sym struct

* shader-rt: correct arg buffer handling

* shader-nodes feature: put shader nodes behind feature gate

* shader-nodes feature: rename any `gpu_node` to `shader-node`

* shaders-rt: fix wgpu label name

* shaders-rt: explain fullscreen_vertex coordinates with a drawing
2025-09-05 08:33:53 +02:00
Firestar99 a10103311e
Shaders: rust-gpu integration to compile shader nodes to WGSL (#3097)
* shaders: shader compilation setup

* nix: use rustc_codegen_spirv.so from nix

* shaders: codegen for per_pixel_adjust shader nodes

* shaders: disable nodes needing bool

* shaders: `#[repr(u32)]` some enums

* shaders: add lint ignores from rust-gpu

* shaders: fix node-macro tests

* gcore-shaders: toml cleanup

* shader-nodes feature: put rust-gpu to wgsl compile behind feature gate

* shaders: fix use TokenStream2

* shaders: allow providing shader externally

* Update iai runner in workflow

---------

Co-authored-by: Timon Schelling <me@timon.zip>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2025-09-02 14:10:32 +00:00
Keavon Chambers b5ebe78f5e
Update all frontend npm dependencies except Svelte and Vite (#3120)
* Upgrade node dependencies except Svelte 5 and its peer deps

* Fix lint errors

* Fix previous Rust deps upgrade breakage

* Fix demo artwork

* Allow profiling CI workflow to fail
2025-09-01 17:22:30 -07:00
Keavon Chambers 29684dde45
Update Rust dependencies (#3112)
* Update Rust dependencies

* Bump versions

* Try older ctor
2025-08-30 20:06:56 -07:00