Nodeller

A work-in-progress experimental image and 3D model processing application codename “Nodeller”, currently in early alpha stage.

It uses my own node editor system called NodeEngine – a C++ UI-less fully OOP state-machine graph for granular processing of data. Another project called NodeEngineImGui wraps it in ImGui calls for being used with ImGui immediate mode UI system.

Emphasis on speed and ability to process high-res imagery. Multithreading currently encompasses costly erosion computation. The program is able to process 16K textures very fast, also including the erosion algorithm with milion of passes.

Model loader is my own OBJ-loader created from scratch. Eventually the meshes will be able to get also raytraced with ManTracer, experimental C++ raytracer.

Tech stack: C++ / OpenGL / ImGUI

Responsibility: everything

Nodeller v. 0.3

  • Implemented inhouse logger
  • Added triangle rasterizer based on half-plane computations
  • Added color interpolation for triangle and Bresenham line rasterizer algorithms
  • Added [optional] assimp integration along with internal obj-loader
  • Implemented cubemap renderer
  • Implemented normal map support for OpenGL rendering
  • Added support for tangents/bitangents for vertices, along with algorithm to compute them for internal obj-loader (assimp already has that)
  • Added support for render node to tweak specular coefficients
  • Added early WIP ambient occlusion node (traditional occlusion-based approach)
  • Modified UVFromImage node to detect fed textures/colors and provide proper output
  • Added WIP image caching functionality via specialized node field, to be used with nodes like paint node
  • Added (late WIP) 2D paint node to paint over textures
  • Added RGB<>HSL conversion algorithm
  • Added Node_BrightnessContrast
  • Added Node_HSL for tweaking hue, saturation and luminance
  • A lot of code refactoring

video coming soon

Nodeller v. 0.2

Migrated ImGui backend to the docking branch, restructured UI to support docking and root node windows, modified model renderer to be the part of the nodal system and allow for vertex transformations. Added nodes: Math, VectorMath, VectorMath for std::vectors, ImageFromUV (WIP, as seen on video it’s upside down now). Added WIP node Colorize, Node_RenderModel & Node_Model for manipulating 3D triangulated meshes. Updated convolution filter node, WIP splash screen. Early WIP of node graph editor zooming in/out capability (not seen on the video).

Nodeller v. 0.1

Added convolution filters, image transformations (flips plus shift), fully working serialization, diffuse texture for models as input node, mouse input to render window, proper node state resetting on close/new scene including GL parts of the program, automatic/manual mode for node engine plus dozens of minor features and bug fixes. Added new font and totally changed UI style. A lot of code refactoring.

Nodeller 0.04

Added WIP topology maps support (for now curvature map), WIP normal map support, upgrade to node system (ability to delete node links and nodes).

Nodeller 0.03

Improved erosion node, added texture support for heightmap rendering, improved noise node

Nodeller 0.02

Added WIP erosion node, heightmap rendering, upgrade to node system.

Nodeller 0.01

Initial version of the software, capable of handling basic image loading and blending, using very early version of node engine system.