/Yave

Yet Another Vulkan Engine

Primary LanguageC++MIT LicenseMIT

Yave

Yet another C++17 Vulkan engine.

Disclaimer

This is a pet/learning project, it's not meant to be a serious engine and should not be used for anything beside playing with Vulkan.

Currently only supports Windows

  • With GCC 9+ through MSYS2
  • With MSVC 16.9+

Serialization format is compiler dependent!

Status

Currently a mess, should smooth out as I am learning Vulkan.

The project is in its very early stages. For now I am focussing on creating a decent Vulkan wrapper/interface and a small scene editor before moving to the real engine work.

Current status Current status Current status Current status

Project structure

  • y: Core library with a bunch of utility functions and classes
  • yave: The engine itself It links only to y and spirv-cross
  • editor: A scene editor build on top of yave
  • shaders: All the shaders for both the engine and the editor
  • external: Third party libraries

Building

You need:

Implemented features:

  • Buffers
  • Images
    • Arrays
    • Cubemaps
      • IBL probes
  • Descriptor sets
  • Basic pipelines
  • Compute shaders
  • Swapchain
  • Framebuffers
  • Resources lifetime management
  • Framegraph
  • Rendering pipeline
    • Tiled deferred shader
      • Physically based lighting
      • IBL
    • Basic scenes
  • Meshes

Licence:

MIT

To Do

Y

  • Log callbacks
  • Finish allocators
  • Rewrite SmallVector (with new allocators)
  • Rename ArrayView to Span and MutableSpan
  • HashMap
  • Basic reflection
  • More robust serialization

Framegraph

  • Barriers
  • Reuse resources over frames
  • Resource aliasing to avoid copies
  • Merge mapped buffers
  • Better usage of render passes

Engine

  • Asset saving and loading
  • Integrate ECS
  • Switch to VK_EXT_debug_utils
  • Sky
  • Make assets easily serializable
  • Culling
  • Batching system
  • Streaming
  • Proper material system
  • Shadows
  • GI
  • Post processes
  • Spot lights
  • Actual tone mapping

Editor

  • Integrate ECS
  • Open several views
  • Rotation
  • Create materials
  • Editor only entities
  • Save open widgets
  • Scale
  • Edit materials
  • Prefabs
  • Better save system
  • Undo/redo
  • Integrated profiler
  • Edit shaders?
  • Edit or create meshes?