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.

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

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

Saved successfully!

Ooh no, something went wrong!