# thedmd/imgui-node-editor

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/thedmd-imgui-node-editor).**

4,320 stars · 654 forks · C++ · mit

## Links

- GitHub: https://github.com/thedmd/imgui-node-editor
- awesome-repositories: https://awesome-repositories.com/repository/thedmd-imgui-node-editor.md

## Topics

`blueprint` `blueprints` `dear-imgui` `game-development` `gamedev` `imgui` `immediate-gui` `middleware` `node-editor`

## Description

imgui-node-editor is a C++ extension for Dear ImGui that adds a fully interactive node graph editor, enabling visual programming and blueprint-style graph editing within immediate-mode GUI applications. At its core, it provides a customizable node graph UI component where users can place, drag, and connect nodes with pins, supporting Bézier curve connections, automatic highlights, and a default theme modeled after blueprint editors. The editor handles graph navigation with smooth zooming, scrolling, selection rectangles, group dragging, and keyboard shortcuts for cut, copy, paste, and delete operations.

The project distinguishes itself through its immediate-mode architecture, rendering the entire node graph each frame using Dear ImGui's API with no retained scene graph or incremental update logic. It features Bézier curve connection routing with automatic path calculation based on pin positions and canvas zoom, pin-based connection validation that checks type compatibility and prevents circular or duplicate links at runtime, and selection-rectangle hit testing using axis-aligned bounding box intersection tests. The editor also includes a context-menu action dispatch system that maps user-selected actions to immediate-mode button callbacks without an event queue, and a serialization-through-callback system that persists node layout and state by invoking user-provided callbacks, leaving the serialization format and storage entirely to the host application.

The editor supports fully custom content rendering inside nodes and pins, allowing developers to define the visual appearance of each element, along with a customizable theme system that includes Bézier curve links and automatic highlights. Graph layout persistence saves and restores node positions, connections, and state across sessions using a custom serialization system. The project provides a complete visual programming editor with canvas coordinate transforms for smooth zooming and panning through a single matrix multiplication per frame.

## Tags

### User Interface & Experience

- [Blueprint-Style Editors](https://awesome-repositories.com/f/user-interface-experience/graph-editors/blueprint-style-editors.md) — Provides a customizable blueprint-style node graph editor with Bézier connections and highlights.
- [ImGui Extensions](https://awesome-repositories.com/f/user-interface-experience/c-gui-toolkits/imgui-extensions.md) — Extends Dear ImGui with node-based workspace and graph manipulation capabilities.
- [Node UI Customization](https://awesome-repositories.com/f/user-interface-experience/custom-ui-development-tools/node-ui-customization.md) — Renders fully custom content inside nodes and pins, letting developers define visual appearance.
- [Immediate-Mode Rendering](https://awesome-repositories.com/f/user-interface-experience/immediate-mode-rendering.md) — Renders the entire node graph each frame using Dear ImGui's immediate-mode API.
- [Graph Navigation and Selection](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces/item-navigation-and-selection/graph-navigation-and-selection.md) — Provides smooth zooming, scrolling, selection rectangles, and keyboard shortcuts for graph navigation. ([source](https://github.com/thedmd/imgui-node-editor/tree/master/docs/))
- [Visual Node Editors](https://awesome-repositories.com/f/user-interface-experience/visual-node-editors.md) — Provides an interactive workspace for designing logic maps and node-based layouts with zoom and selection.
- [Immediate-Mode Context Menu Dispatchers](https://awesome-repositories.com/f/user-interface-experience/action-dispatchers/immediate-mode-context-menu-dispatchers.md) — Ships an immediate-mode context menu dispatch system for node graph actions.
- [Editor Themes](https://awesome-repositories.com/f/user-interface-experience/editor-themes.md) — Applies a fully customizable theme with blueprint-style Bézier curve links and automatic highlights. ([source](https://github.com/thedmd/imgui-node-editor/tree/master/docs/))
- [Blueprint-Style Themes](https://awesome-repositories.com/f/user-interface-experience/editor-themes/blueprint-style-themes.md) — Applies a customizable blueprint-style theme with Bézier links and automatic highlights.
- [Layout Persistence](https://awesome-repositories.com/f/user-interface-experience/layout-persistence.md) — Persists node positions and state in user-defined context across sessions. ([source](https://github.com/thedmd/imgui-node-editor/tree/master/docs/))
- [Node Layout Serialization](https://awesome-repositories.com/f/user-interface-experience/layout-positioning/position-serialization/node-layout-serialization.md) — Persists node layouts, positions, and properties across sessions with user-defined context handling.
- [Connection Validation Rules](https://awesome-repositories.com/f/user-interface-experience/pin-based-connectivity-models/connection-validation-rules.md) — Validates node connections by checking pin types and preventing circular or duplicate links.
- [Selection Area Hit Testing](https://awesome-repositories.com/f/user-interface-experience/selection-area-hit-testing.md) — Performs axis-aligned bounding box intersection tests for selection rectangle hit detection.

### Graphics & Multimedia

- [Node Graph Connection Routings](https://awesome-repositories.com/f/graphics-multimedia/bezier-curve-interpolations/node-graph-connection-routings.md) — Provides automatic Bézier curve routing for node connections in the graph editor.
- [2D Affine Transformation Engines](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/coordinate-viewport-transformations/matrix-transformation-engines/2d-affine-transformation-engines.md) — Applies 2D affine transforms for smooth zooming and panning of the node graph canvas.
- [Graph Node Visualizations](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/engines/canvas-vector-graphics/custom-shape-rendering/graph-node-visualizations.md) — Renders fully custom content inside nodes and pins, letting users define visual appearance. ([source](https://github.com/thedmd/imgui-node-editor/tree/master/docs/))
- [Node Graph Engines](https://awesome-repositories.com/f/graphics-multimedia/visualization-mapping/node-graph-engines.md) — Provides a visual programming interface with draggable nodes, connectable pins, and interactive editing.

### Data & Databases

- [Layout Persisters](https://awesome-repositories.com/f/data-databases/state-persistence/layout-persisters.md) — Saves and restores node positions, connections, and state across sessions using custom serialization.

### Software Engineering & Architecture

- [Callback-Based Serialization](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/persistence-and-serialization/callback-based-serialization.md) — Persists node layouts and state through user-provided callbacks for flexible serialization.

### Part of an Awesome List

- [Development Tools](https://awesome-repositories.com/f/awesome-lists/devtools/development-tools.md) — Node-based editing framework.
