Terrain Processing on Modern GPU - Computer Graphics Group ...
Terrain Processing on Modern GPU - Computer Graphics Group ...
Terrain Processing on Modern GPU - Computer Graphics Group ...
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