A licencelt videojáték-motorok esetében mindig számítani kell olyan döntésekre, melyek kapcsán az eredetileg beépített technika nem felel meg az adott játék grafikai dizájnja által támasztott igényeknek. Ez különösen igaz akkor, ha az adott motor fejlesztésénél is előkerültek olyan technikai problémák, amelyek miatt bizonyos fejlesztések zsákutcába futottak. A Lionhead Studios és a Microsoft által licencelt Unreal Engine 4 többek között eleve nagyon nehezen született meg, ráadásul időközben több innovatív grafikai megoldást is kivettek belőle. Persze az Epic a fejlesztés utolsó szakaszában főleg a mobil piacra fókuszált, így elsősorban olyan technológiák beépítését látták kifizetődőnek, amelyek az ultramobil grafikus vezérlőkön is jól futnak.
Az Unreal Engine 4 különösen nagy ígérete eredetileg a voxel cone tracingre épülő a globális illumináció volt, melynek leképzéséhez a sparse voxel octree adatstruktúrát használt volna. Ez azonban a tervezett implementáción sosem működött igazán, mivel az Epic egészet a grafikus processzoron futtatta compute shaderben, de a végeredmény nem volt stabil és sokszor gyors sem. A legfőbb probléma ott keletkezett, hogy a koncepcióhoz szükséges adatstruktúra rendkívül sok memóriát igényelt, és ha ez nem állt rendelkezésre, akkor tulajdonképpen leállt az egész rendszer működése. Utóbbi gyakorlatilag egyenlő volt azzal, hogy az eredetileg szépen megvilágított virtuális környezet szinte teljesen elsötétült. Nyilván ezt nem lehet megengedni egy olyan programban, ahol a felhasználó számít a megfelelő vizuális visszajelzésre, így az Epic kénytelen volt elengedni ezt az álmot.
Hirdetés
Alternatívaként talán felmerülhetett, hogy az új generációs, Xbox One és PlayStation 4 konzolokra megoldható lenne a voxel cone tracingre épülő globális illumináció a PRT (Partially Resident Textures) technológia használatával, hiszen a Sony már épített egy ilyen prototípus kódot, de ez nagyon specifikus rendszer, ami jelenleg tényleg csak a megcélzott architektúrán működhet, tehát szabványos formában még kivitelezhetetlen.
A fenti problémák miatt az Unreal Engine 4 az – ARM által birtokolt – Enlighten technológiára építkezik, ha globális illuminációról van szó, melynek előnye, hogy igen jól működik az ultramobil grafikus vezérlőkön. Ugyanakkor tagadhatatlan, hogy a PC és a két új generációs konzol komolyabb hardvereket kap, mint a legmodernebb okostelefon vagy tablet, tehát az Enlighten ugyan nem rossz, de van jobb minőségű alternatíva.
A Lionhead Studios a készülő Fable Legends című, Xbox One exkluzív játékhoz teljesen dinamikus megvilágítást terveznek. A lokális illumináció szempontjából erre a licencelt Unreal Engine 4 lehetőséget ad, de a globális illumináció esetében az Enlighten nem teljesen felel meg az igényeknek. Többek között azért, mert rengeteg trükköt alkalmaz a jó sebesség érdekében, de a legfőbb limitációja, hogy a rendszer csak a statikus objektumokra alkalmazható.
Fable Legends globális illumináció nélkül és globális illuminációval [+]
Az Xbox One IGP-je azonban elég erős ahhoz, hogy teljesen dinamikus legyen a számítás a direkt és az indirekt megvilágítás szempontjából, akár a dinamikus objektumokra is, így az Enlighten helyére a Light Propagation Volumes eljárás kerül. Ennek elég sok implementációja van, de a Lionhead Studios a Crytek eredeti megoldását modernizálta a saját igényeiknek, illetve az Xbox One hardverének megfelelően. Ez lényegében a compute shader bevetését jelenti a jelenet geometriájának jó minőségű voxel reprezentációjához, illetve az eredetinél pontosabb megvilágítást tesz lehetővé.
Jó hír egyébként, hogy a Lionhead Studios az implementációt megosztotta az Epic fejlesztőivel, így az Unreal Engine 4 az alapértelmezett Enlighten megoldás mellett már tartalmazza a Fable Legends játékban használt Light Propagation Volumes eljárást is, amit más fejlesztő természetesen használhat a jövőben.