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.

nepodává nikterak důvěryhodné výsledky. Proto by bylo vhodné zaměřit se v další práci na<br />

aspekt dodání realističnosti pomocí barev.<br />

Jednou z možností je pokrýt celý terén jedinou velkou texturou, kterou připraví designér. Pro<br />

mapování je možno využít již vytvořeného načítacího frameworku s rozdělením terénu na<br />

čtverce. Vedle mapy reziduí a normálové mapy by se tak načítala i barevná textura, což by<br />

znamenalo výrazně vyšší paměťové nároky i větší zatížení systému při načítání, neboť barevná<br />

informace musí být většího rozlišení než geometrie či normály.<br />

Jiným řešením je použití tradičních clipmap podle (52). Při omezení se na Shader Model 4.0<br />

bychom je mohli lehce implementovat pomocí pole textur, jako to dělá (102). Oproti<br />

předchozímu řešení bychom s clipmapami ušetřili velké množství paměti, což je zásadní<br />

především pro k<strong>on</strong>zolové hry. Obě dosud zmíněná řešení však vyžadují objemné množství dat,<br />

pravděpodobně přípustné spíše tam, kde je skutečná neopakující se textura přímo vyžadována<br />

charakterem aplikace (zobrazování reálné krajiny).<br />

Jinou možností je syntetické generování textury na základě nějakých předloh. Například<br />

turbulentní funkce se často používá pro narušení pravidelnosti při vzorkování jinak<br />

pravidelného vzoru. Turbulentní funkci bychom mohli použít i my při vzorkování barevného<br />

přechodu. Častěji se však používá při indexaci menších předloh, které se opakují v terénu, ale na<br />

které je aplikována lokální modifikace. Možností je celá řada, velmi záleží na k<strong>on</strong>covém použití,<br />

protože ne každý způsob poskytuje dostatečnou k<strong>on</strong>trolu pro designéra. S tímto postupem<br />

souvisí také míchání více vrstev textur. Je například možné předdefinovat barevná schémata<br />

odpovídající druhu povrchu (písek, sníh, tráva, bláto,…) a pomocí syntézy s bezbarvou texturou a<br />

případnou úpravou dalšího lokálního detailu dojít k velmi realistickým výsledkům.<br />

Do této práce se již texturování terénu nevešlo, neboť stojí stranou zvoleného zobrazovacího<br />

postupu a různé metody mapování textury lze zpravidla použít na kterýkoli algoritmus. Volba<br />

tedy stojí spíše na potřebě vynucené danou aplikací. Pro vizuální vjem je však textura velmi<br />

důležitá, a bylo by vhodné některou z navržených cest v budoucnu použít pro vytvoření<br />

ucelenějšího řešení.<br />

4.7.4 Jiná vylepšení<br />

Kromě již zmíněných větších celků stojí za úvahu řada menších úprav či experimentů. Jedním<br />

z nich je například změna interpolačního schématu použitého pro generování a rek<strong>on</strong>strukci<br />

výšek terénu. V současné době používáme bilineární interpolaci 4 sousedů, což má výhodu velmi<br />

snadného vyjádření. Zvláště díky současnému velkému využití texturovacích instrukcí by bylo<br />

možné nahradit lineární interpolaci kupříkladu kosinovou. Výpočet kosinu je sice výpočetně<br />

náročný, ale mohl by se snadno schovat za latence pamětí. Jinou možností je zohlednit i okolní<br />

vzorky pro kubickou či jinou interpolaci, nebo dok<strong>on</strong>ce použít nějaké z dělících schémat<br />

popsaných v paragrafu 3.2. To by ovšem znamenalo ještě větší množství vzorků, takže zřejmě<br />

další omezení výk<strong>on</strong>u. Závěry se však dají udělat až po patřičném otestování.<br />

Načítací framework má své limitace a v současné chvíli se silně projeví, když nejsou data<br />

dostatečně rychle načtena a zobrazování probíhá bez aktualizovaných informací. Například<br />

94

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

Saved successfully!

Ooh no, something went wrong!