ABSTRACT

This chapter presents a better method for supporting large light counts: compute-based tiled culling. It presents the technique in detail, including code examples in HLSL and various optimizations. The chapter provides an optimized compute-based tiled-culling implementation for scenes with many dynamic lights. It explores various optimizations to the compute-based tiled-culling technique. In addition, CPU light culling is performed once against the view frustum instead of for each batch, reducing the performance cost. Light culling is accomplished by testing light bounding volumes for intersection against the tile bounding volume. The chapter describes an implementation in HLSL of the compute-based tiled-culling algorithm. Modern real-time rendering engines need to support many dynamic light sources in a scene. Deferred rendering better supports large light counts because it decouples scene geometry rendering and material evaluation from lighting. Removing lighting from the scene rendering pass eliminates the state switching for different light sets, allowing for better batching.