Z-buffering
Unbuffer de profunditat,també conegut com abuffer z,és un tipus dememòria intermèdia de dadesque s'utilitza engràfics per ordinadorper representar la informació de profunditat d'objectes enl'espai 3Ddes d'unaperspectivaparticular. Els buffers de profunditat són una ajuda perrepresentaruna escena per assegurar-se que elspolígonscorrectes oclueixen correctament altres polígons. El Z-buffering va ser descrit per primera vegada l'any 1974 per Wolfgang Straßer en la seva tesi doctoral sobre algorismes ràpids per a la representació d'objectes oclusos.[1]Una solució similar per determinar polígons superposats és l'algorisme del pintor,que és capaç de manejar elements d'escena no opacs, encara que a costa de l'eficiència i els resultats incorrectes.[2]
En unacanalització de renderització en 3D,quan es projecta un objecte a la pantalla, la profunditat (valor z) d'unfragmentgenerat a la imatge de la pantalla projectada es compara amb el valor ja emmagatzemat a la memòria intermèdia (prova de profunditat) i el substitueix. si el nou valor és més proper. Funciona conjuntament amb elrasteritzador,que calcula els valors de colors. El fragment sortit pel rasteritzador es desa si no se superposa amb un altre fragment.[3]
Quan es visualitza una imatge que conté objectes o superfícies opaques parcialment o totalment superposades, no és possible veure completament aquells objectes que estan més allunyats de l'espectador i darrere d'altres objectes (és a dir, algunes superfícies s'amaguen darrere d'altres). Si no hi hagués cap mecanisme per gestionar les superfícies superposades, les superfícies es representarien una sobre l'altra, sense importar si estan pensades per estar darrere d'altres objectes. La identificació i eliminació d'aquestes superfícies s'anomenaproblema de la superfície oculta.Per comprovar la superposició, l'ordinador calcula el valor z d'un píxel corresponent al primer objecte i el compara amb el valor z a la mateixa ubicació del píxel al buffer z. Si el valor z calculat és més petit que el valor z que ja hi ha a la memòria intermèdia z (és a dir, el nou píxel està més a prop), aleshores el valor z actual a la memòria intermèdia z se substitueix pel valor calculat. Això es repeteix per a tots els objectes i superfícies de l'escena (sovint enparal·lel). Al final, el buffer z permetrà reproduir correctament la percepció de profunditat habitual: un objecte proper n'amaga un més lluny. Això s'anomenaz-culling.
El buffer z té la mateixa estructura de dades interna que una imatge, és a dir, una matriu 2D, amb l'única diferència que emmagatzema un sol valor per a cada píxel de pantalla en lloc d'imatges en color que utilitzen 3 valors per crear color. Això fa que el buffer z aparegui en blanc i negre perquè no emmagatzema informació de color. La memòria intermèdia té les mateixes dimensions que la memòria intermèdia de pantalla per a la coherència.
Les proves de visibilitat primàries (com aral'eliminació de la cara posterior) i les proves de visibilitat secundàries (com ara comprovacions de superposició i retalls de pantalla) es realitzen normalment en polígons d'objectes per saltar polígons específics que no són necessaris per representar. El buffer Z, en comparació, és relativamentcar,de manera que la realització de proves de visibilitat primàries i secundàries alleuja el buffer z d'alguna funció.
La granularitat d'un z-buffer té una gran influència en la qualitat de l'escena: el z-buffer tradicional de16 bitspot provocarartefactes(anomenats "z-fighting"ocostura) quan dos objectes estan molt a prop l'un de l'altre. Un buffer z de24o32 bitsmés modern es comporta molt millor, tot i que el problema no es pot eliminar sense algorismes addicionals. Gairebé mai s'utilitza un buffer z de8 bitsperquè té massa poca precisió.
Usos
[modifica]El Z-buffer és una tecnologia que s'utilitza en gairebé tots els ordinadors, ordinadors portàtils i telèfons mòbils actuals per realitzargràfics per ordinador en 3D.L'ús principal ara és per alsvideojocs,que requereixen un processament ràpid i precís de les escenes en 3D. El buffer Z s'implementa al maquinari deles targetes gràfiquesde consum. El Z-buffer també s'utilitza (implementat com a programari en lloc de maquinari) per produir efectes especials generats per ordinador per a pel·lícules.
A més, les dades del buffer Z obtingudes a partir de la representació d'una superfície des del punt de vista d'una llum permeten la creació d'ombres mitjançant la tècnica demapeig d'ombres.[4]
Matemàtiques
[modifica]El rang de valors de profunditat al'espai de la càmeraque s'ha de representar sovint es defineix entre aiel valor de.
Després d'unatransformació de perspectiva,el nou valor de,o,es defineix per:
Després d'unaprojecció ortogràfica,el nou valor de,o,es defineix per:
onés l'antic valor dea l'espai de la càmera, i de vegades s'anomenao.
Els valors resultants dees normalitzen entre els valors de -1 i 1, on ell'avióestà a -1 i ell'avió està a l'1. Els valors fora d'aquest interval corresponen a punts que no es troben altroncde visualització i no s'han de representar.
Referències
[modifica]- ↑Straßer,Wolfgang. «Zukünftige Arbeiten». A:Schnelle Kurven- und Flächendarstellung auf grafischen Sichtgeräten(en alemany), April 26, 1974.
- ↑«Z-Buffer or Depth-Buffer method» (en anglès americà), 06-03-2018. [Consulta: 21 octubre 2023].
- ↑«What is Z-buffering?» (en anglès). [Consulta: 21 octubre 2023].
- ↑Akenine-Möller,Tomas.Real-Time Rendering, Fourth Edition(en anglès). CRC Press, 2018-08-06.ISBN 978-1-351-81615-1.