Skip to content
bitloop-devPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

CMake on multiple platforms

Overview

Bitloop is a modular cross-platform CMake project manager tailored toward scientific simulations/visualizations and rapid prototyping.

Web Demo - Example Gallery

For help getting started, view the Wiki:

Main Features

  • Projects are modular and can include each other as dependencies in a tree structure
    • Child projects can be opened and compiled as standalone projects
    • Cross-platform: Windows, Linux, Emscripten
    • Designed for heavy per‑frame computations (e.g. Mandelbrot zoom)
  • C++ NanoVG wrapper with integrated 128-bit float support (f128 class)
    • If you have prior experience with HTML Canvas drawing, this should feel second-nature to you
  • FFmpeg video recording without blocking the UI (Desktop only)
  • WebP snapshots / animations (all platforms).

Design Principles

  • Organization
    • Using CMake, you can create an empty bitloop project (e.g. "Science"), and include several subprojects ("Physics", "Biology") where you can create further subprojects
    • You can build any subtree of projects (e.g. just "Biology") in to a single final executable
    • All project data (images, audio, etc) are bundled into the final executable automatically
  • Library Management
    • All bitloop projects use vcpkg as a package manager (vcpkg is fetched automatically for the current workspace)
    • Shared binaries - all projects in a workspace will share the same vcpkg instance and binaries to prevent unnecessary rebuilds
      • To create a workspace, simply add a ".bitloop-workspace" file in a project directory.
        • For the root workspace folder, add: "root=TRUE"
        • For child workspaces, add: "root=FALSE"
      • vcpkg will be automatically cloned in to the highest level folder containing a ".bitloop-workspace" file (but not above the root workspace)

Layout

By default, projects contain a simple built-in viewport and sidebar for custom ImGui controls, along with a handy collection of tools/libraries.

Development progress

Building

Windows Linux
Modular nested projects ✔️ ✔️
Standalone projects (with child projects as dependencies) ✔️ ✔️
C++23 support ✔️ ✔️
Visual Studio ✔️ ✔️
Visual Studio Code partial partial

Architecture

Windows Linux Web (Emscripten)
Multithreading ✔️ ✔️ ✔️ (pthreads with COOP/COEP Headers)
128-bit float support (f128) ✔️ ✔️ ✔️

Graphics

Windows Linux Web (Emscripten)
High-DPI support ✔️ ✔️ ✔️
Mulitple Viewports (Split Screen) ✔️ ✔️ ✔️
2D Viewport (NanoVG wrapper) ✔️ ✔️ ✔️
3D Viewport N/A N/A N/A

Recording / Image Capture

Windows Linux Web (Emscripten)
Custom-resolution image renders ✔️ ✔️ ✔️
FFmpeg recording ✔️ ✔️ N/A
WEBP animations ✔️ ✔️ ✔️

Other planned features

Windows Linux Web (Emscripten)
Timeline (keyframed variables, tweens, etc) N/A N/A N/A

Example snapshots / WebP animations

Preview Preview
Preview Preview
Alt text

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages