Z-tampon

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Imaginea generală și reprezentarea sa în tamponul Z, în care sunt stocate doar distanțele

În grafica computerizată tridimensională, tamponarea z este o tehnică de gestionare a coordonatelor corespunzătoare adâncimii unui obiect la nivelul unui singur pixel, adică a rezoluției maxime posibile. De obicei este realizat de hardware sau de placa grafică , care trebuie să fie echipată cu o zonă specială de memorie numită z-buffer ; cu toate acestea, poate avea și o implementare completă a software-ului, dacă este necesar.

Z-buffering este una dintre strategiile posibile pentru a rezolva problema vizibilității în randarea tridimensională , adică pentru a stabili ce părți ale obiectelor de pe scenă sunt vizibile și care sunt ascunse de alte elemente în prim-plan. Deși este o tehnică destul de simplă (și lentă), este totuși exploatată în majoritatea motoarelor grafice 3D comerciale. Stabilirea în timp a obiectelor care urmează să fie afișate (coerența temporală) poate crește semnificativ performanța, deoarece aceasta permite o eficiență mai mare prin evitarea operațiilor de redare inutile. Unele tehnici (cum ar fi redarea bazată pe țiglă ) încearcă să anticipeze tamponarea z în conducta 3D pentru a obține o eficiență mai mare. Alte tehnici implică eliminarea ocluziei. Au fost propuse algoritmi care exploatează un tampon z ierarhic pentru a accelera operațiunile de tăiere a ocluziei.

O altă tehnică larg utilizată, deși mai puțin eficientă, este algoritmul pictorului .

Descriere

Când un obiect este redat de o placă grafică 3D , adâncimea pixelilor care îl reprezintă („coordonata z”) sunt stocate în buffer-ul z. Acest tampon este de obicei structurat ca o matrice bidimensională, cu un element pentru fiecare pixel de pe ecran. Dacă un alt obiect urmează să fie afișat în același loc, placa grafică compară adâncimile celor două obiecte suprapuse; dacă noul obiect este mai aproape de observator, valorile corespunzătoare pentru pixel le înlocuiesc pe cele anterioare, iar celula corespunzătoare a tamponului z este, de asemenea, actualizată cu noua adâncime.

Granularitatea tamponului z afectează puternic calitatea imaginii; un tampon z de 8 sau 16 biți poate crea artefacte inestetice (numite informal „luptă de tampon z”) în cazul a două obiecte foarte apropiate. Aceste artefacte scad dacă aduceți biții tamponului z la 24 sau 32 de biți .

Mai mult, acuratețea stocării distanțelor într-un tampon z nu este constantă în raport cu valoarea absolută a acestor distanțe. Cu alte cuvinte, tamponul z distinge obiectele apropiate mult mai bine decât obiectele îndepărtate. Deși aceasta este o alegere deliberată în proiectarea plăcilor grafice (fiind în general preferabilă), în unele contexte poate duce la apariția unor artefacte vizibile în redarea obiectelor foarte îndepărtate (cum ar fi în anumite programe de simulare a zborului ). O variantă de tamponare z care menține o precizie mai constantă la distanță se numește tamponare w .

La începutul unei scene noi, tamponul z este șters, atribuind de obicei o valoare de 1,0 fiecărei celule. Deoarece adâncimea este stocată ca o valoare în virgulă mobilă între 0 și 1, 1.0 reprezintă adâncimea obiectelor cele mai îndepărtate.

Invenția tamponului z este creditată în general lui Edwin Catmull , deși Wolfgang Straßer a descris o idee similară în teza sa de doctorat din 1974 .

Z-buffering în plăcile video moderne

În plăcile grafice mai moderne, tamponul z utilizează o parte semnificativă din lățimea de bandă disponibilă pentru accesul la memorie. Au fost propuse multe tehnici pentru a reduce impactul tamponării z asupra utilizării resurselor cardului; de exemplu, redarea bazată pe țiglă și tehnici de compresie fără pierderi .

Elemente conexe

Alte proiecte

linkuri externe