Skip to content

A wonderful project with near endless possibility for scope. Cannot think of any algorithms, IO sources, theories, or methods that dont have a place here. I'm learning a bunch and make some real good looking shit :)

Notifications You must be signed in to change notification settings

SrMeissel/Vulkan-game-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

This engine originally followed the tutorial series: Vulkan (c++) Game Engine Tutorials This engine has since surpassed it's scope.

Intending to create a differed renderer with a universal ray marcher. The pipeline will be defined as follows: Objects -> Volumetrics -> Lighting -> Post-Proccessing -> UI I'm thinking UI should actually be first, no?

Features w/ Sources

Textures

Sources:

Textures were originally binded as a global array, but are now binded per object.

Textures Showcase

I am looking into a more involved material system with multiple masks for things like:

  • Albedo
  • AO
  • Bump
  • Cavity
  • Displacement
  • gloss
  • Normal
  • Roughness
  • Specular
  • Transmission

Example goal for material system

MultiSampling anti-aliasing

Sources:

Screenshots

Sources:

BGR Screenshot

Not a very useful or optimized system, but I learned something. Also, If the image seems very blue, It's because it BGR instead of RGB and I cant be bothered to fix it.

Physics engine

Sources:

Fun Finds

Tasks

TO DO:

  • shadows
  • skybox
    Going for volumetric atmosphere, turns out that is very hard.
  • ECS
  • UI Going to use imgui for tooling UI to make the traisition for hardcoded objects to loaded files easier.
  • Sound
  • Physics
    I'm taking a break from physics to do clouds
  • Asset System
  • CVAR System

Atmosphere and clouds

Sources:

wtf is 'dithering' wtf is a kilometer

Vulkan descriptors and memory bullshit

Turns out, I could/should set up an arbitrary-ish amount of discriptor sets based on how frequently they change. eg. per camera, per object, per frame.

These types are apparently very useful, but lacks proper hardware support so it would only make things more difficult in the end.

  • Descriptor indexing
  • Push descriptors
  • bindless descriptors
  • dynamic UBO's

Vulkan resources

This is becoming more and more useful: https://vulkan.gpuinfo.org/displayreport.php?id=25342#formats_optimal built in variables for frag shaders: https://www.khronos.org/opengl/wiki/Fragment_Shader

Dependancies

About

A wonderful project with near endless possibility for scope. Cannot think of any algorithms, IO sources, theories, or methods that dont have a place here. I'm learning a bunch and make some real good looking shit :)

Resources

Stars

Watchers

Forks