Zobrazování terénů pomocí GPU

Rozměr: px
Začít zobrazení ze stránky:

Download "Zobrazování terénů pomocí GPU"

Transkript

1 MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY #ris m p Zobrazování terénů pomocí GPU DIPLOMOVÁ PRÁCE Marek Mauder Brno, jaro 2008

2 Prohlášení Prohlašuji, že tato diplomová práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. Vedoucí práce: doc. Ing. Jiří Sochor, CSc. 11

3 Shrnutí Pro vizualizaci terénů v reálném čase vznikla celá řada algoritmů, ty novější pak využívají i schopností moderních grafických karet. Cílem této práce je návrh metody pro zobrazování velice rozsáhlých terénů vycházející ze stávající metody Geomipmapping. Součástí práce je implementace návrhu pomocí OpenGL a jazyka GLSL. Uvedeny jsou také výsledky a rozbor testování na různých konfiguracích PC. m

4 Klíčová slova zobrazování terénu, OpenGL, GLSL, GPU, geomipmapping, úroveň detailu

5 Obsah 1 Úvod 2 2 OpenGL a GLSL Rozhraní OpenGL Verze a rozšíření OpenGL Jazyk GLSL 5 3 Zobrazování terénu Reprezentace terénu Zobrazování Úroveň detailů Přehled a vývoj zobrazovacích metod Geomipmapping Možnosti využití GPU 18 4 Víceúrovňový geomipmapping Motivace Princip modifikace Načítání a budování terénu Podrobnosti o některých aspektech metody 26 5 Zpracování metody Základní architektura Zobrazování terénu Zobrazování uzlů a geometrie Výběr aktivních uzlů a úrovně detailu Vizualizace povrchu Data terénu Budování dat Správa dat terénu Formáty výškových map Formáty textur Komprese dat terénu Možná vylepšení a rozšíření Vertex texture fetch Data terénu Texturování a další 49 6 Implementační programy 51 1

6 6.1 Spouštěcí program Hlavní program Prohlížení terénu Budování terénu Testovacímód 53 7 Testování Testovací scénáře Měřené veličiny Konfigurace PC Výsledky a rozbor 57 8 Závěr 60 Literatura 61 Dodatky 63 A Obrazová příloha 63 B Záložky spouštěcího programu 65 C Obsah přiloženého disku 67 2

7 Kapitola 1 Úvod S vizualizací rozsáhlých terénů se můžeme setkat v široké škále aplikací počítačové grafiky Jde například o geografické informační systémy (GIS), virtuální realitu, vojenské simulátory a počítačové hry Vykreslování rozsáhlých terénů v reálném čase je i pro dnešní počítače náročný úkol - množství zobrazovaných trojúhelníků je obrovské. Jsou proto vyvíjeny algoritmy a postupy, které detail snižují na místech, kde to pro pozorovatele nebude příliš patrné. S rozvojem výkonných grafických karet s možností programování (GPU) jsou nové metody zaměřeny i na využití jejich potenciálu. Dalším problémem při zobrazování velice rozsáhlých terénů je objem jejich zdrojových dat, který může snadno překročit kapacitu instalované operační paměti. Je tedy nutné delší dobu nepoužitá data průběžně uvolňovat z paměti a místo nich načítat nová. Hlavním cílem této práce je pomocí grafického rozhraní OpenGL a jazyka GLSL implementovat zobrazovací metodu Geomipmapping rozšířenou o možnost zpracování velice rozsáhlých terénů. Práce se skládá z osmi kapitol a několika dodatků. Po tomto úvodu následuje kapitola druhá, ve které se seznámíme s grafickým rozhraním OpenGL a jazykem GLSL pro programování GPU. Třetí kapitola pojednává o zobrazování terénu na počítači, o reprezentaci jeho dat a úrovni detailu vykreslování. Představuje některé používané metody zobrazování terénu a podrobněji zmiňuje Geomipmapping jakožto základ této práce. Nakonec v této kapitole zmíníme několik možností využití moderních GPU. Kapitola čtvrtá popisuje principy víceúrovňového Geomipmappingu jako hlavního tématu práce, pátá se pak věnuje detailnímu rozboru jeho implementace. Obsahuje popis základních struktur, postupu vykreslování, správy a formátů dat, popisu GLSL programů a dalších aspektů implementace. V kapitole šesté popíšeme samotné implementační programy a jejich ovládání. Sedmá kapitola uvádí výsledky testování implementace na různých konfiguracích počítačů a jejich rozbor. Poslední osmá kapitola je závěrečným shrnutím práce. 3

8 Kapitola 2 OpenGL a GLSL OpenGL je programové rozhraní (API) určené pro tvorbu aplikací zobrazujících 2D i 3D grafiku. V této kapitole uvedeme základní informace o OpenGL, jeho historii, současném stavu a budoucnosti. Dále následuje stručný přehled jazyka GLSL. 2.1 Rozhraní OpenGL OpenGL bylo vytvořeno společností Silicon Graphics Inc. (SGI) v roce 1992 na základě její předchozí proprietární knihovny IrixGL. V základu se jedná pouze o specifikaci grafických funkcí a jejich přesného chování. Výrobci hardwaru poskytují implementace těchto specifikovaných funkcí využívající jejich zařízení. Dostupné jsou i softwarové implementace (např. knihovna Mesa 3D 1 ). OpenGL se postupně stalo standardem v oblasti počítačové grafiky a našlo široké uplatnění v oblastech CAD, virtuální reality, vizualizace vědeckých dat a tvorby počítačových her. O vývoj standardu a specifikaci OpenGL se od založení do roku 2006 starala rada The OpenGL Architecture Review Board (ARB) mezi jejíž členy patřily společnosti SGI, Intel, Microsoft, IBM, ATI, NVidia a další. V současnosti je specifikace pod kontrolou Khronos Group 2 a jejího podvýboru OpenGL ARB Working Group. Rozhraní se nyní skládá z více než 250 různých funkcí a dalších rozšíření, která jsou často specifická jen pro určitého výrobce hardware. Vlastní OpenGL specifikace je nezávislá na operačním systému a procesorové architektuře, a proto neobsahuje žádné funkce pro úkoly jako tvorba oken a uživatelský vstup. OpenGL je také přístupné z mnoha různých programovacích jazyků. Dostupnost implementace na určité platformě je plně v rukou jejího dodavatele. OpenGL obsahuje funkce výhradně pro vykreslování, ale pro správnou funkci je třeba zajistit, aby tento grafický výstup byl směřován do okna naší aplikace. Pro toto napojení OpenGL na operační systém existují doprovodné knihovny jako WGL pro Windows, XGL pro XI1 a AGL pro Mac OS. Existuje mnoho dalších podpůrných knihoven pro tvorbu OpenGL aplikací jako např. GLU, GLUT, GLUI a GLFW. API je navrženo s důrazem na dva požadavky uživatelů: Ovládání odlišných grafických karet pomocí jednotného rozhraní

9 2. OPENGL A GLSL Zakrytí odlišnosti hardwarových platforem - po každé implementaci je vyžadováno, aby obsahovala všechny funkce OpenGL jádra (i když by některé musely být prováděny softwarově bez HW akcelerace). ^ Display List ^J ' \ 1 Evaluator P er-verte K Operations Primitive Assembly Operations t Texture Memory t T. Rasterization Per Fragment Operations Frame buffer n Obrázek 2.1: Blokové schéma OpenGL (převzato ze specifikace OpenGL) OpenGL je někdy označováno jako stavový stroj (state machine). Pomocí volání různých funkcí měníme nastavení komponent OpenGL a tím i jeho stav. Vstupní data prochází tzv. pipeline a jednotlivými komponentami jsou zpracovávány, dokud nedostaneme výsledek na obrazovce, jehož vzhled je závislý právě na aktuálním stavu OpenGL. Současnou verzi specifikace OpenGL spolu s mnoha dalšími informacemi najdeme na oficiální webové stránce http: / /www. opengl. org. 2.2 Verze a rozšíření OpenGL OpenGL poskytuje již od své první verze vše podstatné k vizualizaci trojrozměrného světa i pro práci s 2D rastrovou grafikou: kreslení 3D primitiv pokrytých materiály, práci s osvětlením, mlhou, 2D rastrové operace, míchání barev, transformace atd. Postupně se začaly objevovat nové schopnosti hardwaru umožňující rychleji zpracovávat některé z již podporovaných operací, ale i úplně nové techniky. Jejich použití v OpenGL umožňují tzv. rozšíření (OpenGL extensions). Jako v případě samotného OpenGL se jedná o specifikace funkcí a konstant, nyní však popisující pouze jistou novou funkcionalitu. Konkrétní OpenGL implementace pak některá z rozšíření může implementovat. S novým rozšířením nejčastěji přichází výrobce hardwaru a tedy poskytovatel implementace. Pojmenování rozšíření potom obsahuje jeho identifikátor (např. SGIS_multitexture nebo ATI_texture_f loat). Taková rozšíření nejčastěji podporuje pouze HW tohoto výrobce, ale existují i výjimky. Úspěšná rozšíření mohou být povýšena na EXT (např. EXT_multitexture nebo EXT_texture_f ilter_anisotropic), která již po dohodě podporuje více výrobců. Rada Architecture Review Board také může některé 5

10 2. OPENGL A GLSL rozšíření povýšit na standardní, které potom získá prefix ARB (např. ARB_multitexture nebo ARB_texture_f loat). ARB rozšíření často bývají přímo včleněna do jádra nové verze OpenGL specifikace. Podstatná část nové funkcionality verzí OpenGL byla nejdříve dostupná jako rozšíření. Původní OpenGL verze 1 z roku 1992 bylo rozšířeno celkem pětkrát: Verze 1.1 (1997) přinesla texturové objekty, interní formáty textur, logické operace na barvách a další funkce. Verze 1.2 & (1999) přidává multitexturování, trojrozměrné textury, pole vrcholů a koncept ARB rozšíření. Verze 1.3 (2001) přináší mnoho rozšíření týkajících se texturování: komprese, krychlové textury, nové kombinační módy a další. Také se objevuje celoobrazovkový antialiasing pomocí multivzorkování. Verze 1.4 (2002) rozšiřuje OpenGL o automatické generování mipmap, textury hloubky a stínů a další. Verze 1.5 (2003) přidává možnost uchovávání geometrie ve video paměti a okluzní dotazy. V roce 2004 bylo představeno OpenGL verze 2.0, kde je hlavní novinkou začlenění jazyka GLSL pro programování GPU přímo do jádra OpenGL. Již dříve bylo možné pomocí OpenGL programovat GPU, ale jen pomocí nízkoúrovňového jazyka typu assembler, což bylo poměrně nepohodlné. O GLSL podrobněji pojednává následující oddíl kapitoly. Aktuální verze 2.1 vyšla roku 2006, její kompletní specifikaci najdeme v [1]. Radikální změnu celého rozhraní má přinést OpenGL 3.0 původně plánované na září API má být kompletně přepracováno, nicméně pro podporu starších aplikací bude dostupné i stávající API (ovšem jen jako rozhraní k novému jádru). Nové API bude založeno na práci s objekty a OpenGL se změní ze stavového modelu na objektový. Bude odstraněna méně používaná funkcionalita (např. typ GL_DOUBLE nebo zadávání primitiv pomocí funkcí glbeginaglend)a části pipeline, které je možné nahradit GPU programem (mlha, osvětlení atd.). Celkově má být API pročištěno. Bohužel OpenGL 3.0 je již zpožděno téměř o rok a i po jeho vydání bude ještě trvat než výrobci GPU dokončí jeho implementace. 2.3 Jazyk GLSL GLSL (OpenGL Shading Language, také glslang) je jazyk vysoké úrovně, jehož syntax vychází z programovacího jazyka C. Je určen pro programování moderních GPU a je součástí jádra OpenGL specifikace od verze 2.0 (dříve jako ARB rozšíření). Aktuální verze GLSL je 1.2, plnou specifikaci najdeme v [2]. Kompilátor GLSL je součástí OpenGL implementace a dodává jej tedy výrobce HW - výsledný binární kód může optimalizovat právě pro svoje zařízení. 6

11 2. OPENGL A GLSL GLSL program se skládá ze dvou částí: jsou to vertex shader (zpracovávající vrcholy) a fragment shader (aplikován na fragmenty 3 ). Tyto shadery jsou nezávisle na sobě zkompilovány a poté linkovány dohromady, čímž vznikne kompletní a použitelný GLSL program (viz obrázek 2.2). GLSL program S i linkování zkompilovaný vertex shader zkompilovaný fragment shader kompilace zdroj, kód vertex shaderu kompilace zdroj, kód fragment shaderu Obrázek 2.2: Schéma tvorby GLSL programu Stejně jako v C je vstupním bodem shaderu funkce main. GLSL používá některé standardní C typy jako int a float a přidává vektory, matice, a vzorkovače textur (typ sampler). Dostupné jsou také běžné příkazy pro kontrolu běhu programu a smyčky (if-the-else, for, while atd.). GLSL má několik desítek vestavěných funkcí (built-in) v několika skupinách (trigonometrie, operace s vektory a maticemi, přístup k texturám atd.). Uživatel může deklarovat funkce vlastní. Součástí GLSL kompilátorů je preprocesor, i když s omezenými možnostmi oproti C. Pomocí vestavěných proměnných můžeme přistupovat k nejrůznějších nastavením aktuálního OpenGL stavu jako je nastavení světel, transformační matice, materiály, mlha atd. Důležitou součástí GLSL jsou proměnné s modifikátory attribute, uniform a varying. Atributy jsou dovoleny pouze ve vertex shaderu a představují proměnné, jejichž hodnoty jsou specifické pro jednotlivé vrcholy. Běžné atributy přístupné přes vestavěné proměnné jsou např. souřadnice v prostoru, texturovací koordináty, barva nebo normála. Uniformní proměnná představuje nějaký obecný parametr shaderu a je přístupná z obou typů shaderu. Její hodnota je obvykle společná pro větší množství vrcholů a fragmentů. Proměnné typu varying slouží k předávání vypočítaných hodnot z vertex do fragment shaderu. Hodnoty vypočítané ve vertex programu pro jednotlivé vrcholy jsou lineárně interpolovaný po povrchu trojúhelníků tvořených těmito vrcholy. Ve fragment programu jako vstup dostaneme interpolovanou hodnotu v závislosti na pozici fragmentu v promítnutém 3. pixely obrazovky spolu s dalšími příslušnými informacemi jako např. hloubka 7

12 2. OPENGL A GLSL trojúhelníku. Typickým použitím tohoto typu proměnných je předávání barev nebo texturovacích koordinátu. V následujícím ukázkovém vertex shaderu vidíme deklarace všech tří zmíněných typů proměnných. V těle funkce main nejprve uložíme do vektoru souřadnice vrcholu z vestavěné proměnné (ty se vyznačují prefixem gl_). Následně jako souřadnici Z nastavíme atribut vrcholu a do proměnné ViewDir uložíme směrový vektor od vrcholu ke kameře. Pozice kamery je shaderu předána jako uniformní parametr a směr je předán fragment shaderu. Nakonec provedeme transformaci vrcholu a jeho projekci do souřadného systému obrazovky násobením příslušnými maticemi. i attribute float Height; 2 uniform vec3 CameraPos; 3 varying vec3 ViewDir; 4 s void main() 6 { 7 vec4 Pos = gl_vertex; s Pos. z = Height; 9 ViewDir = CameraPos Pos. xyz; io gl_position = gl_projectionmatrix * gl_modelviewmatrix * Pos; n } Ukázkový fragment shader vezme barvu z textury na daných souřadnicích a interpoluje ji s barvou zadanou jako uniformní. i uniform vec4 color; 2 sampler2d texo; 3 4 void main() 5 { 6 vec4 texture = texture2d (texo, gl_texcoord [0]. xy); 7 vec3 col = mix( color. rgb, texture, rgb, texture.a); s gl_fragcolor = vec4(col, color.a); 9 } V GLSL ovšem nemůžeme napsat libovolně rozsáhlý program. GPU mají limity na počty atributů a jiných proměnných, na počet instrukcí přeložených programů apod. Tyto limity se však neustále posouvají - např. maximální počet instrukcí fragment programu prvních programovatelných GPU byl menší než 16, zatímco nejnovější mají limity v řádu tisíců. Pro usnadnění tvorby shaderu byly vytvořeny různé nástroje jako Render Monkey 4, Shader Designer 5 nebo open source projekt Lumina

13 Kapitola 3 Zobrazování terénu Pro zobrazení terénu na počítači potřebujeme nejprve nějakou jeho reprezentaci. Na rozdíl od obecných modelů má terén jisté specifické vlastnosti, kterých můžeme pro jeho zobrazování s výhodou využít. V této kapitole nejprve popíšeme možné reprezentace terénu a dále obecný postup při jejich zobrazování. Následuje představení pojmu úroveň detailu terénu a přehled několika zobrazovacích metod, kde také podrobněji popíšeme metodu, jejíž rozšíření je hlavním tématem této práce. Závěrem uvedeme několik možností využití programovatelných grafických karet. 3.1 Reprezentace terénu Terén můžeme chápat jako spojitý trojrozměrný povrch z = f(x,y), kde z je výška terénu v bodě [x, y] roviny (např. průmět terénu do roviny v kartografii). Stejně jako při vizualizaci obrazů a jiných spojitých signálu na počítači musíme i povrch terénu diskretizovat, tedy pořídit vzorky v určitých místech terénu. Nejčastěji používanou reprezentací takto navzorkovaného terénu jsou výškové mapy (height maps, elevation maps). Výšková mapa je dvojrozměrné pole hodnot (označovaných někdy jako hexely - analogie k pixelům) představujících výšky terénu v daných místech vzorkování. Tato místa jsou nejčastěji rozmístěna v pravidelné nebo semipravidelné dvojrozměrné mřížce. Převod bodu výškové mapy na výsledný trojrozměrný bod lze definovat jako funkci / : R 2 > R 3, kde f(x, y) = [x, y, z(x, y)]. Funkce z vrací hodnotu výškové mapy na daných souřadnicích a právě její hodnoty jsou uchovávány. Souřadnice bodu 2D mřížky x a y není nutné ukládat, protože jsou odvoditelné z pozice výškové hodnoty ve zmíněném dvourozměrném poli. Každý vzorek povrchu terénu je tedy uchováván jako jedna skalární hodnota a paměťové nároky se odvíjí pouze od velikosti terénu a vyžadované přesnosti vzorků. Výškové mapy můžeme ukládat jako obrazové soubory v běžných formátech jako PNG nebo JPEG (obvykle šedotónní s osmi nebo šestnáctibitovou hloubkou). Existují také specializované formáty (DEM, DTED, GeoTIFF) obsahující i geografické informace o reprezentovaném terénu (georeferenční bod, datum, použitý elipsoid atd.). Výškové mapy reálných krajin se pořizují satelitním snímkováním povrchu Země. Vlastní mapy můžeme nakreslit nebo procedurálně vygenerovat. Procedurální metody jsou často založeny na fraktálech (např. přesouvání středního bodu) nebo se používají šumové funkce (např. Perlinova). Extrahováním hodnot z výškové mapy za použití souřadnic mřížky získáme množinu bezrozměrných bodů v prostoru. Abychom mohli na současném grafickém hardwaru zob- 9

14 3. ZOBRAZOVÁNÍ TERÉNU Obrázek 3.1: Typická výšková mapa razit aproximaci původního spojitého terénu pomocí této množiny, musíme nejprve provést triangulaci. Vytvoření tzv. pravidelné trojúhelníkové sítě je triviální, jelikož i rozmístění bodů mřížky je pravidelné. Část povrchu terénu ohraničenou čtyřmi sousedícími body mřížky můžeme vyjádřit jako dva rovnoramenné pravoúhlé trojúhelníky, které dohromady tvoří čtyřúhelník. Takto vytvořená síť bude složena z (n 1) x (m 1) x 2 trojúhelníků, kde n je šířka a m je výška zdrojové mřížky. Pro reprezentaci terénu můžeme použít i nepravidelné trojúhelníkové sítě (triangulated irregular networks, TIN). Jejich vstupní data nejsou pravidelně rozložena na základě mřížky a nepředstavují terén jako funkci z = f(x, y), jednomu bodu [x, y] může odpovídat více výškových hodnot z a mohou tedy představovat libovolně členitý terén i s převisy a jeskyněmi. Jedná se tedy v podstatě o obecné polygonové 3D modely, které dané aproximace terénu dosahují za použití menšího množství trojúhelníků než pravidelné sítě. Algoritmy pro jejich zpracování a manipulaci s nimi jsou ovšem složitější a náročnější na výkon (např. zjištění výšky libovolného bodu na povrchu terénu nebo pohledové ořezávání). Také vyžadují větší množství paměti, protože již nestačí uchovávat skaláry, ale kompletní prostorové souřadnice bodů a také informace o triangulaci. 10

15 3. ZOBRAZOVÁNÍ TERÉNU 3.2 Zobrazování Máme-li k dispozici trojúhelníkovou síť aproximující daný terén, můžeme ho za použití stávajícího hardware zobrazit. Současná nejrozšířenější rozhraní OpenGL a Direct3D umožňují několik způsobů jak sítě zobrazit. Nejjednodušší je předávat rozhraní jeden trojúhelník po druhém vždy s jeho třemi vrcholy. Každý trojúhelník sítě terénu ovšem sdílí své vrcholy s dalšími trojúhelníky, při tomto postupu je tedy každý vrchol předán několikrát. Rozhraní dovolují definovat množinu trojúhelníků i ve formě trojúhelníkových pásů a vějířů (strips and fans). Obrázek 3.2: Trojúhelníkový pás a vějíř Pás je tvořen dvěma počátečními vrcholy a každý další přidaný vrchol pak tvoří trojúhelník spolu s dvěma předchozími vrcholy. Vějíř je definován podobně, jen trojúhelník není tvořen dvěma předchozími, ale pouze jedním předchozím a prvním vrcholem v posloupnosti. Všechny trojúhelníky vějíře tedy sdílejí tento první vrchol. Vidíme, že pro zobrazování sítě terénu je vhodnější trojúhelníkový pás - každá řada trojúhelníků (vycházející z řady pixelů výškové mapy) může být rozhraní předána jako pás. S využitím degenerovaných trojúhelníků je dokonce možné předat celý terén najednou jako jeden pás. Degenerovaný trojúhelník je takový, který má nulovou plochu a běžně je tvořen dvěma stejnými a jedním různým vrcholem. Je vložen na konec každé řady, aby tvořil počátek nové. Reprezentace trojúhelníků Počet indexů Počet částí Idx. celkem n=m=1025 Jednotlivě 6(n l)(m 1) Pás 2n{m 1) m Degenerovaný pás (2n + 2)(m-l) Tabulka 3.1: Počty indexů a částí pro zobrazení terénu při různých reprezentacích trojúhelníků Předáním sítě jako trojúhelníkového pásu se zbavíme nutnosti duplikovat vrcholy. Jeden vrchol je běžně tvořen minimálně 12 byty (souřadnice X, Y a Z typu float) informací, ale ani více než 32 bytů není neobvyklé (souřadnice, normála, texturové koordináty, barva atd.). 11

16 3. ZOBRAZOVÁNÍ TERÉNU Pro běžný terén budou všechny tyto informace statické a předávat je rozhraní každý snímek je tedy zbytečné. Grafická rozhraní umožňují použití tzv. indexovaných trojúhelníků, kde již není třeba předávat celé vrcholy ale jen indexy do pole vrcholů. Toto pole všech vrcholů je rozhraní předáno jen jednou např. po spuštění programu. Při vykreslování snímku je trojúhelníkový pás definován pouze indexy vrcholů v tomto poli. Velikost indexu je běžně 16 nebo 32 bitů a tedy výrazně menší než odpovídající vrchol. Jak vidíme v tabulce 3.1 nejmenší počet indexů je třeba při použití pásu pro každou řadu výškové mapy. Ovšem potom musíme každou řadu vykreslit zvlášť, pás s degenerovanými trojúhelníky vyžaduje jen nepatrně více indexů, ale je možné ho zobrazit najednou. Kombinací pásů a indexovaných trojúhelníků můžeme často dosáhnout i několikanásobného zrychlení vykreslování terénu. Dalšího výrazného zrychlení můžeme dosáhnout použitím pohledového ořezávání. Jen málokdy vidíme celý terén, většinou je jeho značná část za pozorovatelem a obecně mimo zorné pole kamery. Pro využití ořezávání ovšem již nemůžeme celý terén zobrazit najednou, musíme ho rozdělit na menší celky. Zobrazíme ty z nich, které budou v daném snímku viditelné. Grafická rozhraní také podporují možnost vykreslování jen stran polygonů přivrácených k pozorovateli - pro zobrazování terénu další možnost urychlení. 3.3 Úroveň detailů Triangulace tvořená spojováním sousedních vrcholů do trojúhelníků poskytuje na každém místě terénu stejnou detailnost aproximace povrchu terénu. Pro rozsáhlejší terény běžně dostaneme triangulaci s miliony i desítkami milionů trojúhelníků. I když moderní GPU podle specifikací zvládají zpracovat několik stovek milionů trojúhelníků za sekundu, výkon v reálných aplikacích je nižší. Kdybychom počítali s reálným výkonem 50 milionů za sekundu, terén s deseti miliony trojúhelníky (to je nepříliš rozsáhlý terén tvořený přibližně 2250 x 2250 vzorky) by GPU vykreslovalo pouze v pěti snímcích za vteřinu. S použitím urychlovacích technik popsaných v minulém oddíle bychom vykreslování mohli i několikrát zrychlit, ale co když dostaneme požadavek na zobrazení terénu se sto miliony trojúhelníky? Výkon grafických karet sice rychle roste, ale nároky na kvalitu zobrazení a v případě terénu i na jeho velikost rostou také. Při trojrozměrném zobrazení terénu s použitím perspektivní projekce jsou trojúhelníky vzdálené od kamery promítnuty do výsledného obrazu jen jako jeden nebo několik málo pixelů. V případě velmi rozsáhlých terénů to mohou být jen zlomky pixelu. Dochází zde k typu aliasu známému jako převzorkování (oversampling). Nemá smysl vykreslovat dvacet trojúhelníků na jeden pixel, když výsledná barva bude stejně určena jen jedním z nich. Navíc pokud by se barva blízkých trojúhelníků znatelněji lišila, při pohybu kamery by vznikaly vizuální artefakty způsobené právě aliasem. Pokud bychom triangulaci zvolili tak, aby jeden pixel byl pokryt jedním nebo jen několika málo trojúhelníky, zbavili bychom se aliasu a hlavně by se podstatně snížil počet trojúhelníků triangulace. To by nám zase dovolilo zobrazit rozsáhlejší terény. Nalezení právě takové triangulace, která co nejvěrněji aproximuje 12

17 3. ZOBRAZOVÁNÍ TERÉNU povrch terénu, ale tvoří ji menší množství trojúhelníků, řeší algoritmy pro úroveň detailu (LOD, level of detail). Algoritmy LOD se obecně dělí na diskrétní a spojité. Diskrétní algoritmy používají pro každý objekt jeho předem připravené varianty s klesající úrovní detailu (méně trojúhelníků). Během vykreslování je vybrána vhodná varianta, a to na základě vzdálenosti objektu od kamery nebo na základě jiné metriky. Výhodou diskrétních algoritmů je jejich rychlost - spočítáme jen nějakou jednoduchou metriku a není nutné provádět jiné výpočty a zvláště ne ty, jejichž délka provádění závisí na složitosti objektu. Nevýhodou jsou potom viditelné chyby v zobrazení při přepínání mezi jednotlivými úrovněmi. Ty lze omezit například interpolací mezi dvěma variantami objektu namísto pouhého přepnutí při překročení meze na základě metriky. Spojité algoritmy naopak vytvářejí zjednodušení původního modelu přímo za běhu programu. Pro každý objekt je zvolena úroveň detailu přesně a lze ji také plynule měnit. Spojité algoritmy jsou výpočetně náročnější, ale nedochází u nich ke skokovým změnám v zobrazení objektů jako u diskrétních metod. Rozšíření spojitých algoritmů označované jako pohledově závislé dovoluje použití různých úrovní detailu na různých místech objektu v závislosti na pozici a případně i orientaci kamery. V blízkosti pozorovatele může být model velice detailní, zatímco vzdáleným nebo málo významným místům bude detail chybět. Právě pohledově závislá varianta spojitých algoritmů je pro zobrazování terénů často používána, protože poskytuje větší detail u pozorovatele a redukci počtu trojúhelníků dále od kamery (nebo i mimo zorné pole), kde to již pro pozorovatele nebude patrné. V posledních letech se používají i metody kombinující diskrétní přístup a pohledově závislé zjednodušování. 3.4 Přehled a vývoj zobrazovacích metod Od počátku devadesátých let bylo vyvinuto mnoho rozdílných metod určených výhradně pro zobrazování terénu s úrovní detailu. Většina je založena na pravidelných trojúhelníkových sítích a používá nějakou hierarchickou strukturu - nejčastěji binární a kvadrantové stromy. Některé starší metody pracují systémem zdola nahoru, kdy začínají s detailní reprezentací terénu a slučují trojúhelníky do větších. Tyto metody jsou ovšem závislé na velikosti terénu a pro rozsáhlé terény nejsou vhodné. Modernější metody pracují opačně - systém shora dolů začíná s hrubou aproximací terénu a postupně ji zjemňuje. Nezáleží tedy tolik na velikosti nejdetailnější aproximace terénu, protože ji prakticky nikdy nedosáhneme pro celý terén. Starší metody z doby před rozšířením levných a výkonných GPU často pracují i s jednotlivými trojúhelníky. Procesor býval rychlejší než grafické karty a z hlediska rychlosti vykreslování se vyplatilo nechat CPU udělat více práce tak, aby karta dostala co nejmenší počet trojúhelníků. Později došlo k obratu a je snaha minimalizovat zatížení CPU a maximalizovat práci vykonanou GPU. 13

18 3. ZOBRAZOVÁNÍ TERÉNU Jeden z prvních algoritmů pro zobrazování terénu v reálném čase se spojitou úrovní de tailu publikovali v roce 1996 Lindstrom a Koller pod názvem Continuous Level of Detail for Height Fields [ ] (dále CLOD). Pracuje s mřížkou trojúhelníků vytvořenou z výškové mapy, kterou zjednodušuje opakovaným spojováním dvou sousedících stejně velkých troj úhelníků. Algoritmus používá jako kritérium pro zjednodušování geometrickou chybu v souřad ném systému obrazovky (tedy po perspektivní projekci). Tato chyba je definována jako vzdálenost mezi vrcholem v jemnější triangulaci a místem ve zjednodušené triangulaci, kde daný vrchol chybí. Během zjednodušování je porovnána s uživatelsky definovatelnou mezí a pokud je menší, dvojice trojúhelníků v okolí daného vrcholu je spojena. Postup používající při hledání vhodné triangulace geometrickou chybu byl přejat (a případně upraven) mnoha následujícími metodami. CLOD tedy pracuje tedy systémem zdola nahoru. Pro snížení závislosti na velikosti vstupu může být terén rozdělen do samostatných čtvercových bloků. Bloky o různé veli kosti jsou uloženy v kvadrantovém stromu a lze je podle potřeby spojovat a dělit a to opět na základě chybových hodnot. Trojúhelníky v těchto blocích jsou potom zjednodušovány výše popsaným algoritmem. Použití kvadrantového stromu také umožňuje rychlé hierarchické testování viditelnosti - není-li některý z uzlů viditelný, nemohou být viditelní ani jeho po tomci. Reprezentace terénu stromovou strukturou, hierarchické testování viditelnosti i dě lení a spojování větších celků terénu jsou opět aspekty CLOD přejaté v různých formách mnoha pozdějšími metodami. Také s problémem prasklin povrchu na hranicích jednotli vých bloků nebo i jinde, kde se stýkají oblasti s rozdílnou úrovní detailu, se potýká většina algoritmů pro zobrazování terénu. CLOD praskliny řeší systémem závislostí vrcholů, jedná se o relativně komplikované řešení. Ve své době se velice rozšířeným algoritmem stal ROAM, který publikoval Duchaineau a kolektiv v roce 1997 v práci Real-time Optimally Adapting Meshes [ ]. ROAM zjedno dušuje (např. řešení prasklin) a rozšiřuje (např. možnost explicitně určit cílový počet troj úhelníků) některé oblasti metody CLOD. Dle autorů je doba běhu plně optimalizovaného algoritmu závislá pouze na změně počtu výstupních trojúhelníků na snímek, nikoliv na ve likosti vstupního terénu. Terén je v algoritmu ROAM reprezentován jako binární strom, jehož uzly tvoří rovnoramenné pravoúhlé trojúhelníky. Kořenem stromu je trojúhelník na nejhrubší úrovni detailu (pro čtvercový terén tedy potřebujeme dva stromy), jehož dva potomci jsou vytvořeni roz dělením tohoto trojúhelníku úsečkou vedenou z vrcholu u pravého úhlu do středu přepony. Ostatní uzly stromu dostaneme rekurzivním opakováním tohoto dělení. Základem tvorby zjednodušené triangulace jsou operace split a merge. Split rozdělí uzel stromu (tedy pravoúhlý trojúhelník) na dva menší a tím zvýší detailnost terénu. Inverzní operace merge naopak trojúhelníky spojí. Při operacích je nutno dodržovat jistá pravidla, která zamezí vzniku prasklin na výsledném povrchu terénu. Podobně jako CLOD i ROAM využívá geometrické chyby, které zde vychází z obalových těles trojúhelníků. Výsledný model terénu je vytvořen aplikací série funkcí split a merge na trojúhelníky v binárním stromu. Při vykreslování každého snímku probíhá rozdělování a slučování, dokud nejsou 14

19 3. ZOBRAZOVÁNÍ TERÉNU splněny dané podmínky (čas na zpracování jednoho snímku, počet trojúhelníků aproximace). ROAM pracuje shora dolů a také využitá snímkové koherence - model terénu nemusí být pro každý snímek budován znovu, ale je možné začít s výsledky z minulého snímku, čímž se vykreslování v některých případech značně urychlí. c) d) Obrázek 3.3: Ukázkové triangulace pomocí algoritmů: a) CLOD, b) ROAM, c) Röttger, d) Geometry Clipmaps Jiný algoritmus pracující s kvadrantovými stromy představil Röttger a kolektiv v práci Real-Time Generation of Continuous Levels of Detail for Height Fields [<>] v roce Pro vykreslování čtvercové oblasti terénu náležící uzlu stromu upřednostňuje trojúhelníkový vějíř se společným vrcholem uprostřed čtverce. Algoritmus pracuje shora dolů, na základě geometrické chyby buď vykreslý trojúhelníkový vějíř pro daný uzel nebo postupuje dále k potomkům uzlu. Zamezení vzniku prasklin mezi čtvercovými bloky je řešeno vynecháním určitých trojúhelníků vějíře na straně sousedící s blokem jiné úrovně detailu. Metoda se vyznačuje nízkými paměťovými nároky na uchovávání dat terénu v porovnání se staršími postupy. Článek také zmiňuje geomorfování, metodu pro postupný přechod mezi úrovněmi detailů pomocí interpolace. Geomorfování potlačuje jev zvaný popping, který nastává při náhlém přechodu mezi úrovněmi. 15

20 3. ZOBRAZOVÁNÍ TERÉNU Metodu SOAR (Stateless One-pass Adaptive Refinement) publikovali Lindstrom a Pascucci v roce 2001 [ ] a dále rozšířili v roce 2002 [ ]. Dle autorů jde o elegantní a jednoduše implementovatelný systém pro zobrazování a zjemňování rozsáhlých terénů v závislosti na pozici kamery, který je nezávislý na použité chybové metrice. Podporuje rychlé hierarchické pohledové ořezávání, generování trojúhelníkových pásů a možnost rozdělení procesů zjem ňování a zobrazování do oddělených vláken, čímž lze výrazně zvýšit výkon na víceproce sorových platformách. Také začíná nejhrubší aproximací terénu a postupně dělí pravoúhlé trojúhelníky podle přepony na základě chybových hodnot. Elegantně řeší problém vzniku prasklin pomocí vnořené hierarchie ohraničujících koulí pro každý vrchol. Počátkem třetího tisíciletí již byly grafické karty natolik výkonné, že přestalo být vý hodné vykreslovat co nejmenší triangulaci a neúměrně tím zatěžovat CPU. Začaly se obje vovat nové metody, které místo toho pracovaly dle myšlenky: Pošli na GPU tolik trojúhel níků kolik zvládne a to při co nejmenším zatížení CPU." Místo tvorby přesných triangulací s co nejmenším počtem trojúhelníků pro zobrazení terénu s maximální požadovanou chy bou pracují tyto metody často s celými bloky trojúhelníků jako se základními a dále neděli telnými jednotkami. Tyto bloky mají často nějakým způsobem předem připravené diskrétní úrovně detailu. Moderní GPU pracují nejrychleji se statickou geometrií přímo uloženou v je jich paměti, je zde tedy snaha veškerá data terénu přesunout do VRAM. Zde jsou ovšem nedostupná pro CPU (přístup je pomalý) a proto moderní metody nemohou přistupovat k jednotlivým vrcholům a trojúhelníkům, tak jak na to spoléhaly starší metody (chybové hodnoty a další pomocné informace uložené per vertex). Pomocné informace používané pro určení úrovně detailů musí tedy být vyjádřeny pro jednotlivé bloky terénu. Jedna z prvních metod využívající nových GPU je Geomipmapping. Tato metoda je po drobněji popsána v následujícím oddíle, neboť se jedná o základ této práce. V poslední době je populární algoritmus Geometry Clipmaps, který publikovali v roce 2003 Losasso a Hoppe ['. ]. Používá pyramidální hierarchii bloků terénu centrovanou na pozici kamery, kdy čím je blok menší, tím je detailnější. V blízkosti pozorovatele je zobra zen blok na nejvyšší úrovni detailu, který v určité vzdálenosti plynule přechází do hrubšího bloku o větší rozloze. Hierarchie se pohybuje spolu s kamerou a je nutné data v pyramidě často aktualizovat. Algoritmus nepotřebuje k chodu žádné předpočítané hodnoty. Chybová metrika totiž nebere v potaz členitost terénu a je nezávislá na vstupních datech, proto je tato metoda ideální k použití komprese zdrojových dat. Autoři implementovali ztrátovou kompresi a dosáhli velmi dobrých výsledků (až 0,02 bytů na jeden vzorek výškové mapy). Data jsou dekomprimována v reálném čase při aktualizaci pyramidy. Nevýhodou tohoto algoritmu je značný počet trojúhelníků výsledného terénu v porovnání s ostatními meto dami a také poměrně složitá implementace. Je tedy vhodný jen pro výkonné grafické karty, které jsou však dnes již relativně běžné. Metodu je možné na moderních GPU implemento vat téměř zcela pomocí vertex a fragment programů ([11]), čímž dochází k přesunu značné části zátěže z procesoru centrálního na grafický. Popis praktické implementace Geometry Clipmaps najdeme v [15]. Metoda byla později rozšířena i o zpracování planetárních těles v [14]. 16

21 3. ZOBRAZOVÁNÍ TERÉNU Přehled řady starších i novějších metod pro zobrazování terénu můžeme najít na webové stránce http: //www. vterrain. org. 3.5 Geomipmapping Metodu Geomipmappingu představil v roce 2000 Willem H. de Boer v článku Fast Terrain Rendering Using Geometrical MipMapping [9] a je základem pro rozšířenou metodu prezentovanou v této práci. Podobně jako jiné algoritmy i Geomipmapping využívá kvadrantové stromy. Terén je rozdělen do menších bloků, které jsou uloženy pouze v listech stromu. Strom je použit pro rychlé hierarchické ořezávání geometrie. Každý uzel má definovánu ohraničující obálku - v případě listů jde o nejmenší možný kvádr schopný pojmout všechny vrcholy trojúhelníků v bloku terénu náležejícím tomuto listu. Obálka uzlů vyšších pater reprezentuje kvádr obsahující obálky všech potomků tohoto uzlu. Při ořezávání postupujeme od kořene stromu a testujeme viditelnost všech jeho potomků. Test je rekurzivně aplikován na viditelné uzly a po dosažení listu je blok terénu, který mu náleží, vykreslen. Bloky vzdálené od kamery můžeme zobrazit s menším detailem než ty blízké. Obdobně jako u techniky mipmappingu pro běžné textury, i zde je během předzpracování vytvořeno několik úrovní detailu pro každý blok. Každá nižší úroveň má poloviční rozlišení než předchozí a čtvrtinovou paměťovou náročnost. Blok terénu je čtverec o velikosti strany 2 n + 1 vrcholů. Nižší úroveň detailu vytvoříme tak, že z vyšší úrovně použijeme vzorky jen na lichých pozicích, čímž dostaneme blok o velikosti 2 n ~ l + 1. Obrázek 3.4: Sdílení hraničních vrcholů sousedícími bloky Máme-li zdrojovou výškovou mapu o velikosti 256 x 256 vzorků a jako velikost bloku zvolíme 17 x 17 vrcholů, dostaneme celkem 16 x 16 = 256 bloků. Vrchol trojúhelníku neodpovídá hexelu výškové mapy, jde jen o geometrický bod, kdežto hexel mapy reprezentuje jistou plochu s výškou odpovídající hodnotě hexel. Ovšem vrcholům mřížky musíme přiřadit právě výškové hodnoty mapy. Aby mřížka měla stejnou velikost jako výšková mapa (zde 256), musíme jeden sloupec a jednu řadu vrcholů na konec mřížky přidat (první vr- 17

22 3. ZOBRAZOVÁNÍ TERÉNU chol bude totiž na pozici [0,0] a 256. vrchol řádku mřížky na [255,0]). Tím dostaneme veli kost bloku 2n + 1. Nové vrcholy na okraji terénu dostaneme jednoduše tak, že zkopírujeme poslední hraniční vrcholy. Jako nové vrcholy bloků musíme použít počáteční vrcholy sou sedního bloku (viz 3.4). Tak zůstane spojitost terénu na hranici bloků zachována. Na rozdíl od tvorby mipmap pro textury nelze u geomipmap použít žádné filtrování, tím bychom o spojitost na hranicích bloků mohli přijít. Při zobrazování vybereme odpovídající úroveň geomipmapy pro každý viditelný list stromu v závislosti na vzdálenosti od kamery a členitosti terénu bloku. Stejně jako řada jiných metod i Geomipmapping používá geometrickou chybu, tentokrát je to však jedna hodnota pro celou geomipmapu. Je definována jako maximum z rozdílů výšek vrcholů ve vyšší geomipmapě a místem v aktuální geomipmapě, kde daný vrchol chybí. Dá se tedy chá pat jako cena přepnutí na méně detailní geomipmapu. Chyba je promítnuta do souřadného systému obrazovky a při výběru mipmapy k zobrazení je nejprve vybrána ta nejdetailnější. Chyba o jednu úroveň nižší mipmapy je porovnána s uživatelskou mezí, a je-li menší, je tato úroveň použita. Takto jsou následně porovnávány i další nižší úrovně, a to dokud chyba jedné z nich nepřekročí uživatelskou chybu, nebo není dosaženo nejnižší úrovně. Obrázek 3.5: Triangluace terénu metodou Geomipmapping Aby mezi bloky v rozdílných úrovních detailu nevznikaly praskliny, musíme z okraje detailnější ze dvou sousedících geomipmap odstranit 1 vrcholy, které v méně detailní nejsou. 1. pouze je v tomto snímku vyřadit z triangulace určené pro vykreslení 18

23 3. ZOBRAZOVÁNÍ TERÉNU Aby listy mohly rychle zjistit úroveň detailu okolních geomipmap, obsahují ukazatele na svoje sousedy Autor navrhuje použití trojúhelníkových vějířů pro zobrazování okrajů částí bloků, ze kterých lze nadbytečné vrcholy jednoduše vypustit. Autor v článku dále zmiňuje možné rozšíření o trilineární geomipmapping. Opět se jedná analogii k běžnému texturování za použití mipmappingu - z hlediska zobrazování terénu jde o obdobu geomorfování používanou jinými algoritmy. Při použití perspektivní projekce chyb bloků a dostatečně nízké uživatelské tolerance výrazně omezíme popping. Pro některé aplikace by to ovšem stále nemuselo stačit a také je třeba vzít v úvahu významný nárůst počtu trojúhelníků triangulace terénu při snižování chybové tolerance. Trilineární geomipmapping neprepína mezi úrovněmi mipmap skokově, ale přechod je pozvolný. V okolí přechodu je výška vrcholů výsledkem lineární interpolace výšek odpovídajících vrcholů v mipmapách, mezi kterými dochází k přechodu. Koeficient interpolace potom vychází z chybových hodnot obou mipmap. Původní algoritmus byl v následujících letech rozšířen i jinými autory. Geomorfování prováděné grafickou kartou pomocí vertex programů a výhodnější uspořádání trojúhelníků v blocích popisují Larsen a Christensen v [12]. Zobrazování terénů, které se nevejdou do paměti a jejich texturování se věnuje Brodersen v [13] 3.6 Možnosti využití GPU Jak již bylo zmíněno, vykreslování geometrie terénu po větších celcích ze statických dat umístěných v paměti GPU je základním předpokladem pro využití výkonového potenciálu moderních grafických karet. Jde však pouze o způsob uložení dat. Kromě toho můžeme pro zobrazování terénu využít i některé z nově dostupných schopností GPU přímo přesunujících práci z CPU na GPU. Programovatelná GPU nám poskytují nové přístupy k řešení různých aspektů zobrazování terénů. Při vykreslování trojúhelníků musím každý vrchol mít kompletní prostorové souřadnice [x,y,z\. Jak již víme, jsou v případě terénu xay rozmístěny v pravidelné mřížce. Tato mřížka je pro celý terén stejná, a pokud je terén rozdělen na menší části, bylo by výhodné mít možnost tuto mřížku vždy znovu použít. S použitím jedné mřížky pro všechny bloky terénu bychom mohli ušetřit značné množství paměti nutné k uchovávání dat terénu - kromě zanedbatelné velikosti mřížky (vzhledem k celkové velikosti terénu) bychom pro každý vrchol terénu potřebovali již jen souřadnici z. Pro správné vykreslení bloku terénu za použití sdílené mřížky potřebujeme mřížku přesunout na odpovídající místo v prostoru a pro každý vrchol získat odpovídající výškovou hodnotu z. Souřadnice mřížky dále můžeme mít v intervalu [0,1] a použít je zároveň i jako texturové koordináty nebo jakékoliv jiné hodnoty, které se postupně na povrchu terénu mění. Hodnoty nutné pro škálování mřížky daného bloku jednoduše předáme vertex programu jako parametry a pole výšek jako atributy vrcholů. Výškové hodnoty můžeme dokonce generovat přímo na GPU např. pomocí některé šumové funkce. Moderní grafické karty umožňují přístup k texturám i během zpracovávání vrcholů ve vertex programu (označováno jako Vertex Texture Fetch, dále jen VTF). VTF je ideálním ře- 19

24 3. ZOBRAZOVÁNÍ TERÉNU šením pro zobrazování terénu - výškovou mapu máme jako texturu a každý vrchol terénu může během svého zpracování zjistit výšku terénu v jakémkoliv jiném místě terénu (popř. bloku terénu). Tato technika je výhodná např. pro geomorfování terénu nebo i pro záplatování prasklin mezi bloky terénu, a to vše bez přičinění CPU. VTF můžeme také využít pro generování a deformace terénu přímo na GPU. Ve fragment programu můžeme na základě stávající výškové textury spočítat upravenou nebo vygenerovat úplně novou. Pokud jako vykreslovací cíl (render target) zvolíme texturu, můžeme ji pak použít jako novou výškovou texturu pro VTF. Takto můžeme vytvořit doslova nekonečný procedurální terén. Různé deformace i generování výšek můžeme sice provádět přímo ve vertex programu, ale zde by bylo nutné tyto výpočty provádět pro každý snímek. To je vhodné například pro vlnění vodní hladiny, ale ne pro méně časté jednorázové změny terénu. Nejmodernější GPU kromě klasických vertex a fragment programů podporují i nové tzv. geometry shaders. Tyto programy umožňují tvorbu nových vrcholů a trojúhelníků přímo na GPU. S jejich použitím bychom teoreticky mohli mít jako vstup pro zobrazování terénu pouze texturu s výškovými daty a i trojúhelníkové mřížky by generovalo GPU. Zatím je však provádění těchto programů velice pomalé a výstupní geometrie má různá omezení. Na GPU budoucnosti však již jejich použití může být reálnou možností. Použití fragment programů na prvních programovatelných GPU bylo také velice omezené oproti dnešnímu stavu. S pomocí fragment programů můžeme vykreslit povrchy terénů za použití mnoha různých a dříve nedostupných nebo příliš drahých technik. Nejjednodušším způsobem vizualizace terénu je jeho obarvení dle výšky, kde např. nížiny jsou zelené, vrchoviny hnědé a vrcholky hor bílé. Tímto způsobem můžeme terén obarvit kompletně ve fragment programu i s lineárně interpolovanými přechody mezi jednotlivými barvami. Stačí nám jen znát výšku terénu v daném místě a také její možný rozsah. OpenGL umožňuje použít osvětlení už od svého vzniku, ovšem výpočty jsou prováděny na jednotlivých vrcholech a výsledné barvy na povrchu trojúhelníků jsou interpolovaný na základě barev vrcholů, které je tvoří. Pro zobrazování osvětlených terénů se také běžně využívalo tzv. světelné mapy (light map), což je běžná textura do níž jsou zaneseny předem spočítané hodnoty osvětlení terénu. Tato textura je při vykreslování modulována s difúzni texturou terénu (případně mohou být obě mapy smíchány dopředu). Tímto způsobem dostaneme kvalitní osvětlení (počítáme předem a můžeme si dovolit náročnější výpočty) i s možnými stíny vrhanými terénem nebo jinými objekty. Ovšem výsledkem je naprosto statické osvětlení. Také rozlišení světelné mapy je omezené a na terénu blízko kamery může být jeden texel mapy roztažený přes značnou část terénu. Programovatelná GPU nám dovolují počítat dynamické osvětlení přímo jednotlivých pixelů výsledného obrazu a to za použití libovolného osvětlovacího modelu. Abychom mohli spočítat dynamické osvětlení, musíme mít k dispozici normálové vektory povrchu terénu. V současnosti se běžně uchovávají ve formě normálových map - každá složka normalizovaného vektoru je zde uložena jako barevná komponenta textury. Ve fragment programu z této textury vezmeme odpovídající vzorek a použijeme ho k výpočtu osvětlení. Rozlišení normálových map je ovšem také omezeno, pro větší detailnost osvětlení blízko kamery můžeme 20

25 3. ZOBRAZOVÁNÍ TERÉNU normály získané z mapy modulovat nějakou šumovou funkcí nebo navíc použít speciální normálovou mapu s vysokofrekvenčními detaily povrchu (může se např. lišit podle materiálů terénu v daném místě). Další technikou zlepšující vizuální dojem z povrchu terénu je paralaxní mapování (parallax mapping, také označováno jako offset mapping nebo virtual displacement mapping), které je jednoduše implementovatelné pomocí fragment programu. Za pomocí informací z výškové mapy a směru pohledu kamery modifikuje texturové koordináty pro přístup k difúzni i normálové mapě, tak aby výsledné zobrazení povrchu budilo dojem opravdové hloubky a plastičnosti. Jak plyne z jednoho z uvedených názvů metody, jedná se o napodobení techniky displacement mapování, která na základě výškové mapy přímo modifikuje pozice vrcholů (zobrazování terénu jako takové je vlastně formou displacement mapování). Paralaxní mapování ovšem pracuje pouze s texturami a je výrazně rychlejší. Pro pravý displacement totiž musíme mít k dispozici dostatečný počet vrcholů, které můžeme přesunout, kdežto pro paralaxní mapování nám stačí dostatečné rozlišení textur. Paralaxní mapování pro zobrazení terénu můžeme použít např. pro zlepšení prostorového dojmu z různých materiálů na povrchu terénu (tedy pro vysokofrekvenční detaily). Podrobnosti o implementací paralaxního i normálového mapování najdeme v oddíle Použitý vzorek Původní vzorek textury Obrázek 3.6: Princip paralaxního mapování Paralaxní mapování bylo několikrát rozšířeno, objevily se také mnohé další techniky pro dosažení realističtějšího vzhledu povrchů. Při použití programovatelných GPU tedy můžeme povrchy zobrazit téměř podle našich představ, musíme ovšem přijít s dostatečně efektivní implementací naší myšlenky. Programovatelná GPU dobře využijeme i při vizualizaci dalších aspektů terénu. Vzdálený terén se v reálném světě pozorovateli jeví jakoby zamlžený vlivem rozptylu světla v atmosféře. K simulaci tohoto efektu můžeme použít běžnou mlhu, kterou OpenGL podporuje od svého vzniku. Výsledek ovšem není příliš věrohodný. Připomíná spíše starší počítačové hry, kde bylo mlhy hojně využíváno k zamaskování blízké hranice vykreslování herního světa. Ve fragment programu můžeme spočítat rozptyl světla podle platných fyzikálních zákonů (jejich efektivních aproximací). Dalším místem, kde lze dobře využít GPU programů 21

26 3. ZOBRAZOVÁNÍ TERÉNU je zobrazování vodních ploch na terénu. Můžeme počítat reflexi i refrakci vodního povrchu i simulovat jeho vlnění. 22

27 Kapitola 4 Víceúrovňový geomipmapping Původní metoda geomipmappingu popsaná v předchozí kapitole není příliš vhodná pro větší terény a pro zobrazování velice rozsáhlých terénu je již nepoužitelná. Modifikoval jsem metodu geomipmappingu, aby byla schopná tyto terény zobrazit v reálném čase. V této kapitole najdeme rámcový popis principů této modifikace nazvané víceúrovňový geomipmapping, následující kapitola se věnuje detailům její implementace. 4.1 Motivace Základní geomipmapping obsahuje výšková data terénu pouze v listech stromu. To představuje hlavní problém této metody při zobrazování velice rozsáhlých terénů, které mají značný počet listů. Při běžné velikosti části terénu reprezentované jedním uzlem 33 x 33 vzorků bude mít terén velikosti x vzorků celkem listů. Mnoho z těchto listů bude oříznuto při kontrole viditelnosti, ale stále jich ke zpracování zbude velké množství a to pro každý snímek. Kontrola viditelnosti (a další operace s uzly prováděné CPU) ve stromu s takovým množstvím uzlů už může být poměrně drahou operací. Při zobrazování listů ve velké vzdálenosti dochází díky perspektivní projekci ke stejnému jevu jako při zobrazování vzdálených trojúhelníků v popisu principu úrovně detailů v oddíle 3.3. Jen v tomto případě místo trojúhelníků jde o celé bloky trojúhelníků. I když v těchto vzdálenostech by pravděpodobně všechny listy byly zobrazeny s nejnižší úrovní detailu, ta by stále mohla být příliš detailní. Vzniká zde tedy potřeba pro princip kontroly úrovně detailu pracující nad stávajícím výběrem mipmapy a pracující na celých listech a obecně uzlech stromu. Článek představující původní metodu geomipmappingu velice krátce zmiňuje i možnost nahrávání dat terénu během jeho zobrazování, což je základní předpoklad pro zpracování velice rozsáhlých terénů, které se celé nevejdou do operační paměti. Struktura stromu, obálky uzlů a chybové hodnoty úrovní jednotlivých mipmap jsou spočítány předem. V průběhu zobrazování jsou detailnější mipmapy listů načteny ze souboru až když by měly být zobrazeny. Kromě základního principu další podrobnosti již v článku nenajdeme. 4.2 Princip modifikace Základním kamenem modifikované metody je možnost ukládat výšková a jiná data terénu i v jiných patrech stromu než v listech. Uzel ve vyšším patře pokrývá oblast terénu všech 23

Zobrazování terénu. Abstrakt. 1. Úvod. 2. Vykreslování terénu

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

Více

Fakulta informačních technologíı. IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL 1 / 38

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

Více

Co je grafický akcelerátor

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

Více

Programování shaderů GLSL

Programování shaderů GLSL Programování shaderů GLSL Příklad vertex shader Tutor1-Flat Změna geometrie ve VS Nastavení z podle hodnoty získané z aplikace uniform App: loc=gl.glgetuniformlocation(sp,"ftime0_x"); gl.gluniform1f(loc,time);

Více

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 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í

Více

GIS Geografické informační systémy

GIS Geografické informační systémy GIS Geografické informační systémy Obsah přednášky Prostorové vektorové modely Špagetový model Topologický model Převody geometrií Vektorový model Reprezentuje reálný svět po jednotlivých složkách popisu

Více

Android OpenGL. Práce s texturami

Android OpenGL. Práce s texturami Android OpenGL Práce s texturami Textura Obrázek, který jsme schopní nanášet na 3D objekty S použitím shaderů mnohem víc než to Může obsahovat jiné vlastnosti povrchu, než jen barvu (reliéf, lesklost,

Více

GIS Geografické informační systémy

GIS Geografické informační systémy GIS Geografické informační systémy Obsah přednášky Prostorové vektorové modely Špagetový model Topologický model Převody geometrií Vektorový model Reprezentuje reálný svět po jednotlivých složkách popisu

Více

Základy 3D modelování a animace v CGI systémech Cinema 4D C4D

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

Více

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 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

Více

Úvod do GIS. Prostorová data II. část. Pouze podkladová prezentace k přednáškám, nejedná se o studijní materiál pro samostatné studium.

Úvod do GIS. Prostorová data II. část. Pouze podkladová prezentace k přednáškám, nejedná se o studijní materiál pro samostatné studium. Úvod do GIS Prostorová data II. část Pouze podkladová prezentace k přednáškám, nejedná se o studijní materiál pro samostatné studium. Karel Jedlička Prostorová data Analogová prostorová data Digitální

Více

StatSoft Jak vyzrát na datum

StatSoft Jak vyzrát na datum StatSoft Jak vyzrát na datum Tento článek se věnuje podrobně možnostem práce s proměnnými, které jsou ve formě datumu. A že jich není málo. Pokud potřebujete pracovat s datumem, pak se Vám bude tento článek

Více

13 Barvy a úpravy rastrového

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

Více

8. přednáška z předmětu GIS1 Rastrový datový model a mapová algebra

8. přednáška z předmětu GIS1 Rastrový datový model a mapová algebra 8. přednáška z předmětu GIS1 Rastrový datový model a mapová algebra Vyučující: Ing. Jan Pacina, Ph.D. e-mail: jan.pacina@ujep.cz Pro přednášku byly použity texty a obrázky z www.gis.zcu.cz Předmět KMA/UGI,

Více

Návod k použití softwaru Solar Viewer 3D

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íce

Programátorská dokumentace

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

Více

Vektorové grafické formáty

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ý

Více

Grafika na počítači. Bc. Veronika Tomsová

Grafika na počítači. Bc. Veronika Tomsová Grafika na počítači Bc. Veronika Tomsová Proces zpracování obrazu Proces zpracování obrazu 1. Snímání obrazu 2. Digitalizace obrazu převod spojitého signálu na matici čísel reprezentující obraz 3. Předzpracování

Více

Zobrazování těles. problematika geometrického modelování. základní typy modelů. datové reprezentace modelů základní metody geometrického modelování

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

Více

11 Zobrazování objektů 3D grafiky

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

Více

GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY 6

GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY 6 UNIVERZITA TOMÁŠE BATI VE ZLÍNĚ FAKULTA APLIKOVANÉ INFORMATIKY GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY 6 Lubomír Vašek Zlín 2013 Obsah... 3 1. Základní pojmy... 3 2. Princip rastrové reprezentace... 3 2.1 Užívané

Více

Úvod. Programovací paradigmata

Úvod. Programovací paradigmata .. Úvod. Programovací paradigmata Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Cíl: programování efektivně a bezpečně Programovací techniky

Více

Reprezentace 3D modelu

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é

Více

Algoritmy výpočetní geometrie

Algoritmy výpočetní geometrie Algoritmy výpočetní geometrie prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)

Více

Geekovo Minimum. Počítačové Grafiky. Nadpis 1 Nadpis 2 Nadpis 3. Božetěchova 2, Brno

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í

Více

Rastrová reprezentace

Rastrová reprezentace Rastrová reprezentace Zaměřuje se na lokalitu jako na celek Používá se pro reprezentaci jevů, které plošně pokrývají celou oblast, případně se i spojitě mění. Používá se i pro rasterizované vektorové vrstvy,

Více

Diplomová práce Prostředí pro programování pohybu manipulátorů

Diplomová práce Prostředí pro programování pohybu manipulátorů Diplomová práce Prostředí pro programování pohybu manipulátorů Štěpán Ulman 1 Úvod Motivace: Potřeba plánovače prostorové trajektorie pro výukové účely - TeachRobot Vstup: Zadávání geometrických a kinematických

Více

Pohled do nitra mikroprocesoru Josef Horálek

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á

Více

1. Úvod do obsluhy AutoCADu

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ý

Více

Počítačová grafika 2 (POGR2)

Počítačová grafika 2 (POGR2) Počítačová grafika 2 (POGR2) Pavel Strachota FJFI ČVUT v Praze 19. února 2015 Kontakt Ing. Pavel Strachota, Ph.D. Katedra matematiky Trojanova 13, místnost 033a E-mail: pavel.strachota@fjfi.cvut.cz WWW:

Více

Rastrová reprezentace geoprvků model polí Porovnání rastrové a vektorové reprezentace geoprvků Digitální model terénu GIS 1 153GS01 / 153GIS1

Rastrová reprezentace geoprvků model polí Porovnání rastrové a vektorové reprezentace geoprvků Digitální model terénu GIS 1 153GS01 / 153GIS1 GIS 1 153GS01 / 153GIS1 Martin Landa Katedra geomatiky ČVUT v Praze, Fakulta stavební 14.11.2013 Copyright c 2013 Martin Landa Permission is granted to copy, distribute and/or modify this document under

Více

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013

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

Více

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1 Kapitola 4 Rasterizace objektů Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na rastrově definované obrazy. Při zobrazení reálného modelu ve světových souřadnicích na výstupní

Více

1 Obsah přípravné fáze projektu Poohří

1 Obsah přípravné fáze projektu Poohří 1 Obsah přípravné fáze projektu Poohří V rámci projektu Poohří budou pro účely zatápění povrchových hnědouhelných dolů modelovány a predikovány pohyby nadzemních i podzemních vod a jejich předpokládané

Více

Autodesk AutoCAD 2020

Autodesk AutoCAD 2020 Novinky Autodesk AutoCAD 2020 www.graitec.cz www.cadnet.cz, helpdesk.graitec.cz, www.graitec.com PDF dokument obsahuje přehled novinek produktu AutoCAD 2020. Obsah: Úvod... 3 1. Zjednodušené vkládání bloků...

Více

9 Prostorová grafika a modelování těles

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.

Více

09. Memory management. ZOS 2006, L.Pešička

09. Memory management. ZOS 2006, L.Pešička 09. Memory management ZOS 2006, L.Pešička Správa paměti paměťová pyramida absolutní adresa relativní adresa počet bytů od absolutní adresy fyzický prostor adres fyzicky k dispozici výpočetnímu systému

Více

Implementace systémů HIPS: historie a současnost. Martin Dráb

Implementace systémů HIPS: historie a současnost. Martin Dráb Implementace systémů HIPS: historie a současnost Martin Dráb martin.drab@secit.sk HIPS: základní definice Majoritně používané operační systémy disponují bezpečnostními modely, které dovolují jednotlivým

Více

Počítačová grafika 1 (POGR 1)

Počítačová grafika 1 (POGR 1) Počítačová grafika 1 (POGR 1) Pavel Strachota FJFI ČVUT v Praze 8. října 2015 Kontakt Ing. Pavel Strachota, Ph.D. Katedra matematiky Trojanova 13, místnost 033a E-mail: WWW: pavel.strachota@fjfi.cvut.cz

Více

Geometrické algoritmy pro počítačovou grafiku

Geometrické algoritmy pro počítačovou grafiku České vysoké učení technické v Praze Fakulta jaderná a fyzikálně inženýrská Katedra fyzikální elektroniky Informatická fyzika Geometrické algoritmy pro počítačovou grafiku Semestrální práce Autor práce:

Více

Jana Dannhoferová Ústav informatiky, PEF MZLU

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é

Více

Jana Dannhoferová Ústav informatiky, PEF MZLU

Jana Dannhoferová Ústav informatiky, PEF MZLU Počítačová grafika Křivky Jana Dannhoferová (jana.dannhoferova@mendelu.cz) Ústav informatiky, PEF MZLU Základní vlastnosti křivek křivka soustava parametrů nějaké rovnice, která je posléze generativně

Více

2. přednáška z předmětu GIS1 Data a datové modely

2. přednáška z předmětu GIS1 Data a datové modely 2. přednáška z předmětu GIS1 Data a datové modely Vyučující: Ing. Jan Pacina, Ph.D. e-mail: jan.pacina@ujep.cz Pro přednášku byly použity texty a obrázky z www.gis.zcu.cz Předmět KMA/UGI, autor Ing. K.

Více

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. 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é

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Úlohy nad rastrovými daty Daniela

Více

Reprezentace bodu, zobrazení

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

Více

Zobrazovací jednotky a monitory

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

Více

Počítačová grafika. Studijní text. Karel Novotný

Počítačová grafika. Studijní text. Karel Novotný Počítačová grafika Studijní text Karel Novotný P 1 Počítačová grafika očítačová grafika je z technického hlediska obor informatiky 1, který používá počítače k tvorbě umělých grafických objektů a dále také

Více

Novinky v Solid Edge ST7

Novinky v Solid Edge ST7 Novinky v Solid Edge ST7 Primitiva Nově lze vytvořit základní geometrii pomocí jednoho příkazu Funkce primitiv je dostupná pouze v synchronním prostředí Těleso vytvoříme ve dvou navazujících krocích, kde

Více

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného) Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného) 1 Obecný popis metody Particle Image Velocimetry, nebo-li zkráceně PIV, je měřící

Více

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit Jednoduché stránkování Operační systémy Přednáška 8: Správa paměti II Hlavní paměť rozdělená na malé úseky stejné velikosti (např. 4kB) nazývané rámce (frames). Program rozdělen na malé úseky stejné velikosti

Více

Nvidia CUDA Paralelní programování na GPU

Nvidia CUDA Paralelní programování na GPU Mendelova univerzita v Brně Provozně ekonomická fakulta Nvidia CUDA Paralelní programování na GPU 2014 O čem to bude... Trocha historie Shadery Unifikace GPGPU CUDA Využití GPGPU GPU a jeho Hardware Nvidia

Více

Souřadnicové prostory

Souřadnicové prostory Prostor objektu Tr. objektu Tr. modelu Prostor scény Souřadnicové prostory V V x, y z x, y z z -z x, y Tr. objektu V =V T 1 T n M Tr. modelu Tr. scény x, y Tr. pohledu Tr. scény Tr. pohledu Prostor pozorovatele

Více

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni KTE/TEVS - Rychlá Fourierova transformace Pavel Karban Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni 10.11.011 Outline 1 Motivace FT Fourierova transformace

Více

Terestrické 3D skenování

Terestrické 3D skenování Jan Říha, SPŠ zeměměřická www.leica-geosystems.us Laserové skenování Technologie, která zprostředkovává nové možnosti v pořizování geodetických dat a výrazně rozšiřuje jejich využitelnost. Metoda bezkontaktního

Více

SOU Valašské Klobouky. VY_32_INOVACE_3_01 IKT Pc grafika základní pojmy Mgr. Radomír Soural. Zkvalitnění výuky prostřednictvím ICT

SOU Valašské Klobouky. VY_32_INOVACE_3_01 IKT Pc grafika základní pojmy Mgr. Radomír Soural. Zkvalitnění výuky prostřednictvím ICT SOU Valašské Klobouky VY_32_INOVACE_3_01 IKT Pc grafika základní pojmy Mgr. Radomír Soural Zkvalitnění výuky prostřednictvím ICT Název a číslo projektu CZ.1.07/1.5.00/34.0459 Název školy SOU Valašské Klobouky,

Více

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Přednáška Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského

Více

Surfels: Surface Elements as Rendering Primitives

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ů

Více

Android OpenGL. Pokročilé shadery

Android OpenGL. Pokročilé shadery Android OpenGL Pokročilé shadery Struktura programu Reálná aplikace zpravidla obsahuje více než jeden shader Kód pro inicializaci shaderu je dobré mít ve třídě (méně opisování stejného kódu) Shadery není

Více

Vzdálený přístup k počítačům

Vzdálený přístup k počítačům Vzdálený přístup k počítačům jedna z nejstarších služeb vzdálený přístup k sálovým počítačům nejprve vzdálené terminály později terminálová emulace jako jedna ze služeb počítačové sítě současnost využíváno

Více

12 Metody snižování barevného prostoru

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ů

Více

Práce s velkými sestavami

Práce s velkými sestavami Práce s velkými sestavami Číslo publikace spse01650 Práce s velkými sestavami Číslo publikace spse01650 Poznámky a omezení vlastnických práv Tento software a související dokumentace je majetkem společnosti

Více

Systém adresace paměti

Systém adresace paměti Systém adresace paměti Základní pojmy Adresa fyzická - adresa, která je přenesena na adresní sběrnici a fyzicky adresuje hlavní paměť logická - adresa, kterou má k dispozici proces k adresaci přiděleného

Více

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

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

Více

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu

Více

1. Vektorové algoritmy jejich výstupem je soubor geometrických prvků, např.

1. Vektorové algoritmy jejich výstupem je soubor geometrických prvků, např. Kapitola 5 Řešení viditelnosti Řešit viditelnost ve scéně umí většina grafických programů. Cílem je určit ty objekty, resp. jejich části, které jsou viditelné z určitého místa. Tyto algoritmy jsou vždy

Více

7. Geografické informační systémy.

7. Geografické informační systémy. 7. Geografické informační systémy. 154GEY2 Geodézie 2 7.1 Definice 7.2 Komponenty GIS 7.3 Možnosti GIS 7.4 Datové modely GIS 7.5 Přístup k prostorovým datům 7.6 Topologie 7.7 Vektorové datové modely 7.8

Více

Úvod do počítačové grafiky

Ú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

Více

Pro tvorbu samostatně spustitelných aplikací je k dispozici Matlab library.

Pro tvorbu samostatně spustitelných aplikací je k dispozici Matlab library. 1.1 Matlab Matlab je interaktivní systém pro vědecké a technické výpočty založený na maticovém kalkulu. Umožňuje řešit velkou oblast numerických problémů, aniž byste museli programovat vlastní program.

Více

AGP - Accelerated Graphics Port

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

Více

Metamorfóza obrázků Josef Pelikán CGG MFF UK Praha

Metamorfóza obrázků Josef Pelikán CGG MFF UK Praha Metamorfóza obrázků 1998-2011 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ Morphing 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 21 Metamorfóza obrázků -

Více

Controlweb. Úvod. Specifikace systému

Controlweb. Úvod. Specifikace systému Controlweb Úvod ControlWeb je aplikace pro řízení a indikaci v průmyslu v reálném čase. Mezi jeho základní funkce patří ovládání různých veličin spojitých, binárních nebo textových a zobrazování stavu

Více

5 Algoritmy vyplňování 2D oblastí

5 Algoritmy vyplňování 2D oblastí 5 Algoritmy vyplňování 2D oblastí Studijní cíl Tento blok je věnován základním algoritmům pro vyplňování plošných objektů. V textu bude vysvětlen rozdíl mezi vyplňováním oblastí, které jsou definovány

Více

Sítě SFN Systém pro analýzu a vizualizaci pokrytí a rušení vysílacích sítí

Sítě SFN Systém pro analýzu a vizualizaci pokrytí a rušení vysílacích sítí Sítě SFN Systém pro analýzu a vizualizaci pokrytí a rušení vysílacích sítí Sítě SFN ver. 7 je výpočetní systém pro analýzu pokrytí a rušení vysílacích sítí pro služby FM, TV, DVB- T a T-DAB a analýzu a

Více

Laserové skenování (1)

Laserové skenování (1) (1) Prohloubení nabídky dalšího vzdělávání v oblasti zeměměřictví a katastru nemovitostí ve Středočeském kraji CZ.1.07/3.2.11/03.0115 Projekt je finančně podpořen Evropským sociálním fondem astátním rozpočtem

Více

PROGRAMY PRO GIS. Formovat/formulovat problém pro aplikaci v počítači. Fungování GIS programů na základní úrovni - "uvažovat" jako počítač

PROGRAMY PRO GIS. Formovat/formulovat problém pro aplikaci v počítači. Fungování GIS programů na základní úrovni - uvažovat jako počítač PROGRAMY PRO GIS Formovat/formulovat problém pro aplikaci v počítači Fungování GIS programů na základní úrovni - "uvažovat" jako počítač Jak počítače řeší problémy procesor central processing unit - CPU

Více

VY_32_INOVACE_INF.10. Grafika v IT

VY_32_INOVACE_INF.10. Grafika v IT VY_32_INOVACE_INF.10 Grafika v IT Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Jiří Kalous Základní a mateřská škola Bělá nad Radbuzou, 2011 GRAFIKA Grafika ve smyslu umělecké grafiky

Více

Připravil: David Procházka. Vertex Buffer Objects

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

Více

Programování v jazyku LOGO - úvod

Programování v jazyku LOGO - úvod Programování v jazyku LOGO - úvod Programovací jazyk LOGO je určen pro výuku algoritmizace především pro děti školou povinné. Programovací jazyk pracuje v grafickém prostředí, přičemž jednou z jeho podstatných

Více

Rekurzivní sledování paprsku

Rekurzivní sledování paprsku Rekurzivní sledování paprsku 1996-2016 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 21 Model dírkové kamery 2 / 21 Zpětné sledování paprsku L D A B C 3 / 21 Skládání

Více

Využití ICT techniky především v uměleckém vzdělávání. Akademie - VOŠ, Gymn. a SOŠUP Světlá nad Sázavou

Využití ICT techniky především v uměleckém vzdělávání. Akademie - VOŠ, Gymn. a SOŠUP Světlá nad Sázavou Datum: 1. 12. 2013 Projekt: Registrační číslo: Číslo DUM: Škola: Jméno autora: Název sady: Název práce: Předmět: Ročník: Obor: Časová dotace: Vzdělávací cíl: Pomůcky: Využití ICT techniky především v uměleckém

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího

Více

Deformace rastrových obrázků

Deformace rastrových obrázků Deformace rastrových obrázků 1997-2011 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ Warping 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 22 Deformace obrázků

Více

Dynamické datové struktury III.

Dynamické datové struktury III. Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované

Více

Počítačová grafika RHINOCEROS

Počítačová grafika RHINOCEROS Počítačová grafika RHINOCEROS Ing. Zuzana Benáková Základní otázkou grafických programů je způsob zobrazení určitého tvaru. Existují dva základní způsoby prezentace 3D modelů v počítači. První využívá

Více

Maturitní témata pro 1.KŠPA Kladno, s.r.o. Výpočetní technika

Maturitní témata pro 1.KŠPA Kladno, s.r.o. Výpočetní technika Maturitní témata pro 1.KŠPA Kladno, s.r.o. Předmět Typ zkoušky Obor Forma Zkoušející Období Výpočetní technika Profilová ústní Ekonomika a podnikání zaměření Podnikání Denní / Distanční Ing. Horová / K.

Více

Vytváříme dobré aplikace vykreslovače grafiky v programovém prostředí Control Web

Vytváříme dobré aplikace vykreslovače grafiky v programovém prostředí Control Web Vytváříme dobré aplikace vykreslovače grafiky v programovém prostředí Control Web Vykreslovače grafiky nám umožňují vybrat si, jaké grafické programové rozhraní operačního systému bude použito pro zobrazování

Více

G R A F I C K É K A R T Y

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Ý

Více

Satori. Uživatelský manuál

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í...

Více

Autodesk AutoCAD Civil 3D

Autodesk AutoCAD Civil 3D Novinky 2018 Autodesk AutoCAD Civil 3D www.graitec.cz www.cadnet.cz, helpdesk.graitec.cz, www.graitec.com Obsah: 1. Vyřešení překrytí koridorů (motýlkování)... 3 2. Relativní návrhové linie... 4 3. Dynamické

Více

OPS Paralelní systémy, seznam pojmů, klasifikace

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

Více

ak. rok 2013/2014 Michal Španěl, spanel@fit.vutbr.cz 24.2.2014

ak. rok 2013/2014 Michal Španěl, spanel@fit.vutbr.cz 24.2.2014 Zadání projektu Texturování Základy počítačové grafiky (IZG) ak. rok 2013/2014 Michal Španěl, spanel@fit.vutbr.cz 24.2.2014 1 První seznámení Cílem projektu je pochopení praktických souvislostí témat přednášek

Více

IVT. Rastrová grafika. 8. ročník

IVT. Rastrová grafika. 8. ročník IVT Rastrová grafika 8. ročník listopad, prosinec 2013 Autor: Mgr. Dana Kaprálová Zpracováno v rámci projektu Krok za krokem na ZŠ Želatovská ve 21. století registrační číslo projektu: CZ.1.07/1.4.00/21.3443

Více

Geometrické transformace

Geometrické transformace 1/15 Předzpracování v prostoru obrazů Geometrické transformace Václav Hlaváč, Jan Kybic Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání hlavac@fel.cvut.cz http://cmp.felk.cvut.cz/

Více

Počítačová grafika SZŠ A VOŠZ MERHAUTOVA 15, BRNO

Počítačová grafika SZŠ A VOŠZ MERHAUTOVA 15, BRNO Počítačová grafika SZŠ A VOŠZ MERHAUTOVA 15, BRNO 1 Základní dělení 3D grafika 2D grafika vektorová rastrová grafika 2/29 Vektorová grafika Jednotlivé objekty jsou tvořeny křivkami Využití: tvorba diagramů,

Více

Obecný princip 3D numerického modelování výrubu

Obecný princip 3D numerického modelování výrubu Obecný princip 3D numerického modelování výrubu Modelovaná situace Svislé zatížení nadloží se přenáší horninovým masivem na bok tunelu Soustava lineárních rovnic Soustavou lineárních rovnic popíšeme určované

Více

Windows a real-time. Windows Embedded

Windows a real-time. Windows Embedded Windows a real-time Windows Embedded Windows pro Embedded zařízení Současnost (2008): Windows Embedded WINDOWS EMBEDDED Windows Embedded CE Windows XP Embedded Windows Embedded for Point of Service Minulé

Více

ČÁST 1. Základy 32bitového programování ve Windows

ČÁST 1. Základy 32bitového programování ve Windows Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25

Více