This repository contains a playground project by Jonas, Robin, and Michael to learn the Vulkan graphics API. It uses the Rust language and the Ash Vulkan wrapper.
The goal is to build a somewhat usable game engine and a demo using it. While we are probably never going to implement a fully-fledged engine, we will make shortcuts to implement specific parts of it that we find interesting. It is more a learning project than anything else.
Currently implemented features are:
- A scene graph with entities and components
- Vulkan rendering
- BRDF shading and lighting
- Deferred rendering and post-processing effects
- Debug UI Layer with frame stats, scene graph and component inspectors
.obj
parser- Runs on both Linux and Windows
BRDF testing:
Debug UI:
Folder | Description | Readme |
---|---|---|
crates/engine | Main engine library | This one |
crates/ve_asset | Utility that converts files into our custom format | here |
crates/ve_format | Stores some shared structs | here |
crates/ve_shader_reflect | Retrieves metadata from compiled shaders to feed into the material pipeline | here |
Examples are in the crates/engine/examples folder. They can be run with cargo +nightly run --example <name>
.
Name | Description |
---|---|
minimal | Displays a triangle using vertex colors |
brdf | Renders a couple of spheres using physically-based rendering |
mesh | Loads and renders a custom mesh |
textured_material | Creates a texture at runtime and renders it onto a quad |
components | Shows off the engine's component system |
- Rust (2021 Edition)
- Vulkan SDK (at least v1.2.189.2)
Build with make build
or run an example with make run
.