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
- CMake 3.16^
- OpenGL 4.1
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 (Assets not distributed)
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