Modern renderer written in rust, aiming to be a modern, cross-platform, GPU-driven renderer. API and backend code are both still very temporary and going trough a major refactoring pass.
To build and run the project, you need to install Rust and CMake.
After Rust is installed, simply open a command promp at the project root directiory and run the command:
cargo run --bin <BIN> --release
The currently available binaries to run are:
hello-triangle
hello-cube
texture
ui
mesh
debug
depth-image
bindless
shader-hot-reload
We currently rely on MoltenVK to run on macOS. To run the project, you must install the LunarG Vulkan SDK.
Once installed, set the environment variable VULKAN_SDK_PATH
to the path you installed the SDK in, by default: $HOME/VulkanSDK/<version>
. Then, run the command source tools/setup_molten_vk.sh
, and if everything succeeds, you should be able to use the regular steps to run the project.
Hello triangle example with vertex colors and a transform matrix sent per-frame to the vertex buffer.
Hello cube example with vertex colors and a model/view/projection matrix uniform buffer object, where the model matrix is upadated per-frame.
Basic textured quad.
Example app using egui to render ui widgets we can use to transform a cube.
3D mesh with a single albedo texture.
Debug names and labels.
Render Depth image to the screen in a second pass.
Draw a complex scene using bindless textures and a uniform buffer for vertex data. Will be very slow to load the first time as we are processing mesh and texture data and writting an efficient zero-copy deserializable runtime format that will be used in subsequent loads.
Shader hot-reloading.
A very simple hard shadow example.