Android OpenGL. Vykreslování terénu



Podobné dokumenty
Android OpenGL. Práce s texturami

7. Silně zakřivený prut

Goniometrie trigonometrie

Asymptoty grafu funkce

Základy počítačové grafiky

Novinky verze ArCon 14 Small Business

Změnu DPH na kartách a v ceníku prací lze provést i v jednotlivých modulech.

2.6.4 Lineární lomené funkce s absolutní hodnotou

2.8.8 Kvadratické nerovnice s parametrem

Výrazy lze též zavést v nečíselných oborech, pak konstanty označuji jeden určitý prvek a obor proměnné není množina čísel.

Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY

Business Contact Manager Správa kontaktů pro tisk štítků

Příloha č. 2 Vyhledávání souřadnic definičních bodů v Nahlížení do KN OBSAH

Android OpenGL. Pokročilé shadery

4. cvičení: Pole kruhové, rovinné, Tělesa editace těles (sjednocení, rozdíl, ), tvorba složených objektů

NÁVRHOVÝ PROGRAM VÝMĚNÍKŮ TEPLA FIRMY SECESPOL CAIRO PŘÍRUČKA UŽIVATELE

Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1. Podpora digitalizace a využití ICT na SPŠ CZ.1.07/1.5.00/34.

ESII-2.1 Elektroměry

Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49

Téma: Zemní práce III POS 1

Modul pro testování elektrických obvodů

Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice,Benešovo náměstí 1, příspěvková organizace

KALOVÉ KOŠE KOŠE DO ULIČNÍCH VPUSTÍ KOŠE DO DVORNÍCH VPUSTÍ LAPAČE NEČISTOT

Vítězslav Bártl. prosinec 2013

Autodesk Inventor 8 vysunutí

Návod ke stažení a instalaci bodů zájmu do navigace TomTom řady Via a Go100x

Fyzikální praktikum 3 - úloha 7

MS Word 2007 REVIZE DOKUMENTU A KOMENTÁŘE

Grafické řešení soustav lineárních rovnic a nerovnic

1 Měření kapacity kondenzátorů

Z OBRAZOVÉHO ZÁZNAMU. Jan HAVLÍK. Katedra teorie obvodů, Fakulta elektrotechnická

Numerická integrace. 6. listopadu 2012

Technický popis koncovky výfukového systému vozu Mercedes Econic 1833LL:

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

Sada 3 CAD3. 3. CADKON DT+ Vynášení stěn

Zvyšování kvality výuky technických oborů

Univerzita Tomáše Bati ve Zlíně

REPREZENTACE 3D SCÉNY

10 Ostatní aplikace desek CETRIS Záhonový obrubník CETRIS.

Zvyšování kvality výuky technických oborů

Seznámení s možnostmi Autodesk Inventoru 2012

Příručka pro práci s dataloggerem Labquest 2. Zapínání a domácí obrazovka

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

POKUS O STATISTICKOU PŘEDPOVĚD ZNEČIŠTĚNÍ OVZDUŠÍ. Josef Keder. ČHMÚ ÚOČO, Observatoř Tušimice, keder@chmi.cz

Výroba Hofmanových bočních louček pomocí hoblovky. Napsal uživatel Milan Čáp Čtvrtek, 30 Duben :47

Lekce 2 LEGO Education (3,5 vyuč. hodiny)

GEOMETRIE NÁPRAV. Kontrolní a seřizovací podmínky. Výšky vozidla v referenční poloze

plošný 3D NURBS modelář pracující pod Windows NURBS modely jsou při jakkoliv blízkém pohledu dokonale hladké

Stavební mechanika přednáška, 2. května 2016

( ) ( ) Sčítání vektorů. Předpoklady: 7201

DS409slim. Stručná instalační příručka

Využití fixních a variabilních nákladů pro manažerské rozhodování a finanční řízení

Grafický manuál jednotného vizuálního stylu. MACHINERY group

Pokyny k vypracování absolventské práce ZŠ a MŠ Kladno, Vodárenská 2115

MODEL MOSTU. Ing.Jiřina Strnadová. Evropský sociální fond Praha a EU Investujeme do vaší budoucnosti. Předmět:Fyzika

Jan Březina. Technical University of Liberec. 17. března 2015

BEZDOTYKOVÝ OTÁČKOMĚR DM-2234B

Hřídelové čepy. Podle tvaru, funkce a použití rozeznáváme hřídelové čepy: a) válcové b) kuželové c) prstencové d) kulové e) patní

Kótování na strojnických výkresech 1.část

Pokusy s kolem na hřídeli (experimenty s výpočty)

7.8 Kosmická loď o délce 100 m letí kolem Země a jeví se pozorovateli na Zemi zkrácena na 50 m. Jak velkou rychlostí loď letí?

Tématická oblast Programování CNC strojů a CAM systémy Příprava součásti pro obrábění

Penzijní připojištění a Doplňkové penzijní spoření

2 Trochu teorie. Tab. 1: Tabulka pˇrepravních nákladů

Výukový materiál zpracován v rámci projektu EU peníze školám

Veškeré potřebné nástroje a informace v různých světových jazycích naleznete na

1. POLOVODIČOVÁ DIODA 1N4148 JAKO USMĚRŇOVAČ

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 02 VYSUNUTÍ PROFILU LINEÁRNÍ A ROTACÍ ]

AMU1 Monitorování bezpečného života letounu (RYCHLÝ PŘEHLED)

Matematický model kamery v afinním prostoru

Šicí stroje NX-400 NX-200

1. Vstupní data Pro HBV EM 1.0 jsou nutná data definující:

Montáž plastového okapového systému Gamrat

Pláště pro stavební a těžební průmysl Continental EM - ContiEarth Continental MPT

Název projektu: Spokojená škola Číslo projektu: OPVK.CZ.1.07/1.2.33/ Metodické pokyny k pracovnímu listu č. 1 Význam slov

================================================================================ =====

Druhá mocnina. Druhá odmocnina Druhá odmocnina. Předpoklady: V této hodině jsou kalkulačky zakázány.

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jana Kalinová [ÚLOHA 01 ÚVOD DO PROSTŘEDÍ OBJEMOVÁ SOUČÁST; PŘÍKAZ SKICA A JEJÍ VAZBENÍ]

Soukromá střední odborná škola Frýdek-Místek, s.r.o. VY_32_INOVACE_61_IVT_MSOFFICE_11_Word

M-10. AU = astronomická jednotka = vzdálenost Země-Slunce = přibližně 150 mil. km. V následující tabulce je závislost doby

4 Část II Základy práce v systému. 6 Část III Úvodní obrazovka. 8 Část IV Práce s přehledy. 13 Část V Kontakty. 19 Část VI Operativa

Sekční průmyslová vrata, typy kování

Pocasicz.cz / pocasiesk.sk - zadání výroby

Praktická ukázka realizace solárních kolektorů na bytových domech. Jiří Kalina

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Výukový materiál zpracován v rámci projektu EU peníze školám. Registrační číslo projektu: CZ.1.07/1.5.00/34.

TECHNOLOGIE TVÁŘENÍ KOVŮ

Poruchy modul pro rychlé hlášení poruch z provozu.

Osvětlovací modely v počítačové grafice

Geodézie. přednáška 3. Nepřímé měření délek. Ústav geoinformačních technologií Lesnická a dřevařská fakulta ugt.mendelu.cz tel.

3.5.8 Otočení. Předpoklady: 3506

téma: Formuláře v MS Access

Návod na použití FEM programu RillFEM Jevy na chladiči

Fakulta informačních technologíı. Rendering Seminář 1. 1 / 28

Využití mobilního klienta při správě inženýrských sítí. Petr Skála Pontech s.r.o.

2 Rekonstrukce ze dvou kalibrovaných pohledů

Výstupy Učivo Téma. Čas. Základní škola a mateřská škola Hať. Školní vzdělávací program. Průřezová témata, kontexty a přesahy,další poznámky

Lineární algebra. Vektorové prostory

DUM 06 téma: Náležitosti výkresu sestavení

Monolitický a prefabrikovaný beton

Prvky kompletní instalace. D: LUMI LED maják. Odblokování

Transkript:

Android OpenGL Vykreslování terénu

Terén Většinou je reprezentovaný pomocí 2D výškové mapy Na běžných GPU lze výškovou mapu číst přímo ve vertex shaderu, mobilní GPU však tuto funkci nepodporují Nezbývá než výškovou mapu prostě uložit do pole se souřadnicemi vrcholů

Rozsáhlý Terén Pro vykreslování rozsáhlého terénu je obvykle potřeba algoritmus level of detail Kvůli absenci čtení textur vertex shaderem je těžší používat složité LOD techniky Přehled používaných technik lze nalézt na http://vterrain.org/lod/papers/

Mobilní terén Kvůli jednoduchosti mobilních GPU ve spojením s ne příliš silným CPU (zatím) nelze přenést algoritmy, navržené pro PC Je třeba se uchýlit ke starším technikám Vyhnout se aktualizaci vertex bufferů Vyhnout se složitému napojování dílců

Jednoduchý terén Terén je uložený jako stejně velké dlaždice o několika různých rozlišeních Dlaždice jsou již ve formátu vhodném pro kreslení (ne bitmapa, ale vertex array) Díky předem dané velikosti dlaždic není nutné ukládat index array Předpokládáme že terén se celý vejde do paměti (v zájmu udržení jednoduchosti, bez ztráty obecnosti algoritmu)

Jednoduchý terén (jednotlivé dílce terénu)

Navazování dlaždic a) Neřešíme b) Uděláme svislé sukénky (filleting, Sun) http://java.sun.com/products/jfc/tsc/articles/jcanyon/ c) Použijeme stínové dílce (Pouderoux, Marvie: Adaptive Streaming and Rendering of Large Terrains using Strip Masks )

Výběr detailu dlaždic Lze vypočítat zkreslení v závislosti na výšce dlaždice a výšce a vzdálenosti pozorovatele Nebo lze jednoduše použít vzdálenost od pozorovatele (Losasso, Hoppe: Geometry clipmaps: Terrain rendering using nested regular grids )

Výběr detailu dlaždic (červená = vyšší detail)

Omezení kreslení dlaždic Známým algoritmem je ořezávání záběrem pohledu (view frustum culling) Na základě směru pohledu a pozice pozorovatele jde jednoduše otestovat viditelnost dlaždic ještě před kreslením Výhodné mít dlaždice ve stromové struktuře (např. v octree) Pro členité terény lze předpočítat sadu viditelných dlaždic z různých míst (PVS) Mimo rámec tohoto tutorialu

Ořezávání záběrem pohledu Pohled má tvar pyramidy Jednotlivé roviny jdou spočítat z projekční matice Test zda je dílec terénu před rovinou je primitivní, s výhodou lze využít obalové geometrie jako např. bounding sphere

Texturování Použijeme jednoduchou opakující se texturu V pixel shaderu podle výšky vrcholu určíme podíly jednotlivých textur (dole je tráva, nad ní skály, nahoře je sníh) Pro větší počet vrstev lze použít GL_ARB_texture_array (přítomné na Tegra)

Nebe Lze použít tzv. skybox, jedná se o texturu nebe, mapovanou na nekonečně velkou krychli Krychle může být konečně velká, ale pozorovatel musí být uprostřed Je nutné vypnout depth test gldisable(gl_depth_test); gldepthmask(0); // vypne i zápisy Lze použít rozšíření GL_ARB_cube_map obrázek z nvidia.com

Nebe Pro dynamičtější nebe lze použít tzv. skydome, tedy jakousi polokouli, která zakrývá terén, na ni je možné mapovat pohybující se texturu mraků Pomocí přepočtu souřadnic v pixel shaderu lze skydome realizovat i s krychlí, nebo dokonce jen s jedním trojúhelníkem obrázek z nvidia.com

Nebe na jeden trojúhelník Jeden trojúhelník, pokrývající celou obrazovku (případně jeden obdélník) Vertex shader spočítá směry pohledu v jednotlivých rozích obrazovky Fragment shader může Přečíst skybox z cubemap textury Promítnout směr pohledu na kouli trojúhelník pokrývající obrazovku

Nebe na jeden trojúhelník Vertex shader precision highp float; // specifikace přesnosti attribute vec3 v_pos; // pozice vstup z dat vrcholu uniform mat4 t_modelview_projection_matrix_inverse; // další strana varying vec3 v_view_direction; // výstup směr pohledu void main() { } gl_position = vec4(v_pos, 1.0); // pozice na obrazovce = pozice vec4 v_worldspace = (t_modelview_projection_matrix_inverse * vec4(v_pos, 1.0)); v_view_direction = v_worldspace.xzy * vec3(1.0, -1.0, 1.0);

Nebe na jeden trojúhelník Výpočet matice pro vertex shader Matrix modelview, projection; // vstupní matice modelview a projection scény Matrix mv_nomove = modelview; mv_nomove[3] = 0; mv_nomove[7] = 0; mv_nomove[11] = 0; mv_nomove[15] = 1; // odstraní z modelview posun (oko bude tím pádem vždy ve středu) Matrix modelview_projection_matrix_inverse = Matrix.Inverse(projection * mv_nomove); // vypočítá součin a inverzi matic

Nebe na jeden trojúhelník Fragment shader precision highp float; // specifikace přesnosti varying vec3 v_view_direction; // vstup směr pohledu const vec3 v_sky = vec4(.7 *.9,.9 *.9, 1.0, 0.0), // barva nebe v_tint = vec4(0.5, 0.5, 0.5, 0.0); // zbarvení horizontu void main() { vec3 v_dir = normalize(v_view_direction); // normalizuje směr float f_y = v_dir.y *.5 +.2; // spočítá váhu horizontu float f_tint = (1.0 - f_y) * (1.0 - f_y) * 1.3 -.3; } gl_fragcolor = v_sky + v_tint * min(f_tint,.6); // míchá barvu

Výsledek

Konec