Syndra is an early-stage 3D game engine with a focus on real-time rendering. Syndra uses OpenGL graphics API and is being developed for windows platform.
Syndra is my bachelor's thesis project, where I wanted to study how to build 3D game engines. The purpose of this project is not to make 3D games; rather, my primary motivation for making Syndra is to test and learn new algorithms and techniques used mainly in graphics and real-time rendering.
-
Engine
- Editor (with docking support)
- Entity Component System (ECS)
- Event system
- Console logging
- Model and texture loading (40+ model file formats support using Assimp)
- Scene saving and loading using YAML serialization and deserialization
- Debug visualizer (GBuffer, HDRI map, ...)
- Immediate mode GUI
- Component editor (material, mesh, light, tag and camera)
- Viewport gizmos
- HDRI skymap loading
-
Rendering
- Deferred Rendering
- PBR Rendering (Cook–Torrance BRDF)
- Materials (with texture loading)
- Dynamic shadows
- Different light types (directional, point lights and spot lights)
- Soft shadows using PCSS algorithm
- Image Based Lighting (IBL)
- Fast Aproximate Anti Aliasing (FXAA)
- Normal mapping
-
Engine
- Asset manager and content Browser
- Physics engine
- CPU and GPU profiling
- Scripting system
-
Rendering
- More debug visualizers (grid, wireframe, ...)
- SSAO (Screen Space Ambient Occlusion)
- SSR (Screen Space Reflection)
- Procedural atmospheric sky
- Point light shadows
- Bloom
- Compute shaders for IBL calculations
Syndra only supports windows for now. Visual Studio 2019 is recommended.
Start by cloning the repository with git clone --recursive https://github.com/ErfanMo77/Syndra-Engine
.
If the repository was cloned non-recursively previously, use git submodule update --init
to clone the necessary submodules.
Syndra requires vulkan sdk to compile shaders, so first, you have to run scripts/setup.py to install vulkan sdk on your device. Then, you can execute GenerateProjects.bat to generate visual studio solution file and compile the engine.
- GLFW : Handling windows and mouse and keyboard events.
- Glad : OpenGL functions loader.
- spdlog : Console debugger logging.
- stb_image : Reading and loading textures.
- ImGui : Immediate mode GUI used in editor UI.
- ImGuizmo : Editor gizmos.
- Entt : Used in Entity Component System (ECS).
- GLM : Matrix and vector operations.
- Assimp : Loading 3D models with support for more than 40 file formats.
- yaml-cpp : Scene serialization and deserialization.
- Vulkan SDK : Shader compilation and reflection.
- Premake : Projects configuration and visual studio solution generator.
ErfanMo77 - Erfan Momeni
The Cherno game engine series
Logo design : AmirMohammad Abedini
Licensed under the Apache License 2.0, see LICENSE for details.