quasi-linear depth buffers with variable resolution
In this paper we present new class of variable-resolution depth buffers, providing a flexible trade-off between depth precision in the distant areas of the view volume and performance. These depth buffers can be implemented using linear or quasi-linear mapping function of the distance to the camera to the depth in the screen space. In particular, the complementary Z buffer algorithm combines simplicity of implementation with significant bandwidth savings. A variable-resolution depth buffer saves bandwidth by changing size of the per-pixel depth access from 24 bits to 16 bits when distance to the pixel from the camera becomes larger than a given threshold. This distance is selected in order to keep the resulting resolution equal or larger than the resolution of the 24-bit screen Z buffer. For dynamic ratios of the distances between far and near planes 500 and above, bandwidth savings may exceed 20\%. Quasi-linear depth floating-point depth buffers are best at high dynamic ratios; 3D hardware should support per-frame setting of the optimal depth buffer type and format. Per-frame adjustment of the resolution switch distance allows balancing performance with depth precision and should be exposed in the graphics API.
depth precision complementary z z buffer screen z w buffer