fughilli / libopendrop

Music reactive shader library with a focus on correctness, speed, and simplicity.
2 stars 0 forks source link

# Implement a rendering graph model #3

Open fughilli opened 2 years ago

fughilli commented 2 years ago

Ideas:

fughilli commented 2 years ago

Initial design document

Started work in the graphs branch

fughilli commented 2 years ago

conversion declaration, opaque data storage, and a minimal graph model are implemented (the graph model only supports linear graphs, which is not very useful at the moment).

I think a nice short-term goal to be able to start playing with the features consists of:

fughilli commented 2 years ago

An initial model is now implemented and merged. There is a lot of cruft left over that should be cleaned up:

The OpaqueTuple abstraction should not own memory. It should be just a mechanism for converting from a set of pointers to data to a tuple of typed references and back. The outputs of all nodes in the graph will have memory owned by the graph itself; the nodes will only own memory used to track their internal state. The input to the whole graph is provided by reference at the time of Graph::Evaluate(), and thus does not need to be owned by the graph.

Types should be default-constructible--it was a complete headache trying to work around how to be able to construct memory for a Type without statically knowing its C++ class type. All memory for a graph will be default-constructed and then initialized appropriately on first mutation.

The implementation should be revised to achieve this simpler model.