An integrated graphics engine for 3D applications, powered by a custom Entity Component System framework.
Projects are created using an editor:
and then exported as standalone executables:
- Quite fast. The demo shown in the screenshots above (although very simple) runs at 7000 FPS with an average time-per-frame of 141µs on my computer.
- Display textured 3D models with unlit shading.
- Supports a vast amount of texture formats (thanks to the image crate).
- Supports a vast amount of 3D scene formats (thanks to the Assimp importing library).
- Skybox (although it's currently hardcoded and cannot be changed).
- With the editor you can: create new entities, rearrange their hierarchy (global transform is preserved when doing so), add new components, edit component values such as the transform or the name, remove components, import 3D scenes, create a new scene, open an existing scene, export the project.
- The editor's layout is fully customizable (thanks to Dear ImGui).
- Scene components allow a scene to have entities that display other scenes, these can be imported from a file (such as .fbx, .obj, .gltf, etc..) or user-made. Inspiration for this comes directly from the Godot game engine.
- Uses an in-house ECS library built from scratch. The crate lives under
raven_ecs
. It uses the same sparse-array technique as entt.
Raven depends on C/C++ libraries Assimp and Dear ImGui. Once you have them installed, you can build Raven
with cargo build --release -p raven_runtime && cargo build --release -p raven_editor
.
Please note that the building process for raven_editor
assumes that the built executable for raven_runtime
is available at target/release/raven_runtime
relative to the working directory.