VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ
|
|
- Veronika Soukupová
- před 8 lety
- Počet zobrazení:
Transkript
1 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA STÍNOVÁ TĚLESA V OPENGL BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR JAN SALVET BRNO 2013
2 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA STÍNOVÁ TĚLESA V OPENGL SHADOW VOLUMES IN OPENGL BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR JAN SALVET Ing. JIŘÍ HAVEL BRNO 2013
3 Abstrakt Práce se zabývá jednou konkrétní metodou tvorby stínů v počítačové grafice. Popisuje nejen její teoretické základy, ale také se zabývá možností praktické implementace využitím moderního rozhraní OpenGL. Součástí je testování výkonu několika variant této metody pomocí testovací aplikace. Z výsledků je jasně patrný přínos výpočtu této metody na grafické kartě. Abstract This thesis is focused on one particular method of shadowing in computer graphics. It not only describes basic theory, but also deals with actual implementation using modern OpenGL. It includes performance tests of several versions of this method using a testing application. The results show clear advantage of computing shadows on graphics card. Klíčová slova stíny v reálném čase, stíny, stínová tělesa, OpenGL, geometrické shadery Keywords real-time shadows, shadows, shadow volumes, OpenGL, geometry shaders Citace Jan Salvet: Stínová tělesa v OpenGL, bakalářská práce, Brno, FIT VUT v Brně, 2013
4 Stínová tělesa v OpenGL Prohlášení Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením pana Ing. Jiřího Havla Jan Salvet 15. května 2013 Poděkování Zde bych chtěl poděkovat vedoucímu mé práce, panu Ing. Jiřímu Havlovi, za odbornou pomoc, poskytnutí zdrojů a připomínek při tvorbě této práce. c Jan Salvet, 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ů.
5 Obsah 1 Úvod 3 2 Stíny v počítačové grafice Stínové mapy Stínová tělesa Tvorba stínového tělesa Depth pass Depth fail Stínová tělesa v OpenGL Nahrávání dat OpenGL pipeline Vertex shader Geometry shader Culling Fragment shader Stencil test Depth test Blending Počítání stínových těles na grafické kartě Příprava dat Geometry Shader Osvětlovací model Návrh řešení testovací aplikace Použité knihovny Vstupní data Ovládání programu Inicializace Průběh vykreslování Testování Testovací sestavy Sestava 1: Desktop Sestava 2: Notebook Testovací scény Scéna 1: Čajové konvice Scéna 2: Konferenční místnost
6 5.2.3 Scéna 3: Drak Výkon v závislosti na instrukční sadě Výkon v závislosti na využití grafické karty Výkon na starší sestavě Rozdíl výkonu mezi depth pass a depth fail Srovnání všech naměřených výsledků Závěr 26 A Obsah CD 28 B Manuál 29 C Plakát 30 2
7 Kapitola 1 Úvod Stíny patří k nejdůležitějším součástem vizuálního vnímání světa. Umožňují lidem rychle rozeznat vzdálenost a hloubku fyzických předmětů. Také nám poskytují důležité informace o předmětech, které zrovna leží mimo naše zorné pole. Každá scéna postrádající stíny vypadá uměle. Proto pro vytvoření co nejuvěřitelnější iluze reality jsou stíny v počítačové grafice nepostradatelným prvkem. Pro počítačovou grafiku v reálném čase je nejčastěji používána rasterizace. Ta ale na rozdíl od například ray tracingu sama o sobě neřeší problém stínů. Tento nedostatek byl vyřešen dvěma specifickými metodami. Od doby, kdy byly tyto algoritmy pro počítání stínů poprvé navrženy, už uplynulo hodně času a postupně byly zdokonalovány. Dnes je možné počítání stínových těles úplně přesunout na grafickou kartu. Vzhledem k tomu, že výkon grafických procesorů roste mnohem rychleji než výkon univerzálních procesorů, je tato možnost v poslední době velmi zajímavá. V této práci jsem se zaměřil na možnosti vykreslování stínů pomocí stínových těles na moderním hardwaru a porovnání jejich výkonu. V kapitole 2 se nachází srovnání dvou nejrozšířenějších algoritmů pro vykreslování stínů: stínových map a stínových těles. Poté je podrobně popsán pouze algoritmus stínových těles, který je předmětem této práce. Jsou zde vysvětleny základní předpoklady pro funkčnost algoritmu a také se tady nachází podrobný popis jeho dvou variant. Obsahem kapitoly 3 je popis implementace algoritmu stínových těles na grafické kartě a souvisejících součástí pomocí rozhraní OpenGL. Jsou zde vysvětleny základy přístupu k datům na grafické kartě a jejich reprezentace. Součástí této kapitoly je také přehled vykreslovacího řetězce v OpenGL a popis jeho částí využívaných v implementovaném algoritmu. Také je popsán vliv stínů na použitý osvětlovací model. Kapitola 4 obsahuje návrh řešení testovací aplikace. Jsou zde uvedeny použité technické prostředky pro implementaci. Také je tady popsán formát vstupních a výstupních dat. V kapitole 5 je popsáno testování a jeho vyhodnocení. Je zde uvedena testovací metodika, která se skládá ze sady testů na dvou testovacích systémech. Jsou zde uvedeny výsledky testů. 3
8 Kapitola 2 Stíny v počítačové grafice V počítačové grafice existují dvě základní metody pro vykreslování stínů: Stínové mapy (shadow mapping) Stínová tělesa (shadow volume) Základy pro obě metody byly položeny přibližně ve stejné době [2] [12]. Obě metody dokážou podávat porovnatelné výsledky, ale také mají různé odlišnosti a omezení. 2.1 Stínové mapy Stínové mapy fungují tak, že se nejdříve vykreslí scéna z pohledu světla do hloubkové mapy. Pro směrová a bodová světla stačí jediná stínová mapa, všesměrová světla navíc vyžadují několik stínových map pro pokrytí všech vyzařovaných směrů. Po vykreslení scény do hloubkové mapy hodnota vzdálenosti fragmentu od světla se přibližně rovná údaji v hloubkové mapě. Poté se vykreslí scéna z pohledu kamery a pro každý fragment se porovnává vzdálenost tohoto fragmentu od světla s hodnotou uloženou v hloubkové mapě. Pokud je větší, tak se tento fragment nachází ve stínu. V opačném případě je osvětlen. Jak může taková hloubková mapa vypadat lze vidět na obrázku 2.1(a), s výsledek na obrázku 2.1(b). Výhodou této metody je, že neklade žádné podmínky na geometrii scény. Nevýhodou je, že kvalita výsledných stínů závisí na velikosti hloubkové mapy, větší stínová mapa také vyžaduje více paměti na grafické kartě. Také může přesnost trpět, pokud jsou stíny vrhány pod určitými úhly. Podle [11] může nevhodné zobrazení stínové mapy také způsobovat artefakty. S menším rozlišením může být viditelný aliasing, viz obrázek 2.2. Zvyšovat rozlišení ale není možné donekonečna kvůli paměťovým nárokům a omezením velikosti textur na grafických kartách. Základní stínové mapy mají ostré hrany. Existují také vylepšené metody, které se snaží zakrýt aliasing rozmazáním hran a vytvořit dojem měkkých stínů. Mezi tyto metody patří například Percentage-Closer Soft Shadows [6]. Principem této techniky je fakt, že stíny dále od stínícího předmětu jsou více rozmazané. Další metodou je například Variance Shadow Mapping [3]. 2.2 Stínová tělesa Stínová tělesa vytváří ostré stíny, které jsou přesné na pixely. Světla mohou být bodová nebo směrová. Každý předmět ve scéně může být osvícen více světly a může tedy vrhat více 4
9 (a) Obsah hloubkové mapy (b) Výsledné stíny Obrázek 2.1: Příklad stínové mapy [11] stínů. Pro každý zdroj světla a předmět ve scéně, který vrhá stín, je vytvořeno jedno stínové těleso, které rozděluje prostor na dvě části: ta která je osvětlená, a ta která je ve stínu. Algoritmus si lze představit tak, že vedeme paprsky od kamery směrem k objektům ve scéně. Pro každý pixel uchováváme počítadlo průchodů přes stínová tělesa. Při průchodu paprsku přední a zadní stěnou přičteme nebo odečteme jedničku, v závislosti na konkrétní variantě algoritmu. V počítačové grafice v reálném čase je tato technika nejčastěji implementována pomocí stencil bufferu. Existuje více variací této metody, všechny ale mají v základu stejný postup, jak je popsán algoritmem 1. Stencil buffer funguje v součinnosti s color a depth bufferem jako jejich maska. Je do něj možné vykreslovat objekty, ale ty se přímo na grafickém výstupu neobjeví. Každý vykreslený trojúhelník může v závislosti na vybraném režimu buď inkrementovat, nebo dekrementovat hodnotu v daném pixelu. Pro naše účely se nejvíc hodí možnost měnit hodnotu zvlášť pro přední a zadní hrany stínového tělesa. Pokud to hardware podporuje, je možné sloučit oba kroky vykreslování předních a zadních stěn do jednoho a tedy vykreslit celé stínové těleso v jediném průchodu. Algoritmus 1: Obecný algoritmus pro stínová tělesa vykresli scénu jako by byla celá ve stínu; for každý zdroj světla do ve stencil bufferu vytvoř masku, která je průhledná v oblastech, které nejsou ve stínu; vykresli všechny předměty s použitím připravené masky, použij aditivní míchání pro přičtení vykreslené scény do výsledku; end 5
10 Obrázek 2.2: Příklad aliasingu stínové mapy [5] Tvorba stínového tělesa Naivní přístup vytvoření stínového tělesa by byl vytvořit z každého trojúhelníku, který je přivrácen ke světlu, vlastní stínové těleso. Takový postup by ale vytvořil ohromné množství trojúhelníků a obrovskou zátěž na fill rate grafické karty, viz obrázek 2.3(c). Proto se používá algoritmus, který nejdřív určí silueta tělesa z pohledu světla, a až ten se poté použije k vytvoření samotného stínového tělesa. To způsobí velmi výraznou redukci počtu trojúhelníků jak je vidět na obrázcích 2.3(a) a 2.3(b). Na obrázku 2.4 je zobrazen příklad stínového tělesa vytvořeného pro krychli. Zelené hrany znázorňují siluetu tělesa. Hrany tvořící siluetu se dají poznat tak, že jeden přilehlý trojúhelník je přivrácen ke světlu a druhý nikoliv. Směr trojúhelníku jde vypočítat skalárním součinem normály a vektoru ke světlu. Pokud je hodnota skalárního součinu záporná, trojúhelník je odvrácený od světla, v opačném případě je přivrácený. Dále se tyto hrany siluety použijí k vytvoření čtyřúhelníků, které poté vytvoří stínové těleso. Pro každou hranu se vezmou původní dva body a přidají se k nim další dva, které vzniknou jejich posunutím do nekonečna ve směru paprsku světla. Pro algoritmus depth pass toto neuzavřené stínové těleso stačí. Pro depth fail je třeba ještě přidat přední a zadní stěnu. Ta se dá vytvořit z trojúhelníků, které jsou přivrácené k světlu a jejich posunutím do nekonečna Depth pass Depth pass je starší metoda, která je rychlejší než novější depth fail. Na rozdíl od druhé jmenované metody, tato si vystačí s jednoduššími stínovými tělesy. Tato výhoda je vykoupená jedním velmi podstatným omezením. To nastává, pokud se kamera nachází uvnitř stínového tělesa. Algoritmus počítá počet předních a zadních stěn stínových těles před vykreslovaným objektem. Pokud se mezi kamerou a objektem nachází více předních stěn, tak tento bod leží ve stínu. Pokud je počet předních a zadních stěn stejný, tak daný bod leží mimo stín. Jak je vidět na obrázku 2.5(a), algoritmus funguje správně, pokud se kamera nachází 6
11 (a) Depth pass trojúhelníků (b) Depth fail trojúhelníků (c) Naivní algoritmus trojúhelníků Obrázek 2.3: Stínová tělesa zobrazena jako drátový model a počty jejich trojúhelníků vně stínového tělesa. Samotné stínové těleso je znázorněno šedou barvou. Stínící objekt je zvýrazněn zeleně. Paprsky s nulovou hodnotou leží mimo stín, oblasti ve stínu mají nenulovou hodnotu. Problém nastane, pokud se kamera nachází uvnitř stínového tělesa. Tento případ je znázorněn na obrázku 2.5(b). Paprsek, který by měl dopadat mimo stín, má nenulovou hodnotu, a bude se tedy nesprávně jevit jako by dopadal na místo ve stínu. Další paprsek, který neprojde žádnou hranou stínového tělesa, bude mít nulovou hodnotu, a daný pixel bude nesprávně vyhodnocen jako by byl osvětlený. Tento problém řeší algoritmus depth fail Depth fail Depth fail byl poprvé zpopularizován hrou Doom 3. Byl patentován ve firmě Creative Labs [1]. Nezávisle jej objevil John Carmack při vývoji hry Doom 3. Tento algoritmus řeší problém, kdy se kamera nachází uvnitř stínového tělesa. Na rozdíl od algoritmu zmíněného v předchozí části se do stencil bufferu zapisuje pouze pokud depth test selže. To nastane v případě, když se v tomto místě stínové těleso nachází za vykreslovaným objektem. Dalším rozdílem je, že se převrátí inkrementování/dekrementování hodnoty stencil bufferu při průchodu paprsku přední/zadní stěnou stínového tělesa. Jak je vidět na obrázku 2.6, paprsek který dopadá na místo mimo stín, má nulovou hodnotu a správně je tedy osvětlený. Průchod zadní hranou stínového tělesa v tomto případě hodnotu stencil bufferu nemění, protože podmínkou je selhání depth testu. To nastává pouze pokud se po cestě paprsku stínové těleso nachází za vykreslovaným objektem. Aby algoritmus správně fungoval, musí stínové těleso navíc také obsahovat přední a zadní stěnu. 7
12 Obrázek 2.4: Model krychle se zeleně zvýrazněnými hranami siluety a stínové těleso, které odpovídá těmto hranám. Algoritmus 2: Depth pass algoritmus tvorba masky zapni vykreslování pouze do stencil bufferu; for každé stínové těleso do nastav vykreslování pouze předních stěn; nastav režim stencil bufferu na přičítání pokud se depth test povede (tedy pokud daná hrana stínového tělesa leží před objektem); vykresli stínové těleso; nastav vykreslování pouze zadních stěn; nastav režim stencil bufferu na odčítání pokud se depth test povede; vykresli stínové těleso; end -1 a -1 a b +1 b (a) Kamera leží vně stínového tělesa. Paprsek a směřuje do oblasti mimo stín. Protíná stínové těleso v přední (inkrementace) a zadní (dekrementace) stěně. Paprsek b směřuje do oblasti ve stínua a prochází pouze přední stěnou. (b) Kamera lěží uvnitř stínového tělesa. Dochází k špatnému vyhodnocení stínů. Paprsek a projde pouze zadní stěnu stínového tělesa, čímž dekrementuje hodnotu. Obrázek 2.5: Depth pass algoritmus 8
13 Algoritmus 3: Depth fail algoritmus tvorba masky zapni vykreslování pouze do stencil bufferu; for každé stínové těleso do nastav vykreslování pouze zadních stěn; nastav režim stencil bufferu na přičítání pokud depth test selže (tedy pokud daná hrana leží za objektem); vykresli stínové těleso; nastav vykreslování pouze zadních stěn; nastav režim stencil bufferu na odčítání pokud depth test selže; vykresli stínové těleso; end a b +1 Obrázek 2.6: Depth fail algoritmus Kamera leží uvnitř stínového tělesa. Na rozdíl od depth pass je ale stín vyhodnocen správně. Paprsek a protíná stěnu stínového tělesa před vykreslovaným objektem, tedy hodnota se nemění. Paprsek b protíná zadní stěnu stínového tělesa v nekonečnu. Protože jej protíná až za objektem, je hodnota inkrementována. 9
14 Kapitola 3 Stínová tělesa v OpenGL 3.1 Nahrávání dat Ve starších verzích OpenGL se používal tzv. immediate mód. Ten fungoval tak, že se v každém snímku zasílaly data vrcholů mezi voláními funkcí glbegin a glend. Tento přístup má výhodu, že je jednoduchý na pochopení, ale velkou nevýhodou je nízký výkon z důvodu vysoké režie. Tímto způsobem totiž data nemohou být trvale uložena v paměti grafické karty, ale musí tam být po každém zavolání glend znovu přesunuta. Vylepšenou verzí předchozího postupu je Display List. Ten si lze představit tak, že vezme jednou zavolanou sekvenci příkazů mezi voláními funkcí glbegin a glend, zkompiluje je a uloží do paměti grafické karty. Pozdější zavolání Display Listu má stejný výsledek jako postupné volání jednotlivých příkazů. Výhodou je vyšší rychlost oproti prostému opakování sekvence příkazů v každém snímku. Nevýhodou je, že jakmile je Display List vytvořen, tak už jej nelze nijak změnit. Také vrcholy, které jsou sdíleny mezi více primitiva, jsou uloženy a zpracovány vícekrát, ačkoliv by je stačilo reprezentovat pouze jednou. Obě předchozí metody byly v novějších verzích OpenGL (po verzi 3.0) označeny za zastaralé a později dokonce odstraněny (ve verzi 4.0). Nyní je preferovanou cestou Vertex Buffer Object (dále jen VBO) a Vertex Array Object (dále jen VAO). VBO slouží k ukládání dat vrcholů do velmi rychlé paměti grafické karty, čímž se zvyšuje rychlost vykreslování a zároveň se snižuje zátěž procesoru. VBO reprezentuje pole hodnot daného datového typu. VAO poté slouží k zapouzdření VBO společně s atributy popisující formát grafických primitiv [14]. Aby se nemusely vrcholy, které jsou sdíleny mezi více primitivy ukládat a poté transformovat vícekrát, lze je uložit pouze jednou a potom na ně pouze odkazovat. K tomu slouží dva typy VBO: GL_ARRAY_BUFFER slouží k ukládání samotných vrcholů GL_ELEMENT_ARRAY_BUFFER slouží k ukládání indexů do výše uvedeného pole, jinak se občas používají názvy index buffer nebo element buffer. 3.2 OpenGL pipeline V moderním OpenGL je vykreslovací řetězec programovatelný. To znamená, že ho lze ovládat programy, které se nazývají shadery. V OpenGL se pro ně konkrétně používá jazyk GLSL. Jedná se o vysokoúrovňový jazyk syntaxí podobný jazyku C. 10
15 Vykreslování v moderním OpenGL se skládá z několika kroků: 1. provedení vertex shaderu 2. provedení teselačních shaderů (volitelné) 3. provedení geometry shaderu (volitelné) 4. clipping a culling 5. rasterizace 6. provedení fragment shaderu 7. další operace s fragmenty Pro naše účely jsou důležité zejména následující části Vertex shader Každý vrchol je zpracován vertex shaderem. Výstupem je transformovaný vrchol. Nelze přidávat nové primitiva. Výstupem je stejný počet vrcholů jako je počet vstupních. V této fázi se obvykle provádí transformace a promítání do požadovaného zobrazení Geometry shader Na rozdíl od vertex shaderu umožňuje přidávat nová primitiva. Pro jedno vstupní primitivum dokáže vytvořit 0 nebo více výstupních primitiv. Tento shader je volitelný a vůbec nemusí být použit. Pro naše účely se bude hodit pro efektivní vytváření stínových těles přímo na grafické kartě Culling Pokud se scéna skládá pouze z uzavřených neprůhledných povrchů, tak ty mnohoúhelníky, které jsou odvráceny od pozorovatele, nebudou nikdy vidět. Tato funkce tedy umožňuje je nikdy nevykreslit a ušetřit čas. Natočení daného mnohoúhelníku je určeno tím, jestli se jeho vrcholy při vykreslení na obrazovku zobrazí ve směru nebo proti směru hodinových ručiček. V OpenGL se ve výchozím nastavení předpokládají mnohoúhelníky proti směru hodinových ručiček jako obrácené k pozorovateli [13]. Pro naše účely se nám tato funkcionalita bude hodit pro odlišení vykreslování předních a zadních stěn stínových těles Fragment shader Pro každý pixel vykreslených grafických primitiv vytvořených v předchozích krocích je vytvořen fragment. Vstupní hodnoty fragment shaderu jsou vytvořené interpolací hodnot pro jednotlivé vrcholy. Výstupem je barva a hloubka daného fragmentu. Pro použité Phongovo stínování je v tomto kroku třeba znát interpolovanou normálu povrchu, vektor směru světla a hodnoty jednotlivých složek Phongova osvětlovacího modelu. 11
16 3.2.5 Stencil test Stencil hodnota fragmentu je porovnána s hodnotou ve stencil bufferu. Pokud test selže, fragment je zahozen Depth test Hodnota hloubky je porovnána s předchozí hodnotou v hloubkovém bufferu. Pokud test selže, fragment je zahozen Blending Umožňuje míchat barvu fragmentu s předchozí barvou v framebufferu. Pro naše účely se hodí nastavit aditivní míchání a vykreslovat scénu ve více průchodech pro každý zdroj světla. 3.3 Počítání stínových těles na grafické kartě Příprava dat Pro zjištění, které z hran tělesa jsou součásti siluety a má z nich tedy být vytvořeno stínové těleso, je třeba znát nejen samotné vrcholy, z kterých se trojúhelníky skládají, ale také je nutné mít přístupné jejich sousedy Obrázek 3.1: Reprezentace trojúhelníku se sousedními vrcholy [8] K tomuto účelu je v OpenGL určeno primitivum GL_TRIANGLES_ADJACENCY. Na rozdíl od základního GL_TRIANGLES, které se skládá z 3 vrcholů, toto obsahuje rovnou 6. Dodatečné 3 vrcholy odkazují na sousední trojúhelníky. Pro samotné zpracování se nic nemění kromě Geometry Shaderu, kde lze pro každý vstupní trojúhelník získat jeho 3 sousedy. Pokud jsou modely ve scéně za běhu statické, lze tyto data spočítat jenom jednorázově před načítáním modelů do VBO. Na obrázku 3.1 jsou znázorněny jednotlivé vrcholy a jejich odpovídající indexy. Ačkoliv by se mohlo zdát, že použití tohoto primitiva by mohlo výrazně zvýšit paměťovou náročnost, opak je pravdou. Díky použití index bufferu jsou vrcholy uloženy pouze jednou. Ukládání sousedů tedy pouze zdvojnásobí velikost index bufferu (je třeba ukládat 6 prvků místo 3). V případě, že na dané hraně nemá trojúhelník žádného souseda, je tato skutečnost zakódována do čtvrté složky homogenní souřadnice. Obyčejné souřadnice vrcholu se skládají z uspořádané čtveřice (x, y, z, w), kde w = 1. Chybějící soused je potom uložen jako speciální vrchol s w = 0. 12
17 3.3.2 Geometry Shader Po dokončení načtení scény jsou všechny potřebné datové struktury načteny v paměti karty a je možné je vykreslit. Po zpracování vrcholů vertex shaderem jsou poslány do geometry shaderu. Pro vytváření stínových těles na grafické kartě byl použit referenční algoritmus [8]. Ten se provádí pro každý trojúhelník zvlášť. Vstupem je trojúhelník se sousedními vrcholy, jak je zobrazen na obrázku 3.1. Dalším vstupním vektorem je pozice světla. Výstupem je trojúhelníkový pás (triangle strip). Maximální počet výstupních vrcholů je 18: 3 vrcholy pro přední stěnu (pouze depth fail) 3 vrcholy pro zadní stěnu (pouze depth fail) 4 3 vrcholů pro boční stěny Zpracovávají se pouze trojúhelníky, které jsou obráceny ke světlu. Nejprve se spočítají normálové vektory trojúhelníku v jeho vrcholech. V závislosti na znaménku skalárního součinu mezi vektorem zdroje světla a normály lze zjistit orientaci trojúhelníku k světlu. Pokud je alespoň v jednom ze tří vrcholů natočen ke světlu, tak je trojúhelník považován za otočený ke světlu a algoritmus pokračuje dál. V geometry shaderu je možné v jednom průchodu vytvořit více samostatných primitiv. Zavoláním funkce EmitVertex způsobí vytvoření nového vrcholu. Vzhledem k použitému výstupnímu režimu trojúhelníkového pásu lze jednoduše vytvářet trojúhelníky i čtyřúhelníky. Po vytvoření požadovaného počtu vrcholů se zavoláním funkce EndPrimitive ukončí zadávání bodů a výstupní primitivum je vytvořeno. Pokud se používá depth fail, tak se nejdřív vykreslí přední a zadní strany stínového tělesa. Přední stěna je samotný zpracovávaný trojúhelník. Zadní stěna vznikne jeho posunutím ve směru světla do nekonečna. Toho je dosaženo využitím jedné vlastnosti homogenních souřadnic. Homogenní souřadnice udávající pozici v prostoru mají w = 1. Souřadnice udávající směr mají w = 0. Pro zobrazení vrcholu v nekonečnu tedy stačí spočítat vektor směru mezi světlem a posunovaným vrcholem a z něj vytvořit homogenní souřadnici přidáním složky w = 0. Dalším problém souvisí s projekční maticí. Ta obvykle používaná způsobuje ořezání všech vrcholů ležících za far plane 1. Řešením je buď použití OpenGL rozšíření nebo speciální projekční matice, tak aby vrcholům zobrazeným v nekonečnu byla přiřazena maximální možná hloubka z = 1 [4]. Nevýhodou je, že tento přístup mírně sníží přesnost hloubkového bufferu. Následuje iterování nad třemi hranami trojúhelníku. Pro každou hranu jsou zjištěny její dva body a jeden bod sousedního trojúhelníku. Poté proběhne vytvoření stěny stínového tělesa. To nastává pouze pokud je daná hrana siluetou, tedy pokud se nachází na rozhraní stínu a světla, nebo pokud hrana nemá žádného souseda. 3.4 Osvětlovací model Použitým osvětlovacím modelem je Phongův osvětlovací model [9]. Ten byl implementován s využitím Phongova stínování. Na rozdíl od Goraudova stínování jsou normály interpolovány a barvy pixelů jsou vypočítány ve všech pixelech trojúhelníku. Výpočet barevné intenzity se skládá z několika složek: 1 vzdálená rovina 13
18 ambientní složka Představuje světlo, které je stejné ve všech směrech nezávisle na vzájemné poloze pozorovatele a zdroje světla. Intenzita je tedy vždy konstantní. difúzní složka Představuje světlo, které se odráží od povrchu do všech směrů rovnoměrně. Intenzita závisí na vzájemné poloze normálového vektoru povrchu a světla. složka odlesků Představuje světlo, které se odráží od lesklých povrchů přibližně ve stejném směru. Závisí na směru světla a pozici povrchu. Dále také na hodnotě exponentu, který udává míru lesklosti materiálu. Výsledná intenzita je vypočítána vynásobením jednotlivých složek intenzit a koeficientů materiálu. Ty jsou zadány pro každou barevnou složku modelu RGB zvlášť. Vykreslování probíhá ve více průchodech. Nejprve je vykreslena celá scéna pouze v ambientním osvětlením. To také rovnou naplní hloubkový buffer správnými hodnotami, které poté budou použity k určení, zdali se stínové těleso nachází před nebo za vykreslovaným povrchem. V dalším průchodu je na místech, která nejsou ve stínu, aditivním mícháním vykreslena difúzní i odlesková složka. Tímto způsobem lze vykreslit libovolný počet světel. Obrázek 3.2: Phongův osvětlovací model v testovací aplikaci 14
19 Kapitola 4 Návrh řešení testovací aplikace Pro účely testování výkonu byla napsána testovací aplikace implementující různé varianty algoritmu stínových těles. Aplikace byla napsána v programovacím jazyce C++ ve verzi C++11. Rozhraní pro práci s grafickou kartou je OpenGL, konkrétně ve verzi OpenGL 3.3 Core Profile [10]. 4.1 Použité knihovny Na vytvoření okna a OpenGL kontextu byla využita open-source knihovna GLFW 1. Zvolena byla z důvodu jednoduchého rozhraní, podpory pro vytváření OpenGL 3.2+ kontextů, multiplatformnosti a snadného čtení vstupů z myši a klávesnice. Pro počítání s maticemi a vektory na procesoru byla použita knihovna GLM 2. Tato knihovna implementuje stejnou funkcionalitu, která je součástí jazyka GLSL. Konkrétně je využita při počítání transformačních matic a pro vytváření stínových těles na procesoru. Načítání OpenGL rozšíření bylo implementováno za pomocí knihovny GLEW 3. Na zpracování parametrů programu byla použita knihovna Program_options ze skupiny knihoven Boost 4. Při vývoji byly výše uvedené knihovny použity v těchto verzích: GLM GLFW GLEW Boost.Program_options Vstupní data Pro načítání vstupní scény byl implementován import z formátu Wavefront.OBJ. Celá scéna je uložená v textovém souboru.obj. Díky tomuto lze jednoduše implementovat import. Součástí je také soubor.mtl, který obsahuje použité materiály. Další výhodou je možnost
20 Obrázek 4.1: Scéna s konferenční místností otevřená z programu Blender vytváření a přípravy scény použitím exportu do tohoto formátu v programu Blender 5, viz obrázek 4.1. Formát.obj je čistě textový formát, který se skládá z příkazů, každý na samostatném řádku. V jednom souboru se může nacházet několik objektů. Ty jsou popsány množinami vrcholů a stran. Každý objekt začíná příkazem o následovaný mezerou a názvem objektu. Poté následují jednotlivé vrcholy. Ty začínají příkazem v následovaným třemi čísly s desetinnou čárkou, které reprezentují trojici souřadnic x, y, z vrcholu. Po všech vrcholech objektu následují jednotlivé stěny. Ty můžou být složeny ze trojúhelníků nebo čtyřúhelníků. Stěny jsou zadány pomocí číselných indexů, které odkazují na dříve zadané vrcholy. Čtyřúhelníky jsou při importu automaticky rozděleny na dva trojúhelníky. Příkaz usemtl následovaný názvem materiálu přiřadí aktuálnímu objektu materiál s daným názvem. Ostatní příkazy jsou ignorovány. Formát.mtl slouží k popisu vlastností materiálů. V testovací aplikaci slouží k nastavení parametrů Phongova osvětlovacího modelu. Jednotlivé materiály začínají příkazem newmtl následovaným názvem materiálu. Tento název se používá k přiřazení materiálu v souboru.obj. Akceptované příkazy parametrů materiálu jsou: Ka ambientní odrazivost, tři čísla v rozsahu 0.0 až 1.0 udávající složky RGB modelu Kd difúzní odrazivost, tři čísla v rozsahu 0.0 až 1.0 udávající složky RGB modelu Kd odrazivost odlesků, tři čísla v rozsahu 0.0 až 1.0 udávající složky RGB modelu Ns hodnota exponentu v rovnici odlesku, jedno číslo
21 4.3 Ovládání programu Program dokáže běžet ve dvou režimech. První režim umožňuje volný pohyb scénou. To je umožněno implementací kamery ve stylu first-person stříleček. Ovládání je myší a klávesnicí. Pro pohyb slouží klávesy WASD. Na standardní výstup se vypisuje každou sekundu rychlost vykreslování snímků. Přepínaní mezi depth pass a depth fail je možné klávesou mezerník. Změna mezi počítáním stínových těles na procesoru a grafické kartě je možná klávesou Enter. Klávesou Delete je možné aktivovat vykreslování hran stínových těles. Druhý režim slouží k provádění testů. Kamera je zde pevně uzamčena. Program běží 10 sekund a poté se ukončí a na standardní výstup se vypíše naměřený počet snímků a průměrná rychlost vykreslování jednoho snímku. Použitý režim tady nelze měnit za běhu, to lze pouze pomocí argumentů příkazové řádky. 4.4 Inicializace Při spuštění aplikace jsou zpracovány parametry příkazové řádky. Poté je provedena inicializace OpenGL kontextu a vytvoření okna. Následně se provede načtení vybrané scény. Celá scéna je zapouzdřena v objektu Scene. Pro načítání scény z formátu.obj se používá třída SceneLoader. Ta načte a zpracuje vstupní soubor a uloží jej do instance třídu Scene. Po dokončení načtení scény jsou ještě vypočítány normálové vektory ve vrcholech. Dále je ještě spočítáno pole sousedních trojúhelníků. Jako datové struktury pro ukládání polí vrcholů a trojúhelníků jsou použity kontejnery vector z C++ STL 6. Vrcholy jsou ukládány jako homogenní souřadnice v datovém typu glm::vec4. Ten umožňuje díky knihovně GLM nad nimi provádět matematické operace. Výhodou použití kontejneru vector a vektorů z GLM je dynamická alokace paměti a jednoduchá možnost nahrání celého pole do paměti grafické karty. Tento kontejner totiž používá spojité místo v paměti pro ukládání jednotlivých položek. Použitá třída vektorů není v paměti nic jiného, než čtveřice čísel s pohyblivou desetinnou čárkou. Zavoláním metody vector::data() lze získat ukazatel na začátek pole. Ten lze poté použít pro nahrání celého pole do VBO grafické karty. Pro ukládání materiálů v asociativním poli je použita hashovací tabulka map. Index buffer je také vector datového typu unsigned int, čímž je umožněno používat modely s až 2 32 vrcholy. Jednotlivé objekty ve scéně jsou uloženy v instancích třídy Object. Ta kromě ukládání pole vrcholů, normál a trojúhelníků zprostředkovává inicializaci a úklid VBO bufferů. Po naplnění pole vrcholů a indexů se zavolají metody calculatenormals a calculateadjacency. První zmiňovaná metoda vypočítá normály a druhá zjistí sousední trojúhelníky. Nakonec je zavolána metoda Object::update, která způsobí nahrání všech polí objektu pomocí VBO do paměti grafické karty. Tímto je načítání daného objektu hotové. 4.5 Průběh vykreslování Aplikace implementuje obě varianty stínových těles depth fail a depth pass. Tvorba stínových těles je implementována identickým algoritmem na grafické kartě i procesoru. Vykreslování scény probíhá v nekonečné smyčce, dokud není přerušeno uživatelem, nebo dokud neskončí měření výkonu. Před samotným vykreslením scény je nejdříve vypočítán 6 Standard Template Library standardní knihovna šablon 17
22 nový stav v závislosti na uplynulém čase od spuštění programu. To je provedeno metodou Scene::update. Tato metoda provádí pohyb světel po kružnicové trajektorii. Vykreslení jednoho snímku scény je implementováno v metodě Scene::draw. Na začátku jsou vymazány používané buffery tedy stencil, depth a color. Poté je vypočítána pozice a natočení kamery. Z té je poté vznikne transformační matice. Tato matice se poté používá ve všech krocích vykreslování. Prvním krokem je vykreslení ambientního světla. To je část světla, která na vykreslované těleso dopadá ze všech směrů rovnoměrně. Použitý fragment shader je tedy velmi jednoduchý, všechny vykreslené fragmenty mají konstantní barvu. Každý objekt ve scéně stačí vykreslit pouze jednou nezávisle na počtu světel. Také se provede zápis hloubky do depth bufferu. Toho se využije v další fázi pro zjištění, zdali se stínové těleso nachází před nebo za vykreslovaným objektem. Další dva kroky se provádí pro každý zdroj světla zvlášť. Prvním krokem je tvorba masky a druhým vykreslení difúze a odlesků. Nejprve je vymazán stencil buffer. Poté proběhne vykreslení stínových těles. Povoleno je pouze zapisování do stencil bufferu, do ostatních je zakázáno. V závislosti na aktuálně vybrané metodě depth pass nebo depth fail je nastavena operace stencil bufferu. V OpenGL je možné nastavit inkrementaci a dekrementaci v jediném průchodu v závislosti na úspěšnosti depth testu pomocí funkce glstencilopseparate. Pokud se používá počítání stínových těles na procesoru, tak ještě před vykreslením proběhne výpočet nového stínového tělesa pro daný objekt a světlo. Pokud je zvolena cesta výpočtu přes grafickou kartu, tak se pouze provede vykreslení objektu s aktivovaným geometry shaderem, který vytvoří stínová tělesa. Po vykreslení všech stínových těles je v stencil bufferu připravená maska, která označuje oblasti kam má dopadat světlo od daného světelného zdroje. Následuje vykreslení difúzního světla a odlesků. To je provedeno jediným shaderem, který provede výpočet pro obě tyto složky najednou. Vstupem tohoto shaderu je poloha světla a hodnoty odrazivosti materiálu. Tímto je vykreslování pro daný zdroj světla hotové a postup se opakuje pro další zdroj světla. 18
23 Kapitola 5 Testování Účelem tohoto testování je porovnání výkonu mezi implementací algoritmu stínových těles na grafické kartě a procesoru. Pro testování byl v programu implementován speciální režim. Pokud je aktivován, aplikace se spustí v okně o pevném rozlišení Kamera je zamčená a nejde s ní hýbat. Vykreslování běží 10 sekund a poté skončí a na standardní výstup se zapíše počet vykreslených snímků, celková doba vykreslování a průměrný čas vykreslení jednoho snímku. Měření se provádí pětkrát s vypnutými šetřícími režimy procesoru a grafické karty. Aby výsledky nic nezkreslovalo, na pozadí systému neběží žádné další výpočetně náročné programy. 5.1 Testovací sestavy Pro účely testování a měření výkonu byly k dispozici dvě sestavy Sestava 1: Desktop První testovací sestava je výkonný desktop. Základní deska: Gigabyte GA-Z77X-UD5H (rev. 1.0) Procesor: Intel Core i5-3570k (bežící na frekvenci 4.2 GHz) Grafická karta: NVIDIA GeForce GTX 670 Paměti: 8 GB DDR Rozlišení displeje: Ovladače grafické karty: verze Sestava 2: Notebook Druhá testovací sestava je starý notebook. Grafická karta je mobilní lowend řady HD3000. Obsahuje pouze 40 unifikovaných shaderů. Také šířka paměťové sběrnice je mnohem menší, pouze 64 bitů. Se svou malou pamětí, pouze 128 MB, může u větších scén také docházet k velkým propadům, protože se celé nevejdou do video paměti a je nutné je streamovat z operační paměti systému. 19
24 Notebook: Lenovo Thinkpad R500 Procesor: Intel Core 2 Duo P8400 Grafická karta: ATI Mobility Radeon HD 3470 Paměti: 4 GB DDR Rozlišení displeje: Ovladače grafické karty: verze 13.1 Rozdíl ve výkonu procesoru první a druhé sestavy na jednom jádře je pouze asi trojnásobný. Rozdíl v hrubém výkonu grafických karet je mnohem větší, až řádový. Na obou testovacích sestavách byl nainstalován 64bitový operační systém Arch Linux. Program byl na něm zkompilován pomocí překladače GCC Testovací scény Scény pochází z volně dostupného archivu [7]. Byly pouze mírně upraveny v programu Blender a poté znovu vyexportovány. Použité scény mají postupně rostoucí složitost. Na každé scéně jsou použity dva světelné zdroje Scéna 1: Čajové konvice Viz obrázek 5.1. Počet trojúhelníků: Počet vrcholů: Počet objektů: 7 Obrázek 5.1: Scéna s čajovými konvicemi vykreslená v testovací aplikaci 20
25 5.2.2 Scéna 2: Konferenční místnost Viz obrázek 5.2. Počet trojúhelníků: Počet vrcholů: Počet objektů: 41 Obrázek 5.2: Scéna s konferenční místností vykreslená v testovací aplikaci Scéna 3: Drak Viz obrázek 5.3 Počet trojúhelníků: Počet vrcholů: Počet objektů: Výkon v závislosti na instrukční sadě Vektory používané pro výpočty stínových těles se skládají z čísel s pohyblivou desetinnou čárkou. Na procesorech x86 je k dispozici více způsobů jak s nimi počítat. Použitá matematická knihovna GLM je implementovaná celá v hlavičkových souborech. Pokud tedy změníme nastavení kompilátoru, je možné vynutit použití konkrétní sady instrukcí pro matematické operace. Nejstarší instrukční sadou pro počítání s čísly s pohyblivou desetinnou čárkou je x87. Původně existovala v koprocesoru FPU, který se dal používat ve spolupráci s normálním procesorem. Pozdější verze procesorů Intel (od procesoru 486) už jej měly integrován. Novější instrukční sada, která je v procesorech Intel od dob Pentium III, se nazývá SSE 1. Tato sada přinesla vektorové instrukce pro počítání s čísly s plovoucí desetinnou čárkou. 1 Streaming SIMD Extensions 21
26 Obrázek 5.3: Scéna s drakem vykreslená v testovací aplikaci Umožňuje pracovat s 8 128bitovými registry, na 64bitových systémech s ještě 8 dalšími. Do jednoho registru se vejdou až 4 čísla při použití jednoduché přesnosti. Pro jednotlivé operace existují varianty instrukcí, které pracují se skalárními nebo vektorovými operandy. Od procesorů s kódovým označením Sandy Bridge existuje navíc sada AVX 2, která ještě zvyšuje šířku registrů na 256bitů. To umožňuje u vektorových instrukcí počítat s dvakrát více hodnotami. V našem případě se ale nedá předpokládat automatická vektorizace překladačem. K tomu by bylo třeba speciálně navrhnout datovou strukturu atd. Vzhledem k tomu, že překladač použije skalární instrukce, nelze očekávat nějaký velký nárůst mezi AVX a SSE. V poslední době už SSE pomalu nahrazuje FPU. Jediná nevýhoda SSE je, že je o něco míň přesné než FPU, protože FPU používá interně pro výpočty 80bitové registry. Na 64bitových x86 systémech je podpora SSE2 už zaručená, proto je například v překladači gcc na této architektuře ve výchozím stavu zapnuto. Měření výkonu probíhalo na první testovací sestavě, která jako jediná má procesor, který podporuje tyto všechny instrukční sady. V tabulce 5.1 jsou uvedeny naměřené hodnoty a jejich průměr. Dle očekávání je FPU pomalejší než SSE a AVX, průměrně o 8 %. Mezi AVX a SSE je zanedbatelný rozdíl, v průměru méně než půl procenta. Pro další testy už je použito pouze výchozí nastavení překladače, což na dané architektuře znamená SSE. 5.4 Výkon v závislosti na využití grafické karty Nejdůležitějším srovnáním je rozdíl mezi počítáním stínových těles na procesoru a na grafické kartě. Na první sestavě má použitý procesor čtyři jádra přetaktované na frekvenci 4.2 GHz. Aplikace využívá pouze jedno vlákno, tudíž využije maximálně 25 % dostupného výkonu. V porovnání s tím má grafická karta úplně jinou architekturu. Na rozdíl od procesoru, který je stavěný na univerzální výpočty, je optimalizována na velké množství paralelních 2 Advanced Vector Extensions 22
27 t 1 t 2 t 3 t 4 t 5 t Scéna 1 FPU 5,60 ms 5,81 ms 5,65 ms 5,63 ms 5,61 ms 5,63 ms Scéna 1 SSE 5,12 ms 5,08 ms 5,11 ms 5,26 ms 5,13 ms 5,17 ms Scéna 1 AVX 5,24 ms 5,21 ms 5,13 ms 5,28 ms 5,29 ms 5,23 ms Scéna 2 FPU 47,24 ms 47,66 ms 48,59 ms 47,61 ms 47,53 ms 47,91 ms Scéna 2 SSE 43,87 ms 43,76 ms 44,12 ms 44,04 ms 43,90 ms 44,02 ms Scéna 2 AVX 43,68 ms 43,41 ms 43,56 ms 43,42 ms 43,53 ms 43,50 ms Scéna 3 FPU 129,55 ms 129,50 ms 129,27 ms 129,27 ms 129,89 ms 129,48 ms Scéna 3 SSE 120,19 ms 120,50 ms 120,66 ms 120,55 ms 120,52 ms 120,58 ms Scéna 3 AVX 119,71 ms 119,73 ms 119,57 ms 119,78 ms 119,64 ms 119,67 ms Tabulka 5.1: Rychlost vykreslování jednoho snímku v závislosti na použité instrukční sadě na Sestavě 1 specializovaných výpočtů, především s maticemi a vektory. Konkrétně karta na první sestavě obsahuje 1344 shader procesorů, které jsou taktovány na frekvenci až 1058 MHz. Ty jsou schopné vykonávat všechny typy shaderů. Předpokladem je, že výpočet stínových těles na grafické kartě bude mnohonásobně rychlejší. Nejen, že je třeba provést celý výpočet na procesoru, ale také je po jeho dokončení nutné přesunout výsledek do paměti grafické karty, a to se musí opakovat s každým snímkem. Při počítání stínových těles v geometry shaderu se ušetří režie přenášení nově vytvářených primitiv. Vyplatí se tedy přesunout co největší zátěž na grafickou kartu a procesor nechat počítat úlohy, které jsou hůře paralelizovatelné. V tabulce 5.2 jsou uvedené naměřené výsledky. Na první scéně, která je nejméně komplexní, trvá výpočet jednoho snímku 4.1 kratší dobu, než když je stínové těleso počítáno na procesoru. U druhé scény, která má přibližně 7 více trojúhelníků, je nárůst výkonu ještě více znatelný, konkrétně je rychlejší 6.7. Třetí a nejnáročnější scéna přináší největší nárůst. Zatímco bez počítání stínových těles na grafické kartě trvá vykreslení jednoho snímku 129 ms, s jeho použitím je to pouze 13 ms. To je více než 9.1 zrychlení. V prvním případě je snímková frekvence kolem 8 Hz, což je daleko pod limitem, toho co se dá považovat za plynulou animaci. V druhém případě snímková frekvence naopak dokonce překračuje schopnosti většiny zobrazovacích zařízení. Většina současných monitorů používá obnovovací frekvenci 60 Hz. Tomu odpovídá časový limit ms na vykreslení jednoho snímku. Na první testovací sestavě lze za předpokladu, že náročnost vykreslování hodně nekolísá a nepřekročí tento limit, zobrazovat všechny scény plynule se zapnutou vertikální synchronizací. t 1 t 2 t 3 t 4 t 5 t Scéna 1 1,31 ms 1,26 ms 1,31 ms 1,26 ms 1,27 ms 1,28 ms Scéna 2 6,47 ms 6,44 ms 6,48 ms 6,48 ms 6,45 ms 6,47 ms Scéna 3 13,05 ms 13,03 ms 13,06 ms 13,02 ms 13,04 ms 13,04 ms Tabulka 5.2: Rychlost vykreslování snímku s použitím geometry shaderu na Sestavě Výkon na starší sestavě Největším omezujícím faktorem na druhé sestavě je výkon grafické karty. Také nepoměr mezi trváním vykreslování scény a počítáním stínových těles bude větší. 23
28 Scéna 1 Scéna 2 Scéna 3 t 1 t 2 t 3 t 4 t 5 t CPU ms ms ms ms ms ms GPU ms ms ms ms ms ms CPU ms ms ms ms ms ms GPU ms ms ms ms ms ms CPU ms ms ms ms ms ms GPU ms ms ms ms ms ms Tabulka 5.3: Rychlost vykreslování snímku na Sestavě Rozdíl výkonu mezi depth pass a depth fail Jak už bylo dříve uvedeno a je zjevné z obrázku 2.3, algoritmus depth pass je znatelně rychlejší, protože vykresluje mnohem méně trojúhelníků. Jeho stínová tělesa se skládají pouze z čtyřúhelníků vytvořených z hran siluety. Nejjednodušší řešení by bylo detekovat kdy se kamera nachází uvnitř stínového tělesa a v tom případě použít depth fail, jinak depth pass. Bohužel pro obecné případy tento problém nemá triviální řešení. Scéna 1 Scéna 2 Scéna 3 t 1 t 2 t 3 t 4 t 5 t depth pass 0,84 ms 0,84 ms 0,77 ms 0,78 ms 0,81 ms 0,81 ms depth fail 1,31 ms 1,26 ms 1,31 ms 1,26 ms 1,27 ms 1,28 ms depth pass 4.61 ms 4.64 ms 4.63 ms 4.58 ms 4,60 ms 4,61 ms depth fail 6,47 ms 6,44 ms 6,48 ms 6,48 ms 6,45 ms 6,47 ms depth pass ms ms ms 11,17 ms 11,21 ms 11,20 ms depth fail 13,05 ms 13,03 ms 13,06 ms 13,02 ms 13,04 ms 13,04 ms Tabulka 5.4: Rychlost vykreslování snímku s použitím geometry shaderu na Sestavě 1 V tabulce 5.4 jsou uvedeny výsledky jednotlivých měření metody depth pass. Pro srovnání jsou zde taky uvedeny předchozí měření depth fail. U nejjednodušší scény je výkon depth fail nižší 1, 58. U druhé scény je tento rozdíl menší, konkrétně U nejnáročnější scény je tento rozdíl nejmenší Dá se tedy říct, že čím komplexnější scéna, tím je rozdíl mezi těmito dvěma metodami zanedbatelnější. Pravděpodobně se tedy nevyplatí snažit počítat, zdali se kamera nachází uvnitř stínového tělesa a je tedy lepší použít tento sice pomalejší, ale robustnější algoritmus. 5.7 Srovnání všech naměřených výsledků V tabulce 5.5 jsou uvedeny všechny naměřené výsledky a jejich nastavení. Největší vliv na výkon mělo použití implementace algoritmus stínových těles na grafické kartě. Na první sestavě toto umožnilo plynulý běh všech testovaných konfigurací. Druhým důležitým vlivem byla složitost scény. A nejméně podstatný se ukázal vliv použité instrukční sady procesoru. 24
29 scéna sestava instrukční sada pipeline algoritmus t Scéna 1 Sestava 1 SSE GPU depth pass 0.81 ms Scéna 1 Sestava 1 SSE GPU depth fail 1.28 ms Scéna 2 Sestava 1 SSE GPU depth pass 4.61 ms Scéna 1 Sestava 1 SSE CPU depth fail 5.17 ms Scéna 1 Sestava 1 AVX CPU depth fail 5.23 ms Scéna 1 Sestava 1 FPU CPU depth fail 5.63 ms Scéna 2 Sestava 1 SSE GPU depth fail 6.47 ms Scéna 3 Sestava 1 SSE GPU depth pass ms Scéna 3 Sestava 1 SSE GPU depth fail ms Scéna 1 Sestava 2 SSE GPU depth fail ms Scéna 2 Sestava 1 AVX CPU depth fail ms Scéna 2 Sestava 1 SSE CPU depth fail ms Scéna 2 Sestava 1 FPU CPU depth fail ms Scéna 1 Sestava 2 SSE CPU depth fail ms Scéna 3 Sestava 1 AVX CPU depth fail ms Scéna 3 Sestava 1 SSE CPU depth fail ms Scéna 3 Sestava 1 FPU CPU depth fail ms Scéna 2 Sestava 2 SSE GPU depth fail ms Scéna 3 Sestava 2 SSE GPU depth fail ms Scéna 2 Sestava 2 SSE CPU depth fail ms Scéna 3 Sestava 2 SSE CPU depth fail ms Tabulka 5.5: Přehled všech naměřených výsledků 25
30 Kapitola 6 Závěr Cílem této práce bylo zjistit vhodné techniky pro efektivní tvorbu stínových těles na grafické kartě. Toho bylo dosaženo za použití geometry shaderu, který je k tomuto účelu velmi vhodný. Vzhledem k tomu, že tato funkcionalita je podporována pouze na moderním hardwaru, byla navržena testovací aplikace, které je implementována pouze za použití moderní verze OpenGL a nepoužívá žádné funkce, které jsou označené za zastaralé. Aby měření mělo nějakou váhu, tak byla testovací aplikace navržena tak aby se složitostí vykreslované scény podobala reálnému případu užití. Tedy použitím osvětlovacího modelu používaného ve většině dnešních aplikací a scény s několika různými světly a objekty. Výsledky testování jasně prokázaly, že při počítání toho problému je grafická karta mnohem výkonnější než univerzální procesor. Výkon byl měřen na hardwaru současné generace, kde použití této implementace algoritmu přineslo výrazný skok ve výkonu. Pro srovnání byla aplikace také otestována na několik generací starém počítači, který ale vzhledem k mnohem nižšímu výkonu nedokázal úplně plynule vykreslovat ani základní scénu. Jako další možnost vývoje projektu by mohl být přechod ze současného stylu vykreslování, které se nazývá forward shading, na deffered shading. Ten umožňuje vykreslovat mnohem více světel na jedné scéně bez velkého poklesu výkonu. Tímto by se mohly využít mnohem zajímavější scény, než byly dosud použity. Další věcí, kterou by se projekt mohl zabývat by mohla být optimalizace vykreslování velkých scén pomocí metody occlusion queries. 26
31 Literatura [1] Bilodeau, W.; Songy, M.: Method for rendering shadows using a shadow volume and a stencil buffer. Patent, , us URL [2] Crow, F. C.: Shadow algorithms for computer graphics. SIGGRAPH Comput. Graph., ročník 11, č. 2, Červenec 1977: s , ISSN [3] Donnelly, W.; Lauritzen, A.: Variance shadow maps. In In SI3D 06: Proceedings of the 2006 symposium on Interactive 3D graphics and games, ACM, Press, 2006, s [4] Everitt, C.; Kilgard, M. J.: Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated Rendering [5] Fernando, R.: GPU Gems: Programming Techniques, Tips and Tricks for Real-Time Graphics. Pearson Higher Education, 2004, ISBN [6] Fernando, R.: Percentage-closer soft shadows. In ACM SIGGRAPH 2005 Sketches, SIGGRAPH 05, New York, NY, USA: ACM, [7] McGuire, M.: Computer Graphics Archive URL [8] Nguyen, H.: GPU Gems 3. Addison-Wesley, 2007, ISBN [9] Phong, B. T.: Illumination for computer generated pictures. Commun. ACM, ročník 18, č. 6, Červen 1975: s , ISSN [10] Segal, M.; Akeley, K.: The OpenGL Graphics System: A Specification (Version 3.3 (Core Profile) - March 11, 2010) [11] Stamminger, M.; Drettakis, G.: Perspective shadow maps. ACM Trans. Graph., ročník 21, č. 3, Červenec 2002: s , ISSN [12] Williams, L.: Casting curved shadows on curved surfaces. SIGGRAPH Comput. Graph., ročník 12, č. 3, Srpen 1978: s , ISSN [13] WWW stránky: glfrontface - OpenGL 4 Reference Pages. [14] WWW stránky: Vertex Specification. 27
32 Příloha A Obsah CD tex adresář obsahující zdrojové kódy této práce vysázené v systému L A TEX src adresář obsahující zdrojové kódy testovací aplikace project.pdf tento dokument ve formátu PDF plakat.png plakát prezentující tuto práci 28
33 Příloha B Manuál Program se se skládá z několika spustitelných souborů: shadow avx Zkompilován s využitím AVX instrukcí. Pokud procesor tyto instrukce nepodporuje, program při spuštění selže. shadow sse Zkompilován s využitím SSE instrukcí. shadow fpu Zkompilován s využitím x87 FPU instrukcí. Nápověda se vyvolá spuštěním s argumentem --help: $./shadow-sse --help Allowed options: --help produce help message --mode arg (=free) one of these modes: bench, free --scene arg (=teapot) load one of these scenes: teapot, conference, dragon --fsaa arg (=0) number of samples for multisampling Benchmark options: --bench-length arg (=10) lenght of benchmark in seconds --pipeline arg (=cpu) cpu or gpu pipeline --method arg (=depth-fail) depth-pass or depth-fail Jednotlivé volby mají takovýto význam: --mode výběr mezi režimem volné kamery a testovacím režimem. --scene načte zvolenou scénu, dostupné jsou 3 možnosti: teapot, conference a dragon --fsaa nastaví multisampling na zadaný počet vzorků Následující volby mají smysl pouze u testovacího režimu: --bench-length nastaví délku testovacího průběhu v sekundách --pipeline výběr mezi počítáním stínových těles na procesoru (cpu) a na grafické kartě (gpu) --method výběr mezi metodou depth fail nebo depth pass 29
34 Příloha C Plakát 30
Návod k použití softwaru Solar Viewer 3D
Návod k použití softwaru Solar Viewer 3D Software byl vyvinut v rámci grantového projektu Technologie a systém určující fyzikální a prostorové charakteristiky pro ochranu a tvorbu životního prostředí a
Výpočet vržených stínů
Výpočet vržených stínů 1996-2016 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ Shadows 2016 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 18 Metody vícenásobný
Fakulta informačních technologíı. IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL 1 / 38
IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL Tomáš Milet Ústav počítačové grafiky a multimédíı Fakulta informačních technologíı Vysoké učení technické Brno IZG cvičení 6. - Zobrazování 3D scény
Zobrazování terénu. Abstrakt. 1. Úvod. 2. Vykreslování terénu
Zobrazování terénu Jan Vaněk, Bruno Ježek Universita Obrany, Fakulta vojenského zdravotnictví, Katedra všeobecně vzdělávacích oborů e-mail: vanek@pmfhk.cz; jezek@pmfhk.cz Abstrakt Vizualizace terénu je
Co je grafický akcelerátor
Co je grafický akcelerátor jednotka v osobním počítači či herní konzoli přebírá funkce hlavního procesoru pro grafické operace graphics renderer odlehčuje hlavnímu procesoru paralelní zpracování vybaven
Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto
Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT
Reprezentace 3D modelu
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 1/25 Reprezentace 3D modelu Ing. Jan Buriánek Katedra softwarového inženýrství Fakulta informačních technologií České vysoké
Architektura Intel Atom
Architektura Intel Atom Štěpán Sojka 5. prosince 2008 1 Úvod Hlavní rysem Atomu je podpora platformy x86, která umožňuje spouštět a běžně používat řadu let vyvíjené aplikace, na které jsou uživatelé zvyklí
Hierarchický model. 1995-2013 Josef Pelikán CGG MFF UK Praha. pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 16
Hierarchický model 1995-2013 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 16 Hierarchie v 3D modelování kompozice zdola-nahoru složitější objekty se sestavují
KAPITOLA 1 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ
KAPITOLA 1 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ KLÍČOVÉ POJMY technické vybavení počítače uchování dat vstupní a výstupní zařízení, paměti, data v počítači počítačové sítě sociální
13 Barvy a úpravy rastrového
13 Barvy a úpravy rastrového Studijní cíl Tento blok je věnován základním metodám pro úpravu rastrového obrazu, jako je např. otočení, horizontální a vertikální překlopení. Dále budo vysvětleny různé metody
OPS Paralelní systémy, seznam pojmů, klasifikace
Moorův zákon (polovina 60. let) : Výpočetní výkon a počet tranzistorů na jeden CPU chip integrovaného obvodu mikroprocesoru se každý jeden až dva roky zdvojnásobí; cena se zmenší na polovinu. Paralelismus
Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto
Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT Mgr. Petr
Geekovo Minimum. Počítačové Grafiky. Nadpis 1 Nadpis 2 Nadpis 3. Božetěchova 2, Brno
Geekovo Minimum Nadpis 1 Nadpis 2 Nadpis 3 Počítačové Grafiky Jméno Adam Příjmení Herout Vysoké Vysoké učení technické učení technické v Brně, v Fakulta Brně, Fakulta informačních informačních technologií
A JEJICH POROVNÁNÍ FAKULTA INFORMAČNÍCH TECHNOLOGIÍ BRNO UNIVERSITY OF TECHNOLOGY
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND
Intel 80486 (2) Intel 80486 (1) Intel 80486 (3) Intel 80486 (4) Intel 80486 (6) Intel 80486 (5) Nezřetězené zpracování instrukcí:
Intel 80486 (1) Vyroben v roce 1989 Prodáván pod oficiálním názvem 80486DX Plně 32bitový procesor Na svém čipu má integrován: - zmodernizovaný procesor 80386 - numerický koprocesor 80387 - L1 (interní)
2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu
Název školy Číslo projektu Autor Název šablony Název DUMu Tematická oblast Předmět Druh učebního materiálu Anotace Vybavení, pomůcky Ověřeno ve výuce dne, třída Střední průmyslová škola strojnická Vsetín
Satori. Uživatelský manuál
Satori Uživatelský manuál Obsah Satori...1 1. Program... 3 1.1 Cíle hry... 3 1.2 Požadavky...3 1.3 Instalace... 4 1.4 Ovládání... 4 1.5 Grafika...4 1.6 Zvuky...4 1.7 Soubory...4 1.8 Menu...5 1.9 Nastavení...
Pohled do nitra mikroprocesoru Josef Horálek
Pohled do nitra mikroprocesoru Josef Horálek Z čeho vycházíme = Vycházíme z Von Neumannovy architektury = Celý počítač se tak skládá z pěti koncepčních bloků: = Operační paměť = Programový řadič = Aritmeticko-logická
Osvětlování a stínování
Osvětlování a stínování Pavel Strachota FJFI ČVUT v Praze 21. dubna 2010 Obsah 1 Vlastnosti osvětlovacích modelů 2 Světelné zdroje a stíny 3 Phongův osvětlovací model 4 Stínování 5 Mlha Obsah 1 Vlastnosti
Vývoj počítačové grafiky. Tomáš Pastuch Pavel Skrbek 15.3. 2010
Vývoj počítačové grafiky Tomáš Pastuch Pavel Skrbek 15.3. 2010 Počítačová grafika obor informatiky, který používá počítače k tvorbě umělých grafických objektů nebo pro úpravu již nasnímaných grafických
Monitory a grafické adaptéry
Monitory a grafické adaptéry Monitor je důležitá součást rozhraní mezi uživatelem a počítačem Podle technologie výroby monitorů rozlišujeme: CRT monitory (Cathode Ray Tube) stejný princip jako u TV obrazovek
Programátorská dokumentace
Programátorská dokumentace Požadavky Cílem tohoto programu bylo představit barevné systémy, zejména převody mezi nejpoužívanějšími z nich. Zároveň bylo úkolem naprogramovat jejich demonstraci. Pro realizaci
Surfels: Surface Elements as Rendering Primitives
Surfels: Surface Elements as Rendering Primitives Výzkum v počítačové grafice Martin Herodes Nevýhody plošných primitiv Reprezentace složitých objektů pomocí plošných primitiv (trojúhelníků, čtyřúhelníků
Procesor Intel Pentium (1) Procesor Intel Pentium (3) Procesor Intel Pentium Pro (1) Procesor Intel Pentium (2)
Procesor Intel Pentium (1) 32-bitová vnitřní architektura s 64-bitovou datovou sběrnicí Superskalární procesor: obsahuje více než jednu (dvě) frontu pro zřetězené zpracování instrukcí (značeny u, v) poskytuje
Pokročilé architektury počítačů
Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Pokročilé architektury počítačů Architektura Intel Larrabee 5.12.2009 Josef Stoklasa STO228 Obsah: 1. Úvod do tajů
Reflections, refractions, interreflections
:: gs Reflections, refractions, interreflections Odrazy a lomy světla Grafické systémy David Sedláček 2004 :: fyzika Zákon odrazu Lom světla Snellův zákon Fresnelova rovnice poměr prošlého a odraženého
Pokročilé metody fotorealistického zobrazování
Pokročilé metody fotorealistického zobrazování 14.5.2013 Úvod Motivace Základní informace Shrnutí metod Představení programu RayTracer Reference Motivace Základní informace Motivace snaha o vytvoření realistických
Zobrazování těles. problematika geometrického modelování. základní typy modelů. datové reprezentace modelů základní metody geometrického modelování
problematika geometrického modelování manifold, Eulerova rovnost základní typy modelů hranový model stěnový model objemový model datové reprezentace modelů základní metody geometrického modelování těleso
3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem
ČVUT FEL X36PAA - Problémy a algoritmy 3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem Jméno: Marek Handl Datum: 1. 1. 2009 Cvičení: Pondělí 9:00 Zadání Naprogramujte
Informatika pro 8. ročník. Hardware
Informatika pro 8. ročník Hardware 3 druhy počítačů Vstupní a výstupní zařízení Další vstupní a výstupní zařízení Nezapomeňte Máme tři druhy počítačů: stolní notebook all-in-one Zařízení, která odesílají
G R A F I C K É K A R T Y
G R A F I C K É K A R T Y Grafická karta nebo také videoadaptér je součást počítače, která se stará o grafický výstup na monitor, TV obrazovku či jinou zobrazovací jednotku. Režimy grafických karet TEXTOVÝ
Procesor. Hardware - komponenty počítačů Procesory
Procesor Jedna z nejdůležitějších součástek počítače = mozek počítače, bez něhož není počítač schopen vykonávat žádné operace. Procesor v počítači plní funkci centrální jednotky (CPU - Central Processing
GRAFICKÉ KARTY. Pracovní režimy grafické karty. Základní blokové schéma grafické karty
GRAFICKÉ KARTY Grafická karta (též videokarta, grafický adaptér) je zařízení, které zabezpečuje výstup dat z počítače na obrazovku monitoru, tj. přebírá data od procesoru a převádí je na videosignál, který
2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013
2. úkol MI-PAA Jan Jůna (junajan) 3.11.2013 Specifikaci úlohy Problém batohu je jedním z nejjednodušších NP-těžkých problémů. V literatuře najdeme množství jeho variant, které mají obecně různé nároky
Anti Aliasing. Ondřej Burkert. atrey.karlin.mff.cuni.cz/~ondra/ ~ondra/stranka
Anti Aliasing Ondřej Burkert atrey.karlin.mff.cuni.cz/~ondra/ ~ondra/stranka Úvod Co je to anti - aliasing? Aliasing = vznik artefaktů v důsledku podvzorkování při vzorkování (sampling) obrazu podvzorkování
Textury v real-time grafice. 2004-2005 Josef Pelikán, MFF UK Praha http://cgg.ms.mff.cuni.cz/~pepca/ Josef.Pelikan@mff.cuni.cz
Textury v real-time grafice 2004-2005 Josef Pelikán, MFF UK Praha http://cgg.ms.mff.cuni.cz/~pepca/ Josef.Pelikan@mff.cuni.cz Textury vylepšují vzhled povrchu těles modifikace barvy ( bitmapa ) dojem hrbolatého
Zobrazovací jednotky a monitory
Zobrazovací jednotky a monitory Zobrazovací jednotka - karta, která se zasunuje do jednoho z konektorů na sběrnici uvnitř počítače. Dva režimy činnosti: Textový režim - zobrazuje znaky uvedené v tabulce
monitor a grafická karta
monitor a grafická karta monitor a grafická karta monitor slouží ke sdělování výsledků či průběhu řešených úloh a komunikaci operačního systému nebo programu s uživatelem. vše co má být zobrazeno na obrazovce,
Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty
Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)
HW počítače co se nalézá uvnitř počítačové skříně
ZVT HW počítače co se nalézá uvnitř počítačové skříně HW vybavení PC Hardware Vnitřní (uvnitř počítačové skříně) Vnější ( ) Základní HW základní jednotka + zobrazovací zařízení + klávesnice + (myš) Vnější
Specifikace VT 11 ks. Ultrabook dle specifikace v příloze č. 1 11 ks. 3G modem TP-LINK M5350
Specifikace VT 11 ks. Ultrabook dle specifikace v příloze č. 1 Prodloužená záruka 3 roky 11 ks. 3G modem TP-LINK M5350 11 ks. MS Office 2013 pro podnikatele CZ 11 ks. brašna 11 ks. bezdrátová myš 5 ks.
DUM č. 14 v sadě. 31. Inf-7 Technické vybavení počítačů
projekt GML Brno Docens DUM č. 14 v sadě 31. Inf-7 Technické vybavení počítačů Autor: Roman Hrdlička Datum: 24.02.2014 Ročník: 1A, 1B, 1C Anotace DUMu: Grafické karty: zapojení, součásti, napájení, chlazení.
C2115 Praktický úvod do superpočítání
C2115 Praktický úvod do superpočítání IX. lekce Petr Kulhánek, Tomáš Bouchal kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta, Masarykova univerzita, Kotlářská 2, CZ-61137
Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2
Základy informatiky 2. Přednáška HW Lenka Carr Motyčková February 22, 2011 Základy informatiky 1 February 22, 2011 Základy informatiky 2 February 22, 2011 Základy informatiky 3 February 22, 2011 Základy
Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur
Přehled paralelních architektur Přehled paralelních architektur Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur Přehled I. paralelní počítače se konstruují
AGP - Accelerated Graphics Port
AGP - Accelerated Graphics Port Grafiku 3D a video bylo možné v jisté vývojové etapě techniky pracovních stanic provozovat pouze na kvalitních pracovních stanicích (cena 20 000 USD a více) - AGP představuje
Představení a vývoj architektur vektorových procesorů
Představení a vývoj architektur vektorových procesorů Drong Lukáš Dro098 1 Obsah Úvod 3 Historie, současnost 3 Architektura 4 - pipelining 4 - Operace scatter a gather 4 - vektorové registry 4 - Řetězení
PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200
PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200 Bc.Adam Berger Ber 208 Historie a předchůdci G200 V červnu roku 2008 spatřila světlo světa nová grafická karta od společnosti Nvidia. Tato grafická karta opět
Barvy a barevné modely. Počítačová grafika
Barvy a barevné modely Počítačová grafika Barvy Barva základní atribut pro definici obrazu u každého bodu, křivky či výplně se definuje barva v rastrové i vektorové grafice všechny barvy, se kterými počítač
Projektč.3dopředmětuIZP. Maticové operace
Projektč.3dopředmětuIZP Maticové operace 17. prosince 2006 Kamil Dudka, xdudka00@stud.fit.vutbr.cz Fakulta informačních technologií Vysoké Učení Technické v Brně Obsah 1 Úvod 1 2 Analýza problému 1 2.1
GRAFICKÉ ADAPTÉRY. Pracovní režimy grafické karty
GRAFICKÉ ADAPTÉRY Grafický adaptér (též videokarta, grafická karta, grafický akcelerátor) je rozhraní, které zabezpečuje výstup obrazových dat z počítače na zobrazovací jednotku (monitor, displej, dataprojektor,
Základy 3D modelování a animace v CGI systémech Cinema 4D C4D
EVROPSKÝ SOCIÁLNÍ FOND Základy 3D modelování a animace v CGI systémech Cinema 4D C4D PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Mgr. David Frýbert 2013 CGI systémy Computer - generated imagery - aplikace
Ing. Jan Buriánek. Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jan Buriánek, 2010
Ing. Jan Buriánek (ČVUT FIT) Reprezentace bodu a zobrazení BI-MGA, 2010, Přednáška 2 1/33 Ing. Jan Buriánek Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické
Připravil: David Procházka. Vertex Buffer Objects
30. září 2013, Brno Připravil: David Procházka Vertex Buffer Objects Počítačová grafika 2 Obsah přednášky Strana 2 / 22 Obsah přednášky 1 Obsah přednášky 2 Vertex Buffer Objects 3 Příklady 4 Shrnutí Obsah
Zobrazování a osvětlování
Zobrazování a osvětlování Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 na Karlově náměstí E-mail: felkel@fel.cvut.cz S použitím materiálů Bohuslava Hudce, Jaroslava Sloupa
Základní deska (1) Označována také jako mainboard, motherboard. Deska plošného spoje tvořící základ celého počítače Zpravidla obsahuje:
Základní deska (1) Označována také jako mainboard, motherboard Deska plošného spoje tvořící základ celého počítače Zpravidla obsahuje: procesor (mikroprocesor) patici pro numerický koprocesor (resp. osazený
Architektury počítačů a procesorů
Kapitola 3 Architektury počítačů a procesorů 3.1 Von Neumannova (a harvardská) architektura Von Neumann 1. počítač se skládá z funkčních jednotek - paměť, řadič, aritmetická jednotka, vstupní a výstupní
Grafická karta nebo také videoadaptér je součást počítače, která se stará o grafický výstup na monitor, TV obrazovku či jinou zobrazovací jednotku.
Grafická karta nebo také videoadaptér je součást počítače, která se stará o grafický výstup na monitor, TV obrazovku či jinou zobrazovací jednotku. Grafická karta je zařízení, které převádí signál z počítače,nuly
Reprezentace bodu, zobrazení
Reprezentace bodu, zobrazení Ing. Jan Buriánek VOŠ a SŠSE P9 Jan.Burianek@gmail.com Obsah Témata Základní dělení grafických elementů Rastrový vs. vektorový obraz Rozlišení Interpolace Aliasing, moiré Zdroje
Autodesk Inventor 2017
Novinky Autodesk Inventor 2017 www.graitec.cz www.cadnet.cz, helpdesk.graitec.cz, www.graitec.com Novinky Autodesk Inventor PDF dokument obsahuje přehled novinek produktu Autodesk Inventor 2017. Obsah:
Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004
Dokumentace k projektu č. 2 do IZP Iterační výpočty 24. listopadu 2004 Autor: Kamil Dudka, xdudka00@stud.fit.vutbr.cz Fakulta Informačních Technologií Vysoké Učení Technické v Brně Obsah 1. Úvod...3 2.
TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ
TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ ÚVOD Technologie elastické konformní transformace rastrových obrazů je realizována v rámci webové aplikace NKT. Tato webová aplikace provádí
12 Metody snižování barevného prostoru
12 Metody snižování barevného prostoru Studijní cíl Tento blok je věnován základním metodám pro snižování barevného rozsahu pro rastrové obrázky. Postupně zde jsou vysvětleny důvody k použití těchto algoritmů
Práce s texty, Transformace rastru, Připojení GPS
Školení programu TopoL xt Práce s texty, Transformace rastru, Připojení GPS Obsah: 1. Uživatelské rozhraní (heslovitě, bylo součástí minulých školení) 2. Nastavení programu (heslovitě, bylo součástí minulých
Dílčí projekt: Systém projektování textilních struktur 1.etapa: tvorba systému projektování vlákno - příze - tkanina
Program LibTex Uživatelská příručka 1 Obsah Program Textilní Design... 1 Uživatelská příručka... 1 1 Obsah... 2 2 Rejstřík obrázků... 2 3 Technické požadavky... 3 3.1 Hardware... 3 3.1.1 Procesor... 3
Vývoj počítačové grafiky
Vývoj počítačové grafiky Počítačová grafika Základní pojmy Historie ASCII Art 2D grafika Rastrová Vektorová 3D grafika Programy Obsah Počítačová grafika obor informatiky, který používá počítače k tvorbě
Záložka také kombinuje ikony s textem a tak usnadňuje vyhledání přesně té funkce, kterou potřebujete.
Co je nového v Mastercam 2017 Obecná vylepšení NOVÝ VZHLED PROGRAMU Mastercam 2017 přináší nový vzhled nástrojové lišty podobné stylu Microsoft Office. Nový vzhled a ovládání zhodnotí vaše dřívější zkušenosti
Zobrazování bannerů podporují pouze nově vytvořené šablony motivů vzhledu.
Bannerový systém ProEshop od verze 1.13 umožňuje zobrazování bannerů na popředí e-shopu. Bannerový systém je přístupný v administraci e-shopu v nabídce Vzhled, texty Bannerový systém v případě, že aktivní
Profilová část maturitní zkoušky 2017/2018
Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2017/2018 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA
MRBT M8. VIDITELNOST OBJEKTŮ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Bc. MARTIN MAŠTERA
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY MRBT M8. VIDITELNOST OBJEKTŮ AUTOŘI PRÁCE Bc. JAKUB BERÁNEK Bc. MARTIN MAŠTERA VEDOUCÍ
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
1. Úvod do obsluhy AutoCADu
1. Úvod do obsluhy AutoCADu Studijní cíl V této lekci se naučíme: Seznámíme se s potřebným zařízením. Způsoby ovládání. Nastavení AutoCADu. Doba nutná k procvičení 1,5 hodiny 1.1 AutoCAD AutoCAD je plnohodnotný
Typy geometrie v. Rhinu. Body
Typy geometrie v 16 Rhinu Rhino rozeznává pět základních typů geometrie: body (points), křivky (curves), plochy (surfaces) a spojené plochy (polysurfaces). Navíc jsou plochy nebo spojené plochy, které
Výkonnost mikroprocesoru ovlivňují nejvíce dvě hlediska - architektura mikroprocesoru a tzv. taktovací frekvence procesoru.
Úvod Mikroprocesor Mikroprocesor je srdcem počítače. Provádí veškeré výpočty a operace. Je to složitý integrovaný obvod, uložený do vhodného pouzdra. Dnešní mikroprocesory vyžadují pro spolehlivou činnost
ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu
ČVUT FEL X36PAA - Problémy a algoritmy 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu Jméno: Marek Handl Datum: 3. 2. 29 Cvičení: Pondělí 9: Zadání Prozkoumejte citlivost metod
Martin Lísal. Úvod do MPI
Martin Lísal září 2003 PARALELNÍ POČÍTÁNÍ Úvod do MPI 1 1 Co je to paralelní počítání? Paralelní počítání je počítání na paralelních počítačích či jinak řečeno využití více než jednoho procesoru při výpočtu
Masivně paralelní zpracování obrazu v prostředí systému VisionLab. 25. 9. 2013 Liberec Roman Cagaš, rc@mii.cz
Masivně paralelní zpracování obrazu v prostředí systému VisionLab 25. 9. 2013 Liberec Roman Cagaš, rc@mii.cz Moravské přístroje a.s. - oblasti vývoje a výroby Prostředí pro vývoj aplikací Software pro
INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE
Název školy: Střední odborná škola stavební Karlovy Vary Sabinovo náměstí 16, 360 09 Karlovy Vary Autor: Ing. Hana Šmídová Název materiálu: VY_32_INOVACE_15_HARDWARE_S1 Číslo projektu: CZ 1.07/1.5.00/34.1077
Procesor. Procesor FPU ALU. Řadič mikrokód
Procesor Procesor Integrovaný obvod zajišťující funkce CPU Tvoří srdce a mozek celého počítače a do značné míry ovlivňuje výkon celého počítače (čím rychlejší procesor, tím rychlejší počítač) Provádí jednotlivé
1 Uživatelská dokumentace
1 Uživatelská dokumentace Systém pro závodění aut řízených umělou inteligencí je zaměřen na závodění aut v prostředí internetu. Kromě toho umožňuje testovat jednotlivé řidiče bez nutnosti vytvářet závod
Grafické karty. Autor: Kulhánek Zdeněk
Grafické karty Autor: Kulhánek Zdeněk Škola: Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice, Benešovo náměstí 1, příspěvková organizace Kód: VY_32_INOVACE_ICT_826 1.11.2012 1 1. Grafická
Osobní počítač. Zpracoval: ict Aktualizace: 10. 11. 2011
Osobní počítač Zpracoval: ict Aktualizace: 10. 11. 2011 Charakteristika PC Osobní počítač (personal computer - PC) je nástroj člověka pro zpracovávání informací Vyznačuje se schopností samostatně pracovat
Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý
Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části
Jana Dannhoferová Ústav informatiky, PEF MZLU
Počítačová grafika 1. Definice oblasti souvisí: a) s definováním množiny všech bodů, které náleží do hranice a zároveň do jejího vnitřku b) s popisem její hranice c) s definováním množiny všech bodů, které
Úvod do počítačové grafiky
Úvod do počítačové grafiky elmag. záření s určitou vlnovou délkou dopadající na sítnici našeho oka vnímáme jako barvu v rámci viditelné části spektra je člověk schopen rozlišit přibližně 10 milionů barev
Paralelní výpočty ve finančnictví
Paralelní výpočty ve finančnictví Jan Houška HUMUSOFT s.r.o. houska@humusoft.cz Výpočetně náročné úlohy distribuované úlohy mnoho relativně nezávislých úloh snížení zatížení klientské pracovní stanice
KRY. Projekt č. 2. Kamil Dudka xdudka00
KRY Projekt č. 2 Kamil Dudka xdudka00 1 Úvod Úkolem bylo vytvořit program, který do určeného obrázku umí schovat text a tento text z obrázku později vytáhnout. Schovaný text měl být zabezpečený pomocí
DATOVÉ FORMÁTY GRAFIKY, JEJICH SPECIFIKA A MOŽNOSTI VYUŽITÍ
DATOVÉ FORMÁTY GRAFIKY, JEJICH SPECIFIKA A MOŽNOSTI VYUŽITÍ UMT Tomáš Zajíc, David Svoboda Typy počítačové grafiky Rastrová Vektorová Rastrová grafika Pixely Rozlišení Barevná hloubka Monitor 72 PPI Tiskárna
9 Prostorová grafika a modelování těles
9 Prostorová grafika a modelování těles Studijní cíl Tento blok je věnován základům 3D grafiky. Jedná se především o vysvětlení principů vytváření modelů 3D objektů, jejich reprezentace v paměti počítače.
PB001: Úvod do informačních technologíı
PB001: Úvod do informačních technologíı Luděk Matyska Fakulta informatiky Masarykovy univerzity podzim 2013 Luděk Matyska (FI MU) PB001: Úvod do informačních technologíı podzim 2013 1 / 29 Obsah přednášky
Datové struktury. Zuzana Majdišová
Datové struktury Zuzana Majdišová 19.5.2015 Datové struktury Numerické datové struktury Efektivní reprezentace velkých řídkých matic Lze využít při výpočtu na GPU Dělení prostoru a binární masky Voxelová
Obsah SLEDOVÁNÍ PRÁCE... 4
Co je nového Obsah SLEDOVÁNÍ PRÁCE...... 4 Konfigurace souboru... 5 Globální konfigurace... 6 Soubory... 6 Projekty... 6 Uživatelské rozhraní... 7 Synchronizace... 7 Typ serveru... 8 Test připojení...
Jan Nekvapil ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická
Jan Nekvapil jan.nekvapil@tiscali.cz ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Motivace MMX, EMMX, MMX+ 3DNow!, 3DNow!+ SSE SSE2 SSE3 SSSE3 SSE4.2 Závěr 2 Efektivní práce s vektory
Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí.
Základní pojmy IT, číselné soustavy, logické funkce Základní pojmy Počítač: Stroj na zpracování informací Informace: 1. data, která se strojově zpracovávají 2. vše co nám nebo něčemu podává (popř. předává)
11 Zobrazování objektů 3D grafiky
11 Zobrazování objektů 3D grafiky Studijní cíl Tento blok je věnován základním algoritmům zobrazení 3D grafiky. Postupně budou probrány základní metody projekce kolmé promítání, rovnoběžné promítání a
Základní pojmy informačních technologií
Základní pojmy informačních technologií Informační technologie (IT): technologie sloužící k práci s daty a informacemi počítače, programy, počítač. sítě Hardware (HW): jednoduše to, na co si můžeme sáhnout.
Středoškolská technika SCI-Lab
Středoškolská technika 2016 Setkání a prezentace prací středoškolských studentů na ČVUT SCI-Lab Kamil Mudruňka Gymnázium Dašická 1083 Dašická 1083, Pardubice O projektu SCI-Lab je program napsaný v jazyce
Vektorové grafické formáty
Vektorové grafické formáty Semestrální práce na předmět KAPR Fakulta stavební ČVUT 28.5.2009 Vypracovali: Petr Vejvoda, Ivan Pleskač Obsah Co je to vektorová grafika Typy vektorových formátů Souborový
Závěrečná práce. AutoCAD Inventor 2010. (Zadání D1)
Závěrečná práce AutoCAD Inventor 2010 (Zadání D1) Pavel Čurda 4.B 4.5. 2010 Úvod Tato práce obsahuje sestavu modelu, prezentaci a samotný výkres Pákového převodu na přiloženém CD. Pákový převod byl namalován