VKHR néven jött meg a Vulkan API-ra írt hajszimuláció

Az Erik S. V. Jansson által vezetett projektet gyakorlatilag a nulláról építették fel, a TressFX-nek csak a kutatásai anyagait használták.

Hat év telt el azóta, hogy a TressFX effekt bemutatkozott a 2013-as Tomb Raider című játékban, ami újraindította Lara Croft karrierjét. Az eljárást eredetileg a Crystal Dynamics, az AMD, a Confetti és a Nixxes dolgozta ki, és ez volt a világ első olyan technikája, ami a grafikus processzor erejét hasznosította a haj fizikai szimulációjához. Azóta elérhetővé vált a 2.0-s, a 3.0-s, a 4.0-s verzió is, illetve utóbbinak a göndör haj támogatásával kiegészített változata, amelyet a NetEase tervezett meg.

Az AMD ugyanakkor egy ideje már nem készített új verziót a projektből, igazából nincs olyan újdonság, amit hozzá lehetne adni, viszont ez nem jelenti azt, hogy nem dolgoztak a háttérben. A TressFX esetében ugyanis limitációt jelentett, hogy DirectX 11 és 12 API-ra készült el, és mivel maga az effekt rendkívül bonyolult, így még a nyílt forráskód mellett is igen időigényes lenne Vulkan API-ra portolni. Ehelyett Erik S. V. Jansson, Matthäus G. Chajdas, Jason Lacroix és Ingemar Ragnemalm nem is ehhez láttak hozzá, hanem a TressFX-szel kapcsolatos összes korábbi kutatást felhasználva írtak egy nulláról felépített rendszert, amelynek VKHR, azaz Vulkan Hair Rendering lett a neve.


[+]

Az alábbi tanulmányban részletezett projektet az AMD és a Linköpingi Egyetem támogatta. Mivel a VKHR alapvetően nem egy TressFX port, így viszonylag sok helyen különbözik az AMD megoldásától, de a hajszimulációs eljárásokra vonatkozó tipikus problémák ugyanazok, tehát az ezekre adott válasz is hasonló, csak éppen más formában. Az önárnyék és az átlátszóság kezelésére gyakorlatilag ugyanazt a megoldást használják, amit a TressFX kínál, bár utóbbi szempontból csak a PPLL adatstruktúrára épülő eljárást alkalmazza a VKHR, az AMD sokkal gyorsabb shortcut módszere kimaradt. Ezzel az a probléma, hogy az úgynevezett mutex-alapú zárolási sémát nem nagyon szeretik a grafikus API-k, mivel a shadereket próbálja várakoztatni, illetve elzárja az erőforrásokat, így azokba csak meghatározott esetben írhatnak a shaderek. Ezzel a módszerrel az történik, hogy a hardver rendkívül agresszív módszerekkel próbálja úgymond kierőszakolni az egyes elemek jó sorrendben történő leképzését, így kerülve meg a sok erőforrást felemésztő sorba rendezést, és relatíve kis erőforrás befektetésével megszerezni a kívánt adatot. Az ilyen formában történő optimalizálás azonban egyik grafikus API-ban sem ajánlott, mert nem garantálható minden architektúrára a stabilitása. Persze az AMD felvállalhatja, hogy a saját hardvereire ezt megoldja, de mivel a VKHR nem egy GPUOpen effekt, így a kockázatos eljárásokat inkább hanyagolják.

Az élsimítás szempontjából a VKHR már az Emil Persson által kifejlesztett GPAA-t használja. Ez különbözik attól, amit a TressFX csinál, de a végeredménye nagyon hasonló. A szimuláció tekintetében a VKHR a TressFX szimulációjával való kompatibilitást követi, ami azért hasznos, mert ráhúzható a leképező bármilyen hajszálapapú szimulációs eljárásra.

Az egyéb különbségek tekintetében megemlítendő még a beépített Intel Embree, amivel sugárkövetéssel ellenőrizhetők az egyes hajmodelleken a különböző effektek, illetve a VKHR már a Cem Yuksel által kidolgozott, nyílt .hair formátumot használja.

A nyílt forráskódú VKHR elérhető az alábbi GitHub oldalon keresztül, és bármilyen videojáték-motorba integrálható, bár ez esetlegesen sok munkával járhat. Az egyetlen fix követelmény a Vulkan 1.1-es API, illetve egy olyan grafikus vezérlő, amely rendelkezik a megfelelő Vulkan implementációval, amit manapság igazán nem nehéz teljesíteni.

  • Kapcsolódó cégek:
  • AMD

Azóta történt

Előzmények

Hirdetés