1 unstable release
Uses old Rust 2015
0.1.0 | Jun 6, 2018 |
---|
#30 in #graphical
14KB
153 lines
gantz
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.
Goals
- A simple way of creating custom nodes from rust code using
derive
. - Solve handling of generics and trait objects within custom nodes.
-
Serialize
andDeserialize
implementations via serde. - Push evaluation through the graph.
- Pull evaluation through the graph.
- Provide a suite of commonly required "std" nodes out of the box:
- Primitive types and casts.
- Mappings to
std::ops
:Add
,Sub
,Mul
,Div
, etc. -
std::fmt
nodes:Debug
,PrettyDebug
,Display
. -
Vec
constructors and methods. -
String
constructors and methods. - Conversion functions:
Into
,From
,FromStr
,FromIterator
, etc. - A
DeStructure
node 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).
- OSC.
- Lighting, lasers & control: DMX (via sACN), CITP (& CAEX), Ether-Dream.
- GPU general compute.
- General file reading and writing.
License
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.
Contributions
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.
Dependencies
~3MB
~62K SLoC