Terrain Processing on Modern GPU - Computer Graphics Group ...
Terrain Processing on Modern GPU - Computer Graphics Group ...
Terrain Processing on Modern GPU - Computer Graphics Group ...
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