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.

Obrázek 2.16: Různé způsoby zakrytí praskliny mezi bloky. Vlevo nahoře vidíme prasklinu<br />

vzniklou spojením dvou odlišně dělených bloků. Vpravo nahoře je znázorněno vyplnění praskliny<br />

přesně generovanou geometrií. Vlevo dole vidíme užití šikmé obruby a vpravo dole svislý závoj.<br />

V naší dřívější práci (43) jsme použili GeoMipMapping na pravidelné mřížky jako de Boer, ale<br />

protože naše metrika nezajišťovala žádné restrikce na úroveň detailu sousedních bloků, byli jsme<br />

nuceni vyzkoušet Ulrichovo řešení (nebo vygenerovat velké množství index bufferů pro různá<br />

napojení). Spojité napojování geometrie se v našem případě však ukázalo příliš časově náročné, a<br />

vytváření obruby i závoje mělo velké vizuální nedostatky, často horší než prasklina samotná. Pro<br />

přidanou geometrii (obrubu či závoj) nebylo v k<strong>on</strong>krétním případě triviální nalézt vhodné<br />

normály a souřadnice textury. Textura byla proto roztažená v jednom směru a špatná normála<br />

často produkovala nesprávné osvětlení, opticky velmi rušivé. Námi navržené řešení spočívalo<br />

v zobrazování terénu dvakrát pro jeden snímek. První zobrazení proběhne jako obvykle, avšak<br />

při druhém se celý terén posune kousek směrem dolů. To zaplní díry v prasklinách daty velmi<br />

podobnými těm, která by tam správně měla být (za předpokladu ne příliš náhlé změny na tak<br />

malém úseku – jedná se řádově o jednotky až desítky centimetrů). Teoreticky by se tak náročnost<br />

zobrazování mohla až zdvojnásobit, avšak řešení využívá toho, že většina pixelů se vyjme ze<br />

zpracování díky hloubkovému testu. Naše experimenty ukázaly, že výsledná rychlost klesne<br />

pouze v rozsahu 5 %.<br />

Další užití GeoMipMappingu můžeme nalézt v (44), kde je napojování sousedních oblastí pro<br />

změnu řešeno přechodovými pásy. Tyto pásy jsou generovány pro všechny možné kombinace<br />

sousedních oblastí. Při zobrazování se kreslí každý blok pomocí 5 nezávislých částí (4 okraje a 1<br />

střed), což oproti předchozím přístupům obnáší pětkrát více volání patřičných API funkcí na<br />

zobrazování. To je z našeho současného hlediska daleko méně efektivní. Algoritmus je však velice<br />

snadno implementovatelný, což může být důležitým kritériem.<br />

Jinou adaptaci uvedl Wagner v (45), kde představuje zřejmě jednu z prvních implementací<br />

morfování na <strong>GPU</strong> (další nalezneme kupříkladu v (46)). Dřívější implementace byly zpravidla<br />

34

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

Saved successfully!

Ooh no, something went wrong!