Z-buffer

Z-buffer je paměť s údaji o hloubce vykreslovaného obrazu, která pomáhá rozhodnout, která plocha má být vidět před jinou. Ke zpracovávanému místu obrazu se porovnává hloubka nově kresleného fragmentu s již uloženou hodnotou.

Typický příklad tvoří postava před zdí. Barva zadní zdi nesmí přepsat bližší postavu jen proto, že ji engine zpracuje později. Hloubkový test umožňuje správně zakrýt vzdálenější neprůhlednou geometrii i bez prostého řazení celých objektů od zadních k předním.

Zjednodušené schéma: tentýž bod obrazu

Modrá plocha: hloubka 2
Žlutá plocha: hloubka 5

Viditelný výsledek: modrá

Příklad používá menší číslo pro bližší neprůhlednou plochu. Nejde o univerzální formát hodnot všech GPU.

Co si paměť pamatuje

Barevná paměť uchovává výslednou barvu, zatímco hloubková uchovává informaci potřebnou k porovnání vzdálenosti. Přesný zápis hloubky a pravidlo porovnání závisejí na rendereru. Není tedy správné chápat každou uloženou hodnotu jako počet metrů od kamery. Průhledné plochy navíc mohou vyžadovat další pravidla kreslení a míchání barev.

Proč má omezenou přesnost

Počet rozlišitelných hloubkových hodnot je konečný. U téměř totožných povrchů může vzniknout z-fighting, kdy obraz střídavě propouští části obou ploch. Výsledek ovlivňuje také nastavení blízké a vzdálené ořezové roviny kamery. Přítomnost z-bufferu proto sama nezaručuje obraz bez všech prostorových chyb.

Podklady: Microsoft: hloubkové buffery.