2D CAD ENGINE · MODERN C++23

CAD that moves
at 144 Hz.

A high-performance, multi-threaded 2D CAD engine in modern C++23. GPU-accelerated, data-oriented, and clone-and-build clean.

144 Hz+ refresh target
1M primitives
~4–6 draw calls
untitled.musa
□ END F8
X 1240.00 Y 860.00
endpoint
Command: LINE

DRAWN TO SCALE

It assembles like you drew it yourself.

Scroll and watch a dimensioned part take shape — outlines, holes, then dimension lines and a title block — the same precise strokes Musa CAD renders live at 144 Hz.

bracket.musa
DRAW
292.00 150.00 R34 MUSA CAD SCALE 1:1 bracket.musa .musa SHEET 1/1
Snapping

□ endpoint △ midpoint ○ center

Ortho tracking

F8 · constrained to axis

Instanced rendering

1M primitives · ~4–6 draw calls

Lock-free snapshot

triple-buffered · 144 Hz+

Command: LINE

WHAT'S INSIDE

Engineered like a precision instrument

Eight load-bearing systems, no shortcuts. Three threads, a data-oriented core, and a GPU viewport that never blinks.

MEASURED, NOT MARKETED

Numbers that hold at 144 Hz.

Every figure below is observed, not aspirational — a data-oriented core and a GPU viewport that uploads zero scene bytes on pan and zoom.

  • 144 Hz+

    viewport refresh target

  • 1,000,000

    primitives per scene

  • ~ 4–6

    draw calls

  • ~ 32 ns / line

    insert one line

  • 420–490 FPS

    measured offscreen · UHD 630 / Mesa

render vs. edit · 1.0 s window
144 FPS
144 Hz target FPS EDIT ACTIVITY upload: 0 bytes
Pan and zoom upload zero scene bytes — the frame-rate stays smooth, independent of edit activity.

COMMAND LINE

Type a verb, draw a drawing.

An AutoCAD-style command line with table-driven aliases and absolute / relative @dx,dy / polar @dist<angle input. Pick a verb below and watch it resolve into geometry.

command line
F8 ORTHO

Command: LINE

Specify first point:

Specify next point or [Undo]: @120,0

Specify next point: @0,80

// pick a verb above to draw

Command:
sketch.musa
□ END
CMD LINE
endpoint
relative @dx,dy
polar @dist<angle

UNDER THE HOOD

Three threads, no shared mutable state.

Work flows one way: the UI thread queues commands, the geometry thread owns the data and builds snapshots, and the render thread draws them — each hand-off is a lock-free message, never a shared lock.

data-flow.musa
  1. UI / Command thread

    Qt event loop

    Turns input into Command messages onto an MPSC queue.

  2. Geometry / Compute thread

    Owns the SoA GeometryStore + kernel

    Applies commands, runs the kernel, builds RenderSnapshots. Only thread that touches the store.

  3. Render thread

    Owns GPU device / swapchain

    Draws the latest snapshot lock-free at 144 Hz+.

No shared mutable state — every hand-off is a message. Triple buffer > seqlock: the renderer reads continuously at 144 Hz+ while geometry writes are bursty.

CLONE AND BUILD CLEAN

Get it building in three commands.

No third-party CAD dependency. Configure, build, and test with CMake presets — then grab a prebuilt release.

bash — MusaCAD
  1. cmake --preset dev
  2. cmake --build --preset dev
  3. ctest --preset dev
presets: dev release tsan

Prerequisites

C++23 compiler
GCC 13+ · Clang 17+ · MSVC 19.38+ (VS2022 17.8)
CMake
3.25+ (Presets v6)
Ninja
1.10+
Qt6
Core / Gui / Widgets · 6.4+
Vulkan SDK / loader
1.3+
Runs on Linux Windows

LGPL-3.0-or-later · clone-and-build clean

OPEN SOURCE

Built in the open, clone-and-build clean.

Musa CAD is free software under the LGPL-3.0-or-later license — no third-party CAD dependency, no hidden steps. Clone the repo, build it, and the whole engine is yours to read, run and improve.

Issues, pull requests and benchmarks welcome — thanks to everyone shaping the engine.

GNU LGPL-3.0-or-later · Linux + Windows · DXF read/write built in