Egy ideje már látni lehet, hogy a haj és a szőr szimulálására meglehetősen nagy az érdeklődés, így és ezek a játékokban is bemutatkoztak már. Előbbire példa a Tomb Raider című játék, ahol Lara Croft haja volt megvalósítva TressFX-szel, míg a szőrre vonatkozóan a Call of Duty: Ghosts mutatott példát a Riley néven elhíresült kutya bundáján keresztül. Bár két külön dologról beszélünk, de a haj és a szőr szimulálásának alapja lényegében megegyező, tehát a rendszer működéséért és megjelenítésért felelős alapalgoritmus azonos, így csak a körítésen kell némileg változtatni.
Hirdetés
Az AMD és az NVIDIA kínál olyan technológiákat, amelyek a haj és a szőr szimulálására szolgálnak. Az előbbi vállalat a TressFX, míg az utóbbi cég a HairWorks rendszert fejlesztette ki erre a célra. Mindkét algoritmus DirectCompute API-n keresztüli szimulációt használ, míg a megjelenítéshez DirectX 11-es futószalag szükséges, de a modernebb API-kra is átültethetők.
Természetesen az érintettek a saját megoldásukat tartják etalonnak, de arra kíváncsiak voltunk, hogy mit gondolnak erről maguk a fejlesztők. A TressFX-ről a nyílt forráskódnak hála sokan tudtak beszélni, de leginkább a Nixxes Software véleményére adtunk, hiszen ők már használták a technológiát. A HairWorks esetében sajnos nem olyan egyszerű az információkat megszerezni, hiszen a forráskód zárt, és az is tilos, hogy a működésről bárki beszámoljon, így ezzel kapcsolatban csak nagyon felületes adatokat szereztünk, illetve az érintett fejlesztők nem szerették volna felvállalni a nevüket, és azt sem, hogy hol dolgoznak. Azt sajnos nem tudjuk, hogy az NDA egészen pontosan mit tilt, és mit enged meg, de amit megtudtunk, azt megosztjuk.
TressFX
Az AMD TressFX működésével nem szeretnénk sokat foglalkozni, hiszen korábban már leírtuk, ideértve a 2.0-s verziót, illetve az érkező, szőrszimuláláshoz való opciót. A HairWorks információink szerint a szimulációra némileg eltérő modellt használ, így a hajmozgás inkább szövetszerű lesz. Ezt nehéz jobban leírni, de lényegében bizonyos egymás melletti tincsek nagyon együtt mozognak majd, mintha egymáshoz lennének ragasztva, de valójában ezek különálló hajszálak a leképzés szempontjából. Itt elsődlegesen a befektetett erőforrás a kérdéses, hiszen mind a TressFX, mind pedig a HairWorks esetében van egy időkeret a szimulációra és a leképzésre. Mivel mindkét technika igen komplex, így szinte minden fázisban szükséges valamilyen kisebb-nagyobb kompromisszum megkötése. A HairWorks a DirectCompute API-n keresztüli szimulációba mérhetően kevesebb erőforrást fektet, mint a TressFX, ami a hajmozgás minőségén látszódni is fog.
A leképzés szempontjából már drámaian eltérő a HairWorks által kidolgozott megoldás. Az NVIDIA úgynevezett isoline tesszellációt használ a haj legenerálására. Itt lényegében arról van szó, hogy maga a virtuális világban a haj egy vonal szintjén létezik, majd azt a tesszellátor felbontja sok kicsi szakaszra. Az egész HairWorks effektnek ez a legmegterhelőbb része. A rendszer hátránya a leképzés szempontjából, hogy az NVIDIA nagyon sok időt fektet a haj tesszellálásába, így viszont nagyon kevés erőforrás marad a többi fontosabb technikára. Kiemelendő itt az OIT (Order Independent Transparency, azaz sorrendtől független átlátszóság), ami a tincsek korrekt sorrendben történő megjelentése szempontjából rendkívül fontos.
HairWorks
Ne feledjük, hogy hajszálakról van szó, amelyek rendkívül vékonyak, így előfordulhat, hogy grafikus vezérlő nem minden pixel esetében találja meg azt a hajszálat, amelyről a mintát kellene venni. Valamilyen adat biztos lesz a pixelre vonatkozóan, de lehetséges, hogy az egyik hajszál közepe hiányzik, ami szimplán egy mintavételi probléma, hiszen a jelenetben ott van minden információ, de megfelelő OIT hiányában pont nem a jó hajszál került leképzésre az adott pixel esetében. Ez egyfajta szaggatott hajmegjelenítést eredményez. A HairWorks esetében éppen ezért kiemelten ajánlott a minimum négymintás MSAA használata. Az effekt élsimítás nélkül is működik, de eléggé hiányos lesz, érthetőbben mondva rendkívül kócos jellege lesz a hajnak, és a kócok nézőpont függvényében változnak. Ez ellen lehet még védekezni sötétebb tónusú hajszínnel. Ezt a trükköt a fejlesztők is alkalmazzák, noha magát a problémát nem oldja meg, de a sötétebb szín miatt a jelenség kevésbé feltűnő.
Az általános vélemény a szimuláció és a leképzés minőségére vonatkozóan az, hogy a TressFX minősége mindkét szempontból jobb, illetve az effekt a működése is gyorsabb. Viszont a fejlesztők szerint nem ennyire egyszerű a történet, mivel a HairWorks is rendelkezik előnyökkel. Többek között az egyik fontos szempont, hogy az adott jelenetben több szereplőnek lehet szimulált haja a HairWorks alkalmazásával, mint TressFX-szel, anélkül, hogy az effektet DirectX 11.1-re, vagy még modernebb API-ra kellene korlátozni. Az NVIDIA megoldásának másik előnye, hogy a tartalom, azaz gyakorlatilag a haj elkészítése ehhez a rendszerhez egyszerűbb, mint a TressFX-hez. Persze utóbbi esetben nincs szó arról, hogy az AMD megoldásához a haj megalkotása radikálisan több időt venne igénybe, de az NVIDIA jobban odafigyelt erre a tényezőre.
Igazából a fejlesztők szerint nincs ideális választás. Az AMD és az NVIDIA hajszimulálása is rendelkezik előnyökkel, illetve hátrányokkal. Nagyon leegyszerűsítve a TressFX jobb minőséget kínál és gyorsabb, míg a HairWorks egyszerűbben beépíthető, és bizonyos jelenetek esetében előnyösebb a használata. A megkérdezett fejlesztők szerint a játékhoz kell kiválasztani a megfelelő technikát. Például, ha az adott videojáték-motor nem kezeli jól a négymintás MSAA-t, akkor ez már kizárja a HairWorks használatát, mert nem lehet jó minőségben prezentálni az effektet.
Több fejlesztő egyébként inkább saját megoldásban gondolkodik a hajszimulálására vonatkozóan. A gondot az jelenti, hogy az új generációs konzolokra a TressFX nem tökéletes, mivel az erősebb PC-s VGA-k sebességéhez van igazítva a működése, míg a HairWorks a zárt forráskód miatt szimplán nem használható. Ebből kifolyólag legtöbben egy teljesen saját fejlesztésű koncepció mentén képzelik el a jövőt.