Vulkan-Based Game Engine written in C++, project is in active development, may not compile :)
I present my work real time on youtube
โ This is an education project and I am improving/fixing my stuff as fast as I have capacity and time for this. I keep it open source since I like the idea of sharing the code. But since it is first of all my education project I would like to fix and improve stuff by my own :') I really appreciate your input but I can't promise that I will merge your PR since it is breaking my whole idea why this project is alive
- Press
Escto visualize Editor window. - In Editor Window select provided scenes from "Scenes" dropdown or create a default scene by pressing "New Scene" button.
- Use
Escto toggle betweeneditorandplaymodes - When in
playmode use WASD to mode camera, for rotation use LMB - You can select a 3D object and move it using arrows
- Use
Debugtab for debug information - Use
Audiotab to play available audios - Use
Update Shaderto update shader code in real time - Use
Renderingtab to visualize render targets, change light position, shadows, cubemaps - Use
Sceneto navigate trough scene objects, change their textues; useAdd Objectto create new object more info in features
- vulkan features
- mouse picking and gizmo
- debug render target visualization
- outlines
- real time shader compilation
- cubemaps
- shadows
- adding or removing objects
- saving scene state
- Implemented multithreaded command buffer submission
- Bindless textures and buffers
- Dynamic rendering
- Cool wrappers
Custom implementation for object mouse picking using SSBO.
Translation of objects using gizmo x, y, z axes
Visualize your render targets in order to help debugging and analyzing in real time
Outlines are rendered for selected object using object's mask
You can recompile shaders in real time
You can change cubemaps in real time
- you can enable/disable cubemaps in
Renderingtab in Editor window - you can select cubemap from available cubemaps in
Renderingtab in Editor window
Simple shadow mapping Implemented
- you can enable/disable shadows in
Renderingtab in Editor window
You can add different types of objects (3D models, sprites, lights) using Editor Widnow
- navigate to
Scenetab - press
Add Objectand select type - in new window add object ID, select texture, model (if available, depends on the type), position
- press
Save - delete any object by selecting it and pressing
Deletekey on the keyboard
You can save current scene state by pressing Save Scene button in Editor Window
- objects presented on the scene will be saved (their position, texture)
- cubemap state will be saved
- shadows state will be saved
You can also create a new default scene by pressing
New Scenebutton in Editor Window
To build this project, you need to have the following dependencies installed:
- Vulkan SDK;
- X11/XCB libraries (linux only);
If you're on linux, you can install them using the scripts under the tools/linux directory:
./tools/linux/install-vulkan-sdk.sh./tools/linux/install-x11-xcb.shIf you're on windows, you can install the Vulkan SDK from the link above.
This project uses CMake to generate the build files. To configure the project, you can use the following commands:
cmake -B build -S .During the configuration process, the shaders will be compiled using the glslc compiler.
If you don't want to compile them, you could pass the -DAAI_COMPILE_SHADERS=OFF flag to the
cmake command above.
After configuring the project, you can build it using the following command:
cmake --build buildAs you could notice, this project has the Visual Studio Code workspace file. If you want to build and debug the project using Visual Studio Code, you can open the workspace file and install the recommended extensions: - on Windows open: engine-win.code-workspace - on Linux open: engine-lin.code-workspace
- make sure you have GCC compiler installed https://code.visualstudio.com/docs/languages/cpp#_example-install-mingwx64-on-windows
- make sure you have CMake Tools extension installed
With the CMakeTools extension installed, you could select the compiler, and then build or run the project using the F7 and F5 keys, respectively.
Don't forget that the CTRL+SHIFT+P key combination helps to configure and build as well.
- uncomment `#define TRACY` from engine/code/include/anthraxAI/utils/tracy.h and recompile the project
- install [Tracy Profiler](https://github.com/wolfpld/tracy) locally, run the profiler
- connect anthraxAI engine in the profiler.
- Audio functionality will be disabled due to code errors
- usually doesn't work under Windows
- Pascal and older nvidia cards are unsupported due to unavailable vulkan features on that hardware.
- Modified CatchyOS packages break compilation of required
assimplibrary - Audio initialization sometimes fails with
failed to allocate bufferserror