Masked Occlusion Culling. More...
Classes | |
class | MaskedOcclusionCulling |
struct | MaskedOcclusionCulling::VertexLayout |
struct | MaskedOcclusionCulling::ScissorRect |
struct | MaskedOcclusionCulling::TriList |
struct | MaskedOcclusionCulling::OcclusionCullingStatistics |
Macros | |
#define | QUICK_MASK 1 |
#define | USE_D3D 1 |
#define | PRECISE_COVERAGE 1 |
#define | USE_AVX512 0 |
#define | CLIPPING_PRESERVES_ORDER 1 |
#define | ENABLE_STATS 0 |
#define | MOC_RECORDER_ENABLE 0 |
Masked Occlusion Culling.
General information
#define CLIPPING_PRESERVES_ORDER 1 |
Define CLIPPING_PRESERVES_ORDER to 1 to prevent clipping from reordering triangle rasterization order; This comes at a cost (approx 3-4%) but removes one source of temporal frame-to-frame instability.
#define ENABLE_STATS 0 |
Define ENABLE_STATS to 1 to gather various statistics during occlusion culling. Can be used for profiling and debugging. Note that enabling this function will reduce performance significantly.
#define MOC_RECORDER_ENABLE 0 |
Define MOC_RECORDER_ENABLE to 1 to enable frame recorder (see FrameRecorder.h/cpp for details)
#define PRECISE_COVERAGE 1 |
Define PRECISE_COVERAGE to 1 to more closely match GPU rasterization rules. The increased precision comes at a cost of slightly lower performance.
#define QUICK_MASK 1 |
Configure the algorithm used for updating and merging hierarchical z buffer entries. If QUICK_MASK is defined to 1, use the algorithm from the paper "Masked Software Occlusion Culling", which has good balance between performance and low leakage. If QUICK_MASK is defined to 0, use the algorithm from "Masked Depth Culling for Graphics Hardware" which has less leakage, but also lower performance.
#define USE_AVX512 0 |
Define USE_AVX512 to 1 to enable experimental AVX-512 support. It's currently mostly untested and only validated on simple examples using Intel SDE. Older compilers may not support AVX-512 intrinsics.
#define USE_D3D 1 |
Configures the library for use with Direct3D (default) or OpenGL rendering. This changes whether the screen space Y axis points downwards (D3D) or upwards (OGL), and is primarily important in combination with the PRECISE_COVERAGE define, where this is important to ensure correct rounding and tie-breaker behaviour. It also affects the ScissorRect screen space coordinates.