GraphiteEditor / GraphiteEditor/Graphite

Reimplement the node graph UI in the backend

Aperta
#1,922 1 commento 0 reazioni 1 assegnatario Rivendicata da @adamgerhant Vedi su GitHub
Performance Web
Lingua principale
Rust
Stelle
27.2k
Fork
1.3k
Merge medio
20h 5m
PR unite (30g)
57

Descrizione

HTML/CSS isn't well suited for our node graph implementation. We need to reimplement all functionality of the UI by building it out of rounded rectangles, icons, strokes, etc. in the backend. Vello will then be able to render this much more efficiently than the HTML/CSS implementation, while also being able to apply certain effects like the frosted glass background that aren't possible in the current web-based UI due to CSS limitations. In addition to helping fix performance and improve styling, this will help remove a bunch of plumbing code and reuse a lot of code that already goes into rendering the artwork within the viewport, which will now simply have a node graph drawn similarly above it. Once this is done, we can begin putting more effort again into the node graph UI for extra features that aren't worthwhile in the soon-to-be-replaced web UI for the graph, which was always a hacky mess to begin with.

There are two possible approaches:
- Directly emitting a Vello scene
- Pro: probably faster
- Pro: possibly more controllable
- Con: requires WebGPU which is an issue until the end of 2024
- Unknown: might be easier *or* harder to implement frosted background blurring
- Emitting the GraphicGroup data describing how the node graph can be rendered (but without the node graph, just the graphical data)
- Pro: backwards-compatible for SVG-based rendering without Vello
- Con: may require additional maintenance burden as we update the graphical data format
- Unknown: might be easier **or* harder to implement frosted background blurring

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.