Skip to content

Qt Rewrite - #69

Merged
njbrown merged 423 commits into
masterfrom
rewrite
Sep 21, 2026
Merged

njbrown merged 423 commits into
masterfrom
rewrite

Conversation

@njbrown

@njbrown njbrown commented Nov 6, 2022 •

Copy link
Copy Markdown
Owner

Summary

This rewrites TextureLab as a native Qt/C++ desktop app, replacing the Electron/Vue/TypeScript version. It's large: 423 commits, 509 files, +89k/−36k lines. It also rolls in the feature PRs merged into rewrite: #75, #76, #77, #78, #79, #82, #84 and #85.

Architecture

  • The app is now built with CMake and Qt, with docking panels from Qt Advanced Docking System (ADS, added as a submodule).
  • The Electron, web, Vue and TypeScript sources are removed.
  • The code is split into modules: texturelab (the app), nodegraph, viewer3d, colorpicker, catalog and theme.

Node graph & rendering

  • A new node graph: ports, connection dragging with snapping, deletion, frames, comments and a spacebar node search.
  • Nodes render on a dedicated worker thread and are only re-rendered when something upstream changes.
  • Nodes that need CPU processing, such as Flood Fill, are supported.
  • Node libraries v1 and v2 are ported, and a new v3 library adds a large set of new nodes (see Libv3 #85). A migration system upgrades old projects to v3.
  • Project loading and saving stay compatible with the existing file format.

Viewers

  • 2D view: tiling, centering, saving the image and copying it to the clipboard.
  • 3D view:
    • PBR rendering with image-based lighting, using albedo, normal, roughness, metalness, height and alpha maps.
    • HDR skies, punctual lights and adjustable environment rotation.
    • Built-in meshes (plane, cube, cylinder, sphere).

Editor

  • A props panel with widgets for float, int, bool, enum, string, color, gradient, image and curve values.
  • A custom color picker and gradient picker.
  • Undo/redo and copy/paste.
  • Recent files, drag-and-drop to open files, and embedded example projects.
  • Export settings for file pattern, channels and 8/16-bit precision.
  • A launcher with a project catalog and update checking.
  • A dark QSS theme, a new logo and app icons.

Stability & release

  • Sentry/Crashpad crash reporting, with a consent prompt.
  • Many threading and memory-safety fixes.
  • CI builds for Windows, macOS and Linux, a release workflow, packaging scripts and nightly builds.

@njbrown
njbrown merged commit c3c0420 into master Sep 21, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant