Graphite
Graphite copied to clipboard
Tracking Issue: Graphene engine development
# Post-MVP engineering
- [ ] #1510
- [ ] #1172
- [ ] #1162
- [ ] #1530
- [ ] #1607
- [ ] #1606
- [ ] #1609
- [ ] #1553
- [ ] #1612
- [ ] #134
- [ ] #1608
- [ ] #1244
- [ ] #1173
- [ ] #1604
- [ ] #1605
- [ ] #1610
- [ ] #1170
- [ ] #883
- [ ] #1621
# WebGPU integration
- [ ] #1239
- [ ] #1240
- [ ] #1241
- [ ] #1255
- [ ] #1258
- [ ] #1259
- [ ] #1308
- [x] Modify transform node to support passing a short-circuit input
- [ ] #1307
- [ ] #1295
- [ ] #1293
- [ ] #1296
- [x] Investigate if we can manually influence the limits and have that actually affect something (blocked by WebGPU Device Limits gfx-rs/wgpu#3299?)
- [ ] #1539
- [ ] #1299
- [ ] #1298
- [ ] Add feature gate to only display GPU-based nodes when wgpu is available
- [ ] Add documentation + tests + improve the API
- [ ] Modularize GPU blend mode as a merge node
- [ ] Add nodes for updating existing buffers
- [ ] #1297
- [ ] #1300
- [ ] #1302
- [ ] #1303
- [ ] Rasterize vector content at the appropriate time in the graph
- [ ] Integrate and use the quality level factor as part of the adaptive resolution render pipeline
Previously completed (collapsed)
# Nodes in layers
- [x] Implement the Proto Graph (01bbe5dcedb27bafc5ecc5e68642e106f2a7532a and many subsequent commits)
- [x] #771
- [x] #808
- [x] #800
- [x] #851
- [x] #580
- [x] #799
- [x] #880
- [x] #881
- [x] #911
- [x] #810
- [x] #888
# Winding down legacy layers before the big switch to all nodes
- [x] #992
- [x] #768
- [x] #886
- [x] #889
- [x] #997
- [x] #998
- [x] #1205
- [x] #1211
- [x] #1171
- [x] #1224
- [x] #1221
- [x] #1222
- [x] #1223
- [x] #1175
# The big switch from legacy layers to nodes
- [x] This all had to happen at once because it fundamentally breaks major functionality. The first half was done through a continuously-rebased branch living atop master. The second half was done in master in between production releases while many features were missing and caused crashes until each were fixed. Tracked in:
- [x] #1394
# Cleanup after the full switch to nodes
- [x] #882
- [x] #1167
- [x] #1522
- [x] #1520
- [x] #1525
- [x] #1533
- [x] #1611
Terminology
(feel free to edit this message @TrueDoctor and @Keavon if I've misunderstood anything )
- Node: A function that can be used in a node graph.
- Port: Input / Output of node. Displayed in properties panel when node is clicked on. Can be exposed to the node graph with a checkbox.
- Link: Connects output ports to input ports (represented by a line).
- Master node: What is displayed. Has a variable number of layers as inputs. (my suggestion for making the actual layers displayed clearer rather than having to hunt for them)
- Layer: An input to the master node / a group node. Is represented as a Bezier Path. Can be made by generator nodes.
- Generator node: Generates a Benzier Path layer e.g. (circle / line / polygon etc)
- Document A list of layers with IDs as well as nested document pointers (folders). Also contains transform.
- Folder: A document inside a document with a transform (could be opened in new document tab?)
- Node Graph: An isolated group of nodes with a master node at the end.
Note: entirely out of date by now, lots of this has changed.
@0HyperCube I have updated your definitions, please let me know if anything is unclear or if you'd like to propose any changes to the concepts or terms.
Terminology
- Node: A function that defines certain functionality by receiving any default number of inputs and outputs, plus parameters that are set in the Properties panel which can be also exposed as additional layer inputs.
- Layer: An instance of a node. (Think of a node as a class in object oriented programming and a layer as an object of the class type.)
- Port: Input / output of a node/layer with some data type. Additional properties in the Properties Panel can be exposed as input ports and they will show up on the layer in the node graph.
- Link: Connects output ports to input ports (represented by a line).
- Input/output node: Within a node graph, these are ports that are used to import (input) and export (output) data as exposed by the subgraph (folder) node. Folder nodes allow importing and exporting arbitrary data (provided to the folder node from the parent graph which contains the folder node) which gets provided to the subgraph in the form of input and output nodes (as seen from inside the subgraph).
- Generator node: A general description for a type of node which takes no inputs from ports by default (unless a parameter is exposed from the Properties panel) and creates some parametric output, like a Bezier shape (circle, line, polygon, etc.)
- Document Documents, folders, and node graphs (subgraphs) are conceptually equivalent. A document is something opened in an editor tab, either because it's a GDD file on disk or because it's a subfolder/subgraph contained within another GDD file and it's being opened in a new editor tab to edit it in isolation from its parent document.
- Folder: Documents, folders, and node graphs (subgraphs) are conceptually equivalent. A document inside a document. Appears as a layer in the Layer Tree and Layer Graph panels. The Properties panel for it includes a transform (just like all layers).
- Node Graph: Documents, folders, and node graphs (subgraphs) are conceptually equivalent. A set of layers connected together in a DAG, with any inputs feeding in from the input node and outputs feeding to the output node (both of which are provided by the node graph). Includes layers of various node types, such as other folders (which are, themselves, just subgraphs with their own inputs and outputs).