Voxel Ray Casting: příští generace grafiky?
16.11.2009, Petr Štefek, článek
O společnosti id Software nebylo dlouho slyšet a nyní k nám přichází s horkou novinkou v podobě vyvíjeného grafického enginu (respektive způsobu zobrazování) s názevm Voxel Ray Casting. Tento způsob zobrazování je do jisté míry revolučnější než ray tracing, takže si o něm pojďme popovídat blíže.
Kapitoly článku:
Zatím jsme si ukázali, že Voxely mohou být v mnoha ohledech skoro spásné, ale samozřejmě existují také slabiny, se kterými se musí vývojář potýkat. Hlavní problém spočívá ve vypočítávání a modifikování datové struktury „octree“ v reáném čase, což vyžaduje opravdu velkou výpočetní sílu. To téměř znemožňuje využití „voxel octrees“ pro dynamickou geometrii. Vývojáři id Software ovšem navrhují (aby obešli toto omezení) využívat „octrees“ pouze pro statickou geometrii a pro dynamickou by to znamenalo využití staré dobré trojúhelníkové rasterizace.
Výhody při využití voxelů budou zřejmé nejen ve vizuální stránce her, ale také v případě interakce hráče s herním světem, kde dnes o plně „ničitelném“ prostředí nemůže být řeči. V případě využití voxelů může dostat herní prostředí novou dávku reality, neboť například po rozbití zdi budete moci vidět několik vrstev materiálů, ze které se samotná zeď skládá. To vše je ale hudba budoucnosti. Dnes je ve hrách hojně využíváno skriptů a navíc jsou samotné budovy jen jakousi slupkou tvořenou polygony (uvnitř není nic).
Další problém spočívá ve využití „streaming systému“, který v této renderovací technice znamená výhody jako dynamicky se měnící LOD, takže v případě, že se přibližujete k budově, tak nevidíte, jak skokově mění svou úroveň detailů (geometrie a textur), ale vše probíhá v rámci možností plynule a tedy i realističtěji. Kouzlo spočívá v organizaci dat do stromové struktury. V případě geometrie, kdy bude třeba skokově změnit LOD ze základního na velmi detailní, to nebude problém. Tento fakt ovšem není specifický pouze pro „voxel octrees“. Každý „streaming systém“ je navržen tak, aby dokázal zpracovávat relativně plynulé změny úrovně detailů, ale velmi těžko se vyrovnává s náhlými změnami.
Možná už tušíte, kde může ležet onen příslovečný zakopaný pes. Jsou to textury, kdy v případě klasické rasterizace dojde ke skokovému změnění detailů, tak malinkou chvíli můžete pozorovat, že objekt má stále texturu o nízkém rozlišení, která se v momentě změní na texturu s vyšším rozlišením. Nestává se to příliš často, ale každopádně to na vizuální kráse a pocitu ze hry nepřidá. V případě voxelů by tato „chyba“ ovšem vypadala ještě příšerněji.
Další nevýhodou je pixelizace, která vzniká v případě, že zobrazíte barvu voxelů protnutou paprskem (nezapomeňme, že se jedná o ray casting), což způsobí, že hrany objektu budou rozeznatelné a působí zdánlivé artefakty v obraze. Tento problém má ovšem díky bohu řešení v podobně trilineárního filtrování, které zamezí podobnému efektu, který nemá u „next-gen“ technologie zobrazování své místo.
Poslední výzvou pro vývojáře jsou nároky paměť, které jsou opravdu enormní, což jsme si ukázali již na příkladu v minulých kapitolách. Uložit a pracovat s celým herním světem ve voxelech bude nesmírně náročné. Id Software má tedy před sebou důležitý úkol vyvinout příslušné kompresní algoritmy, které budou tento problém řešit. Představitelé společnosti se ovšem vyjádřili v tom smyslu, že tento problém byl vyřešen. Nezbývá nám tedy, než jim věřit a držet palce.
Výhody při využití voxelů budou zřejmé nejen ve vizuální stránce her, ale také v případě interakce hráče s herním světem, kde dnes o plně „ničitelném“ prostředí nemůže být řeči. V případě využití voxelů může dostat herní prostředí novou dávku reality, neboť například po rozbití zdi budete moci vidět několik vrstev materiálů, ze které se samotná zeď skládá. To vše je ale hudba budoucnosti. Dnes je ve hrách hojně využíváno skriptů a navíc jsou samotné budovy jen jakousi slupkou tvořenou polygony (uvnitř není nic).
Další problém spočívá ve využití „streaming systému“, který v této renderovací technice znamená výhody jako dynamicky se měnící LOD, takže v případě, že se přibližujete k budově, tak nevidíte, jak skokově mění svou úroveň detailů (geometrie a textur), ale vše probíhá v rámci možností plynule a tedy i realističtěji. Kouzlo spočívá v organizaci dat do stromové struktury. V případě geometrie, kdy bude třeba skokově změnit LOD ze základního na velmi detailní, to nebude problém. Tento fakt ovšem není specifický pouze pro „voxel octrees“. Každý „streaming systém“ je navržen tak, aby dokázal zpracovávat relativně plynulé změny úrovně detailů, ale velmi těžko se vyrovnává s náhlými změnami.
Možná už tušíte, kde může ležet onen příslovečný zakopaný pes. Jsou to textury, kdy v případě klasické rasterizace dojde ke skokovému změnění detailů, tak malinkou chvíli můžete pozorovat, že objekt má stále texturu o nízkém rozlišení, která se v momentě změní na texturu s vyšším rozlišením. Nestává se to příliš často, ale každopádně to na vizuální kráse a pocitu ze hry nepřidá. V případě voxelů by tato „chyba“ ovšem vypadala ještě příšerněji.
Další nevýhodou je pixelizace, která vzniká v případě, že zobrazíte barvu voxelů protnutou paprskem (nezapomeňme, že se jedná o ray casting), což způsobí, že hrany objektu budou rozeznatelné a působí zdánlivé artefakty v obraze. Tento problém má ovšem díky bohu řešení v podobně trilineárního filtrování, které zamezí podobnému efektu, který nemá u „next-gen“ technologie zobrazování své místo.
Poslední výzvou pro vývojáře jsou nároky paměť, které jsou opravdu enormní, což jsme si ukázali již na příkladu v minulých kapitolách. Uložit a pracovat s celým herním světem ve voxelech bude nesmírně náročné. Id Software má tedy před sebou důležitý úkol vyvinout příslušné kompresní algoritmy, které budou tento problém řešit. Představitelé společnosti se ovšem vyjádřili v tom smyslu, že tento problém byl vyřešen. Nezbývá nám tedy, než jim věřit a držet palce.