All Projects β†’ GraphiteEditor β†’ Graphite

GraphiteEditor / Graphite

Licence: apache-2.0
Open source 2D node-based raster/vector graphics editor (Photoshop + Illustrator + Houdini = Graphite)

Projects that are alternatives of or similar to Graphite

Texturize
πŸ€–πŸ–ŒοΈ Generate photo-realistic textures based on source images. Remix, remake, mashup! Useful if you want to create variations on a theme or elaborate on an existing texture.
Stars: ✭ 366 (+64.13%)
Mutual labels:  image-generation, image-processing, image-manipulation
Nimp
Nimp - Node-based image manipulation program.
Stars: ✭ 45 (-79.82%)
Mutual labels:  image-processing, image-manipulation, photo-editing
Neural Doodle
Turn your two-bit doodles into fine artworks with deep neural networks, generate seamless textures from photos, transfer style from one image to another, perform example-based upscaling, but wait... there's more! (An implementation of Semantic Style Transfer.)
Stars: ✭ 9,680 (+4240.81%)
Mutual labels:  image-generation, image-processing, image-manipulation
Pytorch Cyclegan And Pix2pix
Image-to-Image Translation in PyTorch
Stars: ✭ 16,477 (+7288.79%)
Mutual labels:  image-generation, image-manipulation
Nuxt Image Loader Module
An image loader module for nuxt.js that allows you to configure image style derivatives.
Stars: ✭ 135 (-39.46%)
Mutual labels:  image-processing, image-manipulation
Oneshottranslation
Pytorch implementation of "One-Shot Unsupervised Cross Domain Translation" NIPS 2018
Stars: ✭ 135 (-39.46%)
Mutual labels:  image-generation, image-manipulation
Urpflanze
A library for developers who want to approach to creative coding, artists who want to approach coding and for those who find it fun to play with math.
Stars: ✭ 118 (-47.09%)
Mutual labels:  2d-graphics, art
Tsit
[ECCV 2020 Spotlight] A Simple and Versatile Framework for Image-to-Image Translation
Stars: ✭ 141 (-36.77%)
Mutual labels:  image-generation, image-manipulation
Avir
High-quality pro image resizing / scaling C++ library, image resize
Stars: ✭ 135 (-39.46%)
Mutual labels:  image-processing, image-manipulation
Starnet
StarNet
Stars: ✭ 141 (-36.77%)
Mutual labels:  image-processing, image-manipulation
Deblurgan
Image Deblurring using Generative Adversarial Networks
Stars: ✭ 2,033 (+811.66%)
Mutual labels:  image-processing, image-manipulation
Bitmap
C++ Bitmap Library
Stars: ✭ 125 (-43.95%)
Mutual labels:  image-processing, image-manipulation
Cyclegan
Software that can generate photos from paintings, turn horses into zebras, perform style transfer, and more.
Stars: ✭ 10,933 (+4802.69%)
Mutual labels:  image-generation, image-manipulation
Gesturegan
[ACM MM 2018 Oral] GestureGAN for Hand Gesture-to-Gesture Translation in the Wild
Stars: ✭ 136 (-39.01%)
Mutual labels:  image-generation, image-manipulation
Mgan
Masking GAN - Image attribute mask generation
Stars: ✭ 120 (-46.19%)
Mutual labels:  image-processing, image-manipulation
Focal Frequency Loss
Focal Frequency Loss for Generative Models
Stars: ✭ 141 (-36.77%)
Mutual labels:  image-generation, image-manipulation
Iso
Build pages and prototypes with Lab UI components. No configuration or build setup required.
Stars: ✭ 158 (-29.15%)
Mutual labels:  compositor, design
Php Legofy
Transform your images as if they were made out of LEGO bricks.
Stars: ✭ 161 (-27.8%)
Mutual labels:  image-processing, image-manipulation
Distancegan
Pytorch implementation of "One-Sided Unsupervised Domain Mapping" NIPS 2017
Stars: ✭ 180 (-19.28%)
Mutual labels:  image-generation, image-manipulation
L1stabilizer
πŸŽ₯ Video stabilization using L1-norm optimal camera paths.
Stars: ✭ 111 (-50.22%)
Mutual labels:  image-processing, image-manipulation
Graphite Logo

Graphite: An open source node-based 2D graphics editor

Overview

Watch the Announcement Talk at the Rust Gamdev Meetup (20 minutes)

Graphite is an open-source, cross-platform digital content creation desktop app for 2D graphics editing, photo processing, vector art, digital painting, illustration, and compositing. Inspired by the open-source success story of Blender in the 3D domain, it aims to bring 2D content creation to new heights with efficient workflows influenced by Photoshop and Illustrator and backed by a powerful node-based, nondestructive approach proven by Houdini and Substance. The user experience of Graphite is of central importance, offering a meticulously-designed UI catering towards an intuitive and efficient artistic process. Users may draw and edit in the traditional interactive (WYSIWYG) viewport or jump in or out of the node graph at any time to tweak previous work and construct powerful procedural image generators that seamlessly sync with the interactive viewport. A core principle of the application is its 100% nondestructive workflow that is resolution-agnostic, meaning that raster-style image editing can be infinitely zoomed and scaled to any arbitrary resolution at a later time because editing is done by recording brush strokes, vector shapes, and other manipulations parametrically. One might use the painting tools on a small laptop display, zoom into specific areas to add detail to finish the artwork, then perhaps try changing the simulated brush style from a blunt pencil to a soft acrylic paintbrush after-the-fact, and finally export the complete drawing at ultra high resolution for printing on a giant poster. On the surface, Graphite is an artistic medium for drawing anything imaginableβ€” under the hood, the node graph in Graphite powers procedural graphics and parametric rendering to produce unique artwork and automated data-driven visualizations. Graphite brings together artistic workflows and empowers your creativity in a free, open-source package that feels familiar but lets you go further.

Discord

Graphite is in an early stage of development and its vision is highly ambitious. The project is seeking collaborators to help design and develop the software. If interested, please open an issue to get in touch or introduce yourself in the project's Discord chat server at https://di-s-co-rd.gg/p2-a-Y-jM3 (remove the dashes).

Design mockups

Interactive viewport mockup (work-in-progress design): Interactive viewport

Node editor mockup (work-in-progress design): Node editor

Technology

Rust is the language of choice for a number of compelling reasons. It is low-level and highly efficient which is important because the nondestructive, resolution-agnostic editing approach will already be challenging to render fast enough for real-time, interactive editing. Furthermore, Rust makes multithreading very easy to implement and its safety guarantees will eliminate the inclusion of many bugs and crashes in the software. It is also easy to compile Rust code natively to Windows, macOS, Linux, and web browsers via WebAssembly, with the possibility of deploying Graphite to mobile devices down the road as well.

WebGPU (via the WGPU Rust library) is being used as the graphics API because it is modern, portable, and safe. It makes deployment on the web and native platforms easy while ensuring consistent cross-platform behavior. It also offers the ability to use compute shaders to perform many tasks that speed up graphical computations.

Vue.js is the web frontend framework initally used for building Graphite's user interface. This means, for the moment, Graphite will only run in a browser using Rust code compiled to WebAssembly (via wasm-bindgen). This web-based GUI is intended to be rewritten in a native Rust GUI framework once that ecosystem matures or a developer can write a custom GUI framework suitable to the subset of featured needed by Graphite's user interface. The project was initially trying to write a custom GUI framework throughout 2020, but this was halting progress on higher-priority features.

Pathfinder is a Rust library that will be used for vector graphics rendering.

Extension scripting language: the current plan is to use WASM modules that call APIs exposed for adding to parts of the GUI and controlling functionality around the application.

Node code scripting language: to be decided. Some nodes expose a code editor for writing short scripts to perform actions more efficiently than stringing together a bunch of nodes. (For comparison, Houdini uses its Vex language for this.) It may be possible to build a language runtime into a "language server node" (some would be provided by extensions, some out-of-the-box); other nodes could then consume a chosen language server node and execute logic written in the language of the user's choice.

Running the code

The project is split between a Rust crates in /packages and web-based frontend in /web-frontend (this will be replaced by a native GUI system in the future in order to compile Graphite for Windows, Mac, and Linux). Currently the Vue.js frontend runs with the Vue CLI but the WASM bindings HTML/JS is built with WebPack (see issue #29).

Running the web frontend

cd web-frontend
npm install
npm run serve

Running the WASM binding generator

PREREQUISITE: Download and install wasm-pack first.

cd web-frontend
npm install
npm run webpack-start

Running the Rust code

cargo run
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].