* Make noise generation resolution aware
* Invert "Scale" so it's not "Frequency"; make "Clipping" 100x100 not 1x1
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* WIP
* Introduce `Raster` enum and plumb texture injection to vello
* Use correct texture formas for usage in vello
* Add missing cache implementations
* Update vello image override api
* Use git version of vello
* Fix type for upload texture node
* Improve crash resiliance
* Fix warnings
* Remove unused node impls
* Correctly set the dimensons of the forgein object element
* Remove dead code
* Fix missing default impl
* Set correct default for not wasm32 targets as well
* Apply correct stroke styling in vello
* Account for line end caps in clipmask size
* apply properties panel improvements
* Account for miter limit in Bbox calculation
* Fix bounding box for individual layers
* Test out wasm unwinding
* Implement panic catching for native targets
* Hack in support for recovering panics in wasm
* Keep debug info in release builds
* Check for DynAnyNode in Backtrace because that can't be inlined as well
* Improve error dialog
* Use a mutex for storing the frontend state instead of a RefCell
* Code review
* Update crash text
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Disable vello checkbox if no wgpu support is available
* Fix compile error
* Check wgpu status on every diagogue open
* Execute graph on settings change
* Remove tooltip and disabled status from settings category
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Start integrating vello into render pipeline
Cache vello render creation
Implement viewport navigation
Close vello path
Add transform parameter to vello render pass
* Fix render node types
* Fix a bunch of bugs in the path translation
* Avoid panic on empty document
* Fix rendering of holes
* Implement image rendering
* Implement graph recompilation afer editor api change
* Implement preferences toggle for using vello as the renderer
* Make surface creation optional
* Feature gate vello usages
* Implement skeleton for radial gradient
* Rename vello preference
* Fix some gradients
* Only update monitor nodes on graph recompile
* Fix warnings + remove dead code
* Update everything except for thumbnails after a node graph evaluation
* Fix missing click targets for Image frames
* Improve perfamance by removing unecessary widget updates
* Fix node graph paning
* Fix thumbnail loading
* Implement proper hash for vector modification
* Fix test and warnings
* Code review
* Fix dep
* Remove warning
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* WIP
* Start deprecating let nodes
* Replace WasmEditorApi network imports with new Scope input
* Add missing unwrap
* Add #[serde(default)] to scope_injections
* Restructure WasmEditorApi definition to be available as a TaggedValue
* Fix text node
* Use stable toolchain in nix shell again
* Code review
* FIx text node and remove all remaining warnings
* Require executor input to be 'static
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Cache base64 representation of images when converting to graphic group
* Fix build
* Fix build again
* Actually fix it this time
---------
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>
Only recompile the graph and update thumbnails if the graph has actually changed. (Future work: only send just the thumbnails that actually changed instead of resending all of them.)
* Cache graph compilations
* Only update thumbnails if the graph has changed
* Remove debug statement and fix warnings
Changes:
Graph is evaluated on every viewport change
move all navigation logic into the viewport
reduce the number of js roundtrips
add canvas rendering
enable image pasting
various cleanups
Fix cache nodes being reset every evaluation
* 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
* Don't include the document node path in the stable node id by default
Make the inclusion of the document path for the stable node id optional
and only enable it for the MonitorNode for now
* Fix tests
* Embed git commit hash in the document file
* Bump version in test document file
* Fixes
---------
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
* 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
Implement Infrastructuro to reuse the previous evaluation of the
node graph to blend the new stroke with instead of drawing the
entire trace from scratch.
This does not transition to a blending based approach because that still
caused regressions but allows the brush node to work with input data
natively.
Test Plan:
- Use the brush tool in the editor and check for regressions
- Evaluate the performance
Reviewers: Keavon
Pull Request: https://github.com/GraphiteEditor/Graphite/pull/1190
Add the node path to the document node and carry that over to the proto
nodes which are generated from that.
This pr also adds a compiler pass to assign the paths based on the
hierarchical structure of the nodegraph.
Test Plan: - Run units tests which check the path propagation works
Reviewers: Keavon
Reviewed By: Keavon
Pull Request: https://github.com/GraphiteEditor/Graphite/pull/1181
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
Disables the requirement of merging into master to run the ci.
Test Plan:
- Create a pr against a non master branch and verify the ci runs
- Push to a non master branch and verify the ci runs
Reviewers: Keavon
Reviewed By: Keavon
Pull Request: https://github.com/GraphiteEditor/Graphite/pull/1166
* Migrate webpack to parcel
* Always colour shell output
* Fix typos
* Fix updateImage function having undefined editorInstance
* Readd webpack for deployment builds (licence checker)
* Only use webpack for license generation
* Re add typscript support
* Fix cloudlare deploy
* Bump wasm-pack version
* Update ci script
* Print versions in ci script
* Use optional-dependencies for wasm-pack
* Execute wget after rust install
* Finding wasm-opt version
* Print wasm-opt version
* Revert test?
* Try to revert
* Deploy cloudflare via github actions
* Fix indentation in ci script
* Change project to graphite-dev
* Trigger ci
* Parcel ci (#1152)
* CI Test
* Add write permissions for pr
* Manually add cloudflare ci comment to prs
* Unskip cargo about
* Make compile on new versions of npm
* Add deployment script to rebuild editor.graphite.rs on tag creation
* Remove deploy script
* Comment out unused Svelte props causing warnings
* Many small fixes, including fixing @ imports
---------
Co-authored-by: hypercube <0hypercube@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Enables optimizations for `interpreted-executor` in debug mode to
circumvent the wasm limit for the number of locals in a single function.
Test Plan:
Add entries to the node registry and verify that it does
still compile
Reviewers: Keavon
Reviewed By: Keavon
Pull Request: https://github.com/GraphiteEditor/Graphite/pull/1158
* 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
Fix transform logic for mask node + other fixes
* Fixes the transform logic for the mask node reverting the breakage
introduced by the color pr
* Actually modifies the pixel values
* Fix storage format for images
* Export images as unassociated alpha
* 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