This is the OpenGL scene made in C++ during the Graphics Programming module at SAE Institute.
It has :
- Physically Based Rendering (PBR)
- Image Based Lighting (IBL)
- Deferred Rendering
- Cascaded Shadow Maps
- Normal Mapping
- ACES HDR Tone Mapping
- Bloom
- Screen Space Ambient Occlusion (SSAO)
- Scene Graph
- Model Loading (OBJ and glTF)
- KTX Textures Loading
You can read more about the implementation details of this project in this blog post : https://blog.stowy.ch/posts/how-i-implemented-a-deferred-pbr-renderer-in-opengl/
You need :
- A C++ 23 compiler that supports C++20 modules. I use Clang 18.
- CMake 3.28
Then run :
mkdir build
# On Windows
cmake -G Ninja -B build --preset=windows-clang-release # Or debug
# On Linux
cmake -G Ninja -B build --preset=unixlike-clang-release # Or debug
cmake --build build -t opengl_scene
- CPM.cmake : easy dependency management in CMake
- glm : linear algebra library
- assimp : 3D models importer
- SDL2 : handles the window
- glad : loads the OpenGL functions
- libktx : KTX textures importer
- Abseil : mostly to replace
std::unordered_map
byabsl::flat_hash_map
- spdlog : fast and easy logging
- GSL: Guidelines Support Library : mostly for
gsl::not_null