This project is a playground for me to learn Graphics Programming, and in particular the Vulkan Graphics API.
We will be using Rust as the programming language and the following libraries:
- rust-windowing/winit: Cross-platform window creation and management in Rust.
- ash-rs/ash: Very lightweight Rust wrapper around Vulkan.
- imgui-rs/imgui-rs: Rust bindings for Dear ImGui.
- rustgd/cgmath: A linear algebra and mathematics library for computer graphics.
- Install rust: https://www.rust-lang.org/tools/install.
- Set the default Rust toolchain to msvc:
rustup default nightly-x86_64-pc-windows-msvc
.- We are using nightly so that we can benefit from latest features.
- Use rustfmt nightly:
cargo +nightly fmt
. - Install LunarG Vulkan SDK: https://www.lunarg.com/vulkan-sdk/
We can use RenderDoc, an open-source Graphics debugger, to obtain quick and easy single-frame capture and detailed introspection of ourt application.
- Open RenderDoc and select the Launch Application tab.
- Set Executable Path to
toy_engine/target/debug/sandbox.exe
. - Click Launch. The Sandbox app should start, and a new sandbox [PID XXXXX] tab should appear.
- Update Tools attributes as needed, and then click Capture Frame(s) Immediately to capture frames.
- Enjoy all the debugging features that RenderDoc has to offer!
Benchmarks powered by Criterion are available under benches.
Install Criterion by running the following command:
cargo install cargo-criterion
To run all benchmarks, navigate to the root of the repo and run the following command:
cargo criterion
Or run a specific bench:
cargo criterion bench_quad_batcher_add_quad_100