Dieptebuffer

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Boven een driedimensionale voorstelling, onder de dieptebufferweergave

Een dieptebuffer, ook wel z-buffer genoemd, wordt in 3D computer graphics gebruikt om te bepalen welke delen van verschillende polygonen zichtbaar zijn, wanneer deze overlappen.

Bij een scanline renderer worden de hoekpunten van een polygoon naar 2D geprojecteerd en daarna wordt het 2D polygoon ingekleurd (eventueel met een texture, of geavanceerde pixel shaders). Een probleem dat zich hier voordoet is dat als twee polygonen overlappen, je dan wel moet zorgen dat het goede polygoon op de voorgrond komt. Vroeger werd dit vaak opgelost door middel van het schildersalgoritme. Bij dit algoritme zorg je ervoor dat je de polygonen die ver van je af liggen eerder tekent dan de polygonen die dichterbij liggen. De polygonen die dichterbij liggen overschrijven dan de eerder getekende pixels.

Een andere oplossing voor dit probleem is een dieptebuffer, een stuk geheugen dat voor elke pixel van het te renderen beeld opslaat hoe ver die pixel van de camera af ligt. Als er dan op diezelfde pixel nog een polygoon getekend gaat worden kijkt de renderer of de afstand van die nieuwe pixel wel dichterbij is dan de huidige pixel. Als dat zo is wordt de nieuwe pixel getekend en wordt ook de waarde in de dieptebuffer aangepast. Als de nieuwe pixel verder weg ligt wordt de oude pixel behouden. Op deze manier zie je altijd de polygonen die het dichtst bij de camera liggen, zelfs als ze in een heel andere volgorde gerasterizeerd worden.

Voordelen van een dieptebuffer[bewerken]

  • Veruit de simpelste sorteermethode om te gebruiken.
  • Makkelijk te implementeren in hardware. Zogoed als elke grafische kaart ondersteunt het tegenwoordig

Nadelen van een dieptebuffer[bewerken]

  • Kan geen transparante polygonen sorteren, dus transparante polygonen moeten nog steeds van achter naar voren getekend worden (schildersalgoritme)
  • Kost vrij veel geheugen.