Code Monkey home page Code Monkey logo

kiwi's Introduction

Kiwi

A generic and easy to use node compositor library for D2 and C++.

Checkout the wiki !
Doxygen qnd ddoc documentation will be available soon.

Main concepts

A kiwi node compositor contains nodes that are linked through their input and output ports. output ports hold Data objects which can be any kind of data structure. Data objects can be composite (for instance a RGBA image container can be described as 4 Read+Zrite color buffer containers and two read only integer containers exposing the width and heigh of the image9, in which case the corresponding output ports become composite as well, and their subPorts follow the same structure as the Data object. Node graphs can be used in 3 ways:
  • The simplest one is to connect nodes within a node group and let the NodeGroup object resolve dependencies, optimize, amd update each node in the correct order.
  • Let nodes manage themselves and trigger their update on input signals
  • Just use the structure of the graph to generate code or any kind of content (like shaders)

The backend is not dependent to any frontend, though optional Qt based widgets will be developed.

The project's advancement (D)

Kiwi is still at an early stage, and interfaces are subject to change. Right now the library is mostly developed in D, and the C++ port will follow. There are old versions of the C++ implementation available in this repository's history, but they dont reflect the architecture of the current version of the library.

Implemented

- The core interfaces and the port connection system. - The "dynamic" backend implementing the core interfaces for nodes and ports. - Runtime data type descriptor and manager.

Currently in development

- Node groups (dynamic backend) - Generic graph algorithms to help with node management, ordonnancing, etc.

TODO

- C++ port of the core API and dynamic backend. - Add serialization (certainly using the orange library for D). - Script integration (starting with Lua) to expose the library to the script and also make serializable nodes running lua code. - Network layer to allow remote manipulation of nodes (in a separate and optional library). - Qt widgets as an optional frontend. - Fun nodes to show kiwi's featues. - Experiment with shader generators and visual scripting using kiwi.

License

Kiwi's source code is under the new BSD License or the Lesser Gnu Public License.

Project member(s)

For now the Kiwi project is designed/developed/maintained by Nicolas Silva.

I would be very happy to share this experience with anyone willing to contribute! To contact me:

email: [email protected]
twitter: @nicalsilva
my resume (fr)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.