Giter VIP home page Giter VIP logo

bugelniels / nitro Goto Github PK

View Code? Open in Web Editor NEW
50.0 4.0 4.0 100.7 MB

Powerful and flexible node editor that facilitates building complex combinations of various image processing techniques.

Home Page: https://bugelniels.github.io/nitro/

License: MIT License

CMake 3.48% C++ 91.93% GLSL 1.68% Shell 2.38% Dockerfile 0.53%
cmake cpp dataflow dataflow-programming editor flow-based-programming graph graphics image-processing node

nitro's Introduction

Hi there ๐Ÿ‘‹

My name is Niels and I am a computing scientist, book enjoyer, and experienced Google Search user. As far as CS is concerned, my interests lie primarily in the field of High-Performance Computing, Computer Graphics, and Image Processing. On top of that, I also tend to enjoy doing some full-stack programming.

In my spare time, I enjoy playing around with Blender, which I first picked up around 10 years ago. Every once in a while, I post some renders on my Artstation, so if you are curious check it out below.

| Personal Website | LinkedIn | Artstation |

Project Highlight

Have a look at my latest project: NITRO. Nitro is a visual graph-based node editor for building image processing routines and was built to be easily extendable. Preview

nitro's People

Contributors

bugelniels avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

nitro's Issues

Allow type conversions

Allow data types to specify to which other data types they can convert and how.
E.g. integer and double types should be able to convert to each other
Integer and double types should also be convertible to images (but not the other way around).

Allow registring of viewer and load nodes

Allow modules to register particular nodes as viewer nodes (or associate them with particular dock widgets somehow)
Additionally, allow for registering particular nodes as file load nodes, so that users can drag and drop those file types onto the editor to spawn the corresponding load node.

  • Add a factory that constructs a dock widget based on a particular node id/name?
  • Add a factory that constructs a node based on a given file extension.

Improved Docks

Allow for the spawning of multiple copies of the same dock. In particular, allow for multiple image viewers and allow the viewer node(s) to select which dock to view the image in.

Concretely:

  • Allow for (at runtime) adding/removing dock widgets
    • Docks should not have an enable/disable button anymore, but simply add/remove
    • Do something similar to blender where you have a dock wrapper and you can select from a dropdown which dock type to use.
  • Each copy of a particular dock type gets an index (unique within said dock type)
    • This index should be displayed in the widget
  • Viewer nodes should be able to specify the dock type in question

Design: Builder pattern for nodes

Instead of using inheritance for node creation, instantiate a builder pattern to add input and output nodes. Separate compute interface that can be given using composition to the node

Add contributing readme

Add a contributing readme to help people get started with developing new features for the project

Bulk conversion

First off, this is a beautiful project!

I'd like to propose a feature for converting multiple images at a time. As far as I can tell, this doesn't seem possible, yet.

Some sub features of this may be:

  1. Load images in bulk.
  2. Edit images in bulk - while displaying the change on one exemplary image.
  3. Export in bulk.

Improve Module Dependencies

Allow modules to specify which modules it depends on (e.g. an image processing module that depends on imcore)

Add build configuration for self-contained binary

Update CMake so that it is able to build (cross-platform ideally) a self-contained binary that can be distributed.
This should enable users to run NITRO without installing all the required dependencies first.

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.