Global Illumination, Adaptive Imperfect Shadow Mapping

Alexander Sannikov
Alexander Sannikov
1 هزار بار بازدید - 9 سال پیش - My attempt at implementing global
My attempt at implementing global illumination based on imperfect shadow mapping approach that adaptively tesselates triangulated geometry into point cloud represenation. Tesselation level is chosen for every subdivided triangle patch and for every ISM virtual camera. My implementation runs 100% on GPU without any precomputation. Algorithm complexity is mostly independent of geometry detalization due to view-adaptive subdivision scheme.

Compute shaders effectively allow to adapt tesselation level to every virtual light vastly reducing amount of necessary points and generating them on-the-fly without storing in any persistent buffer.

This implementation is written in C++, mostly on OpenGL 4.5 and about 50% of the code is in Compute/GLSL shaders. Every compute shader thread tesselates a single triangle and writes multiple ISM texels via atomic image load/store operations.

This demo is recorded in realtime on GTX850M(laptop) and apparently is still far from being optimized. There's some distinctive noise but I have not started working on it yet.

At 0:50 you can see the adaptive point-based tesselation in the main viewport. Voronoi regions-based algorithm is used to fill holes between points, this part should be pretty much re-done from scratch because I don't like neither its performance nor its quality.

Overall approach of compute shader-based adaptive geometry tesselation has proven to be pretty challenging to implement, yet rather effective.
9 سال پیش در تاریخ 1394/12/01 منتشر شده است.
1,095 بـار بازدید شده
... بیشتر