Skip to content

Cross Platform renderer written in Rust with a Vulkan and Metal backend

Notifications You must be signed in to change notification settings

ArthurKValladares/Cinder-Renderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cinder-Renderer

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.

Building And Running

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

macOS

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.

Examples

Hello triangle example with vertex colors and a transform matrix sent per-frame to the vertex buffer.

hello-triangle

Hello cube example with vertex colors and a model/view/projection matrix uniform buffer object, where the model matrix is upadated per-frame.

hello-cube

Basic textured quad.

texture

Example app using egui to render ui widgets we can use to transform a cube.

ui

3D mesh with a single albedo texture.

mesh

Debug names and labels.

debug

debug_events

Render Depth image to the screen in a second pass.

depth-image

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.

sponza

Shader hot-reloading.

A very simple hard shadow example.

hello-cube 5_22_2023 12_22_12 AM

hot-reload.mp4

About

Cross Platform renderer written in Rust with a Vulkan and Metal backend

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published