2D vector & raster editor that melds traditional layers & tools with a modern node-based, non-destructive, procedural workflow. https://graphite.rs
Find a file
Dennis Kobert e352c7fa71
Refactor the node macro and simply most of the node implementations (#1942)
* Add support structure for new node macro to gcore

* Fix compile issues and code generation

* Implement new node_fn macro

* Implement property translation

* Fix NodeIO type generation

* Start translating math nodes

* Move node implementation to outer scope to allow usage of local imports

* Add expose attribute to allow controlling the parameter exposure

* Add rust analyzer support for #[implementations] attribute

* Migrate logic nodes

* Handle where clause properly

* Implement argument ident pattern preservation

* Implement adjustment layer mapping

* Fix node registry types

* Fix module paths

* Improve demo artwork comptibility

* Improve macro error reporting

* Fix handling of impl node implementations

* Fix nodeio type computation

* Fix opacity node and graph type resolution

* Fix loading of demo artworks

* Fix eslint

* Fix typo in macro test

* Remove node definitions for Adjustment Nodes

* Fix type alias property generation and make adjustments footprint aware

* Convert vector nodes

* Implement path overrides

* Fix stroke node

* Fix painted dreams

* Implement experimental type level specialization

* Fix poisson disk sampling -> all demo artworks should work again

* Port text node + make node macro more robust by implementing lifetime substitution

* Fix vector node tests

* Fix red dress demo + ci

* Fix clippy warnings

* Code review

* Fix primary input issues

* Improve math nodes and audit others

* Set no_properties when no automatic properties are derived

* Port vector generator nodes (could not derive all definitions yet)

* Various QA changes and add min/max/mode_range to number parameters

* Add min and max for f64 and u32

* Convert gpu nodes and clean up unused nodes

* Partially port transform node

* Allow implementations on call arg

* Port path modify node

* Start porting graphic element nodes

* Transform nodes in graphic_element.rs

* Port brush node

* Port nodes in wasm_executior

* Rename node macro

* Fix formatting

* Fix Mandelbrot node

* Formatting

* Fix Load Image and Load Resource nodes, add scope input to node macro

* Remove unnecessary underscores

* Begin attemping to make nodes resolution-aware

* Infer a generic manual compositon type on generic call arg

* Various fixes and work towards merging

* Final changes for merge!

* Fix tests, probably

* More free line removals!

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2024-09-20 03:50:30 -07:00
.devcontainer Fix, document, and update npm dependencies and tooling; fix Bezier-rs demos not building (#1857) 2024-07-24 18:05:01 -07:00
.github Make CI collapse previous PR comments with profiling benchmark deltas (#1974) 2024-09-13 22:54:33 -07:00
.vscode Correctly apply transforms to vector data and strokes (#1977) 2024-09-15 22:26:11 +00:00
demo-artwork Refactor the node macro and simply most of the node implementations (#1942) 2024-09-20 03:50:30 -07:00
editor Refactor the node macro and simply most of the node implementations (#1942) 2024-09-20 03:50:30 -07:00
frontend Refactor the node macro and simply most of the node implementations (#1942) 2024-09-20 03:50:30 -07:00
libraries Refactor the node macro and simply most of the node implementations (#1942) 2024-09-20 03:50:30 -07:00
node-graph Refactor the node macro and simply most of the node implementations (#1942) 2024-09-20 03:50:30 -07:00
proc-macros Restore functionality of GPU infrastructure (#1797) 2024-07-15 13:14:48 +00:00
website Update various content on the website 2024-09-02 23:35:56 -07:00
.editorconfig Remove all references to Vue 2023-03-10 04:02:02 -08:00
.gitattributes Update Git Attributes for JSON syntax highlighting in *.graphite files (#1752) 2024-05-13 22:35:32 +00:00
.gitignore Add profiling metrics for, and speed up, Graphene graph compilation (#1924) 2024-08-12 03:07:36 -07:00
.nvmrc Add dev container configuration 2024-01-24 23:04:00 +00:00
.prettierrc Fix Bezier-rs interactive demos and migrate its Webpack bundler to Vite 2024-01-04 23:13:40 -08:00
about.hbs Replace license generator web infra to use Vite 2023-11-13 03:38:36 -08:00
about.toml Migrate node graph UI interaction from frontend to backend (#1768) 2024-06-15 08:55:33 -07:00
Cargo.lock Refactor the node macro and simply most of the node implementations (#1942) 2024-09-20 03:50:30 -07:00
Cargo.toml Refactor the node macro and simply most of the node implementations (#1942) 2024-09-20 03:50:30 -07:00
deny.toml Migrate node graph UI interaction from frontend to backend (#1768) 2024-06-15 08:55:33 -07:00
LICENSE.txt Add Apache 2 license 2020-07-12 13:58:50 -07:00
package-lock.json Add dev container configuration 2024-01-24 23:04:00 +00:00
package.json Simplify build process by auto-installing npm packages and simplify the contributor guide (#1799) 2024-07-14 20:16:02 -07:00
README.md Finalize GSoC 2024 project idea list 2024-02-11 21:20:00 -08:00
rustfmt.toml Upgrade rustfmt to 2021 edition 2021-11-02 20:08:39 -07:00
shell.nix Add profiling metrics for, and speed up, Graphene graph compilation (#1924) 2024-08-12 03:07:36 -07:00

Graphite logo

Redefining state-of-the-art graphics editing

Graphite is an in-development raster and vector graphics package that's free and open source. It is powered by a node graph compositing engine that fuses layers with nodes, providing a fully nondestructive editing experience.

Presently, Graphite is a lightweight vector graphics editor that runs in your browser. Its node-based compositor lets you apply image effects and co-create art with generative AI.

Photo editing, digital painting, desktop publishing, VFX compositing, and motion graphics are additional competencies planned on the roadmap to make Graphite a highly versatile content creation tool.

Launch the latest alpha release of the Graphite editor and learn more at the project website.

Please remember to star this project here on GitHub!

Vector artwork: "Red Dress"

Red Dress (click to open this artwork and explore it yourself)

Vector artwork: "Valley of Spires"

Valley of Spires (click to open this artwork and explore it yourself)

Discord community

Join our Discord community to chat with the community and development team. Feel free to lurk, ask questions, give suggestions, or get involved in the project. We are always seeking new collaborators to help test, design, and develop the software and this is where we communicate.

Building/contributing

We need Rust and web developers! See instructions here for setting up the project and getting started.

We are also in search of artists to create beautiful sample work in Graphite and illustrations for the website and social media. Please get in touch if you are able to help out.

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).

Features and roadmap

See the web page for this information.

Support the project

Please consider pledging a monthly donation. Your contribution helps sustain this volunteer-run open source project and brings powerful, free creative tools to the masses.