Skip to content

Real-time global illumination following the many-lights approach and using Imperfect Shadow Maps. This is the code for my master's thesis, which can be found here: https://github.com/karyon/masterthesis

License

Notifications You must be signed in to change notification settings

karyon/many-lights-gi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Real-Time Dynamic Global Illumination

This is the code for my master's thesis on real-time dynamic global illumination using the many-lights approach. The thesis itself can be found here: https://github.com/karyon/masterthesis, including a compiled pdf.

The following techniques have been implemented:

  • Reflective Shadow Maps. They are rendered via the normal g-buffer shaders (model.vert, model.frag) and regularly sampled in vpl_processor.comp
  • Imperfect Shadow Maps. The scene is converted to points with tessellation shaders (ism.tesc, ism.tese) and then rendered either via splatting (ism.geom, ism.frag) or as single pixels via a compute shader (ism.geom, ism.comp). In case of the single-pixel renderer, a pull-push postprocossing is applied (pull.comp, push.comp).
  • Interleaved Sampling. This has been integrated into the final gathering shader. (final_gathering.comp). No buffers are split and re-interleaved; the result is pretty efficient.
  • Clustered Deferred Shading. Implemented in two compute shader passes (clustering.comp, light_lists.comp). Turned out to have too much overhead in the contex of many-light methods.
  • Tiled Deferred Shading. Integrated into the final gathering shader (final_gathering.comp, this is in a separate branch) and a clear performance win in all test cases.

For a more thorough documentation see the implementation chapter in the thesis.

The end result is pretty fast (<10ms for a complete frame, 6ms for the global illumination part, on a GTX 980), but the indirect shadows are of rather poor quality and are not temporally coherent, i.e. it flickers when lights or geometry moves. Again, for a more detailed analysis see the results chapter in the thesis.

Dependencies

Sorry :(

About

Real-time global illumination following the many-lights approach and using Imperfect Shadow Maps. This is the code for my master's thesis, which can be found here: https://github.com/karyon/masterthesis

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published