* Port gradient tool overlays
* Fix tests
* Text tool
* Artboard tool and some of select tool
* Port select tool drawing box
* Pen and path tool
* Remove overlays document
* Show the overlay refactor as done on the website roadmap
* Select tool bounds in layer space (first layer)
* Code review and fixes
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Refactor Graphite dependency management
* Remove deprecated future executor
* Code review nits
* Remove unused dependencies
* Update dependencies and make compile with all features
* Replace use of future_executor with wasm-bindgen-futures
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Make transform node accept footprint as input and pass it along to its input
use f32 instead of f64 and add default to document node definition
* Add cull node
* Fix types for Transform and Cull Nodes
* Add render config struct
* Add Render Node skeleton
* Add Render Node to node_registry
* Make types macro use macro hygiene
* Place Render Node as output
* Start making DownresNode footprint aware
* Correctly calculate footprint in Transform Node
* Add cropping and resizing to downres node
* Fix Output node declaration
* Fix image transform
* Fix Vector Data rendering
* Add concept of ImageRenderMode
* Take base image size into account when calculating the final image size
* Supply viewport transform to the node graph
* Start adapting document graph to resolution agnosticism
* Make document node short circuting not shift the input index
* Apply clippy lints
* Initialize wgpu executor from graphene cli
* Make `graphene-core` `no-std` complient again
* Implemnt image similarity calculation
* Add nan checks
* Make image comparison optional
* Feature gate quantization to reduce the number of warnings
* Create artboard nodes
* Update node when resizing artboard
* Render clipped artboards
* More stable feature
* Do not render old artboards
* Fix some issues with transforms
* Fix crash when drawing rectangle
* Format
* Allow renaming document from Properties panel
* Adjust artboard label styling
* Fix document graph refresh so artboards show up
* Make "Clear Artboards" coming soon
* Fix displaying an infinite canvas
* Show document name in node graph options bar
* info!() to debug!()
* Fix Properties panel not being cleared when all docs closed
* Remove dead code
* Remove debug logs added in this branch
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Implement skeleton for graphene-cli
* Configure gpu surface on non wasm32 targets
* Create window with full hd size
* Create window using the graphen-cli
* Use window size for surface creation
* Reuse surface configuration
* Reduce window size for native applications to 800x600
* Add compute pipeline test
* Poll wgpu execution externally
* Remove cache node after texture upload
* Add profiling instructions
* Add more debug markers
* Evaluate extract node before flattening the network
* Reenable hue saturation node for compilation
* Make hue saturation node work on the gpu + make f32 default for user inputs
* Add version of test files without caching
* Only dispatch each workgroup not pixel
* ICE
* Add quantization to gpu code
* Fix quantization
* Load images at graph runtime
* Fix quantization calculation
* Feature gate quantization
* Use git version of autoquant
* Add license to `graphene-cli`
* Fix graphene-cli test case
* Ignore tests on non unix platforms
* Fix flattening test
* Create asynchronous rust imaginate node
* Make a first imaginate request via rust
* Implement parsing of imaginate API result image
* Stop refresh timer from affecting imaginate progress requests
* Add cargo-about clarification for rustls-webpki
* Delete imaginate.ts and all uses of its functions
* Add imaginate img2img feature
* Fix imaginate random seed button
* Fix imaginate ui inferring non-custom resolutions
* Fix the imaginate progress indicator
* Remove ImaginatePreferences from being compiled into node graph
* Regenerate imaginate only when hitting button
* Add ability to terminate imaginate requests
* Add imaginate server check feature
* Do not compile wasm_bindgen bindings in graphite_editor for tests
* Address some review suggestions
- move wasm futures dependency in editor to the future-executor crate
- guard wasm-bindgen in editor behind a `wasm` feature flag
- dont make seed number input a slider
- remove poll_server_check from process_message function beginning
- guard wasm related code behind `cfg(target_arch = "wasm32")` instead
of `cfg(test)`
- Call the imaginate idle states "Ready" and "Done" instead of "Nothing
to do"
- Call the imaginate uploading state "Uploading Image" instead of
"Uploading Input Image"
- Remove the EvalSyncNode
* Fix imaginate host name being restored between graphite instances
also change the progress status texts a bit.
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Add Texture handle type
* Add Texture View to shader inputs
* Implement basic rendering pipeline
* Render first texture using render pipeline
* Fix output color space
* Precompute the rendering pipeline
* Move gpu context creation to editor api
* Port gpu-executor nodes to node registry
* Fix canvas nodes and make code compile for non wasm targets
* Pin wasm-bindgen version
* Disable miri temoporarily for better ci times
* Fix formatting
* Remove unsafe block
* Bump wasm-pack version
* Bump wasm-bindgen version
* Add gpu feature guard for push node
* Make Into node async
* Reorganize file structure
* Remove all unsafe code
* Add testcase for debugging ub
* Convert into proper test with fail condition
* General cleanup
* Fix tests
* Add feature guard for deallocation
* Use raw pointer for storing values to avoid violating aliasing rules
* Add comment explaining the disabling of simd128
* Fix brush node
* Fix formatting
* Remove unsafe code
* Make node graph test syncronous
* Add miri step to ci
* Remove unsafe from node graph evaluation
* Replace operation pseudo_hash with hash based on discriminant
* Fix test
* Move memo module to core and make it safe
* Fix formatting
* Remove unused stuff from gstd
* Use safe casting for creating key variants
* Fix memo node types
* Fix ref node
* "fix" ub
* Use correct input types for ExtractImageFrame
* Fix types for async nodes
* Fix missing implementation
* Manually override output type for async nodes
* Fix types for EditorApi
* Fix output type for WasmSurfaceHandle
* Remove unused miri.yml
* Fix incorrect type for cache node
* Web gpu execution MVP
Ready infrastructure for wgpu experimentation
Start implementing simple gpu test case
Fix Extract Node not working with nested networks
Convert inputs for extracted node to network inputs
Fix missing cors headers
Feature gate gcore to make it once again no-std compatible
Add skeleton structure gpu shader
Work on gpu node graph output saving
Fix Get and Set nodes
Fix storage nodes
Fix shader construction errors -> spirv errors
Add unsafe version
Add once cell node
Web gpu execution MVP
* Make node graph execution async
Make node macro generate async node implementations
Start propagating async through the node system
Async checkpoint
Make Any<'i> Send + Sync
Determine node io type using panic node
Fix types for raster_node macro
Finish porting node registry?
Fix lifetime errors
Remove Send + Sync requirements and start making node construction async
Async MVP
Fix tests
Clippy fix
* Fix nodes
* Simplify lifetims for node macro + make node macro more modular
* Reenable more nodes
* Fix pasting images
* Remove http test from brush node
* Fix output type for cache node
* Fix types for let scope
* Fix formatting
* Initial work towards text to node
* Add the text generate node
* Implement live edit
* Fix merge error
* Cleanup text tool
* Implement text
* Fix transforms
* Fix broken image frame
* Double click to edit text
* Fix rendering text on load
* Moving whilst editing
* Better text properties
* Prevent changing vector when there is a Text node
* Push node api
* Use node fn macro
* Stable ids
* Image module as a seperate file
* Explain check for "Input Frame" node
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Adds a `serialize` function on Node which can be implemented by nodes to
allow introspecting their content. This pr also adds a Monitor Node that
always caches the last value it was evaluated with.
Test Plan: -
Reviewers: 0HyperCube
Reviewed By: 0HyperCube
Pull Request: https://github.com/GraphiteEditor/Graphite/pull/1165
* Start implementing GpuExecutor for wgpu
* Implement read_output_buffer function
* Implement extraction node in the compiler
* Generate type annotations during shader compilation
* Start adding node wrapprs for graph execution api
* Wrap more of the api in nodes
* Restructure Pipeline to accept arbitrary shader inputs
* Adapt nodes to new trait definitions
* Start implementing gpu-compiler trait
* Adapt shader generation
* Hardstuck on pointer casts
* Pass nodes as references in gpu code to avoid zsts
* Update gcore to compile on the gpu
* Fix color doc tests
* Impl Node for node refs
* Migrate Nodes to use RasterMut + Samplable
* Add Pixel trait to include serialization
* Implement traits for Color and propagate new generics
* Always convert to linear color when loading images
* Update GPU and quantization to new node system
Squashed commit of the following:
commit 3b69bdafed79f0bb1279609537a8eeead3f06830
Author: Dennis Kobert <dennis@kobert.dev>
Date: Sun Mar 5 11:37:17 2023 +0100
Disable dev tools by default
commit dbbbedd68e48d1162442574ad8877c9922d40e4a
Merge: b1018eb5 a8f6e11e
Author: Dennis Kobert <dennis@kobert.dev>
Date: Sun Mar 5 10:45:00 2023 +0100
Merge branch 'vite' into tauri-restructure-lite
commit b1018eb5ee56c2d23f9d5a4f034608ec684bd746
Merge: 3195833e 0512cb24
Author: Dennis Kobert <dennis@kobert.dev>
Date: Fri Mar 3 17:06:21 2023 +0100
Merge branch 'master' into tauri-restructure-lite
commit 3195833e4088a4ed7984955c72617b27b7e39bfc
Author: Dennis Kobert <dennis@kobert.dev>
Date: Fri Mar 3 17:06:02 2023 +0100
Bump number of samples
commit 3e57e1e3280759cf4f75726635e31d2b8e9387f9
Author: Dennis Kobert <dennis@kobert.dev>
Date: Fri Mar 3 16:55:52 2023 +0100
Move part of quantization code to gcore
commit 10c15b0bc6ffb51e2bf2d94cd4eb0e24d761fb6f
Merge: 2b3db45a 8fe8896c
Author: Dennis Kobert <dennis@kobert.dev>
Date: Fri Mar 3 14:28:56 2023 +0100
Merge remote-tracking branch 'origin/master' into tauri-restructure-lite
commit 2b3db45aee44a20660f0b1204666bb81e5a7e4b6
Author: Dennis Kobert <dennis@kobert.dev>
Date: Fri Mar 3 14:17:11 2023 +0100
Fix types in node registry
commit 9122f35c0ba9a86255709680d744a48d3c7dcac4
Merge: 26eefc43 2cf4ee0f
Author: Dennis Kobert <dennis@kobert.dev>
Date: Fri Mar 3 01:04:55 2023 +0100
Merge remote-tracking branch 'origin/master' into tauri-restructure-lite
commit 26eefc437eaad873f8d38fdb1fae0a1e3ec189e4
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Mar 2 23:05:53 2023 +0100
Add Quantize node to document_node_types
commit 3f7606a91329200b2c025010d4a0cffee840a11c
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Mar 2 17:47:51 2023 +0100
Add quantization nodes to node registry
commit 22d8e477ef79eef5b57b1dc9805e41bbf81cae43
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Mar 2 17:13:28 2023 +0100
Introduce scopes (#1053)
* Implement let binding
* Add lambda inputs
* Fix tests
* Fix proto network formatting
* Generate a template Scoped network by default
* Add comment to explain the lambda parameter
* Move binding wrapping out of the template
* Fix errors cause by image frames
commit 9e0c29d92a164d4a4063e93480e1e289ef5243fe
Author: Alexandru Ică <alexandru@seyhanlee.com>
Date: Thu Mar 2 15:55:10 2023 +0200
Make use of ImageFrame in the node system more extensively (#1055) (#1062)
Make the node system use ImageFrame more extensively (#1055)
commit 5912ef9a1a807917eeb90c1f4835bd8a5de9c821
Author: Dennis Kobert <dennis@kobert.dev>
Date: Wed Mar 1 16:15:21 2023 +0100
Split quantization into multiple nodes
commit 285d7b76c176b3e2679ea24eecb38ef867a79f3b
Author: Dennis Kobert <dennis@kobert.dev>
Date: Mon Feb 27 12:35:57 2023 +0100
Fix gpu support
commit e0b6327eebba8caf7545c4fedc6670abc4c3652e
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Feb 16 22:08:53 2023 +0100
Don't watch frontend files when using tauri
commit 58ae146f6da935cfd37afbd25e1c331b615252da
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Feb 16 21:48:54 2023 +0100
Migrate vue code base to vite
commit f996390cc312618a60f98ccb9cd515f1bae5006d
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Feb 16 19:34:33 2023 +0100
Start migrating vue to use vite
commit 29d752f47cfd1c74ee51fac6f3d75557a378471c
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Feb 16 19:00:53 2023 +0100
Kill cargo watch process automatically
commit 4d1c76b07acadbf609dbab7d57d9a7769b81d4b5
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Feb 16 17:37:27 2023 +0100
Start playing around with vite infrastructure
commit 8494f5e9227aa433fd5ca75b268a6a96b2706b36
Author: Locria Cyber <74560659+locriacyber@users.noreply.github.com>
Date: Thu Jan 19 18:40:46 2023 +0000
Fix import style and eslint rules
commit 92490f7774a7351bb40091bcec78f79c28704768
Author: Locria Cyber <74560659+locriacyber@users.noreply.github.com>
Date: Thu Jan 19 18:25:09 2023 +0000
Fix icons
commit dc67821abad87f8ff780b12ae96668af2f7bb355
Author: Locria Cyber <74560659+locriacyber@users.noreply.github.com>
Date: Thu Jan 19 18:20:48 2023 +0000
Add license generator with rollup
commit 441e339d31b76dac4f91321d39a39900b5a79bc1
Author: Locria Cyber <74560659+locriacyber@users.noreply.github.com>
Date: Thu Jan 19 18:14:22 2023 +0000
Use eslint --fix to fix TS-in-svelte type imports. Now it compiles.
commit 2e847d339e7dcd51ed4c4677ed337c1e20636724
Author: Locria Cyber <74560659+locriacyber@users.noreply.github.com>
Date: Thu Jan 19 17:31:49 2023 +0000
Remove webpack and plugins
commit 3adab1b7f40ff17b91163e7ca47a403ef3c02fbc
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Mar 2 16:10:19 2023 +0100
Fix errors cause by image frames
commit 4e5f838995e213b4696225a473b9c56c0084e7a8
Author: Alexandru Ică <alexandru@seyhanlee.com>
Date: Thu Mar 2 15:55:10 2023 +0200
Make use of ImageFrame in the node system more extensively (#1055) (#1062)
Make the node system use ImageFrame more extensively (#1055)
commit 1d4b0e29c693a53c068f1a30f0e857a9c1a59587
Author: Dennis Kobert <dennis@kobert.dev>
Date: Wed Mar 1 15:13:51 2023 +0100
Update node graph guide readme with new syntax (#1061)
commit 6735d8c61f5709e22d2b22abd037bab417e868d6
Author: Rob Nadal <Robnadal44@gmail.com>
Date: Tue Feb 28 18:59:06 2023 -0500
Bezier-rs: Add function to smoothly join bezier curves (#1037)
* Added bezier join
* Stylistic changes per review
commit cd1d7aa7fbcce39fbbf7762d131ee16ad9cb46dd
Author: Dennis Kobert <dennis@kobert.dev>
Date: Wed Feb 22 23:42:32 2023 +0100
Implement let binding
Add lambda inputs
Fix tests
Fix proto network formatting
Generate a template Scoped network by default
Add comment to explain the lambda parameter
Move binding wrapping out of the template
* Update package-lock.json
* Regenerate package-lock.json and fix lint errors
* Readd git keep dir
* Revert change to panic.ts
* Fix clippy warnings
* Apply code review
* Clean up node_registry
* Fix test / spriv -> spirv typos
* Generate stable node ids
* checkpoint
* Implement borrow tree
* Add eval function on borrow tree
* Refactor Node trait to fix lifetime issues
* Compiler infinite loop
* Impl compose pair
* Transition to double lifetime on trait
* Change node trait to use a generic arg for the input
* Start adapting node_macro
* Migrate more nodes to new macro
* Fix raster tests
* Port vector nodes
* Make Node trait object safe
* Fix FlatMapResultNode
* Translate most of gstd
* Fix DowncastBothNode
* Refactor node trait once again to allow for HRTB for type erased nodes
* Start working on type erased nodes
* Try getting DowncastBothNode to work
* Introduce Upcasting node + work on BorrowTree
* Make enough 'static to get the code to compile
* Transition DynamicExecutor to use borrow tree
* Make Compose Node use HRTB's
* Fix MapResultNode
* Disable blur test
* Add workaround for Composing type erased nodes
* Convert more nodes in the node_registry
* Convert more of the node_registry
* Add update tree fn and hook up to frontend
* Fix blur node
* Implement CacheNode
* Make frontend use graph compiler
* Fix document_node_types type declaration for most nodes
* Remove unused imports
* Move comment down
* Reuse nodes via borrow tree
* Deprecate trait based value in favor of TaggedValue
* Remove unsafe code in buffer creation
* Fix blur node
* Fix stable node id generation
* Fix types for Image adjustment document nodes
* Fix Imaginate Node
* Remove unused imports
* Remove log
* Fix off by one error
* Remove macro generated imaginate node entry
* Create parameterized add node
* Fix test case
* Remove link from layer_panel.rs
* Fix formatting
* add derive(specta::Type)
* use specta from git
* introduce Uuid type
* remove unnecessary specta::Type
* document export_types test
* upgrade Specta
The previous Specta branch had some hacks that were just for this project. They have all been converted into proper features so they can be merged into main.
* remove some unnecessary specta::Type uses
* add MessageDiscriminantDef explanation
* manually export types with specta
* rename 'specta.rs' to 'export_types.rs'
* rename 'export_types' to 'generate_ts_types'
---------
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
* Use builder pattern for widgets
* Arguments to new function
* Add node graph when dragging in image
* Fix duplicate import
* Skip processing under node graph frame if unused
* Reduce node graph rerenders
* DUPLICATE ALL frontend changes into other frontend
* DUPLICATE more changes to another frontend
* Code review
* Allow importing SVG files as bitmaps
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Make `tauri build` just work
* Move folder: frontend/wasm -> wasm
* Create SvelteKit project with 'npx create-svelte'
* Move wasm-communication into seperate npm package
* Use wasm-pack directly and pack package.json
* Got it to work
* Add primitive build script for wasm npm module
* Fix wasm build script (python)
* Clean up glue code
* Rewrite wasm build script in node.js
* Add serde-reflection to trace types
* Add traced types
* Generate typescript (.d.ts) from Rust types
* Update .d.ts
* Finalize TS types
* Add script to update .d.ts
* Add watch command to build wasm-bindgen
* Make wasm work again
* Add sass; fix build script for windows
* Describe requirement for wasm-pack
* Add license
* Copy and reorganize vue components
* translate LayoutCol.vue
* Split app.scss into pieces
* Translate LayoutRow.svelte
* Rename scss files
* Fix compile issues on Windows
* WIP port TitleBar
* Support classes for LayoutCol/Row
* Restructure based on Vue codebase
* Port all components in window folder
* Port FloatingMenu
* Port Document panel component
* Update readme after folder move
* Update typegen: print discriminant by default
* Update typegen: Merge from branch 'tailwind' 4f14fedb
Fixes bigint & bytes
* Made Vue/webpack/eslint to accept wasm package at new location
This is quite a hack.
Those two packages are both named the same. Yes, it's an npm package inside another npm package.
- frontend/src/wasm-communication/
- frontend-svelte/glue/
'wasm/pkg/index.js' imports the correct one registered when linking.
* Port LayerTree
* Port NodeGraph
* Port Properties
* Port components in /floating-menus
* Finish porting all Vue -> Svelte components
* Change import prefix
* Revert type generation
* Revert moved wasm folder
* Revert all of @locriacyber's work on this branch
- Remove Vite and restore Webpack
- Remove SvelteKit
- Remove everything except the components I ported to Svelte
- Restore all frontend files from Vue code, now altered for Svelte
* Convert Vue's 'reactive' and 'provide' to Svelte's stores and contexts
* Fix event emitting and bi-di data flow
* Undo removal of 'update:' events
* Fix 'update:' event dispatching
* Fix usage in parent of bi-di component props
* Fix component typing, more progress towards no errors
* The page builds and opens!
* Add loading spinner and remove postcss dependency
* Make the basics of document editing work
* Fix rebase history
Co-authored-by: Locria Cyber <74560659+locriacyber@users.noreply.github.com>