Releases: loryruta/vren
v0.2 - OcclusionCulling & ClusteredShading prototypes
This is the release (absolutely not ready yet) of the version I'll be presenting for my Bachelor thesis.
I managed to get OcclusionCulling & ClusteredShading prototypes to work. OcclusionCulling is fully implemented as described by Arseny in niagara's series; while ClusteredShading, described here, still lacks of the clusters' cone check, but despite of that it still works giving distinguishable performance. Both techniques need to be profiled and further optimizations have to be done.
Both require some parallel calculus "primitives" and led me to implement: the Reduce operation (2 supported data types and 4 different operations), ExclusiveScan, RadixSort, BucketSort and BuildBVH. Every primitive has its own set of unit tests and benchmarks that permitted me to profile and optimize them a lot during vren's development (I'll upload current benchmark results for my hardware somewhere).
One more important feature is the RenderGraph API (so far described here) that permits to automitically synchronize resources and manage layout transitions of the images during the frame rendering. The frame's render-graph structure and execution is easily debuggable by exporting it to .dot
format and by using Graphviz for visualization.
And... there are many more useful Vulkan API abstractions! 😅
Compile and run vren_demo
executable or vren_test_benchmark
to see what's the renderer capable of!