Sdílet prostřednictvím


Hloubkové vyrovnávací paměti (Direct3D 9)

Hloubková vyrovnávací paměť, často označovaná jako vyrovnávací paměť z nebo w-buffer, je vlastnost zařízení, které ukládá podrobné informace, které má Direct3D používat. Když Direct3D vykreslí scénu na cílovou plochu, může jako pracovní prostor použít paměť v přidružené ploše hloubkové vyrovnávací paměti, aby určila, jak se pixely rastrových polygonů navzájem ochovají. Direct3D používá plochu Direct3D mimo obrazovku jako cíl, do kterého se zapisují konečné hodnoty barev. Povrch hloubkové vyrovnávací paměti, který je spojený s povrchem cíle vykreslení, se používá k ukládání podrobných informací, které sdělují Direct3D, jak hluboko jsou jednotlivé viditelné pixely ve scéně.

Pokud je scéna rastrovaná s povolenou hloubkovou vyrovnávací pamětí, každý bod na vykreslovací ploše se testuje. Hodnoty v hloubkové vyrovnávací paměti mohou být souřadnice z bodu nebo jeho homogenní souřadnice w - od umístění bodu (x,y,z,w) v projekčním prostoru. Hloubková vyrovnávací paměť, která používá hodnoty z, se často nazývá vyrovnávací paměť z a ta, která používá hodnoty w, se nazývá w-buffer. Každý typ hloubkové vyrovnávací paměti má výhody a nevýhody, které jsou popsány později.

Na začátku testu je hodnota hloubky v vyrovnávací paměti hloubky nastavena na největší možnou hodnotu scény. Hodnota barvy na vykreslovací ploše je nastavená na hodnotu barvy pozadí nebo na hodnotu barvy textury pozadí v tomto okamžiku. Každý mnohoúhelník ve scéně se testuje a zjistí, jestli se protíná s aktuální souřadnicí (x,y) na vykreslovací ploše. Pokud ano, hodnota hloubky – což bude souřadnice z ve vyrovnávací paměti z a w souřadnice ve vyrovnávací paměti – v aktuálním bodě se testuje, zda je menší než hodnota hloubky uložená v vyrovnávací paměti hloubky. Pokud je hloubka hodnoty mnohoúhelníku menší, uloží se do vyrovnávací paměti hloubky a hodnota barvy z mnohoúhelníku se zapíše do aktuálního bodu na vykreslovací ploše. Pokud je hodnota hloubky mnohoúhelníku v tomto okamžiku větší, testuje se další mnohoúhelník v seznamu. Tento proces je znázorněn v následujícím diagramu.

diagram hodnot hloubky testování

Poznámka

I když většina aplikací tuto funkci nepoužívá, můžete změnit porovnání, které Direct3D používá k určení hodnot umístěných do hloubkové vyrovnávací paměti a následně povrchu cíle vykreslení. Uděláte to tak, že změníte hodnotu stavu vykreslování D3DRS_ZFUNC. Na některém hardwaru může změna porovnávací funkce zakázat hierarchické testování z.

 

Téměř všechny akcelerátory na trhu podporují z-buffering, což z-vyrovnávací paměti dnes nejběžnější typ hloubkové vyrovnávací paměti. Nicméně všudypřítomné, vyrovnávací paměti z mají své nevýhody. Vzhledem k matematickým hodnotám, které se týkají matematiky, se vygenerované hodnoty z ve vyrovnávací paměti z obvykle nerozdělují rovnoměrně v rozsahu vyrovnávací paměti z (obvykle 0,0 až 1,0 včetně). Konkrétně poměr mezi dalekou a blízkou rovinou výřezu silně ovlivňuje, jak se distribuují nerovnoměrné hodnoty z. Při použití vzdálenosti daleko roviny k poměru vzdálenosti blízké roviny 100 se 90 procent rozsahu hloubkové vyrovnávací paměti stráví prvních 10 procent rozsahu hloubky scény. Typické aplikace pro zábavu nebo vizuální simulace s vnějšími scénami často vyžadují poměry daleko roviny/blízké roviny kdekoli mezi 1 000 a 10 000. V poměru 1 000 se 98 procent rozsahu stráví na prvních 2 procentech rozsahu hloubky a rozdělení se zhorší s vyšším poměrem. To může způsobit skryté artefakty povrchu ve vzdálených objektech, zejména při použití 16bitových vyrovnávacích pamětí, což je nejčastěji podporovaná bitová hloubka.

Vyrovnávací paměť hloubky založená na w je na druhé straně často rovnoměrněji rozdělena mezi blízké a vzdálené roviny klipů než vyrovnávací paměť z. Klíčovou výhodou je, že poměr vzdáleností pro daleko a blízké roviny výřezu už není problémem. To umožňuje aplikacím podporovat velké maximální rozsahy, zatímco stále dostává relativně přesné hloubkové ukládání do vyrovnávací paměti blízko oka. Vyrovnávací paměť hloubky založená na w není dokonalá a někdy může vykazovat skryté povrchové artefakty pro blízké objekty. Další nevýhodou přístupu s vyrovnávací pamětí je podpora hardwaru: ukládání do vyrovnávací paměti se nepodporuje tak široce jako u hardwaru jako ukládání do vyrovnávací paměti z.

Použití vyrovnávací paměti z vyžaduje režii při vykreslování. Různé techniky lze použít k optimalizaci vykreslování při použití vyrovnávací paměti z. Podrobnosti najdete v tématu výkonu vyrovnávací paměti Z.

Poznámka

Skutečná interpretace hloubkové hodnoty je specifická pro renderer.

 

Tato část obsahuje informace o použití hloubkových vyrovnávacích pamětí pro skrytou čáru a odstranění skryté plochy.

vykreslovací Direct3D