A crate for creating and evaluating executable directed graphs at runtime. In other words, gantz allows users to compose programs described by interconnected nodes on the fly.
Gantz is inspired by a desire for a more flexible, high-performance, open-source alternative to graphical programming environments such as Max/MSP, Touch Designer, Houdini and others. Named after gantz graf.
- A simple way of creating custom nodes from rust code using
- Solve handling of generics and trait objects within custom nodes.
Deserializeimplementations via serde and typetag.
- Project workspace creation.
- Push evaluation through the graph.
- Pull evaluation through the graph (#16).
- Stateless node codegen.
- Stateful node codegen #19.
- Conditional evaluation #21.
- Provide a suite of commonly required "std" nodes out of the box:
- Primitive types and casts.
- Mappings to
Vecconstructors and methods.
Stringconstructors and methods.
- Conversion functions:
DeStructurenode that allows de-structuring types into their fields.
- Timer/Clock node with push and pull variants. Useful for testing rates.
After each of these goals are met, gantz will be integrated into nannou where it will be extended with higher-level tools including:
- A GUI for creating, editing and saving graphs and custom nodes at runtime.
- Node packaging and sharing tools.
- A suite of nodes providing an interface to nannou's cross-platform support
for a wide range of protocols and I/O:
- Windowing and input events.
- Phasers and signals.
- Audio input, output, processing and device management.
- 2D/3D geometry, graphics and shaders.
- Video input and processing.
- Networking (UDP and TCP).
- Lighting, lasers & control: DMX (via sACN), CITP (& CAEX), Ether-Dream.
- GPU general compute.
- General file reading and writing.
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.