Vysoke´Ucˇenítechnicke´V Brneˇ Zobrazenístínu˚Ve Sce

Vysoke´Ucˇenítechnicke´V Brneˇ Zobrazenístínu˚Ve Sce

VYSOKE´ UCˇ ENI´ TECHNICKE´ V BRNEˇ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMACˇ NI´CH TECHNOLOGII´ U´ STAV POCˇ ´ITACˇ OVE´ GRAFIKY A MULTIME´ DII´ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA ZOBRAZENI´ STI´NU˚ VE SCE´ NEˇ S VYUZˇ ITI´M KNIHOVNY DIRECTX RENDERING OF SHADOWS IN A SCENE WITH DIRECTX DIPLOMOVA´ PRA´ CE MASTER’S THESIS AUTOR PRA´ CE Bc. JOZEF KOBRTEK AUTHOR VEDOUCI´ PRA´ CE Ing. JAN NAVRA´TIL SUPERVISOR BRNO 2012 Abstrakt Tato práce pojednává o metodách zobrazení stínù, jejich analýze a implementaci v rozhraní DirectX 11. Teoretická èást popisuje historický vývoj použití stínù v 3D aplikácích a jedno- tlivé algoritmy pro výpoèet stínù. V rámci práce jsou na demonstrační aplikaci porovnány z hlediska výkonu, nároènosti implementace a kvality výstupu 2 varianty algoritmu shadow mapping pro všesměrová světla - s využitím cube mappingu a parabolické projekce, každá s pěti různě optimalizovanými implementacemi. Abstract This work discusses shadowing methods, analyses them and describes implementation in DirectX 11 API. Theoretical part describes historical evolution of shadow usage in 3D appli- cations and also analyzes shadowing algorithms. This work compares 2 variants of shadow mapping algorithm for omnidirectional lights, based on cube mapping and paraboloid pro- jection, on demo application using quality, performance and implementation aspects. Klíčová slova DirectX, Direct3D, stínovací metody, shadow mapping, cube mapping, stínová tělesa, geo- metry shader Keywords DirectX, Direct3D, shadowing methods, shadow mapping, cube mapping, shadow volumes, geometry shader Citace Jozef Kobrtek: Zobrazení stínù ve scéně s využitím knihovny DirectX, diplomová práce, Brno, FIT VUT v Brně, 2012 Zobrazení stínù ve scéně s využitím knihovny DirectX Prohlášení Prohla¹uji, že jsem tento semestrální projekt vypracoval samostatně pod vedením pana Ing. Jana Navrátila ....................... Jozef Kobrtek 19. května 2012 Poděkování Chcel by som poďakova» vedúcemu Ing. Navrátilovi za neoceniteľnú pomoc a pripomienky, ktoré prispeli k skvalitneniu tejto práce. Taktiež ďakujem Matejovi Kolejákovi a Matejovi Smetanovi za zapožičanie hardware, na ktorom bolo možné prácu testova». c Jozef Kobrtek, 2012. Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informa- čních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů. Obsah 1 Úvod 2 2 Tiene v 3D aplikáciach 3 2.1 Historický vývoj . 3 2.2 Typy svetiel . 7 3 Tieňovacie algoritmy 9 3.1 Planar projection shadows . 9 3.2 Shadow mapping . 11 3.3 Shadow volumes . 16 4 Problém viditeľnosti 21 4.1 Obalové telesá . 21 4.2 View Frustum Culling . 22 5 Návrh a implementácia aplikácie 26 5.1 Návrh . 26 5.2 Implementácia . 26 6 Testy 39 6.1 Kvalitatívne porovnanie . 39 6.2 Testy výkonu . 41 7 Záver 48 A Pseudokód Welzlovho algoritmu 53 B Pseudokód výpoètu prieniku dvoch pohľadových telies 54 C Screenshoty z kvalitatívneho porovnania 55 C.1 512 x 512 . 55 C.2 1024 x 1024 . 56 C.3 2048 x 2048 . 57 C.4 4096 x 4096 . 58 D Obsah CD prílohy 59 E Použitie aplikácie 60 1 Kapitola 1 Úvod V realite by bolo ťažké si predstavi», že by predmety vystavené svetlu nevrhali tiene. Tiene sú práve to, èo nám dáva predstavu o polohe telies v priestore a ich vzájomnej polohe. Práve tento aspekt správania svetla sa snažíme uplatni» aj v 3D grafike. Výpoèet tieňov v počítačovej grafike je už dlhé roky predmetom skúmania, nakoľko ich spracovanie v 3D grafike v reálnom èase je sprevádzané nezanedbateľnou penalizáciou na výkone. Jedná sa o metódy poèítané globálne pre celú scénu a obvykle na niekoľko prechodov, preto musí by» kladený dôraz na ich efektívnu implementáciu. V tejto práci sú popísané a postupne implementované vybrané algoritmy pre zobrazova- nie tieňov v scéne, prièom sú zhodnotené ich vlastnosti, výkon a nároènos» implementácie v rozhraní DirectX 11. Pre tento úèel bolo treba vytvori» aplikáciu, ktorá tieto algotirmy implementuje, a pomocou ktorej by bolo možné vykona» merania a posudzova» kvalitu tieňov vytvorených jednotlivými metódami. Práca sa zameriava aj na porovnanie rozhraní DirectX ako proprietárneho ¹tandardu, a OpenGL ako otvoreného API, a to z hľadiska programátorského ako napr. zložitosť zápisu rovnakých algoritmov, a užívateľského - výkon algoritmu pod jedným èi druhým rozhraním èi veľkos» výsledných binárok. V úvode sa zameriavam na historický vývoj použitia tieňovacích metód vzhľadom na možnosti grafických adaptérov poèas ich vývoja - èi už prvotné s neprogramovateľnou pi- peline, alebo súèasné akcelerátory s programovateľným re»azcom. Sú tu taktiež popísané jednotlivé typy svetiel a ich vlastnosti. Kapitola číslo 2 analyzuje jednotlivé algoritmy zobrazovania tieňov, ich modofikácie èi varianty. Tretia kapitola popisuje analýzu a návrh aplikácie, požiadavky na jej funkènos» a výstup, ako aj problémy spojené s implementáciou v rozhraní DirectX, vrátane shaderov. Kvalitatívne a výkonnostné testy sú popísané v kapitole 6. Taktiež sú tu vyhodnotené výsledky jednotlivých meraní a porovnaní implementovaných metód. Záver práce hodnotí jednotlivé metódy na základe výsledkov meraní. 2 Kapitola 2 Tiene v 3D aplikáciach V tejto kapitole je popísaný vývoj použitia tieňov v hrách a 3D aplikácich v rôznych obdo- biach vývoja grafických akcelerátorov. V tradiènom poňatí syntézy obrazu ak označíme urèitú oblas», že sa nachádza v tieni, znamená to, že existuje urèitý povrch alebo teleso, ktoré sa nachádza medzi zdrojom svetla a sledovanou oblas»ou. Tieň neznamená nutne len tmav¹iu oblas» - v scéne sa môžu objavova» aj farebné tiene. Napr. ak máme v scéne dva zdroje svetla s rôznou farbou - pokiaľ jeden objekt vrhá tieň, stále môže do tieňa dopada» svetlo z druhého zdroja. [35] Obrázok 2.1: Tiene - terminológia, prevzaté z [32] Podľa toho, z ktorých zložiek tieň pozostáva, ich delíme na tvrdé (hard shadows) - len umbra, a mäkké - umbra aj penumbra. Výsledok závisí od použitého algoritmu pre výpoèet tieňov ako aj povahy svetelného zdroja. [2] 2.1 Historický vývoj Použitie tieňov v hrách aj v súèasnej dobe veľmi záleží od výkonu grafickej karty, nakoľko ich vykreslenie vyžaduje èasto niekoľko prechodov (ako bude popísané v ďalších kapitolách). Použitia tieňov v hrách by sa z historického hľadiska dalo rozdeli» na 2 obdobia - a to na akcelerátory s neprogramovateľnou pipeline od roku 1995, ktorý býva považovaný za zaèiatok éry grafikcých èipov pre hráèsky trh1, a na obdobie akcelerátorov s programovateľ- 1podľa: pctuning.cz/hardware/graficke-karty/4743-historie spolecnosti vyrabejicich 3d cipy-dil i-3dfx 3 ným grafickým re»azcom, datované od roku 2001 s vydaním kariet nVidia GeForce3 a ATi Radeon 8500 [19]. 2.1.1 Fixed-function pipeline (1995-2000) Pre akcelerátory z tohto obdobia je charakteristické: • Neprogramovateľná pipeline, grafické efekty tvorené len množnou parametrizovateľ- ných funkcií, ktoré boli implementované priamo v hardware [28] • Transformácie vrcholov realizované na CPU (s výnimkou GeForce 256 a GeForce2, ktoré podporujú T&L [30]) • Nemožnosť realizova» osvetlenie per-pixel, nakoľko grafická pipeline interpoluje farby počítané vo vrcholoch • Rendering do textúry je z hľadiska výkonu nároèná operácia (kvôli povahe zbernice), navy¹e nie každý akcelerátor ju podporuje [28, 11] Obrázok 2.2: Chronologický vývoj presunu operácii realizovaných procesorom na grafický akcelerátor, posledný stĺpec predstavuje GeForce 256, prevzaté z anandtech.com Ako vidno na obrázku 2.2, prvé akcelerátory urýchľovali iba rasterizáciu, napr. 3dfx Voodoo, neskôr sa procesor odľahčil aj od zostavovania primitív - medzi prvými napr. nVidia Riva 128. Neskôr pribudla možnosť aplikova» viacero textúr v jednom prechode (multitexturing) - nVidia Riva TNT2 [28]. Vyhľadom na relatívne nízky výkon akcelerátorov v tomto období (v podovnení s dne¹- kom) a chýbajúcou podporou v hardware a software boli dynamické tiene v hrách skôr raritou. Obrázok 2.3 demon¹truje implementáciu shadow mapping algoritmu s použitím 4 Obrázok 2.3: Shadow mapping v DirectX7, prevzaté zo software.intel.com DirectX7, no výkon takéhoto rie¹enia by bol pre hry nedostatoèný (11FPS na jednoduchej scéne), viď obrázok 2.3. Nakoľko pipeline neumožňovala výraznejšiu kontrolu osvetlenia, požívali sa tzv. light mapy. Sú to predpočítané ¹truktúry, ktoré uchovávajú osveltenie povrchu telesa. Autorom tejto metódy je John Carmack, prièom poprvýkrát bola táto technika použitá v hre Quake (1996). Táto metóda bola populárna najmä vďaka rastúcemu poètu grafických kariet pod- porujúcich multitexturing [34]. Obrázok 2.4: Aplikácia light mapy na textúru, prevzaté z [4] Dynamické tiene v hrách sa zaèali objavova» až koncom éry fixed-function pipeline. Jednou z najvýznamnejších je opäť dielo id Software a Johna Carmacka - Quake 3 Arena (1999), ktorá implementovala dynamické tiene algoritmom stencil shadow volumes vďaka stencil bufferu, ktorý pri¹iel so ¹tandardom DirectX verzie 6, viď obr. 2.5a. Tieňované v¹ak boli len niektoré objekty ako napr. bedne s nábojmi èi niektoré zbrane. Požívala sa tiež technika planar shadows, krotá spočíva v premietaní telesa na plochu, viď kapitola 3.1. 5 (a) Shadow volumes v Quake 3 Arena (b) Depth-fail shadow volumes v Doom 3 Obrázok 2.5: Tiene v hrách od id Software 2.1.2 Programovateľná pipeline (2001-súèasnos») Zaèiatok éry kariet s programovateľnou pipeline sa datuje do roku 2001, kedy boli uve- dené karty ATi Radeon 8500 a GeForce3 s podporou DirectX 8. Novinkou bola hardvérová podpora pre metódu

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    64 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us