Go to file
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
.cargo Update rust-gpu to `0.10.0-alpha.1` (#4033) 2026-04-27 23:53:49 +00:00
.devcontainer Update all frontend npm dependencies except Svelte and Vite (#3120) 2025-09-01 17:22:30 -07:00
.github Fix dropdown menus spawning offset in scrolled panels, a regression from upgrading to Svelte 5.54 (#4047) 2026-04-24 12:17:27 -07:00
.nix Desktop: Update CEF (#4048) 2026-04-28 02:25:39 +02:00
.vscode New nodes: 'Gradient Type' and 'Spread Method', and add Gradient tool support for controlling these nodes (#4084) 2026-04-29 19:27:44 -07:00
demo-artwork Replace the AlphaBlending struct with separate attributes (#4086) 2026-05-01 03:27:42 -07:00
desktop Reimplement checkered background rendering (#4034) 2026-05-01 17:02:10 +00:00
editor Clean up document message wrappers around proto nodes so they're now used directly (#4101) 2026-05-03 19:26:36 -07:00
frontend Prep for the RC5 release of the desktop app 2026-05-01 21:58:16 -07:00
libraries Update rust-gpu to `0.10.0-alpha.1` (#4033) 2026-04-27 23:53:49 +00:00
node-graph Clean up document message wrappers around proto nodes so they're now used directly (#4101) 2026-05-03 19:26:36 -07:00
proc-macros Refactor the TypeScript data flow for full type safety and auto-generation of Rust types (#3865) 2026-03-09 16:35:04 -07:00
tools New nodes: 'Regex Contains', 'Regex Replace', 'Regex Find', 'Regex Find All', and 'Regex Split' (#4045) 2026-04-24 00:55:24 -07:00
website Update roadmap with progress 2026-04-28 18:52:54 -07:00
.branding Implement window-controls-overlay PWA window frameless mode (#3986) 2026-04-02 18:17:36 -07:00
.editorconfig Remove all references to Vue 2023-03-10 04:02:02 -08:00
.envrc Replace `npm` build script with new `cargo run` tool (#3832) 2026-03-07 13:26:19 +00:00
.gitattributes Update Git Attributes for JSON syntax highlighting in `*.graphite` files (#1752) 2024-05-13 22:35:32 +00:00
.gitignore Reimplement notice file generation for third-party licenses through Rust, now with CEF credits (#3808) 2026-02-26 11:12:28 +00:00
.nvmrc Update, tidy up, and standardize GitHub Actions workflows 2026-03-16 02:49:42 -07:00
.prettierrc Fix Bezier-rs interactive demos and migrate its Webpack bundler to Vite 2024-01-04 23:13:40 -08:00
Cargo.lock Add Table<GradientStops> gradient rendering (#3989) 2026-04-29 05:45:50 -07:00
Cargo.toml Desktop: Update CEF (#4048) 2026-04-28 02:25:39 +02:00
LICENSE.txt Add Apache 2 license 2020-07-12 13:58:50 -07:00
README.md Update links from graphite.rs to graphite.art 2025-12-06 18:10:27 -08:00
about.toml Improve font import; replace Inconsolata with Source Code Pro; show third-party licenses in editor dialog (#3079) 2025-08-21 11:57:04 -07:00
deny.toml Update dependencies to resolve advisories (#3933) 2026-03-21 18:25:05 -07:00
flake.lock Update rust-gpu to `0.10.0-alpha.1` (#4033) 2026-04-27 23:53:49 +00:00
flake.nix Replace `npm` build script with new `cargo run` tool (#3832) 2026-03-07 13:26:19 +00:00
rustfmt.toml Upgrade to the Rust 2024 edition (#2367) 2025-03-12 17:29:12 -07:00

README.md

Graphite logo

Your procedural toolbox for 2D content creation

Graphite is a free, open source vector and raster graphics engine, available now in alpha. Get creative with a fully nondestructive editing workflow that combines layer-based compositing with node-based generative design.

Having begun life as a vector editor, Graphite continues evolving into a generalized, all-in-one graphics toolbox that's built more like a game engine than a conventional creative app. The editor's tools wrap its node graph core, providing user-friendly workflows for vector, raster, and beyond. Photo editing, motion graphics, digital painting, desktop publishing, and VFX compositing are additional competencies on the planned roadmap making Graphite into a highly versatile content creation tool.

Learn more from the website, subscribe to the newsletter, consider volunteering or donating, and remember to give this repository a !


Discord      Reddit      Bluesky      Twitter      YouTube

https://github.com/user-attachments/assets/f4604aea-e8f1-45ce-9218-46ddc666f11d

Support our mission ❤️

Graphite is 100% community built and funded. Please become a part of keeping the project alive and thriving with a donation if you share a belief in our mission:

Graphite strives to unshackle the creativity of every budding artist and seasoned professional by building the best comprehensive art and design tool that's accessible to all.

Mission success will come when Graphite is an industry standard. A cohesive product vision and focus on innovation over imitation is the strategy that will make that possible.

Screenshots

Made using nondestructive boolean operations and procedural polka dot patterns

Mandelbrot fractal filled with a noise pattern, procedurally generated and infinitely scalable

Design for a magazine spread, a preview of the upcoming focus on desktop publishing

Contributing/building the code

Are you a graphics programmer or Rust developer? Graphite aims to be one of the most approachable projects for putting your engineering skills to use in the world of open source. See instructions here for setting up the project and getting started.

By submitting code for inclusion in the project, you are agreeing to license your changes under the Apache 2.0 license, and that you have the authority to do so. Some directories may have other licenses, like dual-licensed MIT/Apache 2.0, and code submissions to those directories mean you agree to the applicable license(s).