OpenGL rendering engine mainly to toy with real-time graphics programming.
It's architecture follows game engine patterns but it's not meant to be a game engine.
The project will only compile and run on the following environment:
- GL version: OpenGL 4.6 Core Profile
- Language: C++17
- OS: Windows 11
- IDE: Visual Studio 2022
- Clone this repo.
- Run
Setup.ps1
to download media resources. (you need execution policy for PowerShell script) - Build all projects in
PathosEngine.sln
. - Execute one of test projects.
Collapse
RenderingChallenge1 world to showcase procedural geometries and textures, volumetric clouds, and bloom post process.
RenderingChallenge2 world to showcase procedural geometries and sky.
LightRoom world to showcase omnidirectional shadows and emissive lights.WIP RacingGame world to showcase large-scale rendering.
A toy rendering project always need yet another Sponza scene :)
- Rendering pipeline
- Depth prepass
- Local illumination
- Area lights (sphere light, rect light)
- PBR materials
- Global illumination
- Cascaded shadow map
- Screen-space ambient occlusion
- Screen-space reflection
- Real-time illumination from sky light sources (skybox, panorama, or atmosphere)
- Real-time indirect illumination from irradiance/radiance probes (WIP)
- Volumetric clouds
- Large-scale landscape (WIP)
- Post processing
- God ray (light shaft)
- Auto exposure
- Bloom
- Tone mapping
- Anti-aliasing (FXAA, TAA)
- Super resolution (AMD FSR1)
- Depth of field
- Engine subsystems
- Render thread
- Asynchronous asset loaders (Wavefront OBJ, glTF)
- Scene capture (rendering from separate views other than the main view)
- Runtime shader recompilation
- Actor system (component-based development)
- Material shader assembly system (generate material shaders from templates so that they can run in frame rendering pipeline)
- RenderDoc integration
- Console variables and console window