Skip to content

A portable modern OpenGL Game-Engine with focus on PBR

License

Notifications You must be signed in to change notification settings

Haeri/PhotonBox

Repository files navigation

Version Actions Status License

A portable modern OpenGL Game-Engine with focus on PBR

Project Goal

The PhotonBox Engine aims to be an open source resource for people interested in computer graphics. The goal is to create a clean and readable codebase, whilst still maintaining good performance and a high graphical fidelity. An Editor is currently not planned as I am still exploring the possibilities for state based GUI solutions.

Rendering

  • Deferred/Forward Rendering
  • Point lights, Directional lights, Spot lights
  • SkyBox/Enviroment Mapping
  • Parallax cubeMap correction
  • Cook Torrance BRDF shader
    • Albedo Map
    • Normal Map
    • Roughness Map
    • Metallic Map
    • Ambient Occclusion Map
    • Emission Map
  • Dynamic Irradiance & Specular-Convolution generation
  • Post Processing List
    • Eye adaptation
    • Bloom
    • Tone mapping
    • SSAO
    • SSReflections
    • Temporal anti aliasing
  • Transparent/Cutout rendering
  • Shadow mapping
  • Contact shadows
  • Volumetric Fog
  • Text rendering

Systems

  • Component system
  • Scene system
  • Generic Materials
  • Lightprobe volumes
  • Resource caching
  • Async resource loading
  • Shader hot reload
  • PhysX partial integration
  • ImGui integration

Project Setup

Requirements

Windows

Generate visual studio project files:

git clone https://github.com/Haeri/PhotonBox.git --recursive
cd PhotonBox
./scripts/generate_project_win.bat

Make sure to open the Visual Studio project as administrator, as it needs to perform copy operatiosn to make resources files available to the binaries.

Linux

Generate make files:

git clone https://github.com/Haeri/PhotonBox.git --recursive
cd PhotonBox
sudo apt update
sudo apt install -y mesa-common-dev mesa-utils libgl1-mesa-dev cmake curl unzip tar 
./scripts/generate_project_linux.sh

macOS

Generate xcode project files:

git clone https://github.com/Haeri/PhotonBox.git --recursive
cd PhotonBox
./scripts/generate_project_mac.sh

Media

Interiour screenshot_1 (Assets not distributed)

Automotive screenshot 2

Roadmap

RENDERING

  • Instanced rendering
  • Deferred decals
  • GTAO
  • Anisotropic filtering

GENERAL

  • Precompile shader
  • Abstraction layer over OpenGL
  • Precompiled headers
  • Switch to dynamic library compilation
  • Decoupling asset conversion from engine
  • Doxygen integration for documentation

OPTIMIZATION

  • Uniform buffer
  • SIMD math