https://github.com/ka-iden/hyper
Mini Vulkan Engine for testing
https://github.com/ka-iden/hyper
cpp vulkan
Last synced: 11 months ago
JSON representation
Mini Vulkan Engine for testing
- Host: GitHub
- URL: https://github.com/ka-iden/hyper
- Owner: ka-iden
- License: mit
- Created: 2024-01-20T09:00:44.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-05-06T06:49:29.000Z (about 1 year ago)
- Last Synced: 2025-07-13T15:49:02.792Z (12 months ago)
- Topics: cpp, vulkan
- Language: C++
- Homepage:
- Size: 47.6 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# hyper
Making myself a little Vulkan Engine using C++.
I named it hyper because I want to make a fast-ish engine (probably not how it'll turn out haha).
## Progress
I want to completely understand how the whole vulkan graphics pipeline works, so I will not be using any tools such as [vk-bootstrap].
|
- - [ ] Vulkan Initialisation |
- - [ ] The Interesting Stuff |
- - [ ] Extras |
|----------------------------------------|----------------------------------------|-----------------------------------------|
|- - [x] Window Creation |
- - [x] ShaderEXT Creation |
- - [ ] Deferred Rendering |
|- - [x] Instance Creation |
- - [x] Eradication of Pipelines |
- - [ ] Asset System |
|- - [x] Extension Setup |
- - [x] Buffer Class |
- - [ ] Multiple Shader Setup |
|- - [x] Device Handling |
- - [x] Image Class |
- - [ ] Post-Processing |
|- - [x] Queues |
- - [ ] Mesh Class |
- - [ ] Material System |
|- - [x] Swapchain |
- - [ ] Compute Shaders |
- - [ ] Raytracing (maybe) |
|- - [x] Buffers |
- - [x] ImGUI Implementation |
- - [ ] Meshlet Rendering (maybe) |
|- - [x] Textures |
- - [ ] Instancing ||
|- - [ ] GLTF Loading |
- - [ ] Multithreading ||
| |- - [ ] Mipmaps ||
## Building
You can build this on Windows using the included Visual Studio 2022 solution.
I plan to one day use [CMake] or [Premake], but until then, VS2022 FTW
Builds may be found [here] sometimes, but I probably won't upload them too often until I am way later in development.## Tools
- [GLFW] for window creation
- [Vulkan-Hpp] as a C++ wrapper for the vulkan API
- [stb_image] from stb for image loading
- [VulkanMemoryAllocator] for memory management
- [ImGui] for a simple GUI## Learning Resources
- [Vulkan Tutorial] for in-depth Vulkan setup
- [Vulkan Guide] for a more high-level look into Vulkan
- [Vulkan Registry] for API usage/spec
- [VkResult spec] - Good to remember/check when finding errors
- [Vulkan Docs] for more API use/spec
- [VK_EXT_shader_object tutorial] - Good, but only a 11% implementation rate on gpus
- [VMA Docs] for API use/spec for VulkanMemoryAllocator
- [GIGD Vulkan Project] for a more in-depth look into Vulkan
- [Sascha Willems' Vulkan Examples] for examples of specific Vulkan features
- [Vulkan Minimal Example] for an example of unique handles
- [VK_KHR_dynamic_rendering tutorial] - Used this extension early on, good stuff
- [Buffer device addersses in Vulkan and VMA] - Another good extension
- [Managing bindless descriptors in Vulkan] - Not used yet## Licenses
This project is licensed under the [MIT License].
GLFW is licensed under the [zlib/libpng][vendor/GLFW] license, and the license file is in [here][vendor/GLFW].
stb_image is both in the public domain ([Unlicense]) and underneath the [MIT License]. Their custom license file is found [here][vendor/stb].
ImGui is licensed under the [MIT License][vendor/imgui].
Vulkan-Hpp is licensed under the [Apache License 2.0].
VulkanMemoryAllocator is licensed under the [MIT License].
tinyobjloader is licensed under the [MIT License][vendor/tinyobjloader], and the license file is in [here][vendor/tinyobjloader].[vk-bootstrap]: https://github.com/charles-lunarg/vk-bootstrap/
[CMake]: https://cmake.org/
[Premake]: https://premake.github.io/
[here]: https://github.com/fl2mex/hyper/releases/[GLFW]: https://github.com/glfw/glfw/
[Vulkan-Hpp]: https://github.com/KhronosGroup/Vulkan-Hpp/
[stb_image]: https://github.com/nothings/stb/blob/master/stb_image.h
[VulkanMemoryAllocator]: https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
[ImGui]: https://github.com/ocornut/imgui[Vulkan Tutorial]: https://vulkan-tutorial.com/
[Vulkan Guide]: https://vkguide.dev/
[Vulkan Registry]: https://registry.khronos.org/vulkan/specs/latest/registry.html
[Vulkan Docs]: https://docs.vulkan.org/spec/latest/
[VMA Docs]: https://gpuopen-librariesandsdks.github.io/VulkanMemoryAllocator/html
[GIGD Vulkan Project]: https://github.com/amengede/getIntoGameDev/tree/main/vulkan
[Sascha Willems' Vulkan Examples]: https://github.com/SaschaWillems/Vulkan
[Vulkan Minimal Example]: https://github.com/dokipen3d/vulkanHppMinimalExample[MIT License]: https://opensource.org/license/MIT
[Unlicense]: https://unlicense.org/#the-unlicense
[Apache License 2.0]: https://www.apache.org/licenses/LICENSE-2.0
[vendor/GLFW]: vendor/GLFW/LICENSE.md
[vendor/stb]: vendor/stb/LICENSE.txt
[vendor/imgui]: vendor/imgui/LICENSE.txt
[vendor/tinyobjloader]: vendor/tinyobjloader/LICENSE[VkResult spec]: https://registry.khronos.org/vulkan/specs/latest/man/html/VkResult.html
[VK_KHR_dynamic_rendering tutorial]: https://lesleylai.info/en/vk-khr-dynamic-rendering/
[VK_EXT_shader_object tutorial]: https://docs.vulkan.org/samples/latest/samples/extensions/shader_object/README.html
[Managing bindless descriptors in Vulkan]: https://dev.to/gasim/implementing-bindless-design-in-vulkan-34no
[Buffer device addersses in Vulkan and VMA]: https://dev.to/gasim/buffer-device-addresses-in-vulkan-and-vma-7ne
- - [ ] Mipmaps ||
- - [ ] Multithreading ||
- - [ ] GLTF Loading |
- - [ ] Instancing ||
- - [x] Textures |
- - [ ] Meshlet Rendering (maybe) |
- - [x] ImGUI Implementation |
- - [x] Buffers |
- - [ ] Raytracing (maybe) |
- - [ ] Compute Shaders |
- - [x] Swapchain |
- - [ ] Material System |
- - [ ] Mesh Class |
- - [x] Queues |
- - [ ] Post-Processing |
- - [x] Image Class |
- - [x] Device Handling |
- - [ ] Multiple Shader Setup |
- - [x] Buffer Class |
- - [x] Extension Setup |
- - [ ] Asset System |
- - [x] Eradication of Pipelines |
- - [x] Instance Creation |
- - [ ] Deferred Rendering |
- - [x] ShaderEXT Creation |
- - [x] Window Creation |
- - [ ] Extras |
- - [ ] The Interesting Stuff |