Skip to content

michidk/vulkan-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vulkan Engine

Continuous integration

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.

Goal

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.

Features

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

Screenshots

BRDF testing:

brdf testing

Debug UI:

debug ui

Custom meshes: custom meshes

Workspace

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

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

Building

Prerequisites

Build with make build or run an example with make run.

Resources

About

A game engine writte for Vulkan in Rust

Topics

Resources

Stars

Watchers

Forks

Languages