This repository contains the code and assets for my hobby graphics engine where I experiment with implementing modern rendering techniques and systems. It's written in C++, uses Vulkan for the graphics API and GLSL for shaders. The code is developed based on my own collecetd understanding through personal experience and not simply sourced from a single course
In this project I have implemented several systems meant for simplifying interaction with the Graphics Pipeline and exposed them an interface I call "Draw Nodes".
There are helpers for handling keyboard/mouse inputs, resource state tracking, pipeline management & shader binding tables as well as a rudimentary model rendering system. The base class is overridable and has two functions: Init and Draw. Init is called once on startup while Draw runs once per frame. The entire viewport is additionally rendered through ImGui and you can inspect all textures in real time.
You can have a look under source/VulkanEngine/DrawNodes/ to see what rendering techniques have currently been implemented.
- Install VulkanSDK from Lunarg (Version 1.4)
- Install Python
- CreateVisualStudioSolution.bat. It should download all the other required dependencies and create a .sln file
- Open in Visual Studio 2022 (have not tested other versions but probably still works)
Note: When installing the Vulkan SDK you can optionally choose to install the GLM math library but regardless the build script will download and use its own version
- Vulkan SDK (Your graphics driver needs to support VK_KHR_DYNAMIC_RENDERING)
- Python3
- Premake5
- GLFW
- GLM
- ImGUI
- TinyOBJLoader
- stbi_image
