Repository navigation
Conversation
… directly in node for parameter port declaration, which then owns publishing.
|
@tobyspark im not quite there, but this sort of API gets us
Thoughts on the API above? This was WAY more work than anticipated so far (and more to go) |
|
Note this API also provides the base ExecutionMode and TimeMode ideas from QC, allowing us to identify Consumer, Producer and Processor nodes, as well as TimeBase nodes which could have their patch time exposed as an input. |
...yikes. There will be beer. At some point. I promise. |
|
I will need to kick the tyres with a new-node-from-whole-cloth to be able to have any kind of meaningful thought. Wrapping a shader was a good start, but a) I haven’t touched Swift in a while and b) yeah, a book chapter is my personal kryptonite. |
…t port subclass - whoops
… is correct. Suspect we dont need the merging func in registry, but we can revisit once we try dynamic port bullshit.
…on, we need to add a subscription, and properly hydrate initial values post init / decoding
…n param updates - since we removed observation from Satin, we have to deal with the consequences of our decision lol
…esign considerations etc etc.
…adata requirements like time mode, execution mode, desc.
…de publishing support.
|
@tobyspark haha awesome. Im close to closing this out. My overall take away is ergonomics are better (less code) for the port definitions but in some sense could be error prone due the fact that swift has no KVC support ootb - so i had to roll this annoying shim with exposing proxy ports Good news is, when we move Fabric to swift package manager, we should be able to expose a custom macro class wrapper thingy which lets us define a set of ports if a more elegant manner, that doesnt require duplication of defines. But that will be a second pass. |
|
I've got 2 more nodes to port to the new registration, then i have to re-test everything to ensure i havent broken stuff, but in theory if it works, we should have the first stable-ish file format for the alpha run? |
|
So in theory, this branch should be working, but the number of changes is uh not trivial. I did a quick pass and things seemed to mostly work? Kick the tires if you can! side effect is this also fixes missing serialization for some nodes, super shape and the PBR material nodes. |
This is a WIP implementation of a new infrastructure in Fabric to
Implementation
Subtleties
Consequences
Proposed WIP API
For example the pre-amble code to
MeshNodenow looks like:registerPortsclosurepublic var inputCullingMode: NodePort<String> { port(named: "inputCullingMode") }are required for type safe access, and its fragile / will break if not wired up correctlyNice to have: