Visibility Buffer Rendering
This project started as part of the application development portion of my Honors project research into visibility buffer rendering.
There are three versions of the application that can be built, using different approaches to the rendering of opaque and transparent geometry. The first renderer uses standard deferred rendering for opaque geometry and handles transparent geometry using a weighted blended order-independent transparency algorithm. The second renders opaque geometry using visibility buffer rendering, a memory optimized alternative to deferred shading, and again handles transparent geometry using the weighted blended algorithm. The third uses a newly proposed rendering approach that makes use of a layered visibility buffer generated using a depth peeling algorithm, allowing it to render both transparent and opaque geometry simultaneously.
This project, and the resulting research, won the Leidos Software Engineering Project Award at the 2018 ScotlandIS Young Software Engineer of the Year Awards.
Project on GitHub Demo Videos on YouTube
Terrain Generation
A theoretically endless and deterministic procedural landscape generated and rendered using the Vulkan API. The landscape is generated using several variations of fractional Brownian motion and Perlin Noise in compute shaders, then stored in individual chunks, allowing new sections of landscape to be continuously generated with a low performance overhead.
Currently the application generates terrain data and simple bodies of water but there are plans to expand the features to include river and foliage generation, regions with differing climates and much more.