Dennis Kobert
7ddc66adbe
Flip lazy-input nodes onto record wires through the element lazy input
2026-08-05 23:12:43 +00:00
Dennis Kobert
c20a243fc2
Flip lend-parameter nodes onto record wires and keep the clone adapter plain
2026-08-05 22:57:51 +00:00
Dennis Kobert
3eecc31bfd
Flip generic value nodes onto record wires through phantom struct parameters
2026-08-05 22:39:25 +00:00
Dennis Kobert
7099f056dc
Flip concrete value nodes onto record wires with bridge rows for every value type
2026-08-05 22:18:50 +00:00
Dennis Kobert
592b2fbe32
Turn context modification into a generic record routing node and park droppable elements as arena references
2026-08-05 19:25:17 +00:00
Dennis Kobert
9fc4fcc7a0
Inline records of at most 16 bytes into the two-word RecordValue with layout-resolved storage
2026-08-05 17:23:09 +00:00
Dennis Kobert
7915800d73
Add per-field erased-read glue, the record monitor with introspection capture, and rename record constructors to new
2026-08-05 15:22:20 +00:00
Dennis Kobert
c91be74a55
Add the Record wire type, record registry rows, lift and extract adapters, and executor stack reservation
2026-08-05 12:24:20 +00:00
Dennis Kobert
abe2a565d1
Drop the list driver, make attribute values Copy over arena references, and land record-tier offset io on a per-thread record stack
2026-08-05 09:47:03 +00:00
Dennis Kobert
6154e4d219
Add the attribute census, node macro attribute io over list wires, and the rank-0 record tier
2026-08-04 22:05:02 +00:00
Dennis Kobert
62b7ccf40c
Support bare reference parameters and lending outputs in the node macro and make the clone node the clone-out adapter
2026-08-03 18:29:16 +00:00
Dennis Kobert
562e6602eb
Poll source tasks once at spawn and land inline completions in the first eval
2026-08-03 10:21:46 +00:00
Dennis Kobert
d385f3c69b
Fix warnings
2026-08-02 15:06:11 +00:00
Dennis Kobert
e372f78b7e
Address pr review
2026-08-02 14:31:13 +00:00
Dennis Kobert
8686b2c891
Export the async-source flag from the macro and dispatch superseded type deltas in tests
2026-08-02 14:09:27 +00:00
Dennis Kobert
81a319430b
Cut over to the graphene execution model
2026-07-31 23:19:42 +02:00
Timon
eb50be844b
Remove now obsolete disable-registration special case from node macro ( #4375 )
2026-07-25 13:54:46 +00:00
Keavon Chambers
f05a644bd9
Revamp the syntax to #[hard(a..b)] and #[soft(a..b)] bounds on node definitions ( #4307 )
...
* Revamp the syntax to #[hard(a..b)] and #[soft(a..b)] bounds on node definitions
* Address review feedback: error on empty bounds ranges and remove redundant count clamps
* Fix NaN transform from Repeat Array with a count of 1
* Remove redundant manual clamps already enforced by #[hard(...)] bounds
2026-07-03 18:48:58 -07:00
Timon
674b3a213f
Extract pipelines from WgpuExecutor into scope-provided pipeline nodes ( #4210 )
...
* Implement generic pipeline caching
* Fix WIP
* Fix
* Fix
* Fix
* Fix bench
* Migrations
* Review
2026-06-19 21:20:25 +00:00
Timon
e524dff1a7
Add node macro support for injecting nodes into global scope ( #4221 )
...
* Macro support
* Preprocessor support
* Allow Cow str as scope name
* Use Passthrough node to work around compiler auto wrapping the producer node and invalidating the node id
* Stable NodeIds
* Less hacky but with bad performace
* Remove Cow from RegistryValueSource::Scope
* Connect scope injections to the inner network export
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev >
2026-06-11 18:14:58 +00:00
Keavon Chambers
256dd26b99
Recognize ExtractPosition/InjectPosition in the node macro context analyzer
...
Also, fix migration missing alias
2026-05-16 01:40:49 -07:00
Keavon Chambers
a28b9437aa
Rename the "Table" type to "List" everywhere ( #4133 )
...
* Rename the "Table" type to "List" everywhere
* Fix a few missed ones
* Re-save demo artwork
2026-05-09 01:33:39 -07:00
Keavon Chambers
21e5e06b0b
Clean up document message wrappers around proto nodes so they're now used directly ( #4101 )
...
* Rename the 'Identity' node to 'Passthrough' internally
* Rename the 'Memoize' node to 'Cache' internally
* Let skip_impl proto nodes auto-generate as document node definitions
* Remove the wrapper 'Passthrough' node from document_node_definitions.rs
* Remove the wrapper 'Cache' node from document_node_definitions.rs
* Remove the wrapper 'Monitor' node from document_node_definitions.rs
* Remove the wrapper 'Noise Pattern' node from document_node_definitions.rs
* Remove the wrapper 'Brush' node from document_node_definitions.rs
* Remove the wrapper 'Transform' node from document_node_definitions.rs
* Code review improvements
* Rename Cache node back to Memoize
* More code review
2026-05-03 19:26:36 -07:00
Dennis Kobert
e0368435b9
Add the "memoize" attribute to the node macro ( #4065 )
...
* Add memoization attribute to node macro
* Fix memoization insertion for networks without conversion nodes
2026-04-28 11:55:38 +00:00
Firestar99
824d1162eb
Update rust-gpu to 0.10.0-alpha.1 ( #4033 )
...
* rust-gpu alpha.1: update nix flake
* rust-gpu alpha.1: disable non-working mold shell hook
* rust-gpu alpha.1: update rust-gpu to `0.10.0-alpha.1` on crates
* Review
* Fix gpu nodes
* Reduce wasm size
---------
Co-authored-by: Timon <me@timon.zip >
2026-04-27 23:53:49 +00:00
Keavon Chambers
f42d12da9e
Improve type handling for ints/floats with the #[hard/soft_min/max(...)] node macro parameter attributes ( #4041 )
2026-04-23 15:49:30 -07:00
Timon
661e8bc569
Remove surface and window from ApplicationIo ( #3941 )
...
* Remove surface and window from ApplicationIo
* Seperate Wasm and Native ApplicationIo
* Fix warnings
* Fix tests
* Remove redundant PlatformApplicationIo::new_offscreen
* Fixup
* Remove unused From implementaitions for ApplicationIo
2026-04-09 20:12:53 +00:00
Keavon Chambers
86e41a110a
Make the node macro include doc comments when hovering a node's function ( #3979 )
2026-03-31 02:55:27 -07:00
Keavon Chambers
f1cbc4b396
Make the node graph use Table<GradientStops> instead of GradientStops ( #3837 )
...
* Switch from GradientStops to Table<GradientStops> in all nodes
* Remove TaggedValue::ColorNotInTable
* Fix bug
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Add migrations
* Fix default gradient on empty table
* Update demo artwork
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-02-26 14:07:31 -08:00
Dennis Kobert
1a9f0a543c
Fix pointer position node ( #3725 )
...
Fix PointerPosition traits
2026-02-05 23:43:58 +01:00
Keavon Chambers
7af60e02a3
Add the auto-generated node catalog to the website's user manual ( #3662 )
...
* Generate the MVP node catalog in the manual (with some placeholders)
* Implement nearly the rest of everything
* Move to the tools directory and make it generate nicer default values
* Add category descriptions
* Organize file structure and improve type naming
* Improve book table of contents code
* Add collapsing chapter navigation to the book template
* Add to build workflow
* Clean up site structure
2026-01-20 22:52:03 -08:00
Adam Gerhant
a6052c5819
Replace node definition string-based lookups with DefinitionIdentifier instances ( #3451 )
...
* create definition identifier and integrate it
* Bug fixes and code review
* formatting
* Fix migrations
* Fix remove handles migration
* formatting
* Fix test
* Fix tests 2
* fix deserialization
* Code review
* Small fixes
* Consolidate 'Morph' node migrations
* Add old SamplePointsNode name to migrations list
* Fix tests
* Unrelated small fix
* Fix migration crashes
* Fix tests
* Final code review
* fmt
* Add metadata
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-01-12 23:09:43 -08:00
Dennis Kobert
e88db022af
Exclude node registry functions from desktop frontend builds ( #3584 )
...
* Exclude node registry functions from desktop frontend builds
This reduces compile times and file sizes
* Use early return
* Fix branch name in build-linux pipeline
2026-01-06 12:34:15 +00:00
Dennis Kobert
fafc687d84
Migrate memo nodes to node macro and make implementing other persistent nodes easier ( #3552 )
...
* Add #[data] and #[serialize] attributes to node macro
- Add #[data] attribute for struct fields that aren't node parameters
- Data fields are initialized with Default::default()
- Passed as references to the underlying function
- Excluded from registry metadata (internal state)
- Generic types in data fields allowed without #[implementations]
- Add #[serialize] attribute for custom Node::serialize() implementation
- Receives references to all data fields
- Generates serialize() method in Node trait impl
- Conditional derives based on data field presence
- With data fields: Debug, Clone only
- Without data fields: Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash
* Refactor Memo and Monitor Node to use node macro
* Move Complex type into type alias
* Fix format
* Update node-graph/nodes/gcore/src/memo.rs
Co-authored-by: Keavon Chambers <keavon@keavon.com >
* Update node-graph/nodes/gcore/src/memo.rs
Co-authored-by: Keavon Chambers <keavon@keavon.com >
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-01-05 22:28:02 +01:00
Keavon Chambers
fa45efa9e2
New node: Pointer Position ( #3535 )
...
* New node: Pointer Position
* Fix test
2025-12-27 16:02:23 -08:00
Keavon Chambers
fb0fab0622
Update links from graphite.rs to graphite.art
2025-12-06 18:10:27 -08:00
Keavon Chambers
e8ebcc2c21
Replace text-only tooltips with custom richly styled tooltips ( #3436 )
...
* Replace the title attribute with custom FloatingMenu tooltips
* Separate tooltip labels and descriptions into two styled blocks
* Move keyboard shortcut tooltips to a separate section at the bottom
* Update shortcut key styling in tooltips and hints bar
* Fix .to_string()
2025-11-30 13:32:58 -08:00
Dennis Kobert
57b0b9c7ed
Restructure node crates ( #3384 )
...
* Restructure node-graph folder
* Fix wasm compilation
* Move node definitions out of *-types crates
* Cleanup
* Fix warnings
* Fix warnings
* Start adding migrations
* Add migrations and move memo nodes to gcore
* Move nodes/gsvg-render -> rendering
* Replace some hard coded identifiers and fix automatic conversion
* Fix Vec2Value node migration
* Fix formatting
* Add more migrations
* Cleanup features
* Fix core_types::raster import
* Update demo artwork (to make profile ci work)
* Move *-types to node-graph/libraries folder
* Add missing node migrations
* Migrate more nodes
* Remove impure memo node
* More fixes and remove warning
* Migrate context and add a few missing migrations
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-11-18 10:21:54 +00:00
Dennis Kobert
181c30bc0a
Fix assorted Clippy lints ( #3390 )
2025-11-17 07:58:31 +00: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
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
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
Dennis Kobert
7377871106
Fix clippy warnings ( #3085 )
...
* Run clippy fix
* Clippy v2
* Make const item static
* Cargo fmt
2025-08-23 11:45:47 +02:00
Firestar99
b44a4fba1e
node-macro: cleanup ParsedField struct ( #3064 )
...
* node-macro: cleanup `ParsedField` struct
* node-macro: fixup tests
2025-08-19 09:25:58 +00:00
Keavon Chambers
bdc029c692
Add Table<Gradient> as a graphical type ( #3051 )
2025-08-13 01:42:51 -07:00