Skip to content

ErfanMo77/Syndra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7267e1a · Jul 16, 2023
Jan 14, 2021
Nov 7, 2021
Jul 12, 2022
Jul 12, 2022
Jul 16, 2023
Jun 2, 2022
Jul 6, 2022
Apr 14, 2021
Jul 16, 2023
Nov 17, 2021
Jul 16, 2023
Jul 16, 2023

Repository files navigation

Syndra Engine

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 the Windows platform.

Motivation

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.

Download

Syndra-Engine v1.1.1-alpha

Showcase

Features

  • 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 Approximate Anti-Aliasing (FXAA)
    • Normal mapping

Future

  • Trello Page contains all the upcoming features.

  • 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

Compiling

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. If the repository was cloned non-recursively previously, use git submodule update --init to clone the necessary submodules.

Then, run scripts/setup.py to download and install all the necessary requirements (like VulkanSDK). It will also generate a Visual Studio solution. After installing all the prerequisites, you can compile and run the engine in Visual Studio.

Third Party Libraries

  • 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.

Dependencies

Authors

ErfanMo77 - Erfan Momeni

Acknowledgments

LearnOpenGL Great OpenGL tutorials!

The Cherno game engine series

Logo design : AmirMohammad Abedini

License

Licensed under the Apache License 2.0, see LICENSE for details.