Z-буферизація (англ. Z-buffering) (інша назва: глибинна буферизація (англ. depth buffering)) — алгоритм який відповідає за створення зображень 3D-об'єктів спираючись на глибину елементів зображення. Зазвичай реалізується на апаратному рівні, іноді в програмному забезпеченні. Є одним з рішень проблеми видимості об'єктів та попіксельним узагальненням алгоритму художника.
При створенні (візуалізації) 3D-об'єкту, його глибина генерується на осі Z-координат і зберігається у Z-буфері. Сам буфер, зазвичай, являє собою двомірний масив X-Y координат із одним елементом (глибиною) для кожного екранного пікселя. Коли інший об'єкт сцени повинен бути відображений у цьому пікселі зараз, тоді порівнюється дві глибини та перекривається поточний піксель, якщо об'єкт знаходиться ближче до спостерігача. Обрана глибина зберігається в Z-буфері і замінює попередню. Зрештою, Z-буфер дозволяє правильно відтворювати звичне для нас сприйняття глибини: ближчий до нас об'єкт перекриває наступні, що розташовуються за ним — невидимих поверхонь.
Для Z-буферизації є критичним роздільна здатність буферу. Чим вона вища, тим краще відображаються глибина об'єктів сцени. Так, 16-розрядний буфер дозволяє порівняти за глибиною лише 64 тис. точок. Можуть з'явитися так звані артефакти (англ. z-fighting) — коли два об'єкти знаходяться дуже близько один до одного але мають однакову глибину. Тоді як Z-буфер на 24 розряди, має роздільну здатність 16 млн, 32 розряди — вже два мільярди.
Використання
Z-буферизація дозволяє поєднувати 2D елементи у тривимірному просторі, створюючи декорації, а також складні ефекти такі як відображення різних типів поверхонь. Наприклад, 3D-редактор Maya дозволяє виконувати пост-рендеринг текстур для одного об'єкту, при цьому використовуючи кілька буферів на кшталт Z-буферу: α-буфер (α — коефіцієнт прозорості); ідентифікатор об'єкту; координати розгортки (англ. UV mapping) та будь-які інші координати необхідні для пост-обробки, економлячи при цьому час на моделювання, оскільки без їх використання потрібно-б було повторно створювати об'єкт. Z-буфер, містить дані для отримання рендерінгу (візуалізації) відображення поверхонь, дозволяє створювати тіні в scanline візуалізації, проектуючи Z-буфер вниз створюючи ефект тіні. Цей процес аналогічний до того, який називають не-трасовані промені (англ. non-raytracing) та використовують у безкоштовних та відкритих 3D-пакетах.
Еволюція
При недостатньо великому ступені деталізації, можуть виникати проблеми з якістю. Коли значення відстані, що містяться у Z-буфері, нерівномірно розподілені на всій відстані. Ближчі значення завжди точніші і відображаються краще, ніж ті, які знаходяться далі. Як правило, це і потрібно, проте іноді це викликає артефакти зображення — коли дальній об'єкт перекривається ближнім. Z-буферизація, яка дозволяє точніше розподіляти зображення називають — W-буферизація. Кожна нова сцена спричинює очищення Z-буфера, щоб отримати нове значення, як правило — 1 або 0, оскільки ці значення є крайніми для визначення глибини (у шкалі від 0 до 1), тобто об'єкт присутній/не присутній в цій точці видимого простору. Винахід Z-буферизації пов'язують із іменем Едвіна Кетмелла, хоча сам процес вперше описав Волфган Штрассер (Wolfgang Straßer) у своїй дисертації 1974 року1.
На сучасних комп'ютерних 3D відеокартах, в процесі створення зображення, Z-буферизація використовує значний об'єм доступної пам'яті. Тому, одним із головних завдань для виробників обладнання стає зменшення використання пам'яті Z-буфером, не зменшуючи при цьому якості зображення. Так, одним із методом Z-Compression є стиснення й розпакування зображення буферу, оскільки воно займає менше пам'яті. Іншим методом є Fast Z-Clear швидке очищення Z-буфера. Після побудови і виведення зображення на екран, інформація, що розміщується у Z-буфері, вже неактуальна тому стирається. Z-буфер обнуляється, але вже не записуються окремі значення, а використовуються блоки які заміщають кілька значень одразу.
Відсікання невидимих поверхонь
У процесі візуалізації, відсікання невидимих поверхонь на основі глибини (англ. Z-culling), дозволяє збільшити продуктивність при його рендерінгу, проте, є доволі ресурсомісткими. Це прямий наслідок Z-буферизації, коли глибина кожного пікселю порівнюється із глибиною наявної геометрії, за яким вона може бути прихована.
При використанні Z-буфера піксель відсікаються чи не відсікаються, як тільки стає відомою його глибина, це дозволяє уникнути процес текстурування й освітлення того пікселю, який ми не бачимо в сцені за будь-яких обставин. До того-ж, значні ресурси системи, які були б потрібні при прорисовці піксельних шейдерів, як правило, не виконуються для відсічених пікселів. Це робить відсікання невидимих поверхонь хорошим кандидатом для оптимізації, в ситуаціях, коли швидкість текстурування, освітлення, або піксельних шейдерів є вузьким місцем. У той час, Z-буферизація дозволяє геометрії, сортувати полігони за рахунок збільшення глибини(при цьому використовує алгоритм зворотної палітри — алгоритм художника) і дозволяє на кожен екранний піксель витрачати менший час. Це може збільшити продуктивність в швидких сценах, з великою кількістю перерисовок, але таке поєднання із Z-буферизацією страждає серйозними проблемами, такими як:
- полігони можуть перекривати один одного (трикутник А закриває В, В закриває С, С закриває А) і
- неможливо визначити «найближчу» до глядача точку на трикутнику (наприклад, якщо сортувати трикутники за центроїдом, найближчою чи найвіддаленішою точкою, то все одно можлива ситуація, що А «ближчий» ніж В, але трикутник В повинен бути зображений першим).
Таким чином, алгоритм зворотної палітри не може бути використаним як альтернатива до процесу відсікання невидимих поверхонь, за винятком оптимізації. Для прикладу: для оптимізації ми можемо отримати полігони сортовані у X-Y координатах і Z — глибиною, що забезпечує межу, для швидкого визначення двох полігонів що можуть перекривати один одного.
Алгоритм
Дано: список полігонів {P1, P2, …, Pn}
Вихід: кольоровий масив, що показує інтенсивність відображення поверхонь полігона.
Введення:
note : z-depth and z-buffer(x, y) is positive... z-buffer(x,y)=max depth; and COLOR(x,y)=background color.
Початок
for : (each polygon P in the polygon list) do{ for(each pixel(x,y) that intersects P) do{ Calculate z-depth of P at (x,y) If (z-depth < z-buffer[x,y]) then{ z-buffer[x,y]=z-depth; COLOR(x,y)=Intensity of P at(x,y); } } } display COLOR array.
Математика
Діапазон значень глибини в просторі (3D проєкція) візуалізація значень, таких як близько і далеко та значенням . Після перетворення, проєкція перспективи змінюється на нові значення з на , це визначається за формулою: Після цього проєкція отримує нові значення , або визначається за формулою: якщо, має старе значення у просторі її часто називають або . Отримані значення урівнюють між значенням −1 та 1, де значення площини від −1 та площина, яка дорівнює 1. Значення за межею цього діапазону є точкам невидимого простору, тому не відображаються.
Відображення нерухомої коми
Як правило, всі значення зберігаються у Z-буфері відеокарти в форматі фіксованої точки. Спочатку їх приводять до більш загальних значень [0,1] шляхом заміни відповідних перетворень згідно попередньої формули:
Наступним кроком, згідно наведеної вище формули, є множення де d — глибина Z-буфера (зазвичай 16, 24 чи 32 біти), отриманий результат округлюється до цілого числа:
Ця формула може бути оберненою і утворює у розрахунках Z-буфера так звану «зернистість», про яку говорилось вище. Оберненим до цього :
where
Роздільна здатність Z-буфера — термін коли точка огляду (камера) отримує додаткові значення результатів мінімальних змін і зберігає їх у Z-буфері як значення +1 чи −1. Тому роздільна здатність може бути розрахована з похідного as a function of :
Візуалізація тла об'єкта, являє собою by the above :
~
Це показує, що значення згруповані щільніше поруч з площиною — а далі, вже рідше; це дає змогу отримати більшу точність ближче до камери. Що менше співвідношення, тим менша точність заднього тла площини, оскільки частинки розміщуються занадто тісно вони стають причиною артефактів візуалізації у віддалених об'єктах.
У Z-буфері вираховуються, значення і лінійно інтерполюються через екранний простір між вершинами поточного багатокутник, ці проміжні значення, як правило, зберігається в Z-буфері у форматі нерухомої коми.
Див.також
Примітки
- The OpenGL Organization. . Архів оригіналу за 20 червня 2010. Процитовано 1 листопада 2010.
- Grégory Massal. . Архів оригіналу за 3 серпня 2008. Процитовано 3 серпня 2008.
Джерела
Note 1: see W.K. Giloi, J.L. Encarnação, W. Straßer. "The Giloi’s School of Computer Graphics". Computer Graphics 35 4:12–16.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Z buferizaciya angl Z buffering insha nazva glibinna buferizaciya angl depth buffering algoritm yakij vidpovidaye za stvorennya zobrazhen 3D ob yektiv spirayuchis na glibinu elementiv zobrazhennya Zazvichaj realizuyetsya na aparatnomu rivni inodi v programnomu zabezpechenni Ye odnim z rishen problemi vidimosti ob yektiv ta popikselnim uzagalnennyam algoritmu hudozhnika Princip diyi Z bufera Pri stvorenni vizualizaciyi 3D ob yektu jogo glibina generuyetsya na osi Z koordinat i zberigayetsya u Z buferi Sam bufer zazvichaj yavlyaye soboyu dvomirnij masiv X Y koordinat iz odnim elementom glibinoyu dlya kozhnogo ekrannogo pikselya Koli inshij ob yekt sceni povinen buti vidobrazhenij u comu pikseli zaraz todi porivnyuyetsya dvi glibini ta perekrivayetsya potochnij piksel yaksho ob yekt znahoditsya blizhche do sposterigacha Obrana glibina zberigayetsya v Z buferi i zaminyuye poperednyu Zreshtoyu Z bufer dozvolyaye pravilno vidtvoryuvati zvichne dlya nas sprijnyattya glibini blizhchij do nas ob yekt perekrivaye nastupni sho roztashovuyutsya za nim nevidimih poverhon Dlya Z buferizaciyi ye kritichnim rozdilna zdatnist buferu Chim vona visha tim krashe vidobrazhayutsya glibina ob yektiv sceni Tak 16 rozryadnij bufer dozvolyaye porivnyati za glibinoyu lishe 64 tis tochok Mozhut z yavitisya tak zvani artefakti angl z fighting koli dva ob yekti znahodyatsya duzhe blizko odin do odnogo ale mayut odnakovu glibinu Todi yak Z bufer na 24 rozryadi maye rozdilnu zdatnist 16 mln 32 rozryadi vzhe dva milyardi VikoristannyaZ buferizaciya dozvolyaye poyednuvati 2D elementi u trivimirnomu prostori stvoryuyuchi dekoraciyi a takozh skladni efekti taki yak vidobrazhennya riznih tipiv poverhon Napriklad 3D redaktor Maya dozvolyaye vikonuvati post rendering tekstur dlya odnogo ob yektu pri comu vikoristovuyuchi kilka buferiv na kshtalt Z buferu a bufer a koeficiyent prozorosti identifikator ob yektu koordinati rozgortki angl UV mapping ta bud yaki inshi koordinati neobhidni dlya post obrobki ekonomlyachi pri comu chas na modelyuvannya oskilki bez yih vikoristannya potribno b bulo povtorno stvoryuvati ob yekt Z bufer mistit dani dlya otrimannya renderingu vizualizaciyi vidobrazhennya poverhon dozvolyaye stvoryuvati tini v scanline vizualizaciyi proektuyuchi Z bufer vniz stvoryuyuchi efekt tini Cej proces analogichnij do togo yakij nazivayut ne trasovani promeni angl non raytracing ta vikoristovuyut u bezkoshtovnih ta vidkritih 3D paketah EvolyuciyaPri nedostatno velikomu stupeni detalizaciyi mozhut vinikati problemi z yakistyu Koli znachennya vidstani sho mistyatsya u Z buferi nerivnomirno rozpodileni na vsij vidstani Blizhchi znachennya zavzhdi tochnishi i vidobrazhayutsya krashe nizh ti yaki znahodyatsya dali Yak pravilo ce i potribno prote inodi ce viklikaye artefakti zobrazhennya koli dalnij ob yekt perekrivayetsya blizhnim Z buferizaciya yaka dozvolyaye tochnishe rozpodilyati zobrazhennya nazivayut W buferizaciya Kozhna nova scena sprichinyuye ochishennya Z bufera shob otrimati nove znachennya yak pravilo 1 abo 0 oskilki ci znachennya ye krajnimi dlya viznachennya glibini u shkali vid 0 do 1 tobto ob yekt prisutnij ne prisutnij v cij tochci vidimogo prostoru Vinahid Z buferizaciyi pov yazuyut iz imenem Edvina Ketmella hocha sam proces vpershe opisav Volfgan Shtrasser Wolfgang Strasser u svoyij disertaciyi 1974 roku1 Na suchasnih komp yuternih 3D videokartah v procesi stvorennya zobrazhennya Z buferizaciya vikoristovuye znachnij ob yem dostupnoyi pam yati Tomu odnim iz golovnih zavdan dlya virobnikiv obladnannya staye zmenshennya vikoristannya pam yati Z buferom ne zmenshuyuchi pri comu yakosti zobrazhennya Tak odnim iz metodom Z Compression ye stisnennya j rozpakuvannya zobrazhennya buferu oskilki vono zajmaye menshe pam yati Inshim metodom ye Fast Z Clear shvidke ochishennya Z bufera Pislya pobudovi i vivedennya zobrazhennya na ekran informaciya sho rozmishuyetsya u Z buferi vzhe neaktualna tomu stirayetsya Z bufer obnulyayetsya ale vzhe ne zapisuyutsya okremi znachennya a vikoristovuyutsya bloki yaki zamishayut kilka znachen odrazu Vidsikannya nevidimih poverhonPerekrittya ob yektiv abo angl Z fighting U procesi vizualizaciyi vidsikannya nevidimih poverhon na osnovi glibini angl Z culling dozvolyaye zbilshiti produktivnist pri jogo renderingu prote ye dovoli resursomistkimi Ce pryamij naslidok Z buferizaciyi koli glibina kozhnogo pikselyu porivnyuyetsya iz glibinoyu nayavnoyi geometriyi za yakim vona mozhe buti prihovana Pri vikoristanni Z bufera piksel vidsikayutsya chi ne vidsikayutsya yak tilki staye vidomoyu jogo glibina ce dozvolyaye uniknuti proces teksturuvannya j osvitlennya togo pikselyu yakij mi ne bachimo v sceni za bud yakih obstavin Do togo zh znachni resursi sistemi yaki buli b potribni pri prorisovci pikselnih shejderiv yak pravilo ne vikonuyutsya dlya vidsichenih pikseliv Ce robit vidsikannya nevidimih poverhon horoshim kandidatom dlya optimizaciyi v situaciyah koli shvidkist teksturuvannya osvitlennya abo pikselnih shejderiv ye vuzkim miscem U toj chas Z buferizaciya dozvolyaye geometriyi sortuvati poligoni za rahunok zbilshennya glibini pri comu vikoristovuye algoritm zvorotnoyi palitri algoritm hudozhnika i dozvolyaye na kozhen ekrannij piksel vitrachati menshij chas Ce mozhe zbilshiti produktivnist v shvidkih scenah z velikoyu kilkistyu pererisovok ale take poyednannya iz Z buferizaciyeyu strazhdaye serjoznimi problemami takimi yak Poligoni poslidovno zakrivayut odin odnogo poligoni mozhut perekrivati odin odnogo trikutnik A zakrivaye V V zakrivaye S S zakrivaye A i nemozhlivo viznachiti najblizhchu do glyadacha tochku na trikutniku napriklad yaksho sortuvati trikutniki za centroyidom najblizhchoyu chi najviddalenishoyu tochkoyu to vse odno mozhliva situaciya sho A blizhchij nizh V ale trikutnik V povinen buti zobrazhenij pershim Takim chinom algoritm zvorotnoyi palitri ne mozhe buti vikoristanim yak alternativa do procesu vidsikannya nevidimih poverhon za vinyatkom optimizaciyi Dlya prikladu dlya optimizaciyi mi mozhemo otrimati poligoni sortovani u X Y koordinatah i Z glibinoyu sho zabezpechuye mezhu dlya shvidkogo viznachennya dvoh poligoniv sho mozhut perekrivati odin odnogo AlgoritmDano spisok poligoniv P1 P2 Pn Vihid kolorovij masiv sho pokazuye intensivnist vidobrazhennya poverhon poligona Vvedennya note z depth and z buffer x y is positive z buffer x y max depth and COLOR x y background color Pochatok for each polygon P in the polygon list do for each pixel x y that intersects P do Calculate z depth of P at x y If z depth lt z buffer x y then z buffer x y z depth COLOR x y Intensity of P at x y display COLOR array MatematikaDiapazon znachen glibini v prostori 3D proyekciya vizualizaciya znachen takih yak blizko n e a r displaystyle mathit near i dalekof a r displaystyle mathit far ta znachennyam z displaystyle z Pislya peretvorennya proyekciya perspektivi zminyuyetsya na novi znachennya z z displaystyle z na z displaystyle z ce viznachayetsya za formuloyu z f a r n e a r f a r n e a r 1 z 2 f a r n e a r f a r n e a r displaystyle z frac mathit far mathit near mathit far mathit near frac 1 z left frac 2 cdot mathit far cdot mathit near mathit far mathit near right Pislya cogo proyekciya otrimuye novi znachennya z displaystyle z abo z displaystyle z viznachayetsya za formuloyu z 2 z n e a r f a r n e a r 1 displaystyle z 2 cdot frac z mathit near mathit far mathit near 1 yaksho z displaystyle z maye stare znachennya z displaystyle z u prostori yiyi chasto nazivayut w displaystyle w abo w displaystyle w Otrimani znachennyaz displaystyle z urivnyuyut mizh znachennyam 1 ta 1 de n e a r displaystyle mathit near znachennya ploshini vid 1 ta f a r displaystyle mathit far ploshina yaka dorivnyuye 1 Znachennya za mezheyu cogo diapazonu ye tochkam nevidimogo prostoru tomu ne vidobrazhayutsya Vidobrazhennya neruhomoyi komi Yak pravilo vsi znachennya zberigayutsya u Z buferi videokarti v formati fiksovanoyi tochki Spochatku yih privodyat do bilsh zagalnih znachen 0 1 shlyahom zamini vidpovidnih peretvoren z 2 z 1 1 2 displaystyle z 2 frac left z 1 1 right 2 zgidno poperednoyi formuli z f a r n e a r 2 f a r n e a r 1 z f a r n e a r f a r n e a r 1 2 displaystyle z frac mathit far mathit near 2 cdot left mathit far mathit near right frac 1 z left frac mathit far cdot mathit near mathit far mathit near right frac 1 2 Nastupnim krokom zgidno navedenoyi vishe formuli ye mnozhennya S 2 d 1 displaystyle S 2 d 1 de d glibina Z bufera zazvichaj 16 24 chi 32 biti otrimanij rezultat okruglyuyetsya do cilogo chisla z f z 2 d 1 f a r n e a r 2 f a r n e a r 1 z f a r n e a r f a r n e a r 1 2 displaystyle z f left z right left lfloor left 2 d 1 right cdot left frac mathit far mathit near 2 cdot left mathit far mathit near right frac 1 z left frac mathit far cdot mathit near mathit far mathit near right frac 1 2 right right rfloor Cya formula mozhe buti obernenoyu i utvoryuye u rozrahunkah Z bufera tak zvanu zernistist pro yaku govorilos vishe Obernenim do cogo f z displaystyle f left z right z f a r n e a r z S f a r n e a r f a r S f a r n e a r z f a r n e a r f a r S displaystyle z frac mathit far cdot mathit near frac z S left mathit far mathit near right far frac mathit S cdot far cdot mathit near z left mathit far mathit near right far cdot S where S 2 d 1 displaystyle S 2 d 1 Rozdilna zdatnist Z bufera termin koli tochka oglyadu kamera otrimuye dodatkovi znachennya rezultativ minimalnih zmin i zberigaye yih u Z buferi yak znachennya 1 chi 1 Tomu rozdilna zdatnist mozhe buti rozrahovana z pohidnogo z displaystyle z as a function of z displaystyle z d z d z 1 1 S f a r n e a r z f a r n e a r f a r S 2 f a r n e a r displaystyle frac dz dz frac 1 cdot 1 cdot mathit S cdot far cdot mathit near left z left mathit far mathit near right far cdot S right 2 cdot left mathit far mathit near right Vizualizaciya tla ob yekta yavlyaye soboyu z displaystyle z by the above f z displaystyle f left z right d z d z 1 1 S f a r n e a r f a r n e a r S f a r n e a r z f a r f a r S 2 displaystyle frac dz dz frac 1 cdot 1 cdot mathit S cdot far cdot mathit near cdot left mathit far mathit near right left mathit S cdot left frac mathit far cdot mathit near z mathit far right far cdot S right 2 f a r n e a r z 2 S f a r n e a r displaystyle frac left mathit far mathit near right cdot z 2 S cdot mathit far cdot mathit near z 2 S n e a r z 2 S f a r displaystyle frac z 2 S cdot mathit near frac z 2 S cdot mathit far z 2 S n e a r displaystyle frac z 2 S cdot mathit near Ce pokazuye sho znachennya z displaystyle z zgrupovani shilnishe poruch z n e a r displaystyle mathit near ploshinoyu a dali vzhe ridshe ce daye zmogu otrimati bilshu tochnist blizhche do kameri Sho menshe n e a r f a r displaystyle mathit near mathit far spivvidnoshennya tim mensha tochnist n e a r displaystyle mathit near zadnogo tla ploshini oskilki chastinki rozmishuyutsya zanadto tisno voni stayut prichinoyu artefaktiv vizualizaciyi u viddalenih ob yektah U Z buferi virahovuyutsya znachennya i linijno interpolyuyutsya cherez ekrannij prostir mizh vershinami potochnogo bagatokutnik ci promizhni znachennya yak pravilo zberigayetsya v Z buferi u formati neruhomoyi komi Div takozhAlgoritm ScanlinePrimitkiThe OpenGL Organization Arhiv originalu za 20 chervnya 2010 Procitovano 1 listopada 2010 Gregory Massal Arhiv originalu za 3 serpnya 2008 Procitovano 3 serpnya 2008 DzherelaNote 1 see W K Giloi J L Encarnacao W Strasser The Giloi s School of Computer Graphics Computer Graphics 35 4 12 16