Z-buffer

I datagrafikk er Z-bufferen eller dybdebufferen en metode som brukes i visningen av en 3D-scene. Z-Buffer gjør det mulig å håndtere synlighetsproblemet som består i å bestemme hvilke elementer i scenen som skal gjengis, hvilke som er skjult av andre og i hvilken rekkefølge primitivene skal vises.

Beskrivelse

Den brukes hovedsakelig for maskinvare 3D-akselerasjon, men brukes også i mange 3D- programvareprogrammer.
Den maleren algoritme er en annen løsning for å løse delvis problemet med synlighet.

Når et objekt blir tegnet av et 3D-grafikkort, lagres dybden til en piksel (z-koordinat) i en buffer (på engelsk 'buffer', der Z-buffer ). Denne bufferen er vanligvis en todimensjonal matrise (X og Y), hvor hvert element er en piksel på skjermen. Hvis et annet element i scenen må vises med de samme koordinatene (X, Y), sammenligner kartet de to dybdene (Z), og viser bare piksler nærmest kameraet. Z-verdien til denne pikselet plasseres deretter i dybdebufferen, og erstatter dermed den gamle. Til slutt gjengir det tegnede bildet den vanlige og logiske oppfatningen av dybde, det nærmeste objektet som gjemmer seg lengst.

Granulariteten til dybdebufferen spiller en viktig rolle i scenekvaliteten. En buffer med 16-biters kodede verdier kan generere grafiske gjenstander (kalt Z-fighting , Z-buffer combat) når to objekter er veldig nær hverandre (bare 65536 forskjellige dybder er mulige). En 32-biters Z-buffer fungerer riktigere. 8-biters Z-buffere blir nesten aldri brukt på grunn av deres lave presisjon.

Vanligvis er Z-buffers presisjon ikke lineær i henhold til punktet, nær eller langt. Nærverdier er mer presise (for å vise nærliggende objekter finere) enn verdier (mindre viktig visuelt). Vanligvis er dette ønsket oppførsel, men det kan bringe visuelle gjenstander bak på scenen. En variant av Z-bufferteknikken løser dette problemet, det kalles W-buffer.

Når du begynner å vise en ny scene, bør Z-bufferen initialiseres med en forhåndsdefinert verdi som representerer maksimal dybde, vanligvis null.

På grafikkort fra 1999-2005 bruker Z-bufferadministrasjon en betydelig mengde minnebåndbredde. Flere metoder har blitt benyttet for å redusere denne påvirkningen, for eksempel tapsfri komprimering (komprimering og dekompresjon av prosessoren er billigere enn grafikkbåndbredde) eller superrask sletting av selve maskinvaren, som derfor gjør teknikken "en gang positiv, en gang negativ "(som gjorde det mulig å unngå sletting ved å administrere signerte numre).

Matematikk

Området med dybdeverdier i kameraområdet som skal tegnes, defineres ofte mellom (minimumsverdi) og (langt verdi). Etter projeksjon transformasjon , den nye verdien av , eller er, definert ved:

Hvor er den nye verdien av , og blir noen ganger referert til som eller .

De resulterende verdiene av normaliseres mellom -1 og 1, der planet er -1, og planet er 1. Verdier utenfor dette området ligger ikke i synsvolumet, og skal ikke tegnes.

For å gjennomføre en z-buffer, verdiene blir interpolert lineært på skjermoverflaten mellom verdiene til punkter på den aktuelle polygonet .

Andre bruksområder

Z-Buffer kan brukes til andre grafiske effekter som uskarphetseffekter hvis intensitet varierer med dybde (for å simulere dybdeskarphet). Å kjenne dybden til hver piksel gjør det også mulig å implementere en tåkeeffekt med maksimal tetthet når pikselet er langt borte.

Merknader og referanser

Relaterte artikler

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">