Skip to content

C++ game/rendering engine using Vulkan, Slang, and SDL3.

License

Notifications You must be signed in to change notification settings

tracefree/prosper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Prosper

C++ rendering/game engine using Vulkan, the Slang shader language, and SDL3. Work in progress.

prosper

This project originally started as a minimal "Hello World" example to render a single triangle which I moved to a new repository for anyone interested in a less complex setup using Slang and Vulkan. I will continue to develop the engine in this repository. It is not supposed to be a general purpose engine - the primary goals of Prosper are to serve as a testing ground to me for experimenting with graphics programming techniques, and to be used for a video game I will be making. Therefore I will only implement features I am interested in and that are directly useful to the visual style I'm going for.

Initially based on the tutorial by vkguide.dev, now with heavy modifications and extensions. Also very helpful resources were the Vulkan Lecture Series by TU Wien and vulkan-tutorial.com.

Current and planned features (non-exhaustive list)

Rendering:

  • Buffer device addresses
  • Dynamic rendering instead of render passes
  • Shader objects instead of pipelines
  • Implement VK_LAYER_KHRONOS_shader_object to remove reliance on VK_EXT_shader_object
  • Normal mapping
  • GPU driven rendering
  • Deffered rendering
  • Skeletal animation
  • HDR with tonemapping
  • Bloom
  • MSAA
  • SSAO
  • Either PBR or a shading model useful for stylized rendering
  • Directional and point lights
  • Shadows
  • Global illumination
  • Skybox
  • etc.

General game engine features:

  • Basic character controller with third person camera
  • Make-shift scene format based on .yaml files
  • Integrating the Jolt physics engine
  • Observer pattern with signals
  • Node / component system
  • Modding support
  • RPG gameplay systems
  • etc.

Installation instructions

Linux (and probably Mac and BSD)

You'll need to have installed the Vulkan SDK, SDL3, and glm libraries on your system. To build with CMake, run these commands in the terminal inside the project's directoy:

cmake . -B build -G Ninja
cmake --build build

An example application using the engine library is provided in the sample directory. Build it by executing the same commands as above again within that directory, the executable prosper_sample will then be built in it. The sample project is currently set to automatically download the Sponza scene from the glTF-Sample-Assets repository, please refer to that page for license information for the assets. The camera can be controlled by looking around with the mouse and moving with the WASD keys, as well as E and Q for going up and down. The sample scene currently does not showcase the full capabilities of the engine - I will update it with an animated character and skybox once I decide on a better way to distribute assets.

Regarding the shaders, they are compiled to bytecode and included with shaders/bin/ and their source code is in shaders/src/. If you want to modify it you'll have to compile it with slangc. The shaders directory contains a bash script with the compile commands I used, you will need to adjust path to the slangc binary to point to where it is installed on your system.

Windows

idk, you're on your own ¯_(ツ)_/¯

Dependencies

Currently I use the following third party libraries, downloaded and built automatically via CMake:

License

The Prosper engine source code is available under the MIT license. Some of the Vulkan specific code is based on snippets from vkguide.dev which is also licensed under MIT. For the dependencies, please refer to the respective repositories for license information.

Prosper's logo, a rainbow colored hand made of pointy shapes doing the Vulkan greeting sign.

About

C++ game/rendering engine using Vulkan, Slang, and SDL3.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published