/RendererEngine

3D Renderer Engine builds with Vulkan and C++ 20

Primary LanguageC++MIT LicenseMIT

ZEngine Window Build ZEngine Linux Build ZEngine macOS Build

ZEngine

ZEngine is an open-source 3D rendering engine written in C++ and using Vulkan as graphic API. It can be used for activities such as:

  • Gaming
  • Scientific computation and visualization

Supported Platforms:

  • Windows
  • macOS (Under active revision as of today)
  • Linux (Debian or Ubuntu are recommended systems) (Under active revision as of today)

Setup

Before building, make sure your setup is correct :

Setup Window machine

  • Install Visual Studio 2019 or 2022 Community or Professional, make sure to add "Desktop development with C++".
  • Install PowerShell Core
  • Install Vulkan SDK

Building

As this project uses different dependencies, make sure you've cloned the project with the --recursive option. You can also do git submodule update --init --recursive.

  1. Install CMake 3.20 or later.
  2. Start Powershell Core and make sure that you can run CMake, You can type cmake --version to simply output the current CMake version installed.
  3. Change directories to the location where you've cloned the repository.
  4. Building on different systems
    • Building on Windows :
      • Debug version : .\Scripts\BuildEngine.ps1 -Configurations Debug -RunBuilds $True -VsVersion 2019 (or 2022)
      • Release version : .\Scripts\BuildEngine.ps1 -Configurations Release -RunBuilds $True -VsVersion 2019 (or 2022)
  • Notes :
    • RunBuilds can be omitted as its default value is: $True.
    • You can build Debug and Release versions at once by omitting the Configuration parameter
    • On Windows, you can specify the Visual Studio version with VsVersion, it can be omitted as its default value is: 2019

Dependencies

The project uses the following dependencies as submodules :

  • GLFW for window creation and user input management for Windows, Linux, and MacOS,
  • GLM for functions and mathematical calculations,
  • STB for loading and manipulating image files for textures.
  • ImGUI for GUI components and interaction.
  • SPDLOG for logging
  • EnTT for entity component system
  • Assimp for managing and loading asset 2D -3D models
  • yaml-cpp for parsing and emitting YAML files