Z-buffer

I computergrafik er Z-bufferen eller dybdebufferen en metode, der anvendes til visning af en 3D-scene. Z-Buffer gør det muligt at håndtere synlighedsproblemet, der består i at bestemme, hvilke elementer i scenen der skal gengives, hvilke som skjules af andre, og i hvilken rækkefølge primitiverne skal vises.

Beskrivelse

Det bruges hovedsageligt til hardware 3D-acceleration, men bruges også i mange software 3D-motorer .
Den malers algoritme er en anden løsning til delvis løse synlighed problemet.

Når et objekt er tegnet af et 3D-grafikkort, gemmes dybden af ​​en pixel (z-koordinat) i en buffer (på engelsk 'buffer', hvor Z-buffer ). Denne buffer er generelt et todimensionelt array (X og Y), hvor hvert element er en pixel på skærmen. Hvis et andet element i scenen skal vises ved de samme koordinater (X, Y), sammenligner kortet de to dybder (Z) og viser kun den pixel, der er tættest på kameraet. Z-værdien for denne pixel placeres derefter i dybdebufferen og erstatter således den gamle. Endelig gengiver det tegnede billede den sædvanlige og logiske opfattelse af dybde, det nærmeste objekt, der gemmer sig længst.

Granulariteten af ​​dybdebufferen spiller en vigtig rolle i scenekvaliteten. En buffer med 16-bit kodede værdier kan generere grafiske artefakter (kaldet Z-kamp , Z-buffer kamp), når to objekter er meget tæt på hinanden (kun 65536 forskellige dybder er mulige). En 32-bit Z-buffer fungerer mere korrekt. 8-bit Z-buffere bruges næsten aldrig på grund af deres lave præcision.

Normalt er Z-buffers præcision ikke lineær afhængigt af punktet, nær eller langt. Lukkeværdier er mere præcise (for at vise tætte objekter finere) end fjerne værdier (mindre vigtigt visuelt). Normalt er dette den ønskede adfærd, men det kan bringe visuelle artefakter bag på scenen. En variation af Z-buffer-teknikken løser dette problem, det kaldes W-buffer.

Når du begynder at vise en ny scene, skal Z-bufferen initialiseres med en foruddefineret værdi, der repræsenterer den maksimale dybde, normalt nul.

På grafikkort fra 1999-2005 bruger Z-bufferadministration en betydelig mængde hukommelsesbåndbredde. Flere metoder er blevet anvendt til at reducere denne påvirkning, såsom tabsfri kompression (kompression og dekompression af processoren er billigere end grafikbåndbredde) eller ultrahurtig sletning af selve hardwaren, hvilket gør teknikken "en gang positiv, en gang negativ "(hvilket gjorde det muligt at undgå sletning ved at administrere underskrevne numre).

Matematik

Området med dybdeværdier i det kameraområde, der skal tegnes, defineres ofte mellem (minimumsværdi) og (langt værdi). Efter fremspringet transformation , den nye værdi af , eller er, defineret ved:

Hvor er den nye værdi af , og kaldes undertiden som eller .

De resulterende værdier af normaliseres mellem -1 og 1, hvor planet er -1, og planet er 1. Værdier uden for dette område er ikke i synsvolumen og skal ikke tegnes.

At gennemføre en z-buffer, værdierne af er interpoleret lineært på skærmens overflade mellem værdierne af de punkter i den aktuelle polygon .

Andre anvendelser

Z-Buffer kan bruges til andre grafiske effekter såsom sløringseffekter, der varierer i intensitet med dybde (for at simulere dybdeskarphed). At kende dybden på hver pixel gør det også muligt at implementere en tågeeffekt med maksimal tæthed, når pixlen er langt væk.

Noter og referencer

Relaterede artikler

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