Currently using OpenGL only (more APIs under work). This project is under refactoring and updates will be introduced occasionally.
The engine uses deferred shading, Screen Space Ambient Occlusion, HDR, Bloom and motion blur. The current scene renders the Crytek Sponza Atrium model from McGuire, Computer Graphics Archive. The scene has 100 lights with boxes, a directional sunlight and shadows.
The scene's settings can be tweaked from a menu which is accessed by pressing the ESC. You can also change the between different debugging draw modes by pressing 1-6.
A decent graphics card is recommended for this demo.
CMake is used for building the project to ensure cross-platform building to be easier. The repo contains the needed dependencies for Windows building so there's no need to setup them by hand. For other environments, just follow the instructions found below.l
The project uses the following dependencies:
The program follows a simple deferred shading pipeline:
- Render scene models to a G-Buffer
- Position and Depth (RGBA32F)
- Normals (RGB16F)
- Albedo Specular (RGBA)
- Velocity (RG16F)
- Render scene models to shadow map's depth texture
- Create SSAO Textures and randomize point light locations
- Render the lighting pass to a post-processing Framebuffer
- Sample G-Buffer for Position, Normal and Specular information
- Also bind the SSAO texture for SSAO
- Blit G-Buffer's Depth buffer to the post-processing Framebuffer
- Draw light objects to the post-processing Framebuffer
- Render Skybox inside post-processing Framebuffer
- Use post-processing effects
./src/framework project source files
./cmake CMake modules
./lib Static libraries for Windows builds.
./includes Headers and includes for project dependencies for Windows builds.
./dlls Required DLLs for Windows builds
Building on Windows (Visual Studio project)
- Build the project with cmake and build the VS project
- All needed libraries and DLLs are included in the project
- The executable and DLLs will be under
Building on Linux
- Install cmake, sdl2, glew, glm, assimp with your favourite package manager
- Generate Makefile with CMake, build the project and run it
- OSX is not supported currently as the used OpenGL version is higher than what OSX supports. Waiting for Metal implementations