Code Sample: Merging Masked Occlusion Culling Hierarchical Buffers

File(s):Download
License:Intel Sample Source Code License Agreement
Optimized for... 
Operating System:Windows® 10 (64 bit)
Hardware:N/A
Software:
(Programming Language, tool, IDE, Framework)
C++, Microsoft Visual Studio* 2015, LLVM
Prerequisites:Familiarity with Microsoft Visual Studio, 3D graphics, parallel processing.

Introduction

Efficient occlusion culling in dynamic scenes is a very important topic to the game and real-time graphics community in order to accelerate rendering. Masked Software Occlusion Culling [J. Hasselgren, M. Andersson, T. Akenine-Möller] presented a novel algorithm optimized for SIMD-capable CPUs that culled 98% of all triangles culled by a traditional occlusion culling algorithm. This update to the original Masked Occlusion library presents an addition to the original work that address the problem where silhouettes edges can bleed through the buffer when submitting complex unsorted geometry by splitting a scene into multiple buffers that better fit local dynamic ranges of geometry and that can be computed concurrently.

Get Started

Core masked occlusion culling library

The code additions form part of the core Intel Masked Occlusion library and have been integrated into the original source files. The library comes with visual studio projects to build the algorithm as a static lib for inclusion into another project, a performance benchmark test and a validation sample that tests the internal correctness of the mask occlusion results. The library does not include a sample of using the library in a gaming environment.

Related samples

An early example of the mask occlusion library used in a 3D workload can be found here although this sample is in maintenance mode and does use the latest build of the mask occlusion library.

Tutorial

Merging Masked Occlusion Culling Hierarchical Buffers for Faster Rendering

References

Original Masked Occlusion Whitepaper.

Updated Log

Created March 23, 2017

For more complete information about compiler optimizations, see our Optimization Notice.