Vulkan, C++, GLSL
A real-time cloudscape renderer in Vulkan.
It is based on the cloud system 'NUBIS' that was implemented for the Decima Engine by Guerrilla Games for the game 'Horizon Zero Dawn'
Responsibilities: Vulkan framework; 2D and 3D texture support; ray marching of cloud shapes; reprojection and cheap sampling optimizations; post-processing (god rays, tone mapping, temporal anti-aliasing);
Javascript, WebGL, GLSL
Can simulate over 2100 lights at 60 FPS.
A WebGL implementation of Clustered Deferred and Clustered Forward Shading Techniques.
C++, OpenGL
Monte Carlo Path tracing is a rendering technique that aims to represent global illumination as accurately as possible with respect to reality. When combined with physically accurate models of surfaces, accurate models light sources, and optically-correct cameras, path tracing can produce still images that are indistinguishable from photographs.
Implemented multiple importance sampling; volumetric rendering; BVH acceleration; multi-threading; micro-facet materials; fresnel reflectance model; realistic modelling of light sources; thin lens camera models;
C++, CUDA
A simple CUDA Monte Carlo path tracer that runs at about 19 ms/sample.
Interesting things that were implemented include: Subsuface Scattering, Stream Compaction, Material Sorting, First Bounce Intersection Caching
C++, CUDA
GPU Rasterizer written in CUDA that runs at >60 FPS
Implements tile based rasterization and scanline rasterization along with standard features like depth testing via mutex locks; texture mapping; backface culling; point, line, and triangle rasterization;