I rewrote this engine in Vulkan here. I will probably won't be working on this version much if at all
This engine is somewhere I can implement modern rendering techniques and hopefully make some beautiful images along the way. So far, this engine has successfully implemented the following features:
- Clustered forward shading model using OpenGL compute shaders
- Physically based shading model
- Linear lighting
- HDR with Reinhard tonemapping
- Gamma-correction
The current roadmap is as follows:
- Shadows using NVidia's PCSS algorithm, which builds off the classic shadowmapping technique and cleanly replcaces the PCF step.
- Post-processing, including SSAO.
Sphere primitive generated.
Clustered forward shading result with 1024 lights on the Sponza scene. This is using a Blinn-Phong lighting model and HDR + Reinhard tonemapping, along with gamma correction.
Simple phong lighting model with forward rendering, which will be adapted to work with clustered forward rendering.
Debug screenshot of subdividing between near and far plane into clusters on the sponza model. This idea will be used in the compute shader for culling lights into clusters.
First rendered model.
Gooch shading model implementation. See reference for Stanford dragon model below.
Morgan McGuire, Computer Graphics Archive, July 2017 (https://casual-effects.com/data)
Microsoft Visual Studio 2019, although I plan to make this cross-platform eventually. I've never tested on other platforms so I can't say what would happen exactly.I believe it is now cross platform (I am currently developing it on linux instead of windows). You'll need CMake and you will probably want a good IDE as well. I like CLion.
Open a command prompt in the directory where want to clone the repo. Enter git clone --recursive https://github.com/deadbird11/efgl.git
, then cd efgl
. Create a build directory, like build
, then cd
into it. Run cmake ..
and it should generate some Makefiles. You can also generate other project files for whatever platform you're on. Finally, if you're using make, run make install
and it should build an efgl
binary. Enjoy!