77 lines
1.7 KiB
Markdown
77 lines
1.7 KiB
Markdown
|
|
```toc
|
|
```
|
|
|
|
# Notes
|
|
|
|
We need three major components to work together. I would love it if the node-store and the runtime are super loosely coupled so that they could be replaced by at will. So for example i could use the “server-runtime” that executes the node-graph on the server, or the “local” runtime that executes the node-graph locally.
|
|
|
|
**NODE_INTERFACE**
|
|
This is where the user interacts with the node graph. The frontend loads a node-system. Then fetches all the relevant nodes from the node-store.
|
|
|
|
**NODE_REGISTRY**
|
|
The node-store stores all the nodes. For each node it stores a definition and the wasm blob that executes that node.
|
|
|
|
**[[Projects/bachelor/RUNTIME_EXECUTOR|RUNTIME_EXECUTOR]]**
|
|
The runtime gets a node-graph and returns the result after executing the node-graph. It fetches the relevant nodes from the node-store.
|
|
|
|
|
|
# How to store nodes in the registry?
|
|
|
|
The nodes need:
|
|
|
|
## ID: string/string/string
|
|
I could imagine something like jimfx/nature/branch
|
|
|
|
## INPUTS:
|
|
We need a way to define how the UI should render the input ui. Could be something like:
|
|
|
|
```json
|
|
{
|
|
"inputs": [
|
|
“a”: {
|
|
“type”: “select”,
|
|
“options”: [
|
|
“curly”,
|
|
“straight”
|
|
]
|
|
},
|
|
"b": {
|
|
"type":"float",
|
|
"value": 0.5,
|
|
"max": 10.0,
|
|
"min": 0
|
|
},
|
|
"res":{
|
|
"type": "integer",
|
|
"value": 5,
|
|
"setting":"leaves/resolution"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## OUTPUTS
|
|
The nodes output, could look something like this:
|
|
|
|
```json
|
|
{
|
|
"outputs": ["stem","float"]
|
|
}
|
|
```
|
|
|
|
# How to store serialized nodes
|
|
|
|
```json
|
|
{
|
|
"id":"jimfx/nature/branch",
|
|
"inputs": [0,8.4],
|
|
"position": [0.6, 10]
|
|
"meta": {
|
|
"title":"Branch Node"
|
|
}
|
|
}
|
|
```
|
|
|
|
|