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.
nám dospět k hodnotě 0,0195, která se nám stále zdála dostatečně nízká na to, aby viditelně<br />
ovlivnila polohy vrcholu, a zároveň jsme s ní částečně získali požadované výsledky, které ukazuje<br />
Tabulka 4.2. Celkový počet „nenulových“ koeficientů klesl na 5 220 a jak je vidět z tabulky,<br />
polovina koeficientů je vždy nulová. Takto modifikované koeficienty můžeme velmi snadno<br />
uschovat do polovičního prostoru – de facto jsme zmenšili nosič schématu na 8 vrcholů. My je<br />
však ukládáme do jediného čtyřprvkového vektoru tak, že celá část jedné komp<strong>on</strong>enty<br />
reprezentuje jeden koeficient vynásobený 1 000 a desetinná část reprezentuje druhý koeficient.<br />
Celkově jsme tak snížili velikost jedné matice na 16 bytů, tj. přibližně 17 kB pro 5. Tato data<br />
předáváme do shaderu v podobě bufferu k<strong>on</strong>stant.<br />
Počet nenulových koeficientů<br />
0 332 0 0<br />
332 1 086 860 0<br />
0 860 1 086 332<br />
0 0 332 0<br />
Tabulka 4.2: Celkové počty koeficientů větších než 0,0195 nacházejících se v odpovídajících<br />
místech matice (součet pro všechny vrcholy).<br />
Dodejme, že jako další možnost uchování koeficientů řídké matice se nabízí zakódovat do jedné<br />
komp<strong>on</strong>enty umístění nenulových koeficientů uvnitř matice a do zbylých komp<strong>on</strong>ent uložit<br />
jednotlivé použité koeficienty (způsobem, který jsme již popsali). Význam to má však pouze<br />
tehdy, pokud máme nižší maximální počet nenulových koeficientů uvnitř matice, ale nemáme<br />
přesně dáno, které koeficienty to mohou být. Dále pokud mají matice navzájem symetrický<br />
charakter (a to mají), je možné uložit jenom část z nich a za cenu dalších instrukcí při<br />
dekompozici matice provádět otáčení podle toho, jaký vrchol zrovna zpracováváme. K tomuto<br />
postupu jsme se již nedostali, neboť celou myšlenku generování terénu na <strong>GPU</strong> jsme z dříve<br />
uvedeného důvodu opustili.<br />
4.3 Použití fixní mřížky<br />
Po neúspěchu s adaptivním dělením jsme chtěli navrhnout nějakou strukturu, která by pokryla<br />
první fáze dělení, podobně jako to dělá omezený kvadrantový strom. Další fáze bychom už mohli<br />
dok<strong>on</strong>čit na <strong>GPU</strong>. Po různých experimentech s geometry shaderem, které jsme popsali v odstavci<br />
4.2.3.2, jsme však usoudili, že rychlost tak nezískáme a kvalitativně téměř stejného výsledku<br />
můžeme dosáhnout pomocí clipmap s jiným vertex shaderem. Obrátili jsme tedy pozornost na<br />
definování nějakého vzorkovacího schématu, které by vyřešilo pohledově závislý LOD podobně<br />
jako to dělají clipmapy. Připomeňme, že clipmapa nebere v úvahu charakter terénu ani úhel<br />
pohledu, pouze vzdálenost od pozorovatele. Tento fakt by bylo možné změnit, ale k tomu se<br />
vrátíme až v odstavci 4.7.2. Shrnuli jsme tedy nedostatky clipmap, na které se chceme zaměřit:<br />
1. Komplikovaná změna zorného úhlu, přesněji zmenšení zorného úhlu (použití<br />
dalekohledu).<br />
2. Modifikace terénu ve vyšších frekvencích.<br />
3. Výpočty fyzikálních interakcí objektů se vzdálenějším terénem.<br />
67