10.08.2013 Views

Terrain Processing on Modern GPU - Computer Graphics Group ...

Terrain Processing on Modern GPU - Computer Graphics Group ...

Terrain Processing on Modern GPU - Computer Graphics Group ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

úplnou svobodu, neboť data v ní uložená jsou velmi malého rozsahu. Rozsah velmi záleží na naší<br />

volbě a dalších potřebách systému, ve kterém se struktura použije. K tomu se dostaneme ještě<br />

v dalších částech, zde můžeme pouze předeslat, že pracujeme zpravidla s rozmezím v řádu<br />

desítek metrů, což se nám zdá být dostatečný rozsah pro většinu potřeb.<br />

Rek<strong>on</strong>strukce dat je velice triviální, neboť na rozdíl od hierarchických struktur bez omezení<br />

počtu úrovní, naše reprezentace poskytuje k<strong>on</strong>stantní dobu výpočtu výšky ve zvoleném bodě.<br />

Tato je navíc snadno implementovatelná na <strong>GPU</strong>.<br />

4.2 Adaptivní dělení terénu<br />

Zvolili jsme základní podobu datové reprezentace (přesná specifika můžeme řešit později) a<br />

hlavní směr, kterým se chceme ubírat, tedy adaptivní dělení terénu prováděné pomocí <strong>GPU</strong>. Nyní<br />

nás čeká úkol provést několik dalších dílčích rozhodnutí, kterými dotvoříme celkovou myšlenku:<br />

1. Na základě jakého schématu dělení provádět?<br />

2. Na jaké základní části dělení aplikovat?<br />

3. Jakým způsobem na sebe napojit odlišně dělené části?<br />

4. Kde a jak rozhodovat o hloubce dělení?<br />

Přestože řada algoritmů, z nichž mnohé jsme zmínili dříve, provádí adaptivní dělení terénu<br />

s ohledem na <strong>GPU</strong>, všechny provádí rozhodovací proces volby LODu pro jednotlivé oblasti terénu<br />

na CPU. Utilizace grafické karty pak probíhá pro každou oblast zvlášť. Pokud je terén na oblasti<br />

dělen uniformně, znamená to zpravidla velké množství takových oblastí (řádově stovky až tisíce)<br />

a s tím související „small batch problem“ popsaný dříve. Tímto problémem netrpí kupříkladu<br />

clipmapy, neboť se zobrazují po úrovních, resp. částech úrovní, a celkový počet volání některé ze<br />

zobrazovacích funkcí se tak pohybuje v řádu desítek (57). S takovýmto výsledkem bychom mohli<br />

být spokojeni, ale znamená to, že bychom museli dělit terén hierarchicky, nebo na velké bloky.<br />

Hierarchie by zřejmě přinášela nevítané komplikace při napojování bloků, proto pro nás lepší<br />

volbu představují uniformní bloky.<br />

Řekli jsme si také, že chceme využít možnosti generování geometrie a ideálně i rozhodování o<br />

volbě LODu na <strong>GPU</strong>. Hlubším promyšlením takového přístupu dojdeme k tomu, že pokud řešíme<br />

úroveň dělení na <strong>GPU</strong>, musíme řešit i napojování odlišně dělených oblastí na <strong>GPU</strong>. To je v souladu<br />

s možností generování nové geometrie, takže když to shrneme, naskýtá se nám možnost<br />

přesunout úplně celou logiku zobrazování terénu na <strong>GPU</strong>. To navíc znamená, že můžeme<br />

teoreticky dospět k řešení, které bude zobrazovat celý terén najednou, tj. pomocí jediného volání<br />

některé ze zobrazovacích funkcí. Celý terén se v takovém případě vytvoří na grafické kartě a<br />

v případě statických dat by jedinou prací CPU bylo zavolání jedné API funkce každý snímek.<br />

Domníváme se, že pokud se nám takové řešení podaří najít, a bude výk<strong>on</strong>nostně srovnatelné<br />

s jinými používanými, mohlo by výrazně ovlivnit budoucí zobrazovací algoritmy a kvalitu<br />

zobrazovaných terénů.<br />

57

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!