2015 http://excel.fit.vutbr.cz
´ ı komplexn´ıch scen ´ na Optimalizace zobrazovan´ mobiln´ıch zaˇr´ızen´ıch s vyuˇzit´ım enginu Unity Michal Mat´ysˇ ek*
Abstrakt ´ ˇ ı, pomoc´ı enginu Unity, efektivneˇ vykreslovat Tento cˇ lanek popisuje optimalizaˇcn´ı postupy, ktere´ umoˇznuj´ ´ na mobiln´ıch zaˇr´ızen´ıch. Proces zobrazovan´ ´ ı komplexn´ıho prostˇred´ı vytvoˇreneho ´ pomoc´ı sloˇzite´ hern´ı sceny ˇ ´ ˇ s´ı, oproti klasick´ym prezentovan´ych technik je na mobiln´ıch telefonech i tabletech nekolikan asobn eˇ efektivnejˇ ´ vytvaˇ ´ rej´ı testovac´ı pˇr´ıstupum ˚ vyuˇz´ıvaj´ıc´ım dostupne´ komponenty a funkce enginu Unity. V´ysledne´ sceny ˇ ´ ´ prostˇred´ı pro meˇren´ı, anal´yzu a porovnavan´ı efektivity ruzn´ ˚ ych optimalizaˇcn´ıch metod. ´ ı — engine Unity — hry ˇ a´ slova: Optimalizace — mobiln´ı zaˇr´ızen´ı — zobrazovan´ Kl´ıcov ´ Pˇriloˇzene´ materialy: Demonstraˇcn´ı videa *
[email protected], Fakulta informaˇcn´ıch technologi´ı VUT v Brneˇ
´ 1. Uvod Videohry jsou interaktivn´ı simulace orientovan´e na uˇzivatelsk´y z´azˇitek, kter´y je v´yraznˇe ovlivˇnov´an nejen kvalitou vizu´aln´ı zpˇetn´e vazby, ale tak´e jej´ı odezvou a plynulost´ı. Iluze spojit´eho pohybu je, pˇri vykreslov´an´ı hern´ıch sc´en, vytv´aˇrena postupn´ym prom´ıt´an´ım rychle se stˇr´ıdaj´ıc´ıch sn´ımk˚u. Veˇsker´e v´ypoˇcty t´ykaj´ıc´ı se zobrazov´an´ı, animac´ı, fyzik´aln´ı simulace a dalˇs´ıch oblast´ı, je proto nutn´e poˇc´ıtat s dostateˇcnou frekvenc´ı v re´aln´em cˇ ase, coˇz klade vysok´e n´aroky na v´ykon c´ılov´ych platforem. V´ykonnostn´ı a pamˇet’ov´e limitace jsou pak obzvl´asˇ t’ znateln´e pˇri v´yvoji her pro mobiln´ı telefony a tablety, vzhledem k jejich v´yraznˇe omezen´emu hardwaru. Optimalizace zobrazov´an´ı sc´en je proto v t´eto oblasti zcela nezbytn´a. Trojrozmˇern´e hry pro mobiln´ı platformy vyuˇz´ıvaj´ı ˇradu metod, kter´e vhodnˇe, pomoc´ı r˚uzn´ych trik˚u, imituj´ı jinak v´ypoˇcetnˇe n´aroˇcn´e vizu´aln´ı efekty. Mnoho optimalizaˇcn´ıch technik je tak´e zaloˇzeno na principech, kter´e byly dˇr´ıve intenzivnˇe uplatˇnov´any pˇri v´yvoji her pro stoln´ı poˇc´ıtaˇce i konzole.
Pˇrestoˇze se optimalizac´ım vykreslov´an´ı sc´en na mobiln´ıch zaˇr´ızen´ıch vˇenuje cel´a ˇrada, pˇrev´azˇ nˇe webov´ych, zdroj˚u, cˇ asto jsou popisov´any pouze obecn´e poznatky, doporuˇcen´ı a z´akladn´ı metody, kter´e engine Unity implicitnˇe podporuje (napˇr´ıklad frustum culling, occlusion culling, draw call batching a podobnˇe). Dokumentace enginu Unity uv´ad´ı tuto problematiku hned v nˇekolika sekc´ıch [1, 2, 3]. Existuje vˇsak velmi m´alo zdroj˚u, kter´e se zamˇeˇruj´ı na pokroˇcilejˇs´ı optimalizaˇcn´ı metody a jejich efektivitu a vyuˇzit´ı v praxi. Pokroˇcil´e zp˚usoby optimalizac´ı sc´en pro mobiln´ı zaˇr´ızen´ı popisuje pˇredevˇs´ım cˇ l´anek [4] a pˇredn´asˇ ky z v´yvoj´aˇrsk´ych konferenc´ı [5, 6, 7]. C´ılem t´eto pr´ace je nejen prezentace konkr´etn´ıch optimalizaˇcn´ıch metod zamˇeˇren´ych na vykreslov´an´ı sc´en na mobiln´ıch platform´ach, ale i v´yvoj prostˇred´ı vytv´aˇrej´ıc´ı grafick´y benchmark pro tyto platformy. Prezentovan´e prostˇred´ı m´a podobu pokroˇcil´e 3D strategick´e hry. Z´asadn´ı v´yhodou tohoto pˇr´ıstupu je, oproti syntetick´ym test˚um, moˇznost porovn´an´ı v´ykonnosti r˚uzn´ych optimalizaˇcn´ıch algoritm˚u v kontextu komplexn´ı aplikace.
Snímání textur pro povrch terénu
Optimalizovaný terén
Terén Unity
Generování statické geometrie terénu
´ Obrazek 1. Proces optimalizace ter´enu pomoc´ı prezentovan´eho n´astroje.
Naivn´ı implementace prezentovan´ych sc´en s vyuzˇ it´ım dostupn´ych komponent a funkc´ı enginu Unity (ter´en, cˇ a´ sticov´e syst´emy, dynamic batching) byla na mobiln´ıch zaˇr´ızen´ıch extr´emnˇe neefektivn´ı. Sn´ımkov´a frekvence pˇri zobrazov´an´ı takov´ych sc´en se pohybovala v ˇra´ dech jednotek FPS. Pomoc´ı d´ale prezentovan´ych technik doˇslo k mnohon´asobn´emu n´ar˚ustu v´ykonu zobrazov´an´ı, a to i na relativnˇe star´ych zaˇr´ızen´ıch. V´ysledn´a efektivita zobrazov´an´ı sc´en se pohybuje okolo 25 FPS u zaˇr´ızen´ı ThinkPad Tablet z roku 2011 a 60 FPS u prvn´ı generace tabletu Google Nexus 7 z roku 2012.
´ 2. Optimalizace terenu Ter´en je jedn´ım ze z´akladn´ıch element˚u sc´eny. Klasick´e techniky pouˇz´ıvan´e pˇri zobrazov´an´ı ter´enu jsou vˇsak pro mobiln´ı zaˇr´ızen´ı, z d˚uvodu v´ypoˇcetn´ı n´aroˇcnosti, nevhodn´e. Reˇzie spojen´a s ˇr´ızen´ım u´ rovn´ı detail˚u geometrie ter´enu i sloˇzitost shader˚u (vzorkov´an´ı vˇetˇs´ıho mnoˇzstv´ı textur na jeden fragment) v´yraznˇe ovlivˇnuje celkovou efektivitu vykreslov´an´ı. N´astroj prezentovan´y v t´eto kapitole byl navrˇzen za u´ cˇ elem automatick´e optimalizace libovoln´eho ter´enu, vytvoˇren´eho pomoc´ı komponent enginu Unity. V´yvoj´aˇri tak mohou pro modelov´an´ı ter´enu pouˇz´ıvat klasick´e pracovn´ı postupy, kter´e engine nab´ız´ı. V´ysledn´y optimalizovan´y ter´en je tvoˇren jednou u´ rovn´ı detail˚u pomoc´ı statick´e geometrie, kter´a je rozdˇelena do nez´avisl´ych dlaˇzdic. Na kaˇzdou dlaˇzdici je namapov´ana textura, jeˇz obsahuje veˇsker´e detaily povrchu ter´enu (barvy a statick´e st´ıny). Proces optimalizace se skl´ad´a z nˇekolika f´az´ı: • Inicializaˇcn´ı f´aze vyˇzaduje urˇcen´ı vstupn´ıch parametr˚u optimalizaˇcn´ıho procesu (napˇr´ıklad pocˇ et dlaˇzdic nebo rozliˇsen´ı geometrie a textur)
a v´ybˇer zdrojov´eho ter´enu – hern´ıho objektu s pˇripojenou komponentou Terrain. • Proces optimalizace rozdˇel´ı p˚uvodn´ı ter´en na zadan´y poˇcet dlaˇzdic. Pro kaˇzdou dlaˇzdici probˇehne vzorkov´an´ı v´ysˇky p˚uvodn´ıho ter´enu a generov´an´ı nov´e statick´e polygon´aln´ı s´ıtˇe. • Generov´an´ı textur pro v´yslednou geometrii je realizov´ano ortografick´ym sn´ım´an´ım povrchu p˚uvodn´ıho ter´enu. Jednotliv´e sn´ımky (textury) odpov´ıdaj´ı povrchu konkr´etn´ıch dlaˇzdic, viz obr´azek 1. Zobrazov´an´ı sc´en s takto vygenerovan´ym ter´enem je, oproti ter´enu Unity, v´yraznˇe efektivnˇejˇs´ı, a to pˇredevsˇ´ım kv˚uli moˇznosti vyuˇzit´ı jednoduˇssˇ´ıch shader˚u, kter´e vzorkuj´ı pouze jednu texturu na jeden fragment. Porovn´an´ı efektivity vykreslov´an´ı optimalizovan´eho ter´enu a ter´enu reprezentovan´eho komponentou Terrain, pˇri pˇribliˇznˇe stejn´em poˇctu troj´uheln´ık˚u (5 tis´ıc na kaˇzdou variantu), je uvedeno v n´asleduj´ıc´ı tabulce. Tabulka 1. Porovn´an´ı v´ykonu pˇri zobrazov´an´ı sc´en
s vyuˇzit´ım ter´enu dostupn´eho v enginu Unity a optimalizovan´eho ter´enu (se sˇestn´acti dlaˇzdicemi) vytvoˇren´eho prezentovan´ym n´astrojem. Zaˇr´ızen´ı
Ter´en Unity Optimalizovan´y ter´en
Google Nexus 7
19 FPS
ThinkPad Tablet
7 FPS
(VSync limit)
60 FPS 50 FPS
N´astroj pro generov´an´ı optimalizovan´eho ter´enu umoˇznˇ uje, mimo jin´e, i automaticky vytv´aˇret kolizn´ı geometrii pro fyzik´aln´ı simulaci. Rozdˇelen´ı ter´enu na jednotliv´e dlaˇzdice podporuje frustum culling dostupn´y v enginu Unity.
Cube mapa
Výsledná vizualizace hladiny
Prolínání normálových map
Mapa toku + mapa průhlednosti
Mapa toku
Mapa průhlednosti
´ Obrazek 2. Proces zobrazov´an´ı vodn´ı hladiny.
N´asleduj´ıc´ı sekce popisuje efektivn´ı metodu pro vykreslov´an´ı animovan´e a pˇrirozenˇe vypadaj´ıc´ı vodn´ı hladiny. Klasick´e techniky, kter´e se pro tyto u´ cˇ ely typicky vyuˇz´ıvaj´ı, jsou, stejnˇe jako v pˇr´ıpadˇe zobrazov´an´ı ter´enu, pro mobiln´ı platformy nevhodn´e, a to pˇredevˇs´ım kv˚uli omezen´emu pˇr´ıstupu k pamˇeti hloubky (depth buffer) u ˇrady mobiln´ıch telefon˚u i tablet˚u. V´ysˇ e uveden´e omezen´ı mobiln´ıch zaˇr´ızen´ı neumoˇznˇ uje efektivnˇe zobrazovat plynul´e pˇrechody mezi ter´enem a vodn´ı hladinou. Z toho d˚uvodu vyuˇz´ıv´a prezentovan´a metoda texturu, kter´a ud´av´a pr˚uhlednost vodn´ı hladiny v definovan´ych oblastech. Vyuˇzit´ı takov´e textury v´yraznˇe zjemn´ı pˇrechody v okol´ı hranice vody a ter´enu. Animace toku vody je tvoˇrena periodick´ym prol´ın´an´ım dvou pohybuj´ıc´ıch se textur (norm´alov´ych map), namapovan´ych na polygon´aln´ı model hladiny. Tento postup vˇsak z principu umoˇznˇ uje vizualizovat tok vody pouze v jednom libovoln´em smˇeru, coˇz je nevhodn´e pro vizualizaci vodn´ı hladiny ˇrek, kde smˇer toku vody kop´ıruje ˇreˇciˇstˇe. Prezentovan´a metoda proto umoˇznˇ uje vyuˇz´ıt i takzvanou mapu toku (flow map [8]). Mapa toku je textura, kter´a definuje dvoudimenzion´aln´ı smˇerov´e vektory v rovinˇe hladiny a urˇcuje tak smˇer a rychlost toku vody v dan´ych oblastech, coˇz umoˇznˇ uje vytvoˇrit pˇrirozenˇe vypadaj´ıc´ı vizualizaci ˇreky. Protoˇze je pro urˇcen´ı smˇeru toku vyuˇzit pouze dvousloˇzkov´y vektor, je moˇzn´e mapu toku slouˇcit s texturou, kter´a v jedn´e sloˇzce definuje pr˚uhlednost vodn´ı hladiny. Slouˇcen´ı tˇechto textur pˇrisp´ıv´a k efektivitˇe metody. Sloˇzky r a g nesou smˇerov´y vektor pohybu vody v dan´em m´ıstˇe, sloˇzka b pak definuje pr˚uhlednost vodn´ı hladiny. Textury, kter´e se dle mapy toku pohybuj´ı po vodn´ı hladinˇe, urˇcuj´ı norm´alov´e vektory, na z´akladˇe nichˇz prob´ıh´a vzorkov´an´ı cube mapy [9]. T´ımto postupem je
doc´ıleno pˇrirozenˇe vypadaj´ıc´ıch odraz˚u. Cel´y proces vykreslov´an´ı vodn´ı hladiny je ilustrov´an na obr´azku 2. Vizu´aln´ı kvalita prezentovan´e metody je v´yraznˇe z´avisl´a na pouˇzit´ych textur´ach a rychlosti pohybu textur po hladinˇe. Pˇri pouˇzit´ı mapy toku doch´az´ı k deformaci tˇechto textur. Aby bylo moˇzn´e deformace skr´yt, textury hladiny se periodicky aditivnˇe prol´ınaj´ı a posouvaj´ı pouze po mal´ych u´ sec´ıch. Pr˚uhlednost obou textur hladiny je v souˇctu vˇzdy rovna jedn´e a stˇr´ıd´a se dle principu ilustrovan´eho na obr´azku 3. Tento postup umoˇznˇ uje jednoduˇse maskovat stavy, ve kter´ych doch´az´ı k resetov´an´ı posunu textur – posun kaˇzd´e vrstvy je resetov´an v dobˇe, kdy m´a dan´a vrstva plnou pr˚uhlednost. Nedoch´az´ı proto k viditeln´ym skok˚um v pohybu hladiny. 1.0
vrstva 1
vrstva 2
průhlednost
´ ı animovane´ vodn´ı hladiny 3. Zobrazovan´
0.0
čas
´ Obrazek 3. Princip stˇr´ıd´an´ı pr˚uhlednosti vrstev –
restart posunu textur prob´ıh´a v m´ıstˇe, kdy je dan´a vrstva plnˇe pr˚uhledn´a. Prezentovan´y postup vykreslov´an´ı vodn´ı hladiny generuje pˇrirozenˇe vypadaj´ıc´ı v´ysledky. V´ypoˇcetn´ı n´aroˇcnost metody je i pˇresto st´ale dostateˇcnˇe n´ızk´a. Tuto techniku je proto moˇzn´e vyuˇz´ıt i na mobiln´ıch telefonech a tabletech. Integrovan´a metoda vizualizace toku vody je zalozˇ ena na principu prezentovan´em v dokumentu [8].
´ Obrazek 4. V´ysledn´a vizualizace vodn´ı hladiny.
´ vrcholu˚ 4. Animace na bazi Animace jsou z´asadn´ı souˇca´ st´ı procesu vykreslov´an´ı pˇrirozenˇe p˚usob´ıc´ıho prostˇred´ı. Postup prezentovan´y v n´asleduj´ıc´ı sekci pˇredstavuje velmi efektivn´ı zp˚usob animace libovoln´ych element˚u sc´en, jejichˇz pohyb lze aproximovat napˇr´ıklad pomoc´ı goniometrick´ych funkc´ı. N´ızk´a v´ypoˇcetn´ı n´aroˇcnost t´eto metody, umoˇznˇ uje, bez z´asadn´ıho vlivu na v´ykon, animovat stromy a jin´e rostliny, pˇr´ıpadnˇe dalˇs´ı objekty, napˇr´ıklad dr´aty elektrick´eho veden´ı nebo vlajky a tkaniny pohybuj´ıc´ı se ve vˇetru. Veˇsker´e v´ypoˇcty souvisej´ıc´ı se samotnou animac´ı jsou prov´adˇeny ve f´azi transformace vrchol˚u ve vertex shaderu na grafick´em akceler´atoru. Geometrie animovan´ych model˚u je deformov´ana (animov´ana) na z´akladˇe goniometrick´ych funkc´ı. Atributy vrchol˚u animovan´eho modelu urˇcuj´ı, vedle typick´ych hodnot, jako jsou pozice, norm´alov´e vektory nebo texturov´e souˇradnice, tak´e v´ahu, kter´a definuje intenzitu aplikace pohybu na dan´y vrchol. Hodnota v´ahy se obvykle nach´az´ı v intervalu < 0, 1 >. Vrchol s nulovou v´ahou se nepohybuje, naopak vrchol s v´ahou rovnou jedn´e se pohybuje s plnou intenzitou. Obr´azek 5 vizualizuje pˇr´ıklad pouˇzit´ı v´ahy pˇri animaci r˚uzn´ych objekt˚u.
movat jednoduˇse pomoc´ı goniometrick´ych funkc´ı a z´avislosti na cˇ ase. Pro zobrazov´an´ı cel´eho lesa je vhodn´e zan´est do f´aze pohybu strom˚u urˇcitou n´ahodnost. Toho lze dos´ahnout napˇr´ıklad pˇripojen´ım dalˇs´ıho atributu vrcholu, kter´y ponese, pro kaˇzd´y strom, n´ahodnˇe vygenerovanou hodnotu, jeˇz se vyuˇzije pro modifikaci cˇ asu a dojde tak k rozpt´ylen´ı f´az´ı pohybu jednotliv´ych strom˚u. Stejn´e postupy lze vyuˇz´ıt i pro dalˇs´ı rostliny a jin´e objekty. V pˇr´ıpadˇe animovan´ych dr´at˚u elektrick´eho veden´ı jsou nav´ıc pouˇzity pro v´ypoˇcet pohybu modifikovan´e norm´alov´e vektory, kter´e urˇcuj´ı smˇer, j´ımˇz se dr´aty mohou pohybovat. N´asleduj´ıc´ı tabulka prezentuje efektivitu animac´ı na b´azi vrchol˚u. Testovac´ı sc´ena zahrnovala v z´abˇeru kamery v´ıce neˇz 800 strom˚u a pˇribliˇznˇe 80 dalˇs´ıch objekt˚u, na kter´e byly animace aplikov´any (pˇribliˇznˇe 85 tis´ıc troj´uheln´ık˚u a 125 tis´ıc vrchol˚u). Pˇresto doˇslo pouze k minim´aln´ımu ovlivnˇen´ı v´ykonu. Tabulka 2. Vliv animac´ı na efektivitu zobrazov´an´ı
sc´en. Zaˇr´ızen´ı
Bez animac´ı S animacemi
Google Nexus 7
52 FPS
49 FPS
ThinkPad Tablet
26 FPS
25 FPS
Prezentovan´a metoda poskytuje velmi efektivn´ı zp˚usob animace velk´eho mnoˇzstv´ı objekt˚u i na mobiln´ıch zaˇr´ızen´ıch a umoˇznˇ uje tak vytv´aˇret pˇrirozenˇe p˚usob´ıc´ı prostˇred´ı.
´ Obrazek 6. Efektivn´ı animace lesa, rostlin, dr´at˚u
elektrick´eho veden´ı a dalˇs´ıch objekt˚u.
5. Analyza ´ vykonu ´ ´ Obrazek 5. Pˇr´ıklady animovan´ych objekt˚u
s vizualizac´ı intenzity pohybu - cˇ erven´e oblasti objekt˚u se nepohybuj´ı (v´aha je rovna nule), zelen´e oblasti se pohybuj´ı (v´aha je rovna jedn´e). V´ypoˇcet animace pohybu je zaloˇzen na r˚uzn´ych postupech. V pˇr´ıpadˇe animace strom˚u lze pohyb aproxi-
Anal´yza v´ykonu prezentovan´ych sc´en je, kromˇe klasick´eho profilov´an´ı, prov´adˇena tak´e pomoc´ı implementovan´ych skript˚u, kter´e umoˇznˇ uj´ı zaznamen´avat efektivitu vykreslov´an´ı za bˇehu aplikace na mobiln´ım zaˇr´ızen´ı. Statistiky v´ykonu jsou pak pˇr´ımo ze zaˇr´ızen´ı odes´ıl´any na server pro zpracov´an´ı a vyhodnocen´ı.
´ Obrazek 7. Sc´eny optimalizovan´e pro mobiln´ı platformy – z p˚uvodn´ıch jednotek sn´ımk˚u za sekundu na obou
testovac´ıch zaˇr´ızen´ıch doˇslo pˇri pouˇzit´ı optimalizaˇcn´ıch technik ke zrychlen´ı na pr˚umˇern´ych 25 FPS u tabletu ThinkPad Tablet z roku 2011 a 60 FPS u prvn´ı generace tabletu Google Nexus 7 z roku 2012.
´ er ˇ 6. Zav Vybran´e metody popisovan´e v tomto cˇ l´anku jsou, spoleˇcnˇe s dalˇs´ımi algoritmy, vyuˇzity pˇri v´yvoji komplexn´ıch sc´en, kter´e umoˇznˇ uj´ı v´yvoj´aˇru˚ m analyzovat vliv konkr´etn´ıch optimalizaˇcn´ıch postup˚u na v´ykon vykreslov´an´ı. Prezentovan´e techniky jsou vhodn´e nejen pro mobiln´ı platformy. Jejich uˇzit´ım lze dosahovat vizu´alnˇe kvalitn´ıch v´ysledk˚u na pr˚umˇern´ych mobiln´ıch telefonech i dalˇs´ıch zaˇr´ızen´ıch s niˇzsˇ´ım v´ypoˇcetn´ım v´ykonem. Vytvoˇren´e komplexn´ı sc´eny zahrnuj´ı ˇradu r˚uzn´ych objekt˚u (mimo jin´e tak´e vozidla, postavy nebo cˇ a´ sticov´e syst´emy) a demonstruj´ı tak, na praktick´ych pˇr´ıkladech, mnoho pˇr´ıstup˚u k ˇreˇsen´ı konkr´etn´ıch probl´em˚u pˇri v´yvoji her pro mobiln´ı zaˇr´ızen´ı.
ˇ ´ ı 7. Podekov an´ Tento pˇr´ıspˇevek vznikl pod veden´ım pana Ing. Rudolfa Kajana. Nˇekter´e vizu´aln´ı materi´aly pouˇzit´e v t´eto pr´aci (textury, modely) jsou autorsk´ym d´ılem Michala Zachari´asˇe, Davida Jozefova a Martina Wilcz´aka.
Literatura [1] Unity Technologies. Optimizing graphics performance. In Unity Manual. Unity Technologies, 2015 [cit. 2015-03-19]. documentation.
[2] Unity Technologies. Practical guide to optimization for mobiles. In Unity Manual. Unity Technologies, 2015 [cit. 2015-03-19]. documentation. [3] Unity Technologies. Rendering optimizations. In Unity Manual. Unity Technologies, 2015 [cit. 2015-03-19]. documentation. [4] Will Goldstone. Shadowgun: Optimizing for mobile sample level. In Technology - Unity Blog. Mar 2013 [cit. 2015-03-19]. [5] Aras Pranckeviˇcius and Renaldas Zioma. Optimizing unity games for mobile platforms, Aug 2011 [cit. 2015-03-19]. SIGGRAPH 2011. [6] Alexander Dolbilov. Optimizing unity games, Aug 2014 [cit. 2015-03-19]. Google I/O 2014. [7] Angelo Theodorou. Optimizing unity games for mobile platforms, Aug 2013 [cit. 2015-03-19]. Unite 2013. [8] Alex Vlachos. Water flow in portal 2, 2010 [cit. 2015-03-19]. SIGGRAPH Course on Advances in Real-Time Rendering in 3D Graphics and Games. [9] Unity Technologies. Cubemap. In Unity Manual. Unity Technologies, 2015 [cit. 2015-03-19]. documentation.