Dotrix
Our in-house open-source Rust 3D engine — modular, performant, and built for real-time graphics.
Dotrix is Löwenware's in-house 3D engine, written in Rust. The name derives from dot and matrix — keystones of rendering. We built it to power our own game projects and open-sourced it because the solutions we develop can be useful to others.
Why we built it
Commercial game engines are powerful but come with licensing constraints and abstraction layers that do not always fit our needs. Dotrix gives us direct control over the rendering pipeline, ECS architecture, and platform support.
For developers
Dotrix is modular and designed for Rust developers who want a modern 3D engine without leaving the Rust ecosystem. Visit dotrix.rs for documentation, examples, and the source repository.
Highlights
ECS
Entity Component System programming pattern makes access to your in-game objects fast and simple. Components can contain data describing an entity, as well as data necessary for its rendering or control.
Physical Based Rendering
GPU Driven Rendering
To avoid annecessary round trips between CPU and GPU, Dotrix arranges indirect draw calls, so GPU has enough data to render not just one entity but complete world or significant parts or it with only one draw call.
Particles and Compute Shaders
Multitasking
All logic in Dotrix is concentrated in tasks that can be parallelized by the engine in background. There is no need for manual arrangments, scheduling or synchronization.
Skybox
Crossplatform
Being written in Rust, Dotrix is highly portable and can be effortlessly used on Linux, MacBook or Windows.
Terrain
FAQ
Why Rust?
The idea to give Rust a try for game development appeared as soon as we started to use that programming language for embedded solutions. Its modularity, modern syntax built-in safety makes it the best in general for such a big projects like games. On other hand, the way how it deals with data types and generics, makes it very attractive for all kinds of ECS (Entity Component System) programming patterns, that we wanted to use.