Skip to content

facebookexperimental/noodles

noodles

noodles is a standalone C++17 library for rendering interactive node graphs with OpenGL. It provides the core rendering, layout, spatial indexing, and undo/redo machinery used to display large directed graphs of nodes connected by curved links — the kind of UI you see in shader editors, compositors, and visual programming tools.

The library is host-agnostic: it does not create a window or own a GL context. The consuming application provides a current OpenGL context and calls noodles to draw into it.

Status

🚧 Early-stage / experimental. The public C++ API may change without notice.

Features

  • GPU-accelerated rendering of node graphs with thousands of nodes
  • MSDF (multi-channel signed distance field) text rendering for crisp, zoom-independent labels
  • Curved Bezier links with forward and polyline rendering modes
  • Spatial index for fast hit-testing and viewport culling
  • Pluggable command-based undo/redo stack
  • Animator for smooth interpolation of node positions and link geometry
  • Cross-platform: Linux, macOS, Windows

Repository Layout

core/      Math primitives, node data model, render config, animator
render/    OpenGL renderers (nodes, links, text, stickers, font atlas)
spatial/   Spatial index for hit-testing
undo/      Command pattern + undo manager
assets/    Bundled fonts (Poppins, Baskerville) and GLSL shaders
tests/     GoogleTest-based unit tests

Building

See BUILDING.md for full build instructions.

Quick start:

git clone https://github.com/facebookexperimental/noodles.git
cd noodles
cmake -S . -B build
cmake --build build

Third-party dependencies (GLEW, stb, RapidJSON) are fetched automatically via CMake FetchContent if they are not already present on the system.

Using noodles in your project

After cmake --install build, link against the installed library:

find_package(noodles REQUIRED)
target_link_libraries(my_app PRIVATE noodles)

See the headers under core/ and render/ for the public API.

Contributing

We welcome pull requests. See CONTRIBUTING.md for the contributor workflow and Meta's CLA requirements.

License

noodles is MIT licensed. See LICENSE.txt for details.

This repository bundles third-party assets (Poppins and Baskerville fonts). Their licenses are reproduced in THIRD_PARTY_LICENSES.txt. Build-time dependencies fetched by CMake (GLEW, stb, RapidJSON) are also acknowledged there.

About

Noodles is a GPU-accelerated node graph editor built with C++ and OpenGL, designed for OpenUSD pipelines. Features SDF-antialiased rendering, PySide6/Qt integration, and scales to 100K+ nodes with real-time performance.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors