Per Wennersten

Abstract

Depth buffer compression

When rendering a three-dimensional image, one must ensure that geometry in front occludes geometry further back. In order to do this, the current depth for each pixel in an image is continuously stored and updated in the depth buffer. When new geometry is drawn, the depth of each pixel is first checked against the value in the depth buffer to ensure that the new geometry is in front of anything previously drawn there.

The subject of this Master's project is to study algorithms used to compress this depth buffer in hardware as the image is being rendered, in order to reduce the amount of memory accesses, thereby reducing rendering time and power consumption.

First, previously described algorithms that have been implemented are presented and evaluated on a test scene. Following an analysis of these results, attempts are made to develop more efficient compression schemes. A new scheme is introduced, capable of significantly higher compression rates when compressing large blocks of pixels at a time, by exploiting the extra redundancy present in this case.

Sammanfattning

Djupbufferkompression

När man rendrerar en 3d-bild måste man se till att geometri i förgrunden skymmer geometri längre bak. För att åstadkomma detta lagras och uppdateras kontinuerligt ett djupvärde för varje pixel i bilden i en så kallad djupbuffer. När ny geometri ritas genomförs först en kontroll av djupet i varje pixel jämfört med värdena i djupbuffern för att fastställa att den nya geometrin inte skyms av något som ritats tidigare.

Syftet med detta examensarbete är att studera algoritmer för att komprimera djupbuffern i hårdvara under rendreringen, för att minska antalet minessaccesser och därigenom tids- och energiåtgången vid rendrering.

Först implementeras och jämförs några existerande algoritmer på en testscen. Sedan följer en analys av algoritmerna som resulterar i försök att utveckla nya algoritmer för att uppnå en högre kompressionsgrad. En ny metod introduceras som uppnår betydligt bättre kompression när man komprimerar stora block av pixlar åt gången, genom att utnyttja den extra redundans som finns i detta fall.