Z-puskurointi

Z-puskurointi (, syvyyspuskuri) on tietokonegrafiikan tekniikka, jolla käsitellään 3D-kuvan syvyyttä. Yleensä Z-puskurointi toteutetaan laitteistolla, toisinaan ohjelmallisesti. Se auttaa ratkaisemaan piilotetun pinnan poistoa, jossa pitää kyetä valitsemaan mitkä näkymän elementit ovat näkyviä ja mitkä piilossa. Lisäksi käytössä on algoritmeja kuten maalarin algoritmi, joka on huomattavasti tehottomampi ratkaisu. 

Kun kappale mallinnetaan grafiikkasuorittimella, tuotetun pikselin syvyys (z-koordinaatti) tallennetaan puskuriin (z-puskuri). Yleensä tämä puskuri esitetään 2-ulotteisena XY-taulukkona, jossa kutakin taulukon elementtiä vastaa yksi kuvapiste näytöllä. Jos jonkin kappaleen kuvapiste piirretään samaan pikseliin kuin mihin on aiemmin piirretty, suoritin vertaa syvyyksiä ja valitsee niistä katsojaa lähinnä olevan. Valittu syvyys tallennetaan sitten z-puskuriin vanhan arvon tilalle. Näin puskurin avulla voidaan tuottaa tyypillinen syvyysvaikutelma: lähempänä oleva kappale peittää kauempana olevan.

Z-puskurin tarkkuudella on merkittävä vaikutus näkymän laatuun. 16-bittinen Z-puskuri voi tuottaa häiriöitä kun kaksi kappaletta ovat hyvin lähellä toisiaan. 24- tai 32-bittinen Z-puskuri toimii huomattavasti paremmin. 8-bittistä Z-puskuria ei käytetä juuri koskaan sen hyvin heikon tarkkuuden vuoksi.

Syvyyspuskuri ja säteensuuntaus ovat suosituimmat tavat oikean näkyvyyden varmistamiseen nykyään.

Perinteinen Z-puskurointi on kehitetty tietokoneavusteiseen suunnitteluun, jossa näkymä on tunnettu ja rajattu, ja syvyysarvot ovat myös rajatulla alueella. Perspektiivin mukaan korjattu Z-arvo ei jakaannu tasaisesti Z-puskurin alueelle. Viihteessä ja visuaalisessa simulaatioissa ulkoilmassa tarvitaan suurempia arvoalueita, joka voi aiheuttaa piirtovirheitä etäisissä kappaleissa. W-puskuroinnissa (silmään suhteutettu Z) puskurin käyttö voi jakaantua tasaisemmin läheisten ja kaukaisten kappaleiden välillä.

Z-culling on useimpien modernien grafiikkasuorittimen tekemä optimointi, josta on kaksi versiota: Zmax ja Zmin.

Muun muassa Edwin Catmull liitetään Z-puskuroinnin kehitykseen.

Teoriaa  

Kameran käyttämä syvyysasteikko määritellään yleensä -koordinaatin
arvoilla  ja . Perspektiivimuunnoksen jälkeen uusi arvo  tai  saadaan lausekkeesta

Missä  on vanha  kamera-avaruudessa, ja sitä merkitään joskus  tai . Lopulta arvoväli [near, far] normalisoidaan usein välille [-1, 1] vastaavassa järjestyksessä.

Lähteet

Aiheesta muualla 
 Hierarchical Z-Buffer Visibility (PDF) 

Tietokonegrafiikka