motor is a custom C++ engine for real-time audio/visual applications. It is designed around explicit control, predictable ownership, modular systems, and fast iteration.
The project is primarily a learning and research engine: it explores rendering abstraction, runtime systems, memory/resource management, and tooling workflows without hiding the low-level details.
- Multi-backend rendering architecture
- OpenGL 4
- DirectX 11
- OpenGL ES 3
- Cross-backend shader and material flow through the engine's MSL layer
- Runtime shader compilation and reload-oriented workflows
- Support for running multiple rendering backends/windows for debugging and comparison
- Modular engine libraries built with CMake targets
- Application lifecycle hooks for update, render, audio, input, logic, physics, profiling, networking, and tooling
- Scene graph with components and visitors
- Custom task/concurrency utilities
- Explicit resource and memory management
- Central memory manager
- Allocation tracking with purpose tags
- Managed and borrowed pointer conventions
- Runtime memory visibility and leak-dump support
- Dear ImGui integration
- Built-in tooling hooks through
on_tool() - Engine profiling UI support
- Asset- and shader-iteration workflows intended for fast development loops
This repository contains the engine code itself. It intentionally does not contain the main sample and demo applications.
Related repositories:
-
motor_suites
Sample applications, manual/visual test scenarios, and integration checks for engine layers. -
motor_exdep
Work-in-progress external dependency and package integration setup. -
motor_demos
Demo-focused applications built with the engine.
Keeping samples and demos outside the engine repository helps keep the engine code focused and makes the engine easier to include in other projects.
Third-party code is pulled in through git submodules under externals/. The engine provides local CMake files that expose those dependencies as targets used by the rest of the build.
git clone --recursive https://github.com/aconstlink/motor.git
cd motor
cmake -S . -B build
cmake --build buildIf the repository was cloned without submodules:
git submodule update --init --recursiveWindows is the main development platform.
Regularly used targets include:
- Windows 10/11 with Visual Studio 2019 or newer
- Linux with GCC and OpenGL development packages
libX11 mesa-libGLES mesa-libGL mesa-libEGL alsa-lib
OpenGL ES support exists in the codebase, but is not currently the primary tested path.
Active development. The current focus is on building toward polished real-time demos that exercise scene loading, rendering, runtime resources, and iteration workflows.
MIT License