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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

4.2.1 Úvahy pro volbu dělícího schématu<br />

Udělali jsme si přesnější představu o tom, čeho dosáhnout i jak toho dosáhnout. Čeká nás<br />

problém nalezení vhodného dělícího schématu, které bude snadno vyhodnotitelné, přirozeně<br />

adaptivní, a především bude nabízet dobré vizuální výsledky. Jsme přesvědčeni, že všechny tyto<br />

parametry může nabídnout některé z používaných subdivisi<strong>on</strong> surfaces, nebo jeho patřičná<br />

modifikace. Předně si zdůrazněme, že při výběru takového schématu stavíme vizuální výsledky<br />

před pěkné matematické vlastnosti, tj. nemusíme kupříkladu nutně hledat schéma, které bude <br />

spojité, často můžeme spoléhat i na schopnosti designéra, který případné nedostatky výstupu<br />

zakryje.<br />

První rozhodnutí (později změněna) byla založena čistě na raci<strong>on</strong>ální úvaze o tom, jaké existující<br />

schéma má správné vlastnosti: chceme hledat pouze trojúhelníková schémata, protože jsou to<br />

jediné mnohoúhelníky, se kterými můžeme pracovat na grafické kartě. Dále se zřejmě budeme<br />

chtít omezit na interpolační schémata, neboť potřebujeme, aby zobrazovaný terén více držel tvar<br />

se vstupními daty. Především by bylo nevhodné, pokud by se v jednotlivých iteracích měnila<br />

celková podoba terénu – vizuálně by se to dalo řešit morfováním, ale výpočet fyzikálních<br />

interakcí objektů s terénem by pak nemusel být korektní a k<strong>on</strong>zistentní se zobrazováním.<br />

Obrázek 4.1: V geometry shaderu máme k dispozici informace o zpracovávaném trojúhelníku<br />

(zvýrazněný) a 3 dalších vrcholech sousedních trojúhelníků.<br />

Dalším, zřejmě nejkritičtějším požadavkem na schéma je co nejmenší velikost jeho nosiče.<br />

V geometry shaderu nemáme k dispozici informace ani pro celé 1-okolí zpracovávaného<br />

trojúhelníku. K<strong>on</strong>krétně je dostupná informace o 3 vrcholech trojúhelníku a dalších 3 vrcholech<br />

sousedních trojúhelníků, jak ukazuje Obrázek 4.1. To je nedostatečné pro jakékoli běžně<br />

používané schéma. Obejít to můžeme hned několika způsoby. První možnost je přímo do vrcholů<br />

přidat nějakou informaci o jejich okolí. Tím by mohla značně narůst velikost dat, která, jak si záhy<br />

ukážeme, přímo ovlivňuje rychlost algoritmu. Druhou možností je uložení přídavných informací<br />

do textury a adresovat texturu za pomoci znalosti indexu primitiva (to je opět funkci<strong>on</strong>alita<br />

přidaná nově do Shader Modelu 4.0). Toto řešení je možné, ale jeho nedostatkem je velmi<br />

intenzivní využití texturovacích jednotech. S tím se pojí problém toho, že už samotná<br />

rek<strong>on</strong>strukce dat je silně závislá na čtení dat z textur. I přesto, že výpočet subdivisi<strong>on</strong> surface<br />

může obnášet velké množství výpočtů, těžko by se poměr aritmetických a texturovacích operací<br />

přiblížil aktuálně doporučovanému poměru 4:1 (94) a celé zobrazování by bylo závislé na<br />

dostatečně rychlém přísunu dat. V tomto směru by řešení založené na uložení pomocných<br />

hodnot společně s vrcholy mohlo vést k lepším výsledkům, neboť texturovací jednotky a data<br />

vertex bufferů jsou oddělené datové zdroje a je obecným doporučení rozložit tíhu na oba.<br />

58

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

Saved successfully!

Ooh no, something went wrong!