Skip to content

A simple 2D/3D game engine using C++ and Vulkan API

Notifications You must be signed in to change notification settings

Shturm0weak/Pengine-2.0

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pengine

A simple 3D game engine written in C++ and Vulkan.

Platforms:

  • Windows
  • Linux

How to build

Windows

  • Download GLFW 64-bit Windows binaries from https://www.glfw.org/download.html.
  • Download Vulkan SDK from https://vulkan.lunarg.com and install it.
  • Set up next environment variables: GLFW_INCLUDE_PATH, GLFW_LIB_PATH, VULKAN_SPIRV_REFLECT_PATH, VULKAN_INCLUDE_PATH, VULKAN_LIB_PATH.
    For example how I set it:
    GLFW_INCLUDE_PATH = C:/GLFW/Includes
    GLFW_LIB_PATH = C:/GLFW/Lib
    VULKAN_INCLUDE_PATH = C:/VulkanSDK/1.3.268.0/Include
    VULKAN_LIB_PATH = C:/VulkanSDK/1.3.268.0/Lib
    VULKAN_SPIRV_REFLECT_PATH = C:/VulkanSDK/1.3.268.0/Source
  • Clone and run CMake.
git clone --recursive -b main https://github.com/Shturm0weak/Pengine-2.0.git
cd Pengine-2.0 && mkdir Build && cd Build && cmake ..
  • Open Pengine (for VS 20XX Pengine-2.0/Build/Pengine.sln) and set up SandBox as a startup project. If you are using another IDE, the working directory should be set manually to Pengine-2.0/SandBox/.
  • Try to build and run.

Linux

  • If there is no GLFW, so download GLFW for your linux distribution.
  • Download Vulkan SDK from https://vulkan.lunarg.com.
  • Install Vulkan SDK as shown in the documentation https://vulkan.lunarg.com/doc/view/latest/linux/getting_started.html.
  • Set up next environment variables: VULKAN_SPIRV_REFLECT_PATH, VULKAN_INCLUDE_PATH, VULKAN_LIB_PATH.
    For example how I set it:
    VULKAN_INCLUDE_PATH = /home/alexander/Vulkan/1.4.304.0/x86_64/include
    VULKAN_LIB_PATH = /home/alexander/Vulkan/1.4.304.0/x86_64/lib
    VULKAN_SPIRV_REFLECT_PATH = /home/alexander/Vulkan/1.4.304.0/x86_64/include
    Setting these variables can be done as a .sh script and run that script on startup by placing another .sh script in /etc/profile.d containing the line source <path to your .sh script>
  • Clone and run CMake.
git clone --recursive -b main https://github.com/Shturm0weak/Pengine-2.0.git
cd Pengine-2.0 && mkdir Build && cd Build && cmake ..
  • Set up the working directory to Pengine-2.0/SandBox/.
  • Open Pengine and set up SandBox as a startup project.
  • Try to build and run.

Graphics Features

  • Deferred Instanced Rendering
  • Basic PBR
  • Directional Lights
  • Point Lights
  • Normal Maps
  • Cascade Shadow Maps
  • SSAO
  • SSR
  • Bloom
  • FXAA
  • Atmospheric Scattering
  • Forward Order Dependent Transparency Rendering
  • Multiple Viewport Rendering
  • Assync Resource Loader
  • Scriptable Materials

Used Libraries

  • GLFW
  • GLM
  • Vulkan
  • Entt
  • Assimp
  • ImGui
  • Yaml-cpp

Screenshots

image image image image image image image image

2025-01-10.03-18-54.mp4

About

A simple 2D/3D game engine using C++ and Vulkan API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published