Yet another C++17 Vulkan engine.
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!
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.
- 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
You need:
- CMake (3.18)
- A C++17 compiler
- Vulkan SDK
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
- Tiled deferred shader
- Meshes
- Static
- Skeletal
MIT
- Log callbacks
- Finish allocators
- Rewrite SmallVector (with new allocators)
- Rename ArrayView to Span and MutableSpan
- HashMap
- Basic reflection
- More robust serialization
- Barriers
- Reuse resources over frames
- Resource aliasing to avoid copies
- Merge mapped buffers
- Better usage of render passes
- 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
- 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?